diff --git a/js/bv_nodepack.core.js b/js/bv_nodepack.core.js index a350ca2..2649541 100644 --- a/js/bv_nodepack.core.js +++ b/js/bv_nodepack.core.js @@ -1,4 +1,4 @@ -var cy=Object.defineProperty;var uy=(e,t,r)=>t in e?cy(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var D=(e,t,r)=>uy(e,typeof t!="symbol"?t+"":t,r);import{app as dy}from"../../scripts/app.js";import{api as fy}from"../../scripts/api.js";var fr=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function py(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var ag={exports:{}},Cs={},lg={exports:{}},xe={};/** +var sy=Object.defineProperty;var cy=(e,t,r)=>t in e?sy(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var D=(e,t,r)=>cy(e,typeof t!="symbol"?t+"":t,r);import{app as uy}from"../../scripts/app.js";import{api as dy}from"../../scripts/api.js";var fr=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function fy(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var ag={exports:{}},Cs={},lg={exports:{}},xe={};/** * @license React * react.production.min.js * @@ -6,7 +6,7 @@ var cy=Object.defineProperty;var uy=(e,t,r)=>t in e?cy(e,t,{enumerable:!0,config * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var Ca=Symbol.for("react.element"),hy=Symbol.for("react.portal"),gy=Symbol.for("react.fragment"),by=Symbol.for("react.strict_mode"),vy=Symbol.for("react.profiler"),my=Symbol.for("react.provider"),xy=Symbol.for("react.context"),yy=Symbol.for("react.forward_ref"),_y=Symbol.for("react.suspense"),wy=Symbol.for("react.memo"),ky=Symbol.for("react.lazy"),Gf=Symbol.iterator;function Ey(e){return e===null||typeof e!="object"?null:(e=Gf&&e[Gf]||e["@@iterator"],typeof e=="function"?e:null)}var sg={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},cg=Object.assign,ug={};function ci(e,t,r){this.props=e,this.context=t,this.refs=ug,this.updater=r||sg}ci.prototype.isReactComponent={};ci.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")};ci.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function dg(){}dg.prototype=ci.prototype;function vd(e,t,r){this.props=e,this.context=t,this.refs=ug,this.updater=r||sg}var md=vd.prototype=new dg;md.constructor=vd;cg(md,ci.prototype);md.isPureReactComponent=!0;var Kf=Array.isArray,fg=Object.prototype.hasOwnProperty,xd={current:null},pg={key:!0,ref:!0,__self:!0,__source:!0};function hg(e,t,r){var o,n={},i=null,a=null;if(t!=null)for(o in t.ref!==void 0&&(a=t.ref),t.key!==void 0&&(i=""+t.key),t)fg.call(t,o)&&!pg.hasOwnProperty(o)&&(n[o]=t[o]);var l=arguments.length-2;if(l===1)n.children=r;else if(1t in e?cy(e,t,{enumerable:!0,config * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var Cy=m,Ny=Symbol.for("react.element"),Oy=Symbol.for("react.fragment"),My=Object.prototype.hasOwnProperty,Ay=Cy.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,Dy={key:!0,ref:!0,__self:!0,__source:!0};function bg(e,t,r){var o,n={},i=null,a=null;r!==void 0&&(i=""+r),t.key!==void 0&&(i=""+t.key),t.ref!==void 0&&(a=t.ref);for(o in t)My.call(t,o)&&!Dy.hasOwnProperty(o)&&(n[o]=t[o]);if(e&&e.defaultProps)for(o in t=e.defaultProps,t)n[o]===void 0&&(n[o]=t[o]);return{$$typeof:Ny,type:e,key:i,ref:a,props:n,_owner:Ay.current}}Cs.Fragment=Oy;Cs.jsx=bg;Cs.jsxs=bg;ag.exports=Cs;var s=ag.exports,ea={},vg={exports:{}},er={},mg={exports:{}},xg={};/** + */var Ly=m,Cy=Symbol.for("react.element"),Ny=Symbol.for("react.fragment"),Oy=Object.prototype.hasOwnProperty,My=Ly.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,Ay={key:!0,ref:!0,__self:!0,__source:!0};function bg(e,t,r){var o,n={},i=null,a=null;r!==void 0&&(i=""+r),t.key!==void 0&&(i=""+t.key),t.ref!==void 0&&(a=t.ref);for(o in t)Oy.call(t,o)&&!Ay.hasOwnProperty(o)&&(n[o]=t[o]);if(e&&e.defaultProps)for(o in t=e.defaultProps,t)n[o]===void 0&&(n[o]=t[o]);return{$$typeof:Cy,type:e,key:i,ref:a,props:n,_owner:My.current}}Cs.Fragment=Ny;Cs.jsx=bg;Cs.jsxs=bg;ag.exports=Cs;var s=ag.exports,ea={},vg={exports:{}},er={},mg={exports:{}},xg={};/** * @license React * scheduler.production.min.js * @@ -22,7 +22,7 @@ var cy=Object.defineProperty;var uy=(e,t,r)=>t in e?cy(e,t,{enumerable:!0,config * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */(function(e){function t(A,W){var F=A.length;A.push(W);e:for(;0>>1,X=A[ie];if(0>>1;ien(Y,F))Qn(ne,Y)?(A[ie]=ne,A[Q]=F,ie=Q):(A[ie]=Y,A[Z]=F,ie=Z);else if(Qn(ne,F))A[ie]=ne,A[Q]=F,ie=Q;else break e}}return W}function n(A,W){var F=A.sortIndex-W.sortIndex;return F!==0?F:A.id-W.id}if(typeof performance=="object"&&typeof performance.now=="function"){var i=performance;e.unstable_now=function(){return i.now()}}else{var a=Date,l=a.now();e.unstable_now=function(){return a.now()-l}}var c=[],u=[],d=1,f=null,p=3,g=!1,x=!1,w=!1,k=typeof setTimeout=="function"?setTimeout:null,b=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 v(A){for(var W=r(u);W!==null;){if(W.callback===null)o(u);else if(W.startTime<=A)o(u),W.sortIndex=W.expirationTime,t(c,W);else break;W=r(u)}}function _(A){if(w=!1,v(A),!x)if(r(c)!==null)x=!0,R(y);else{var W=r(u);W!==null&&N(_,W.startTime-A)}}function y(A,W){x=!1,w&&(w=!1,b(P),P=-1),g=!0;var F=p;try{for(v(W),f=r(c);f!==null&&(!(f.expirationTime>W)||A&&!j());){var ie=f.callback;if(typeof ie=="function"){f.callback=null,p=f.priorityLevel;var X=ie(f.expirationTime<=W);W=e.unstable_now(),typeof X=="function"?f.callback=X:f===r(c)&&o(c),v(W)}else o(c);f=r(c)}if(f!==null)var q=!0;else{var Z=r(u);Z!==null&&N(_,Z.startTime-W),q=!1}return q}finally{f=null,p=F,g=!1}}var T=!1,S=null,P=-1,O=5,B=-1;function j(){return!(e.unstable_now()-BA||125ie?(A.sortIndex=F,t(u,A),r(c)===null&&A===r(u)&&(w?(b(P),P=-1):w=!0,N(_,F-ie))):(A.sortIndex=X,t(c,A),x||g||(x=!0,R(y))),A},e.unstable_shouldYield=j,e.unstable_wrapCallback=function(A){var W=p;return function(){var F=p;p=W;try{return A.apply(this,arguments)}finally{p=F}}}})(xg);mg.exports=xg;var Iy=mg.exports;/** + */(function(e){function t(A,W){var F=A.length;A.push(W);e:for(;0>>1,X=A[ie];if(0>>1;ien(Y,F))Qn(ne,Y)?(A[ie]=ne,A[Q]=F,ie=Q):(A[ie]=Y,A[Z]=F,ie=Z);else if(Qn(ne,F))A[ie]=ne,A[Q]=F,ie=Q;else break e}}return W}function n(A,W){var F=A.sortIndex-W.sortIndex;return F!==0?F:A.id-W.id}if(typeof performance=="object"&&typeof performance.now=="function"){var i=performance;e.unstable_now=function(){return i.now()}}else{var a=Date,l=a.now();e.unstable_now=function(){return a.now()-l}}var c=[],u=[],d=1,f=null,p=3,g=!1,x=!1,w=!1,k=typeof setTimeout=="function"?setTimeout:null,b=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 v(A){for(var W=r(u);W!==null;){if(W.callback===null)o(u);else if(W.startTime<=A)o(u),W.sortIndex=W.expirationTime,t(c,W);else break;W=r(u)}}function _(A){if(w=!1,v(A),!x)if(r(c)!==null)x=!0,R(y);else{var W=r(u);W!==null&&N(_,W.startTime-A)}}function y(A,W){x=!1,w&&(w=!1,b(P),P=-1),g=!0;var F=p;try{for(v(W),f=r(c);f!==null&&(!(f.expirationTime>W)||A&&!j());){var ie=f.callback;if(typeof ie=="function"){f.callback=null,p=f.priorityLevel;var X=ie(f.expirationTime<=W);W=e.unstable_now(),typeof X=="function"?f.callback=X:f===r(c)&&o(c),v(W)}else o(c);f=r(c)}if(f!==null)var q=!0;else{var Z=r(u);Z!==null&&N(_,Z.startTime-W),q=!1}return q}finally{f=null,p=F,g=!1}}var T=!1,S=null,P=-1,O=5,B=-1;function j(){return!(e.unstable_now()-BA||125ie?(A.sortIndex=F,t(u,A),r(c)===null&&A===r(u)&&(w?(b(P),P=-1):w=!0,N(_,F-ie))):(A.sortIndex=X,t(c,A),x||g||(x=!0,R(y))),A},e.unstable_shouldYield=j,e.unstable_wrapCallback=function(A){var W=p;return function(){var F=p;p=W;try{return A.apply(this,arguments)}finally{p=F}}}})(xg);mg.exports=xg;var Dy=mg.exports;/** * @license React * react-dom.production.min.js * @@ -30,14 +30,14 @@ var cy=Object.defineProperty;var uy=(e,t,r)=>t in e?cy(e,t,{enumerable:!0,config * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var jy=m,Qt=Iy;function K(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"),tu=Object.prototype.hasOwnProperty,By=/^[: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]*$/,Jf={},Zf={};function Py(e){return tu.call(Zf,e)?!0:tu.call(Jf,e)?!1:By.test(e)?Zf[e]=!0:(Jf[e]=!0,!1)}function zy(e,t,r,o){if(r!==null&&r.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return o?!1:r!==null?!r.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function Fy(e,t,r,o){if(t===null||typeof t>"u"||zy(e,t,r,o))return!0;if(o)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 It(e,t,r,o,n,i,a){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=o,this.attributeNamespace=n,this.mustUseProperty=r,this.propertyName=e,this.type=t,this.sanitizeURL=i,this.removeEmptyString=a}var xt={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){xt[e]=new It(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];xt[t]=new It(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){xt[e]=new It(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){xt[e]=new It(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){xt[e]=new It(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){xt[e]=new It(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){xt[e]=new It(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){xt[e]=new It(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){xt[e]=new It(e,5,!1,e.toLowerCase(),null,!1,!1)});var _d=/[\-:]([a-z])/g;function wd(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(_d,wd);xt[t]=new It(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(_d,wd);xt[t]=new It(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(_d,wd);xt[t]=new It(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){xt[e]=new It(e,1,!1,e.toLowerCase(),null,!1,!1)});xt.xlinkHref=new It("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){xt[e]=new It(e,1,!1,e.toLowerCase(),null,!0,!0)});function kd(e,t,r,o){var n=xt.hasOwnProperty(t)?xt[t]:null;(n!==null?n.type!==0:o||!(2"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),tu=Object.prototype.hasOwnProperty,jy=/^[: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]*$/,Jf={},Zf={};function By(e){return tu.call(Zf,e)?!0:tu.call(Jf,e)?!1:jy.test(e)?Zf[e]=!0:(Jf[e]=!0,!1)}function Py(e,t,r,o){if(r!==null&&r.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return o?!1:r!==null?!r.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function zy(e,t,r,o){if(t===null||typeof t>"u"||Py(e,t,r,o))return!0;if(o)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 It(e,t,r,o,n,i,a){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=o,this.attributeNamespace=n,this.mustUseProperty=r,this.propertyName=e,this.type=t,this.sanitizeURL=i,this.removeEmptyString=a}var xt={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){xt[e]=new It(e,0,!1,e,null,!1,!1)});[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];xt[t]=new It(t,1,!1,e[1],null,!1,!1)});["contentEditable","draggable","spellCheck","value"].forEach(function(e){xt[e]=new It(e,2,!1,e.toLowerCase(),null,!1,!1)});["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){xt[e]=new It(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){xt[e]=new It(e,3,!1,e.toLowerCase(),null,!1,!1)});["checked","multiple","muted","selected"].forEach(function(e){xt[e]=new It(e,3,!0,e,null,!1,!1)});["capture","download"].forEach(function(e){xt[e]=new It(e,4,!1,e,null,!1,!1)});["cols","rows","size","span"].forEach(function(e){xt[e]=new It(e,6,!1,e,null,!1,!1)});["rowSpan","start"].forEach(function(e){xt[e]=new It(e,5,!1,e.toLowerCase(),null,!1,!1)});var _d=/[\-:]([a-z])/g;function wd(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(_d,wd);xt[t]=new It(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(_d,wd);xt[t]=new It(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(_d,wd);xt[t]=new It(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)});["tabIndex","crossOrigin"].forEach(function(e){xt[e]=new It(e,1,!1,e.toLowerCase(),null,!1,!1)});xt.xlinkHref=new It("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1);["src","href","action","formAction"].forEach(function(e){xt[e]=new It(e,1,!1,e.toLowerCase(),null,!0,!0)});function kd(e,t,r,o){var n=xt.hasOwnProperty(t)?xt[t]:null;(n!==null?n.type!==0:o||!(2l||n[a]!==i[l]){var c=` -`+n[a].replace(" at new "," at ");return e.displayName&&c.includes("")&&(c=c.replace("",e.displayName)),c}while(1<=a&&0<=l);break}}}finally{pc=!1,Error.prepareStackTrace=r}return(e=e?e.displayName||e.name:"")?Mi(e):""}function Uy(e){switch(e.tag){case 5:return Mi(e.type);case 16:return Mi("Lazy");case 13:return Mi("Suspense");case 19:return Mi("SuspenseList");case 0:case 2:case 15:return e=hc(e.type,!1),e;case 11:return e=hc(e.type.render,!1),e;case 1:return e=hc(e.type,!0),e;default:return""}}function iu(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 Ln:return"Fragment";case Sn:return"Portal";case ru:return"Profiler";case Ed:return"StrictMode";case ou:return"Suspense";case nu:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case wg:return(e.displayName||"Context")+".Consumer";case _g:return(e._context.displayName||"Context")+".Provider";case Td:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Rd:return t=e.displayName||null,t!==null?t:iu(e.type)||"Memo";case uo:t=e._payload,e=e._init;try{return iu(e(t))}catch{}}return null}function Vy(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 iu(t);case 8:return t===Ed?"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 Oo(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Eg(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function Wy(e){var t=Eg(e)?"checked":"value",r=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),o=""+e[t];if(!e.hasOwnProperty(t)&&typeof r<"u"&&typeof r.get=="function"&&typeof r.set=="function"){var n=r.get,i=r.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return n.call(this)},set:function(a){o=""+a,i.call(this,a)}}),Object.defineProperty(e,t,{enumerable:r.enumerable}),{getValue:function(){return o},setValue:function(a){o=""+a},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function $a(e){e._valueTracker||(e._valueTracker=Wy(e))}function Tg(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var r=t.getValue(),o="";return e&&(o=Eg(e)?e.checked?"true":"false":e.value),e=o,e!==r?(t.setValue(e),!0):!1}function Il(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 au(e,t){var r=t.checked;return Xe({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:r??e._wrapperState.initialChecked})}function ep(e,t){var r=t.defaultValue==null?"":t.defaultValue,o=t.checked!=null?t.checked:t.defaultChecked;r=Oo(t.value!=null?t.value:r),e._wrapperState={initialChecked:o,initialValue:r,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function Rg(e,t){t=t.checked,t!=null&&kd(e,"checked",t,!1)}function lu(e,t){Rg(e,t);var r=Oo(t.value),o=t.type;if(r!=null)o==="number"?(r===0&&e.value===""||e.value!=r)&&(e.value=""+r):e.value!==""+r&&(e.value=""+r);else if(o==="submit"||o==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?su(e,t.type,r):t.hasOwnProperty("defaultValue")&&su(e,t.type,Oo(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function tp(e,t,r){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var o=t.type;if(!(o!=="submit"&&o!=="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 su(e,t,r){(t!=="number"||Il(e.ownerDocument)!==e)&&(r==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+r&&(e.defaultValue=""+r))}var Ai=Array.isArray;function zn(e,t,r,o){if(e=e.options,t){t={};for(var n=0;n"+t.valueOf().toString()+"",t=Ya.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function ra(e,t){if(t){var r=e.firstChild;if(r&&r===e.lastChild&&r.nodeType===3){r.nodeValue=t;return}}e.textContent=t}var zi={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},Hy=["Webkit","ms","Moz","O"];Object.keys(zi).forEach(function(e){Hy.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),zi[t]=zi[e]})});function Ng(e,t,r){return t==null||typeof t=="boolean"||t===""?"":r||typeof t!="number"||t===0||zi.hasOwnProperty(e)&&zi[e]?(""+t).trim():t+"px"}function Og(e,t){e=e.style;for(var r in t)if(t.hasOwnProperty(r)){var o=r.indexOf("--")===0,n=Ng(r,t[r],o);r==="float"&&(r="cssFloat"),o?e.setProperty(r,n):e[r]=n}}var $y=Xe({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 du(e,t){if(t){if($y[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(K(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(K(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(K(61))}if(t.style!=null&&typeof t.style!="object")throw Error(K(62))}}function fu(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 pu=null;function Sd(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var hu=null,Fn=null,Un=null;function np(e){if(e=Ma(e)){if(typeof hu!="function")throw Error(K(280));var t=e.stateNode;t&&(t=Ds(t),hu(e.stateNode,e.type,t))}}function Mg(e){Fn?Un?Un.push(e):Un=[e]:Fn=e}function Ag(){if(Fn){var e=Fn,t=Un;if(Un=Fn=null,np(e),t)for(e=0;e>>=0,e===0?32:31-(r_(e)/o_|0)|0}var Xa=64,Ga=4194304;function Di(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 zl(e,t){var r=e.pendingLanes;if(r===0)return 0;var o=0,n=e.suspendedLanes,i=e.pingedLanes,a=r&268435455;if(a!==0){var l=a&~n;l!==0?o=Di(l):(i&=a,i!==0&&(o=Di(i)))}else a=r&~n,a!==0?o=Di(a):i!==0&&(o=Di(i));if(o===0)return 0;if(t!==0&&t!==o&&!(t&n)&&(n=o&-o,i=t&-t,n>=i||n===16&&(i&4194240)!==0))return t;if(o&4&&(o|=r&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=o;0r;r++)t.push(e);return t}function Na(e,t,r){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-kr(t),e[t]=r}function l_(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 o=e.eventTimes;for(e=e.expirationTimes;0=Ui),pp=" ",hp=!1;function Qg(e,t){switch(e){case"keyup":return I_.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function eb(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Cn=!1;function B_(e,t){switch(e){case"compositionend":return eb(t);case"keypress":return t.which!==32?null:(hp=!0,pp);case"textInput":return e=t.data,e===pp&&hp?null:e;default:return null}}function P_(e,t){if(Cn)return e==="compositionend"||!Id&&Qg(e,t)?(e=Jg(),vl=Md=vo=null,Cn=!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=o}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=mp(r)}}function nb(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?nb(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function ib(){for(var e=window,t=Il();t instanceof e.HTMLIFrameElement;){try{var r=typeof t.contentWindow.location.href=="string"}catch{r=!1}if(r)e=t.contentWindow;else break;t=Il(e.document)}return t}function jd(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=ib(),r=e.focusedElem,o=e.selectionRange;if(t!==r&&r&&r.ownerDocument&&nb(r.ownerDocument.documentElement,r)){if(o!==null&&jd(r)){if(t=o.start,e=o.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 n=r.textContent.length,i=Math.min(o.start,n);o=o.end===void 0?i:Math.min(o.end,n),!e.extend&&i>o&&(n=o,o=i,i=n),n=xp(r,i);var a=xp(r,o);n&&a&&(e.rangeCount!==1||e.anchorNode!==n.node||e.anchorOffset!==n.offset||e.focusNode!==a.node||e.focusOffset!==a.offset)&&(t=t.createRange(),t.setStart(n.node,n.offset),e.removeAllRanges(),i>o?(e.addRange(t),e.extend(a.node,a.offset)):(t.setEnd(a.node,a.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,Nn=null,yu=null,Wi=null,_u=!1;function yp(e,t,r){var o=r.window===r?r.document:r.nodeType===9?r:r.ownerDocument;_u||Nn==null||Nn!==Il(o)||(o=Nn,"selectionStart"in o&&jd(o)?o={start:o.selectionStart,end:o.selectionEnd}:(o=(o.ownerDocument&&o.ownerDocument.defaultView||window).getSelection(),o={anchorNode:o.anchorNode,anchorOffset:o.anchorOffset,focusNode:o.focusNode,focusOffset:o.focusOffset}),Wi&&sa(Wi,o)||(Wi=o,o=Vl(yu,"onSelect"),0An||(e.current=Su[An],Su[An]=null,An--)}function Be(e,t){An++,Su[An]=e.current,e.current=t}var Mo={},Nt=Do(Mo),Ut=Do(!1),rn=Mo;function qn(e,t){var r=e.type.contextTypes;if(!r)return Mo;var o=e.stateNode;if(o&&o.__reactInternalMemoizedUnmaskedChildContext===t)return o.__reactInternalMemoizedMaskedChildContext;var n={},i;for(i in r)n[i]=t[i];return o&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=n),n}function Vt(e){return e=e.childContextTypes,e!=null}function Hl(){ze(Ut),ze(Nt)}function Sp(e,t,r){if(Nt.current!==Mo)throw Error(K(168));Be(Nt,t),Be(Ut,r)}function hb(e,t,r){var o=e.stateNode;if(t=t.childContextTypes,typeof o.getChildContext!="function")return r;o=o.getChildContext();for(var n in o)if(!(n in t))throw Error(K(108,Vy(e)||"Unknown",n));return Xe({},r,o)}function $l(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Mo,rn=Nt.current,Be(Nt,e),Be(Ut,Ut.current),!0}function Lp(e,t,r){var o=e.stateNode;if(!o)throw Error(K(169));r?(e=hb(e,t,rn),o.__reactInternalMemoizedMergedChildContext=e,ze(Ut),ze(Nt),Be(Nt,e)):ze(Ut),Be(Ut,r)}var Yr=null,Is=!1,Lc=!1;function gb(e){Yr===null?Yr=[e]:Yr.push(e)}function iw(e){Is=!0,gb(e)}function Io(){if(!Lc&&Yr!==null){Lc=!0;var e=0,t=Me;try{var r=Yr;for(Me=1;e>=a,n-=a,Kr=1<<32-kr(t)+n|r<P?(O=S,S=null):O=S.sibling;var B=p(b,S,v[P],_);if(B===null){S===null&&(S=O);break}e&&S&&B.alternate===null&&t(b,S),h=i(B,h,P),T===null?y=B:T.sibling=B,T=B,S=O}if(P===v.length)return r(b,S),Ve&&Vo(b,P),y;if(S===null){for(;PP?(O=S,S=null):O=S.sibling;var j=p(b,S,B.value,_);if(j===null){S===null&&(S=O);break}e&&S&&j.alternate===null&&t(b,S),h=i(j,h,P),T===null?y=j:T.sibling=j,T=j,S=O}if(B.done)return r(b,S),Ve&&Vo(b,P),y;if(S===null){for(;!B.done;P++,B=v.next())B=f(b,B.value,_),B!==null&&(h=i(B,h,P),T===null?y=B:T.sibling=B,T=B);return Ve&&Vo(b,P),y}for(S=o(b,S);!B.done;P++,B=v.next())B=g(S,b,P,B.value,_),B!==null&&(e&&B.alternate!==null&&S.delete(B.key===null?P:B.key),h=i(B,h,P),T===null?y=B:T.sibling=B,T=B);return e&&S.forEach(function(M){return t(b,M)}),Ve&&Vo(b,P),y}function k(b,h,v,_){if(typeof v=="object"&&v!==null&&v.type===Ln&&v.key===null&&(v=v.props.children),typeof v=="object"&&v!==null){switch(v.$$typeof){case Ha:e:{for(var y=v.key,T=h;T!==null;){if(T.key===y){if(y=v.type,y===Ln){if(T.tag===7){r(b,T.sibling),h=n(T,v.props.children),h.return=b,b=h;break e}}else if(T.elementType===y||typeof y=="object"&&y!==null&&y.$$typeof===uo&&Op(y)===T.type){r(b,T.sibling),h=n(T,v.props),h.ref=Ei(b,T,v),h.return=b,b=h;break e}r(b,T);break}else t(b,T);T=T.sibling}v.type===Ln?(h=Jo(v.props.children,b.mode,_,v.key),h.return=b,b=h):(_=Tl(v.type,v.key,v.props,null,b.mode,_),_.ref=Ei(b,h,v),_.return=b,b=_)}return a(b);case Sn:e:{for(T=v.key;h!==null;){if(h.key===T)if(h.tag===4&&h.stateNode.containerInfo===v.containerInfo&&h.stateNode.implementation===v.implementation){r(b,h.sibling),h=n(h,v.children||[]),h.return=b,b=h;break e}else{r(b,h);break}else t(b,h);h=h.sibling}h=jc(v,b.mode,_),h.return=b,b=h}return a(b);case uo:return T=v._init,k(b,h,T(v._payload),_)}if(Ai(v))return x(b,h,v,_);if(xi(v))return w(b,h,v,_);tl(b,v)}return typeof v=="string"&&v!==""||typeof v=="number"?(v=""+v,h!==null&&h.tag===6?(r(b,h.sibling),h=n(h,v),h.return=b,b=h):(r(b,h),h=Ic(v,b.mode,_),h.return=b,b=h),a(b)):r(b,h)}return k}var Zn=xb(!0),yb=xb(!1),Gl=Do(null),Kl=null,jn=null,Fd=null;function Ud(){Fd=jn=Kl=null}function Vd(e){var t=Gl.current;ze(Gl),e._currentValue=t}function Nu(e,t,r){for(;e!==null;){var o=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,o!==null&&(o.childLanes|=t)):o!==null&&(o.childLanes&t)!==t&&(o.childLanes|=t),e===r)break;e=e.return}}function Wn(e,t){Kl=e,Fd=jn=null,e=e.dependencies,e!==null&&e.firstContext!==null&&(e.lanes&t&&(Ft=!0),e.firstContext=null)}function pr(e){var t=e._currentValue;if(Fd!==e)if(e={context:e,memoizedValue:t,next:null},jn===null){if(Kl===null)throw Error(K(308));jn=e,Kl.dependencies={lanes:0,firstContext:e}}else jn=jn.next=e;return t}var Yo=null;function Wd(e){Yo===null?Yo=[e]:Yo.push(e)}function _b(e,t,r,o){var n=t.interleaved;return n===null?(r.next=r,Wd(t)):(r.next=n.next,n.next=r),t.interleaved=r,no(e,o)}function no(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 fo=!1;function Hd(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function wb(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 Qr(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function Ro(e,t,r){var o=e.updateQueue;if(o===null)return null;if(o=o.shared,ke&2){var n=o.pending;return n===null?t.next=t:(t.next=n.next,n.next=t),o.pending=t,no(e,r)}return n=o.interleaved,n===null?(t.next=t,Wd(o)):(t.next=n.next,n.next=t),o.interleaved=t,no(e,r)}function xl(e,t,r){if(t=t.updateQueue,t!==null&&(t=t.shared,(r&4194240)!==0)){var o=t.lanes;o&=e.pendingLanes,r|=o,t.lanes=r,Cd(e,r)}}function Mp(e,t){var r=e.updateQueue,o=e.alternate;if(o!==null&&(o=o.updateQueue,r===o)){var n=null,i=null;if(r=r.firstBaseUpdate,r!==null){do{var a={eventTime:r.eventTime,lane:r.lane,tag:r.tag,payload:r.payload,callback:r.callback,next:null};i===null?n=i=a:i=i.next=a,r=r.next}while(r!==null);i===null?n=i=t:i=i.next=t}else n=i=t;r={baseState:o.baseState,firstBaseUpdate:n,lastBaseUpdate:i,shared:o.shared,effects:o.effects},e.updateQueue=r;return}e=r.lastBaseUpdate,e===null?r.firstBaseUpdate=t:e.next=t,r.lastBaseUpdate=t}function ql(e,t,r,o){var n=e.updateQueue;fo=!1;var i=n.firstBaseUpdate,a=n.lastBaseUpdate,l=n.shared.pending;if(l!==null){n.shared.pending=null;var c=l,u=c.next;c.next=null,a===null?i=u:a.next=u,a=c;var d=e.alternate;d!==null&&(d=d.updateQueue,l=d.lastBaseUpdate,l!==a&&(l===null?d.firstBaseUpdate=u:l.next=u,d.lastBaseUpdate=c))}if(i!==null){var f=n.baseState;a=0,d=u=c=null,l=i;do{var p=l.lane,g=l.eventTime;if((o&p)===p){d!==null&&(d=d.next={eventTime:g,lane:0,tag:l.tag,payload:l.payload,callback:l.callback,next:null});e:{var x=e,w=l;switch(p=t,g=r,w.tag){case 1:if(x=w.payload,typeof x=="function"){f=x.call(g,f,p);break e}f=x;break e;case 3:x.flags=x.flags&-65537|128;case 0:if(x=w.payload,p=typeof x=="function"?x.call(g,f,p):x,p==null)break e;f=Xe({},f,p);break e;case 2:fo=!0}}l.callback!==null&&l.lane!==0&&(e.flags|=64,p=n.effects,p===null?n.effects=[l]:p.push(l))}else g={eventTime:g,lane:p,tag:l.tag,payload:l.payload,callback:l.callback,next:null},d===null?(u=d=g,c=f):d=d.next=g,a|=p;if(l=l.next,l===null){if(l=n.shared.pending,l===null)break;p=l,l=p.next,p.next=null,n.lastBaseUpdate=p,n.shared.pending=null}}while(!0);if(d===null&&(c=f),n.baseState=c,n.firstBaseUpdate=u,n.lastBaseUpdate=d,t=n.shared.interleaved,t!==null){n=t;do a|=n.lane,n=n.next;while(n!==t)}else i===null&&(n.shared.lanes=0);an|=a,e.lanes=a,e.memoizedState=f}}function Ap(e,t,r){if(e=t.effects,t.effects=null,e!==null)for(t=0;tr?r:4,e(!0);var o=Nc.transition;Nc.transition={};try{e(!1),t()}finally{Me=r,Nc.transition=o}}function zb(){return hr().memoizedState}function cw(e,t,r){var o=Lo(e);if(r={lane:o,action:r,hasEagerState:!1,eagerState:null,next:null},Fb(e))Ub(t,r);else if(r=_b(e,t,r,o),r!==null){var n=At();Er(r,e,o,n),Vb(r,t,o)}}function uw(e,t,r){var o=Lo(e),n={lane:o,action:r,hasEagerState:!1,eagerState:null,next:null};if(Fb(e))Ub(t,n);else{var i=e.alternate;if(e.lanes===0&&(i===null||i.lanes===0)&&(i=t.lastRenderedReducer,i!==null))try{var a=t.lastRenderedState,l=i(a,r);if(n.hasEagerState=!0,n.eagerState=l,Tr(l,a)){var c=t.interleaved;c===null?(n.next=n,Wd(t)):(n.next=c.next,c.next=n),t.interleaved=n;return}}catch{}finally{}r=_b(e,t,n,o),r!==null&&(n=At(),Er(r,e,o,n),Vb(r,t,o))}}function Fb(e){var t=e.alternate;return e===Ye||t!==null&&t===Ye}function Ub(e,t){Hi=Zl=!0;var r=e.pending;r===null?t.next=t:(t.next=r.next,r.next=t),e.pending=t}function Vb(e,t,r){if(r&4194240){var o=t.lanes;o&=e.pendingLanes,r|=o,t.lanes=r,Cd(e,r)}}var Ql={readContext:pr,useCallback:_t,useContext:_t,useEffect:_t,useImperativeHandle:_t,useInsertionEffect:_t,useLayoutEffect:_t,useMemo:_t,useReducer:_t,useRef:_t,useState:_t,useDebugValue:_t,useDeferredValue:_t,useTransition:_t,useMutableSource:_t,useSyncExternalStore:_t,useId:_t,unstable_isNewReconciler:!1},dw={readContext:pr,useCallback:function(e,t){return Mr().memoizedState=[e,t===void 0?null:t],e},useContext:pr,useEffect:Ip,useImperativeHandle:function(e,t,r){return r=r!=null?r.concat([e]):null,_l(4194308,4,Db.bind(null,t,e),r)},useLayoutEffect:function(e,t){return _l(4194308,4,e,t)},useInsertionEffect:function(e,t){return _l(4,2,e,t)},useMemo:function(e,t){var r=Mr();return t=t===void 0?null:t,e=e(),r.memoizedState=[e,t],e},useReducer:function(e,t,r){var o=Mr();return t=r!==void 0?r(t):t,o.memoizedState=o.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},o.queue=e,e=e.dispatch=cw.bind(null,Ye,e),[o.memoizedState,e]},useRef:function(e){var t=Mr();return e={current:e},t.memoizedState=e},useState:Dp,useDebugValue:Zd,useDeferredValue:function(e){return Mr().memoizedState=e},useTransition:function(){var e=Dp(!1),t=e[0];return e=sw.bind(null,e[1]),Mr().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,r){var o=Ye,n=Mr();if(Ve){if(r===void 0)throw Error(K(407));r=r()}else{if(r=t(),ht===null)throw Error(K(349));nn&30||Rb(o,t,r)}n.memoizedState=r;var i={value:r,getSnapshot:t};return n.queue=i,Ip(Lb.bind(null,o,i,e),[e]),o.flags|=2048,ba(9,Sb.bind(null,o,i,r,t),void 0,null),r},useId:function(){var e=Mr(),t=ht.identifierPrefix;if(Ve){var r=qr,o=Kr;r=(o&~(1<<32-kr(o)-1)).toString(32)+r,t=":"+t+"R"+r,r=ha++,0")&&(c=c.replace("",e.displayName)),c}while(1<=a&&0<=l);break}}}finally{pc=!1,Error.prepareStackTrace=r}return(e=e?e.displayName||e.name:"")?Mi(e):""}function Fy(e){switch(e.tag){case 5:return Mi(e.type);case 16:return Mi("Lazy");case 13:return Mi("Suspense");case 19:return Mi("SuspenseList");case 0:case 2:case 15:return e=hc(e.type,!1),e;case 11:return e=hc(e.type.render,!1),e;case 1:return e=hc(e.type,!0),e;default:return""}}function iu(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 Ln:return"Fragment";case Sn:return"Portal";case ru:return"Profiler";case Ed:return"StrictMode";case ou:return"Suspense";case nu:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case wg:return(e.displayName||"Context")+".Consumer";case _g:return(e._context.displayName||"Context")+".Provider";case Td:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Rd:return t=e.displayName||null,t!==null?t:iu(e.type)||"Memo";case uo:t=e._payload,e=e._init;try{return iu(e(t))}catch{}}return null}function Uy(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 iu(t);case 8:return t===Ed?"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 Oo(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Eg(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function Vy(e){var t=Eg(e)?"checked":"value",r=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),o=""+e[t];if(!e.hasOwnProperty(t)&&typeof r<"u"&&typeof r.get=="function"&&typeof r.set=="function"){var n=r.get,i=r.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return n.call(this)},set:function(a){o=""+a,i.call(this,a)}}),Object.defineProperty(e,t,{enumerable:r.enumerable}),{getValue:function(){return o},setValue:function(a){o=""+a},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function $a(e){e._valueTracker||(e._valueTracker=Vy(e))}function Tg(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var r=t.getValue(),o="";return e&&(o=Eg(e)?e.checked?"true":"false":e.value),e=o,e!==r?(t.setValue(e),!0):!1}function Il(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 au(e,t){var r=t.checked;return Xe({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:r??e._wrapperState.initialChecked})}function ep(e,t){var r=t.defaultValue==null?"":t.defaultValue,o=t.checked!=null?t.checked:t.defaultChecked;r=Oo(t.value!=null?t.value:r),e._wrapperState={initialChecked:o,initialValue:r,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function Rg(e,t){t=t.checked,t!=null&&kd(e,"checked",t,!1)}function lu(e,t){Rg(e,t);var r=Oo(t.value),o=t.type;if(r!=null)o==="number"?(r===0&&e.value===""||e.value!=r)&&(e.value=""+r):e.value!==""+r&&(e.value=""+r);else if(o==="submit"||o==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?su(e,t.type,r):t.hasOwnProperty("defaultValue")&&su(e,t.type,Oo(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function tp(e,t,r){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var o=t.type;if(!(o!=="submit"&&o!=="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 su(e,t,r){(t!=="number"||Il(e.ownerDocument)!==e)&&(r==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+r&&(e.defaultValue=""+r))}var Ai=Array.isArray;function zn(e,t,r,o){if(e=e.options,t){t={};for(var n=0;n"+t.valueOf().toString()+"",t=Ya.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function ra(e,t){if(t){var r=e.firstChild;if(r&&r===e.lastChild&&r.nodeType===3){r.nodeValue=t;return}}e.textContent=t}var zi={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},Wy=["Webkit","ms","Moz","O"];Object.keys(zi).forEach(function(e){Wy.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),zi[t]=zi[e]})});function Ng(e,t,r){return t==null||typeof t=="boolean"||t===""?"":r||typeof t!="number"||t===0||zi.hasOwnProperty(e)&&zi[e]?(""+t).trim():t+"px"}function Og(e,t){e=e.style;for(var r in t)if(t.hasOwnProperty(r)){var o=r.indexOf("--")===0,n=Ng(r,t[r],o);r==="float"&&(r="cssFloat"),o?e.setProperty(r,n):e[r]=n}}var Hy=Xe({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 du(e,t){if(t){if(Hy[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(K(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(K(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(K(61))}if(t.style!=null&&typeof t.style!="object")throw Error(K(62))}}function fu(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 pu=null;function Sd(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var hu=null,Fn=null,Un=null;function np(e){if(e=Ma(e)){if(typeof hu!="function")throw Error(K(280));var t=e.stateNode;t&&(t=Ds(t),hu(e.stateNode,e.type,t))}}function Mg(e){Fn?Un?Un.push(e):Un=[e]:Fn=e}function Ag(){if(Fn){var e=Fn,t=Un;if(Un=Fn=null,np(e),t)for(e=0;e>>=0,e===0?32:31-(t_(e)/r_|0)|0}var Xa=64,Ga=4194304;function Di(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 zl(e,t){var r=e.pendingLanes;if(r===0)return 0;var o=0,n=e.suspendedLanes,i=e.pingedLanes,a=r&268435455;if(a!==0){var l=a&~n;l!==0?o=Di(l):(i&=a,i!==0&&(o=Di(i)))}else a=r&~n,a!==0?o=Di(a):i!==0&&(o=Di(i));if(o===0)return 0;if(t!==0&&t!==o&&!(t&n)&&(n=o&-o,i=t&-t,n>=i||n===16&&(i&4194240)!==0))return t;if(o&4&&(o|=r&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=o;0r;r++)t.push(e);return t}function Na(e,t,r){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-kr(t),e[t]=r}function a_(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 o=e.eventTimes;for(e=e.expirationTimes;0=Ui),pp=" ",hp=!1;function Qg(e,t){switch(e){case"keyup":return D_.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function eb(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Cn=!1;function j_(e,t){switch(e){case"compositionend":return eb(t);case"keypress":return t.which!==32?null:(hp=!0,pp);case"textInput":return e=t.data,e===pp&&hp?null:e;default:return null}}function B_(e,t){if(Cn)return e==="compositionend"||!Id&&Qg(e,t)?(e=Jg(),vl=Md=vo=null,Cn=!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=o}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=mp(r)}}function nb(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?nb(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function ib(){for(var e=window,t=Il();t instanceof e.HTMLIFrameElement;){try{var r=typeof t.contentWindow.location.href=="string"}catch{r=!1}if(r)e=t.contentWindow;else break;t=Il(e.document)}return t}function jd(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 Y_(e){var t=ib(),r=e.focusedElem,o=e.selectionRange;if(t!==r&&r&&r.ownerDocument&&nb(r.ownerDocument.documentElement,r)){if(o!==null&&jd(r)){if(t=o.start,e=o.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 n=r.textContent.length,i=Math.min(o.start,n);o=o.end===void 0?i:Math.min(o.end,n),!e.extend&&i>o&&(n=o,o=i,i=n),n=xp(r,i);var a=xp(r,o);n&&a&&(e.rangeCount!==1||e.anchorNode!==n.node||e.anchorOffset!==n.offset||e.focusNode!==a.node||e.focusOffset!==a.offset)&&(t=t.createRange(),t.setStart(n.node,n.offset),e.removeAllRanges(),i>o?(e.addRange(t),e.extend(a.node,a.offset)):(t.setEnd(a.node,a.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,Nn=null,yu=null,Wi=null,_u=!1;function yp(e,t,r){var o=r.window===r?r.document:r.nodeType===9?r:r.ownerDocument;_u||Nn==null||Nn!==Il(o)||(o=Nn,"selectionStart"in o&&jd(o)?o={start:o.selectionStart,end:o.selectionEnd}:(o=(o.ownerDocument&&o.ownerDocument.defaultView||window).getSelection(),o={anchorNode:o.anchorNode,anchorOffset:o.anchorOffset,focusNode:o.focusNode,focusOffset:o.focusOffset}),Wi&&sa(Wi,o)||(Wi=o,o=Vl(yu,"onSelect"),0An||(e.current=Su[An],Su[An]=null,An--)}function Be(e,t){An++,Su[An]=e.current,e.current=t}var Mo={},Nt=Do(Mo),Ut=Do(!1),rn=Mo;function qn(e,t){var r=e.type.contextTypes;if(!r)return Mo;var o=e.stateNode;if(o&&o.__reactInternalMemoizedUnmaskedChildContext===t)return o.__reactInternalMemoizedMaskedChildContext;var n={},i;for(i in r)n[i]=t[i];return o&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=n),n}function Vt(e){return e=e.childContextTypes,e!=null}function Hl(){ze(Ut),ze(Nt)}function Sp(e,t,r){if(Nt.current!==Mo)throw Error(K(168));Be(Nt,t),Be(Ut,r)}function hb(e,t,r){var o=e.stateNode;if(t=t.childContextTypes,typeof o.getChildContext!="function")return r;o=o.getChildContext();for(var n in o)if(!(n in t))throw Error(K(108,Uy(e)||"Unknown",n));return Xe({},r,o)}function $l(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Mo,rn=Nt.current,Be(Nt,e),Be(Ut,Ut.current),!0}function Lp(e,t,r){var o=e.stateNode;if(!o)throw Error(K(169));r?(e=hb(e,t,rn),o.__reactInternalMemoizedMergedChildContext=e,ze(Ut),ze(Nt),Be(Nt,e)):ze(Ut),Be(Ut,r)}var Yr=null,Is=!1,Lc=!1;function gb(e){Yr===null?Yr=[e]:Yr.push(e)}function nw(e){Is=!0,gb(e)}function Io(){if(!Lc&&Yr!==null){Lc=!0;var e=0,t=Me;try{var r=Yr;for(Me=1;e>=a,n-=a,Kr=1<<32-kr(t)+n|r<P?(O=S,S=null):O=S.sibling;var B=p(b,S,v[P],_);if(B===null){S===null&&(S=O);break}e&&S&&B.alternate===null&&t(b,S),h=i(B,h,P),T===null?y=B:T.sibling=B,T=B,S=O}if(P===v.length)return r(b,S),Ve&&Vo(b,P),y;if(S===null){for(;PP?(O=S,S=null):O=S.sibling;var j=p(b,S,B.value,_);if(j===null){S===null&&(S=O);break}e&&S&&j.alternate===null&&t(b,S),h=i(j,h,P),T===null?y=j:T.sibling=j,T=j,S=O}if(B.done)return r(b,S),Ve&&Vo(b,P),y;if(S===null){for(;!B.done;P++,B=v.next())B=f(b,B.value,_),B!==null&&(h=i(B,h,P),T===null?y=B:T.sibling=B,T=B);return Ve&&Vo(b,P),y}for(S=o(b,S);!B.done;P++,B=v.next())B=g(S,b,P,B.value,_),B!==null&&(e&&B.alternate!==null&&S.delete(B.key===null?P:B.key),h=i(B,h,P),T===null?y=B:T.sibling=B,T=B);return e&&S.forEach(function(M){return t(b,M)}),Ve&&Vo(b,P),y}function k(b,h,v,_){if(typeof v=="object"&&v!==null&&v.type===Ln&&v.key===null&&(v=v.props.children),typeof v=="object"&&v!==null){switch(v.$$typeof){case Ha:e:{for(var y=v.key,T=h;T!==null;){if(T.key===y){if(y=v.type,y===Ln){if(T.tag===7){r(b,T.sibling),h=n(T,v.props.children),h.return=b,b=h;break e}}else if(T.elementType===y||typeof y=="object"&&y!==null&&y.$$typeof===uo&&Op(y)===T.type){r(b,T.sibling),h=n(T,v.props),h.ref=Ei(b,T,v),h.return=b,b=h;break e}r(b,T);break}else t(b,T);T=T.sibling}v.type===Ln?(h=Jo(v.props.children,b.mode,_,v.key),h.return=b,b=h):(_=Tl(v.type,v.key,v.props,null,b.mode,_),_.ref=Ei(b,h,v),_.return=b,b=_)}return a(b);case Sn:e:{for(T=v.key;h!==null;){if(h.key===T)if(h.tag===4&&h.stateNode.containerInfo===v.containerInfo&&h.stateNode.implementation===v.implementation){r(b,h.sibling),h=n(h,v.children||[]),h.return=b,b=h;break e}else{r(b,h);break}else t(b,h);h=h.sibling}h=jc(v,b.mode,_),h.return=b,b=h}return a(b);case uo:return T=v._init,k(b,h,T(v._payload),_)}if(Ai(v))return x(b,h,v,_);if(xi(v))return w(b,h,v,_);tl(b,v)}return typeof v=="string"&&v!==""||typeof v=="number"?(v=""+v,h!==null&&h.tag===6?(r(b,h.sibling),h=n(h,v),h.return=b,b=h):(r(b,h),h=Ic(v,b.mode,_),h.return=b,b=h),a(b)):r(b,h)}return k}var Zn=xb(!0),yb=xb(!1),Gl=Do(null),Kl=null,jn=null,Fd=null;function Ud(){Fd=jn=Kl=null}function Vd(e){var t=Gl.current;ze(Gl),e._currentValue=t}function Nu(e,t,r){for(;e!==null;){var o=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,o!==null&&(o.childLanes|=t)):o!==null&&(o.childLanes&t)!==t&&(o.childLanes|=t),e===r)break;e=e.return}}function Wn(e,t){Kl=e,Fd=jn=null,e=e.dependencies,e!==null&&e.firstContext!==null&&(e.lanes&t&&(Ft=!0),e.firstContext=null)}function pr(e){var t=e._currentValue;if(Fd!==e)if(e={context:e,memoizedValue:t,next:null},jn===null){if(Kl===null)throw Error(K(308));jn=e,Kl.dependencies={lanes:0,firstContext:e}}else jn=jn.next=e;return t}var Yo=null;function Wd(e){Yo===null?Yo=[e]:Yo.push(e)}function _b(e,t,r,o){var n=t.interleaved;return n===null?(r.next=r,Wd(t)):(r.next=n.next,n.next=r),t.interleaved=r,no(e,o)}function no(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 fo=!1;function Hd(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function wb(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 Qr(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function Ro(e,t,r){var o=e.updateQueue;if(o===null)return null;if(o=o.shared,ke&2){var n=o.pending;return n===null?t.next=t:(t.next=n.next,n.next=t),o.pending=t,no(e,r)}return n=o.interleaved,n===null?(t.next=t,Wd(o)):(t.next=n.next,n.next=t),o.interleaved=t,no(e,r)}function xl(e,t,r){if(t=t.updateQueue,t!==null&&(t=t.shared,(r&4194240)!==0)){var o=t.lanes;o&=e.pendingLanes,r|=o,t.lanes=r,Cd(e,r)}}function Mp(e,t){var r=e.updateQueue,o=e.alternate;if(o!==null&&(o=o.updateQueue,r===o)){var n=null,i=null;if(r=r.firstBaseUpdate,r!==null){do{var a={eventTime:r.eventTime,lane:r.lane,tag:r.tag,payload:r.payload,callback:r.callback,next:null};i===null?n=i=a:i=i.next=a,r=r.next}while(r!==null);i===null?n=i=t:i=i.next=t}else n=i=t;r={baseState:o.baseState,firstBaseUpdate:n,lastBaseUpdate:i,shared:o.shared,effects:o.effects},e.updateQueue=r;return}e=r.lastBaseUpdate,e===null?r.firstBaseUpdate=t:e.next=t,r.lastBaseUpdate=t}function ql(e,t,r,o){var n=e.updateQueue;fo=!1;var i=n.firstBaseUpdate,a=n.lastBaseUpdate,l=n.shared.pending;if(l!==null){n.shared.pending=null;var c=l,u=c.next;c.next=null,a===null?i=u:a.next=u,a=c;var d=e.alternate;d!==null&&(d=d.updateQueue,l=d.lastBaseUpdate,l!==a&&(l===null?d.firstBaseUpdate=u:l.next=u,d.lastBaseUpdate=c))}if(i!==null){var f=n.baseState;a=0,d=u=c=null,l=i;do{var p=l.lane,g=l.eventTime;if((o&p)===p){d!==null&&(d=d.next={eventTime:g,lane:0,tag:l.tag,payload:l.payload,callback:l.callback,next:null});e:{var x=e,w=l;switch(p=t,g=r,w.tag){case 1:if(x=w.payload,typeof x=="function"){f=x.call(g,f,p);break e}f=x;break e;case 3:x.flags=x.flags&-65537|128;case 0:if(x=w.payload,p=typeof x=="function"?x.call(g,f,p):x,p==null)break e;f=Xe({},f,p);break e;case 2:fo=!0}}l.callback!==null&&l.lane!==0&&(e.flags|=64,p=n.effects,p===null?n.effects=[l]:p.push(l))}else g={eventTime:g,lane:p,tag:l.tag,payload:l.payload,callback:l.callback,next:null},d===null?(u=d=g,c=f):d=d.next=g,a|=p;if(l=l.next,l===null){if(l=n.shared.pending,l===null)break;p=l,l=p.next,p.next=null,n.lastBaseUpdate=p,n.shared.pending=null}}while(!0);if(d===null&&(c=f),n.baseState=c,n.firstBaseUpdate=u,n.lastBaseUpdate=d,t=n.shared.interleaved,t!==null){n=t;do a|=n.lane,n=n.next;while(n!==t)}else i===null&&(n.shared.lanes=0);an|=a,e.lanes=a,e.memoizedState=f}}function Ap(e,t,r){if(e=t.effects,t.effects=null,e!==null)for(t=0;tr?r:4,e(!0);var o=Nc.transition;Nc.transition={};try{e(!1),t()}finally{Me=r,Nc.transition=o}}function zb(){return hr().memoizedState}function sw(e,t,r){var o=Lo(e);if(r={lane:o,action:r,hasEagerState:!1,eagerState:null,next:null},Fb(e))Ub(t,r);else if(r=_b(e,t,r,o),r!==null){var n=At();Er(r,e,o,n),Vb(r,t,o)}}function cw(e,t,r){var o=Lo(e),n={lane:o,action:r,hasEagerState:!1,eagerState:null,next:null};if(Fb(e))Ub(t,n);else{var i=e.alternate;if(e.lanes===0&&(i===null||i.lanes===0)&&(i=t.lastRenderedReducer,i!==null))try{var a=t.lastRenderedState,l=i(a,r);if(n.hasEagerState=!0,n.eagerState=l,Tr(l,a)){var c=t.interleaved;c===null?(n.next=n,Wd(t)):(n.next=c.next,c.next=n),t.interleaved=n;return}}catch{}finally{}r=_b(e,t,n,o),r!==null&&(n=At(),Er(r,e,o,n),Vb(r,t,o))}}function Fb(e){var t=e.alternate;return e===Ye||t!==null&&t===Ye}function Ub(e,t){Hi=Zl=!0;var r=e.pending;r===null?t.next=t:(t.next=r.next,r.next=t),e.pending=t}function Vb(e,t,r){if(r&4194240){var o=t.lanes;o&=e.pendingLanes,r|=o,t.lanes=r,Cd(e,r)}}var Ql={readContext:pr,useCallback:_t,useContext:_t,useEffect:_t,useImperativeHandle:_t,useInsertionEffect:_t,useLayoutEffect:_t,useMemo:_t,useReducer:_t,useRef:_t,useState:_t,useDebugValue:_t,useDeferredValue:_t,useTransition:_t,useMutableSource:_t,useSyncExternalStore:_t,useId:_t,unstable_isNewReconciler:!1},uw={readContext:pr,useCallback:function(e,t){return Mr().memoizedState=[e,t===void 0?null:t],e},useContext:pr,useEffect:Ip,useImperativeHandle:function(e,t,r){return r=r!=null?r.concat([e]):null,_l(4194308,4,Db.bind(null,t,e),r)},useLayoutEffect:function(e,t){return _l(4194308,4,e,t)},useInsertionEffect:function(e,t){return _l(4,2,e,t)},useMemo:function(e,t){var r=Mr();return t=t===void 0?null:t,e=e(),r.memoizedState=[e,t],e},useReducer:function(e,t,r){var o=Mr();return t=r!==void 0?r(t):t,o.memoizedState=o.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},o.queue=e,e=e.dispatch=sw.bind(null,Ye,e),[o.memoizedState,e]},useRef:function(e){var t=Mr();return e={current:e},t.memoizedState=e},useState:Dp,useDebugValue:Zd,useDeferredValue:function(e){return Mr().memoizedState=e},useTransition:function(){var e=Dp(!1),t=e[0];return e=lw.bind(null,e[1]),Mr().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,r){var o=Ye,n=Mr();if(Ve){if(r===void 0)throw Error(K(407));r=r()}else{if(r=t(),ht===null)throw Error(K(349));nn&30||Rb(o,t,r)}n.memoizedState=r;var i={value:r,getSnapshot:t};return n.queue=i,Ip(Lb.bind(null,o,i,e),[e]),o.flags|=2048,ba(9,Sb.bind(null,o,i,r,t),void 0,null),r},useId:function(){var e=Mr(),t=ht.identifierPrefix;if(Ve){var r=qr,o=Kr;r=(o&~(1<<32-kr(o)-1)).toString(32)+r,t=":"+t+"R"+r,r=ha++,0<\/script>",e=e.removeChild(e.firstChild)):typeof o.is=="string"?e=a.createElement(r,{is:o.is}):(e=a.createElement(r),r==="select"&&(a=e,o.multiple?a.multiple=!0:o.size&&(a.size=o.size))):e=a.createElementNS(e,r),e[Ir]=t,e[da]=o,Zb(e,t,!1,!1),t.stateNode=e;e:{switch(a=fu(r,o),r){case"dialog":Pe("cancel",e),Pe("close",e),n=o;break;case"iframe":case"object":case"embed":Pe("load",e),n=o;break;case"video":case"audio":for(n=0;nti&&(t.flags|=128,o=!0,Ti(i,!1),t.lanes=4194304)}else{if(!o)if(e=Jl(a),e!==null){if(t.flags|=128,o=!0,r=e.updateQueue,r!==null&&(t.updateQueue=r,t.flags|=4),Ti(i,!0),i.tail===null&&i.tailMode==="hidden"&&!a.alternate&&!Ve)return wt(t),null}else 2*Ze()-i.renderingStartTime>ti&&r!==1073741824&&(t.flags|=128,o=!0,Ti(i,!1),t.lanes=4194304);i.isBackwards?(a.sibling=t.child,t.child=a):(r=i.last,r!==null?r.sibling=a:t.child=a,i.last=a)}return i.tail!==null?(t=i.tail,i.rendering=t,i.tail=t.sibling,i.renderingStartTime=Ze(),t.sibling=null,r=$e.current,Be($e,o?r&1|2:r&1),t):(wt(t),null);case 22:case 23:return nf(),o=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==o&&(t.flags|=8192),o&&t.mode&1?Gt&1073741824&&(wt(t),t.subtreeFlags&6&&(t.flags|=8192)):wt(t),null;case 24:return null;case 25:return null}throw Error(K(156,t.tag))}function xw(e,t){switch(Pd(t),t.tag){case 1:return Vt(t.type)&&Hl(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Qn(),ze(Ut),ze(Nt),Xd(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return Yd(t),null;case 13:if(ze($e),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(K(340));Jn()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return ze($e),null;case 4:return Qn(),null;case 10:return Vd(t.type._context),null;case 22:case 23:return nf(),null;case 24:return null;default:return null}}var ol=!1,St=!1,yw=typeof WeakSet=="function"?WeakSet:Set,ae=null;function Bn(e,t){var r=e.ref;if(r!==null)if(typeof r=="function")try{r(null)}catch(o){Ge(e,t,o)}else r.current=null}function zu(e,t,r){try{r()}catch(o){Ge(e,t,o)}}var Yp=!1;function _w(e,t){if(wu=Fl,e=ib(),jd(e)){if("selectionStart"in e)var r={start:e.selectionStart,end:e.selectionEnd};else e:{r=(r=e.ownerDocument)&&r.defaultView||window;var o=r.getSelection&&r.getSelection();if(o&&o.rangeCount!==0){r=o.anchorNode;var n=o.anchorOffset,i=o.focusNode;o=o.focusOffset;try{r.nodeType,i.nodeType}catch{r=null;break e}var a=0,l=-1,c=-1,u=0,d=0,f=e,p=null;t:for(;;){for(var g;f!==r||n!==0&&f.nodeType!==3||(l=a+n),f!==i||o!==0&&f.nodeType!==3||(c=a+o),f.nodeType===3&&(a+=f.nodeValue.length),(g=f.firstChild)!==null;)p=f,f=g;for(;;){if(f===e)break t;if(p===r&&++u===n&&(l=a),p===i&&++d===o&&(c=a),(g=f.nextSibling)!==null)break;f=p,p=f.parentNode}f=g}r=l===-1||c===-1?null:{start:l,end:c}}else r=null}r=r||{start:0,end:0}}else r=null;for(ku={focusedElem:e,selectionRange:r},Fl=!1,ae=t;ae!==null;)if(t=ae,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,ae=e;else for(;ae!==null;){t=ae;try{var x=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(x!==null){var w=x.memoizedProps,k=x.memoizedState,b=t.stateNode,h=b.getSnapshotBeforeUpdate(t.elementType===t.type?w:mr(t.type,w),k);b.__reactInternalSnapshotBeforeUpdate=h}break;case 3:var v=t.stateNode.containerInfo;v.nodeType===1?v.textContent="":v.nodeType===9&&v.documentElement&&v.removeChild(v.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(K(163))}}catch(_){Ge(t,t.return,_)}if(e=t.sibling,e!==null){e.return=t.return,ae=e;break}ae=t.return}return x=Yp,Yp=!1,x}function $i(e,t,r){var o=t.updateQueue;if(o=o!==null?o.lastEffect:null,o!==null){var n=o=o.next;do{if((n.tag&e)===e){var i=n.destroy;n.destroy=void 0,i!==void 0&&zu(t,r,i)}n=n.next}while(n!==o)}}function Ps(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 o=r.create;r.destroy=o()}r=r.next}while(r!==t)}}function Fu(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 tv(e){var t=e.alternate;t!==null&&(e.alternate=null,tv(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Ir],delete t[da],delete t[Ru],delete t[ow],delete t[nw])),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 rv(e){return e.tag===5||e.tag===3||e.tag===4}function Xp(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||rv(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 Uu(e,t,r){var o=e.tag;if(o===5||o===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=Wl));else if(o!==4&&(e=e.child,e!==null))for(Uu(e,t,r),e=e.sibling;e!==null;)Uu(e,t,r),e=e.sibling}function Vu(e,t,r){var o=e.tag;if(o===5||o===6)e=e.stateNode,t?r.insertBefore(e,t):r.appendChild(e);else if(o!==4&&(e=e.child,e!==null))for(Vu(e,t,r),e=e.sibling;e!==null;)Vu(e,t,r),e=e.sibling}var bt=null,xr=!1;function so(e,t,r){for(r=r.child;r!==null;)ov(e,t,r),r=r.sibling}function ov(e,t,r){if(Pr&&typeof Pr.onCommitFiberUnmount=="function")try{Pr.onCommitFiberUnmount(Ns,r)}catch{}switch(r.tag){case 5:St||Bn(r,t);case 6:var o=bt,n=xr;bt=null,so(e,t,r),bt=o,xr=n,bt!==null&&(xr?(e=bt,r=r.stateNode,e.nodeType===8?e.parentNode.removeChild(r):e.removeChild(r)):bt.removeChild(r.stateNode));break;case 18:bt!==null&&(xr?(e=bt,r=r.stateNode,e.nodeType===8?Sc(e.parentNode,r):e.nodeType===1&&Sc(e,r),aa(e)):Sc(bt,r.stateNode));break;case 4:o=bt,n=xr,bt=r.stateNode.containerInfo,xr=!0,so(e,t,r),bt=o,xr=n;break;case 0:case 11:case 14:case 15:if(!St&&(o=r.updateQueue,o!==null&&(o=o.lastEffect,o!==null))){n=o=o.next;do{var i=n,a=i.destroy;i=i.tag,a!==void 0&&(i&2||i&4)&&zu(r,t,a),n=n.next}while(n!==o)}so(e,t,r);break;case 1:if(!St&&(Bn(r,t),o=r.stateNode,typeof o.componentWillUnmount=="function"))try{o.props=r.memoizedProps,o.state=r.memoizedState,o.componentWillUnmount()}catch(l){Ge(r,t,l)}so(e,t,r);break;case 21:so(e,t,r);break;case 22:r.mode&1?(St=(o=St)||r.memoizedState!==null,so(e,t,r),St=o):so(e,t,r);break;default:so(e,t,r)}}function Gp(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var r=e.stateNode;r===null&&(r=e.stateNode=new yw),t.forEach(function(o){var n=Nw.bind(null,e,o);r.has(o)||(r.add(o),o.then(n,n))})}}function vr(e,t){var r=t.deletions;if(r!==null)for(var o=0;on&&(n=a),o&=~i}if(o=n,o=Ze()-o,o=(120>o?120:480>o?480:1080>o?1080:1920>o?1920:3e3>o?3e3:4320>o?4320:1960*kw(o/1960))-o,10e?16:e,mo===null)var o=!1;else{if(e=mo,mo=null,rs=0,ke&6)throw Error(K(331));var n=ke;for(ke|=4,ae=e.current;ae!==null;){var i=ae,a=i.child;if(ae.flags&16){var l=i.deletions;if(l!==null){for(var c=0;cZe()-rf?qo(e,0):tf|=r),Wt(e,t)}function dv(e,t){t===0&&(e.mode&1?(t=Ga,Ga<<=1,!(Ga&130023424)&&(Ga=4194304)):t=1);var r=At();e=no(e,t),e!==null&&(Na(e,t,r),Wt(e,r))}function Cw(e){var t=e.memoizedState,r=0;t!==null&&(r=t.retryLane),dv(e,r)}function Nw(e,t){var r=0;switch(e.tag){case 13:var o=e.stateNode,n=e.memoizedState;n!==null&&(r=n.retryLane);break;case 19:o=e.stateNode;break;default:throw Error(K(314))}o!==null&&o.delete(t),dv(e,r)}var fv;fv=function(e,t,r){if(e!==null)if(e.memoizedProps!==t.pendingProps||Ut.current)Ft=!0;else{if(!(e.lanes&r)&&!(t.flags&128))return Ft=!1,vw(e,t,r);Ft=!!(e.flags&131072)}else Ft=!1,Ve&&t.flags&1048576&&bb(t,Xl,t.index);switch(t.lanes=0,t.tag){case 2:var o=t.type;wl(e,t),e=t.pendingProps;var n=qn(t,Nt.current);Wn(t,r),n=Kd(null,t,o,e,n,r);var i=qd();return t.flags|=1,typeof n=="object"&&n!==null&&typeof n.render=="function"&&n.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Vt(o)?(i=!0,$l(t)):i=!1,t.memoizedState=n.state!==null&&n.state!==void 0?n.state:null,Hd(t),n.updater=Bs,t.stateNode=n,n._reactInternals=t,Mu(t,o,e,r),t=Iu(null,t,o,!0,i,r)):(t.tag=0,Ve&&i&&Bd(t),Ot(null,t,n,r),t=t.child),t;case 16:o=t.elementType;e:{switch(wl(e,t),e=t.pendingProps,n=o._init,o=n(o._payload),t.type=o,n=t.tag=Mw(o),e=mr(o,e),n){case 0:t=Du(null,t,o,e,r);break e;case 1:t=Wp(null,t,o,e,r);break e;case 11:t=Up(null,t,o,e,r);break e;case 14:t=Vp(null,t,o,mr(o.type,e),r);break e}throw Error(K(306,o,""))}return t;case 0:return o=t.type,n=t.pendingProps,n=t.elementType===o?n:mr(o,n),Du(e,t,o,n,r);case 1:return o=t.type,n=t.pendingProps,n=t.elementType===o?n:mr(o,n),Wp(e,t,o,n,r);case 3:e:{if(Kb(t),e===null)throw Error(K(387));o=t.pendingProps,i=t.memoizedState,n=i.element,wb(e,t),ql(t,o,null,r);var a=t.memoizedState;if(o=a.element,i.isDehydrated)if(i={element:o,isDehydrated:!1,cache:a.cache,pendingSuspenseBoundaries:a.pendingSuspenseBoundaries,transitions:a.transitions},t.updateQueue.baseState=i,t.memoizedState=i,t.flags&256){n=ei(Error(K(423)),t),t=Hp(e,t,o,r,n);break e}else if(o!==n){n=ei(Error(K(424)),t),t=Hp(e,t,o,r,n);break e}else for(Jt=To(t.stateNode.containerInfo.firstChild),Zt=t,Ve=!0,yr=null,r=yb(t,null,o,r),t.child=r;r;)r.flags=r.flags&-3|4096,r=r.sibling;else{if(Jn(),o===n){t=io(e,t,r);break e}Ot(e,t,o,r)}t=t.child}return t;case 5:return kb(t),e===null&&Cu(t),o=t.type,n=t.pendingProps,i=e!==null?e.memoizedProps:null,a=n.children,Eu(o,n)?a=null:i!==null&&Eu(o,i)&&(t.flags|=32),Gb(e,t),Ot(e,t,a,r),t.child;case 6:return e===null&&Cu(t),null;case 13:return qb(e,t,r);case 4:return $d(t,t.stateNode.containerInfo),o=t.pendingProps,e===null?t.child=Zn(t,null,o,r):Ot(e,t,o,r),t.child;case 11:return o=t.type,n=t.pendingProps,n=t.elementType===o?n:mr(o,n),Up(e,t,o,n,r);case 7:return Ot(e,t,t.pendingProps,r),t.child;case 8:return Ot(e,t,t.pendingProps.children,r),t.child;case 12:return Ot(e,t,t.pendingProps.children,r),t.child;case 10:e:{if(o=t.type._context,n=t.pendingProps,i=t.memoizedProps,a=n.value,Be(Gl,o._currentValue),o._currentValue=a,i!==null)if(Tr(i.value,a)){if(i.children===n.children&&!Ut.current){t=io(e,t,r);break e}}else for(i=t.child,i!==null&&(i.return=t);i!==null;){var l=i.dependencies;if(l!==null){a=i.child;for(var c=l.firstContext;c!==null;){if(c.context===o){if(i.tag===1){c=Qr(-1,r&-r),c.tag=2;var u=i.updateQueue;if(u!==null){u=u.shared;var d=u.pending;d===null?c.next=c:(c.next=d.next,d.next=c),u.pending=c}}i.lanes|=r,c=i.alternate,c!==null&&(c.lanes|=r),Nu(i.return,r,t),l.lanes|=r;break}c=c.next}}else if(i.tag===10)a=i.type===t.type?null:i.child;else if(i.tag===18){if(a=i.return,a===null)throw Error(K(341));a.lanes|=r,l=a.alternate,l!==null&&(l.lanes|=r),Nu(a,r,t),a=i.sibling}else a=i.child;if(a!==null)a.return=i;else for(a=i;a!==null;){if(a===t){a=null;break}if(i=a.sibling,i!==null){i.return=a.return,a=i;break}a=a.return}i=a}Ot(e,t,n.children,r),t=t.child}return t;case 9:return n=t.type,o=t.pendingProps.children,Wn(t,r),n=pr(n),o=o(n),t.flags|=1,Ot(e,t,o,r),t.child;case 14:return o=t.type,n=mr(o,t.pendingProps),n=mr(o.type,n),Vp(e,t,o,n,r);case 15:return Yb(e,t,t.type,t.pendingProps,r);case 17:return o=t.type,n=t.pendingProps,n=t.elementType===o?n:mr(o,n),wl(e,t),t.tag=1,Vt(o)?(e=!0,$l(t)):e=!1,Wn(t,r),Wb(t,o,n),Mu(t,o,n,r),Iu(null,t,o,!0,e,r);case 19:return Jb(e,t,r);case 22:return Xb(e,t,r)}throw Error(K(156,t.tag))};function pv(e,t){return Fg(e,t)}function Ow(e,t,r,o){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=o,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function ur(e,t,r,o){return new Ow(e,t,r,o)}function lf(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Mw(e){if(typeof e=="function")return lf(e)?1:0;if(e!=null){if(e=e.$$typeof,e===Td)return 11;if(e===Rd)return 14}return 2}function Co(e,t){var r=e.alternate;return r===null?(r=ur(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 Tl(e,t,r,o,n,i){var a=2;if(o=e,typeof e=="function")lf(e)&&(a=1);else if(typeof e=="string")a=5;else e:switch(e){case Ln:return Jo(r.children,n,i,t);case Ed:a=8,n|=8;break;case ru:return e=ur(12,r,t,n|2),e.elementType=ru,e.lanes=i,e;case ou:return e=ur(13,r,t,n),e.elementType=ou,e.lanes=i,e;case nu:return e=ur(19,r,t,n),e.elementType=nu,e.lanes=i,e;case kg:return Fs(r,n,i,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case _g:a=10;break e;case wg:a=9;break e;case Td:a=11;break e;case Rd:a=14;break e;case uo:a=16,o=null;break e}throw Error(K(130,e==null?e:typeof e,""))}return t=ur(a,r,t,n),t.elementType=e,t.type=o,t.lanes=i,t}function Jo(e,t,r,o){return e=ur(7,e,o,t),e.lanes=r,e}function Fs(e,t,r,o){return e=ur(22,e,o,t),e.elementType=kg,e.lanes=r,e.stateNode={isHidden:!1},e}function Ic(e,t,r){return e=ur(6,e,null,t),e.lanes=r,e}function jc(e,t,r){return t=ur(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,o,n){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=bc(0),this.expirationTimes=bc(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=bc(0),this.identifierPrefix=o,this.onRecoverableError=n,this.mutableSourceEagerHydrationData=null}function sf(e,t,r,o,n,i,a,l,c){return e=new Aw(e,t,r,l,c),t===1?(t=1,i===!0&&(t|=8)):t=0,i=ur(3,null,null,t),e.current=i,i.stateNode=e,i.memoizedState={element:o,isDehydrated:r,cache:null,transitions:null,pendingSuspenseBoundaries:null},Hd(i),e}function Dw(e,t,r){var o=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(vv)}catch(e){console.error(e)}}vv(),vg.exports=er;var Vr=vg.exports,fi,rh=Vr;fi=ea.createRoot=rh.createRoot,ea.hydrateRoot=rh.hydrateRoot;function ct(){return dy}function Jr(){return fy}function mv(e){if(!e||typeof e!="object")return null;const t=e,r=t.rootGraph;if(r&&typeof r=="object")return r;const o=t.graph;return o&&typeof o=="object"?o:e}function xv(e){return e._nodes??e.nodes??[]}function zw(e){return e._groups??e.groups??[]}function Fw(e){if(e.subgraph&&typeof e.subgraph=="object")return e.subgraph;if(typeof e.getSubgraph=="function")try{return e.getSubgraph()??null}catch{return null}return null}function yv(e,t){const r=new Set,o=[{graph:e,path:[]}];for(;o.length;){const{graph:n,path:i}=o.pop(),a=n;if(!r.has(a)){r.add(a),t(n,i);for(const l of xv(n)){const c=Fw(l);c&&o.push({graph:c,path:i.concat([{node:l,graph:n,depth:i.length+1}])})}}}}function Uw(){return globalThis.crypto?.randomUUID?.()??`bv-group-${Date.now()}-${Math.random().toString(16).slice(2)}`}function Vw(e,t){const r=e;r.flags??(r.flags={});let o=typeof r.flags.bvGroupId=="string"?r.flags.bvGroupId:"";if(!o||t.has(o)){do o=Uw();while(t.has(o));r.flags.bvGroupId=o}return t.add(o),o}function is(e){const t=mv(e);if(!t)return[];const r=[],o=new Set;return yv(t,(n,i)=>{for(const a of zw(n)){const c=[...i.map(u=>String(u.node.title||u.node.type||u.node.id)),String(a.title||"Untitled Group")].join(" / ");r.push({group:a,graph:n,path:i,id:Vw(a,o),pathLabel:c})}}),r}function Ww(e,t){const r=mv(e);if(!r)return[];const o=[];return yv(r,(n,i)=>{for(const a of xv(n))_v(a,t)&&o.push({node:a,graph:n,path:i})}),o}function _v(e,t){const r=String(t);return[e.type,e.comfyClass,e.title,e.constructor?.name].filter(n=>typeof n=="string"&&n.length>0).map(String).includes(r)}const ri="bv-control-config-changed";function Hw(){return{version:2,forceActive:!1,controls:[]}}function ff(e){var r;const t=ct()?.rootGraph;t&&(t.extra??(t.extra={}),(r=t.extra).bv_settings??(r.bv_settings={}),t.extra.bv_settings.controlConfig=e,t.setDirtyCanvas?.(!0,!0),window.dispatchEvent(new CustomEvent(ri,{detail:e})))}function sn(){const e=ct()?.rootGraph?.extra?.bv_settings?.controlConfig;return e?.version===2?e:Hw()}function $w(e,t=()=>!1){const r=e.group.nodes??e.group._nodes;if(Array.isArray(r)){const l=r.filter(c=>c&&typeof c=="object"&&!t(c));if(l.length>0)return l}const[o,n]=e.group.pos||[0,0],[i,a]=e.group.size||[0,0];return(e.graph._nodes??e.graph.nodes??[]).filter(l=>{if(t(l))return!1;const[c,u]=l.pos||[0,0],[d,f]=l.size||[0,0];return c+d/2>=o&&c+d/2<=o+i&&u+f/2>=n&&u+f/2<=n+a})}const oh={activate:3,mute:2,bypass:1},nh=e=>e.charAt(0).toUpperCase()+e.slice(1);function wv(e){const t=new Map;for(const o of e.controls??[])if(o.enabled)for(const n of o.assignments??[]){if(n.unresolved)continue;const i=t.get(n.groupId)??[];i.push({controlId:o.id,controlName:o.name,action:n.action,groupId:n.groupId,groupPath:n.groupPath||n.groupTitle||n.groupId}),t.set(n.groupId,i)}const r=[];for(const o of t.values()){if(new Set(o.map(i=>i.action)).size<2)continue;const n=o.reduce((i,a)=>oh[a.action]>oh[i]?a.action:i,o[0].action);r.push({groupId:o[0].groupId,groupPath:o[0].groupPath,winnerAction:n,entries:o})}return r}function Yw(e){if(!e.length)return"✓ No active conflicts";if(e.length>1)return`⚠ ${e.length} active control conflicts`;const t=e[0],r=[...new Set(t.entries.filter(o=>o.action!==t.winnerAction).map(o=>o.action))].join(", ");return`⚠ ${t.groupPath}: ${nh(t.winnerAction)} overrides ${r.split(", ").map(nh).join(", ")}`}function kv({children:e}){const t=m.useRef();if(!t.current){const r=document.createElement("div");r.className="bv-ui bv-ui-portal",t.current=r}return m.useEffect(()=>(document.body.append(t.current),()=>t.current?.remove()),[]),Vr.createPortal(e,t.current)}function jo({open:e,anchor:t,children:r,onClose:o,className:n="",matchWidth:i=!1}){const a=m.useRef(null),[l,c]=m.useState({left:0,top:0,visibility:"hidden"});return m.useLayoutEffect(()=>{if(!e)return;const u=()=>{const p=t.current?.getBoundingClientRect(),g=a.current?.getBoundingClientRect();if(!p||!g)return;const x=8,w=6,k=i?Math.min(Math.max(p.width,240),window.innerWidth-x*2):void 0,b=k??g.width,h=Math.max(x,Math.min(p.left,window.innerWidth-b-x)),v=p.bottom+w,_=v+g.height<=window.innerHeight-x?v:Math.max(x,p.top-g.height-w);c({left:h,top:_,width:k,visibility:"visible"})};u();const d=requestAnimationFrame(u),f=new ResizeObserver(u);return t.current&&f.observe(t.current),a.current&&f.observe(a.current),window.addEventListener("resize",u),window.addEventListener("scroll",u,!0),()=>{cancelAnimationFrame(d),f.disconnect(),window.removeEventListener("resize",u),window.removeEventListener("scroll",u,!0)}},[t,i,e]),m.useEffect(()=>{if(!e)return;const u=f=>{const p=f.target;!t.current?.contains(p)&&!a.current?.contains(p)&&o?.()},d=f=>{f.key==="Escape"&&o?.()};return document.addEventListener("pointerdown",u),document.addEventListener("keydown",d),()=>{document.removeEventListener("pointerdown",u),document.removeEventListener("keydown",d)}},[t,o,e]),e?s.jsx(kv,{children:s.jsx("div",{ref:a,className:`bv-anchored-popover ${n}`.trim(),style:l,children:r})}):null}function pf({density:e="compact",className:t="",children:r}){return s.jsx("div",{className:`bv-density-${e} ${t}`.trim(),children:r})}function oe({intent:e="secondary",icon:t,iconOnly:r=!1,loading:o=!1,density:n,className:i="",children:a,disabled:l,...c}){return s.jsxs("button",{...c,disabled:l||o,className:`bv-button ${e} ${n?`bv-density-${n}`:""} ${r?"icon-only":""} ${i}`.trim(),children:[o?s.jsx("span",{className:"bv-spinner"}):r?t??a:t,!r&&a]})}function Xw({actions:e,onClose:t}){return s.jsx("div",{className:"bv-menu-content",role:"menu",children:e.map(r=>s.jsxs(Re.Fragment,{children:[r.separatorBefore&&s.jsx("hr",{}),s.jsxs("button",{type:"button",role:"menuitem",disabled:r.disabled,className:r.danger?"danger":"",onClick:()=>{r.onSelect(),t?.()},children:[r.icon,s.jsx("span",{children:r.label}),r.shortcut&&s.jsx("kbd",{children:r.shortcut})]})]},r.id))})}function hf({label:e,actions:t,intent:r="secondary",icon:o,density:n}){const[i,a]=m.useState(!1),l=m.useRef(null);return s.jsxs("div",{className:"bv-menu-button",ref:l,children:[s.jsxs(oe,{intent:r,icon:o,density:n,"aria-haspopup":"menu","aria-expanded":i,onClick:()=>a(!i),children:[e,s.jsx("span",{className:"bv-chevron"})]}),s.jsx(jo,{open:i,anchor:l,onClose:()=>a(!1),className:"bv-menu",children:s.jsx(Xw,{actions:t,onClose:()=>a(!1)})})]})}function Gw({items:e,orientation:t="horizontal",label:r="Tools",overflow:o=[],density:n}){return s.jsxs("div",{className:`bv-toolbar ${t}`,role:"toolbar","aria-orientation":t,"aria-label":r,children:[e.map((i,a)=>s.jsxs(Re.Fragment,{children:[a>0&&i.group!==e[a-1].group&&s.jsx("span",{className:"bv-toolbar-divider"}),s.jsx(oe,{intent:"ghost",density:n,icon:i.icon,iconOnly:t==="vertical","aria-label":i.label,"aria-pressed":i.active,disabled:i.disabled,className:i.active?"active":"",onClick:i.onSelect,children:i.label})]},i.id)),o.length>0&&s.jsx(hf,{label:"More",actions:o,intent:"ghost",density:n})]})}function ih({items:e,compact:t=!1}){return s.jsx("dl",{className:`bv-definition-list ${t?"compact":""}`,children:e.map((r,o)=>s.jsxs("div",{className:"bv-definition-row",children:[s.jsx("dt",{children:r.term}),s.jsx("dd",{children:r.description})]},o))})}function $s({label:e,summary:t,icon:r,children:o,popover:n,className:i=""}){const[a,l]=m.useState(!1),c=m.useRef(null);return s.jsxs("div",{ref:c,className:`bv-adaptive-field ${i}`.trim(),children:[s.jsx("div",{className:"bv-adaptive-inline",children:o}),s.jsxs(oe,{type:"button",intent:"secondary",className:"bv-adaptive-trigger",icon:r,"aria-haspopup":"dialog","aria-expanded":a,onClick:()=>l(!0),children:[s.jsx("span",{className:"bv-adaptive-summary",children:t}),s.jsx("span",{"aria-hidden":"true",children:"↗"})]}),s.jsxs(jo,{open:a,anchor:c,onClose:()=>l(!1),className:"bv-adaptive-popover",children:[s.jsxs("header",{children:[s.jsx("strong",{children:e}),s.jsx(oe,{type:"button",intent:"ghost",icon:"×",iconOnly:!0,"aria-label":`Close ${e} editor`,onClick:()=>l(!1)})]}),s.jsx("div",{children:n})]})]})}function Da({open:e,title:t,description:r,children:o,footer:n,onClose:i,modal:a=!0,size:l="medium"}){return e?s.jsx(kv,{children:s.jsx("div",{className:`bv-dialog-layer ${a?"modal":"modeless"}`,role:a?"presentation":void 0,onPointerDown:c=>{a&&c.target===c.currentTarget&&i()},children:s.jsxs("section",{className:`bv-dialog ${l}`,role:"dialog","aria-modal":a,"aria-label":t,children:[s.jsxs("header",{children:[s.jsxs("div",{children:[s.jsx("h2",{children:t}),r&&s.jsx("p",{children:r})]}),s.jsx(oe,{intent:"ghost",icon:"×",iconOnly:!0,"aria-label":"Close",onClick:i})]}),s.jsx("div",{className:"bv-dialog-body",children:o}),n&&s.jsx("footer",{children:n})]})})}):null}function gf({open:e,editorName:t,onSave:r,onDiscard:o,onKeep:n}){return s.jsx(Da,{open:e,title:"Unsaved changes",description:`${t} contains execution changes that have not been saved.`,onClose:n,size:"small",footer:s.jsxs(s.Fragment,{children:[s.jsx(oe,{intent:"ghost",onClick:n,children:"Keep editing"}),s.jsx(oe,{intent:"secondary",onClick:o,children:"Discard"}),s.jsx(oe,{intent:"primary",onClick:r,children:"Save"})]}),children:s.jsx("p",{children:"Save the current draft, discard it, or return to the editor."})})}function bf(){const[e,t]=m.useState(null),r=n=>t({confirmLabel:"Continue",danger:!1,...n}),o=s.jsx(Da,{open:!!e,title:e?.title??"Confirm action",onClose:()=>t(null),size:"small",footer:s.jsxs(s.Fragment,{children:[s.jsx(oe,{intent:"ghost",onClick:()=>t(null),children:"Cancel"}),s.jsx(oe,{intent:e?.danger?"danger":"primary",onClick:()=>{const n=e?.action;t(null),n?.()},children:e?.confirmLabel})]}),children:e?.message&&s.jsx("p",{children:e.message})});return{confirm:r,dialog:o}}function ah({trigger:e,children:t,open:r,onOpen:o}){const[n,i]=m.useState(!1),a=m.useRef(null),l=r??n,c=u=>{i(u),o?.(u)};return s.jsxs("span",{ref:a,className:"bv-popover-host",children:[e({open:l,toggle:()=>c(!l)}),s.jsx(jo,{open:l,anchor:a,onClose:()=>c(!1),className:"bv-popover",children:t})]})}function Ia({items:e,onReorder:t,onRemove:r,renderActions:o,initialExpanded:n=[]}){const[i,a]=m.useState(n),[l,c]=m.useState();return s.jsx("div",{className:"bv-sortable-list",children:e.map(u=>s.jsxs("article",{draggable:!u.disabled,onDragStart:()=>c(u.id),onDragOver:d=>d.preventDefault(),onDrop:()=>{if(!l||l===u.id)return;const d=[...e],f=d.findIndex(x=>x.id===l),p=d.findIndex(x=>x.id===u.id),[g]=d.splice(f,1);d.splice(p,0,g),t(d),c(void 0)},children:[s.jsxs("header",{children:[s.jsx("button",{type:"button",className:"bv-drag-handle","aria-label":`Reorder ${String(u.title)}`,children:"⠿"}),s.jsxs("div",{children:[s.jsx("strong",{children:u.title}),u.description&&s.jsx("small",{children:u.description})]}),o?.(u),s.jsxs("span",{className:"bv-segmented-actions",children:[r&&s.jsx(oe,{intent:"ghost",iconOnly:!0,"aria-label":`Remove ${String(u.title)}`,title:"Remove",onClick:()=>r(u.id),children:"×"}),u.content&&s.jsx(oe,{intent:"ghost",icon:s.jsx("span",{className:"bv-chevron"}),iconOnly:!0,"aria-label":`${i.includes(u.id)?"Collapse":"Expand"} ${String(u.title)}`,"aria-expanded":i.includes(u.id),onClick:()=>a(d=>d.includes(u.id)?d.filter(f=>f!==u.id):[...d,u.id])})]})]}),u.summary&&s.jsx("div",{className:"bv-sortable-summary",children:u.summary}),u.content&&i.includes(u.id)&&s.jsx("div",{className:"bv-sortable-content",children:u.content})]},u.id))})}const it=Re.forwardRef(function({type:t="button",...r},o){return s.jsx("button",{...r,type:t,ref:o})}),Kw=Re.forwardRef(function(t,r){return s.jsx("input",{...t,ref:r})});function Fr({tone:e="neutral",title:t,children:r,icon:o,actions:n,onClose:i}){return s.jsxs("aside",{className:`bv-callout ${e}`,role:e==="danger"?"alert":"status",children:[o&&s.jsx("span",{className:"bv-callout-icon",children:o}),s.jsxs("div",{children:[t&&s.jsx("strong",{children:t}),s.jsx("div",{children:r}),n&&s.jsx("div",{className:"bv-callout-actions",children:n})]}),i&&s.jsx(oe,{intent:"ghost",iconOnly:!0,"aria-label":"Close",onClick:i,children:"×"})]})}function Ev({children:e,tone:t="neutral",dot:r=!1}){return s.jsx("span",{className:`bv-badge ${t} ${r?"dot":""}`,children:e})}function Ys({icon:e,title:t,description:r,actions:o}){return s.jsxs("div",{className:"bv-empty-state",children:[e,s.jsx("strong",{children:t}),r&&s.jsx("p",{children:r}),o]})}function qw({tone:e="neutral",title:t,children:r,onClose:o,duration:n=0}){const i=m.useRef(),a=m.useCallback(()=>{i.current&&window.clearTimeout(i.current)},[]),l=m.useCallback(()=>{a(),n&&(i.current=window.setTimeout(o,n))},[n,o,a]);return m.useEffect(()=>(l(),a),[l,a]),s.jsxs("div",{className:`bv-toast ${e}`,role:"status",tabIndex:0,onPointerEnter:a,onPointerLeave:l,onFocus:a,onBlur:l,children:[s.jsxs("div",{children:[s.jsx("strong",{children:t}),r&&s.jsx("p",{children:r})]}),s.jsx(oe,{intent:"ghost",iconOnly:!0,"aria-label":"Dismiss",onClick:o,children:"×"})]})}function pi(){return(pi=Object.assign||function(e){for(var t=1;t=0||(n[r]=e[r]);return n}function Gi(e){var t=m.useRef(e),r=m.useRef(function(o){t.current&&t.current(o)});return t.current=e,r.current}var oi=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=1),e>r?r:e0:v.buttons>0)&&i.current?a(lh(i.current,v,u.current)):(h(!1),c())},b=function(){h(!1),c()};function h(v){var _=d.current,y=Xu(i.current),T=v?y.addEventListener:y.removeEventListener;T(_?"touchmove":"mousemove",k),T(_?"touchend":"mouseup",b)}return[function(v){var _=v.nativeEvent,y=i.current;if(y&&(sh(_),!function(S,P){return P&&!Ki(S)}(_,d.current)&&y)){if(Ki(_)){d.current=!0;var T=_.changedTouches||[];T.length&&(u.current=T[0].identifier)}y.focus(),a(lh(y,_,u.current)),h(!0)}},function(v){var _=v.which||v.keyCode;_<37||_>40||(v.preventDefault(),l({left:_===39?.05:_===37?-.05:0,top:_===40?.05:_===38?-.05:0}))},function(v){var _=v.which||v.keyCode;_>=37&&_<=40&&c()},h]},[l,a,c]),p=f[0],g=f[1],x=f[2],w=f[3];return m.useEffect(function(){return w},[w]),Re.createElement("div",pi({},n,{onTouchStart:p,onMouseDown:p,className:"react-colorful__interactive",ref:i,onKeyDown:g,onKeyUp:x,tabIndex:0,role:"slider"}))}),ja=function(e){return e.filter(Boolean).join(" ")},xf=function(e){var t=e.color,r=e.left,o=e.top,n=o===void 0?.5:o,i=ja(["react-colorful__pointer",e.className]);return Re.createElement("div",{className:i,style:{top:100*n+"%",left:100*r+"%"}},Re.createElement("div",{className:"react-colorful__pointer-fill",style:{backgroundColor:t}}))},pt=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=Math.pow(10,t)),Math.round(r*e)/r},Tv=function(e){return Qw(Gu(e))},Gu=function(e){return e[0]==="#"&&(e=e.substring(1)),e.length<6?{r:parseInt(e[0]+e[0],16),g:parseInt(e[1]+e[1],16),b:parseInt(e[2]+e[2],16),a:e.length===4?pt(parseInt(e[3]+e[3],16)/255,2):1}:{r:parseInt(e.substring(0,2),16),g:parseInt(e.substring(2,4),16),b:parseInt(e.substring(4,6),16),a:e.length===8?pt(parseInt(e.substring(6,8),16)/255,2):1}},Rv=function(e){return Zw(Jw(e))},Sv=function(e){var t=e.s,r=e.v,o=e.a,n=(200-t)*r/100;return{h:pt(e.h),s:pt(n>0&&n<200?t*r/100/(n<=100?n:200-n)*100:0),l:pt(n/2),a:pt(o,2)}},Ku=function(e){var t=Sv(e);return"hsl("+t.h+", "+t.s+"%, "+t.l+"%)"},Bc=function(e){var t=Sv(e);return"hsla("+t.h+", "+t.s+"%, "+t.l+"%, "+t.a+")"},Jw=function(e){var t=e.h,r=e.s,o=e.v,n=e.a;t=t/360*6,r/=100,o/=100;var i=Math.floor(t),a=o*(1-r),l=o*(1-(t-i)*r),c=o*(1-(1-t+i)*r),u=i%6;return{r:pt(255*[o,l,a,a,c,o][u]),g:pt(255*[c,o,o,l,a,a][u]),b:pt(255*[a,a,c,o,o,l][u]),a:pt(n,2)}},al=function(e){var t=e.toString(16);return t.length<2?"0"+t:t},Zw=function(e){var t=e.r,r=e.g,o=e.b,n=e.a,i=n<1?al(pt(255*n)):"";return"#"+al(t)+al(r)+al(o)+i},Qw=function(e){var t=e.r,r=e.g,o=e.b,n=e.a,i=Math.max(t,r,o),a=i-Math.min(t,r,o),l=a?i===t?(r-o)/a:i===r?2+(o-t)/a:4+(t-r)/a:0;return{h:pt(60*(l<0?l+6:l)),s:pt(i?a/i*100:0),v:pt(i/255*100),a:n}},Lv=Re.memo(function(e){var t=e.hue,r=e.onChange,o=e.onChangeEnd,n=ja(["react-colorful__hue",e.className]);return Re.createElement("div",{className:n},Re.createElement(mf,{onMove:function(i){r({h:360*i.left})},onKey:function(i){r({h:oi(t+360*i.left,0,360)})},onEnd:o,"aria-label":"Hue","aria-valuenow":pt(t),"aria-valuemax":"360","aria-valuemin":"0"},Re.createElement(xf,{className:"react-colorful__hue-pointer",left:t/360,color:Ku({h:t,s:100,v:100,a:1})})))}),Cv=Re.memo(function(e){var t=e.hsva,r=e.onChange,o=e.onChangeEnd,n={backgroundColor:Ku({h:t.h,s:100,v:100,a:1})};return Re.createElement("div",{className:"react-colorful__saturation",style:n},Re.createElement(mf,{onMove:function(i){r({s:100*i.left,v:100-100*i.top})},onKey:function(i){r({s:oi(t.s+100*i.left,0,100),v:oi(t.v-100*i.top,0,100)})},onEnd:o,"aria-label":"Color","aria-valuetext":"Saturation "+pt(t.s)+"%, Brightness "+pt(t.v)+"%"},Re.createElement(xf,{className:"react-colorful__saturation-pointer",top:1-t.v/100,left:t.s/100,color:Ku(t)})))}),Nv=function(e,t){if(e===t)return!0;for(var r in e)if(e[r]!==t[r])return!1;return!0},Ov=function(e,t){return e.toLowerCase()===t.toLowerCase()||Nv(Gu(e),Gu(t))};function Mv(e,t,r,o){var n=Gi(r),i=Gi(o),a=m.useState(function(){return e.toHsva(t)}),l=a[0],c=a[1],u=m.useRef({color:t,hsva:l}),d=m.useRef(!1);m.useEffect(function(){if(!e.equal(t,u.current.color)){var g=e.toHsva(t);u.current={hsva:g,color:t},c(g),d.current=!1}},[t,e]),m.useEffect(function(){var g;Nv(l,u.current.hsva)||e.equal(g=e.fromHsva(l),u.current.color)||(u.current={hsva:l,color:g},n(g),d.current=!0)},[l,e,n]);var f=m.useCallback(function(g){c(function(x){return Object.assign({},x,g)})},[]),p=m.useCallback(function(){d.current&&(d.current=!1,i(u.current.color))},[i]);return[l,f,p]}var e0=typeof window<"u"?m.useLayoutEffect:m.useEffect,t0=function(){return typeof __webpack_nonce__<"u"?__webpack_nonce__:void 0},ch=new WeakMap,Av=function(e){e0(function(){var t=e.current;if(typeof document<"u"&&t){var r=t.getRootNode?t.getRootNode():t.ownerDocument,o=r&&("head"in r||"host"in r)?r:t.ownerDocument;if(!ch.has(o)){var n="head"in o?o.head:o,i=(n.ownerDocument||document).createElement("style");i.innerHTML=`.react-colorful{position:relative;display:flex;flex-direction:column;width:200px;height:200px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.react-colorful__saturation{position:relative;flex-grow:1;border-color:transparent;border-bottom:12px solid #000;border-radius:8px 8px 0 0;background-image:linear-gradient(0deg,#000,transparent),linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.react-colorful__alpha-gradient,.react-colorful__pointer-fill{content:"";position:absolute;left:0;top:0;right:0;bottom:0;pointer-events:none;border-radius:inherit}.react-colorful__alpha-gradient,.react-colorful__saturation{box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}.react-colorful__alpha,.react-colorful__hue{position:relative;height:24px}.react-colorful__hue{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.react-colorful__last-control{border-radius:0 0 8px 8px}.react-colorful__interactive{position:absolute;left:0;top:0;right:0;bottom:0;border-radius:inherit;outline:none;touch-action:none}.react-colorful__pointer{position:absolute;z-index:1;box-sizing:border-box;width:28px;height:28px;transform:translate(-50%,-50%);background-color:#fff;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2)}.react-colorful__interactive:focus .react-colorful__pointer{transform:translate(-50%,-50%) scale(1.1)}.react-colorful__alpha,.react-colorful__alpha-pointer{background-color:#fff;background-image:url('data:image/svg+xml;charset=utf-8,')}.react-colorful__saturation-pointer{z-index:3}.react-colorful__hue-pointer{z-index:2}`;var a=t0();a&&i.setAttribute("nonce",a),ch.set(o,i),n.appendChild(i)}}},[])},r0=function(e){var t=e.className,r=e.colorModel,o=e.color,n=o===void 0?r.defaultColor:o,i=e.onChange,a=e.onChangeEnd,l=vf(e,["className","colorModel","color","onChange","onChangeEnd"]),c=m.useRef(null);Av(c);var u=Mv(r,n,i,a),d=u[0],f=u[1],p=u[2],g=ja(["react-colorful",t]);return Re.createElement("div",pi({},l,{ref:c,className:g}),Re.createElement(Cv,{hsva:d,onChange:f,onChangeEnd:p}),Re.createElement(Lv,{hue:d.h,onChange:f,onChangeEnd:p,className:"react-colorful__last-control"}))},o0={defaultColor:"000",toHsva:Tv,fromHsva:function(e){return Rv({h:e.h,s:e.s,v:e.v,a:1})},equal:Ov},n0=function(e){return Re.createElement(r0,pi({},e,{colorModel:o0}))},i0=function(e){var t=e.className,r=e.hsva,o=e.onChange,n=e.onChangeEnd,i={backgroundImage:"linear-gradient(90deg, "+Bc(Object.assign({},r,{a:0}))+", "+Bc(Object.assign({},r,{a:1}))+")"},a=ja(["react-colorful__alpha",t]),l=pt(100*r.a);return Re.createElement("div",{className:a},Re.createElement("div",{className:"react-colorful__alpha-gradient",style:i}),Re.createElement(mf,{onMove:function(c){o({a:c.left})},onKey:function(c){o({a:oi(r.a+c.left)})},onEnd:n,"aria-label":"Alpha","aria-valuetext":l+"%","aria-valuenow":l,"aria-valuemin":"0","aria-valuemax":"100"},Re.createElement(xf,{className:"react-colorful__alpha-pointer",left:r.a,color:Bc(r)})))},a0=function(e){var t=e.className,r=e.colorModel,o=e.color,n=o===void 0?r.defaultColor:o,i=e.onChange,a=e.onChangeEnd,l=vf(e,["className","colorModel","color","onChange","onChangeEnd"]),c=m.useRef(null);Av(c);var u=Mv(r,n,i,a),d=u[0],f=u[1],p=u[2],g=ja(["react-colorful",t]);return Re.createElement("div",pi({},l,{ref:c,className:g}),Re.createElement(Cv,{hsva:d,onChange:f,onChangeEnd:p}),Re.createElement(Lv,{hue:d.h,onChange:f,onChangeEnd:p}),Re.createElement(i0,{hsva:d,onChange:f,onChangeEnd:p,className:"react-colorful__last-control"}))},l0={defaultColor:"0001",toHsva:Tv,fromHsva:Rv,equal:Ov},s0=function(e){return Re.createElement(a0,pi({},e,{colorModel:l0}))},Dv={},dt=fr&&fr.__assign||function(){return dt=Object.assign||function(e){for(var t,r=1,o=arguments.length;r<\/script>",e=e.removeChild(e.firstChild)):typeof o.is=="string"?e=a.createElement(r,{is:o.is}):(e=a.createElement(r),r==="select"&&(a=e,o.multiple?a.multiple=!0:o.size&&(a.size=o.size))):e=a.createElementNS(e,r),e[Ir]=t,e[da]=o,Zb(e,t,!1,!1),t.stateNode=e;e:{switch(a=fu(r,o),r){case"dialog":Pe("cancel",e),Pe("close",e),n=o;break;case"iframe":case"object":case"embed":Pe("load",e),n=o;break;case"video":case"audio":for(n=0;nti&&(t.flags|=128,o=!0,Ti(i,!1),t.lanes=4194304)}else{if(!o)if(e=Jl(a),e!==null){if(t.flags|=128,o=!0,r=e.updateQueue,r!==null&&(t.updateQueue=r,t.flags|=4),Ti(i,!0),i.tail===null&&i.tailMode==="hidden"&&!a.alternate&&!Ve)return wt(t),null}else 2*Ze()-i.renderingStartTime>ti&&r!==1073741824&&(t.flags|=128,o=!0,Ti(i,!1),t.lanes=4194304);i.isBackwards?(a.sibling=t.child,t.child=a):(r=i.last,r!==null?r.sibling=a:t.child=a,i.last=a)}return i.tail!==null?(t=i.tail,i.rendering=t,i.tail=t.sibling,i.renderingStartTime=Ze(),t.sibling=null,r=$e.current,Be($e,o?r&1|2:r&1),t):(wt(t),null);case 22:case 23:return nf(),o=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==o&&(t.flags|=8192),o&&t.mode&1?Gt&1073741824&&(wt(t),t.subtreeFlags&6&&(t.flags|=8192)):wt(t),null;case 24:return null;case 25:return null}throw Error(K(156,t.tag))}function mw(e,t){switch(Pd(t),t.tag){case 1:return Vt(t.type)&&Hl(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Qn(),ze(Ut),ze(Nt),Xd(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return Yd(t),null;case 13:if(ze($e),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(K(340));Jn()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return ze($e),null;case 4:return Qn(),null;case 10:return Vd(t.type._context),null;case 22:case 23:return nf(),null;case 24:return null;default:return null}}var ol=!1,St=!1,xw=typeof WeakSet=="function"?WeakSet:Set,ae=null;function Bn(e,t){var r=e.ref;if(r!==null)if(typeof r=="function")try{r(null)}catch(o){Ge(e,t,o)}else r.current=null}function zu(e,t,r){try{r()}catch(o){Ge(e,t,o)}}var Yp=!1;function yw(e,t){if(wu=Fl,e=ib(),jd(e)){if("selectionStart"in e)var r={start:e.selectionStart,end:e.selectionEnd};else e:{r=(r=e.ownerDocument)&&r.defaultView||window;var o=r.getSelection&&r.getSelection();if(o&&o.rangeCount!==0){r=o.anchorNode;var n=o.anchorOffset,i=o.focusNode;o=o.focusOffset;try{r.nodeType,i.nodeType}catch{r=null;break e}var a=0,l=-1,c=-1,u=0,d=0,f=e,p=null;t:for(;;){for(var g;f!==r||n!==0&&f.nodeType!==3||(l=a+n),f!==i||o!==0&&f.nodeType!==3||(c=a+o),f.nodeType===3&&(a+=f.nodeValue.length),(g=f.firstChild)!==null;)p=f,f=g;for(;;){if(f===e)break t;if(p===r&&++u===n&&(l=a),p===i&&++d===o&&(c=a),(g=f.nextSibling)!==null)break;f=p,p=f.parentNode}f=g}r=l===-1||c===-1?null:{start:l,end:c}}else r=null}r=r||{start:0,end:0}}else r=null;for(ku={focusedElem:e,selectionRange:r},Fl=!1,ae=t;ae!==null;)if(t=ae,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,ae=e;else for(;ae!==null;){t=ae;try{var x=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(x!==null){var w=x.memoizedProps,k=x.memoizedState,b=t.stateNode,h=b.getSnapshotBeforeUpdate(t.elementType===t.type?w:mr(t.type,w),k);b.__reactInternalSnapshotBeforeUpdate=h}break;case 3:var v=t.stateNode.containerInfo;v.nodeType===1?v.textContent="":v.nodeType===9&&v.documentElement&&v.removeChild(v.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(K(163))}}catch(_){Ge(t,t.return,_)}if(e=t.sibling,e!==null){e.return=t.return,ae=e;break}ae=t.return}return x=Yp,Yp=!1,x}function $i(e,t,r){var o=t.updateQueue;if(o=o!==null?o.lastEffect:null,o!==null){var n=o=o.next;do{if((n.tag&e)===e){var i=n.destroy;n.destroy=void 0,i!==void 0&&zu(t,r,i)}n=n.next}while(n!==o)}}function Ps(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 o=r.create;r.destroy=o()}r=r.next}while(r!==t)}}function Fu(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 tv(e){var t=e.alternate;t!==null&&(e.alternate=null,tv(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Ir],delete t[da],delete t[Ru],delete t[rw],delete t[ow])),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 rv(e){return e.tag===5||e.tag===3||e.tag===4}function Xp(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||rv(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 Uu(e,t,r){var o=e.tag;if(o===5||o===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=Wl));else if(o!==4&&(e=e.child,e!==null))for(Uu(e,t,r),e=e.sibling;e!==null;)Uu(e,t,r),e=e.sibling}function Vu(e,t,r){var o=e.tag;if(o===5||o===6)e=e.stateNode,t?r.insertBefore(e,t):r.appendChild(e);else if(o!==4&&(e=e.child,e!==null))for(Vu(e,t,r),e=e.sibling;e!==null;)Vu(e,t,r),e=e.sibling}var bt=null,xr=!1;function so(e,t,r){for(r=r.child;r!==null;)ov(e,t,r),r=r.sibling}function ov(e,t,r){if(Pr&&typeof Pr.onCommitFiberUnmount=="function")try{Pr.onCommitFiberUnmount(Ns,r)}catch{}switch(r.tag){case 5:St||Bn(r,t);case 6:var o=bt,n=xr;bt=null,so(e,t,r),bt=o,xr=n,bt!==null&&(xr?(e=bt,r=r.stateNode,e.nodeType===8?e.parentNode.removeChild(r):e.removeChild(r)):bt.removeChild(r.stateNode));break;case 18:bt!==null&&(xr?(e=bt,r=r.stateNode,e.nodeType===8?Sc(e.parentNode,r):e.nodeType===1&&Sc(e,r),aa(e)):Sc(bt,r.stateNode));break;case 4:o=bt,n=xr,bt=r.stateNode.containerInfo,xr=!0,so(e,t,r),bt=o,xr=n;break;case 0:case 11:case 14:case 15:if(!St&&(o=r.updateQueue,o!==null&&(o=o.lastEffect,o!==null))){n=o=o.next;do{var i=n,a=i.destroy;i=i.tag,a!==void 0&&(i&2||i&4)&&zu(r,t,a),n=n.next}while(n!==o)}so(e,t,r);break;case 1:if(!St&&(Bn(r,t),o=r.stateNode,typeof o.componentWillUnmount=="function"))try{o.props=r.memoizedProps,o.state=r.memoizedState,o.componentWillUnmount()}catch(l){Ge(r,t,l)}so(e,t,r);break;case 21:so(e,t,r);break;case 22:r.mode&1?(St=(o=St)||r.memoizedState!==null,so(e,t,r),St=o):so(e,t,r);break;default:so(e,t,r)}}function Gp(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var r=e.stateNode;r===null&&(r=e.stateNode=new xw),t.forEach(function(o){var n=Cw.bind(null,e,o);r.has(o)||(r.add(o),o.then(n,n))})}}function vr(e,t){var r=t.deletions;if(r!==null)for(var o=0;on&&(n=a),o&=~i}if(o=n,o=Ze()-o,o=(120>o?120:480>o?480:1080>o?1080:1920>o?1920:3e3>o?3e3:4320>o?4320:1960*ww(o/1960))-o,10e?16:e,mo===null)var o=!1;else{if(e=mo,mo=null,rs=0,ke&6)throw Error(K(331));var n=ke;for(ke|=4,ae=e.current;ae!==null;){var i=ae,a=i.child;if(ae.flags&16){var l=i.deletions;if(l!==null){for(var c=0;cZe()-rf?qo(e,0):tf|=r),Wt(e,t)}function dv(e,t){t===0&&(e.mode&1?(t=Ga,Ga<<=1,!(Ga&130023424)&&(Ga=4194304)):t=1);var r=At();e=no(e,t),e!==null&&(Na(e,t,r),Wt(e,r))}function Lw(e){var t=e.memoizedState,r=0;t!==null&&(r=t.retryLane),dv(e,r)}function Cw(e,t){var r=0;switch(e.tag){case 13:var o=e.stateNode,n=e.memoizedState;n!==null&&(r=n.retryLane);break;case 19:o=e.stateNode;break;default:throw Error(K(314))}o!==null&&o.delete(t),dv(e,r)}var fv;fv=function(e,t,r){if(e!==null)if(e.memoizedProps!==t.pendingProps||Ut.current)Ft=!0;else{if(!(e.lanes&r)&&!(t.flags&128))return Ft=!1,bw(e,t,r);Ft=!!(e.flags&131072)}else Ft=!1,Ve&&t.flags&1048576&&bb(t,Xl,t.index);switch(t.lanes=0,t.tag){case 2:var o=t.type;wl(e,t),e=t.pendingProps;var n=qn(t,Nt.current);Wn(t,r),n=Kd(null,t,o,e,n,r);var i=qd();return t.flags|=1,typeof n=="object"&&n!==null&&typeof n.render=="function"&&n.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,Vt(o)?(i=!0,$l(t)):i=!1,t.memoizedState=n.state!==null&&n.state!==void 0?n.state:null,Hd(t),n.updater=Bs,t.stateNode=n,n._reactInternals=t,Mu(t,o,e,r),t=Iu(null,t,o,!0,i,r)):(t.tag=0,Ve&&i&&Bd(t),Ot(null,t,n,r),t=t.child),t;case 16:o=t.elementType;e:{switch(wl(e,t),e=t.pendingProps,n=o._init,o=n(o._payload),t.type=o,n=t.tag=Ow(o),e=mr(o,e),n){case 0:t=Du(null,t,o,e,r);break e;case 1:t=Wp(null,t,o,e,r);break e;case 11:t=Up(null,t,o,e,r);break e;case 14:t=Vp(null,t,o,mr(o.type,e),r);break e}throw Error(K(306,o,""))}return t;case 0:return o=t.type,n=t.pendingProps,n=t.elementType===o?n:mr(o,n),Du(e,t,o,n,r);case 1:return o=t.type,n=t.pendingProps,n=t.elementType===o?n:mr(o,n),Wp(e,t,o,n,r);case 3:e:{if(Kb(t),e===null)throw Error(K(387));o=t.pendingProps,i=t.memoizedState,n=i.element,wb(e,t),ql(t,o,null,r);var a=t.memoizedState;if(o=a.element,i.isDehydrated)if(i={element:o,isDehydrated:!1,cache:a.cache,pendingSuspenseBoundaries:a.pendingSuspenseBoundaries,transitions:a.transitions},t.updateQueue.baseState=i,t.memoizedState=i,t.flags&256){n=ei(Error(K(423)),t),t=Hp(e,t,o,r,n);break e}else if(o!==n){n=ei(Error(K(424)),t),t=Hp(e,t,o,r,n);break e}else for(Jt=To(t.stateNode.containerInfo.firstChild),Zt=t,Ve=!0,yr=null,r=yb(t,null,o,r),t.child=r;r;)r.flags=r.flags&-3|4096,r=r.sibling;else{if(Jn(),o===n){t=io(e,t,r);break e}Ot(e,t,o,r)}t=t.child}return t;case 5:return kb(t),e===null&&Cu(t),o=t.type,n=t.pendingProps,i=e!==null?e.memoizedProps:null,a=n.children,Eu(o,n)?a=null:i!==null&&Eu(o,i)&&(t.flags|=32),Gb(e,t),Ot(e,t,a,r),t.child;case 6:return e===null&&Cu(t),null;case 13:return qb(e,t,r);case 4:return $d(t,t.stateNode.containerInfo),o=t.pendingProps,e===null?t.child=Zn(t,null,o,r):Ot(e,t,o,r),t.child;case 11:return o=t.type,n=t.pendingProps,n=t.elementType===o?n:mr(o,n),Up(e,t,o,n,r);case 7:return Ot(e,t,t.pendingProps,r),t.child;case 8:return Ot(e,t,t.pendingProps.children,r),t.child;case 12:return Ot(e,t,t.pendingProps.children,r),t.child;case 10:e:{if(o=t.type._context,n=t.pendingProps,i=t.memoizedProps,a=n.value,Be(Gl,o._currentValue),o._currentValue=a,i!==null)if(Tr(i.value,a)){if(i.children===n.children&&!Ut.current){t=io(e,t,r);break e}}else for(i=t.child,i!==null&&(i.return=t);i!==null;){var l=i.dependencies;if(l!==null){a=i.child;for(var c=l.firstContext;c!==null;){if(c.context===o){if(i.tag===1){c=Qr(-1,r&-r),c.tag=2;var u=i.updateQueue;if(u!==null){u=u.shared;var d=u.pending;d===null?c.next=c:(c.next=d.next,d.next=c),u.pending=c}}i.lanes|=r,c=i.alternate,c!==null&&(c.lanes|=r),Nu(i.return,r,t),l.lanes|=r;break}c=c.next}}else if(i.tag===10)a=i.type===t.type?null:i.child;else if(i.tag===18){if(a=i.return,a===null)throw Error(K(341));a.lanes|=r,l=a.alternate,l!==null&&(l.lanes|=r),Nu(a,r,t),a=i.sibling}else a=i.child;if(a!==null)a.return=i;else for(a=i;a!==null;){if(a===t){a=null;break}if(i=a.sibling,i!==null){i.return=a.return,a=i;break}a=a.return}i=a}Ot(e,t,n.children,r),t=t.child}return t;case 9:return n=t.type,o=t.pendingProps.children,Wn(t,r),n=pr(n),o=o(n),t.flags|=1,Ot(e,t,o,r),t.child;case 14:return o=t.type,n=mr(o,t.pendingProps),n=mr(o.type,n),Vp(e,t,o,n,r);case 15:return Yb(e,t,t.type,t.pendingProps,r);case 17:return o=t.type,n=t.pendingProps,n=t.elementType===o?n:mr(o,n),wl(e,t),t.tag=1,Vt(o)?(e=!0,$l(t)):e=!1,Wn(t,r),Wb(t,o,n),Mu(t,o,n,r),Iu(null,t,o,!0,e,r);case 19:return Jb(e,t,r);case 22:return Xb(e,t,r)}throw Error(K(156,t.tag))};function pv(e,t){return Fg(e,t)}function Nw(e,t,r,o){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=o,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function ur(e,t,r,o){return new Nw(e,t,r,o)}function lf(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Ow(e){if(typeof e=="function")return lf(e)?1:0;if(e!=null){if(e=e.$$typeof,e===Td)return 11;if(e===Rd)return 14}return 2}function Co(e,t){var r=e.alternate;return r===null?(r=ur(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 Tl(e,t,r,o,n,i){var a=2;if(o=e,typeof e=="function")lf(e)&&(a=1);else if(typeof e=="string")a=5;else e:switch(e){case Ln:return Jo(r.children,n,i,t);case Ed:a=8,n|=8;break;case ru:return e=ur(12,r,t,n|2),e.elementType=ru,e.lanes=i,e;case ou:return e=ur(13,r,t,n),e.elementType=ou,e.lanes=i,e;case nu:return e=ur(19,r,t,n),e.elementType=nu,e.lanes=i,e;case kg:return Fs(r,n,i,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case _g:a=10;break e;case wg:a=9;break e;case Td:a=11;break e;case Rd:a=14;break e;case uo:a=16,o=null;break e}throw Error(K(130,e==null?e:typeof e,""))}return t=ur(a,r,t,n),t.elementType=e,t.type=o,t.lanes=i,t}function Jo(e,t,r,o){return e=ur(7,e,o,t),e.lanes=r,e}function Fs(e,t,r,o){return e=ur(22,e,o,t),e.elementType=kg,e.lanes=r,e.stateNode={isHidden:!1},e}function Ic(e,t,r){return e=ur(6,e,null,t),e.lanes=r,e}function jc(e,t,r){return t=ur(4,e.children!==null?e.children:[],e.key,t),t.lanes=r,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Mw(e,t,r,o,n){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=bc(0),this.expirationTimes=bc(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=bc(0),this.identifierPrefix=o,this.onRecoverableError=n,this.mutableSourceEagerHydrationData=null}function sf(e,t,r,o,n,i,a,l,c){return e=new Mw(e,t,r,l,c),t===1?(t=1,i===!0&&(t|=8)):t=0,i=ur(3,null,null,t),e.current=i,i.stateNode=e,i.memoizedState={element:o,isDehydrated:r,cache:null,transitions:null,pendingSuspenseBoundaries:null},Hd(i),e}function Aw(e,t,r){var o=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(vv)}catch(e){console.error(e)}}vv(),vg.exports=er;var Vr=vg.exports,fi,rh=Vr;fi=ea.createRoot=rh.createRoot,ea.hydrateRoot=rh.hydrateRoot;function ct(){return uy}function Jr(){return dy}function mv(e){if(!e||typeof e!="object")return null;const t=e,r=t.rootGraph;if(r&&typeof r=="object")return r;const o=t.graph;return o&&typeof o=="object"?o:e}function xv(e){return e._nodes??e.nodes??[]}function Pw(e){return e._groups??e.groups??[]}function zw(e){if(e.subgraph&&typeof e.subgraph=="object")return e.subgraph;if(typeof e.getSubgraph=="function")try{return e.getSubgraph()??null}catch{return null}return null}function yv(e,t){const r=new Set,o=[{graph:e,path:[]}];for(;o.length;){const{graph:n,path:i}=o.pop(),a=n;if(!r.has(a)){r.add(a),t(n,i);for(const l of xv(n)){const c=zw(l);c&&o.push({graph:c,path:i.concat([{node:l,graph:n,depth:i.length+1}])})}}}}function Fw(){return globalThis.crypto?.randomUUID?.()??`bv-group-${Date.now()}-${Math.random().toString(16).slice(2)}`}function Uw(e,t){const r=e;r.flags??(r.flags={});let o=typeof r.flags.bvGroupId=="string"?r.flags.bvGroupId:"";if(!o||t.has(o)){do o=Fw();while(t.has(o));r.flags.bvGroupId=o}return t.add(o),o}function is(e){const t=mv(e);if(!t)return[];const r=[],o=new Set;return yv(t,(n,i)=>{for(const a of Pw(n)){const c=[...i.map(u=>String(u.node.title||u.node.type||u.node.id)),String(a.title||"Untitled Group")].join(" / ");r.push({group:a,graph:n,path:i,id:Uw(a,o),pathLabel:c})}}),r}function Vw(e,t){const r=mv(e);if(!r)return[];const o=[];return yv(r,(n,i)=>{for(const a of xv(n))_v(a,t)&&o.push({node:a,graph:n,path:i})}),o}function _v(e,t){const r=String(t);return[e.type,e.comfyClass,e.title,e.constructor?.name].filter(n=>typeof n=="string"&&n.length>0).map(String).includes(r)}const ri="bv-control-config-changed";function Ww(){return{version:2,forceActive:!1,controls:[]}}function ff(e){var r;const t=ct()?.rootGraph;t&&(t.extra??(t.extra={}),(r=t.extra).bv_settings??(r.bv_settings={}),t.extra.bv_settings.controlConfig=e,t.setDirtyCanvas?.(!0,!0),window.dispatchEvent(new CustomEvent(ri,{detail:e})))}function sn(){const e=ct()?.rootGraph?.extra?.bv_settings?.controlConfig;return e?.version===2?e:Ww()}function Hw(e,t=()=>!1){const r=e.group.nodes??e.group._nodes;if(Array.isArray(r)){const l=r.filter(c=>c&&typeof c=="object"&&!t(c));if(l.length>0)return l}const[o,n]=e.group.pos||[0,0],[i,a]=e.group.size||[0,0];return(e.graph._nodes??e.graph.nodes??[]).filter(l=>{if(t(l))return!1;const[c,u]=l.pos||[0,0],[d,f]=l.size||[0,0];return c+d/2>=o&&c+d/2<=o+i&&u+f/2>=n&&u+f/2<=n+a})}const oh={activate:3,mute:2,bypass:1},nh=e=>e.charAt(0).toUpperCase()+e.slice(1);function wv(e){const t=new Map;for(const o of e.controls??[])if(o.enabled)for(const n of o.assignments??[]){if(n.unresolved)continue;const i=t.get(n.groupId)??[];i.push({controlId:o.id,controlName:o.name,action:n.action,groupId:n.groupId,groupPath:n.groupPath||n.groupTitle||n.groupId}),t.set(n.groupId,i)}const r=[];for(const o of t.values()){if(new Set(o.map(i=>i.action)).size<2)continue;const n=o.reduce((i,a)=>oh[a.action]>oh[i]?a.action:i,o[0].action);r.push({groupId:o[0].groupId,groupPath:o[0].groupPath,winnerAction:n,entries:o})}return r}function $w(e){if(!e.length)return"✓ No active conflicts";if(e.length>1)return`⚠ ${e.length} active control conflicts`;const t=e[0],r=[...new Set(t.entries.filter(o=>o.action!==t.winnerAction).map(o=>o.action))].join(", ");return`⚠ ${t.groupPath}: ${nh(t.winnerAction)} overrides ${r.split(", ").map(nh).join(", ")}`}function kv({children:e}){const t=m.useRef();if(!t.current){const r=document.createElement("div");r.className="bv-ui bv-ui-portal",t.current=r}return m.useEffect(()=>(document.body.append(t.current),()=>t.current?.remove()),[]),Vr.createPortal(e,t.current)}function jo({open:e,anchor:t,children:r,onClose:o,className:n="",matchWidth:i=!1}){const a=m.useRef(null),[l,c]=m.useState({left:0,top:0,visibility:"hidden"});return m.useLayoutEffect(()=>{if(!e)return;const u=()=>{const p=t.current?.getBoundingClientRect(),g=a.current?.getBoundingClientRect();if(!p||!g)return;const x=8,w=6,k=i?Math.min(Math.max(p.width,240),window.innerWidth-x*2):void 0,b=k??g.width,h=Math.max(x,Math.min(p.left,window.innerWidth-b-x)),v=p.bottom+w,_=v+g.height<=window.innerHeight-x?v:Math.max(x,p.top-g.height-w);c({left:h,top:_,width:k,visibility:"visible"})};u();const d=requestAnimationFrame(u),f=new ResizeObserver(u);return t.current&&f.observe(t.current),a.current&&f.observe(a.current),window.addEventListener("resize",u),window.addEventListener("scroll",u,!0),()=>{cancelAnimationFrame(d),f.disconnect(),window.removeEventListener("resize",u),window.removeEventListener("scroll",u,!0)}},[t,i,e]),m.useEffect(()=>{if(!e)return;const u=f=>{const p=f.target;!t.current?.contains(p)&&!a.current?.contains(p)&&o?.()},d=f=>{f.key==="Escape"&&o?.()};return document.addEventListener("pointerdown",u),document.addEventListener("keydown",d),()=>{document.removeEventListener("pointerdown",u),document.removeEventListener("keydown",d)}},[t,o,e]),e?s.jsx(kv,{children:s.jsx("div",{ref:a,className:`bv-anchored-popover ${n}`.trim(),style:l,children:r})}):null}function pf({density:e="compact",className:t="",children:r}){return s.jsx("div",{className:`bv-density-${e} ${t}`.trim(),children:r})}function oe({intent:e="secondary",icon:t,iconOnly:r=!1,loading:o=!1,density:n,className:i="",children:a,disabled:l,...c}){return s.jsxs("button",{...c,disabled:l||o,className:`bv-button ${e} ${n?`bv-density-${n}`:""} ${r?"icon-only":""} ${i}`.trim(),children:[o?s.jsx("span",{className:"bv-spinner"}):r?t??a:t,!r&&a]})}function Yw({actions:e,onClose:t}){return s.jsx("div",{className:"bv-menu-content",role:"menu",children:e.map(r=>s.jsxs(Re.Fragment,{children:[r.separatorBefore&&s.jsx("hr",{}),s.jsxs("button",{type:"button",role:"menuitem",disabled:r.disabled,className:r.danger?"danger":"",onClick:()=>{r.onSelect(),t?.()},children:[r.icon,s.jsx("span",{children:r.label}),r.shortcut&&s.jsx("kbd",{children:r.shortcut})]})]},r.id))})}function hf({label:e,actions:t,intent:r="secondary",icon:o,density:n}){const[i,a]=m.useState(!1),l=m.useRef(null);return s.jsxs("div",{className:"bv-menu-button",ref:l,children:[s.jsxs(oe,{intent:r,icon:o,density:n,"aria-haspopup":"menu","aria-expanded":i,onClick:()=>a(!i),children:[e,s.jsx("span",{className:"bv-chevron"})]}),s.jsx(jo,{open:i,anchor:l,onClose:()=>a(!1),className:"bv-menu",children:s.jsx(Yw,{actions:t,onClose:()=>a(!1)})})]})}function Xw({items:e,orientation:t="horizontal",label:r="Tools",overflow:o=[],density:n}){return s.jsxs("div",{className:`bv-toolbar ${t}`,role:"toolbar","aria-orientation":t,"aria-label":r,children:[e.map((i,a)=>s.jsxs(Re.Fragment,{children:[a>0&&i.group!==e[a-1].group&&s.jsx("span",{className:"bv-toolbar-divider"}),s.jsx(oe,{intent:"ghost",density:n,icon:i.icon,iconOnly:t==="vertical","aria-label":i.label,"aria-pressed":i.active,disabled:i.disabled,className:i.active?"active":"",onClick:i.onSelect,children:i.label})]},i.id)),o.length>0&&s.jsx(hf,{label:"More",actions:o,intent:"ghost",density:n})]})}function ih({items:e,compact:t=!1}){return s.jsx("dl",{className:`bv-definition-list ${t?"compact":""}`,children:e.map((r,o)=>s.jsxs("div",{className:"bv-definition-row",children:[s.jsx("dt",{children:r.term}),s.jsx("dd",{children:r.description})]},o))})}function $s({label:e,summary:t,icon:r,children:o,popover:n,className:i=""}){const[a,l]=m.useState(!1),c=m.useRef(null);return s.jsxs("div",{ref:c,className:`bv-adaptive-field ${i}`.trim(),children:[s.jsx("div",{className:"bv-adaptive-inline",children:o}),s.jsxs(oe,{type:"button",intent:"secondary",className:"bv-adaptive-trigger",icon:r,"aria-haspopup":"dialog","aria-expanded":a,onClick:()=>l(!0),children:[s.jsx("span",{className:"bv-adaptive-summary",children:t}),s.jsx("span",{"aria-hidden":"true",children:"↗"})]}),s.jsxs(jo,{open:a,anchor:c,onClose:()=>l(!1),className:"bv-adaptive-popover",children:[s.jsxs("header",{children:[s.jsx("strong",{children:e}),s.jsx(oe,{type:"button",intent:"ghost",icon:"×",iconOnly:!0,"aria-label":`Close ${e} editor`,onClick:()=>l(!1)})]}),s.jsx("div",{children:n})]})]})}function Da({open:e,title:t,description:r,children:o,footer:n,onClose:i,modal:a=!0,size:l="medium"}){return e?s.jsx(kv,{children:s.jsx("div",{className:`bv-dialog-layer ${a?"modal":"modeless"}`,role:a?"presentation":void 0,onPointerDown:c=>{a&&c.target===c.currentTarget&&i()},children:s.jsxs("section",{className:`bv-dialog ${l}`,role:"dialog","aria-modal":a,"aria-label":t,children:[s.jsxs("header",{children:[s.jsxs("div",{children:[s.jsx("h2",{children:t}),r&&s.jsx("p",{children:r})]}),s.jsx(oe,{intent:"ghost",icon:"×",iconOnly:!0,"aria-label":"Close",onClick:i})]}),s.jsx("div",{className:"bv-dialog-body",children:o}),n&&s.jsx("footer",{children:n})]})})}):null}function gf({open:e,editorName:t,onSave:r,onDiscard:o,onKeep:n}){return s.jsx(Da,{open:e,title:"Unsaved changes",description:`${t} contains execution changes that have not been saved.`,onClose:n,size:"small",footer:s.jsxs(s.Fragment,{children:[s.jsx(oe,{intent:"ghost",onClick:n,children:"Keep editing"}),s.jsx(oe,{intent:"secondary",onClick:o,children:"Discard"}),s.jsx(oe,{intent:"primary",onClick:r,children:"Save"})]}),children:s.jsx("p",{children:"Save the current draft, discard it, or return to the editor."})})}function bf(){const[e,t]=m.useState(null),r=n=>t({confirmLabel:"Continue",danger:!1,...n}),o=s.jsx(Da,{open:!!e,title:e?.title??"Confirm action",onClose:()=>t(null),size:"small",footer:s.jsxs(s.Fragment,{children:[s.jsx(oe,{intent:"ghost",onClick:()=>t(null),children:"Cancel"}),s.jsx(oe,{intent:e?.danger?"danger":"primary",onClick:()=>{const n=e?.action;t(null),n?.()},children:e?.confirmLabel})]}),children:e?.message&&s.jsx("p",{children:e.message})});return{confirm:r,dialog:o}}function ah({trigger:e,children:t,open:r,onOpen:o}){const[n,i]=m.useState(!1),a=m.useRef(null),l=r??n,c=u=>{i(u),o?.(u)};return s.jsxs("span",{ref:a,className:"bv-popover-host",children:[e({open:l,toggle:()=>c(!l)}),s.jsx(jo,{open:l,anchor:a,onClose:()=>c(!1),className:"bv-popover",children:t})]})}function Ia({items:e,onReorder:t,onRemove:r,renderActions:o,initialExpanded:n=[]}){const[i,a]=m.useState(n),[l,c]=m.useState();return s.jsx("div",{className:"bv-sortable-list",children:e.map(u=>s.jsxs("article",{draggable:!u.disabled,onDragStart:()=>c(u.id),onDragOver:d=>d.preventDefault(),onDrop:()=>{if(!l||l===u.id)return;const d=[...e],f=d.findIndex(x=>x.id===l),p=d.findIndex(x=>x.id===u.id),[g]=d.splice(f,1);d.splice(p,0,g),t(d),c(void 0)},children:[s.jsxs("header",{children:[s.jsx("button",{type:"button",className:"bv-drag-handle","aria-label":`Reorder ${String(u.title)}`,children:"⠿"}),s.jsxs("div",{children:[s.jsx("strong",{children:u.title}),u.description&&s.jsx("small",{children:u.description})]}),o?.(u),s.jsxs("span",{className:"bv-segmented-actions",children:[r&&s.jsx(oe,{intent:"ghost",iconOnly:!0,"aria-label":`Remove ${String(u.title)}`,title:"Remove",onClick:()=>r(u.id),children:"×"}),u.content&&s.jsx(oe,{intent:"ghost",icon:s.jsx("span",{className:"bv-chevron"}),iconOnly:!0,"aria-label":`${i.includes(u.id)?"Collapse":"Expand"} ${String(u.title)}`,"aria-expanded":i.includes(u.id),onClick:()=>a(d=>d.includes(u.id)?d.filter(f=>f!==u.id):[...d,u.id])})]})]}),u.summary&&s.jsx("div",{className:"bv-sortable-summary",children:u.summary}),u.content&&i.includes(u.id)&&s.jsx("div",{className:"bv-sortable-content",children:u.content})]},u.id))})}const it=Re.forwardRef(function({type:t="button",...r},o){return s.jsx("button",{...r,type:t,ref:o})}),Gw=Re.forwardRef(function(t,r){return s.jsx("input",{...t,ref:r})});function Fr({tone:e="neutral",title:t,children:r,icon:o,actions:n,onClose:i}){return s.jsxs("aside",{className:`bv-callout ${e}`,role:e==="danger"?"alert":"status",children:[o&&s.jsx("span",{className:"bv-callout-icon",children:o}),s.jsxs("div",{children:[t&&s.jsx("strong",{children:t}),s.jsx("div",{children:r}),n&&s.jsx("div",{className:"bv-callout-actions",children:n})]}),i&&s.jsx(oe,{intent:"ghost",iconOnly:!0,"aria-label":"Close",onClick:i,children:"×"})]})}function Ev({children:e,tone:t="neutral",dot:r=!1}){return s.jsx("span",{className:`bv-badge ${t} ${r?"dot":""}`,children:e})}function Ys({icon:e,title:t,description:r,actions:o}){return s.jsxs("div",{className:"bv-empty-state",children:[e,s.jsx("strong",{children:t}),r&&s.jsx("p",{children:r}),o]})}function Kw({tone:e="neutral",title:t,children:r,onClose:o,duration:n=0}){const i=m.useRef(),a=m.useCallback(()=>{i.current&&window.clearTimeout(i.current)},[]),l=m.useCallback(()=>{a(),n&&(i.current=window.setTimeout(o,n))},[n,o,a]);return m.useEffect(()=>(l(),a),[l,a]),s.jsxs("div",{className:`bv-toast ${e}`,role:"status",tabIndex:0,onPointerEnter:a,onPointerLeave:l,onFocus:a,onBlur:l,children:[s.jsxs("div",{children:[s.jsx("strong",{children:t}),r&&s.jsx("p",{children:r})]}),s.jsx(oe,{intent:"ghost",iconOnly:!0,"aria-label":"Dismiss",onClick:o,children:"×"})]})}function pi(){return(pi=Object.assign||function(e){for(var t=1;t=0||(n[r]=e[r]);return n}function Gi(e){var t=m.useRef(e),r=m.useRef(function(o){t.current&&t.current(o)});return t.current=e,r.current}var oi=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=1),e>r?r:e0:v.buttons>0)&&i.current?a(lh(i.current,v,u.current)):(h(!1),c())},b=function(){h(!1),c()};function h(v){var _=d.current,y=Xu(i.current),T=v?y.addEventListener:y.removeEventListener;T(_?"touchmove":"mousemove",k),T(_?"touchend":"mouseup",b)}return[function(v){var _=v.nativeEvent,y=i.current;if(y&&(sh(_),!function(S,P){return P&&!Ki(S)}(_,d.current)&&y)){if(Ki(_)){d.current=!0;var T=_.changedTouches||[];T.length&&(u.current=T[0].identifier)}y.focus(),a(lh(y,_,u.current)),h(!0)}},function(v){var _=v.which||v.keyCode;_<37||_>40||(v.preventDefault(),l({left:_===39?.05:_===37?-.05:0,top:_===40?.05:_===38?-.05:0}))},function(v){var _=v.which||v.keyCode;_>=37&&_<=40&&c()},h]},[l,a,c]),p=f[0],g=f[1],x=f[2],w=f[3];return m.useEffect(function(){return w},[w]),Re.createElement("div",pi({},n,{onTouchStart:p,onMouseDown:p,className:"react-colorful__interactive",ref:i,onKeyDown:g,onKeyUp:x,tabIndex:0,role:"slider"}))}),ja=function(e){return e.filter(Boolean).join(" ")},xf=function(e){var t=e.color,r=e.left,o=e.top,n=o===void 0?.5:o,i=ja(["react-colorful__pointer",e.className]);return Re.createElement("div",{className:i,style:{top:100*n+"%",left:100*r+"%"}},Re.createElement("div",{className:"react-colorful__pointer-fill",style:{backgroundColor:t}}))},pt=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=Math.pow(10,t)),Math.round(r*e)/r},Tv=function(e){return Zw(Gu(e))},Gu=function(e){return e[0]==="#"&&(e=e.substring(1)),e.length<6?{r:parseInt(e[0]+e[0],16),g:parseInt(e[1]+e[1],16),b:parseInt(e[2]+e[2],16),a:e.length===4?pt(parseInt(e[3]+e[3],16)/255,2):1}:{r:parseInt(e.substring(0,2),16),g:parseInt(e.substring(2,4),16),b:parseInt(e.substring(4,6),16),a:e.length===8?pt(parseInt(e.substring(6,8),16)/255,2):1}},Rv=function(e){return Jw(qw(e))},Sv=function(e){var t=e.s,r=e.v,o=e.a,n=(200-t)*r/100;return{h:pt(e.h),s:pt(n>0&&n<200?t*r/100/(n<=100?n:200-n)*100:0),l:pt(n/2),a:pt(o,2)}},Ku=function(e){var t=Sv(e);return"hsl("+t.h+", "+t.s+"%, "+t.l+"%)"},Bc=function(e){var t=Sv(e);return"hsla("+t.h+", "+t.s+"%, "+t.l+"%, "+t.a+")"},qw=function(e){var t=e.h,r=e.s,o=e.v,n=e.a;t=t/360*6,r/=100,o/=100;var i=Math.floor(t),a=o*(1-r),l=o*(1-(t-i)*r),c=o*(1-(1-t+i)*r),u=i%6;return{r:pt(255*[o,l,a,a,c,o][u]),g:pt(255*[c,o,o,l,a,a][u]),b:pt(255*[a,a,c,o,o,l][u]),a:pt(n,2)}},al=function(e){var t=e.toString(16);return t.length<2?"0"+t:t},Jw=function(e){var t=e.r,r=e.g,o=e.b,n=e.a,i=n<1?al(pt(255*n)):"";return"#"+al(t)+al(r)+al(o)+i},Zw=function(e){var t=e.r,r=e.g,o=e.b,n=e.a,i=Math.max(t,r,o),a=i-Math.min(t,r,o),l=a?i===t?(r-o)/a:i===r?2+(o-t)/a:4+(t-r)/a:0;return{h:pt(60*(l<0?l+6:l)),s:pt(i?a/i*100:0),v:pt(i/255*100),a:n}},Lv=Re.memo(function(e){var t=e.hue,r=e.onChange,o=e.onChangeEnd,n=ja(["react-colorful__hue",e.className]);return Re.createElement("div",{className:n},Re.createElement(mf,{onMove:function(i){r({h:360*i.left})},onKey:function(i){r({h:oi(t+360*i.left,0,360)})},onEnd:o,"aria-label":"Hue","aria-valuenow":pt(t),"aria-valuemax":"360","aria-valuemin":"0"},Re.createElement(xf,{className:"react-colorful__hue-pointer",left:t/360,color:Ku({h:t,s:100,v:100,a:1})})))}),Cv=Re.memo(function(e){var t=e.hsva,r=e.onChange,o=e.onChangeEnd,n={backgroundColor:Ku({h:t.h,s:100,v:100,a:1})};return Re.createElement("div",{className:"react-colorful__saturation",style:n},Re.createElement(mf,{onMove:function(i){r({s:100*i.left,v:100-100*i.top})},onKey:function(i){r({s:oi(t.s+100*i.left,0,100),v:oi(t.v-100*i.top,0,100)})},onEnd:o,"aria-label":"Color","aria-valuetext":"Saturation "+pt(t.s)+"%, Brightness "+pt(t.v)+"%"},Re.createElement(xf,{className:"react-colorful__saturation-pointer",top:1-t.v/100,left:t.s/100,color:Ku(t)})))}),Nv=function(e,t){if(e===t)return!0;for(var r in e)if(e[r]!==t[r])return!1;return!0},Ov=function(e,t){return e.toLowerCase()===t.toLowerCase()||Nv(Gu(e),Gu(t))};function Mv(e,t,r,o){var n=Gi(r),i=Gi(o),a=m.useState(function(){return e.toHsva(t)}),l=a[0],c=a[1],u=m.useRef({color:t,hsva:l}),d=m.useRef(!1);m.useEffect(function(){if(!e.equal(t,u.current.color)){var g=e.toHsva(t);u.current={hsva:g,color:t},c(g),d.current=!1}},[t,e]),m.useEffect(function(){var g;Nv(l,u.current.hsva)||e.equal(g=e.fromHsva(l),u.current.color)||(u.current={hsva:l,color:g},n(g),d.current=!0)},[l,e,n]);var f=m.useCallback(function(g){c(function(x){return Object.assign({},x,g)})},[]),p=m.useCallback(function(){d.current&&(d.current=!1,i(u.current.color))},[i]);return[l,f,p]}var Qw=typeof window<"u"?m.useLayoutEffect:m.useEffect,e0=function(){return typeof __webpack_nonce__<"u"?__webpack_nonce__:void 0},ch=new WeakMap,Av=function(e){Qw(function(){var t=e.current;if(typeof document<"u"&&t){var r=t.getRootNode?t.getRootNode():t.ownerDocument,o=r&&("head"in r||"host"in r)?r:t.ownerDocument;if(!ch.has(o)){var n="head"in o?o.head:o,i=(n.ownerDocument||document).createElement("style");i.innerHTML=`.react-colorful{position:relative;display:flex;flex-direction:column;width:200px;height:200px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.react-colorful__saturation{position:relative;flex-grow:1;border-color:transparent;border-bottom:12px solid #000;border-radius:8px 8px 0 0;background-image:linear-gradient(0deg,#000,transparent),linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.react-colorful__alpha-gradient,.react-colorful__pointer-fill{content:"";position:absolute;left:0;top:0;right:0;bottom:0;pointer-events:none;border-radius:inherit}.react-colorful__alpha-gradient,.react-colorful__saturation{box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}.react-colorful__alpha,.react-colorful__hue{position:relative;height:24px}.react-colorful__hue{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.react-colorful__last-control{border-radius:0 0 8px 8px}.react-colorful__interactive{position:absolute;left:0;top:0;right:0;bottom:0;border-radius:inherit;outline:none;touch-action:none}.react-colorful__pointer{position:absolute;z-index:1;box-sizing:border-box;width:28px;height:28px;transform:translate(-50%,-50%);background-color:#fff;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2)}.react-colorful__interactive:focus .react-colorful__pointer{transform:translate(-50%,-50%) scale(1.1)}.react-colorful__alpha,.react-colorful__alpha-pointer{background-color:#fff;background-image:url('data:image/svg+xml;charset=utf-8,')}.react-colorful__saturation-pointer{z-index:3}.react-colorful__hue-pointer{z-index:2}`;var a=e0();a&&i.setAttribute("nonce",a),ch.set(o,i),n.appendChild(i)}}},[])},t0=function(e){var t=e.className,r=e.colorModel,o=e.color,n=o===void 0?r.defaultColor:o,i=e.onChange,a=e.onChangeEnd,l=vf(e,["className","colorModel","color","onChange","onChangeEnd"]),c=m.useRef(null);Av(c);var u=Mv(r,n,i,a),d=u[0],f=u[1],p=u[2],g=ja(["react-colorful",t]);return Re.createElement("div",pi({},l,{ref:c,className:g}),Re.createElement(Cv,{hsva:d,onChange:f,onChangeEnd:p}),Re.createElement(Lv,{hue:d.h,onChange:f,onChangeEnd:p,className:"react-colorful__last-control"}))},r0={defaultColor:"000",toHsva:Tv,fromHsva:function(e){return Rv({h:e.h,s:e.s,v:e.v,a:1})},equal:Ov},o0=function(e){return Re.createElement(t0,pi({},e,{colorModel:r0}))},n0=function(e){var t=e.className,r=e.hsva,o=e.onChange,n=e.onChangeEnd,i={backgroundImage:"linear-gradient(90deg, "+Bc(Object.assign({},r,{a:0}))+", "+Bc(Object.assign({},r,{a:1}))+")"},a=ja(["react-colorful__alpha",t]),l=pt(100*r.a);return Re.createElement("div",{className:a},Re.createElement("div",{className:"react-colorful__alpha-gradient",style:i}),Re.createElement(mf,{onMove:function(c){o({a:c.left})},onKey:function(c){o({a:oi(r.a+c.left)})},onEnd:n,"aria-label":"Alpha","aria-valuetext":l+"%","aria-valuenow":l,"aria-valuemin":"0","aria-valuemax":"100"},Re.createElement(xf,{className:"react-colorful__alpha-pointer",left:r.a,color:Bc(r)})))},i0=function(e){var t=e.className,r=e.colorModel,o=e.color,n=o===void 0?r.defaultColor:o,i=e.onChange,a=e.onChangeEnd,l=vf(e,["className","colorModel","color","onChange","onChangeEnd"]),c=m.useRef(null);Av(c);var u=Mv(r,n,i,a),d=u[0],f=u[1],p=u[2],g=ja(["react-colorful",t]);return Re.createElement("div",pi({},l,{ref:c,className:g}),Re.createElement(Cv,{hsva:d,onChange:f,onChangeEnd:p}),Re.createElement(Lv,{hue:d.h,onChange:f,onChangeEnd:p}),Re.createElement(n0,{hsva:d,onChange:f,onChangeEnd:p,className:"react-colorful__last-control"}))},a0={defaultColor:"0001",toHsva:Tv,fromHsva:Rv,equal:Ov},l0=function(e){return Re.createElement(i0,pi({},e,{colorModel:a0}))},Dv={},dt=fr&&fr.__assign||function(){return dt=Object.assign||function(e){for(var t,r=1,o=arguments.length;r-1){N.current.stack=he.slice(0,ot+1);var nt=N.current.stack.length;if(nt>hh){var ye=nt-hh;N.current.stack=he.slice(ye,nt),N.current.offset=Math.max(N.current.offset-ye,0)}}var We=Date.now();if(ue){var me=N.current.stack[N.current.offset];if(me&&We-me.timestamp-1){N.current.stack=he.slice(0,ot+1);var nt=N.current.stack.length;if(nt>hh){var ye=nt-hh;N.current.stack=he.slice(ye,nt),N.current.offset=Math.max(N.current.offset-ye,0)}}var We=Date.now();if(ue){var me=N.current.stack[N.current.offset];if(me&&We-me.timestamp=ot&&He<=nt&&Ht.startsWith(fe)?Ht.substring(fe.length):Ht}).join(` `);if(se!==ye){var We=he[ot];le({value:ye,selectionStart:We?.startsWith(fe)?$-fe.length:$,selectionEnd:pe-(se.length-ye.length)})}}else if($!==pe){var he=Z(se,$),me=he.length-1,we=Z(se,pe).length-1,We=he[me];le({value:se.split(` `).map(function(mi,Ua){return Ua>=me&&Ua<=we?fe+mi:mi}).join(` `),selectionStart:We&&/\S/.test(We)?$+fe.length:$,selectionEnd:pe+fe.length*(we-me+1)})}else{var Je=$+fe.length;le({value:se.substring(0,$)+fe+se.substring(pe),selectionStart:Je,selectionEnd:Je})}else if(G.key==="Backspace"){var gt=$!==pe,Lr=se.substring(0,$);if(Lr.endsWith(fe)&&!gt){G.preventDefault();var Je=$-fe.length;le({value:se.substring(0,$-fe.length)+se.substring(pe),selectionStart:Je,selectionEnd:Je})}}else if(G.key==="Enter"){if($===pe){var yt=Z(se,$).pop(),yn=yt?.match(/^\s+/);if(yn?.[0]){G.preventDefault();var vi=` -`+yn[0],Je=$+vi.length;le({value:se.substring(0,$)+vi+se.substring(pe),selectionStart:Je,selectionEnd:Je})}}}else if(G.keyCode===uh||G.keyCode===dh||G.keyCode===fh||G.keyCode===ph){var rr=void 0;G.keyCode===uh&&G.shiftKey?rr=["(",")"]:G.keyCode===dh?G.shiftKey?rr=["{","}"]:rr=["[","]"]:G.keyCode===fh?G.shiftKey?rr=['"','"']:rr=["'","'"]:G.keyCode===ph&&!G.shiftKey&&(rr=["`","`"]),$!==pe&&rr&&(G.preventDefault(),le({value:se.substring(0,$)+rr[0]+se.substring($,pe)+rr[1]+se.substring(pe),selectionStart:$,selectionEnd:pe+2}))}else(Pc?G.metaKey&&G.keyCode===ll:G.ctrlKey&&G.keyCode===ll)&&!G.shiftKey&&!G.altKey?(G.preventDefault(),Ce()):(Pc?G.metaKey&&G.keyCode===ll&&G.shiftKey:b0?G.ctrlKey&&G.keyCode===p0:G.ctrlKey&&G.keyCode===ll&&G.shiftKey)&&!G.altKey?(G.preventDefault(),Ee()):G.keyCode===h0&&G.ctrlKey&&(!Pc||G.shiftKey)&&(G.preventDefault(),ie(function(Ht){return!Ht}))}},jt=function(G){var ue=G.currentTarget,se=ue.value,$=ue.selectionStart,pe=ue.selectionEnd;Y({value:se,selectionStart:$,selectionEnd:pe},!0),v(se)};return nr.useEffect(function(){Q()},[Q]),nr.useImperativeHandle(r,function(){return{get session(){return{history:N.current}},set session(G){N.current=G.history}}},[]),nr.createElement("div",dt({},R,{style:dt(dt({},Si.container),B)}),nr.createElement("pre",dt({className:S,"aria-hidden":"true",style:dt(dt(dt({},Si.editor),Si.highlight),X)},typeof q=="string"?{dangerouslySetInnerHTML:{__html:q+"
"}}:{children:q})),nr.createElement("textarea",{ref:function(G){return A.current=G},style:dt(dt(dt({},Si.editor),Si.textarea),X),className:Rl+(E?" ".concat(E):""),id:z,value:L,onChange:jt,onKeyDown:ve,onClick:w,onKeyUp:h,onFocus:k,onBlur:x,disabled:n,form:i,maxLength:f,minLength:p,name:g,placeholder:T,readOnly:P,required:O,autoFocus:o,autoCapitalize:"off",autoComplete:"off",autoCorrect:"off",spellCheck:!1,"data-gramm":!1}),nr.createElement("style",{dangerouslySetInnerHTML:{__html:v0}}))}),Si={container:{position:"relative",textAlign:"left",boxSizing:"border-box",padding:0,overflow:"hidden"},textarea:{position:"absolute",top:0,left:0,height:"100%",width:"100%",resize:"none",color:"inherit",overflow:"hidden",MozOsxFontSmoothing:"grayscale",WebkitFontSmoothing:"antialiased",WebkitTextFillColor:"transparent"},highlight:{position:"relative",pointerEvents:"none"},editor:{margin:0,border:0,background:"none",boxSizing:"inherit",display:"inherit",fontFamily:"inherit",fontSize:"inherit",fontStyle:"inherit",fontVariantLigatures:"inherit",fontWeight:"inherit",letterSpacing:"inherit",lineHeight:"inherit",tabSize:"inherit",textIndent:"inherit",textRendering:"inherit",textTransform:"inherit",whiteSpace:"pre-wrap",wordBreak:"keep-all",overflowWrap:"break-word"}};Dv.default=m0;var x0={exports:{}};(function(e){var t=typeof window<"u"?window:typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope?self:{};/** +`+yn[0],Je=$+vi.length;le({value:se.substring(0,$)+vi+se.substring(pe),selectionStart:Je,selectionEnd:Je})}}}else if(G.keyCode===uh||G.keyCode===dh||G.keyCode===fh||G.keyCode===ph){var rr=void 0;G.keyCode===uh&&G.shiftKey?rr=["(",")"]:G.keyCode===dh?G.shiftKey?rr=["{","}"]:rr=["[","]"]:G.keyCode===fh?G.shiftKey?rr=['"','"']:rr=["'","'"]:G.keyCode===ph&&!G.shiftKey&&(rr=["`","`"]),$!==pe&&rr&&(G.preventDefault(),le({value:se.substring(0,$)+rr[0]+se.substring($,pe)+rr[1]+se.substring(pe),selectionStart:$,selectionEnd:pe+2}))}else(Pc?G.metaKey&&G.keyCode===ll:G.ctrlKey&&G.keyCode===ll)&&!G.shiftKey&&!G.altKey?(G.preventDefault(),Ce()):(Pc?G.metaKey&&G.keyCode===ll&&G.shiftKey:g0?G.ctrlKey&&G.keyCode===f0:G.ctrlKey&&G.keyCode===ll&&G.shiftKey)&&!G.altKey?(G.preventDefault(),Ee()):G.keyCode===p0&&G.ctrlKey&&(!Pc||G.shiftKey)&&(G.preventDefault(),ie(function(Ht){return!Ht}))}},jt=function(G){var ue=G.currentTarget,se=ue.value,$=ue.selectionStart,pe=ue.selectionEnd;Y({value:se,selectionStart:$,selectionEnd:pe},!0),v(se)};return nr.useEffect(function(){Q()},[Q]),nr.useImperativeHandle(r,function(){return{get session(){return{history:N.current}},set session(G){N.current=G.history}}},[]),nr.createElement("div",dt({},R,{style:dt(dt({},Si.container),B)}),nr.createElement("pre",dt({className:S,"aria-hidden":"true",style:dt(dt(dt({},Si.editor),Si.highlight),X)},typeof q=="string"?{dangerouslySetInnerHTML:{__html:q+"
"}}:{children:q})),nr.createElement("textarea",{ref:function(G){return A.current=G},style:dt(dt(dt({},Si.editor),Si.textarea),X),className:Rl+(E?" ".concat(E):""),id:z,value:L,onChange:jt,onKeyDown:ve,onClick:w,onKeyUp:h,onFocus:k,onBlur:x,disabled:n,form:i,maxLength:f,minLength:p,name:g,placeholder:T,readOnly:P,required:O,autoFocus:o,autoCapitalize:"off",autoComplete:"off",autoCorrect:"off",spellCheck:!1,"data-gramm":!1}),nr.createElement("style",{dangerouslySetInnerHTML:{__html:b0}}))}),Si={container:{position:"relative",textAlign:"left",boxSizing:"border-box",padding:0,overflow:"hidden"},textarea:{position:"absolute",top:0,left:0,height:"100%",width:"100%",resize:"none",color:"inherit",overflow:"hidden",MozOsxFontSmoothing:"grayscale",WebkitFontSmoothing:"antialiased",WebkitTextFillColor:"transparent"},highlight:{position:"relative",pointerEvents:"none"},editor:{margin:0,border:0,background:"none",boxSizing:"inherit",display:"inherit",fontFamily:"inherit",fontSize:"inherit",fontStyle:"inherit",fontVariantLigatures:"inherit",fontWeight:"inherit",letterSpacing:"inherit",lineHeight:"inherit",tabSize:"inherit",textIndent:"inherit",textRendering:"inherit",textTransform:"inherit",whiteSpace:"pre-wrap",wordBreak:"keep-all",overflowWrap:"break-word"}};Dv.default=v0;var m0={exports:{}};(function(e){var t=typeof window<"u"?window:typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope?self:{};/** * Prism: Lightweight, robust, elegant syntax highlighting * * @license MIT @@ -77,7 +77,7 @@ Error generating stack: `+i.message+` * @namespace * @public */var r=function(o){var n=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,i=0,a={},l={manual:o.Prism&&o.Prism.manual,disableWorkerMessageHandler:o.Prism&&o.Prism.disableWorkerMessageHandler,util:{encode:function h(v){return v instanceof c?new c(v.type,h(v.content),v.alias):Array.isArray(v)?v.map(h):v.replace(/&/g,"&").replace(/"u")return null;if(document.currentScript&&document.currentScript.tagName==="SCRIPT")return document.currentScript;try{throw new Error}catch(y){var h=(/at [^(\r\n]*\((.*):[^:]+:[^:]+\)$/i.exec(y.stack)||[])[1];if(h){var v=document.getElementsByTagName("script");for(var _ in v)if(v[_].src==h)return v[_]}return null}},isActive:function(h,v,_){for(var y="no-"+v;h;){var T=h.classList;if(T.contains(v))return!0;if(T.contains(y))return!1;h=h.parentElement}return!!_}},languages:{plain:a,plaintext:a,text:a,txt:a,extend:function(h,v){var _=l.util.clone(l.languages[h]);for(var y in v)_[y]=v[y];return _},insertBefore:function(h,v,_,y){y=y||l.languages;var T=y[h],S={};for(var P in T)if(T.hasOwnProperty(P)){if(P==v)for(var O in _)_.hasOwnProperty(O)&&(S[O]=_[O]);_.hasOwnProperty(P)||(S[P]=T[P])}var B=y[h];return y[h]=S,l.languages.DFS(l.languages,function(j,M){M===B&&j!=h&&(this[j]=S)}),S},DFS:function h(v,_,y,T){T=T||{};var S=l.util.objId;for(var P in v)if(v.hasOwnProperty(P)){_.call(v,P,v[P],y||P);var O=v[P],B=l.util.type(O);B==="Object"&&!T[S(O)]?(T[S(O)]=!0,h(O,_,null,T)):B==="Array"&&!T[S(O)]&&(T[S(O)]=!0,h(O,_,P,T))}}},plugins:{},highlightAll:function(h,v){l.highlightAllUnder(document,h,v)},highlightAllUnder:function(h,v,_){var y={callback:_,container:h,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};l.hooks.run("before-highlightall",y),y.elements=Array.prototype.slice.apply(y.container.querySelectorAll(y.selector)),l.hooks.run("before-all-elements-highlight",y);for(var T=0,S;S=y.elements[T++];)l.highlightElement(S,v===!0,y.callback)},highlightElement:function(h,v,_){var y=l.util.getLanguage(h),T=l.languages[y];l.util.setLanguage(h,y);var S=h.parentElement;S&&S.nodeName.toLowerCase()==="pre"&&l.util.setLanguage(S,y);var P=h.textContent,O={element:h,language:y,grammar:T,code:P};function B(M){O.highlightedCode=M,l.hooks.run("before-insert",O),O.element.innerHTML=O.highlightedCode,l.hooks.run("after-highlight",O),l.hooks.run("complete",O),_&&_.call(O.element)}if(l.hooks.run("before-sanity-check",O),S=O.element.parentElement,S&&S.nodeName.toLowerCase()==="pre"&&!S.hasAttribute("tabindex")&&S.setAttribute("tabindex","0"),!O.code){l.hooks.run("complete",O),_&&_.call(O.element);return}if(l.hooks.run("before-highlight",O),!O.grammar){B(l.util.encode(O.code));return}if(v&&o.Worker){var j=new Worker(l.filename);j.onmessage=function(M){B(M.data)},j.postMessage(JSON.stringify({language:O.language,code:O.code,immediateClose:!0}))}else B(l.highlight(O.code,O.grammar,O.language))},highlight:function(h,v,_){var y={code:h,grammar:v,language:_};if(l.hooks.run("before-tokenize",y),!y.grammar)throw new Error('The language "'+y.language+'" has no grammar.');return y.tokens=l.tokenize(y.code,y.grammar),l.hooks.run("after-tokenize",y),c.stringify(l.util.encode(y.tokens),y.language)},tokenize:function(h,v){var _=v.rest;if(_){for(var y in _)v[y]=_[y];delete v.rest}var T=new f;return p(T,T.head,h),d(h,T,v,T.head,0),x(T)},hooks:{all:{},add:function(h,v){var _=l.hooks.all;_[h]=_[h]||[],_[h].push(v)},run:function(h,v){var _=l.hooks.all[h];if(!(!_||!_.length))for(var y=0,T;T=_[y++];)T(v)}},Token:c};o.Prism=l;function c(h,v,_,y){this.type=h,this.content=v,this.alias=_,this.length=(y||"").length|0}c.stringify=function h(v,_){if(typeof v=="string")return v;if(Array.isArray(v)){var y="";return v.forEach(function(B){y+=h(B,_)}),y}var T={type:v.type,content:h(v.content,_),tag:"span",classes:["token",v.type],attributes:{},language:_},S=v.alias;S&&(Array.isArray(S)?Array.prototype.push.apply(T.classes,S):T.classes.push(S)),l.hooks.run("wrap",T);var P="";for(var O in T.attributes)P+=" "+O+'="'+(T.attributes[O]||"").replace(/"/g,""")+'"';return"<"+T.tag+' class="'+T.classes.join(" ")+'"'+P+">"+T.content+""};function u(h,v,_,y){h.lastIndex=v;var T=h.exec(_);if(T&&y&&T[1]){var S=T[1].length;T.index+=S,T[0]=T[0].slice(S)}return T}function d(h,v,_,y,T,S){for(var P in _)if(!(!_.hasOwnProperty(P)||!_[P])){var O=_[P];O=Array.isArray(O)?O:[O];for(var B=0;B=S.reach);W+=A.value.length,A=A.next){var F=A.value;if(v.length>h.length)return;if(!(F instanceof c)){var ie=1,X;if(z){if(X=u(N,W,h,E),!X||X.index>=h.length)break;var Q=X.index,q=X.index+X[0].length,Z=W;for(Z+=A.value.length;Q>=Z;)A=A.next,Z+=A.value.length;if(Z-=A.value.length,W=Z,A.value instanceof c)continue;for(var Y=A;Y!==v.tail&&(ZS.reach&&(S.reach=Ee);var ve=A.prev;le&&(ve=p(v,ve,le),W+=le.length),g(v,ve,ie);var jt=new c(P,M?l.tokenize(ne,M):ne,L,ne);if(A=p(v,ve,jt),Ce&&p(v,A,Ce),ie>1){var G={cause:P+","+B,reach:Ee};d(h,v,_,A.prev,W,G),S&&G.reach>S.reach&&(S.reach=G.reach)}}}}}}function f(){var h={value:null,prev:null,next:null},v={value:null,prev:h,next:null};h.next=v,this.head=h,this.tail=v,this.length=0}function p(h,v,_){var y=v.next,T={value:_,prev:v,next:y};return v.next=T,y.prev=T,h.length++,T}function g(h,v,_){for(var y=v.next,T=0;T<_&&y!==h.tail;T++)y=y.next;v.next=y,y.prev=v,h.length-=T}function x(h){for(var v=[],_=h.head.next;_!==h.tail;)v.push(_.value),_=_.next;return v}if(!o.document)return o.addEventListener&&(l.disableWorkerMessageHandler||o.addEventListener("message",function(h){var v=JSON.parse(h.data),_=v.language,y=v.code,T=v.immediateClose;o.postMessage(l.highlight(y,l.languages[_],_)),T&&o.close()},!1)),l;var w=l.util.currentScript();w&&(l.filename=w.src,w.hasAttribute("data-manual")&&(l.manual=!0));function k(){l.manual||l.highlightAll()}if(!l.manual){var b=document.readyState;b==="loading"||b==="interactive"&&w&&w.defer?document.addEventListener("DOMContentLoaded",k):window.requestAnimationFrame?window.requestAnimationFrame(k):window.setTimeout(k,16)}return l}(t);e.exports&&(e.exports=r),typeof fr<"u"&&(fr.Prism=r),r.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},r.languages.markup.tag.inside["attr-value"].inside.entity=r.languages.markup.entity,r.languages.markup.doctype.inside["internal-subset"].inside=r.languages.markup,r.hooks.add("wrap",function(o){o.type==="entity"&&(o.attributes.title=o.content.replace(/&/,"&"))}),Object.defineProperty(r.languages.markup.tag,"addInlined",{value:function(n,i){var a={};a["language-"+i]={pattern:/(^$)/i,lookbehind:!0,inside:r.languages[i]},a.cdata=/^$/i;var l={"included-cdata":{pattern://i,inside:a}};l["language-"+i]={pattern:/[\s\S]+/,inside:r.languages[i]};var c={};c[n]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,function(){return n}),"i"),lookbehind:!0,greedy:!0,inside:l},r.languages.insertBefore("markup","cdata",c)}}),Object.defineProperty(r.languages.markup.tag,"addAttribute",{value:function(o,n){r.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+o+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[n,"language-"+n],inside:r.languages[n]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),r.languages.html=r.languages.markup,r.languages.mathml=r.languages.markup,r.languages.svg=r.languages.markup,r.languages.xml=r.languages.extend("markup",{}),r.languages.ssml=r.languages.xml,r.languages.atom=r.languages.xml,r.languages.rss=r.languages.xml,function(o){var n=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;o.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+n.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+n.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+n.source+"$"),alias:"url"}}},selector:{pattern:RegExp(`(^|[{}\\s])[^{}\\s](?:[^{};"'\\s]|\\s+(?![\\s{])|`+n.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:n,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},o.languages.css.atrule.inside.rest=o.languages.css;var i=o.languages.markup;i&&(i.tag.addInlined("style","css"),i.tag.addAttribute("style","css"))}(r),r.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},r.languages.javascript=r.languages.extend("clike",{"class-name":[r.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+(/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source)+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),r.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,r.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:r.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:r.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:r.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:r.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:r.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),r.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:r.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),r.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),r.languages.markup&&(r.languages.markup.tag.addInlined("script","javascript"),r.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),r.languages.js=r.languages.javascript,function(){if(typeof r>"u"||typeof document>"u")return;Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector);var o="Loading…",n=function(w,k){return"✖ Error "+w+" while fetching file: "+k},i="✖ Error: File does not exist or is empty",a={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"},l="data-src-status",c="loading",u="loaded",d="failed",f="pre[data-src]:not(["+l+'="'+u+'"]):not(['+l+'="'+c+'"])';function p(w,k,b){var h=new XMLHttpRequest;h.open("GET",w,!0),h.onreadystatechange=function(){h.readyState==4&&(h.status<400&&h.responseText?k(h.responseText):h.status>=400?b(n(h.status,h.statusText)):b(i))},h.send(null)}function g(w){var k=/^\s*(\d+)\s*(?:(,)\s*(?:(\d+)\s*)?)?$/.exec(w||"");if(k){var b=Number(k[1]),h=k[2],v=k[3];return h?v?[b,Number(v)]:[b,void 0]:[b,b]}}r.hooks.add("before-highlightall",function(w){w.selector+=", "+f}),r.hooks.add("before-sanity-check",function(w){var k=w.element;if(k.matches(f)){w.code="",k.setAttribute(l,c);var b=k.appendChild(document.createElement("CODE"));b.textContent=o;var h=k.getAttribute("data-src"),v=w.language;if(v==="none"){var _=(/\.(\w+)$/.exec(h)||[,"none"])[1];v=a[_]||_}r.util.setLanguage(b,v),r.util.setLanguage(k,v);var y=r.plugins.autoloader;y&&y.loadLanguages(v),p(h,function(T){k.setAttribute(l,u);var S=g(k.getAttribute("data-range"));if(S){var P=T.split(/\r\n?|\n/g),O=S[0],B=S[1]==null?P.length:S[1];O<0&&(O+=P.length),O=Math.max(0,Math.min(O-1,P.length)),B<0&&(B+=P.length),B=Math.max(0,Math.min(B,P.length)),T=P.slice(O,B).join(` -`),k.hasAttribute("data-start")||k.setAttribute("data-start",String(O+1))}b.textContent=T,r.highlightElement(b)},function(T){k.setAttribute(l,d),b.textContent=T})}}),r.plugins.fileHighlight={highlight:function(k){for(var b=(k||document).querySelectorAll(f),h=0,v;v=b[h++];)r.highlightElement(v)}};var x=!1;r.fileHighlight=function(){x||(console.warn("Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead."),x=!0),r.plugins.fileHighlight.highlight.apply(this,arguments)}}()})(x0);Prism.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}};Prism.languages.webmanifest=Prism.languages.json;function Go({children:e,minimum:t=165,className:r=""}){return s.jsx("div",{className:`bv-field-grid ${r}`.trim(),style:{"--bv-field-grid-min":`${t}px`},children:e})}function Rr({label:e,help:t,error:r,required:o,icon:n,className:i="",children:a}){return s.jsxs("label",{className:`bv-control-field ${r?"is-error":""} ${i}`.trim(),children:[s.jsxs("span",{className:"bv-control-label",children:[n&&s.jsx("span",{className:"bv-field-icon",children:n}),s.jsx("span",{children:e}),o&&s.jsx("span",{"aria-hidden":"true",children:" *"})]}),a,r?s.jsx("small",{className:"bv-control-message is-error",children:r}):t&&s.jsx("small",{className:"bv-control-help bv-control-help-overlay",children:t})]})}function cn({label:e,help:t,error:r,icon:o,suffix:n,onValue:i,className:a="",...l}){const c=(u=!1)=>s.jsxs("span",{className:"bv-input-shell",children:[o&&s.jsx("span",{className:"bv-field-icon","aria-hidden":"true",children:o}),s.jsx("input",{...l,id:u&&l.id?`${l.id}-expanded`:l.id,"aria-label":u?e:l["aria-label"],"aria-invalid":!!r,onChange:d=>i?.(d.target.value)}),n&&s.jsx("span",{className:"bv-field-suffix",children:n})]});return s.jsx(Rr,{label:e,help:t,error:r,className:a,children:s.jsx($s,{label:e,summary:String(l.value??l.defaultValue??l.placeholder??"Edit value"),icon:o,popover:c(!0),children:c()})})}function y0({label:e,help:t,error:r,icon:o,resize:n="vertical",onValue:i,className:a="",...l}){const c=(d=!1)=>s.jsxs("span",{className:`bv-textarea-shell resize-${n}`,children:[o&&s.jsx("span",{className:"bv-field-icon","aria-hidden":"true",children:o}),s.jsx("textarea",{...l,id:d&&l.id?`${l.id}-expanded`:l.id,"aria-label":d?e:l["aria-label"],"aria-invalid":!!r,onChange:f=>i?.(f.target.value)})]}),u=String(l.value??l.defaultValue??l.placeholder??"Edit text");return s.jsx(Rr,{label:e,help:t,error:r,className:`bv-textarea-field ${a}`,children:s.jsx($s,{label:e,summary:u,icon:o,popover:c(!0),children:c()})})}const _0=m.forwardRef(function(t,r){return s.jsx("textarea",{...t,ref:r})});function Pt({label:e,value:t,min:r,max:o,step:n,unit:i,icon:a,help:l,slider:c=!0,onValue:u,className:d=""}){const f=m.useId(),[p,g]=m.useState(String(t));m.useEffect(()=>g(String(t)),[t]);const x=T=>Math.max(r,Math.min(o,T)),w=()=>{const T=Number(p);Number.isFinite(T)?u(x(T)):g(String(t))},k=`${Math.max(0,Math.min(100,(t-r)/Math.max(Number.EPSILON,o-r)*100))}%`,b=T=>s.jsxs("div",{className:"bv-number-box",children:[a&&s.jsx("span",{className:"bv-field-icon","aria-hidden":"true",children:a}),s.jsx("input",{id:T,value:p,inputMode:Number.isInteger(n)?"numeric":"decimal",onChange:S=>g(S.target.value),onBlur:w,onKeyDown:S=>{S.key==="Enter"&&S.currentTarget.blur(),S.key==="Escape"&&g(String(t))}}),i&&s.jsx("span",{className:"bv-number-unit",children:i})]}),h=s.jsxs("div",{className:"bv-number-slider",style:{"--bubble-left":k},children:[s.jsxs("output",{children:[t,i??""]}),s.jsx("input",{className:"bv-number-track",type:"range",min:r,max:o,step:n,value:t,style:{"--range-fill":k},"aria-labelledby":`${f}-label`,onChange:T=>u(x(+T.target.value))})]}),v=s.jsxs("div",{className:"bv-number-ticks",children:[s.jsx("span",{children:r}),s.jsx("span",{children:o})]}),_=s.jsxs(s.Fragment,{children:[s.jsxs("div",{className:"bv-number-value-row",children:[c&&h,b(f)]}),c&&v]}),y=s.jsxs("div",{className:"bv-number-popup",children:[c&&h,b(`${f}-expanded`),c&&v]});return s.jsxs("div",{className:`bv-number-field ${c?"has-slider":"direct-only"} ${d}`.trim(),children:[s.jsx("label",{id:`${f}-label`,htmlFor:f,children:e}),s.jsx($s,{label:e,summary:`${t}${i??""}`,icon:a,popover:y,children:_}),l&&s.jsx("small",{className:"bv-control-help bv-control-help-overlay",children:l})]})}function Iv({label:e,value:t,options:r,onValue:o,disabled:n,className:i=""}){const[a,l]=m.useState(!1),c=m.useRef(null),u=r.find(d=>d.value===t);return s.jsxs("div",{ref:c,className:`bv-select-popover ${i}`.trim(),children:[s.jsxs("button",{type:"button",className:"bv-select-trigger",disabled:n,"aria-label":e,"aria-haspopup":"listbox","aria-expanded":a,onClick:()=>l(d=>!d),children:[s.jsx("span",{children:u?.label??"Select…"}),s.jsx("span",{className:"bv-chevron","aria-hidden":"true"})]}),s.jsx(jo,{open:a,anchor:c,onClose:()=>l(!1),className:"bv-select-menu",matchWidth:!0,children:s.jsx("div",{role:"listbox","aria-label":e,children:r.map(d=>s.jsxs("button",{type:"button",role:"option","aria-selected":d.value===t,disabled:d.disabled,onClick:f=>{o(d.value,{shiftKey:f.shiftKey}),l(!1)},children:[d.icon,s.jsx("span",{children:d.label})]},d.value))})})]})}function qe({label:e,value:t,options:r,onValue:o,help:n,disabled:i}){return s.jsx(Rr,{label:e,help:n,children:s.jsx(Iv,{label:e,value:t,options:r,onValue:o,disabled:i})})}function w0({label:e,value:t,options:r,onValue:o,disabled:n,className:i=""}){return s.jsx(Iv,{label:e,value:t,options:r,onValue:o,disabled:n,className:`bv-density-compact ${i}`})}function eo({label:e,checked:t,onValue:r,help:o,disabled:n}){return s.jsxs("label",{className:"bv-checkbox-field",children:[s.jsx("input",{type:"checkbox",checked:t,disabled:n,onChange:i=>r(i.target.checked)}),s.jsx("span",{className:"bv-checkbox-mark","aria-hidden":"true"}),s.jsxs("span",{children:[s.jsx("strong",{children:e}),o&&s.jsx("small",{children:o})]})]})}function Xs({label:e,value:t,onValue:r,trueLabel:o="True",falseLabel:n="False",help:i}){return s.jsx(Rr,{label:e,help:i,children:s.jsxs("button",{type:"button",role:"switch","aria-checked":t,className:"bv-toggle",onClick:()=>r(!t),children:[s.jsx("span",{className:"bv-toggle-track",children:s.jsx("span",{})}),s.jsx("strong",{children:t?o:n})]})})}function k0({label:e,value:t,options:r,onValue:o,minSelected:n=0,help:i}){const[a,l]=m.useState(!1),c=m.useRef(null),u=d=>{const f=t.includes(d);f&&t.length<=n||o(f?t.filter(p=>p!==d):[...t,d])};return s.jsx(Rr,{label:e,help:i,children:s.jsxs("div",{ref:c,className:"bv-tag-select",children:[s.jsxs("button",{type:"button",className:"bv-tag-select-trigger","aria-haspopup":"listbox","aria-expanded":a,onClick:()=>l(d=>!d),children:[s.jsx("span",{className:"bv-tag-values",children:t.map(d=>s.jsx("span",{className:"bv-tag",children:r.find(f=>f.value===d)?.label??d},d))}),s.jsx("span",{className:"bv-chevron","aria-hidden":"true"})]}),s.jsx(jo,{open:a,anchor:c,onClose:()=>l(!1),className:"bv-select-menu bv-tag-select-menu",matchWidth:!0,children:s.jsx("div",{role:"listbox","aria-label":e,"aria-multiselectable":"true",children:r.map(d=>{const f=t.includes(d.value),p=f&&t.length<=n;return s.jsxs("button",{type:"button",role:"option","aria-selected":f,disabled:d.disabled||p,onClick:()=>u(d.value),children:[s.jsx("span",{className:"bv-tag-select-check","aria-hidden":"true",children:f?"✓":""}),s.jsx("span",{children:d.label})]},d.value)})})})]})})}function E0({label:e,value:t,onValue:r,onClear:o}){const[n,i]=m.useState(!1);return s.jsx(Rr,{label:e,children:s.jsxs("span",{className:"bv-input-shell",children:[s.jsx("input",{type:n?"text":"password",value:t,autoComplete:"off",onChange:a=>r(a.target.value)}),s.jsx(oe,{type:"button",intent:"ghost",className:"bv-field-action",onClick:()=>i(!n),children:n?"Hide":"Show"}),s.jsx(oe,{type:"button",intent:"ghost",className:"bv-field-action",onClick:()=>{r(""),o?.()},children:"Clear"})]})})}function T0({label:e,value:t,onValue:r,alpha:o=!1,help:n}){const[i,a]=m.useState(!1),l=m.useRef(null),c=/^#[0-9a-f]{6}([0-9a-f]{2})?$/i.test(t),u=o?s0:n0,d=s.jsx("input",{value:t,"aria-label":`${e} hexadecimal value`,spellCheck:!1,onChange:p=>r(p.target.value)}),f=s.jsxs("div",{className:"bv-color-expanded",children:[d,s.jsx(u,{color:c?t:o?"#8D70FFFF":"#8D70FF",onChange:r})]});return s.jsx(Rr,{label:e,help:n,error:c?void 0:"Enter a valid hexadecimal color.",children:s.jsx($s,{label:e,summary:t,icon:s.jsx("span",{className:"bv-color-dot",style:{background:c?t:"#000"}}),popover:f,children:s.jsxs("div",{ref:l,className:"bv-color-field",children:[s.jsx("button",{type:"button",className:"bv-color-swatch",style:{background:c?t:"#000"},onClick:()=>a(!i),"aria-label":`${e}: ${t}`,"aria-haspopup":"dialog","aria-expanded":i}),d,s.jsx(jo,{open:i,anchor:l,onClose:()=>a(!1),className:"bv-color-popover",children:f})]})})})}function as({items:e,value:t,onValue:r,exclusive:o=!1}){const n=i=>r(t.includes(i)?t.filter(a=>a!==i):o?[i]:[...t,i]);return s.jsx("div",{className:"bv-accordion",children:e.map(i=>s.jsxs("section",{className:i.disabled?"disabled":"",children:[s.jsxs("button",{type:"button","aria-expanded":t.includes(i.id),disabled:i.disabled,onClick:()=>n(i.id),children:[s.jsx("span",{children:i.title}),s.jsx("span",{className:"bv-chevron"})]}),t.includes(i.id)&&s.jsx("div",{children:i.content})]},i.id))})}function Gs({collectors:e,collectorId:t,resourceId:r,resolved:o=!0,onCollector:n,onResource:i}){const a=e.find(d=>d.id===t),l=a?.resources.find(d=>d.id===r),c=!!(t||r),u=c&&(!o||!a||!l);return s.jsx("div",{className:`bv-resource-picker ${u?"is-unresolved":""}`,children:s.jsxs(Go,{minimum:130,children:[s.jsx(qe,{label:"Collector",value:t,options:[{value:"",label:"Select collector"},...e.map(d=>({value:d.id,label:d.label}))],onValue:n}),s.jsx(qe,{label:"Resource",value:r,disabled:!a,options:[{value:"",label:"Select resource"},...(a?.resources??[]).map(d=>({value:d.id,label:d.label}))],onValue:i})]})})}const gh=["#E45756","#4C78A8","#54A24B","#F2CF5B","#B279A2","#FF9DA6"],jv=e=>gh[e%gh.length],Mt=()=>crypto.randomUUID(),bh=()=>({schema:"bv.regional",version:2,document_id:Mt(),title:"Regional Prompt",canvas:{width:1024,height:1024},prompts:{global:{positive_source:"",negative_source:""},background:{positive_source:"",negative_source:""}},negative_mode:"auto",overlap:{mode:"joint"},regions:[]}),R0=e=>({id:Mt(),name:`Region ${e+1}`,parent_region_id:null,enabled:!0,usage:"generation",strength:1,priority:e,prompts:{positive_source:"",negative_source:""},mask:{feather:.01},geometry:[],authoring:{visible:!0,locked:!1,color:jv(e)}}),Kt=e=>structuredClone(e);function S0(e,t){return{...e,document_id:t}}const sr=(e,t=0)=>e.authoring??{name:`${e.type==="rect"?"Rectangle":e.type==="ellipse"?"Ellipse":e.type==="polygon"?"Polygon":e.type==="raster_mask"?"Raster":"Brush"} ${t+1}`,visible:!0,locked:!1},zt=e=>e.layer_id??e.id,Ba=e=>e.mask_group_id??zt(e);function Bv(e,t){const r=new Map;for(const o of e){const n=t(o),i=r.get(n);i?i.push(o):r.set(n,[o])}return[...r].map(([o,n],i)=>({id:o,geometries:n,authoring:sr(n[0],i),enabled:n.some(a=>a.enabled!==!1)}))}function Ar(e){return Bv(e.geometry,zt)}function L0(e){return Bv(e,Ba)}function un(e){const t=typeof e=="string"?JSON.parse(e):Kt(e);if(t?.schema!=="bv.regional"||![1,2].includes(t?.version)||!Array.isArray(t?.regions))throw new Error("Not a valid BV_REGIONAL document");if(t.version===1){for(const r of t.regions)r.usage="generation";t.version=2}for(const r of t.regions){if(!["generation","detailer","both"].includes(r.usage))throw new Error(`Invalid region usage: ${r.usage}`);const o=r.geometry.find(n=>!n.layer_id)?.id;r.geometry.forEach((n,i)=>{n.enabled??(n.enabled=!0),n.layer_id??(n.layer_id=o??n.id),n.authoring??(n.authoring=sr(n,i)),n.type==="brush_stroke"&&(n.shape??(n.shape="round"),n.pressure_mode??(n.pressure_mode="constant"))})}return t}function Pv(e){const t=new Map;for(const r of e){const o=Ba(r);t.has(o)||t.set(o,r)}return[...t.values()].every(r=>r.operation==="add")}function qu(e,t){return Pv(e.filter(r=>r.id!==t))}function vh({value:e,onCommit:t}){const[r,o]=m.useState(!1),[n,i]=m.useState(e);if(!r)return s.jsx("span",{className:"layer-name",title:e,onDoubleClick:l=>{l.stopPropagation(),i(e),o(!0)},children:e});const a=()=>{const l=n.trim();l&&t(l),o(!1)};return s.jsx(Kw,{className:"inline-name",autoFocus:!0,value:n,onChange:l=>i(l.target.value),onBlur:a,onClick:l=>l.stopPropagation(),onKeyDown:l=>{l.stopPropagation(),l.key==="Enter"&&a(),l.key==="Escape"&&o(!1)}})}function Xt({name:e}){const t={"chevron-right":s.jsx("path",{d:"m9 6 6 6-6 6"}),"chevron-down":s.jsx("path",{d:"m6 9 6 6 6-6"}),eye:s.jsxs(s.Fragment,{children:[s.jsx("path",{d:"M2.5 12s3.5-6 9.5-6 9.5 6 9.5 6-3.5 6-9.5 6-9.5-6-9.5-6Z"}),s.jsx("circle",{cx:"12",cy:"12",r:"2.5"})]}),"eye-off":s.jsxs(s.Fragment,{children:[s.jsx("path",{d:"M3 3l18 18"}),s.jsx("path",{d:"M10.6 6.15A9.8 9.8 0 0 1 12 6c6 0 9.5 6 9.5 6a14.3 14.3 0 0 1-2.05 2.7M6.05 6.05C3.75 7.65 2.5 12 2.5 12s3.5 6 9.5 6a9.4 9.4 0 0 0 3.1-.52"}),s.jsx("path",{d:"M9.9 9.9a3 3 0 0 0 4.2 4.2"})]}),lock:s.jsxs(s.Fragment,{children:[s.jsx("rect",{x:"5",y:"10",width:"14",height:"10",rx:"2"}),s.jsx("path",{d:"M8 10V7a4 4 0 0 1 8 0v3"})]}),unlock:s.jsxs(s.Fragment,{children:[s.jsx("rect",{x:"5",y:"10",width:"14",height:"10",rx:"2"}),s.jsx("path",{d:"M8 10V7a4 4 0 0 1 7.4-2.1"})]}),check:s.jsx("path",{d:"m6 12 4 4 8-9"}),more:s.jsxs(s.Fragment,{children:[s.jsx("circle",{cx:"5",cy:"12",r:"1"}),s.jsx("circle",{cx:"12",cy:"12",r:"1"}),s.jsx("circle",{cx:"19",cy:"12",r:"1"})]}),plus:s.jsx("path",{d:"M12 5v14M5 12h14"}),split:s.jsxs(s.Fragment,{children:[s.jsx("path",{d:"M7 5v5a2 2 0 0 0 2 2h6a2 2 0 0 1 2 2v5"}),s.jsx("path",{d:"m4 8 3 3 3-3M14 16l3 3 3-3"})]}),trash:s.jsxs(s.Fragment,{children:[s.jsx("path",{d:"M4 7h16M9 7V4h6v3M7 7l1 13h8l1-13"}),s.jsx("path",{d:"M10 11v5M14 11v5"})]})};return s.jsx("svg",{className:"tree-control-icon",viewBox:"0 0 24 24","aria-hidden":"true",children:t[e]})}function C0(e){const[t,r]=m.useState(()=>new Set),[o,n]=m.useState(()=>new Set(e.selectedRegionId?[e.selectedRegionId]:[])),[i,a]=m.useState(null),[l,c]=m.useState(null),u=b=>r(h=>{const v=new Set(h);return v.has(b)?v.delete(b):v.add(b),v}),d=b=>n(h=>{const v=new Set(h);return v.has(b)?v.delete(b):v.add(b),v});m.useEffect(()=>{e.selectedRegionId&&n(b=>b.has(e.selectedRegionId)?b:new Set([...b,e.selectedRegionId]))},[e.selectedRegionId]);const f=b=>b.kind==="region"?`region:${b.regionId}`:b.kind==="layer"?`layer:${b.regionId}:${b.layerId}`:`geometry:${b.regionId}:${b.layerId}:${b.geometryId}`,p=(b,h)=>{a(b),h.dataTransfer.effectAllowed="move",h.dataTransfer.setData("text/plain",f(b))},g=(b,h)=>{if(!i||i.kind!==b.kind||b.kind==="layer"&&i.kind==="geometry")return"inside";const v=h.currentTarget.getBoundingClientRect();return h.clientY({onDragOver:h=>{i&&(h.preventDefault(),h.dataTransfer.dropEffect="move",c(`${f(b)}:${g(b,h)}`))},onDragLeave:h=>{h.currentTarget.contains(h.relatedTarget)||c(null)},onDrop:h=>{h.preventDefault(),i&&e.onTreeMove({source:i,target:b,position:g(b,h)}),a(null),c(null)}}),w=b=>{const h=l?.split(":")??[];return l?.startsWith(`${f(b)}:`)?` drop-target drop-${h[h.length-1]}`:""},k=e.regions.find(b=>b.id===e.selectedRegionId)??null;return s.jsxs("aside",{className:"layers",children:[s.jsxs("div",{className:"panel-toolbar",children:[s.jsxs(it,{className:"panel-tool primary",title:"Add region","aria-label":"Add region",onClick:e.onAddRegion,children:[s.jsx(Xt,{name:"plus"}),s.jsx("span",{children:"Region"})]}),s.jsx(it,{className:"panel-tool",title:"Split disconnected areas in the selected layer","aria-label":"Split disconnected areas",disabled:!e.canSplitDisconnectedAreas,onClick:e.onSplitDisconnectedAreas,children:s.jsx(Xt,{name:"split"})}),s.jsx("span",{className:"panel-toolbar-spacer"}),s.jsx(it,{className:"panel-tool danger",title:"Delete selected region","aria-label":"Delete selected region",disabled:!k,onClick:()=>k&&e.onDeleteRegion(k.id),children:s.jsx(Xt,{name:"trash"})})]}),e.regions.map(b=>{const h=b.id===e.selectedRegionId,v=o.has(b.id),_={kind:"region",regionId:b.id};return s.jsxs("section",{className:`region-group ${h?"selected":""}`,"aria-expanded":v,children:[s.jsxs("div",{className:`region-row${w(_)}`,...x(_),onClick:()=>e.onSelectRegion(b.id),children:[s.jsx(it,{className:"tree-drag-handle",draggable:!0,"aria-label":`Move ${b.name}`,title:"Drag to reorder; Alt + arrow keys also move",onDragStart:y=>p(_,y),onDragEnd:()=>{a(null),c(null)},onKeyDown:y=>{y.altKey&&y.key==="ArrowUp"&&(y.preventDefault(),e.onMoveRegion(b.id,-1)),y.altKey&&y.key==="ArrowDown"&&(y.preventDefault(),e.onMoveRegion(b.id,1))},onClick:y=>y.stopPropagation(),children:"⠿"}),s.jsx(it,{className:"region-expand","aria-expanded":v,title:v?"Collapse region":"Expand region",onClick:y=>{y.stopPropagation(),d(b.id)},children:s.jsx(Xt,{name:v?"chevron-down":"chevron-right"})}),s.jsx("i",{style:{background:b.authoring.color}}),s.jsx(vh,{value:b.name,onCommit:y=>e.onRenameRegion(b.id,y)}),s.jsx("span",{className:"region-usage",title:"Region usage",children:b.usage==="generation"?"GEN":b.usage==="detailer"?"DET":"BOTH"}),s.jsxs("span",{className:"priority",title:"Priority",children:["P",b.priority]}),s.jsx(it,{className:`tree-icon-button${b.authoring.visible?"":" deviant"}`,title:b.authoring.visible?"Hide region in editor":"Show region in editor","aria-pressed":b.authoring.visible,onClick:y=>{y.stopPropagation(),e.onToggleRegion(b.id,"visible")},children:s.jsx(Xt,{name:b.authoring.visible?"eye":"eye-off"})}),s.jsx(it,{className:`tree-icon-button${b.authoring.locked?" deviant":""}`,title:b.authoring.locked?"Unlock region":"Lock region","aria-pressed":b.authoring.locked,onClick:y=>{y.stopPropagation(),e.onToggleRegion(b.id,"locked")},children:s.jsx(Xt,{name:b.authoring.locked?"lock":"unlock"})}),s.jsx(it,{className:`tree-check${b.enabled?"":" deviant"}`,role:"checkbox","aria-checked":b.enabled,title:b.enabled?"Disable region output":"Enable region output",onClick:y=>{y.stopPropagation(),e.onToggleRegion(b.id,"enabled")},children:b.enabled&&s.jsx(Xt,{name:"check"})})]}),v&&s.jsx("div",{className:"geometry-layers",children:[...Ar(b)].reverse().map(y=>{const T=e.selectedLayerIds.includes(y.id),S=y.id===e.selectedLayerId,P=new Set(y.geometries.map(E=>E.type)),O=new Set(y.geometries.map(Ba)).size,B=P.size>1||O>1?"◈":y.geometries[0].type==="rect"?"▭":y.geometries[0].type==="ellipse"?"◯":y.geometries[0].type==="polygon"?"⬠":y.geometries[0].type==="raster_mask"?"▦":"✎",j=t.has(y.id),M={kind:"layer",regionId:b.id,layerId:y.id};return s.jsxs("div",{className:"geometry-tree-item",children:[s.jsxs("div",{className:`geometry-row ${T&&!e.selectedGeometryId?"selected":""} ${S?"primary-selection":""}${w(M)}`,...x(M),onClick:E=>e.onSelectLayer(b.id,y.id,E.shiftKey?"range":E.ctrlKey||E.metaKey?"toggle":"replace"),children:[s.jsx(it,{className:"tree-drag-handle",draggable:!0,"aria-label":`Move ${y.authoring.name}`,title:"Drag layer; Alt + arrow keys also move",onDragStart:E=>p(M,E),onDragEnd:()=>{a(null),c(null)},onKeyDown:E=>{E.altKey&&E.key==="ArrowUp"&&(E.preventDefault(),e.onMoveLayer(y.id,1)),E.altKey&&E.key==="ArrowDown"&&(E.preventDefault(),e.onMoveLayer(y.id,-1))},onClick:E=>E.stopPropagation(),children:"⠿"}),s.jsx(it,{className:"layer-expand","aria-expanded":j,title:j?"Collapse operations":"Expand operations",onClick:E=>{E.stopPropagation(),u(y.id)},children:s.jsx(Xt,{name:j?"chevron-down":"chevron-right"})}),s.jsxs("span",{title:`${y.geometries.length} operations · ${O} mask group${O===1?"":"s"}`,children:[B,y.geometries.some(E=>E.operation==="subtract")?"−":""]}),s.jsx(vh,{value:y.authoring.name,onCommit:E=>e.onRenameLayer(y.id,E)}),s.jsx(it,{className:`tree-icon-button${y.authoring.visible?"":" deviant"}`,title:y.authoring.visible?"Hide in editor":"Show in editor","aria-pressed":y.authoring.visible,onClick:E=>{E.stopPropagation(),e.onToggleLayer(y.id,"visible")},children:s.jsx(Xt,{name:y.authoring.visible?"eye":"eye-off"})}),s.jsx(it,{className:`tree-icon-button${y.authoring.locked?" deviant":""}`,title:y.authoring.locked?"Unlock layer":"Lock layer","aria-pressed":y.authoring.locked,onClick:E=>{E.stopPropagation(),e.onToggleLayer(y.id,"locked")},children:s.jsx(Xt,{name:y.authoring.locked?"lock":"unlock"})}),s.jsx(it,{className:`tree-check${y.enabled?"":" deviant"}`,role:"checkbox","aria-checked":y.enabled,title:y.enabled?"Disable mask output":"Enable mask output",onClick:E=>{E.stopPropagation(),e.onToggleLayer(y.id,"enabled")},children:y.enabled&&s.jsx(Xt,{name:"check"})}),s.jsxs("details",{className:"layer-overflow",onClick:E=>E.stopPropagation(),children:[s.jsx("summary",{title:"Layer actions","aria-label":"Layer actions",children:s.jsx(Xt,{name:"more"})}),s.jsxs("div",{children:[s.jsx(it,{onClick:E=>{E.currentTarget.closest("details").removeAttribute("open"),e.onDuplicateLayer(y.id)},children:"Duplicate layer"}),s.jsx(it,{className:"danger",onClick:E=>{E.currentTarget.closest("details").removeAttribute("open"),e.onDeleteLayer(y.id)},children:"Delete layer"})]})]})]}),j&&s.jsx("div",{className:"geometry-operations",children:y.geometries.map((E,z)=>{const L={kind:"geometry",regionId:b.id,layerId:y.id,geometryId:E.id};return s.jsxs("div",{className:`geometry-operation ${e.selectedGeometryId===E.id?"selected":""}${w(L)}`,...x(L),children:[s.jsx(it,{className:"tree-drag-handle",draggable:!0,"aria-label":`Move ${sr(E,z).name}`,title:"Drag operation",onDragStart:R=>p(L,R),onDragEnd:()=>{a(null),c(null)},children:"⠿"}),s.jsxs(it,{className:"geometry-operation-select",onClick:()=>e.onSelectGeometry(b.id,y.id,E.id),children:[s.jsx("span",{className:`operation-kind ${E.operation}`,children:E.operation==="add"?"+":"−"}),s.jsx("span",{children:sr(E,z).name}),s.jsx("small",{children:E.type.replace("_"," ")})]}),s.jsx(it,{className:`tree-icon-button${E.enabled!==!1?"":" deviant"}`,title:E.enabled!==!1?"Disable operation":"Enable operation","aria-pressed":E.enabled!==!1,onClick:()=>e.onToggleGeometry(E.id),children:s.jsx(Xt,{name:E.enabled!==!1?"eye":"eye-off"})}),s.jsx(it,{className:"danger",disabled:!qu(y.geometries,E.id),title:qu(y.geometries,E.id)?"Delete operation":"Additive base: remove dependent subtract operations first",onClick:()=>e.onDeleteGeometry(E.id),children:"×"})]},E.id)})})]},y.id)})})]},b.id)})]})}const mh=({name:e})=>e==="select"?s.jsx("svg",{viewBox:"0 0 24 24",children:s.jsx("path",{d:"M5 3l13 9-6 1 4 7-3 1-4-7-4 4z"})}):e.startsWith("rect")?s.jsxs("svg",{viewBox:"0 0 24 24",children:[s.jsx("rect",{x:"4",y:"5",width:"16",height:"14",rx:"1"}),s.jsx("path",{d:e.endsWith("subtract")?"M16 17h6":"M16 17h6M19 14v6"})]}):e.startsWith("ellipse")?s.jsxs("svg",{viewBox:"0 0 24 24",children:[s.jsx("ellipse",{cx:"11",cy:"12",rx:"8",ry:"6"}),s.jsx("path",{d:e.endsWith("subtract")?"M16 18h6":"M16 18h6M19 15v6"})]}):e.startsWith("polygon")?s.jsxs("svg",{viewBox:"0 0 24 24",children:[s.jsx("path",{d:"M4 18L7 5l12 3 1 11z"}),s.jsx("path",{d:e.endsWith("subtract")?"M16 18h6":"M16 18h6M19 15v6"})]}):e==="brush-add"?s.jsxs("svg",{viewBox:"0 0 24 24",children:[s.jsx("path",{d:"M14 4l6 6-9 9H5v-6z"}),s.jsx("path",{d:"M16 17h6M19 14v6"})]}):e==="brush-subtract"?s.jsxs("svg",{viewBox:"0 0 24 24",children:[s.jsx("path",{d:"M14 4l6 6-9 9H5v-6z"}),s.jsx("path",{d:"M16 17h6"})]}):s.jsxs("svg",{viewBox:"0 0 24 24",children:[s.jsx("circle",{cx:"12",cy:"12",r:"3"}),s.jsx("path",{d:"M12 2v3M12 19v3M2 12h3M19 12h3M5 5l2 2M17 17l2 2M19 5l-2 2M7 17l-2 2"})]});function N0({tool:e,brush:t,canSubtract:r,canvas:o,onTool:n,onBrush:i}){const[a,l]=m.useState(!1),c=e.startsWith("brush"),u=[{id:"select",title:"Select and transform"},{id:"rect-add",title:"Add rectangle"},{id:"rect-subtract",title:"Subtract rectangle from selected layer"},{id:"ellipse-add",title:"Add ellipse"},{id:"ellipse-subtract",title:"Subtract ellipse from selected layer"},{id:"polygon-add",title:"Add polygon (click points, Enter or double-click to close)"},{id:"polygon-subtract",title:"Subtract polygon from selected layer"},{id:"brush-add",title:"Add brush stroke"},{id:"brush-subtract",title:"Subtract from selected layer"}];return s.jsxs("div",{className:"artboard-tools",onPointerDown:d=>d.stopPropagation(),onPointerUp:d=>d.stopPropagation(),onWheel:d=>d.stopPropagation(),children:[s.jsx(Gw,{orientation:"vertical",density:"compact",label:"Regional drawing tools",items:[...u.map(d=>({id:d.id,label:d.title,icon:s.jsx(mh,{name:d.id}),active:e===d.id,disabled:d.id.endsWith("subtract")&&!r,onSelect:()=>{n(d.id),d.id.startsWith("brush")||l(!1)},group:d.id.split("-")[0]})),...c?[{id:"brush-settings",label:"Brush settings",icon:s.jsx(mh,{name:"settings"}),active:a,onSelect:()=>l(d=>!d),group:"settings"}]:[]]}),c&&a&&s.jsxs("div",{className:"brush-flyout",children:[s.jsxs("header",{children:[s.jsx("strong",{children:"Brush"}),s.jsx(oe,{intent:"ghost",iconOnly:!0,"aria-label":"Close brush settings",onClick:()=>l(!1),children:"×"})]}),s.jsx(Pt,{label:"Brush size",value:t.size,min:.005,max:.25,step:.005,unit:`${Math.round(t.size*Math.min(o.width,o.height))} px`,onValue:d=>i({...t,size:d})}),s.jsx(Pt,{label:"Hardness",value:t.hardness,min:0,max:1,step:.05,unit:"×",onValue:d=>i({...t,hardness:d})}),s.jsx(Pt,{label:"Opacity",value:t.opacity,min:.05,max:1,step:.05,unit:"×",onValue:d=>i({...t,opacity:d})}),s.jsx(qe,{label:"Shape",value:t.shape,onValue:d=>i({...t,shape:d}),options:[{value:"round",label:"Round"},{value:"square",label:"Square"}]}),s.jsx(qe,{label:"Pressure",value:t.pressureMode,onValue:d=>i({...t,pressureMode:d}),options:[{value:"constant",label:"Constant"},{value:"stylus",label:"Stylus"}]})]})]})}const O0=({control:e,groups:t,conflicts:r,onChange:o})=>{const n=a=>a.charAt(0).toUpperCase()+a.slice(1),i=a=>{const l=t.find(c=>c.id===a);!l||e.assignments.some(c=>c.groupId===a)||o({...e,assignments:[...e.assignments,{groupId:a,groupPath:l.pathLabel,groupTitle:String(l.group.title||""),action:"bypass"}]})};return s.jsxs("section",{className:"bv-control-card",children:[s.jsxs("div",{className:"bv-control-title",children:[s.jsx(cn,{label:"Control name",value:e.name,onValue:a=>o({...e,name:a})}),s.jsxs("span",{children:[e.assignments.length," groups"]}),s.jsx(oe,{intent:"danger",onClick:()=>o(null),children:"Delete"})]}),s.jsx("div",{className:"bv-assignments",children:e.assignments.map((a,l)=>{const c=r.find(f=>f.groupId===a.groupId),u=c?.entries.filter(f=>f.action===c.winnerAction).map(f=>f.controlName).join(", "),d=c?a.action===c.winnerAction?`Overrides ${[...new Set(c.entries.filter(f=>f.action!==c.winnerAction).map(f=>n(f.action)))].join(", ")}`:`Overridden by ${n(c.winnerAction)} from ${u}`:"";return s.jsxs("div",{className:a.unresolved?"unresolved":c?"conflict":"",children:[s.jsxs("span",{children:[a.unresolved?"⚠ ":"",a.groupPath,d&&s.jsxs("small",{children:["⚠ ",d]})]}),s.jsx(qe,{label:"Action",value:a.action,options:[{value:"activate",label:"Activate"},{value:"mute",label:"Mute"},{value:"bypass",label:"Bypass"}],onValue:f=>o({...e,assignments:e.assignments.map((p,g)=>g===l?{...p,action:f}:p)})}),s.jsx(oe,{intent:"ghost",iconOnly:!0,"aria-label":"Remove assignment",onClick:()=>o({...e,assignments:e.assignments.filter((f,p)=>p!==l)}),children:"×"})]},a.groupId)})}),s.jsx(qe,{label:"Add group",value:"",onValue:i,options:[{value:"",label:"Choose group…"},...t.map(a=>({value:a.id,label:a.pathLabel}))]})]})},M0=100;function Ks(e,t=r=>structuredClone(r)){const[r,o]=m.useState(()=>t(e)),[n,i]=m.useState([]),[a,l]=m.useState([]),c=m.useRef(r);c.current=r;const u=m.useCallback(x=>{o(w=>{const k=typeof x=="function"?x(t(w)):x;return i(b=>[...b.slice(-99),t(w)]),l([]),t(k)})},[t]),d=m.useCallback((x,w=!1)=>{o(t(x)),w&&(i([]),l([]))},[t]),f=m.useCallback(()=>{i(x=>{if(!x.length)return x;const w=x[x.length-1];return l(k=>[t(c.current),...k].slice(0,M0)),o(t(w)),x.slice(0,-1)})},[t]),p=m.useCallback(()=>{l(x=>{if(!x.length)return x;const w=x[0];return i(k=>[...k.slice(-99),t(c.current)]),o(t(w)),x.slice(1)})},[t]),g=m.useCallback(()=>{i([]),l([])},[]);return{value:r,commit:u,replace:d,undo:f,redo:p,clear:g,canUndo:n.length>0,canRedo:a.length>0}}const A0=e=>e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement||e instanceof HTMLElement&&e.isContentEditable;function qs(e,t=!0){m.useEffect(()=>{if(!t)return;const r=a=>{if(A0(a.target)||!a.ctrlKey||a.altKey)return null;const l=a.key.toLowerCase();return l==="y"||l==="z"&&a.shiftKey?"redo":l==="z"?"undo":null},o=a=>{a.preventDefault(),a.stopImmediatePropagation()},n=a=>{const l=r(a);l&&(o(a),l==="undo"&&e.canUndo?e.undo():l==="redo"&&e.canRedo&&e.redo())},i=a=>{r(a)&&o(a)};return window.addEventListener("keydown",n,{capture:!0}),window.addEventListener("keyup",i,{capture:!0}),()=>{window.removeEventListener("keydown",n,{capture:!0}),window.removeEventListener("keyup",i,{capture:!0})}},[t,e.canRedo,e.canUndo,e.redo,e.undo])}function D0(){return globalThis.crypto?.randomUUID?.()??`bv-control-${Date.now()}-${Math.random().toString(16).slice(2)}`}const I0=()=>{const e=m.useMemo(()=>{const d=sn(),f=new Set(is(ct()).map(p=>p.id));return{...d,controls:d.controls.map(p=>({...p,assignments:p.assignments.map(g=>({...g,unresolved:!f.has(g.groupId)}))}))}},[]),t=Ks(e),r=t.value,o=d=>t.commit(d);qs(t),m.useEffect(()=>{const d=f=>{const p=f.detail,g=new Map(p.controls.map(w=>[w.id,w.enabled])),x={...r,controls:r.controls.map(w=>g.has(w.id)?{...w,enabled:g.get(w.id)}:w)};JSON.stringify(x)!==JSON.stringify(r)&&t.replace(x)};return window.addEventListener(ri,d),()=>window.removeEventListener(ri,d)},[r,t.replace]);const n=m.useMemo(()=>is(ct()),[r]),i=m.useMemo(()=>wv(r),[r]),a=m.useRef(!1);m.useEffect(()=>{if(!a.current){a.current=!0;return}const d=window.setTimeout(()=>{const f=r.controls.map(g=>g.name.trim());if(f.some(g=>!g)||new Set(f).size!==f.length)return;const p=new Set(n.map(g=>g.id));ff({...r,controls:r.controls.map(g=>({...g,name:g.name.trim(),assignments:g.assignments.map(x=>({...x,unresolved:!p.has(x.groupId)}))}))})},250);return()=>window.clearTimeout(d)},[r,n]);const l=(d,f)=>{o({...r,controls:f?r.controls.map((p,g)=>g===d?f:p):r.controls.filter((p,g)=>g!==d)})},c=()=>{let d="New Control",f=2;for(;r.controls.some(p=>p.name===d);)d=`New Control ${f++}`;o({...r,controls:[...r.controls,{id:D0(),name:d,enabled:!0,assignments:[]}]})},u=r.controls.map((d,f)=>({id:d.id,title:d.name||"Unnamed control",description:`${d.assignments.length} assignment${d.assignments.length===1?"":"s"}`,content:s.jsx(O0,{control:d,groups:n,conflicts:i,onChange:p=>l(f,p)})}));return s.jsxs("div",{className:"bv-ui-stack",children:[s.jsx(eo,{label:"Force active after releasing restrictions",checked:r.forceActive,onValue:d=>o({...r,forceActive:d})}),s.jsx("div",{className:"bv-controls",children:s.jsx(Ia,{items:u,onReorder:d=>o({...r,controls:d.map(f=>r.controls.find(p=>p.id===f.id)).filter(Boolean)}),onRemove:d=>o({...r,controls:r.controls.filter(f=>f.id!==d)})})}),s.jsxs("footer",{className:"bv-ui-inline-footer",children:[s.jsx(Ev,{tone:"success",dot:!0,children:"Autosaved"}),s.jsx(oe,{intent:"ghost",disabled:!t.canUndo,onClick:t.undo,children:"Undo"}),s.jsx(oe,{intent:"ghost",disabled:!t.canRedo,onClick:t.redo,children:"Redo"}),s.jsx(oe,{onClick:c,children:"Add Control"})]})]})},Ko=new Map,ls=new Map;function yf(e,t={}){const r=t.key?Ko.get(t.key):void 0;if(r)return r.activate(e),r.close;const o=document.createElement("div");o.className="bv-ui",o.dataset.bvUiMount="true",document.body.append(o);const n=fi(o);let i=!1,a=0,l=e;const c=()=>{i||(i=!0,t.key&&Ko.get(t.key)?.close===c&&Ko.delete(t.key),n.unmount(),o.remove())},u=g=>{g&&(l=g),a+=1,document.body.append(o),o.querySelector(".bv-managed-window")?.dispatchEvent(new Event("bv-ui-activate")),n.render(l(c,a))},d=()=>o.querySelector(".bv-managed-window")?.dispatchEvent(new Event("bv-ui-minimize")),f=()=>{const g=o.querySelector(".bv-managed-window"),x=g?.getBoundingClientRect();return{mode:g?.classList.contains("workspace")?"workspace":"floating",geometry:x?{x:x.left,y:x.top,width:x.width,height:x.height}:void 0}},p=g=>o.querySelector(".bv-managed-window")?.dispatchEvent(new CustomEvent("bv-ui-set-window-state",{detail:g}));if(t.key){const g={activate:u,minimize:d,state:f,setState:p,close:c};Ko.set(t.key,g);const x=ls.get(t.key);x&&(ls.delete(t.key),requestAnimationFrame(()=>g.setState(x)))}return n.render(l(c,a)),c}function _f(e,t,r,o){if(e===t)return Ko.get(e)?.activate();const n=Ko.get(e),i=n?.state(),a=Ko.get(t);i&&ls.set(t,i),a?a.activate():r(),i&&a&&(ls.delete(t),requestAnimationFrame(()=>a.setState(i))),o?n?.close():n?.minimize()}const zv="BV.NodePack.UI.Size",Fv="BV.NodePack.UI.ReducedEffects",wf="BV.NodePack.UI.WindowSwitchMode";let ji="keep",Uv;const Ju=new Set,j0=e=>e==="replace"?"replace":"keep",ni=()=>ji,B0=e=>{Uv=e},P0=e=>(Ju.add(e),()=>Ju.delete(e));function kf(e,t=!0){return ji=j0(e),t&&Uv?.(ji),Ju.forEach(r=>r(ji)),ji}const z0=["bv-ui-size-compact","bv-ui-size-default","bv-ui-size-large"];function F0(e){return e==="compact"||e==="large"?e:"default"}function Vv(e,t=document.documentElement){const r=F0(e);return t.classList.remove(...z0),t.classList.add(`bv-ui-size-${r}`),r}function Wv(e,t=document.documentElement){return t.classList.toggle("bv-ui-reduced-effects",!!e),!!e}function U0(e){Vv(e?.getSettingValue?.(zv,"default")),Wv(e?.getSettingValue?.(Fv,!1)),kf(e?.getSettingValue?.(wf,"keep"),!1)}function V0(e,t,r,o){const n=e.x+e.width,i=e.y+e.height;let a=e.x,l=e.y,c=e.width,u=e.height;return r.includes("e")&&(c=Math.max(o.width,e.width+t.x)),r.includes("s")&&(u=Math.max(o.height,e.height+t.y)),r.includes("w")&&(c=Math.max(o.width,e.width-t.x),a=n-c),r.includes("n")&&(u=Math.max(o.height,e.height-t.y),l=i-u),{x:a,y:l,width:c,height:u}}function W0(e,t,r){const o={...e};for(const n of["x","y","width","height"])r?.[n]!==void 0&&r[n]!==t?.[n]&&(o[n]=r[n]);return o}function H0(e,t,r,o=12,n=128){const i=e??{left:0,right:r.width,bottom:r.height,height:r.height},l=t.filter(c=>c.width>0&&c.height>=i.height*.45&&c.rightc.left-u.left||u.right-c.right).reduce((c,u)=>u.left<=c+4?Math.max(c,u.right):c,i.left);return{left:Math.round(Math.max(i.left+n,l)+o),bottom:Math.round(Math.max(o,r.height-i.bottom+o))}}const Zo=[];let xh=!1;const $0=e=>e.isConnected&&!e.hidden&&e.offsetParent!==null;function Y0(e){const t=Zo.filter($0);if(t.length<2)return;const r=document.activeElement instanceof Element?t.findIndex(n=>n===document.activeElement||n.contains(document.activeElement)):-1,o=r<0?t.length-1:(r+(e?-1:1)+t.length)%t.length;t[o].dispatchEvent(new CustomEvent("bv-ui-activate"))}function X0(){xh||(xh=!0,window.addEventListener("keydown",e=>{e.key!=="Tab"||!e.ctrlKey||e.altKey||e.metaKey||(e.preventDefault(),e.stopImmediatePropagation(),Y0(e.shiftKey))},!0))}function G0(e){return X0(),Zo.push(e),()=>{const t=Zo.indexOf(e);t>=0&&Zo.splice(t,1)}}function yh(e){const t=Zo.indexOf(e);t>=0&&Zo.splice(t,1),Zo.push(e)}const Hv="bvWindowMenuVisible",ii="bv-window-menu-visibility-changed",K0=e=>!["BV Smart Pipe","BV Smart Pipe Merge"].includes(e);function vn(e){const t=e?.properties?.[Hv];return typeof t=="boolean"?t:K0(String(e?.type??e?.comfyClass??""))}function mn(e,t){e&&(e.properties??(e.properties={}),e.properties[Hv]=!!t,e.graph?.setDirtyCanvas?.(!0,!0),window.dispatchEvent(new CustomEvent(ii,{detail:{node:e,visible:!!t}})))}function q0(e){return window.addEventListener(ii,e),()=>window.removeEventListener(ii,e)}let Zu=0;window.addEventListener(ii,()=>Zu++);function hi(e){return m.useSyncExternalStore(q0,()=>Zu,()=>Zu),vn(e)}const J0=(e,t)=>String(e?.id??e?._id??e?.extra?.uuid??t);function Ef(e,t){const r=[],o=(n,i,a,l=new Set)=>{if(!n||l.has(n))return;const c=new Set(l);c.add(n);const u=J0(n,i.length?i[i.length-1]:"root");for(const d of n._nodes??n.nodes??[]){const f=String(d.id),p=[...i,u];t(d)&&r.push({node:d,graph:n,path:p,key:`${p.join("/")}:${f}`,breadcrumb:a.join(" › ")});const g=d.subgraph??(()=>{try{return d.getSubgraph?.()}catch{return null}})();g&&o(g,[...p,f],[...a,String(d.title||d.type||`#${f}`)],c)}};return o(e,[],[]),r}function ma(e,t){return Ef(e,r=>r===t)[0]?.key??String(t?.id??"")}const ss="bv-toggle-toolbar-window-launcher";function Z0({getColumns:e}){const[t,r]=m.useState({left:0,top:0}),[o,n]=m.useState(!1),[i,a]=m.useState(!1),[,l]=m.useState(0),c=m.useRef(null),u=m.useRef(),d=m.useRef(),f=m.useRef(0),p=()=>{u.current&&window.clearTimeout(u.current),d.current&&window.clearTimeout(d.current)},g=(v,_)=>{const y=v.getBoundingClientRect(),T=Math.min(Math.max(1,_)*220,window.innerWidth-24),S=Math.min(420,window.innerHeight-84),P=Math.max(12,Math.min(y.left,window.innerWidth-T-12)),O=y.bottom+6+S<=window.innerHeight-12?y.bottom+6:Math.max(12,y.top-S-6);return{left:P,top:O}},x=m.useCallback((v,_)=>{p(),u.current=window.setTimeout(()=>{if(document.body.classList.contains("bv-toolbar-no-editor")&&document.body.classList.contains("bv-toolbar-no-quick"))return;const y=[...document.querySelectorAll(".bv-regional-action")].filter(S=>S.offsetParent!==null),T=_?.offsetParent?_:y[0];T&&(a(!1),r(g(T,e(!1).filter(S=>S.items.length).length)),n(!0))},v)},[e]),w=m.useCallback(()=>x(180),[x]),k=m.useCallback(()=>{u.current&&window.clearTimeout(u.current);const v=Math.max(280,f.current-Date.now());d.current=window.setTimeout(()=>{c.current?.matches(":hover")||(n(!1),a(!1))},v)},[]);m.useEffect(()=>{const v=new Map,_=()=>{for(const T of document.querySelectorAll(".bv-regional-action")){if(v.has(T))continue;const S=()=>w(),P=()=>k();T.addEventListener("pointerenter",S),T.addEventListener("pointerleave",P);const O=()=>{T.removeEventListener("pointerenter",S),T.removeEventListener("pointerleave",P)};v.set(T,O)}};_();const y=new MutationObserver(_);return y.observe(document.body,{childList:!0,subtree:!0}),()=>{y.disconnect(),v.forEach(T=>T()),p()}},[k,w]),m.useEffect(()=>{if(!o)return;const v=_=>{_.key==="Escape"&&(n(!1),a(!1))};return window.addEventListener("keydown",v),()=>window.removeEventListener("keydown",v)},[o]),m.useEffect(()=>{const v=_=>o?(n(!1),a(!1)):x(0,_.detail?.anchor);return window.addEventListener(ss,v),()=>window.removeEventListener(ss,v)},[o,x]),m.useEffect(()=>{const v=()=>l(_=>_+1);return window.addEventListener(ii,v),()=>window.removeEventListener(ii,v)},[]);const b=v=>{p(),f.current=Date.now()+700;const _=c.current?.getBoundingClientRect();a(v),requestAnimationFrame(()=>requestAnimationFrame(()=>{const y=c.current?.getBoundingClientRect();!_||!y||r(T=>({...T,top:Math.max(12,Math.min(window.innerHeight-y.height-12,T.top+_.bottom-y.bottom))}))}))};if(!o)return null;const h=e(i).filter(v=>v.items.length);return Vr.createPortal(s.jsxs("div",{ref:c,className:"bv-toolbar-window-launcher bv-ui bv-density-compact",style:{left:t.left,top:t.top,"--bv-launcher-columns":Math.max(1,h.length)},role:"dialog","aria-label":"BV window launcher",onPointerEnter:p,onPointerLeave:k,children:[s.jsx("div",{className:"bv-toolbar-window-launcher__body",children:h.length?h.map(v=>s.jsxs("section",{children:[s.jsx("h3",{children:v.label}),s.jsx("div",{children:v.items.map(_=>s.jsxs("div",{className:`bv-toolbar-launcher-row ${_.hidden?"is-hidden":""}`,children:[s.jsxs(oe,{intent:"ghost",disabled:_.disabled,onClick:()=>{n(!1),a(!1),_.onSelect()},children:[s.jsx("span",{children:_.label}),_.meta&&s.jsx("small",{children:_.meta})]}),_.secondary&&s.jsx("button",{type:"button",className:"bv-toolbar-launcher-secondary",title:_.secondary.label,"aria-label":_.secondary.label,onClick:()=>{n(!1),a(!1),_.secondary?.onSelect()},children:"✎"}),_.hidden&&_.onReveal&&s.jsx("button",{type:"button",className:"bv-toolbar-launcher-reveal",title:"Show in BV window menus","aria-label":`Show ${_.label} in BV window menus`,onClick:_.onReveal,children:"◉"})]},_.id))})]},v.id)):s.jsxs("div",{className:"bv-toolbar-launcher-empty",children:[s.jsx("strong",{children:"No visible BV windows"}),s.jsx("span",{children:"Show hidden nodes to restore one."})]})}),s.jsx("footer",{children:s.jsx(Xs,{label:"Show hidden nodes",value:i,trueLabel:"Shown",falseLabel:"Hidden",onValue:b})})]}),document.body)}var gi=class{constructor(){D(this,"attributes");D(this,"nameToAttribute");this.attributes=[],this.nameToAttribute=new Map}addWithAll(e,t,r,o){const n=new te(e,t,r,o);return this.attributes.push(n),this.nameToAttribute.set(e,n),n}addInherited(e,t){return this.addWithAll(e,t,void 0,!1)}add(e,t,r){return this.addWithAll(e,void 0,t,r)}getAttributes(){return this.attributes}getModelName(e){const t=this.nameToAttribute.get(e);if(t!==void 0)return t.modelName}toJson(e,t){for(const r of this.attributes){const o=t[r.name];(r.alwaysWriteJson||o!==r.defaultValue)&&(e[r.name]=o)}}fromJson(e,t){for(const r of this.attributes){let o=e[r.name];o===void 0&&r.alias&&(o=e[r.alias]),o===void 0?t[r.name]=r.defaultValue:t[r.name]=o}}update(e,t){for(const r of this.attributes)if(Object.prototype.hasOwnProperty.call(e,r.name)){const o=e[r.name];o===void 0?delete t[r.name]:t[r.name]=o}}setDefaults(e){for(const t of this.attributes)e[t.name]=t.defaultValue}pairAttributes(e,t){for(const r of t.attributes)if(r.modelName&&this.nameToAttribute.has(r.modelName)){const o=this.nameToAttribute.get(r.modelName);o.setpairedAttr(r),r.setpairedAttr(o),o.setPairedType(e)}}toTypescriptInterface(e,t){const r=[],o=this.attributes.sort((n,i)=>n.name.localeCompare(i.name));r.push("export interface I"+e+"Attributes {");for(let n=0;ns.jsxs("span",{className:"bv-input-shell",children:[o&&s.jsx("span",{className:"bv-field-icon","aria-hidden":"true",children:o}),s.jsx("input",{...l,id:u&&l.id?`${l.id}-expanded`:l.id,"aria-label":u?e:l["aria-label"],"aria-invalid":!!r,onChange:d=>i?.(d.target.value)}),n&&s.jsx("span",{className:"bv-field-suffix",children:n})]});return s.jsx(Rr,{label:e,help:t,error:r,className:a,children:s.jsx($s,{label:e,summary:String(l.value??l.defaultValue??l.placeholder??"Edit value"),icon:o,popover:c(!0),children:c()})})}function x0({label:e,help:t,error:r,icon:o,resize:n="vertical",onValue:i,className:a="",...l}){const c=(d=!1)=>s.jsxs("span",{className:`bv-textarea-shell resize-${n}`,children:[o&&s.jsx("span",{className:"bv-field-icon","aria-hidden":"true",children:o}),s.jsx("textarea",{...l,id:d&&l.id?`${l.id}-expanded`:l.id,"aria-label":d?e:l["aria-label"],"aria-invalid":!!r,onChange:f=>i?.(f.target.value)})]}),u=String(l.value??l.defaultValue??l.placeholder??"Edit text");return s.jsx(Rr,{label:e,help:t,error:r,className:`bv-textarea-field ${a}`,children:s.jsx($s,{label:e,summary:u,icon:o,popover:c(!0),children:c()})})}const y0=m.forwardRef(function(t,r){return s.jsx("textarea",{...t,ref:r})});function Pt({label:e,value:t,min:r,max:o,step:n,unit:i,icon:a,help:l,slider:c=!0,onValue:u,className:d=""}){const f=m.useId(),[p,g]=m.useState(String(t));m.useEffect(()=>g(String(t)),[t]);const x=T=>Math.max(r,Math.min(o,T)),w=()=>{const T=Number(p);Number.isFinite(T)?u(x(T)):g(String(t))},k=`${Math.max(0,Math.min(100,(t-r)/Math.max(Number.EPSILON,o-r)*100))}%`,b=T=>s.jsxs("div",{className:"bv-number-box",children:[a&&s.jsx("span",{className:"bv-field-icon","aria-hidden":"true",children:a}),s.jsx("input",{id:T,value:p,inputMode:Number.isInteger(n)?"numeric":"decimal",onChange:S=>g(S.target.value),onBlur:w,onKeyDown:S=>{S.key==="Enter"&&S.currentTarget.blur(),S.key==="Escape"&&g(String(t))}}),i&&s.jsx("span",{className:"bv-number-unit",children:i})]}),h=s.jsxs("div",{className:"bv-number-slider",style:{"--bubble-left":k},children:[s.jsxs("output",{children:[t,i??""]}),s.jsx("input",{className:"bv-number-track",type:"range",min:r,max:o,step:n,value:t,style:{"--range-fill":k},"aria-labelledby":`${f}-label`,onChange:T=>u(x(+T.target.value))})]}),v=s.jsxs("div",{className:"bv-number-ticks",children:[s.jsx("span",{children:r}),s.jsx("span",{children:o})]}),_=s.jsxs(s.Fragment,{children:[s.jsxs("div",{className:"bv-number-value-row",children:[c&&h,b(f)]}),c&&v]}),y=s.jsxs("div",{className:"bv-number-popup",children:[c&&h,b(`${f}-expanded`),c&&v]});return s.jsxs("div",{className:`bv-number-field ${c?"has-slider":"direct-only"} ${d}`.trim(),children:[s.jsx("label",{id:`${f}-label`,htmlFor:f,children:e}),s.jsx($s,{label:e,summary:`${t}${i??""}`,icon:a,popover:y,children:_}),l&&s.jsx("small",{className:"bv-control-help bv-control-help-overlay",children:l})]})}function Iv({label:e,value:t,options:r,onValue:o,disabled:n,className:i=""}){const[a,l]=m.useState(!1),c=m.useRef(null),u=r.find(d=>d.value===t);return s.jsxs("div",{ref:c,className:`bv-select-popover ${i}`.trim(),children:[s.jsxs("button",{type:"button",className:"bv-select-trigger",disabled:n,"aria-label":e,"aria-haspopup":"listbox","aria-expanded":a,onClick:()=>l(d=>!d),children:[s.jsx("span",{children:u?.label??"Select…"}),s.jsx("span",{className:"bv-chevron","aria-hidden":"true"})]}),s.jsx(jo,{open:a,anchor:c,onClose:()=>l(!1),className:"bv-select-menu",matchWidth:!0,children:s.jsx("div",{role:"listbox","aria-label":e,children:r.map(d=>s.jsxs("button",{type:"button",role:"option","aria-selected":d.value===t,disabled:d.disabled,onClick:f=>{o(d.value,{shiftKey:f.shiftKey}),l(!1)},children:[d.icon,s.jsx("span",{children:d.label})]},d.value))})})]})}function qe({label:e,value:t,options:r,onValue:o,help:n,disabled:i}){return s.jsx(Rr,{label:e,help:n,children:s.jsx(Iv,{label:e,value:t,options:r,onValue:o,disabled:i})})}function _0({label:e,value:t,options:r,onValue:o,disabled:n,className:i=""}){return s.jsx(Iv,{label:e,value:t,options:r,onValue:o,disabled:n,className:`bv-density-compact ${i}`})}function eo({label:e,checked:t,onValue:r,help:o,disabled:n}){return s.jsxs("label",{className:"bv-checkbox-field",children:[s.jsx("input",{type:"checkbox",checked:t,disabled:n,onChange:i=>r(i.target.checked)}),s.jsx("span",{className:"bv-checkbox-mark","aria-hidden":"true"}),s.jsxs("span",{children:[s.jsx("strong",{children:e}),o&&s.jsx("small",{children:o})]})]})}function Xs({label:e,value:t,onValue:r,trueLabel:o="True",falseLabel:n="False",help:i}){return s.jsx(Rr,{label:e,help:i,children:s.jsxs("button",{type:"button",role:"switch","aria-checked":t,className:"bv-toggle",onClick:()=>r(!t),children:[s.jsx("span",{className:"bv-toggle-track",children:s.jsx("span",{})}),s.jsx("strong",{children:t?o:n})]})})}function w0({label:e,value:t,options:r,onValue:o,minSelected:n=0,help:i}){const[a,l]=m.useState(!1),c=m.useRef(null),u=d=>{const f=t.includes(d);f&&t.length<=n||o(f?t.filter(p=>p!==d):[...t,d])};return s.jsx(Rr,{label:e,help:i,children:s.jsxs("div",{ref:c,className:"bv-tag-select",children:[s.jsxs("button",{type:"button",className:"bv-tag-select-trigger","aria-haspopup":"listbox","aria-expanded":a,onClick:()=>l(d=>!d),children:[s.jsx("span",{className:"bv-tag-values",children:t.map(d=>s.jsx("span",{className:"bv-tag",children:r.find(f=>f.value===d)?.label??d},d))}),s.jsx("span",{className:"bv-chevron","aria-hidden":"true"})]}),s.jsx(jo,{open:a,anchor:c,onClose:()=>l(!1),className:"bv-select-menu bv-tag-select-menu",matchWidth:!0,children:s.jsx("div",{role:"listbox","aria-label":e,"aria-multiselectable":"true",children:r.map(d=>{const f=t.includes(d.value),p=f&&t.length<=n;return s.jsxs("button",{type:"button",role:"option","aria-selected":f,disabled:d.disabled||p,onClick:()=>u(d.value),children:[s.jsx("span",{className:"bv-tag-select-check","aria-hidden":"true",children:f?"✓":""}),s.jsx("span",{children:d.label})]},d.value)})})})]})})}function k0({label:e,value:t,onValue:r,onClear:o}){const[n,i]=m.useState(!1);return s.jsx(Rr,{label:e,children:s.jsxs("span",{className:"bv-input-shell",children:[s.jsx("input",{type:n?"text":"password",value:t,autoComplete:"off",onChange:a=>r(a.target.value)}),s.jsx(oe,{type:"button",intent:"ghost",className:"bv-field-action",onClick:()=>i(!n),children:n?"Hide":"Show"}),s.jsx(oe,{type:"button",intent:"ghost",className:"bv-field-action",onClick:()=>{r(""),o?.()},children:"Clear"})]})})}function E0({label:e,value:t,onValue:r,alpha:o=!1,help:n}){const[i,a]=m.useState(!1),l=m.useRef(null),c=/^#[0-9a-f]{6}([0-9a-f]{2})?$/i.test(t),u=o?l0:o0,d=s.jsx("input",{value:t,"aria-label":`${e} hexadecimal value`,spellCheck:!1,onChange:p=>r(p.target.value)}),f=s.jsxs("div",{className:"bv-color-expanded",children:[d,s.jsx(u,{color:c?t:o?"#8D70FFFF":"#8D70FF",onChange:r})]});return s.jsx(Rr,{label:e,help:n,error:c?void 0:"Enter a valid hexadecimal color.",children:s.jsx($s,{label:e,summary:t,icon:s.jsx("span",{className:"bv-color-dot",style:{background:c?t:"#000"}}),popover:f,children:s.jsxs("div",{ref:l,className:"bv-color-field",children:[s.jsx("button",{type:"button",className:"bv-color-swatch",style:{background:c?t:"#000"},onClick:()=>a(!i),"aria-label":`${e}: ${t}`,"aria-haspopup":"dialog","aria-expanded":i}),d,s.jsx(jo,{open:i,anchor:l,onClose:()=>a(!1),className:"bv-color-popover",children:f})]})})})}function as({items:e,value:t,onValue:r,exclusive:o=!1}){const n=i=>r(t.includes(i)?t.filter(a=>a!==i):o?[i]:[...t,i]);return s.jsx("div",{className:"bv-accordion",children:e.map(i=>s.jsxs("section",{className:i.disabled?"disabled":"",children:[s.jsxs("button",{type:"button","aria-expanded":t.includes(i.id),disabled:i.disabled,onClick:()=>n(i.id),children:[s.jsx("span",{children:i.title}),s.jsx("span",{className:"bv-chevron"})]}),t.includes(i.id)&&s.jsx("div",{children:i.content})]},i.id))})}function Gs({collectors:e,collectorId:t,resourceId:r,resolved:o=!0,onCollector:n,onResource:i}){const a=e.find(d=>d.id===t),l=a?.resources.find(d=>d.id===r),c=!!(t||r),u=c&&(!o||!a||!l);return s.jsx("div",{className:`bv-resource-picker ${u?"is-unresolved":""}`,children:s.jsxs(Go,{minimum:130,children:[s.jsx(qe,{label:"Collector",value:t,options:[{value:"",label:"Select collector"},...e.map(d=>({value:d.id,label:d.label}))],onValue:n}),s.jsx(qe,{label:"Resource",value:r,disabled:!a,options:[{value:"",label:"Select resource"},...(a?.resources??[]).map(d=>({value:d.id,label:d.label}))],onValue:i})]})})}const gh=["#E45756","#4C78A8","#54A24B","#F2CF5B","#B279A2","#FF9DA6"],jv=e=>gh[e%gh.length],Mt=()=>crypto.randomUUID(),bh=()=>({schema:"bv.regional",version:2,document_id:Mt(),title:"Regional Prompt",canvas:{width:1024,height:1024},prompts:{global:{positive_source:"",negative_source:""},background:{positive_source:"",negative_source:""}},negative_mode:"auto",overlap:{mode:"joint"},regions:[]}),T0=e=>({id:Mt(),name:`Region ${e+1}`,parent_region_id:null,enabled:!0,usage:"generation",strength:1,priority:e,prompts:{positive_source:"",negative_source:""},mask:{feather:.01},geometry:[],authoring:{visible:!0,locked:!1,color:jv(e)}}),Kt=e=>structuredClone(e);function R0(e,t){return{...e,document_id:t}}const sr=(e,t=0)=>e.authoring??{name:`${e.type==="rect"?"Rectangle":e.type==="ellipse"?"Ellipse":e.type==="polygon"?"Polygon":e.type==="raster_mask"?"Raster":"Brush"} ${t+1}`,visible:!0,locked:!1},zt=e=>e.layer_id??e.id,Ba=e=>e.mask_group_id??zt(e);function Bv(e,t){const r=new Map;for(const o of e){const n=t(o),i=r.get(n);i?i.push(o):r.set(n,[o])}return[...r].map(([o,n],i)=>({id:o,geometries:n,authoring:sr(n[0],i),enabled:n.some(a=>a.enabled!==!1)}))}function Ar(e){return Bv(e.geometry,zt)}function S0(e){return Bv(e,Ba)}function un(e){const t=typeof e=="string"?JSON.parse(e):Kt(e);if(t?.schema!=="bv.regional"||![1,2].includes(t?.version)||!Array.isArray(t?.regions))throw new Error("Not a valid BV_REGIONAL document");if(t.version===1){for(const r of t.regions)r.usage="generation";t.version=2}for(const r of t.regions){if(!["generation","detailer","both"].includes(r.usage))throw new Error(`Invalid region usage: ${r.usage}`);const o=r.geometry.find(n=>!n.layer_id)?.id;r.geometry.forEach((n,i)=>{n.enabled??(n.enabled=!0),n.layer_id??(n.layer_id=o??n.id),n.authoring??(n.authoring=sr(n,i)),n.type==="brush_stroke"&&(n.shape??(n.shape="round"),n.pressure_mode??(n.pressure_mode="constant"))})}return t}function Pv(e){const t=new Map;for(const r of e){const o=Ba(r);t.has(o)||t.set(o,r)}return[...t.values()].every(r=>r.operation==="add")}function qu(e,t){return Pv(e.filter(r=>r.id!==t))}function vh({value:e,onCommit:t}){const[r,o]=m.useState(!1),[n,i]=m.useState(e);if(!r)return s.jsx("span",{className:"layer-name",title:e,onDoubleClick:l=>{l.stopPropagation(),i(e),o(!0)},children:e});const a=()=>{const l=n.trim();l&&t(l),o(!1)};return s.jsx(Gw,{className:"inline-name",autoFocus:!0,value:n,onChange:l=>i(l.target.value),onBlur:a,onClick:l=>l.stopPropagation(),onKeyDown:l=>{l.stopPropagation(),l.key==="Enter"&&a(),l.key==="Escape"&&o(!1)}})}function Xt({name:e}){const t={"chevron-right":s.jsx("path",{d:"m9 6 6 6-6 6"}),"chevron-down":s.jsx("path",{d:"m6 9 6 6 6-6"}),eye:s.jsxs(s.Fragment,{children:[s.jsx("path",{d:"M2.5 12s3.5-6 9.5-6 9.5 6 9.5 6-3.5 6-9.5 6-9.5-6-9.5-6Z"}),s.jsx("circle",{cx:"12",cy:"12",r:"2.5"})]}),"eye-off":s.jsxs(s.Fragment,{children:[s.jsx("path",{d:"M3 3l18 18"}),s.jsx("path",{d:"M10.6 6.15A9.8 9.8 0 0 1 12 6c6 0 9.5 6 9.5 6a14.3 14.3 0 0 1-2.05 2.7M6.05 6.05C3.75 7.65 2.5 12 2.5 12s3.5 6 9.5 6a9.4 9.4 0 0 0 3.1-.52"}),s.jsx("path",{d:"M9.9 9.9a3 3 0 0 0 4.2 4.2"})]}),lock:s.jsxs(s.Fragment,{children:[s.jsx("rect",{x:"5",y:"10",width:"14",height:"10",rx:"2"}),s.jsx("path",{d:"M8 10V7a4 4 0 0 1 8 0v3"})]}),unlock:s.jsxs(s.Fragment,{children:[s.jsx("rect",{x:"5",y:"10",width:"14",height:"10",rx:"2"}),s.jsx("path",{d:"M8 10V7a4 4 0 0 1 7.4-2.1"})]}),check:s.jsx("path",{d:"m6 12 4 4 8-9"}),more:s.jsxs(s.Fragment,{children:[s.jsx("circle",{cx:"5",cy:"12",r:"1"}),s.jsx("circle",{cx:"12",cy:"12",r:"1"}),s.jsx("circle",{cx:"19",cy:"12",r:"1"})]}),plus:s.jsx("path",{d:"M12 5v14M5 12h14"}),split:s.jsxs(s.Fragment,{children:[s.jsx("path",{d:"M7 5v5a2 2 0 0 0 2 2h6a2 2 0 0 1 2 2v5"}),s.jsx("path",{d:"m4 8 3 3 3-3M14 16l3 3 3-3"})]}),trash:s.jsxs(s.Fragment,{children:[s.jsx("path",{d:"M4 7h16M9 7V4h6v3M7 7l1 13h8l1-13"}),s.jsx("path",{d:"M10 11v5M14 11v5"})]})};return s.jsx("svg",{className:"tree-control-icon",viewBox:"0 0 24 24","aria-hidden":"true",children:t[e]})}function L0(e){const[t,r]=m.useState(()=>new Set),[o,n]=m.useState(()=>new Set(e.selectedRegionId?[e.selectedRegionId]:[])),[i,a]=m.useState(null),[l,c]=m.useState(null),u=b=>r(h=>{const v=new Set(h);return v.has(b)?v.delete(b):v.add(b),v}),d=b=>n(h=>{const v=new Set(h);return v.has(b)?v.delete(b):v.add(b),v});m.useEffect(()=>{e.selectedRegionId&&n(b=>b.has(e.selectedRegionId)?b:new Set([...b,e.selectedRegionId]))},[e.selectedRegionId]);const f=b=>b.kind==="region"?`region:${b.regionId}`:b.kind==="layer"?`layer:${b.regionId}:${b.layerId}`:`geometry:${b.regionId}:${b.layerId}:${b.geometryId}`,p=(b,h)=>{a(b),h.dataTransfer.effectAllowed="move",h.dataTransfer.setData("text/plain",f(b))},g=(b,h)=>{if(!i||i.kind!==b.kind||b.kind==="layer"&&i.kind==="geometry")return"inside";const v=h.currentTarget.getBoundingClientRect();return h.clientY({onDragOver:h=>{i&&(h.preventDefault(),h.dataTransfer.dropEffect="move",c(`${f(b)}:${g(b,h)}`))},onDragLeave:h=>{h.currentTarget.contains(h.relatedTarget)||c(null)},onDrop:h=>{h.preventDefault(),i&&e.onTreeMove({source:i,target:b,position:g(b,h)}),a(null),c(null)}}),w=b=>{const h=l?.split(":")??[];return l?.startsWith(`${f(b)}:`)?` drop-target drop-${h[h.length-1]}`:""},k=e.regions.find(b=>b.id===e.selectedRegionId)??null;return s.jsxs("aside",{className:"layers",children:[s.jsxs("div",{className:"panel-toolbar",children:[s.jsxs(it,{className:"panel-tool primary",title:"Add region","aria-label":"Add region",onClick:e.onAddRegion,children:[s.jsx(Xt,{name:"plus"}),s.jsx("span",{children:"Region"})]}),s.jsx(it,{className:"panel-tool",title:"Split disconnected areas in the selected layer","aria-label":"Split disconnected areas",disabled:!e.canSplitDisconnectedAreas,onClick:e.onSplitDisconnectedAreas,children:s.jsx(Xt,{name:"split"})}),s.jsx("span",{className:"panel-toolbar-spacer"}),s.jsx(it,{className:"panel-tool danger",title:"Delete selected region","aria-label":"Delete selected region",disabled:!k,onClick:()=>k&&e.onDeleteRegion(k.id),children:s.jsx(Xt,{name:"trash"})})]}),e.regions.map(b=>{const h=b.id===e.selectedRegionId,v=o.has(b.id),_={kind:"region",regionId:b.id};return s.jsxs("section",{className:`region-group ${h?"selected":""}`,"aria-expanded":v,children:[s.jsxs("div",{className:`region-row${w(_)}`,...x(_),onClick:()=>e.onSelectRegion(b.id),children:[s.jsx(it,{className:"tree-drag-handle",draggable:!0,"aria-label":`Move ${b.name}`,title:"Drag to reorder; Alt + arrow keys also move",onDragStart:y=>p(_,y),onDragEnd:()=>{a(null),c(null)},onKeyDown:y=>{y.altKey&&y.key==="ArrowUp"&&(y.preventDefault(),e.onMoveRegion(b.id,-1)),y.altKey&&y.key==="ArrowDown"&&(y.preventDefault(),e.onMoveRegion(b.id,1))},onClick:y=>y.stopPropagation(),children:"⠿"}),s.jsx(it,{className:"region-expand","aria-expanded":v,title:v?"Collapse region":"Expand region",onClick:y=>{y.stopPropagation(),d(b.id)},children:s.jsx(Xt,{name:v?"chevron-down":"chevron-right"})}),s.jsx("i",{style:{background:b.authoring.color}}),s.jsx(vh,{value:b.name,onCommit:y=>e.onRenameRegion(b.id,y)}),s.jsx("span",{className:"region-usage",title:"Region usage",children:b.usage==="generation"?"GEN":b.usage==="detailer"?"DET":"BOTH"}),s.jsxs("span",{className:"priority",title:"Priority",children:["P",b.priority]}),s.jsx(it,{className:`tree-icon-button${b.authoring.visible?"":" deviant"}`,title:b.authoring.visible?"Hide region in editor":"Show region in editor","aria-pressed":b.authoring.visible,onClick:y=>{y.stopPropagation(),e.onToggleRegion(b.id,"visible")},children:s.jsx(Xt,{name:b.authoring.visible?"eye":"eye-off"})}),s.jsx(it,{className:`tree-icon-button${b.authoring.locked?" deviant":""}`,title:b.authoring.locked?"Unlock region":"Lock region","aria-pressed":b.authoring.locked,onClick:y=>{y.stopPropagation(),e.onToggleRegion(b.id,"locked")},children:s.jsx(Xt,{name:b.authoring.locked?"lock":"unlock"})}),s.jsx(it,{className:`tree-check${b.enabled?"":" deviant"}`,role:"checkbox","aria-checked":b.enabled,title:b.enabled?"Disable region output":"Enable region output",onClick:y=>{y.stopPropagation(),e.onToggleRegion(b.id,"enabled")},children:b.enabled&&s.jsx(Xt,{name:"check"})})]}),v&&s.jsx("div",{className:"geometry-layers",children:[...Ar(b)].reverse().map(y=>{const T=e.selectedLayerIds.includes(y.id),S=y.id===e.selectedLayerId,P=new Set(y.geometries.map(E=>E.type)),O=new Set(y.geometries.map(Ba)).size,B=P.size>1||O>1?"◈":y.geometries[0].type==="rect"?"▭":y.geometries[0].type==="ellipse"?"◯":y.geometries[0].type==="polygon"?"⬠":y.geometries[0].type==="raster_mask"?"▦":"✎",j=t.has(y.id),M={kind:"layer",regionId:b.id,layerId:y.id};return s.jsxs("div",{className:"geometry-tree-item",children:[s.jsxs("div",{className:`geometry-row ${T&&!e.selectedGeometryId?"selected":""} ${S?"primary-selection":""}${w(M)}`,...x(M),onClick:E=>e.onSelectLayer(b.id,y.id,E.shiftKey?"range":E.ctrlKey||E.metaKey?"toggle":"replace"),children:[s.jsx(it,{className:"tree-drag-handle",draggable:!0,"aria-label":`Move ${y.authoring.name}`,title:"Drag layer; Alt + arrow keys also move",onDragStart:E=>p(M,E),onDragEnd:()=>{a(null),c(null)},onKeyDown:E=>{E.altKey&&E.key==="ArrowUp"&&(E.preventDefault(),e.onMoveLayer(y.id,1)),E.altKey&&E.key==="ArrowDown"&&(E.preventDefault(),e.onMoveLayer(y.id,-1))},onClick:E=>E.stopPropagation(),children:"⠿"}),s.jsx(it,{className:"layer-expand","aria-expanded":j,title:j?"Collapse operations":"Expand operations",onClick:E=>{E.stopPropagation(),u(y.id)},children:s.jsx(Xt,{name:j?"chevron-down":"chevron-right"})}),s.jsxs("span",{title:`${y.geometries.length} operations · ${O} mask group${O===1?"":"s"}`,children:[B,y.geometries.some(E=>E.operation==="subtract")?"−":""]}),s.jsx(vh,{value:y.authoring.name,onCommit:E=>e.onRenameLayer(y.id,E)}),s.jsx(it,{className:`tree-icon-button${y.authoring.visible?"":" deviant"}`,title:y.authoring.visible?"Hide in editor":"Show in editor","aria-pressed":y.authoring.visible,onClick:E=>{E.stopPropagation(),e.onToggleLayer(y.id,"visible")},children:s.jsx(Xt,{name:y.authoring.visible?"eye":"eye-off"})}),s.jsx(it,{className:`tree-icon-button${y.authoring.locked?" deviant":""}`,title:y.authoring.locked?"Unlock layer":"Lock layer","aria-pressed":y.authoring.locked,onClick:E=>{E.stopPropagation(),e.onToggleLayer(y.id,"locked")},children:s.jsx(Xt,{name:y.authoring.locked?"lock":"unlock"})}),s.jsx(it,{className:`tree-check${y.enabled?"":" deviant"}`,role:"checkbox","aria-checked":y.enabled,title:y.enabled?"Disable mask output":"Enable mask output",onClick:E=>{E.stopPropagation(),e.onToggleLayer(y.id,"enabled")},children:y.enabled&&s.jsx(Xt,{name:"check"})}),s.jsxs("details",{className:"layer-overflow",onClick:E=>E.stopPropagation(),children:[s.jsx("summary",{title:"Layer actions","aria-label":"Layer actions",children:s.jsx(Xt,{name:"more"})}),s.jsxs("div",{children:[s.jsx(it,{onClick:E=>{E.currentTarget.closest("details").removeAttribute("open"),e.onDuplicateLayer(y.id)},children:"Duplicate layer"}),s.jsx(it,{className:"danger",onClick:E=>{E.currentTarget.closest("details").removeAttribute("open"),e.onDeleteLayer(y.id)},children:"Delete layer"})]})]})]}),j&&s.jsx("div",{className:"geometry-operations",children:y.geometries.map((E,z)=>{const L={kind:"geometry",regionId:b.id,layerId:y.id,geometryId:E.id};return s.jsxs("div",{className:`geometry-operation ${e.selectedGeometryId===E.id?"selected":""}${w(L)}`,...x(L),children:[s.jsx(it,{className:"tree-drag-handle",draggable:!0,"aria-label":`Move ${sr(E,z).name}`,title:"Drag operation",onDragStart:R=>p(L,R),onDragEnd:()=>{a(null),c(null)},children:"⠿"}),s.jsxs(it,{className:"geometry-operation-select",onClick:()=>e.onSelectGeometry(b.id,y.id,E.id),children:[s.jsx("span",{className:`operation-kind ${E.operation}`,children:E.operation==="add"?"+":"−"}),s.jsx("span",{children:sr(E,z).name}),s.jsx("small",{children:E.type.replace("_"," ")})]}),s.jsx(it,{className:`tree-icon-button${E.enabled!==!1?"":" deviant"}`,title:E.enabled!==!1?"Disable operation":"Enable operation","aria-pressed":E.enabled!==!1,onClick:()=>e.onToggleGeometry(E.id),children:s.jsx(Xt,{name:E.enabled!==!1?"eye":"eye-off"})}),s.jsx(it,{className:"danger",disabled:!qu(y.geometries,E.id),title:qu(y.geometries,E.id)?"Delete operation":"Additive base: remove dependent subtract operations first",onClick:()=>e.onDeleteGeometry(E.id),children:"×"})]},E.id)})})]},y.id)})})]},b.id)})]})}const mh=({name:e})=>e==="select"?s.jsx("svg",{viewBox:"0 0 24 24",children:s.jsx("path",{d:"M5 3l13 9-6 1 4 7-3 1-4-7-4 4z"})}):e.startsWith("rect")?s.jsxs("svg",{viewBox:"0 0 24 24",children:[s.jsx("rect",{x:"4",y:"5",width:"16",height:"14",rx:"1"}),s.jsx("path",{d:e.endsWith("subtract")?"M16 17h6":"M16 17h6M19 14v6"})]}):e.startsWith("ellipse")?s.jsxs("svg",{viewBox:"0 0 24 24",children:[s.jsx("ellipse",{cx:"11",cy:"12",rx:"8",ry:"6"}),s.jsx("path",{d:e.endsWith("subtract")?"M16 18h6":"M16 18h6M19 15v6"})]}):e.startsWith("polygon")?s.jsxs("svg",{viewBox:"0 0 24 24",children:[s.jsx("path",{d:"M4 18L7 5l12 3 1 11z"}),s.jsx("path",{d:e.endsWith("subtract")?"M16 18h6":"M16 18h6M19 15v6"})]}):e==="brush-add"?s.jsxs("svg",{viewBox:"0 0 24 24",children:[s.jsx("path",{d:"M14 4l6 6-9 9H5v-6z"}),s.jsx("path",{d:"M16 17h6M19 14v6"})]}):e==="brush-subtract"?s.jsxs("svg",{viewBox:"0 0 24 24",children:[s.jsx("path",{d:"M14 4l6 6-9 9H5v-6z"}),s.jsx("path",{d:"M16 17h6"})]}):s.jsxs("svg",{viewBox:"0 0 24 24",children:[s.jsx("circle",{cx:"12",cy:"12",r:"3"}),s.jsx("path",{d:"M12 2v3M12 19v3M2 12h3M19 12h3M5 5l2 2M17 17l2 2M19 5l-2 2M7 17l-2 2"})]});function C0({tool:e,brush:t,canSubtract:r,canvas:o,onTool:n,onBrush:i}){const[a,l]=m.useState(!1),c=e.startsWith("brush"),u=[{id:"select",title:"Select and transform"},{id:"rect-add",title:"Add rectangle"},{id:"rect-subtract",title:"Subtract rectangle from selected layer"},{id:"ellipse-add",title:"Add ellipse"},{id:"ellipse-subtract",title:"Subtract ellipse from selected layer"},{id:"polygon-add",title:"Add polygon (click points, Enter or double-click to close)"},{id:"polygon-subtract",title:"Subtract polygon from selected layer"},{id:"brush-add",title:"Add brush stroke"},{id:"brush-subtract",title:"Subtract from selected layer"}];return s.jsxs("div",{className:"artboard-tools",onPointerDown:d=>d.stopPropagation(),onPointerUp:d=>d.stopPropagation(),onWheel:d=>d.stopPropagation(),children:[s.jsx(Xw,{orientation:"vertical",density:"compact",label:"Regional drawing tools",items:[...u.map(d=>({id:d.id,label:d.title,icon:s.jsx(mh,{name:d.id}),active:e===d.id,disabled:d.id.endsWith("subtract")&&!r,onSelect:()=>{n(d.id),d.id.startsWith("brush")||l(!1)},group:d.id.split("-")[0]})),...c?[{id:"brush-settings",label:"Brush settings",icon:s.jsx(mh,{name:"settings"}),active:a,onSelect:()=>l(d=>!d),group:"settings"}]:[]]}),c&&a&&s.jsxs("div",{className:"brush-flyout",children:[s.jsxs("header",{children:[s.jsx("strong",{children:"Brush"}),s.jsx(oe,{intent:"ghost",iconOnly:!0,"aria-label":"Close brush settings",onClick:()=>l(!1),children:"×"})]}),s.jsx(Pt,{label:"Brush size",value:t.size,min:.005,max:.25,step:.005,unit:`${Math.round(t.size*Math.min(o.width,o.height))} px`,onValue:d=>i({...t,size:d})}),s.jsx(Pt,{label:"Hardness",value:t.hardness,min:0,max:1,step:.05,unit:"×",onValue:d=>i({...t,hardness:d})}),s.jsx(Pt,{label:"Opacity",value:t.opacity,min:.05,max:1,step:.05,unit:"×",onValue:d=>i({...t,opacity:d})}),s.jsx(qe,{label:"Shape",value:t.shape,onValue:d=>i({...t,shape:d}),options:[{value:"round",label:"Round"},{value:"square",label:"Square"}]}),s.jsx(qe,{label:"Pressure",value:t.pressureMode,onValue:d=>i({...t,pressureMode:d}),options:[{value:"constant",label:"Constant"},{value:"stylus",label:"Stylus"}]})]})]})}const N0=({control:e,groups:t,conflicts:r,onChange:o})=>{const n=a=>a.charAt(0).toUpperCase()+a.slice(1),i=a=>{const l=t.find(c=>c.id===a);!l||e.assignments.some(c=>c.groupId===a)||o({...e,assignments:[...e.assignments,{groupId:a,groupPath:l.pathLabel,groupTitle:String(l.group.title||""),action:"bypass"}]})};return s.jsxs("section",{className:"bv-control-card",children:[s.jsxs("div",{className:"bv-control-title",children:[s.jsx(cn,{label:"Control name",value:e.name,onValue:a=>o({...e,name:a})}),s.jsxs("span",{children:[e.assignments.length," groups"]}),s.jsx(oe,{intent:"danger",onClick:()=>o(null),children:"Delete"})]}),s.jsx("div",{className:"bv-assignments",children:e.assignments.map((a,l)=>{const c=r.find(f=>f.groupId===a.groupId),u=c?.entries.filter(f=>f.action===c.winnerAction).map(f=>f.controlName).join(", "),d=c?a.action===c.winnerAction?`Overrides ${[...new Set(c.entries.filter(f=>f.action!==c.winnerAction).map(f=>n(f.action)))].join(", ")}`:`Overridden by ${n(c.winnerAction)} from ${u}`:"";return s.jsxs("div",{className:a.unresolved?"unresolved":c?"conflict":"",children:[s.jsxs("span",{children:[a.unresolved?"⚠ ":"",a.groupPath,d&&s.jsxs("small",{children:["⚠ ",d]})]}),s.jsx(qe,{label:"Action",value:a.action,options:[{value:"activate",label:"Activate"},{value:"mute",label:"Mute"},{value:"bypass",label:"Bypass"}],onValue:f=>o({...e,assignments:e.assignments.map((p,g)=>g===l?{...p,action:f}:p)})}),s.jsx(oe,{intent:"ghost",iconOnly:!0,"aria-label":"Remove assignment",onClick:()=>o({...e,assignments:e.assignments.filter((f,p)=>p!==l)}),children:"×"})]},a.groupId)})}),s.jsx(qe,{label:"Add group",value:"",onValue:i,options:[{value:"",label:"Choose group…"},...t.map(a=>({value:a.id,label:a.pathLabel}))]})]})},O0=100;function Ks(e,t=r=>structuredClone(r)){const[r,o]=m.useState(()=>t(e)),[n,i]=m.useState([]),[a,l]=m.useState([]),c=m.useRef(r);c.current=r;const u=m.useCallback(x=>{o(w=>{const k=typeof x=="function"?x(t(w)):x;return i(b=>[...b.slice(-99),t(w)]),l([]),t(k)})},[t]),d=m.useCallback((x,w=!1)=>{o(t(x)),w&&(i([]),l([]))},[t]),f=m.useCallback(()=>{i(x=>{if(!x.length)return x;const w=x[x.length-1];return l(k=>[t(c.current),...k].slice(0,O0)),o(t(w)),x.slice(0,-1)})},[t]),p=m.useCallback(()=>{l(x=>{if(!x.length)return x;const w=x[0];return i(k=>[...k.slice(-99),t(c.current)]),o(t(w)),x.slice(1)})},[t]),g=m.useCallback(()=>{i([]),l([])},[]);return{value:r,commit:u,replace:d,undo:f,redo:p,clear:g,canUndo:n.length>0,canRedo:a.length>0}}const M0=e=>e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement||e instanceof HTMLElement&&e.isContentEditable;function qs(e,t=!0){m.useEffect(()=>{if(!t)return;const r=a=>{if(M0(a.target)||!a.ctrlKey||a.altKey)return null;const l=a.key.toLowerCase();return l==="y"||l==="z"&&a.shiftKey?"redo":l==="z"?"undo":null},o=a=>{a.preventDefault(),a.stopImmediatePropagation()},n=a=>{const l=r(a);l&&(o(a),l==="undo"&&e.canUndo?e.undo():l==="redo"&&e.canRedo&&e.redo())},i=a=>{r(a)&&o(a)};return window.addEventListener("keydown",n,{capture:!0}),window.addEventListener("keyup",i,{capture:!0}),()=>{window.removeEventListener("keydown",n,{capture:!0}),window.removeEventListener("keyup",i,{capture:!0})}},[t,e.canRedo,e.canUndo,e.redo,e.undo])}function A0(){return globalThis.crypto?.randomUUID?.()??`bv-control-${Date.now()}-${Math.random().toString(16).slice(2)}`}const D0=()=>{const e=m.useMemo(()=>{const d=sn(),f=new Set(is(ct()).map(p=>p.id));return{...d,controls:d.controls.map(p=>({...p,assignments:p.assignments.map(g=>({...g,unresolved:!f.has(g.groupId)}))}))}},[]),t=Ks(e),r=t.value,o=d=>t.commit(d);qs(t),m.useEffect(()=>{const d=f=>{const p=f.detail,g=new Map(p.controls.map(w=>[w.id,w.enabled])),x={...r,controls:r.controls.map(w=>g.has(w.id)?{...w,enabled:g.get(w.id)}:w)};JSON.stringify(x)!==JSON.stringify(r)&&t.replace(x)};return window.addEventListener(ri,d),()=>window.removeEventListener(ri,d)},[r,t.replace]);const n=m.useMemo(()=>is(ct()),[r]),i=m.useMemo(()=>wv(r),[r]),a=m.useRef(!1);m.useEffect(()=>{if(!a.current){a.current=!0;return}const d=window.setTimeout(()=>{const f=r.controls.map(g=>g.name.trim());if(f.some(g=>!g)||new Set(f).size!==f.length)return;const p=new Set(n.map(g=>g.id));ff({...r,controls:r.controls.map(g=>({...g,name:g.name.trim(),assignments:g.assignments.map(x=>({...x,unresolved:!p.has(x.groupId)}))}))})},250);return()=>window.clearTimeout(d)},[r,n]);const l=(d,f)=>{o({...r,controls:f?r.controls.map((p,g)=>g===d?f:p):r.controls.filter((p,g)=>g!==d)})},c=()=>{let d="New Control",f=2;for(;r.controls.some(p=>p.name===d);)d=`New Control ${f++}`;o({...r,controls:[...r.controls,{id:A0(),name:d,enabled:!0,assignments:[]}]})},u=r.controls.map((d,f)=>({id:d.id,title:d.name||"Unnamed control",description:`${d.assignments.length} assignment${d.assignments.length===1?"":"s"}`,content:s.jsx(N0,{control:d,groups:n,conflicts:i,onChange:p=>l(f,p)})}));return s.jsxs("div",{className:"bv-ui-stack",children:[s.jsx(eo,{label:"Force active after releasing restrictions",checked:r.forceActive,onValue:d=>o({...r,forceActive:d})}),s.jsx("div",{className:"bv-controls",children:s.jsx(Ia,{items:u,onReorder:d=>o({...r,controls:d.map(f=>r.controls.find(p=>p.id===f.id)).filter(Boolean)}),onRemove:d=>o({...r,controls:r.controls.filter(f=>f.id!==d)})})}),s.jsxs("footer",{className:"bv-ui-inline-footer",children:[s.jsx(Ev,{tone:"success",dot:!0,children:"Autosaved"}),s.jsx(oe,{intent:"ghost",disabled:!t.canUndo,onClick:t.undo,children:"Undo"}),s.jsx(oe,{intent:"ghost",disabled:!t.canRedo,onClick:t.redo,children:"Redo"}),s.jsx(oe,{onClick:c,children:"Add Control"})]})]})},Ko=new Map,ls=new Map;function yf(e,t={}){const r=t.key?Ko.get(t.key):void 0;if(r)return r.activate(e),r.close;const o=document.createElement("div");o.className="bv-ui",o.dataset.bvUiMount="true",document.body.append(o);const n=fi(o);let i=!1,a=0,l=e;const c=()=>{i||(i=!0,t.key&&Ko.get(t.key)?.close===c&&Ko.delete(t.key),n.unmount(),o.remove())},u=g=>{g&&(l=g),a+=1,document.body.append(o),o.querySelector(".bv-managed-window")?.dispatchEvent(new Event("bv-ui-activate")),n.render(l(c,a))},d=()=>o.querySelector(".bv-managed-window")?.dispatchEvent(new Event("bv-ui-minimize")),f=()=>{const g=o.querySelector(".bv-managed-window"),x=g?.getBoundingClientRect();return{mode:g?.classList.contains("workspace")?"workspace":"floating",geometry:x?{x:x.left,y:x.top,width:x.width,height:x.height}:void 0}},p=g=>o.querySelector(".bv-managed-window")?.dispatchEvent(new CustomEvent("bv-ui-set-window-state",{detail:g}));if(t.key){const g={activate:u,minimize:d,state:f,setState:p,close:c};Ko.set(t.key,g);const x=ls.get(t.key);x&&(ls.delete(t.key),requestAnimationFrame(()=>g.setState(x)))}return n.render(l(c,a)),c}function _f(e,t,r,o){if(e===t)return Ko.get(e)?.activate();const n=Ko.get(e),i=n?.state(),a=Ko.get(t);i&&ls.set(t,i),a?a.activate():r(),i&&a&&(ls.delete(t),requestAnimationFrame(()=>a.setState(i))),o?n?.close():n?.minimize()}const zv="BV.NodePack.UI.Size",Fv="BV.NodePack.UI.ReducedEffects",wf="BV.NodePack.UI.WindowSwitchMode";let ji="keep",Uv;const Ju=new Set,I0=e=>e==="replace"?"replace":"keep",ni=()=>ji,j0=e=>{Uv=e},B0=e=>(Ju.add(e),()=>Ju.delete(e));function kf(e,t=!0){return ji=I0(e),t&&Uv?.(ji),Ju.forEach(r=>r(ji)),ji}const P0=["bv-ui-size-compact","bv-ui-size-default","bv-ui-size-large"];function z0(e){return e==="compact"||e==="large"?e:"default"}function Vv(e,t=document.documentElement){const r=z0(e);return t.classList.remove(...P0),t.classList.add(`bv-ui-size-${r}`),r}function Wv(e,t=document.documentElement){return t.classList.toggle("bv-ui-reduced-effects",!!e),!!e}function F0(e){Vv(e?.getSettingValue?.(zv,"default")),Wv(e?.getSettingValue?.(Fv,!1)),kf(e?.getSettingValue?.(wf,"keep"),!1)}function U0(e,t,r,o){const n=e.x+e.width,i=e.y+e.height;let a=e.x,l=e.y,c=e.width,u=e.height;return r.includes("e")&&(c=Math.max(o.width,e.width+t.x)),r.includes("s")&&(u=Math.max(o.height,e.height+t.y)),r.includes("w")&&(c=Math.max(o.width,e.width-t.x),a=n-c),r.includes("n")&&(u=Math.max(o.height,e.height-t.y),l=i-u),{x:a,y:l,width:c,height:u}}function V0(e,t,r){const o={...e};for(const n of["x","y","width","height"])r?.[n]!==void 0&&r[n]!==t?.[n]&&(o[n]=r[n]);return o}function W0(e,t,r,o=12,n=128){const i=e??{left:0,right:r.width,bottom:r.height,height:r.height},l=t.filter(c=>c.width>0&&c.height>=i.height*.45&&c.rightc.left-u.left||u.right-c.right).reduce((c,u)=>u.left<=c+4?Math.max(c,u.right):c,i.left);return{left:Math.round(Math.max(i.left+n,l)+o),bottom:Math.round(Math.max(o,r.height-i.bottom+o))}}const Zo=[];let xh=!1;const H0=e=>e.isConnected&&!e.hidden&&e.offsetParent!==null;function $0(e){const t=Zo.filter(H0);if(t.length<2)return;const r=document.activeElement instanceof Element?t.findIndex(n=>n===document.activeElement||n.contains(document.activeElement)):-1,o=r<0?t.length-1:(r+(e?-1:1)+t.length)%t.length;t[o].dispatchEvent(new CustomEvent("bv-ui-activate"))}function Y0(){xh||(xh=!0,window.addEventListener("keydown",e=>{e.key!=="Tab"||!e.ctrlKey||e.altKey||e.metaKey||(e.preventDefault(),e.stopImmediatePropagation(),$0(e.shiftKey))},!0))}function X0(e){return Y0(),Zo.push(e),()=>{const t=Zo.indexOf(e);t>=0&&Zo.splice(t,1)}}function yh(e){const t=Zo.indexOf(e);t>=0&&Zo.splice(t,1),Zo.push(e)}const Hv="bvWindowMenuVisible",ii="bv-window-menu-visibility-changed",G0=e=>!["BV Smart Pipe","BV Smart Pipe Merge"].includes(e);function vn(e){const t=e?.properties?.[Hv];return typeof t=="boolean"?t:G0(String(e?.type??e?.comfyClass??""))}function mn(e,t){e&&(e.properties??(e.properties={}),e.properties[Hv]=!!t,e.graph?.setDirtyCanvas?.(!0,!0),window.dispatchEvent(new CustomEvent(ii,{detail:{node:e,visible:!!t}})))}function K0(e){return window.addEventListener(ii,e),()=>window.removeEventListener(ii,e)}let Zu=0;window.addEventListener(ii,()=>Zu++);function hi(e){return m.useSyncExternalStore(K0,()=>Zu,()=>Zu),vn(e)}const q0=(e,t)=>String(e?.id??e?._id??e?.extra?.uuid??t);function Ef(e,t){const r=[],o=(n,i,a,l=new Set)=>{if(!n||l.has(n))return;const c=new Set(l);c.add(n);const u=q0(n,i.length?i[i.length-1]:"root");for(const d of n._nodes??n.nodes??[]){const f=String(d.id),p=[...i,u];t(d)&&r.push({node:d,graph:n,path:p,key:`${p.join("/")}:${f}`,breadcrumb:a.join(" › ")});const g=d.subgraph??(()=>{try{return d.getSubgraph?.()}catch{return null}})();g&&o(g,[...p,f],[...a,String(d.title||d.type||`#${f}`)],c)}};return o(e,[],[]),r}function ma(e,t){return Ef(e,r=>r===t)[0]?.key??String(t?.id??"")}const ss="bv-toggle-toolbar-window-launcher";function J0({getColumns:e}){const[t,r]=m.useState({left:0,top:0}),[o,n]=m.useState(!1),[i,a]=m.useState(!1),[,l]=m.useState(0),c=m.useRef(null),u=m.useRef(),d=m.useRef(),f=m.useRef(0),p=()=>{u.current&&window.clearTimeout(u.current),d.current&&window.clearTimeout(d.current)},g=(v,_)=>{const y=v.getBoundingClientRect(),T=Math.min(Math.max(1,_)*220,window.innerWidth-24),S=Math.min(420,window.innerHeight-84),P=Math.max(12,Math.min(y.left,window.innerWidth-T-12)),O=y.bottom+6+S<=window.innerHeight-12?y.bottom+6:Math.max(12,y.top-S-6);return{left:P,top:O}},x=m.useCallback((v,_)=>{p(),u.current=window.setTimeout(()=>{if(document.body.classList.contains("bv-toolbar-no-editor")&&document.body.classList.contains("bv-toolbar-no-quick"))return;const y=[...document.querySelectorAll(".bv-regional-action")].filter(S=>S.offsetParent!==null),T=_?.offsetParent?_:y[0];T&&(a(!1),r(g(T,e(!1).filter(S=>S.items.length).length)),n(!0))},v)},[e]),w=m.useCallback(()=>x(180),[x]),k=m.useCallback(()=>{u.current&&window.clearTimeout(u.current);const v=Math.max(280,f.current-Date.now());d.current=window.setTimeout(()=>{c.current?.matches(":hover")||(n(!1),a(!1))},v)},[]);m.useEffect(()=>{const v=new Map,_=()=>{for(const T of document.querySelectorAll(".bv-regional-action")){if(v.has(T))continue;const S=()=>w(),P=()=>k();T.addEventListener("pointerenter",S),T.addEventListener("pointerleave",P);const O=()=>{T.removeEventListener("pointerenter",S),T.removeEventListener("pointerleave",P)};v.set(T,O)}};_();const y=new MutationObserver(_);return y.observe(document.body,{childList:!0,subtree:!0}),()=>{y.disconnect(),v.forEach(T=>T()),p()}},[k,w]),m.useEffect(()=>{if(!o)return;const v=_=>{_.key==="Escape"&&(n(!1),a(!1))};return window.addEventListener("keydown",v),()=>window.removeEventListener("keydown",v)},[o]),m.useEffect(()=>{const v=_=>o?(n(!1),a(!1)):x(0,_.detail?.anchor);return window.addEventListener(ss,v),()=>window.removeEventListener(ss,v)},[o,x]),m.useEffect(()=>{const v=()=>l(_=>_+1);return window.addEventListener(ii,v),()=>window.removeEventListener(ii,v)},[]);const b=v=>{p(),f.current=Date.now()+700;const _=c.current?.getBoundingClientRect();a(v),requestAnimationFrame(()=>requestAnimationFrame(()=>{const y=c.current?.getBoundingClientRect();!_||!y||r(T=>({...T,top:Math.max(12,Math.min(window.innerHeight-y.height-12,T.top+_.bottom-y.bottom))}))}))};if(!o)return null;const h=e(i).filter(v=>v.items.length);return Vr.createPortal(s.jsxs("div",{ref:c,className:"bv-toolbar-window-launcher bv-ui bv-density-compact",style:{left:t.left,top:t.top,"--bv-launcher-columns":Math.max(1,h.length)},role:"dialog","aria-label":"BV window launcher",onPointerEnter:p,onPointerLeave:k,children:[s.jsx("div",{className:"bv-toolbar-window-launcher__body",children:h.length?h.map(v=>s.jsxs("section",{children:[s.jsx("h3",{children:v.label}),s.jsx("div",{children:v.items.map(_=>s.jsxs("div",{className:`bv-toolbar-launcher-row ${_.hidden?"is-hidden":""}`,children:[s.jsxs(oe,{intent:"ghost",disabled:_.disabled,onClick:()=>{n(!1),a(!1),_.onSelect()},children:[s.jsx("span",{children:_.label}),_.meta&&s.jsx("small",{children:_.meta})]}),_.secondary&&s.jsx("button",{type:"button",className:"bv-toolbar-launcher-secondary",title:_.secondary.label,"aria-label":_.secondary.label,onClick:()=>{n(!1),a(!1),_.secondary?.onSelect()},children:"✎"}),_.hidden&&_.onReveal&&s.jsx("button",{type:"button",className:"bv-toolbar-launcher-reveal",title:"Show in BV window menus","aria-label":`Show ${_.label} in BV window menus`,onClick:_.onReveal,children:"◉"})]},_.id))})]},v.id)):s.jsxs("div",{className:"bv-toolbar-launcher-empty",children:[s.jsx("strong",{children:"No visible BV windows"}),s.jsx("span",{children:"Show hidden nodes to restore one."})]})}),s.jsx("footer",{children:s.jsx(Xs,{label:"Show hidden nodes",value:i,trueLabel:"Shown",falseLabel:"Hidden",onValue:b})})]}),document.body)}var gi=class{constructor(){D(this,"attributes");D(this,"nameToAttribute");this.attributes=[],this.nameToAttribute=new Map}addWithAll(e,t,r,o){const n=new te(e,t,r,o);return this.attributes.push(n),this.nameToAttribute.set(e,n),n}addInherited(e,t){return this.addWithAll(e,t,void 0,!1)}add(e,t,r){return this.addWithAll(e,void 0,t,r)}getAttributes(){return this.attributes}getModelName(e){const t=this.nameToAttribute.get(e);if(t!==void 0)return t.modelName}toJson(e,t){for(const r of this.attributes){const o=t[r.name];(r.alwaysWriteJson||o!==r.defaultValue)&&(e[r.name]=o)}}fromJson(e,t){for(const r of this.attributes){let o=e[r.name];o===void 0&&r.alias&&(o=e[r.alias]),o===void 0?t[r.name]=r.defaultValue:t[r.name]=o}}update(e,t){for(const r of this.attributes)if(Object.prototype.hasOwnProperty.call(e,r.name)){const o=e[r.name];o===void 0?delete t[r.name]:t[r.name]=o}}setDefaults(e){for(const t of this.attributes)e[t.name]=t.defaultValue}pairAttributes(e,t){for(const r of t.attributes)if(r.modelName&&this.nameToAttribute.has(r.modelName)){const o=this.nameToAttribute.get(r.modelName);o.setpairedAttr(r),r.setpairedAttr(o),o.setPairedType(e)}}toTypescriptInterface(e,t){const r=[],o=this.attributes.sort((n,i)=>n.name.localeCompare(i.name));r.push("export interface I"+e+"Attributes {");for(let n=0;ntypeof t=="object"&&t!==null&&"value"in t?{value:t.value,label:t.label!==void 0?t.label:String(t.value)}:{value:t,label:typeof t=="string"?t.charAt(0).toUpperCase()+t.slice(1):String(t)}),this}getValues(){return this.values!==void 0?this.values:this.pairedAttr?.values}setRequired(){return this.required=!0,this}setFixed(){return this.fixed=!0,this}setpairedAttr(e){this.pairedAttr=e}setPairedType(e){this.pairedType=e}},D(Oi,"NUMBER","number"),D(Oi,"STRING","string"),D(Oi,"BOOLEAN","boolean"),Oi),ge=class Ho{constructor(t,r,o,n){D(this,"x");D(this,"y");D(this,"width");D(this,"height");this.x=t,this.y=r,this.width=o,this.height=n}static empty(){return new Ho(0,0,0,0)}static fromJson(t){return new Ho(t.x,t.y,t.width,t.height)}toJson(){return{x:this.x,y:this.y,width:this.width,height:this.height}}snap(t){this.x=Math.round(this.x/t)*t,this.y=Math.round(this.y/t)*t,this.width=Math.round(this.width/t)*t,this.height=Math.round(this.height/t)*t}static getBoundingClientRect(t){const{x:r,y:o,width:n,height:i}=t.getBoundingClientRect();return new Ho(r,o,n,i)}static fromDomRect(t){return new Ho(t.x,t.y,t.width,t.height)}relativeTo(t){return new Ho(this.x-t.x,this.y-t.y,this.width,this.height)}clone(){return new Ho(this.x,this.y,this.width,this.height)}equals(t){return this.x===t?.x&&this.y===t?.y&&this.width===t?.width&&this.height===t?.height}equalsWhenRounded(t){if(!t)return!1;const r=.5;return Math.abs(this.x-t.x)t.width&&(this.width=t.width),this.height>t.height&&(this.height=t.height),this.xt.getRight()&&(this.x=t.getRight()-this.width),this.getBottom()>t.getBottom()&&(this.y=t.getBottom()-this.height),this.x=.25&&r<.75&&o>=.25&&o<.75)return Ie.CENTER;const i=o>=r,a=o>=1-r;return i?a?Ie.BOTTOM:Ie.LEFT:a?Ie.RIGHT:Ie.TOP}getName(){return this.name}getOrientation(){return this.orientation}getDockRect(t){return this===Ie.TOP?new ge(t.x,t.y,t.width,t.height/2):this===Ie.BOTTOM?new ge(t.x,t.getBottom()-t.height/2,t.width,t.height/2):this===Ie.LEFT?new ge(t.x,t.y,t.width/2,t.height):this===Ie.RIGHT?new ge(t.getRight()-t.width/2,t.y,t.width/2,t.height):t.clone()}toString(){return"(DockLocation: name="+this.name+", orientation="+this.orientation+")"}},D(Ie,"values",new Map),D(Ie,"TOP",new Ie("top",_e.VERT,0)),D(Ie,"BOTTOM",new Ie("bottom",_e.VERT,1)),D(Ie,"LEFT",new Ie("left",_e.HORZ,0)),D(Ie,"RIGHT",new Ie("right",_e.HORZ,1)),D(Ie,"CENTER",new Ie("center",_e.VERT,0)),Ie),ce,re=(ce=class{static group(t){return new $v(t)}static addTab(t,r,o,n,i){return new Fe(ce.ADD_TAB,{json:t,toNode:r,location:o.getName(),index:n,select:i})}static addNode(t,r,o,n,i){return this.addTab(t,r,o,n,i)}static moveNode(t,r,o,n,i){return new Fe(ce.MOVE_NODE,{fromNode:t,toNode:r,location:o.getName(),index:n,select:i})}static deleteTab(t){return new Fe(ce.DELETE_TAB,{node:t})}static deleteTabset(t){return new Fe(ce.DELETE_TABSET,{node:t})}static renameTab(t,r){return new Fe(ce.RENAME_TAB,{node:t,text:r})}static setTabPinned(t,r){return new Fe(ce.SET_TAB_PINNED,{node:t,pinned:r})}static setBorderType(t,r){return new Fe(ce.SET_BORDER_TYPE,{node:t,borderType:r})}static selectTab(t){return new Fe(ce.SELECT_TAB,{tabNode:t})}static setActiveTabset(t,r){return new Fe(ce.SET_ACTIVE_TABSET,{tabsetNode:t,layoutId:r})}static adjustWeights(t,r){return new Fe(ce.ADJUST_WEIGHTS,{nodeId:t,weights:r})}static adjustBorderSplit(t,r){return new Fe(ce.ADJUST_BORDER_SPLIT,{node:t,size:r})}static maximizeToggle(t,r){return new Fe(ce.MAXIMIZE_TOGGLE,{node:t,layoutId:r})}static updateModelAttributes(t){return new Fe(ce.UPDATE_MODEL_ATTRIBUTES,{json:t})}static updateNodeAttributes(t,r){return new Fe(ce.UPDATE_NODE_ATTRIBUTES,{node:t,json:r})}static updateSubLayoutAttributes(t,r){return new Fe(ce.UPDATE_SUBLAYOUT_ATTRIBUTES,{layoutId:t,json:r})}static popoutTab(t,r="window"){return new Fe(ce.POPOUT_TAB,{node:t,type:r})}static popoutTabset(t,r="window"){return new Fe(ce.POPOUT_TABSET,{node:t,type:r})}static closePopout(t){return new Fe(ce.CLOSE_POPOUT,{layoutId:t})}static movePopoutToFront(t){return new Fe(ce.MOVE_POPOUT_TO_FRONT,{layoutId:t})}static moveFloat(t,r){return new Fe(ce.MOVE_FLOAT,{layoutId:t,rect:r})}static popoutFloat(t,r){return new Fe(ce.POPOUT_FLOAT,{layoutId:t,rect:r})}static dockFloatToLayout(t,r,o,n){return new Fe(ce.DOCK_FLOAT_TO_LAYOUT,{layoutId:t,toNode:r,location:o.getName(),index:n})}static createPopout(t,r,o){return this.createSubLayout(t,r,o)}static createSubLayout(t,r,o){return new Fe(ce.CREATE_SUBLAYOUT,{layout:t,rect:r,type:o})}},D(ce,"ADD_TAB","FlexLayout_AddTab"),D(ce,"DELETE_TAB","FlexLayout_DeleteTab"),D(ce,"RENAME_TAB","FlexLayout_RenameTab"),D(ce,"SET_TAB_PINNED","FlexLayout_SetTabPinned"),D(ce,"SET_BORDER_TYPE","FlexLayout_SetBorderType"),D(ce,"SELECT_TAB","FlexLayout_SelectTab"),D(ce,"MOVE_NODE","FlexLayout_MoveNode"),D(ce,"DELETE_TABSET","FlexLayout_DeleteTabset"),D(ce,"SET_ACTIVE_TABSET","FlexLayout_SetActiveTabset"),D(ce,"ADJUST_WEIGHTS","FlexLayout_AdjustWeights"),D(ce,"ADJUST_BORDER_SPLIT","FlexLayout_AdjustBorderSplit"),D(ce,"MAXIMIZE_TOGGLE","FlexLayout_MaximizeToggle"),D(ce,"UPDATE_MODEL_ATTRIBUTES","FlexLayout_UpdateModelAttributes"),D(ce,"UPDATE_NODE_ATTRIBUTES","FlexLayout_UpdateNodeAttributes"),D(ce,"UPDATE_SUBLAYOUT_ATTRIBUTES","FlexLayout_UpdateSubLayoutAttributes"),D(ce,"POPOUT_TAB","FlexLayout_PopoutTab"),D(ce,"POPOUT_TABSET","FlexLayout_PopoutTabset"),D(ce,"CLOSE_POPOUT","FlexLayout_ClosePopout"),D(ce,"MOVE_POPOUT_TO_FRONT","FlexLayout_MoveFloatToFront"),D(ce,"MOVE_FLOAT","FlexLayout_MoveFloat"),D(ce,"DOCK_FLOAT_TO_LAYOUT","FlexLayout_DockFloatToLayout"),D(ce,"POPOUT_FLOAT","FlexLayout_PopoutFloat"),D(ce,"CREATE_SUBLAYOUT","FlexLayout_CreateSubLayout"),D(ce,"GROUP","FlexLayout_Group"),ce),Fe=class{constructor(e,t){D(this,"type");D(this,"data");D(this,"adjusting");this.type=e,this.data=t,this.adjusting=!1}setAdjusting(e){return this.adjusting=e,this}isAdjusting(){return this.adjusting}toJSON(){return{type:this.type,data:this.data}}},$v=class extends Fe{constructor(t){super(re.GROUP,t);D(this,"actions");this.actions=t}},Rt=class{constructor(e,t,r,o,n){D(this,"node");D(this,"rect");D(this,"location");D(this,"index");D(this,"className");this.node=e,this.rect=t,this.location=r,this.index=o,this.className=n}},U=function(e){return e.FLEXLAYOUT__BORDER="flexlayout__border",e.FLEXLAYOUT__BORDER_="flexlayout__border_",e.FLEXLAYOUT__BORDER_TAB_CONTENTS="flexlayout__border_tab_contents",e.FLEXLAYOUT__BORDER_TAB_OVERLAY="flexlayout__border_tab_overlay",e.FLEXLAYOUT__BORDER_TAB_OVERLAY_="flexlayout__border_tab_overlay_",e.FLEXLAYOUT__BORDER_BUTTON="flexlayout__border_button",e.FLEXLAYOUT__BORDER_BUTTON_="flexlayout__border_button_",e.FLEXLAYOUT__BORDER_BUTTON_CONTENT="flexlayout__border_button_content",e.FLEXLAYOUT__BORDER_BUTTON_LEADING="flexlayout__border_button_leading",e.FLEXLAYOUT__BORDER_BUTTON_TRAILING="flexlayout__border_button_trailing",e.FLEXLAYOUT__BORDER_BUTTON__SELECTED="flexlayout__border_button--selected",e.FLEXLAYOUT__BORDER_BUTTON__UNSELECTED="flexlayout__border_button--unselected",e.FLEXLAYOUT__BORDER_TOOLBAR_BUTTON_OVERFLOW="flexlayout__border_toolbar_button_overflow",e.FLEXLAYOUT__BORDER_TOOLBAR_BUTTON_OVERFLOW_="flexlayout__border_toolbar_button_overflow_",e.FLEXLAYOUT__BORDER_INNER="flexlayout__border_inner",e.FLEXLAYOUT__BORDER_INNER_="flexlayout__border_inner_",e.FLEXLAYOUT__BORDER_INNER_TAB_CONTAINER="flexlayout__border_inner_tab_container",e.FLEXLAYOUT__BORDER_INNER_TAB_CONTAINER_="flexlayout__border_inner_tab_container_",e.FLEXLAYOUT__BORDER_INNER_TAB_CONTAINER_LEFT_DOWN="flexlayout__border_inner_tab_container_left_down",e.FLEXLAYOUT__BORDER_TAB_DIVIDER="flexlayout__border_tab_divider",e.FLEXLAYOUT__BORDER_LEADING="flexlayout__border_leading",e.FLEXLAYOUT__BORDER_SIZER="flexlayout__border_sizer",e.FLEXLAYOUT__BORDER_TOOLBAR="flexlayout__border_toolbar",e.FLEXLAYOUT__BORDER_TOOLBAR_="flexlayout__border_toolbar_",e.FLEXLAYOUT__BORDER_TOOLBAR_BUTTON="flexlayout__border_toolbar_button",e.FLEXLAYOUT__BORDER_TOOLBAR_BUTTON_FLOAT="flexlayout__border_toolbar_button-float",e.FLEXLAYOUT__DRAG_RECT="flexlayout__drag_rect",e.FLEXLAYOUT__EDGE_RECT="flexlayout__edge_rect",e.FLEXLAYOUT__EDGE_RECT_TOP="flexlayout__edge_rect_top",e.FLEXLAYOUT__EDGE_RECT_LEFT="flexlayout__edge_rect_left",e.FLEXLAYOUT__EDGE_RECT_BOTTOM="flexlayout__edge_rect_bottom",e.FLEXLAYOUT__EDGE_RECT_RIGHT="flexlayout__edge_rect_right",e.FLEXLAYOUT__ERROR_BOUNDARY_CONTAINER="flexlayout__error_boundary_container",e.FLEXLAYOUT__ERROR_BOUNDARY_CONTENT="flexlayout__error_boundary_content",e.FLEXLAYOUT__FLOAT_WINDOW="flexlayout__float_window",e.FLEXLAYOUT__FLOAT_WINDOW_HEADER="flexlayout__float_window_header",e.FLEXLAYOUT__FLOAT_WINDOW_HEADER_TITLE="flexlayout__float_window_header_title",e.FLEXLAYOUT__FLOAT_WINDOW_CONTENT="flexlayout__float_window_content",e.FLEXLAYOUT__FLOAT_WINDOW_DRAG_HANDLE="flexlayout__float_window_drag_handle",e.FLEXLAYOUT__FLOAT_WINDOW_BUTTON="flexlayout__float_window_button",e.FLEXLAYOUT__FLOATING_WINDOW_CONTENT="flexlayout__floating_window_content",e.FLEXLAYOUT__LAYOUT="flexlayout__layout",e.FLEXLAYOUT__LAYOUT_METRICS="flexlayout__layout_metrics",e.FLEXLAYOUT__LAYOUT_MOVEABLES_HOME="flexlayout__layout_moveables_home",e.FLEXLAYOUT__LAYOUT_OVERLAY="flexlayout__layout_overlay",e.FLEXLAYOUT__LAYOUT_TAB_STAMPS="flexlayout__layout_tab_stamps",e.FLEXLAYOUT__LAYOUT_MAIN="flexlayout__layout_main",e.FLEXLAYOUT__LAYOUT_BORDER_CONTAINER="flexlayout__layout_border_container",e.FLEXLAYOUT__LAYOUT_BORDER_CONTAINER_INNER="flexlayout__layout_border_container_inner",e.FLEXLAYOUT__OUTLINE_RECT="flexlayout__outline_rect",e.FLEXLAYOUT__OUTLINE_RECT_EDGE="flexlayout__outline_rect_edge",e.FLEXLAYOUT__SPLITTER="flexlayout__splitter",e.FLEXLAYOUT__SPLITTER_="flexlayout__splitter_",e.FLEXLAYOUT__SPLITTER_BORDER="flexlayout__splitter_border",e.FLEXLAYOUT__SPLITTER_DRAG="flexlayout__splitter_drag",e.FLEXLAYOUT__SPLITTER_HANDLE="flexlayout__splitter_handle",e.FLEXLAYOUT__SPLITTER_HANDLE_HORZ="flexlayout__splitter_handle_horz",e.FLEXLAYOUT__SPLITTER_HANDLE_VERT="flexlayout__splitter_handle_vert",e.FLEXLAYOUT__ROW="flexlayout__row",e.FLEXLAYOUT__TAB="flexlayout__tab",e.FLEXLAYOUT__TAB_MOVEABLE="flexlayout__tab_moveable",e.FLEXLAYOUT__TAB_OVERLAY="flexlayout__tab_overlay",e.FLEXLAYOUT__TAB_OVERLAY_RAISED="flexlayout__tab_overlay_raised",e.FLEXLAYOUT__TAB_LAYOUT_CONTAINER="flexlayout__tab_layout_container",e.FLEXLAYOUT__TAB_LAYOUT_CONTAINER_USER="flexlayout__tab_layout_container_user",e.FLEXLAYOUT__TABSET="flexlayout__tabset",e.FLEXLAYOUT__TABSET_CONTAINER="flexlayout__tabset_container",e.FLEXLAYOUT__TABSET_MAXIMIZED="flexlayout__tabset-maximized",e.FLEXLAYOUT__TABSET_SELECTED="flexlayout__tabset-selected",e.FLEXLAYOUT__TABSET_TAB_SPACER="flexlayout__tabset_tab_spacer",e.FLEXLAYOUT__TABSET_TAB_DIVIDER="flexlayout__tabset_tab_divider",e.FLEXLAYOUT__TABSET_TAB_DIVIDER_SELECTED_BEFORE="flexlayout__tabset_tab_divider_selected_before",e.FLEXLAYOUT__TABSET_TAB_DIVIDER_SELECTED_AFTER="flexlayout__tabset_tab_divider_selected_after",e.FLEXLAYOUT__TABSET_TAB_DIVIDER_INNER="flexlayout__tabset_tab_divider_inner",e.FLEXLAYOUT__TABSET_CONTENT="flexlayout__tabset_content",e.FLEXLAYOUT__TABSET_TABBAR_INNER="flexlayout__tabset_tabbar_inner",e.FLEXLAYOUT__TABSET_TABBAR_INNER_="flexlayout__tabset_tabbar_inner_",e.FLEXLAYOUT__TABSET_LEADING="flexlayout__tabset_leading",e.FLEXLAYOUT__TABSET_TABBAR_INNER_TAB_CONTAINER="flexlayout__tabset_tabbar_inner_tab_container",e.FLEXLAYOUT__TABSET_TABBAR_INNER_TAB_CONTAINER_="flexlayout__tabset_tabbar_inner_tab_container_",e.FLEXLAYOUT__TABSET_TABBAR_OUTER="flexlayout__tabset_tabbar_outer",e.FLEXLAYOUT__TABSET_TABBAR_OUTER_="flexlayout__tabset_tabbar_outer_",e.FLEXLAYOUT__TAB_BORDER="flexlayout__tab_border",e.FLEXLAYOUT__TAB_BORDER_="flexlayout__tab_border_",e.FLEXLAYOUT__TAB_BORDER_OVERLAY="flexlayout__tab_border_overlay",e.FLEXLAYOUT__TAB_BUTTON="flexlayout__tab_button",e.FLEXLAYOUT__TAB_BUTTON_STRETCH="flexlayout__tab_button_stretch",e.FLEXLAYOUT__TAB_BUTTON_CONTENT="flexlayout__tab_button_content",e.FLEXLAYOUT__TAB_BUTTON_LEADING="flexlayout__tab_button_leading",e.FLEXLAYOUT__TAB_BUTTON_OVERFLOW="flexlayout__tab_button_overflow",e.FLEXLAYOUT__TAB_BUTTON_PIN="flexlayout__tab_button_pin",e.FLEXLAYOUT__TAB_BUTTON_OVERFLOW_COUNT="flexlayout__tab_button_overflow_count",e.FLEXLAYOUT__TAB_BUTTON_TEXTBOX="flexlayout__tab_button_textbox",e.FLEXLAYOUT__TAB_BUTTON_TRAILING="flexlayout__tab_button_trailing",e.FLEXLAYOUT__TAB_BUTTON_STAMP="flexlayout__tab_button_stamp",e.FLEXLAYOUT__TAB_TOOLBAR="flexlayout__tab_toolbar",e.FLEXLAYOUT__TAB_TOOLBAR_BUTTON="flexlayout__tab_toolbar_button",e.FLEXLAYOUT__TAB_TOOLBAR_ICON="flexlayout__tab_toolbar_icon",e.FLEXLAYOUT__TAB_TOOLBAR_BUTTON_="flexlayout__tab_toolbar_button-",e.FLEXLAYOUT__TAB_TOOLBAR_BUTTON_FLOAT="flexlayout__tab_toolbar_button-float",e.FLEXLAYOUT__TAB_TOOLBAR_STICKY_BUTTONS_CONTAINER="flexlayout__tab_toolbar_sticky_buttons_container",e.FLEXLAYOUT__TAB_TOOLBAR_BUTTON_CLOSE="flexlayout__tab_toolbar_button-close",e.FLEXLAYOUT__POPUP_MENU_CONTAINER="flexlayout__popup_menu_container",e.FLEXLAYOUT__POPUP_MENU_ITEM="flexlayout__popup_menu_item",e.FLEXLAYOUT__POPUP_MENU_ITEM__SELECTED="flexlayout__popup_menu_item--selected",e.FLEXLAYOUT__POPUP_MENU_ITEM__DISABLED="flexlayout__popup_menu_item--disabled",e.FLEXLAYOUT__POPUP_MENU_DIVIDER="flexlayout__popup_menu_divider",e.FLEXLAYOUT__POPUP_MENU="flexlayout__popup_menu",e.FLEXLAYOUT__MINI_SCROLLBAR="flexlayout__mini_scrollbar",e.FLEXLAYOUT__MINI_SCROLLBAR_CONTAINER="flexlayout__mini_scrollbar_container",e}({}),Js=class{constructor(e){D(this,"model");D(this,"attributes");D(this,"parent");D(this,"children");D(this,"rect");D(this,"path");D(this,"listeners");this.model=e,this.attributes={},this.children=[],this.rect=ge.empty(),this.listeners=new Map,this.path=""}getId(){let e=this.attributes.id;return e!==void 0||(e=this.model.nextUniqueId(),this.setId(e)),e}getModel(){return this.model}getType(){return this.attributes.type}getParent(){return this.parent}getChildren(){return this.children}getRect(){return this.rect}getPath(){return this.path}isCloseable(){for(let e=0;er.some(a=>a.toLowerCase()===i);return e.key.toLowerCase()===o.toLowerCase()&&e.ctrlKey===n("ctrl")&&e.shiftKey===n("shift")&&e.altKey===n("alt")&&e.metaKey===n("meta")}function xa(e){return e.ctrlKey||e.shiftKey||e.altKey||e.metaKey}function e1(e){return{...Q0,...e}}function No(e){return e?.replace(/\bctrl\b/i,"Control")}function Gv(e){e&&(e.querySelector('a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])')??e).focus()}function ya(e){let t=!1;return e.nativeEvent instanceof MouseEvent&&(e.nativeEvent.button!==0||e.ctrlKey||e.altKey||e.metaKey||e.shiftKey)&&(t=!0),t}function Sl(e,t){const r=[..._h("iframe",t),..._h("webview",t)];for(const o of r)o.style.pointerEvents=e?"auto":"none"}function _h(e,t){return[...t.getElementsByTagName(e)]}var Ll=!1;function cs(e,t,r,o,n){Ll=!0,t.preventDefault();const i=u=>{u.preventDefault(),r(u.clientX,u.clientY)},a=()=>{e.removeEventListener("pointermove",i),e.removeEventListener("pointerup",c),e.removeEventListener("pointercancel",l)},l=u=>{u.preventDefault(),a(),Ll=!1,n()},c=()=>{a(),Ll=!1,o()};e.addEventListener("pointermove",i),e.addEventListener("pointerup",c),e.addEventListener("pointercancel",l)}function Kv(e){let t;return e.getController().getModel().visitNodes(r=>{r instanceof Le&&r.getSubLayoutId()===e.getLayoutId()&&(t=r.getLayout())}),t}function qv(e,t){const r=t.getType();if(r==="window")return e.isAllowedInWindow();if(r==="float")return!0;if(r==="tab"){const o=Kv(t);return!(o&&o.getType()==="window"&&!o.isMainLayout()&&!e.isAllowedInWindow()||Jv(e))}return!1}function Jv(e){return e instanceof Le?e.getSubLayoutId()!==void 0:e.getChildren().some(t=>Jv(t))}function wh(e,t){const r=e.getAttribute("style");return r===t.getAttribute("style")?!1:(r?t.setAttribute("style",r):t.removeAttribute("style"),!0)}function t1(){const e=navigator.userAgent;return e.includes("Safari")&&!e.includes("Chrome")&&!e.includes("Chromium")}function r1(e=window){const t=e.document;return{scrollTop:e.pageYOffset||t.documentElement.scrollTop||t.body.scrollTop||0,scrollLeft:e.pageXOffset||t.documentElement.scrollLeft||t.body.scrollLeft||0,fullHeight:Math.max(t.body.scrollHeight,t.documentElement.scrollHeight,t.body.offsetHeight,t.documentElement.offsetHeight,t.body.clientHeight,t.documentElement.clientHeight),fullWidth:Math.max(t.body.scrollWidth,t.documentElement.scrollWidth,t.body.offsetWidth,t.documentElement.offsetWidth,t.body.clientWidth,t.documentElement.clientWidth),viewportHeight:e.innerHeight||t.documentElement.clientHeight,viewportWidth:e.innerWidth||t.documentElement.clientWidth}}var je,Ue=(je=class extends Js{constructor(r,o){super(r);D(this,"layout");D(this,"minHeight");D(this,"minWidth");D(this,"maxHeight");D(this,"maxWidth");this.minHeight=1,this.minWidth=1,this.maxHeight=Xr,this.maxWidth=Xr,je.attributeDefinitions.fromJson(o,this.attributes),r.addNode(this)}static fromJson(r,o,n){const i=new je(o,r);if(r.children!=null){for(const a of r.children)if(a.type===Oe.TYPE){const l=Oe.fromJson(a,o,n);i.addChild(l)}else if(a.type===je.TYPE){const l=je.fromJson(a,o,n);i.addChild(l)}}return i}getWeight(){return this.attributes.weight}toJson(){const r={};je.attributeDefinitions.toJson(r,this.attributes),r.children=[];for(const o of this.children)r.children.push(o.toJson());return r}getLayout(){return this.layout?this.layout:super.getLayout()}setLayout(r){this.layout=r}setWeight(r){this.attributes.weight=r}getSplitterBounds(r){const o=this.getOrientation()===_e.HORZ,n=this.getChildren(),i=this.model.getSplitterSize(),a=n[0].getRect(),l=n[n.length-1].getRect();let c=o?[a.x,l.getRight()]:[a.y,l.getBottom()];const u=o?[a.x,l.getRight()]:[a.y,l.getBottom()];for(let d=0;d0&&(c[0]+=i,u[0]+=i)}for(let d=n.length-1;d>=r;d--){const f=n[d];c[1]-=(o?f.getMinWidth():f.getMinHeight())+i,u[1]-=(o?Math.max(f.getMinWidth(),f.getMaxWidth()):Math.max(f.getMinHeight(),f.getMaxHeight()))+i}return c=[Math.max(u[1],c[0]),Math.min(u[0],c[1])],c[0]>c[1]&&(c=[c[0],c[0]]),c}getSplitterInitials(r){const o=this.getOrientation()===_e.HORZ,n=this.getChildren(),i=this.model.getSplitterSize(),a=[];let l=0;for(let d=0;df?(g=u[r]+p-f,u[r]=f):u[r]+=p;for(let x=r-1;x>=0;x--){const w=c[x],k=l?w.getMinWidth():w.getMinHeight();if(u[x]-p>k){u[x]-=p;break}else p-=u[x]-k,u[x]=k}for(let x=r+1;xf?(g=u[r-1]+p-f,u[r-1]=f):u[r-1]+=p;for(let x=r;xk){u[x]-=p;break}else p-=u[x]-k,u[x]=k}for(let x=r-1;x>=0;x--){const w=c[x],k=l?w.getMaxWidth():w.getMaxHeight();if(u[x]+gMath.max(.1,d)*100/i)}getMinWidth(){return this.minWidth}getMinHeight(){return this.minHeight}getMaxWidth(){return this.maxWidth}getMaxHeight(){return this.maxHeight}calcMinMaxSize(){this.minHeight=1,this.minWidth=1,this.maxHeight=Xr,this.maxWidth=Xr;let r=!0;for(const o of this.children){const n=o;n.calcMinMaxSize();const i=Math.max(n.getMinHeight(),n.getMaxHeight()),a=Math.max(n.getMinWidth(),n.getMaxWidth());this.getOrientation()===_e.VERT?(this.minHeight+=n.getMinHeight(),this.maxHeight+=i,r||(this.minHeight+=this.model.getSplitterSize(),this.maxHeight+=this.model.getSplitterSize()),this.minWidth=Math.max(this.minWidth,n.getMinWidth()),this.maxWidth=Math.min(this.maxWidth,a)):(this.minWidth+=n.getMinWidth(),this.maxWidth+=a,r||(this.minWidth+=this.model.getSplitterSize(),this.maxWidth+=this.model.getSplitterSize()),this.minHeight=Math.max(this.minHeight,n.getMinHeight()),this.maxHeight=Math.min(this.maxHeight,i)),r=!1}this.maxWidth=Math.max(this.maxWidth,this.minWidth),this.maxHeight=Math.max(this.maxHeight,this.minHeight)}tidy(){let r=0;for(;ru/2-f&&athis.rect.getRight()-d&&a>u/2-f&&ac/2-f&&lthis.rect.getBottom()-d&&l>c/2-f&&ld+f.getWeight(),0);c===0&&(c=100),l.setWeight(c/3);const u=!this.model.isRootOrientationVertical();if(i===ee.CENTER)n===-1?this.addChild(l,this.children.length):this.addChild(l,n);else if(u&&i===ee.LEFT||!u&&i===ee.TOP)this.addChild(l,0);else if(u&&i===ee.RIGHT||!u&&i===ee.BOTTOM)this.addChild(l);else if(u&&i===ee.TOP||!u&&i===ee.LEFT){const d=new je(this.model,{}),f=new je(this.model,{});f.setWeight(75),l.setWeight(25);for(const p of this.children)f.addChild(p);this.removeAll(),d.addChild(l),d.addChild(f),this.addChild(d)}else if(u&&i===ee.BOTTOM||!u&&i===ee.RIGHT){const d=new je(this.model,{}),f=new je(this.model,{});f.setWeight(75),l.setWeight(25);for(const p of this.children)f.addChild(p);this.removeAll(),d.addChild(f),d.addChild(l),this.addChild(d)}l instanceof Oe&&this.model.setActiveTabset(l,this.getLayoutId()),this.model.tidy()}isEnableDrop(){return!0}getAttributeDefinitions(){return je.attributeDefinitions}updateAttrs(r){je.attributeDefinitions.update(r,this.attributes)}static getAttributeDefinitions(){return lt.ensureAttributePairing(),je.attributeDefinitions}static createAttributeDefinitions(){const r=new gi;return r.add("type",je.TYPE,!0).setType(te.STRING).setFixed(),r.add("id",void 0).setType(te.STRING).setDescription("the unique id of the row, if left undefined a uuid will be assigned"),r.add("weight",100).setType(te.NUMBER).setDescription("relative weight for sizing of this row in parent row"),r}},D(je,"TYPE","row"),D(je,"attributeDefinitions",je.createAttributeDefinitions()),je),vt,Oe=(vt=class extends Js{constructor(r,o){super(r);D(this,"tabStripRect",ge.empty());D(this,"contentRect",ge.empty());D(this,"calculatedMinHeight");D(this,"calculatedMinWidth");D(this,"calculatedMaxHeight");D(this,"calculatedMaxWidth");this.calculatedMinHeight=0,this.calculatedMinWidth=0,this.calculatedMaxHeight=0,this.calculatedMaxWidth=0,vt.attributeDefinitions.fromJson(o,this.attributes),r.addNode(this)}static fromJson(r,o,n){const i=new vt(o,r);if(r.children!=null)for(const a of r.children){const l=Le.fromJson(a,o);i.addChild(l)}return i.children.length===0?i.setSelected(-1):i.getSelected()>=i.children.length&&i.setSelected(i.children.length-1),r.maximized&&r.maximized===!0&&n.setMaximizedTabSet(i),r.active&&r.active===!0&&n.setActiveTabSet(i),i}getName(){return this.getAttr("name")}isEnableActiveIcon(){return this.getAttr("enableActiveIcon")}getSelected(){const r=this.attributes.selected;return r!==void 0?r:-1}getSelectedNode(){const r=this.getSelected();if(r!==-1)return this.children[r]}getPinnedRunLength(){let r=0;for(const o of this.children)if(o.isPinned())r++;else break;return r}getWeight(){return this.getAttr("weight")}getAttrMinWidth(){return this.getAttr("minWidth")}getAttrMinHeight(){return this.getAttr("minHeight")}getMinWidth(){return this.calculatedMinWidth}getMinHeight(){return this.calculatedMinHeight}getAttrMaxWidth(){return this.getAttr("maxWidth")}getAttrMaxHeight(){return this.getAttr("maxHeight")}getMaxWidth(){return this.calculatedMaxWidth}getMaxHeight(){return this.calculatedMaxHeight}isCloseable(){let r=this.isEnableClose();return r&&(r=super.isCloseable()),r}getConfig(){return this.attributes.config}isMaximized(){return this.model.getMaximizedTabset(this.getLayoutId())===this}isActive(){return this.model.getActiveTabset(this.getLayoutId())===this}isEnableDeleteWhenEmpty(){return this.getAttr("enableDeleteWhenEmpty")}isEnableDrop(){return this.getAttr("enableDrop")}isEnableTabStrip(){return this.getAttr("enableTabStrip")}isEnableTabWrap(){return this.getAttr("enableTabWrap")}isEnableDrag(){return this.getAttr("enableDrag")}isEnableDivide(){return this.getAttr("enableDivide")}isEnableMaximize(){return this.getAttr("enableMaximize")}isEnableClose(){return this.getAttr("enableClose")}isEnableCloseButton(){return this.getAttr("enableCloseButton")}isEnableSingleTabStretch(){return this.getAttr("enableSingleTabStretch")}isAutoSelectTab(){return this.getAttr("autoSelectTab")}isEnableTabScrollbar(){return this.getAttr("enableTabScrollbar")}getClassNameTabStrip(){return this.getAttr("classNameTabStrip")}getTabLocation(){return this.getAttr("tabLocation")}toJson(){const r={};return vt.attributeDefinitions.toJson(r,this.attributes),r.children=this.children.map(o=>o.toJson()),this.isActive()&&(r.active=!0),this.isMaximized()&&(r.maximized=!0),r}calcMinMaxSize(){this.calculatedMinHeight=this.getAttrMinHeight(),this.calculatedMinWidth=this.getAttrMinWidth(),this.calculatedMaxHeight=this.getAttrMaxHeight(),this.calculatedMaxWidth=this.getAttrMaxWidth();for(const r of this.children){const o=r;this.calculatedMinWidth=Math.max(this.calculatedMinWidth,o.getMinWidth()),this.calculatedMinHeight=Math.max(this.calculatedMinHeight,o.getMinHeight()),this.calculatedMaxWidth=Math.min(this.calculatedMaxWidth,o.getMaxWidth()),this.calculatedMaxHeight=Math.min(this.calculatedMaxHeight,o.getMaxHeight())}this.calculatedMinHeight+=this.tabStripRect.height,this.calculatedMaxHeight+=this.tabStripRect.height,this.calculatedMaxWidth=Math.max(this.calculatedMaxWidth,this.calculatedMinWidth),this.calculatedMaxHeight=Math.max(this.calculatedMaxHeight,this.calculatedMinHeight)}canMaximize(){return this.isEnableMaximize()?this.getModel().getMaximizedTabset(this.getLayoutId())===this?!0:!(this.getParent()===this.getModel().getRootRow(this.getLayoutId())&&this.getModel().getRootRow(this.getLayoutId()).getChildren().length===1):!1}setContentRect(r){this.contentRect=r}getContentRect(){return this.contentRect}setTabStripRect(r){this.tabStripRect=r}getTabStripRect(){return this.tabStripRect}setWeight(r){this.attributes.weight=r}setSelected(r){this.attributes.selected=r}canDrop(r,o,n,i=!1){let a;const l=this.getLayout();if(r===this){const c=ee.CENTER,u=this.tabStripRect;a=new Rt(this,u,c,-1,U.FLEXLAYOUT__OUTLINE_RECT)}else{if(this.getLayoutId()!==lt.MAIN_LAYOUT_ID&&!qv(r,l))return;if(this.contentRect.contains(o,n)){let c=ee.CENTER;if(this.model.getMaximizedTabset(this.getLayoutId())===void 0){const d=!i&&this.isEnableDrop(),f=this.isEnableDivide();if(!d&&!f)return;d&&f?c=ee.getLocation(this.contentRect,o,n):d?c=ee.CENTER:c=ee.getLocation(this.contentRect,o,n,!0)}const u=c.getDockRect(this.rect);a=new Rt(this,u,c,-1,U.FLEXLAYOUT__OUTLINE_RECT)}else if(this.tabStripRect!=null&&this.tabStripRect.contains(o,n)){let c,u,d;if(this.children.length===0)c=this.tabStripRect.clone(),u=c.y+3,d=c.height-4,c.width=2;else{let f=this.children[0];c=f.getTabRect(),u=c.y,d=c.height;let p=this.tabStripRect.x;for(let g=0;g0){const c=this.getPinnedRunLength(),u=r instanceof Le&&r.isPinned()?Math.min(a.index,c):Math.max(a.index,c);if(u!==a.index){let d;if(u0&&n--,a===ee.CENTER){let u=n;u===-1&&(u=this.children.length);const d=this.getPinnedRunLength();if(r instanceof Le?u=r.isPinned()?Math.min(u,d):Math.max(u,d):u=Math.max(u,d),r instanceof Le)this.addChild(r,u),i||i!==!1&&this.isAutoSelectTab()?this.setSelected(u):Cl(this,u);else if(r instanceof Ue){const f=u;r.forEachNode((p,g)=>{p instanceof Le&&(this.addChild(p,u),u++)},0),Cl(this,f,u-f)}else{const f=u;for(let p=0;p0&&this.setSelected(0)}this.model.setActiveTabset(this,this.parent.getLayoutId())}else{let u=r;if(r instanceof Le){const p=this.model.getOnCreateTabSet();u=new vt(this.model,p?p(r):{}),u.addChild(r)}else if(r instanceof Ue){const p=this.getParent();if(r.getOrientation()===p.getOrientation()&&(o.getOrientation()===p.getOrientation()||o===ee.CENTER)){const g=new Ue(this.model,{});g.addChild(r),u=g}}else u=r;const d=this.parent,f=d.getChildren().indexOf(this);if(d.getOrientation()===a.orientation)u.setWeight(this.getWeight()/2),this.setWeight(this.getWeight()/2),d.addChild(u,f+a.indexPlus);else{const p=new Ue(this.model,{});if(p.setWeight(this.getWeight()),p.addChild(this),this.setWeight(50),r instanceof Ue&&r.getChildren().length>0&&r.getOrientation()!==d.getOrientation()){const g=r.getChildren(),x=g.reduce((k,b)=>k+b.getWeight(),0);let w=a.indexPlus;for(const k of g)k.setWeight(x===0?50/g.length:50*k.getWeight()/x),p.addChild(k,w++)}else u.setWeight(50),p.addChild(u,a.indexPlus);d.removeChild(this),d.addChild(p,f)}u instanceof vt&&this.model.setActiveTabset(u,this.getLayoutId())}this.model.tidy()}updateAttrs(r){vt.attributeDefinitions.update(r,this.attributes)}getAttributeDefinitions(){return vt.attributeDefinitions}static getAttributeDefinitions(){return lt.ensureAttributePairing(),vt.attributeDefinitions}static createAttributeDefinitions(){const r=new gi;return r.add("type",vt.TYPE,!0).setType(te.STRING).setFixed(),r.add("id",void 0).setType(te.STRING).setDescription("the unique id of the tab set, if left undefined a uuid will be assigned"),r.add("weight",100).setType(te.NUMBER).setDescription("relative weight for sizing of this tabset in parent row"),r.add("selected",0).setType(te.NUMBER).setDescription("index of selected/visible tab in tabset; -1 means no tab selected"),r.add("name",void 0).setType(te.STRING).setDescription("an accessible label for the tab strip (used as the tablist's aria-label; not displayed visually)"),r.add("config",void 0).setType("any").setDescription("a place to hold json config used in your own code"),r.addInherited("enableDeleteWhenEmpty","tabSetEnableDeleteWhenEmpty").setDescription("whether to delete this tabset when it has no tabs"),r.addInherited("enableDrop","tabSetEnableDrop").setDescription("whether tabs can be dropped into this tabset"),r.addInherited("enableDrag","tabSetEnableDrag").setDescription("whether the user can drag tabs out of this tabset"),r.addInherited("enableDivide","tabSetEnableDivide").setDescription("whether dropping on an edge of this tabset splits it to create a new tabset"),r.addInherited("enableMaximize","tabSetEnableMaximize").setDescription("whether the tabset can be maximized to fill the layout via the maximize button"),r.addInherited("enableClose","tabSetEnableClose").setDescription("whether this tabset can be closed"),r.addInherited("enableCloseButton","tabSetEnableCloseButton").setDescription("if the tabset can be closed then show a close button"),r.addInherited("enableSingleTabStretch","tabSetEnableSingleTabStretch").setDescription("if the tabset has only a single tab then stretch the single tab to fill area and display in a header style"),r.addInherited("classNameTabStrip","tabSetClassNameTabStrip").setDescription("a class name to apply to the tab strip"),r.addInherited("enableTabStrip","tabSetEnableTabStrip").setDescription("when enabled the tabset shows a tab strip and can host multiple tabs; when disabled the strip is hidden"),r.addInherited("minWidth","tabSetMinWidth").setDescription("minimum width (in px) for this tabset"),r.addInherited("minHeight","tabSetMinHeight").setDescription("minimum height (in px) for this tabset"),r.addInherited("maxWidth","tabSetMaxWidth").setDescription("maximum width (in px) for this tabset"),r.addInherited("maxHeight","tabSetMaxHeight").setDescription("maximum height (in px) for this tabset"),r.addInherited("enableTabWrap","tabSetEnableTabWrap").setDescription("wrap tabs onto multiple lines"),r.addInherited("tabLocation","tabSetTabLocation").setDescription("the location of the tabs either top or bottom"),r.addInherited("autoSelectTab","tabSetAutoSelectTab").setDescription("whether to select new/moved tabs in tabset"),r.addInherited("enableActiveIcon","tabSetEnableActiveIcon").setDescription("whether the active icon (*) should be displayed when the tabset is active"),r.addInherited("enableTabScrollbar","tabSetEnableTabScrollbar").setDescription("whether to show a mini scrollbar for the tabs"),r}},D(vt,"TYPE","tabset"),D(vt,"attributeDefinitions",vt.createAttributeDefinitions()),vt);function Cl(e,t,r=1){const o=e.getSelected();r>0&&o!==-1&&t<=o&&e.setSelected(o+r)}function us(e,t){if(e!==void 0&&(e instanceof Oe||e instanceof Ke)){const r=e.getSelected();r!==-1&&(t===r&&e.getChildren().length>0?t>=e.getChildren().length&&e.setSelected(e.getChildren().length-1):tr||e.setSelected(-1))}}function Tn(){return"10000000-1000-4000-8000-100000000000".replace(/[018]/g,e=>(e^crypto.getRandomValues(new Uint8Array(1))[0]&15>>e/4).toString(16))}var kt,Ke=(kt=class extends Js{constructor(r,o,n){super(n);D(this,"contentRect",ge.empty());D(this,"tabHeaderRect",ge.empty());D(this,"location");this.location=r,this.attributes.id=`border_${r.getName()}`,kt.attributeDefinitions.fromJson(o,this.attributes),n.addNode(this)}static fromJson(r,o){const n=ee.getByName(r.location),i=new kt(n,r,o);return r.children&&(i.children=r.children.map(a=>{const l=Le.fromJson(a,o);return l.setParent(i),l})),i.getSelected()>=i.children.length&&i.setSelected(i.children.length-1),i}getLocation(){return this.location}getClassName(){return this.getAttr("className")}isHorizontal(){return this.location.orientation===_e.HORZ}getSize(){const r=this.getAttr("size"),o=this.getSelected();if(o===-1)return r;{const n=this.children[o],i=this.isHorizontal()?n.getAttr("borderWidth"):n.getAttr("borderHeight");return i===-1?r:i}}getMinSize(){const r=this.getSelectedNode();let o=this.getAttr("minSize");if(r){const n=this.isHorizontal()?r.getMinWidth():r.getMinHeight();o=Math.max(o,n)}return o}getMaxSize(){const r=this.getSelectedNode();let o=this.getAttr("maxSize");if(r){const n=this.isHorizontal()?r.getMaxWidth():r.getMaxHeight();o=Math.min(o,n)}return o}getSelected(){return this.attributes.selected}isAutoHide(){return this.getAttr("enableAutoHide")}getBorderType(){return this.getAttr("borderType")}isOverlay(){return this.getAttr("borderType")==="overlay"}setBorderType(r){this.attributes.borderType=r}getSelectedNode(){if(this.getSelected()!==-1)return this.children[this.getSelected()]}getOrientation(){return this.location.getOrientation()}getConfig(){return this.attributes.config}isMaximized(){return!1}isShowing(){return this.attributes.show}toJson(){const r={location:"bottom"};return kt.attributeDefinitions.toJson(r,this.attributes),r.location=this.location.getName(),r.children=this.children.map(o=>o.toJson()),r}isAutoSelectTabWhenOpen(){return this.getAttr("autoSelectTabWhenOpen")}isAutoSelectTabWhenClosed(){return this.getAttr("autoSelectTabWhenClosed")}isAutoSelectTab(r){return r==null&&(r=this.getSelected()!==-1),r?this.isAutoSelectTabWhenOpen():this.isAutoSelectTabWhenClosed()}isEnableTabScrollbar(){return this.getAttr("enableTabScrollbar")}setSelected(r){this.attributes.selected=r}setTabHeaderRect(r){this.tabHeaderRect=r}getRect(){return this.tabHeaderRect}getContentRect(){return this.contentRect}setContentRect(r){this.contentRect=r}isEnableDrop(){return this.getAttr("enableDrop")}setSize(r){const o=this.getSelected();if(o===-1)this.attributes.size=r;else{const n=this.children[o];(this.isHorizontal()?n.getAttr("borderWidth"):n.getAttr("borderHeight"))===-1?this.attributes.size=r:this.isHorizontal()?n.setBorderWidth(r):n.setBorderHeight(r)}}updateAttrs(r){kt.attributeDefinitions.update(r,this.attributes)}remove(r){const o=this.removeChild(r);this.getSelected()!==-1&&us(this,o)}canDrop(r,o,n,i=!1){if(!(r instanceof Le))return;let a;const l=ee.CENTER;if(this.tabHeaderRect.contains(o,n)){if(this.location.orientation===_e.VERT)if(this.children.length>0){let c=this.children[0],u=c.getTabRect();const d=u.y,f=u.height;let p=this.tabHeaderRect.x;for(let g=0;g=p&&o0){let c=this.children[0],u=c.getTabRect();const d=u.x,f=u.width;let p=this.tabHeaderRect.y;for(let g=0;g=p&&n0&&n--;let c=n;c===-1&&(c=this.children.length),this.addChild(r,c),i||i!==!1&&this.isAutoSelectTab()?this.setSelected(c):Cl(this,c),this.model.tidy()}getSplitterBounds(r=!1){const o=[0,0],n=this.model.getRootRow(lt.MAIN_LAYOUT_ID),i=n.getRect();if(i.width===0&&i.height===0)return o;const a=r?this.getMinSize():0,l=r?this.getMaxSize():99999,c=this.model.getSplitterSize();if(this.location===ee.TOP){o[0]=this.tabHeaderRect.getBottom()+a;const u=this.tabHeaderRect.getBottom()+l;o[1]=Math.max(o[0],i.getBottom()-n.getMinHeight()-c),o[1]=Math.min(o[1],u)}else if(this.location===ee.LEFT){o[0]=this.tabHeaderRect.getRight()+a;const u=this.tabHeaderRect.getRight()+l;o[1]=Math.max(o[0],i.getRight()-n.getMinWidth()-c),o[1]=Math.min(o[1],u)}else if(this.location===ee.BOTTOM){o[1]=this.tabHeaderRect.y-a-c;const u=this.tabHeaderRect.y-l-c;o[0]=Math.min(o[1],i.y+n.getMinHeight()),o[0]=Math.max(o[0],u)}else if(this.location===ee.RIGHT){o[1]=this.tabHeaderRect.x-a-c;const u=this.tabHeaderRect.x-l-c;o[0]=Math.min(o[1],i.x+n.getMinWidth()),o[0]=Math.max(o[0],u)}return o}calculateSplit(r,o){const n=this.getSplitterBounds();return this.location===ee.BOTTOM||this.location===ee.RIGHT?Math.max(0,n[1]-o):Math.max(0,o-n[0])}getAttributeDefinitions(){return kt.attributeDefinitions}static getAttributeDefinitions(){return lt.ensureAttributePairing(),kt.attributeDefinitions}static createAttributeDefinitions(){const r=new gi;return r.add("type",kt.TYPE,!0).setType(te.STRING).setFixed(),r.add("selected",-1).setType(te.NUMBER).setDescription("index of selected/visible tab in border; -1 means no tab selected"),r.add("borderType","split").setType(te.STRING).setValues(["split","overlay"]).setDescription(`the border display type: 'split' splits the main layout to make room when a tab is selected; 'overlay' shows +`)}},Oi,te=(Oi=class{constructor(e,t,r,o){D(this,"name");D(this,"alias");D(this,"modelName");D(this,"pairedAttr");D(this,"pairedType");D(this,"defaultValue");D(this,"alwaysWriteJson");D(this,"type");D(this,"required");D(this,"fixed");D(this,"description");D(this,"values");this.name=e,this.alias=void 0,this.modelName=t,this.defaultValue=r,this.alwaysWriteJson=o,this.required=!1,this.fixed=!1,this.type="any"}setType(e){return this.type=e,this}getEffectiveType(){return this.type!=="any"?this.type:this.pairedAttr?.type}setAlias(e){return this.alias=e,this}setDescription(e){this.description=e}setValues(e){return this.values=e.map(t=>typeof t=="object"&&t!==null&&"value"in t?{value:t.value,label:t.label!==void 0?t.label:String(t.value)}:{value:t,label:typeof t=="string"?t.charAt(0).toUpperCase()+t.slice(1):String(t)}),this}getValues(){return this.values!==void 0?this.values:this.pairedAttr?.values}setRequired(){return this.required=!0,this}setFixed(){return this.fixed=!0,this}setpairedAttr(e){this.pairedAttr=e}setPairedType(e){this.pairedType=e}},D(Oi,"NUMBER","number"),D(Oi,"STRING","string"),D(Oi,"BOOLEAN","boolean"),Oi),ge=class Ho{constructor(t,r,o,n){D(this,"x");D(this,"y");D(this,"width");D(this,"height");this.x=t,this.y=r,this.width=o,this.height=n}static empty(){return new Ho(0,0,0,0)}static fromJson(t){return new Ho(t.x,t.y,t.width,t.height)}toJson(){return{x:this.x,y:this.y,width:this.width,height:this.height}}snap(t){this.x=Math.round(this.x/t)*t,this.y=Math.round(this.y/t)*t,this.width=Math.round(this.width/t)*t,this.height=Math.round(this.height/t)*t}static getBoundingClientRect(t){const{x:r,y:o,width:n,height:i}=t.getBoundingClientRect();return new Ho(r,o,n,i)}static fromDomRect(t){return new Ho(t.x,t.y,t.width,t.height)}relativeTo(t){return new Ho(this.x-t.x,this.y-t.y,this.width,this.height)}clone(){return new Ho(this.x,this.y,this.width,this.height)}equals(t){return this.x===t?.x&&this.y===t?.y&&this.width===t?.width&&this.height===t?.height}equalsWhenRounded(t){if(!t)return!1;const r=.5;return Math.abs(this.x-t.x)t.width&&(this.width=t.width),this.height>t.height&&(this.height=t.height),this.xt.getRight()&&(this.x=t.getRight()-this.width),this.getBottom()>t.getBottom()&&(this.y=t.getBottom()-this.height),this.x=.25&&r<.75&&o>=.25&&o<.75)return Ie.CENTER;const i=o>=r,a=o>=1-r;return i?a?Ie.BOTTOM:Ie.LEFT:a?Ie.RIGHT:Ie.TOP}getName(){return this.name}getOrientation(){return this.orientation}getDockRect(t){return this===Ie.TOP?new ge(t.x,t.y,t.width,t.height/2):this===Ie.BOTTOM?new ge(t.x,t.getBottom()-t.height/2,t.width,t.height/2):this===Ie.LEFT?new ge(t.x,t.y,t.width/2,t.height):this===Ie.RIGHT?new ge(t.getRight()-t.width/2,t.y,t.width/2,t.height):t.clone()}toString(){return"(DockLocation: name="+this.name+", orientation="+this.orientation+")"}},D(Ie,"values",new Map),D(Ie,"TOP",new Ie("top",_e.VERT,0)),D(Ie,"BOTTOM",new Ie("bottom",_e.VERT,1)),D(Ie,"LEFT",new Ie("left",_e.HORZ,0)),D(Ie,"RIGHT",new Ie("right",_e.HORZ,1)),D(Ie,"CENTER",new Ie("center",_e.VERT,0)),Ie),ce,re=(ce=class{static group(t){return new $v(t)}static addTab(t,r,o,n,i){return new Fe(ce.ADD_TAB,{json:t,toNode:r,location:o.getName(),index:n,select:i})}static addNode(t,r,o,n,i){return this.addTab(t,r,o,n,i)}static moveNode(t,r,o,n,i){return new Fe(ce.MOVE_NODE,{fromNode:t,toNode:r,location:o.getName(),index:n,select:i})}static deleteTab(t){return new Fe(ce.DELETE_TAB,{node:t})}static deleteTabset(t){return new Fe(ce.DELETE_TABSET,{node:t})}static renameTab(t,r){return new Fe(ce.RENAME_TAB,{node:t,text:r})}static setTabPinned(t,r){return new Fe(ce.SET_TAB_PINNED,{node:t,pinned:r})}static setBorderType(t,r){return new Fe(ce.SET_BORDER_TYPE,{node:t,borderType:r})}static selectTab(t){return new Fe(ce.SELECT_TAB,{tabNode:t})}static setActiveTabset(t,r){return new Fe(ce.SET_ACTIVE_TABSET,{tabsetNode:t,layoutId:r})}static adjustWeights(t,r){return new Fe(ce.ADJUST_WEIGHTS,{nodeId:t,weights:r})}static adjustBorderSplit(t,r){return new Fe(ce.ADJUST_BORDER_SPLIT,{node:t,size:r})}static maximizeToggle(t,r){return new Fe(ce.MAXIMIZE_TOGGLE,{node:t,layoutId:r})}static updateModelAttributes(t){return new Fe(ce.UPDATE_MODEL_ATTRIBUTES,{json:t})}static updateNodeAttributes(t,r){return new Fe(ce.UPDATE_NODE_ATTRIBUTES,{node:t,json:r})}static updateSubLayoutAttributes(t,r){return new Fe(ce.UPDATE_SUBLAYOUT_ATTRIBUTES,{layoutId:t,json:r})}static popoutTab(t,r="window"){return new Fe(ce.POPOUT_TAB,{node:t,type:r})}static popoutTabset(t,r="window"){return new Fe(ce.POPOUT_TABSET,{node:t,type:r})}static closePopout(t){return new Fe(ce.CLOSE_POPOUT,{layoutId:t})}static movePopoutToFront(t){return new Fe(ce.MOVE_POPOUT_TO_FRONT,{layoutId:t})}static moveFloat(t,r){return new Fe(ce.MOVE_FLOAT,{layoutId:t,rect:r})}static popoutFloat(t,r){return new Fe(ce.POPOUT_FLOAT,{layoutId:t,rect:r})}static dockFloatToLayout(t,r,o,n){return new Fe(ce.DOCK_FLOAT_TO_LAYOUT,{layoutId:t,toNode:r,location:o.getName(),index:n})}static createPopout(t,r,o){return this.createSubLayout(t,r,o)}static createSubLayout(t,r,o){return new Fe(ce.CREATE_SUBLAYOUT,{layout:t,rect:r,type:o})}},D(ce,"ADD_TAB","FlexLayout_AddTab"),D(ce,"DELETE_TAB","FlexLayout_DeleteTab"),D(ce,"RENAME_TAB","FlexLayout_RenameTab"),D(ce,"SET_TAB_PINNED","FlexLayout_SetTabPinned"),D(ce,"SET_BORDER_TYPE","FlexLayout_SetBorderType"),D(ce,"SELECT_TAB","FlexLayout_SelectTab"),D(ce,"MOVE_NODE","FlexLayout_MoveNode"),D(ce,"DELETE_TABSET","FlexLayout_DeleteTabset"),D(ce,"SET_ACTIVE_TABSET","FlexLayout_SetActiveTabset"),D(ce,"ADJUST_WEIGHTS","FlexLayout_AdjustWeights"),D(ce,"ADJUST_BORDER_SPLIT","FlexLayout_AdjustBorderSplit"),D(ce,"MAXIMIZE_TOGGLE","FlexLayout_MaximizeToggle"),D(ce,"UPDATE_MODEL_ATTRIBUTES","FlexLayout_UpdateModelAttributes"),D(ce,"UPDATE_NODE_ATTRIBUTES","FlexLayout_UpdateNodeAttributes"),D(ce,"UPDATE_SUBLAYOUT_ATTRIBUTES","FlexLayout_UpdateSubLayoutAttributes"),D(ce,"POPOUT_TAB","FlexLayout_PopoutTab"),D(ce,"POPOUT_TABSET","FlexLayout_PopoutTabset"),D(ce,"CLOSE_POPOUT","FlexLayout_ClosePopout"),D(ce,"MOVE_POPOUT_TO_FRONT","FlexLayout_MoveFloatToFront"),D(ce,"MOVE_FLOAT","FlexLayout_MoveFloat"),D(ce,"DOCK_FLOAT_TO_LAYOUT","FlexLayout_DockFloatToLayout"),D(ce,"POPOUT_FLOAT","FlexLayout_PopoutFloat"),D(ce,"CREATE_SUBLAYOUT","FlexLayout_CreateSubLayout"),D(ce,"GROUP","FlexLayout_Group"),ce),Fe=class{constructor(e,t){D(this,"type");D(this,"data");D(this,"adjusting");this.type=e,this.data=t,this.adjusting=!1}setAdjusting(e){return this.adjusting=e,this}isAdjusting(){return this.adjusting}toJSON(){return{type:this.type,data:this.data}}},$v=class extends Fe{constructor(t){super(re.GROUP,t);D(this,"actions");this.actions=t}},Rt=class{constructor(e,t,r,o,n){D(this,"node");D(this,"rect");D(this,"location");D(this,"index");D(this,"className");this.node=e,this.rect=t,this.location=r,this.index=o,this.className=n}},U=function(e){return e.FLEXLAYOUT__BORDER="flexlayout__border",e.FLEXLAYOUT__BORDER_="flexlayout__border_",e.FLEXLAYOUT__BORDER_TAB_CONTENTS="flexlayout__border_tab_contents",e.FLEXLAYOUT__BORDER_TAB_OVERLAY="flexlayout__border_tab_overlay",e.FLEXLAYOUT__BORDER_TAB_OVERLAY_="flexlayout__border_tab_overlay_",e.FLEXLAYOUT__BORDER_BUTTON="flexlayout__border_button",e.FLEXLAYOUT__BORDER_BUTTON_="flexlayout__border_button_",e.FLEXLAYOUT__BORDER_BUTTON_CONTENT="flexlayout__border_button_content",e.FLEXLAYOUT__BORDER_BUTTON_LEADING="flexlayout__border_button_leading",e.FLEXLAYOUT__BORDER_BUTTON_TRAILING="flexlayout__border_button_trailing",e.FLEXLAYOUT__BORDER_BUTTON__SELECTED="flexlayout__border_button--selected",e.FLEXLAYOUT__BORDER_BUTTON__UNSELECTED="flexlayout__border_button--unselected",e.FLEXLAYOUT__BORDER_TOOLBAR_BUTTON_OVERFLOW="flexlayout__border_toolbar_button_overflow",e.FLEXLAYOUT__BORDER_TOOLBAR_BUTTON_OVERFLOW_="flexlayout__border_toolbar_button_overflow_",e.FLEXLAYOUT__BORDER_INNER="flexlayout__border_inner",e.FLEXLAYOUT__BORDER_INNER_="flexlayout__border_inner_",e.FLEXLAYOUT__BORDER_INNER_TAB_CONTAINER="flexlayout__border_inner_tab_container",e.FLEXLAYOUT__BORDER_INNER_TAB_CONTAINER_="flexlayout__border_inner_tab_container_",e.FLEXLAYOUT__BORDER_INNER_TAB_CONTAINER_LEFT_DOWN="flexlayout__border_inner_tab_container_left_down",e.FLEXLAYOUT__BORDER_TAB_DIVIDER="flexlayout__border_tab_divider",e.FLEXLAYOUT__BORDER_LEADING="flexlayout__border_leading",e.FLEXLAYOUT__BORDER_SIZER="flexlayout__border_sizer",e.FLEXLAYOUT__BORDER_TOOLBAR="flexlayout__border_toolbar",e.FLEXLAYOUT__BORDER_TOOLBAR_="flexlayout__border_toolbar_",e.FLEXLAYOUT__BORDER_TOOLBAR_BUTTON="flexlayout__border_toolbar_button",e.FLEXLAYOUT__BORDER_TOOLBAR_BUTTON_FLOAT="flexlayout__border_toolbar_button-float",e.FLEXLAYOUT__DRAG_RECT="flexlayout__drag_rect",e.FLEXLAYOUT__EDGE_RECT="flexlayout__edge_rect",e.FLEXLAYOUT__EDGE_RECT_TOP="flexlayout__edge_rect_top",e.FLEXLAYOUT__EDGE_RECT_LEFT="flexlayout__edge_rect_left",e.FLEXLAYOUT__EDGE_RECT_BOTTOM="flexlayout__edge_rect_bottom",e.FLEXLAYOUT__EDGE_RECT_RIGHT="flexlayout__edge_rect_right",e.FLEXLAYOUT__ERROR_BOUNDARY_CONTAINER="flexlayout__error_boundary_container",e.FLEXLAYOUT__ERROR_BOUNDARY_CONTENT="flexlayout__error_boundary_content",e.FLEXLAYOUT__FLOAT_WINDOW="flexlayout__float_window",e.FLEXLAYOUT__FLOAT_WINDOW_HEADER="flexlayout__float_window_header",e.FLEXLAYOUT__FLOAT_WINDOW_HEADER_TITLE="flexlayout__float_window_header_title",e.FLEXLAYOUT__FLOAT_WINDOW_CONTENT="flexlayout__float_window_content",e.FLEXLAYOUT__FLOAT_WINDOW_DRAG_HANDLE="flexlayout__float_window_drag_handle",e.FLEXLAYOUT__FLOAT_WINDOW_BUTTON="flexlayout__float_window_button",e.FLEXLAYOUT__FLOATING_WINDOW_CONTENT="flexlayout__floating_window_content",e.FLEXLAYOUT__LAYOUT="flexlayout__layout",e.FLEXLAYOUT__LAYOUT_METRICS="flexlayout__layout_metrics",e.FLEXLAYOUT__LAYOUT_MOVEABLES_HOME="flexlayout__layout_moveables_home",e.FLEXLAYOUT__LAYOUT_OVERLAY="flexlayout__layout_overlay",e.FLEXLAYOUT__LAYOUT_TAB_STAMPS="flexlayout__layout_tab_stamps",e.FLEXLAYOUT__LAYOUT_MAIN="flexlayout__layout_main",e.FLEXLAYOUT__LAYOUT_BORDER_CONTAINER="flexlayout__layout_border_container",e.FLEXLAYOUT__LAYOUT_BORDER_CONTAINER_INNER="flexlayout__layout_border_container_inner",e.FLEXLAYOUT__OUTLINE_RECT="flexlayout__outline_rect",e.FLEXLAYOUT__OUTLINE_RECT_EDGE="flexlayout__outline_rect_edge",e.FLEXLAYOUT__SPLITTER="flexlayout__splitter",e.FLEXLAYOUT__SPLITTER_="flexlayout__splitter_",e.FLEXLAYOUT__SPLITTER_BORDER="flexlayout__splitter_border",e.FLEXLAYOUT__SPLITTER_DRAG="flexlayout__splitter_drag",e.FLEXLAYOUT__SPLITTER_HANDLE="flexlayout__splitter_handle",e.FLEXLAYOUT__SPLITTER_HANDLE_HORZ="flexlayout__splitter_handle_horz",e.FLEXLAYOUT__SPLITTER_HANDLE_VERT="flexlayout__splitter_handle_vert",e.FLEXLAYOUT__ROW="flexlayout__row",e.FLEXLAYOUT__TAB="flexlayout__tab",e.FLEXLAYOUT__TAB_MOVEABLE="flexlayout__tab_moveable",e.FLEXLAYOUT__TAB_OVERLAY="flexlayout__tab_overlay",e.FLEXLAYOUT__TAB_OVERLAY_RAISED="flexlayout__tab_overlay_raised",e.FLEXLAYOUT__TAB_LAYOUT_CONTAINER="flexlayout__tab_layout_container",e.FLEXLAYOUT__TAB_LAYOUT_CONTAINER_USER="flexlayout__tab_layout_container_user",e.FLEXLAYOUT__TABSET="flexlayout__tabset",e.FLEXLAYOUT__TABSET_CONTAINER="flexlayout__tabset_container",e.FLEXLAYOUT__TABSET_MAXIMIZED="flexlayout__tabset-maximized",e.FLEXLAYOUT__TABSET_SELECTED="flexlayout__tabset-selected",e.FLEXLAYOUT__TABSET_TAB_SPACER="flexlayout__tabset_tab_spacer",e.FLEXLAYOUT__TABSET_TAB_DIVIDER="flexlayout__tabset_tab_divider",e.FLEXLAYOUT__TABSET_TAB_DIVIDER_SELECTED_BEFORE="flexlayout__tabset_tab_divider_selected_before",e.FLEXLAYOUT__TABSET_TAB_DIVIDER_SELECTED_AFTER="flexlayout__tabset_tab_divider_selected_after",e.FLEXLAYOUT__TABSET_TAB_DIVIDER_INNER="flexlayout__tabset_tab_divider_inner",e.FLEXLAYOUT__TABSET_CONTENT="flexlayout__tabset_content",e.FLEXLAYOUT__TABSET_TABBAR_INNER="flexlayout__tabset_tabbar_inner",e.FLEXLAYOUT__TABSET_TABBAR_INNER_="flexlayout__tabset_tabbar_inner_",e.FLEXLAYOUT__TABSET_LEADING="flexlayout__tabset_leading",e.FLEXLAYOUT__TABSET_TABBAR_INNER_TAB_CONTAINER="flexlayout__tabset_tabbar_inner_tab_container",e.FLEXLAYOUT__TABSET_TABBAR_INNER_TAB_CONTAINER_="flexlayout__tabset_tabbar_inner_tab_container_",e.FLEXLAYOUT__TABSET_TABBAR_OUTER="flexlayout__tabset_tabbar_outer",e.FLEXLAYOUT__TABSET_TABBAR_OUTER_="flexlayout__tabset_tabbar_outer_",e.FLEXLAYOUT__TAB_BORDER="flexlayout__tab_border",e.FLEXLAYOUT__TAB_BORDER_="flexlayout__tab_border_",e.FLEXLAYOUT__TAB_BORDER_OVERLAY="flexlayout__tab_border_overlay",e.FLEXLAYOUT__TAB_BUTTON="flexlayout__tab_button",e.FLEXLAYOUT__TAB_BUTTON_STRETCH="flexlayout__tab_button_stretch",e.FLEXLAYOUT__TAB_BUTTON_CONTENT="flexlayout__tab_button_content",e.FLEXLAYOUT__TAB_BUTTON_LEADING="flexlayout__tab_button_leading",e.FLEXLAYOUT__TAB_BUTTON_OVERFLOW="flexlayout__tab_button_overflow",e.FLEXLAYOUT__TAB_BUTTON_PIN="flexlayout__tab_button_pin",e.FLEXLAYOUT__TAB_BUTTON_OVERFLOW_COUNT="flexlayout__tab_button_overflow_count",e.FLEXLAYOUT__TAB_BUTTON_TEXTBOX="flexlayout__tab_button_textbox",e.FLEXLAYOUT__TAB_BUTTON_TRAILING="flexlayout__tab_button_trailing",e.FLEXLAYOUT__TAB_BUTTON_STAMP="flexlayout__tab_button_stamp",e.FLEXLAYOUT__TAB_TOOLBAR="flexlayout__tab_toolbar",e.FLEXLAYOUT__TAB_TOOLBAR_BUTTON="flexlayout__tab_toolbar_button",e.FLEXLAYOUT__TAB_TOOLBAR_ICON="flexlayout__tab_toolbar_icon",e.FLEXLAYOUT__TAB_TOOLBAR_BUTTON_="flexlayout__tab_toolbar_button-",e.FLEXLAYOUT__TAB_TOOLBAR_BUTTON_FLOAT="flexlayout__tab_toolbar_button-float",e.FLEXLAYOUT__TAB_TOOLBAR_STICKY_BUTTONS_CONTAINER="flexlayout__tab_toolbar_sticky_buttons_container",e.FLEXLAYOUT__TAB_TOOLBAR_BUTTON_CLOSE="flexlayout__tab_toolbar_button-close",e.FLEXLAYOUT__POPUP_MENU_CONTAINER="flexlayout__popup_menu_container",e.FLEXLAYOUT__POPUP_MENU_ITEM="flexlayout__popup_menu_item",e.FLEXLAYOUT__POPUP_MENU_ITEM__SELECTED="flexlayout__popup_menu_item--selected",e.FLEXLAYOUT__POPUP_MENU_ITEM__DISABLED="flexlayout__popup_menu_item--disabled",e.FLEXLAYOUT__POPUP_MENU_DIVIDER="flexlayout__popup_menu_divider",e.FLEXLAYOUT__POPUP_MENU="flexlayout__popup_menu",e.FLEXLAYOUT__MINI_SCROLLBAR="flexlayout__mini_scrollbar",e.FLEXLAYOUT__MINI_SCROLLBAR_CONTAINER="flexlayout__mini_scrollbar_container",e}({}),Js=class{constructor(e){D(this,"model");D(this,"attributes");D(this,"parent");D(this,"children");D(this,"rect");D(this,"path");D(this,"listeners");this.model=e,this.attributes={},this.children=[],this.rect=ge.empty(),this.listeners=new Map,this.path=""}getId(){let e=this.attributes.id;return e!==void 0||(e=this.model.nextUniqueId(),this.setId(e)),e}getModel(){return this.model}getType(){return this.attributes.type}getParent(){return this.parent}getChildren(){return this.children}getRect(){return this.rect}getPath(){return this.path}isCloseable(){for(let e=0;er.some(a=>a.toLowerCase()===i);return e.key.toLowerCase()===o.toLowerCase()&&e.ctrlKey===n("ctrl")&&e.shiftKey===n("shift")&&e.altKey===n("alt")&&e.metaKey===n("meta")}function xa(e){return e.ctrlKey||e.shiftKey||e.altKey||e.metaKey}function Q0(e){return{...Z0,...e}}function No(e){return e?.replace(/\bctrl\b/i,"Control")}function Gv(e){e&&(e.querySelector('a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])')??e).focus()}function ya(e){let t=!1;return e.nativeEvent instanceof MouseEvent&&(e.nativeEvent.button!==0||e.ctrlKey||e.altKey||e.metaKey||e.shiftKey)&&(t=!0),t}function Sl(e,t){const r=[..._h("iframe",t),..._h("webview",t)];for(const o of r)o.style.pointerEvents=e?"auto":"none"}function _h(e,t){return[...t.getElementsByTagName(e)]}var Ll=!1;function cs(e,t,r,o,n){Ll=!0,t.preventDefault();const i=u=>{u.preventDefault(),r(u.clientX,u.clientY)},a=()=>{e.removeEventListener("pointermove",i),e.removeEventListener("pointerup",c),e.removeEventListener("pointercancel",l)},l=u=>{u.preventDefault(),a(),Ll=!1,n()},c=()=>{a(),Ll=!1,o()};e.addEventListener("pointermove",i),e.addEventListener("pointerup",c),e.addEventListener("pointercancel",l)}function Kv(e){let t;return e.getController().getModel().visitNodes(r=>{r instanceof Le&&r.getSubLayoutId()===e.getLayoutId()&&(t=r.getLayout())}),t}function qv(e,t){const r=t.getType();if(r==="window")return e.isAllowedInWindow();if(r==="float")return!0;if(r==="tab"){const o=Kv(t);return!(o&&o.getType()==="window"&&!o.isMainLayout()&&!e.isAllowedInWindow()||Jv(e))}return!1}function Jv(e){return e instanceof Le?e.getSubLayoutId()!==void 0:e.getChildren().some(t=>Jv(t))}function wh(e,t){const r=e.getAttribute("style");return r===t.getAttribute("style")?!1:(r?t.setAttribute("style",r):t.removeAttribute("style"),!0)}function e1(){const e=navigator.userAgent;return e.includes("Safari")&&!e.includes("Chrome")&&!e.includes("Chromium")}function t1(e=window){const t=e.document;return{scrollTop:e.pageYOffset||t.documentElement.scrollTop||t.body.scrollTop||0,scrollLeft:e.pageXOffset||t.documentElement.scrollLeft||t.body.scrollLeft||0,fullHeight:Math.max(t.body.scrollHeight,t.documentElement.scrollHeight,t.body.offsetHeight,t.documentElement.offsetHeight,t.body.clientHeight,t.documentElement.clientHeight),fullWidth:Math.max(t.body.scrollWidth,t.documentElement.scrollWidth,t.body.offsetWidth,t.documentElement.offsetWidth,t.body.clientWidth,t.documentElement.clientWidth),viewportHeight:e.innerHeight||t.documentElement.clientHeight,viewportWidth:e.innerWidth||t.documentElement.clientWidth}}var je,Ue=(je=class extends Js{constructor(r,o){super(r);D(this,"layout");D(this,"minHeight");D(this,"minWidth");D(this,"maxHeight");D(this,"maxWidth");this.minHeight=1,this.minWidth=1,this.maxHeight=Xr,this.maxWidth=Xr,je.attributeDefinitions.fromJson(o,this.attributes),r.addNode(this)}static fromJson(r,o,n){const i=new je(o,r);if(r.children!=null){for(const a of r.children)if(a.type===Oe.TYPE){const l=Oe.fromJson(a,o,n);i.addChild(l)}else if(a.type===je.TYPE){const l=je.fromJson(a,o,n);i.addChild(l)}}return i}getWeight(){return this.attributes.weight}toJson(){const r={};je.attributeDefinitions.toJson(r,this.attributes),r.children=[];for(const o of this.children)r.children.push(o.toJson());return r}getLayout(){return this.layout?this.layout:super.getLayout()}setLayout(r){this.layout=r}setWeight(r){this.attributes.weight=r}getSplitterBounds(r){const o=this.getOrientation()===_e.HORZ,n=this.getChildren(),i=this.model.getSplitterSize(),a=n[0].getRect(),l=n[n.length-1].getRect();let c=o?[a.x,l.getRight()]:[a.y,l.getBottom()];const u=o?[a.x,l.getRight()]:[a.y,l.getBottom()];for(let d=0;d0&&(c[0]+=i,u[0]+=i)}for(let d=n.length-1;d>=r;d--){const f=n[d];c[1]-=(o?f.getMinWidth():f.getMinHeight())+i,u[1]-=(o?Math.max(f.getMinWidth(),f.getMaxWidth()):Math.max(f.getMinHeight(),f.getMaxHeight()))+i}return c=[Math.max(u[1],c[0]),Math.min(u[0],c[1])],c[0]>c[1]&&(c=[c[0],c[0]]),c}getSplitterInitials(r){const o=this.getOrientation()===_e.HORZ,n=this.getChildren(),i=this.model.getSplitterSize(),a=[];let l=0;for(let d=0;df?(g=u[r]+p-f,u[r]=f):u[r]+=p;for(let x=r-1;x>=0;x--){const w=c[x],k=l?w.getMinWidth():w.getMinHeight();if(u[x]-p>k){u[x]-=p;break}else p-=u[x]-k,u[x]=k}for(let x=r+1;xf?(g=u[r-1]+p-f,u[r-1]=f):u[r-1]+=p;for(let x=r;xk){u[x]-=p;break}else p-=u[x]-k,u[x]=k}for(let x=r-1;x>=0;x--){const w=c[x],k=l?w.getMaxWidth():w.getMaxHeight();if(u[x]+gMath.max(.1,d)*100/i)}getMinWidth(){return this.minWidth}getMinHeight(){return this.minHeight}getMaxWidth(){return this.maxWidth}getMaxHeight(){return this.maxHeight}calcMinMaxSize(){this.minHeight=1,this.minWidth=1,this.maxHeight=Xr,this.maxWidth=Xr;let r=!0;for(const o of this.children){const n=o;n.calcMinMaxSize();const i=Math.max(n.getMinHeight(),n.getMaxHeight()),a=Math.max(n.getMinWidth(),n.getMaxWidth());this.getOrientation()===_e.VERT?(this.minHeight+=n.getMinHeight(),this.maxHeight+=i,r||(this.minHeight+=this.model.getSplitterSize(),this.maxHeight+=this.model.getSplitterSize()),this.minWidth=Math.max(this.minWidth,n.getMinWidth()),this.maxWidth=Math.min(this.maxWidth,a)):(this.minWidth+=n.getMinWidth(),this.maxWidth+=a,r||(this.minWidth+=this.model.getSplitterSize(),this.maxWidth+=this.model.getSplitterSize()),this.minHeight=Math.max(this.minHeight,n.getMinHeight()),this.maxHeight=Math.min(this.maxHeight,i)),r=!1}this.maxWidth=Math.max(this.maxWidth,this.minWidth),this.maxHeight=Math.max(this.maxHeight,this.minHeight)}tidy(){let r=0;for(;ru/2-f&&athis.rect.getRight()-d&&a>u/2-f&&ac/2-f&&lthis.rect.getBottom()-d&&l>c/2-f&&ld+f.getWeight(),0);c===0&&(c=100),l.setWeight(c/3);const u=!this.model.isRootOrientationVertical();if(i===ee.CENTER)n===-1?this.addChild(l,this.children.length):this.addChild(l,n);else if(u&&i===ee.LEFT||!u&&i===ee.TOP)this.addChild(l,0);else if(u&&i===ee.RIGHT||!u&&i===ee.BOTTOM)this.addChild(l);else if(u&&i===ee.TOP||!u&&i===ee.LEFT){const d=new je(this.model,{}),f=new je(this.model,{});f.setWeight(75),l.setWeight(25);for(const p of this.children)f.addChild(p);this.removeAll(),d.addChild(l),d.addChild(f),this.addChild(d)}else if(u&&i===ee.BOTTOM||!u&&i===ee.RIGHT){const d=new je(this.model,{}),f=new je(this.model,{});f.setWeight(75),l.setWeight(25);for(const p of this.children)f.addChild(p);this.removeAll(),d.addChild(f),d.addChild(l),this.addChild(d)}l instanceof Oe&&this.model.setActiveTabset(l,this.getLayoutId()),this.model.tidy()}isEnableDrop(){return!0}getAttributeDefinitions(){return je.attributeDefinitions}updateAttrs(r){je.attributeDefinitions.update(r,this.attributes)}static getAttributeDefinitions(){return lt.ensureAttributePairing(),je.attributeDefinitions}static createAttributeDefinitions(){const r=new gi;return r.add("type",je.TYPE,!0).setType(te.STRING).setFixed(),r.add("id",void 0).setType(te.STRING).setDescription("the unique id of the row, if left undefined a uuid will be assigned"),r.add("weight",100).setType(te.NUMBER).setDescription("relative weight for sizing of this row in parent row"),r}},D(je,"TYPE","row"),D(je,"attributeDefinitions",je.createAttributeDefinitions()),je),vt,Oe=(vt=class extends Js{constructor(r,o){super(r);D(this,"tabStripRect",ge.empty());D(this,"contentRect",ge.empty());D(this,"calculatedMinHeight");D(this,"calculatedMinWidth");D(this,"calculatedMaxHeight");D(this,"calculatedMaxWidth");this.calculatedMinHeight=0,this.calculatedMinWidth=0,this.calculatedMaxHeight=0,this.calculatedMaxWidth=0,vt.attributeDefinitions.fromJson(o,this.attributes),r.addNode(this)}static fromJson(r,o,n){const i=new vt(o,r);if(r.children!=null)for(const a of r.children){const l=Le.fromJson(a,o);i.addChild(l)}return i.children.length===0?i.setSelected(-1):i.getSelected()>=i.children.length&&i.setSelected(i.children.length-1),r.maximized&&r.maximized===!0&&n.setMaximizedTabSet(i),r.active&&r.active===!0&&n.setActiveTabSet(i),i}getName(){return this.getAttr("name")}isEnableActiveIcon(){return this.getAttr("enableActiveIcon")}getSelected(){const r=this.attributes.selected;return r!==void 0?r:-1}getSelectedNode(){const r=this.getSelected();if(r!==-1)return this.children[r]}getPinnedRunLength(){let r=0;for(const o of this.children)if(o.isPinned())r++;else break;return r}getWeight(){return this.getAttr("weight")}getAttrMinWidth(){return this.getAttr("minWidth")}getAttrMinHeight(){return this.getAttr("minHeight")}getMinWidth(){return this.calculatedMinWidth}getMinHeight(){return this.calculatedMinHeight}getAttrMaxWidth(){return this.getAttr("maxWidth")}getAttrMaxHeight(){return this.getAttr("maxHeight")}getMaxWidth(){return this.calculatedMaxWidth}getMaxHeight(){return this.calculatedMaxHeight}isCloseable(){let r=this.isEnableClose();return r&&(r=super.isCloseable()),r}getConfig(){return this.attributes.config}isMaximized(){return this.model.getMaximizedTabset(this.getLayoutId())===this}isActive(){return this.model.getActiveTabset(this.getLayoutId())===this}isEnableDeleteWhenEmpty(){return this.getAttr("enableDeleteWhenEmpty")}isEnableDrop(){return this.getAttr("enableDrop")}isEnableTabStrip(){return this.getAttr("enableTabStrip")}isEnableTabWrap(){return this.getAttr("enableTabWrap")}isEnableDrag(){return this.getAttr("enableDrag")}isEnableDivide(){return this.getAttr("enableDivide")}isEnableMaximize(){return this.getAttr("enableMaximize")}isEnableClose(){return this.getAttr("enableClose")}isEnableCloseButton(){return this.getAttr("enableCloseButton")}isEnableSingleTabStretch(){return this.getAttr("enableSingleTabStretch")}isAutoSelectTab(){return this.getAttr("autoSelectTab")}isEnableTabScrollbar(){return this.getAttr("enableTabScrollbar")}getClassNameTabStrip(){return this.getAttr("classNameTabStrip")}getTabLocation(){return this.getAttr("tabLocation")}toJson(){const r={};return vt.attributeDefinitions.toJson(r,this.attributes),r.children=this.children.map(o=>o.toJson()),this.isActive()&&(r.active=!0),this.isMaximized()&&(r.maximized=!0),r}calcMinMaxSize(){this.calculatedMinHeight=this.getAttrMinHeight(),this.calculatedMinWidth=this.getAttrMinWidth(),this.calculatedMaxHeight=this.getAttrMaxHeight(),this.calculatedMaxWidth=this.getAttrMaxWidth();for(const r of this.children){const o=r;this.calculatedMinWidth=Math.max(this.calculatedMinWidth,o.getMinWidth()),this.calculatedMinHeight=Math.max(this.calculatedMinHeight,o.getMinHeight()),this.calculatedMaxWidth=Math.min(this.calculatedMaxWidth,o.getMaxWidth()),this.calculatedMaxHeight=Math.min(this.calculatedMaxHeight,o.getMaxHeight())}this.calculatedMinHeight+=this.tabStripRect.height,this.calculatedMaxHeight+=this.tabStripRect.height,this.calculatedMaxWidth=Math.max(this.calculatedMaxWidth,this.calculatedMinWidth),this.calculatedMaxHeight=Math.max(this.calculatedMaxHeight,this.calculatedMinHeight)}canMaximize(){return this.isEnableMaximize()?this.getModel().getMaximizedTabset(this.getLayoutId())===this?!0:!(this.getParent()===this.getModel().getRootRow(this.getLayoutId())&&this.getModel().getRootRow(this.getLayoutId()).getChildren().length===1):!1}setContentRect(r){this.contentRect=r}getContentRect(){return this.contentRect}setTabStripRect(r){this.tabStripRect=r}getTabStripRect(){return this.tabStripRect}setWeight(r){this.attributes.weight=r}setSelected(r){this.attributes.selected=r}canDrop(r,o,n,i=!1){let a;const l=this.getLayout();if(r===this){const c=ee.CENTER,u=this.tabStripRect;a=new Rt(this,u,c,-1,U.FLEXLAYOUT__OUTLINE_RECT)}else{if(this.getLayoutId()!==lt.MAIN_LAYOUT_ID&&!qv(r,l))return;if(this.contentRect.contains(o,n)){let c=ee.CENTER;if(this.model.getMaximizedTabset(this.getLayoutId())===void 0){const d=!i&&this.isEnableDrop(),f=this.isEnableDivide();if(!d&&!f)return;d&&f?c=ee.getLocation(this.contentRect,o,n):d?c=ee.CENTER:c=ee.getLocation(this.contentRect,o,n,!0)}const u=c.getDockRect(this.rect);a=new Rt(this,u,c,-1,U.FLEXLAYOUT__OUTLINE_RECT)}else if(this.tabStripRect!=null&&this.tabStripRect.contains(o,n)){let c,u,d;if(this.children.length===0)c=this.tabStripRect.clone(),u=c.y+3,d=c.height-4,c.width=2;else{let f=this.children[0];c=f.getTabRect(),u=c.y,d=c.height;let p=this.tabStripRect.x;for(let g=0;g0){const c=this.getPinnedRunLength(),u=r instanceof Le&&r.isPinned()?Math.min(a.index,c):Math.max(a.index,c);if(u!==a.index){let d;if(u0&&n--,a===ee.CENTER){let u=n;u===-1&&(u=this.children.length);const d=this.getPinnedRunLength();if(r instanceof Le?u=r.isPinned()?Math.min(u,d):Math.max(u,d):u=Math.max(u,d),r instanceof Le)this.addChild(r,u),i||i!==!1&&this.isAutoSelectTab()?this.setSelected(u):Cl(this,u);else if(r instanceof Ue){const f=u;r.forEachNode((p,g)=>{p instanceof Le&&(this.addChild(p,u),u++)},0),Cl(this,f,u-f)}else{const f=u;for(let p=0;p0&&this.setSelected(0)}this.model.setActiveTabset(this,this.parent.getLayoutId())}else{let u=r;if(r instanceof Le){const p=this.model.getOnCreateTabSet();u=new vt(this.model,p?p(r):{}),u.addChild(r)}else if(r instanceof Ue){const p=this.getParent();if(r.getOrientation()===p.getOrientation()&&(o.getOrientation()===p.getOrientation()||o===ee.CENTER)){const g=new Ue(this.model,{});g.addChild(r),u=g}}else u=r;const d=this.parent,f=d.getChildren().indexOf(this);if(d.getOrientation()===a.orientation)u.setWeight(this.getWeight()/2),this.setWeight(this.getWeight()/2),d.addChild(u,f+a.indexPlus);else{const p=new Ue(this.model,{});if(p.setWeight(this.getWeight()),p.addChild(this),this.setWeight(50),r instanceof Ue&&r.getChildren().length>0&&r.getOrientation()!==d.getOrientation()){const g=r.getChildren(),x=g.reduce((k,b)=>k+b.getWeight(),0);let w=a.indexPlus;for(const k of g)k.setWeight(x===0?50/g.length:50*k.getWeight()/x),p.addChild(k,w++)}else u.setWeight(50),p.addChild(u,a.indexPlus);d.removeChild(this),d.addChild(p,f)}u instanceof vt&&this.model.setActiveTabset(u,this.getLayoutId())}this.model.tidy()}updateAttrs(r){vt.attributeDefinitions.update(r,this.attributes)}getAttributeDefinitions(){return vt.attributeDefinitions}static getAttributeDefinitions(){return lt.ensureAttributePairing(),vt.attributeDefinitions}static createAttributeDefinitions(){const r=new gi;return r.add("type",vt.TYPE,!0).setType(te.STRING).setFixed(),r.add("id",void 0).setType(te.STRING).setDescription("the unique id of the tab set, if left undefined a uuid will be assigned"),r.add("weight",100).setType(te.NUMBER).setDescription("relative weight for sizing of this tabset in parent row"),r.add("selected",0).setType(te.NUMBER).setDescription("index of selected/visible tab in tabset; -1 means no tab selected"),r.add("name",void 0).setType(te.STRING).setDescription("an accessible label for the tab strip (used as the tablist's aria-label; not displayed visually)"),r.add("config",void 0).setType("any").setDescription("a place to hold json config used in your own code"),r.addInherited("enableDeleteWhenEmpty","tabSetEnableDeleteWhenEmpty").setDescription("whether to delete this tabset when it has no tabs"),r.addInherited("enableDrop","tabSetEnableDrop").setDescription("whether tabs can be dropped into this tabset"),r.addInherited("enableDrag","tabSetEnableDrag").setDescription("whether the user can drag tabs out of this tabset"),r.addInherited("enableDivide","tabSetEnableDivide").setDescription("whether dropping on an edge of this tabset splits it to create a new tabset"),r.addInherited("enableMaximize","tabSetEnableMaximize").setDescription("whether the tabset can be maximized to fill the layout via the maximize button"),r.addInherited("enableClose","tabSetEnableClose").setDescription("whether this tabset can be closed"),r.addInherited("enableCloseButton","tabSetEnableCloseButton").setDescription("if the tabset can be closed then show a close button"),r.addInherited("enableSingleTabStretch","tabSetEnableSingleTabStretch").setDescription("if the tabset has only a single tab then stretch the single tab to fill area and display in a header style"),r.addInherited("classNameTabStrip","tabSetClassNameTabStrip").setDescription("a class name to apply to the tab strip"),r.addInherited("enableTabStrip","tabSetEnableTabStrip").setDescription("when enabled the tabset shows a tab strip and can host multiple tabs; when disabled the strip is hidden"),r.addInherited("minWidth","tabSetMinWidth").setDescription("minimum width (in px) for this tabset"),r.addInherited("minHeight","tabSetMinHeight").setDescription("minimum height (in px) for this tabset"),r.addInherited("maxWidth","tabSetMaxWidth").setDescription("maximum width (in px) for this tabset"),r.addInherited("maxHeight","tabSetMaxHeight").setDescription("maximum height (in px) for this tabset"),r.addInherited("enableTabWrap","tabSetEnableTabWrap").setDescription("wrap tabs onto multiple lines"),r.addInherited("tabLocation","tabSetTabLocation").setDescription("the location of the tabs either top or bottom"),r.addInherited("autoSelectTab","tabSetAutoSelectTab").setDescription("whether to select new/moved tabs in tabset"),r.addInherited("enableActiveIcon","tabSetEnableActiveIcon").setDescription("whether the active icon (*) should be displayed when the tabset is active"),r.addInherited("enableTabScrollbar","tabSetEnableTabScrollbar").setDescription("whether to show a mini scrollbar for the tabs"),r}},D(vt,"TYPE","tabset"),D(vt,"attributeDefinitions",vt.createAttributeDefinitions()),vt);function Cl(e,t,r=1){const o=e.getSelected();r>0&&o!==-1&&t<=o&&e.setSelected(o+r)}function us(e,t){if(e!==void 0&&(e instanceof Oe||e instanceof Ke)){const r=e.getSelected();r!==-1&&(t===r&&e.getChildren().length>0?t>=e.getChildren().length&&e.setSelected(e.getChildren().length-1):tr||e.setSelected(-1))}}function Tn(){return"10000000-1000-4000-8000-100000000000".replace(/[018]/g,e=>(e^crypto.getRandomValues(new Uint8Array(1))[0]&15>>e/4).toString(16))}var kt,Ke=(kt=class extends Js{constructor(r,o,n){super(n);D(this,"contentRect",ge.empty());D(this,"tabHeaderRect",ge.empty());D(this,"location");this.location=r,this.attributes.id=`border_${r.getName()}`,kt.attributeDefinitions.fromJson(o,this.attributes),n.addNode(this)}static fromJson(r,o){const n=ee.getByName(r.location),i=new kt(n,r,o);return r.children&&(i.children=r.children.map(a=>{const l=Le.fromJson(a,o);return l.setParent(i),l})),i.getSelected()>=i.children.length&&i.setSelected(i.children.length-1),i}getLocation(){return this.location}getClassName(){return this.getAttr("className")}isHorizontal(){return this.location.orientation===_e.HORZ}getSize(){const r=this.getAttr("size"),o=this.getSelected();if(o===-1)return r;{const n=this.children[o],i=this.isHorizontal()?n.getAttr("borderWidth"):n.getAttr("borderHeight");return i===-1?r:i}}getMinSize(){const r=this.getSelectedNode();let o=this.getAttr("minSize");if(r){const n=this.isHorizontal()?r.getMinWidth():r.getMinHeight();o=Math.max(o,n)}return o}getMaxSize(){const r=this.getSelectedNode();let o=this.getAttr("maxSize");if(r){const n=this.isHorizontal()?r.getMaxWidth():r.getMaxHeight();o=Math.min(o,n)}return o}getSelected(){return this.attributes.selected}isAutoHide(){return this.getAttr("enableAutoHide")}getBorderType(){return this.getAttr("borderType")}isOverlay(){return this.getAttr("borderType")==="overlay"}setBorderType(r){this.attributes.borderType=r}getSelectedNode(){if(this.getSelected()!==-1)return this.children[this.getSelected()]}getOrientation(){return this.location.getOrientation()}getConfig(){return this.attributes.config}isMaximized(){return!1}isShowing(){return this.attributes.show}toJson(){const r={location:"bottom"};return kt.attributeDefinitions.toJson(r,this.attributes),r.location=this.location.getName(),r.children=this.children.map(o=>o.toJson()),r}isAutoSelectTabWhenOpen(){return this.getAttr("autoSelectTabWhenOpen")}isAutoSelectTabWhenClosed(){return this.getAttr("autoSelectTabWhenClosed")}isAutoSelectTab(r){return r==null&&(r=this.getSelected()!==-1),r?this.isAutoSelectTabWhenOpen():this.isAutoSelectTabWhenClosed()}isEnableTabScrollbar(){return this.getAttr("enableTabScrollbar")}setSelected(r){this.attributes.selected=r}setTabHeaderRect(r){this.tabHeaderRect=r}getRect(){return this.tabHeaderRect}getContentRect(){return this.contentRect}setContentRect(r){this.contentRect=r}isEnableDrop(){return this.getAttr("enableDrop")}setSize(r){const o=this.getSelected();if(o===-1)this.attributes.size=r;else{const n=this.children[o];(this.isHorizontal()?n.getAttr("borderWidth"):n.getAttr("borderHeight"))===-1?this.attributes.size=r:this.isHorizontal()?n.setBorderWidth(r):n.setBorderHeight(r)}}updateAttrs(r){kt.attributeDefinitions.update(r,this.attributes)}remove(r){const o=this.removeChild(r);this.getSelected()!==-1&&us(this,o)}canDrop(r,o,n,i=!1){if(!(r instanceof Le))return;let a;const l=ee.CENTER;if(this.tabHeaderRect.contains(o,n)){if(this.location.orientation===_e.VERT)if(this.children.length>0){let c=this.children[0],u=c.getTabRect();const d=u.y,f=u.height;let p=this.tabHeaderRect.x;for(let g=0;g=p&&o0){let c=this.children[0],u=c.getTabRect();const d=u.x,f=u.width;let p=this.tabHeaderRect.y;for(let g=0;g=p&&n0&&n--;let c=n;c===-1&&(c=this.children.length),this.addChild(r,c),i||i!==!1&&this.isAutoSelectTab()?this.setSelected(c):Cl(this,c),this.model.tidy()}getSplitterBounds(r=!1){const o=[0,0],n=this.model.getRootRow(lt.MAIN_LAYOUT_ID),i=n.getRect();if(i.width===0&&i.height===0)return o;const a=r?this.getMinSize():0,l=r?this.getMaxSize():99999,c=this.model.getSplitterSize();if(this.location===ee.TOP){o[0]=this.tabHeaderRect.getBottom()+a;const u=this.tabHeaderRect.getBottom()+l;o[1]=Math.max(o[0],i.getBottom()-n.getMinHeight()-c),o[1]=Math.min(o[1],u)}else if(this.location===ee.LEFT){o[0]=this.tabHeaderRect.getRight()+a;const u=this.tabHeaderRect.getRight()+l;o[1]=Math.max(o[0],i.getRight()-n.getMinWidth()-c),o[1]=Math.min(o[1],u)}else if(this.location===ee.BOTTOM){o[1]=this.tabHeaderRect.y-a-c;const u=this.tabHeaderRect.y-l-c;o[0]=Math.min(o[1],i.y+n.getMinHeight()),o[0]=Math.max(o[0],u)}else if(this.location===ee.RIGHT){o[1]=this.tabHeaderRect.x-a-c;const u=this.tabHeaderRect.x-l-c;o[0]=Math.min(o[1],i.x+n.getMinWidth()),o[0]=Math.max(o[0],u)}return o}calculateSplit(r,o){const n=this.getSplitterBounds();return this.location===ee.BOTTOM||this.location===ee.RIGHT?Math.max(0,n[1]-o):Math.max(0,o-n[0])}getAttributeDefinitions(){return kt.attributeDefinitions}static getAttributeDefinitions(){return lt.ensureAttributePairing(),kt.attributeDefinitions}static createAttributeDefinitions(){const r=new gi;return r.add("type",kt.TYPE,!0).setType(te.STRING).setFixed(),r.add("selected",-1).setType(te.NUMBER).setDescription("index of selected/visible tab in border; -1 means no tab selected"),r.add("borderType","split").setType(te.STRING).setValues(["split","overlay"]).setDescription(`the border display type: 'split' splits the main layout to make room when a tab is selected; 'overlay' shows the selected tab's panel as an overlay on top of the main layout area, and the tab is deselected by a pointer-down in the main layout area (Visual Studio style auto hide). Set via Actions.setBorderType. Not related to enableAutoHide (which hides the border strip when it has @@ -96,6 +96,6 @@ Error generating stack: `+i.message+` via the ui, and cannot be dragged out of their tabset (they can be reordered within the pinned group). Set via Actions.setTabPinned. Only applies to tabs in tabsets (not borders); pinned tabs should be listed first in the json`),r.addInherited("enableClose","tabEnableClose").setDescription("whether the tab can be closed by the user via its close button"),r.addInherited("closeType","tabCloseType").setDescription("when the tab's close button is active: Visible (default) active if selected or hovered (note: mobile doesnt support hovered), Always: always active, Selected only active on selected tab (clicking on the x button on a non-selected tab will just select it)"),r.addInherited("enableDrag","tabEnableDrag").setDescription("whether the user can drag the tab to a new location"),r.addInherited("enableRename","tabEnableRename").setDescription("whether the user can rename the tab by double clicking"),r.addInherited("enablePin","tabEnablePin").setDescription("whether the user can pin/unpin the tab via the context menu"),r.addInherited("className","tabClassName").setDescription("class applied to tab button"),r.addInherited("contentClassName","tabContentClassName").setDescription("class applied to tab content"),r.addInherited("icon","tabIcon").setDescription("the tab icon"),r.addInherited("enableRenderOnDemand","tabEnableRenderOnDemand").setDescription("whether to avoid rendering component until tab is visible"),r.addInherited("enablePopout","tabEnablePopout").setAlias("enableFloat").setDescription("enable window popout (in popout capable browser), to show an icon in the tabset header also set the enablePopoutIcon attribute"),r.addInherited("enablePopoutIcon","tabEnablePopoutIcon").setDescription("whether to show the popout icon in the tabset header if this tab enables popouts"),r.addInherited("enablePopoutFloatIcon","tabEnablePopoutFloatIcon").setDescription("whether to show the popout float icon in the tabset header if this tab enables floating popouts"),r.addInherited("enablePopoutOverlay","tabEnablePopoutOverlay").setDescription(`if this tab will not work correctly in a popout window when the main window is backgrounded (inactive) - then enabling this option will gray out this tab`),r.addInherited("borderWidth","tabBorderWidth").setDescription("the width of this tab when shown in a border; -1 uses the border's default size"),r.addInherited("borderHeight","tabBorderHeight").setDescription("the height of this tab when shown in a border; -1 uses the border's default size"),r.addInherited("minWidth","tabMinWidth").setDescription("the minimum width (in px) of this tab"),r.addInherited("minHeight","tabMinHeight").setDescription("the minimum height (in px) of this tab"),r.addInherited("maxWidth","tabMaxWidth").setDescription("the maximum width (in px) of this tab"),r.addInherited("maxHeight","tabMaxHeight").setDescription("the maximum height (in px) of this tab"),r.addInherited("enableScrollbars","tabEnableScrollbars").setDescription("whether the tab will be hosted in a scrollable container"),r}},D(Et,"TYPE","tab"),D(Et,"attributeDefinitions",Et.createAttributeDefinitions()),Et),lo={width:"1em",height:"1em",display:"flex",alignItems:"center"},Nl=()=>s.jsxs("svg",{"aria-hidden":"true",focusable:"false",xmlns:"http://www.w3.org/2000/svg",style:lo,viewBox:"0 0 24 24",children:[s.jsx("path",{fill:"none",d:"M0 0h24v24H0z"}),s.jsx("path",{stroke:"var(--color-icon)",fill:"var(--color-icon)",d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"})]});Nl.displayName="CloseIcon";var Qv=()=>s.jsxs("svg",{"aria-hidden":"true",focusable:"false",xmlns:"http://www.w3.org/2000/svg",style:lo,viewBox:"0 0 24 24",fill:"var(--color-icon)",children:[s.jsx("path",{fill:"none",d:"M0 0h24v24H0z"}),s.jsx("path",{transform:"rotate(45 12 12)",d:"M16 9V4h1a1 1 0 000-2H7a1 1 0 000 2h1v5c0 1.66-1.34 3-3 3v2h5.97v7l1 1 1-1v-7H19v-2c-1.66 0-3-1.34-3-3z"})]});Qv.displayName="PinIcon";var em=()=>s.jsxs("svg",{"aria-hidden":"true",focusable:"false",xmlns:"http://www.w3.org/2000/svg",style:lo,viewBox:"0 0 24 24",fill:"var(--color-icon)",children:[s.jsx("path",{d:"M0 0h24v24H0z",fill:"none"}),s.jsx("path",{stroke:"var(--color-icon)",d:"M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z"})]});em.displayName="MaximizeIcon";var tm=()=>s.jsxs("svg",{"aria-hidden":"true",focusable:"false",xmlns:"http://www.w3.org/2000/svg",style:lo,viewBox:"0 0 24 24",fill:"var(--color-icon)",children:[s.jsx("path",{d:"M0 0h24v24H0z",fill:"none"}),s.jsx("path",{stroke:"var(--color-icon)",d:"M7 10l5 5 5-5z"})]});tm.displayName="OverflowIcon";var rm=()=>s.jsx("svg",{"aria-hidden":"true",focusable:"false",xmlns:"http://www.w3.org/2000/svg",style:{display:"block",width:10,height:10},preserveAspectRatio:"none",viewBox:"0 0 100 100",children:s.jsx("path",{fill:"var(--color-edge-icon)",stroke:"var(--color-edge-icon)",d:"M10 30 L90 30 l-40 40 Z"})});rm.displayName="EdgeIcon";var Qu=()=>s.jsxs("svg",{"aria-hidden":"true",focusable:"false",xmlns:"http://www.w3.org/2000/svg",style:lo,viewBox:"0 0 20 20",fill:"var(--color-icon)",children:[s.jsx("path",{d:"M11 3a1 1 0 100 2h2.586l-6.293 6.293a1 1 0 101.414 1.414L15 6.414V9a1 1 0 102 0V4a1 1 0 00-1-1h-5z"}),s.jsx("path",{d:"M5 5a2 2 0 00-2 2v8a2 2 0 002 2h8a2 2 0 002-2v-3a1 1 0 10-2 0v3H5V7h3a1 1 0 000-2H5z"})]});Qu.displayName="PopoutIcon";var om=()=>s.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 -960 960 960",style:lo,fill:"var(--color-icon)",children:s.jsx("path",{d:"M360-280q-33 0-56.5-23.5T280-360v-400q0-33 23.5-56.5T360-840h400q33 0 56.5 23.5T840-760v400q0 33-23.5 56.5T760-280H360Zm0-80h400v-400H360v400ZM200-200v80q-33 0-56.5-23.5T120-200h80Zm-80-80v-80h80v80h-80Zm0-160v-80h80v80h-80Zm0-160v-80h80v80h-80Zm160 480v-80h80v80h-80Zm160 0v-80h80v80h-80Zm160 0v-80h80v80h-80Z"})});om.displayName="PopoutFloatIcon";var nm=()=>s.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",style:lo,fill:"var(--color-icon)",children:s.jsx("path",{d:"M4 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm0 6a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm0 6a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm6-12a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm0 6a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm0 6a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm6-12a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm0 6a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm0 6a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"})});nm.displayName="GripIcon";var im=()=>s.jsxs("svg",{"aria-hidden":"true",focusable:"false",xmlns:"http://www.w3.org/2000/svg",style:lo,viewBox:"0 0 24 24",fill:"var(--color-icon)",children:[s.jsx("path",{d:"M0 0h24v24H0z",fill:"none"}),s.jsx("path",{stroke:"var(--color-icon)",d:"M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z"})]});im.displayName="RestoreIcon";var am=()=>s.jsx("svg",{"aria-hidden":"true",focusable:"false",xmlns:"http://www.w3.org/2000/svg",style:lo,height:"24px",viewBox:"0 -960 960 960",width:"24px",children:s.jsx("path",{fill:"var(--color-icon)",stroke:"var(--color-icon)",d:"M440-120v-264L254-197l-57-57 187-186H120v-80h264L197-706l57-57 186 187v-264h80v264l186-187 57 57-187 186h264v80H576l187 186-57 57-186-187v264h-80Z"})});am.displayName="AsterickIcon";var lm=e=>{const{controller:t,show:r}=e;return s.jsx("div",{"aria-hidden":"true",className:t.getClassName(U.FLEXLAYOUT__LAYOUT_OVERLAY),style:{display:r?"flex":"none"}})};lm.displayName="Overlay";var Ae=function(e){return e.Close_Tab="Close",e.Pinned_Tab="Pinned",e.Rename_Tab="Rename tab",e.Close_Tabset="Close tab set",e.Active_Tabset="Active tab set",e.Move_Tabset="Move tab set",e.Move_Tabs="Move tabs (?)",e.Maximize="Maximize tab set",e.Restore="Restore tab set",e.Popout_Tab="Popout selected tab",e.Popout_Tab_Float="Float selected tab",e.Popout_Float_To_Window="Popout panel",e.Dock_Float_To_Layout="Drag into another layout",e.Dock_Float_Tabs="Dock tabs (?)",e.Overflow_Menu_Tooltip="Hidden tabs",e.Splitter="Resize",e.Error_rendering_component="Error rendering component",e.Error_rendering_component_retry="Retry",e.Menu_Rename="Rename",e.Menu_Pin="Pin",e.Menu_Unpin="Unpin",e.Menu_Popout="Popout",e.Menu_Float="Float",e.Menu_Popout_Tabset="Pop out tabset",e.Menu_Float_Tabset="Float tabset",e.Menu_Maximize="Maximize",e.Menu_Restore="Restore",e.Menu_Overlay="Overlay",e.Menu_Split="Split",e.Menu_Close_All="Close All",e.Menu_Close_Right="Close to the Right",e.Menu_Close_Others="Close Others",e}({}),_a=e=>{const{controller:t,tabNode:r}=e,o=t.getClassName,n=o(U.FLEXLAYOUT__TAB_BUTTON_STAMP),i=Tf(t,r),a=i.content?s.jsx("div",{className:o(U.FLEXLAYOUT__TAB_BUTTON_CONTENT),children:i.content}):r.getNameForOverflowMenu(),l=i.leading?s.jsx("div",{className:o(U.FLEXLAYOUT__TAB_BUTTON_LEADING),children:i.leading}):null;return s.jsxs("div",{className:n,title:r.getHelpText(),children:[l,a]})};_a.displayName="TabButtonStamp";var o1=500;function Zs(e){return typeof e.getBoundingClientRect=="function"}function sm(e){return e.container?e.container:Zs(e.anchor)?e.anchor.ownerDocument.body:document.body}function n1(e){if(Zs(e))return e.getBoundingClientRect();if("right"in e&&"bottom"in e)return e;const t=e;return new DOMRect(t.x,t.y,0,0)}function i1(e,t){const r=t,{left:o,right:n,top:i,bottom:a}=e,l={};return(o+n)/2{const{anchor:t,items:r,onSelect:o,onClose:n,renderItem:i,title:a}=e,l=e.classNameMapper??(b=>b),c=sm(e),u=m.useRef(null),d=m.useRef(null),f=m.useRef({buffer:"",timer:void 0});m.useEffect(()=>()=>{f.current.timer&&clearTimeout(f.current.timer)},[]);const p=m.useCallback(b=>{b.disabled||((b.onSelect??o)?.(b),n())},[o,n]);m.useEffect(()=>{(d.current?.querySelector('[role="menuitem"]:not([aria-disabled="true"])')??d.current)?.focus();const b=e.returnFocusTo??(Zs(t)?t:void 0);return()=>{b?.focus?.()}},[]),m.useEffect(()=>{const b=c.ownerDocument,h=v=>{u.current?.contains(v.target)||n()};return b.addEventListener("pointerdown",h),()=>b.removeEventListener("pointerdown",h)},[c,n]);const g=b=>{const h=Array.from(d.current?.querySelectorAll('[role="menuitem"]:not([aria-disabled="true"])')??[]),v=b.target.closest?.('[role="menuitem"]'),_=v?h.indexOf(v):-1;if(b.key==="Escape"||b.key==="Tab")n(),b.preventDefault();else if(b.key==="ArrowDown"||b.key==="ArrowUp")h.length>0&&h[(_+(b.key==="ArrowDown"?1:-1)+h.length)%h.length]?.focus(),b.preventDefault();else if(b.key==="Home"||b.key==="End")(b.key==="Home"?h[0]:h[h.length-1])?.focus(),b.preventDefault();else if(b.key.length===1&&b.key!==" "&&!b.ctrlKey&&!b.metaKey&&!b.altKey){const y=f.current;y.timer&&clearTimeout(y.timer),y.buffer+=b.key.toLowerCase(),y.timer=setTimeout(()=>{y.buffer=""},o1);const T=[...y.buffer].every(O=>O===y.buffer[0]),S=T?y.buffer[0]:y.buffer,P=T?_+1:Math.max(_,0);for(let O=0;O({select:()=>p(b),close:n}),w=b=>s.jsx("div",{className:l(U.FLEXLAYOUT__POPUP_MENU_ITEM)+(b.disabled?" "+l(U.FLEXLAYOUT__POPUP_MENU_ITEM__DISABLED):""),role:"menuitem",tabIndex:-1,"aria-disabled":b.disabled||void 0,onClick:h=>{p(b),h.stopPropagation()},children:b.content??s.jsxs(s.Fragment,{children:[b.icon,b.label]})},b.key),k=s.jsx("div",{ref:u,className:l(U.FLEXLAYOUT__POPUP_MENU_CONTAINER),style:i1(n1(t),c.getBoundingClientRect()),children:s.jsx("div",{ref:d,className:l(U.FLEXLAYOUT__POPUP_MENU),role:"menu","aria-label":a,tabIndex:0,onKeyDown:g,"data-layout-path":"/popup-menu",children:r.map((b,h)=>b.type==="divider"?s.jsx("div",{className:l(U.FLEXLAYOUT__POPUP_MENU_DIVIDER),role:"separator"},b.key):i?i(b,h,x(b)):w(b))})});return Vr.createPortal(k,c)};function a1(e){const t=sm(e),r=Zs(e.anchor)?e.anchor.getBoundingClientRect():e.anchor,o=t.ownerDocument.createElement("div");t.appendChild(o);const n=fi(o);let i=!1;const a=()=>{i||(i=!0,n.unmount(),o.remove(),e.onClose())};return n.render(s.jsx(cm,{...e,anchor:r,container:t,onClose:a})),a}function um(e,t,r,o,n,i){const a=n.getClassName,l=r.map(u=>({key:u.node.getId()}));n.showOverlayOnAllWindows(!0);const c=(u,d,f)=>{const p=r[d];let g=a(U.FLEXLAYOUT__POPUP_MENU_ITEM);return t.getSelected()===p.index&&(g+=" "+a(U.FLEXLAYOUT__POPUP_MENU_ITEM__SELECTED)),s.jsx("div",{className:g,role:"menuitem","aria-label":p.node.getNameForOverflowMenu(),tabIndex:-1,"data-layout-path":"/popup-menu/tb"+d,onClick:x=>{f.select(),x.stopPropagation()},draggable:!0,onDragStart:x=>{x.stopPropagation(),n.getDragDropManager().setDragNode(x.nativeEvent,p.node),setTimeout(()=>f.close(),0)},onDragEnd:()=>n.getDragDropManager().onDragEnded(),title:p.node.getHelpText(),children:s.jsx(_a,{tabNode:p.node,controller:n})},u.key)};return a1({anchor:e,container:n.getRootDiv()??void 0,classNameMapper:a,returnFocusTo:e,title:n.i18nName(Ae.Overflow_Menu_Tooltip),items:l,onSelect:u=>{const d=l.indexOf(u);d>=0&&o(r[d])},renderItem:c,onClose:()=>{n.showOverlayOnAllWindows(!1),i?.()}})}cm.displayName="PopupMenu";var dm=e=>{const{controller:t,tabNode:r,selected:o,path:n}=e,i=m.useRef(null),a=m.useRef(null),l=t.getIcons(),c=t.getKeyMap(),u=t.getEditingTab()===r,d=m.useCallback(F=>{i.current=F,t.registerMeasurable(r,"tabbutton",F)},[t,r]);m.useLayoutEffect(()=>{u&&a.current.select()},[u]),m.useEffect(()=>{if(u){const F=t.getCurrentDocument().body,ie=X=>{X.target!==a.current&&t.setEditingTab(void 0)};return F.addEventListener("pointerdown",ie),()=>F.removeEventListener("pointerdown",ie)}},[u,t]);const f=F=>{r.isEnableDrag()?(F.stopPropagation(),t.getDragDropManager().setDragNode(F.nativeEvent,r)):F.preventDefault()},p=F=>{t.getDragDropManager().onDragEnded()},g=F=>{ya(F)&&t.auxMouseClick(r,F)},x=F=>{t.showContextMenu(r,F)},w=()=>{r.isSelected()||t.doAction(re.selectTab(r.getId()))},k=F=>{const ie=i.current?.closest('[role="tablist"]');if(ie){const X=Array.from(ie.querySelectorAll('[role="tab"]'));X[X.indexOf(i.current)+F]?.focus()}},b=()=>{const F=i.current.ownerDocument,ie=()=>Gv(F.getElementById(Lt("flexlayout-tab-",r.getId())));o?ie():(w(),requestAnimationFrame(ie))},h=F=>{u||(to(F,c.focusTabToggle)?(b(),F.preventDefault()):F.key==="Enter"||F.key===" "?(o?b():w(),F.preventDefault()):(F.key==="ArrowLeft"||F.key==="ArrowUp")&&!xa(F)?(k(-1),F.preventDefault()):(F.key==="ArrowRight"||F.key==="ArrowDown")&&!xa(F)?(k(1),F.preventDefault()):to(F,c.closeTab)&&r.isCloseable()?(k(1),t.doAction(re.deleteTab(r.getId())),F.preventDefault()):to(F,c.renameTab)&&r.isEnableRename()&&(_(),F.preventDefault()))},v=F=>{r.isEnableRename()&&(_(),F.stopPropagation())},_=()=>{t.setEditingTab(r)},y=()=>{const F=r.getCloseType();return!!(o||F===Qo.Always||F===Qo.Visible&&window.matchMedia&&window.matchMedia("(hover: hover) and (pointer: fine)").matches)},T=F=>{y()&&(t.doAction(re.deleteTab(r.getId())),F.stopPropagation())},S=F=>{F.stopPropagation()},P=F=>{F.stopPropagation()},O=F=>{F.code==="Escape"?(t.setEditingTab(void 0),i.current?.focus()):(F.code==="Enter"||F.code==="NumpadEnter")&&(t.setEditingTab(void 0),t.doAction(re.renameTab(r.getId(),F.target.value)),i.current?.focus())},B=t.getClassName,j=r.getParent(),M=j.isEnableSingleTabStretch()&&j.getChildren().length===1,E=M?U.FLEXLAYOUT__TAB_BUTTON_STRETCH:U.FLEXLAYOUT__TAB_BUTTON;let z=B(E);z+=" "+B(E+"_"+j.getTabLocation()),M||(o?z+=" "+B(E+"--selected"):z+=" "+B(E+"--unselected")),r.isPinned()&&(z+=" "+B(E+"--pinned")),r.getClassName()!==void 0&&(z+=" "+r.getClassName());const L=Tf(t,r),R=o||j.getSelectedNode()===void 0&&j.getChildren()[0]===r,N=[No(c.focusTabToggle),r.isCloseable()?No(c.closeTab):void 0,r.isEnableRename()?No(c.renameTab):void 0].filter(Boolean).join(" ")||void 0;let A=L.content?s.jsx("div",{className:B(U.FLEXLAYOUT__TAB_BUTTON_CONTENT),children:L.content}):null;const W=L.leading?s.jsx("div",{className:B(U.FLEXLAYOUT__TAB_BUTTON_LEADING),children:L.leading}):null;if(u&&(A=s.jsx("input",{ref:a,className:B(U.FLEXLAYOUT__TAB_BUTTON_TEXTBOX),"data-layout-path":n+"/textbox",type:"text","aria-label":t.i18nName(Ae.Rename_Tab),autoFocus:!0,defaultValue:r.getName(),onKeyDown:O,onPointerDown:P})),r.isPinned()){const F=t.i18nName(Ae.Pinned_Tab);L.buttons.push(s.jsx("div",{"data-layout-path":n+"/button/pin",title:F,"aria-hidden":"true",className:B(U.FLEXLAYOUT__TAB_BUTTON_PIN),children:typeof l.pin=="function"?l.pin(r):l.pin},"pin"))}if(r.isCloseable()&&!M){const F=t.i18nName(Ae.Close_Tab);L.buttons.push(s.jsx("div",{"data-layout-path":n+"/button/close",title:F,"aria-hidden":"true",className:B(U.FLEXLAYOUT__TAB_BUTTON_TRAILING),onPointerDown:S,onClick:T,children:typeof l.close=="function"?l.close(r):l.close},"close"))}return s.jsxs("div",{ref:d,id:Lt("flexlayout-tabbutton-",r.getId()),role:u?void 0:"tab","aria-selected":u?void 0:o,"aria-controls":u?void 0:Lt("flexlayout-tab-",r.getId()),"aria-label":u?void 0:r.isPinned()?L.name+" ("+t.i18nName(Ae.Pinned_Tab)+")":L.name,"aria-keyshortcuts":u?void 0:N,tabIndex:u?-1:R?0:-1,onKeyDown:h,"data-layout-path":n,className:z,onClick:w,onAuxClick:g,onContextMenu:x,title:r.getHelpText(),draggable:!0,onDragStart:f,onDragEnd:p,onDoubleClick:v,children:[W,A,L.buttons]})};dm.displayName="TabButton";var fm=(e,t,r,o,n,i,a)=>{const[l,c]=m.useState([]),[u,d]=m.useState(!1),[f,p]=m.useState(!1),g=m.useRef(!1),x=m.useRef(void 0),w=m.useRef([]),k=m.useRef(0),b=m.useRef(!1);m.useEffect(()=>()=>{x.current!==void 0&&clearTimeout(x.current)},[]),m.useLayoutEffect(()=>{w.current=l});const h=m.useCallback(q=>{r===_e.HORZ?o.current.scrollLeft=q:o.current.scrollTop=q},[r,o]),v=m.useCallback(q=>r===_e.HORZ?q.scrollLeft:q.scrollTop,[r]),_=m.useCallback(q=>r===_e.HORZ?q.clientWidth:q.clientHeight,[r]),y=m.useCallback(q=>r===_e.HORZ?q.scrollWidth:q.scrollHeight,[r]),T=m.useCallback(q=>r===_e.HORZ?q.width:q.height,[r]),S=m.useCallback(q=>r===_e.HORZ?q.x:q.y,[r]),P=m.useCallback(q=>r===_e.HORZ?q.right:q.bottom,[r]),O=m.useCallback(()=>{const q=[];if(o.current){const Z=o.current,Y=Z.getBoundingClientRect(),Q=S(Y)-1,ne=P(Y)+1,le=Z.firstElementChild;let Ce=0;Array.from(le.children).forEach(Ee=>{const ve=Ee.getBoundingClientRect();Ee.classList.contains(a)&&((S(ve)ne)&&q.push(Ce),Ce++)})}return q},[a,o,S,P]),B=m.useCallback(()=>{if(o.current&&n.current){const q=o.current,Z=n.current,Y=_(q),Q=y(q),ne=v(q);if(Q>Y&&Q>0){let le=Y*Y/Q,Ce=0;le<20&&(Ce=20-le,le=20);const Ee=ne*(Y-Ce)/Q;r===_e.HORZ?(Z.style.width=le+"px",Z.style.left=Ee+"px"):(Z.style.height=le+"px",Z.style.top=Ee+"px"),Z.style.display="block"}else Z.style.display="none";r===_e.HORZ?Z.style.bottom="0px":Z.style.right="0px"}},[r,o,n,_,y,v]),j=m.useCallback((q=!1)=>{const Z=O(),Y=Z.length>0;Y!==u&&d(Y),q?c(Z):x.current===void 0&&(x.current=setTimeout(()=>{const Q=O();l1(Q,w.current)||c(Q),x.current=void 0},100))},[O,u]),M=m.useCallback(()=>{const q=t.getSelectedNode();if(q&&o.current){const Z=e.getBoundingClientRect(o.current),Y=o.current.ownerDocument.getElementById(Lt("flexlayout-tabbutton-",q.getId()));if(!Y)return;const Q=e.getBoundingClientRect(Y);let ne=S(Z)-S(Q);ne>0||T(Q)>T(Z)?(h(v(o.current)-ne),b.current=!0):(ne=P(Q)-P(Z),ne>0&&(h(v(o.current)+ne),b.current=!0))}},[t,e,o,S,P,T,v,h]),E=m.useCallback(()=>{if(o.current){const q=o.current;let Z=0;for(const Q of Array.from(q.children))Z+=_(Q);const Y=Z+(f?10:0)>_(o.current);Y!==f&&p(Y)}},[o,f,_]),z=m.useCallback(()=>{b.current||(g.current=!0),b.current=!1,B(),j()},[B,j]),L=m.useCallback((q,Z)=>{if(o.current&&n.current){const Y=o.current,Q=n.current,ne=_(Y),le=y(Y),Ce=_(Q),Ee=Y.getBoundingClientRect();let ve;if(r===_e.HORZ?ve=q-Ee.x-k.current:ve=Z-Ee.y-k.current,ve=Math.max(0,Math.min(le-Ce,ve)),ne>0){const jt=ve*le/ne;h(jt)}}},[o,n,r,_,y,h]),R=m.useCallback(()=>{},[]),N=m.useCallback(()=>{},[]),A=m.useCallback(q=>{q.stopPropagation(),n.current.setPointerCapture(q.pointerId);const Z=n.current.getBoundingClientRect();r===_e.HORZ?k.current=q.clientX-Z.x:k.current=q.clientY-Z.y,cs(q.currentTarget.ownerDocument,q,L,R,N)},[n,r,L,R,N]),W=m.useCallback(q=>{if(o.current){if(t.getChildren().length===0)return;let Z;if(Math.abs(q.deltaY)>0){Z=-q.deltaY,q.deltaMode===1&&(Z*=40);const Y=v(o.current)-Z,Q=y(o.current)-_(o.current);h(Math.max(0,Math.min(Q,Y))),q.stopPropagation()}}},[t,o,v,y,_,h]),F=m.useCallback(q=>{q.preventDefault()},[]),ie=t.getId(),X=t.getSelectedNode();return m.useLayoutEffect(()=>{o.current&&h(0)},[ie,o,h]),m.useLayoutEffect(()=>{g.current=!1},[X]),m.useLayoutEffect(()=>{E(),g.current===!1&&M(),B(),j(!0),requestAnimationFrame(()=>{j()})},[E,M,B,j,r,X]),m.useLayoutEffect(()=>{const q=o.current;if(!q)return;const Z=new q.ownerDocument.defaultView.ResizeObserver(()=>{g.current=!1,E(),M(),B(),j()});return Z.observe(q),()=>Z.disconnect()},[E,M,B,j,o]),m.useEffect(()=>{if(t instanceof Oe&&t.isEnableTabWrap())return;const q=i.current;return q?.addEventListener("wheel",F,{passive:!1}),()=>{q?.removeEventListener("wheel",F)}}),{userControlledPositionRef:g,onScroll:z,onScrollPointerDown:A,hiddenTabs:l,onMouseWheel:W,isDockStickyButtons:f,isShowHiddenTabs:u}};function l1(e,t){return e.length===t.length&&e.every((r,o)=>r===t[o])}var pm=e=>{const{tabsetNode:t,controller:r}=e,o=m.useRef(null),n=m.useRef(null),i=m.useRef(null),a=m.useRef(null),l=m.useRef(null),c=m.useRef(null),u=m.useRef(null),d=m.useRef(null),[f,p]=m.useState(!1),g=m.useRef(null),x=r.getIcons();m.useEffect(()=>()=>g.current?.(),[]);const{userControlledPositionRef:w,onScroll:k,onScrollPointerDown:b,hiddenTabs:h,onMouseWheel:v,isDockStickyButtons:_,isShowHiddenTabs:y}=fm(r,t,_e.HORZ,a,i,n,r.getClassName(U.FLEXLAYOUT__TAB_BUTTON)),T=m.useCallback($=>{o.current=$,r.registerMeasurable(t,"tabset",$)},[r,t]),S=m.useCallback($=>{n.current=$,r.registerMeasurable(t,"tabstrip",$)},[r,t]),P=m.useCallback($=>{l.current=$,r.registerMeasurable(t,"tabsetcontent",$)},[r,t]),O=$=>{const pe=r.getShowOverflowMenu(),fe=h.map(he=>({index:he,node:t.getChildren()[he]}));if(pe!==void 0)pe(t,$,fe,B);else{const he=u.current;p(!0),g.current=um(he,t,fe,B,r,()=>{p(!1),g.current=null})}$.stopPropagation()},B=$=>{r.doAction(re.selectTab($.node.getId())),w.current=!1},j=$=>{r.getEditingTab()?$.preventDefault():t.isEnableDrag()?($.stopPropagation(),r.getDragDropManager().setDragNode($.nativeEvent,t)):$.preventDefault()},M=$=>{!ya($)&&!t.isActive()&&r.doAction(re.setActiveTabset(t.getId(),r.getLayoutId()))},E=$=>{ya($)&&r.auxMouseClick(t,$)},z=$=>{r.showContextMenu(t,$)},L=$=>{$.stopPropagation()},R=$=>{t.canMaximize()&&r.maximize(t),$.stopPropagation()},N=$=>{r.doAction(re.deleteTabset(t.getId())),$.stopPropagation()},A=$=>{r.doAction(re.deleteTab(t.getChildren()[0].getId())),$.stopPropagation()},W=$=>{q!==void 0&&r.doAction(re.popoutTab(q.getId(),"window")),$.stopPropagation()},F=$=>{q!==void 0&&r.doAction(re.popoutTab(q.getId(),"float")),$.stopPropagation()},ie=$=>{t.canMaximize()&&r.maximize(t)},X=r.getClassName,q=t.getSelectedNode(),Z=t.getPath(),Y=()=>{const $=[];let pe=!1;if(t.isEnableTabStrip()){const fe=t.isEnableSingleTabStretch()&&t.getChildren().length===1;for(let he=0;he{let $,pe=[],fe=[];const he={leading:$,stickyButtons:pe,buttons:fe,overflowPosition:void 0};r.customizeTabSet(t,he),$=he.leading,pe=he.stickyButtons,fe=he.buttons;const ot=t.isEnableSingleTabStretch()&&t.getChildren().length===1;let nt=ot&&t.getChildren()[0].isCloseable()||t.isCloseable();nt=nt&&t.isEnableCloseButton(),he.overflowPosition===void 0&&(he.overflowPosition=pe.length);let ye;if(pe.length>0&&(!t.isEnableTabWrap()&&(_||ot)?fe=[...pe,...fe]:ye=s.jsx("div",{ref:d,onPointerDown:L,onDragStart:me=>{me.preventDefault()},className:X(U.FLEXLAYOUT__TAB_TOOLBAR_STICKY_BUTTONS_CONTAINER),children:pe},"sticky_buttons_container")),!t.isEnableTabWrap()&&y){const me=r.i18nName(Ae.Overflow_Menu_Tooltip);let we;if(typeof x.more=="function"){const Je=h.map(gt=>({index:gt,node:t.getChildren()[gt]}));we=x.more(t,Je)}else we=s.jsxs(s.Fragment,{children:[x.more,s.jsx("div",{className:X(U.FLEXLAYOUT__TAB_BUTTON_OVERFLOW_COUNT),children:h.length>0?h.length:""})]});fe.splice(Math.min(he.overflowPosition,fe.length),0,s.jsx("button",{tabIndex:0,"data-layout-path":Z+"/button/overflow","aria-haspopup":"menu","aria-expanded":f,"aria-label":me,ref:u,className:X(U.FLEXLAYOUT__TAB_TOOLBAR_BUTTON)+" "+X(U.FLEXLAYOUT__TAB_BUTTON_OVERFLOW),title:me,onClick:O,onPointerDown:L,children:we},"overflowbutton"))}if(q!==void 0&&!q.isPinned()){if(q.isEnablePopoutFloatIcon()){const me=r.i18nName(Ae.Popout_Tab_Float);fe.push(s.jsx("button",{tabIndex:0,"data-layout-path":Z+"/button/popout-float",title:me,"aria-label":me,className:X(U.FLEXLAYOUT__TAB_TOOLBAR_BUTTON)+" "+X(U.FLEXLAYOUT__TAB_TOOLBAR_BUTTON_FLOAT),onClick:F,onPointerDown:L,children:typeof x.popoutFloat=="function"?x.popoutFloat(q):x.popoutFloat},"popout-float"))}if(r.isSupportsPopout()&&q.isAllowedInWindow()&&q.isEnablePopoutIcon()){const me=r.i18nName(Ae.Popout_Tab);fe.push(s.jsx("button",{tabIndex:0,"data-layout-path":Z+"/button/popout",title:me,"aria-label":me,className:X(U.FLEXLAYOUT__TAB_TOOLBAR_BUTTON)+" "+X(U.FLEXLAYOUT__TAB_TOOLBAR_BUTTON_FLOAT),onClick:W,onPointerDown:L,children:typeof x.popout=="function"?x.popout(q):x.popout},"popout"))}}if(t.canMaximize()){const me=r.i18nName(Ae.Restore),we=r.i18nName(Ae.Maximize);fe.push(s.jsx("button",{tabIndex:0,"data-layout-path":Z+"/button/max",title:t.isMaximized()?me:we,"aria-label":t.isMaximized()?me:we,"aria-pressed":t.isMaximized(),className:X(U.FLEXLAYOUT__TAB_TOOLBAR_BUTTON)+" "+X(U.FLEXLAYOUT__TAB_TOOLBAR_BUTTON_+(t.isMaximized()?"max":"min")),onClick:R,onPointerDown:L,children:t.isMaximized()?typeof x.restore=="function"?x.restore(t):x.restore:typeof x.maximize=="function"?x.maximize(t):x.maximize},"max"))}if(!t.isMaximized()&&nt){const me=ot?r.i18nName(Ae.Close_Tab):r.i18nName(Ae.Close_Tabset);fe.push(s.jsx("button",{tabIndex:0,"data-layout-path":Z+"/button/close",title:me,"aria-label":me,className:X(U.FLEXLAYOUT__TAB_TOOLBAR_BUTTON)+" "+X(U.FLEXLAYOUT__TAB_TOOLBAR_BUTTON_CLOSE),onClick:ot?A:N,onPointerDown:L,children:typeof x.closeTabset=="function"?x.closeTabset(t):x.closeTabset},"close"))}if(t.isActive()&&t.isEnableActiveIcon()){const me=r.i18nName(Ae.Active_Tabset);fe.push(s.jsx("div",{"data-layout-path":Z+"/button/active",title:me,"aria-hidden":"true",className:X(U.FLEXLAYOUT__TAB_TOOLBAR_ICON),children:typeof x.activeTabset=="function"?x.activeTabset(t):x.activeTabset},"active"))}const We=s.jsx("div",{ref:c,className:X(U.FLEXLAYOUT__TAB_TOOLBAR),onPointerDown:L,onDragStart:me=>{me.preventDefault()},children:fe},"buttonbar");return{leading:$,buttonbar:We,stickyBar:ye}},ne=($,pe,fe,he)=>{let ot;const nt=r.getKeyMap(),ye=[No(nt.focusNextTabset),No(nt.focusPreviousTabset)].filter(Boolean).join(" ")||void 0,We=r.getEditingTab()?.getParent()===t,me=We?void 0:"tablist";let we=X(U.FLEXLAYOUT__TABSET_TABBAR_OUTER);t.getClassNameTabStrip()!==void 0&&(we+=" "+t.getClassNameTabStrip()),we+=" "+U.FLEXLAYOUT__TABSET_TABBAR_OUTER_+t.getTabLocation(),t.isActive()&&(we+=" "+X(U.FLEXLAYOUT__TABSET_SELECTED)),t.isMaximized()&&(we+=" "+X(U.FLEXLAYOUT__TABSET_MAXIMIZED));const Je=t.isEnableSingleTabStretch()&&t.getChildren().length===1;if(Je){const Lr=t.getChildren()[0];Lr.getTabSetClassName()!==void 0&&(we+=" "+Lr.getTabSetClassName())}let gt;if(pe&&(gt=s.jsx("div",{className:X(U.FLEXLAYOUT__TABSET_LEADING),children:pe})),t.isEnableTabWrap())t.isEnableTabStrip()&&(ot=s.jsxs("div",{className:we,style:{flexWrap:"wrap",gap:"1px",marginTop:"2px"},ref:S,"data-layout-path":Z+"/tabstrip",onPointerDown:M,onDoubleClick:ie,onContextMenu:z,onClick:E,onAuxClick:E,draggable:!0,onDragStart:j,children:[gt,s.jsx("div",{role:me,"aria-orientation":We?void 0:"horizontal","aria-label":We?void 0:t.getName(),"aria-keyshortcuts":We?void 0:ye,style:{display:"contents"},children:$}),he,s.jsx("div",{style:{flexGrow:1,display:"flex",justifyContent:"flex-end"},children:fe})]}));else if(t.isEnableTabStrip()){let Lr;t.isEnableTabScrollbar()&&(Lr=s.jsx("div",{ref:i,"aria-hidden":"true",className:X(U.FLEXLAYOUT__MINI_SCROLLBAR),onPointerDown:b})),ot=s.jsxs("div",{className:we,ref:S,"data-layout-path":Z+"/tabstrip",onPointerDown:M,onDoubleClick:ie,onContextMenu:z,onClick:E,onAuxClick:E,draggable:!0,onWheel:v,onDragStart:j,children:[gt,s.jsxs("div",{className:X(U.FLEXLAYOUT__MINI_SCROLLBAR_CONTAINER),children:[s.jsxs("div",{ref:a,className:X(U.FLEXLAYOUT__TABSET_TABBAR_INNER)+" "+X(U.FLEXLAYOUT__TABSET_TABBAR_INNER_+t.getTabLocation()),style:{overflowX:"auto",overflowY:"hidden"},onScroll:k,children:[s.jsx("div",{style:{width:Je?"100%":"none"},role:me,"aria-orientation":We?void 0:"horizontal","aria-label":We?void 0:t.getName(),"aria-keyshortcuts":We?void 0:ye,className:X(U.FLEXLAYOUT__TABSET_TABBAR_INNER_TAB_CONTAINER)+" "+X(U.FLEXLAYOUT__TABSET_TABBAR_INNER_TAB_CONTAINER_+t.getTabLocation()),children:$}),he]}),Lr]}),fe]})}return ot},le=$=>{let pe;if(t.getChildren().length===0){const he=r.getTabSetPlaceHolderCallback();he&&(pe=he(t))}let fe=s.jsx("div",{ref:P,className:X(U.FLEXLAYOUT__TABSET_CONTENT),children:pe});return t.getTabLocation()==="top"?fe=s.jsxs(s.Fragment,{children:[$,fe]}):fe=s.jsxs(s.Fragment,{children:[fe,$]}),fe},Ce=Y(),{leading:Ee,buttonbar:ve,stickyBar:jt}=Q(),G=le(ne(Ce,Ee,ve,jt)),ue={flexGrow:Math.max(1,t.getWeight()*1e3),minWidth:t.getMinWidth(),minHeight:t.getMinHeight(),maxWidth:t.getMaxWidth(),maxHeight:t.getMaxHeight()};t.getModel().getMaximizedTabset(r.getLayoutId())!==void 0&&!t.isMaximized()&&(ue.display="none");const se=s.jsx("div",{ref:T,className:X(U.FLEXLAYOUT__TABSET_CONTAINER),style:ue,children:s.jsx("div",{className:X(U.FLEXLAYOUT__TABSET),"data-layout-path":Z,children:G})});return t.isMaximized()&&r.getMainElement()?Vr.createPortal(s.jsx("div",{style:{position:"absolute",display:"flex",top:0,left:0,bottom:0,right:0},children:se}),r.getMainElement()):se};pm.displayName="TabSet";var qi=e=>{const{controller:t,node:r,index:o,horizontal:n}=e,i=m.useRef(null),a=m.useRef(null),l=m.useRef([]),c=m.useRef(void 0),u=m.useRef(void 0),d=m.useRef(0),f=m.useRef(0),p=m.useRef({initialSizes:[],sum:0,startPosition:0}),g=m.useCallback(M=>{M.preventDefault(),M.stopImmediatePropagation()},[]);m.useEffect(()=>{const M=i.current,E=a.current;return M?.addEventListener("touchstart",g,{passive:!1}),E?.addEventListener("touchstart",g,{passive:!1}),()=>{M?.removeEventListener("touchstart",g),E?.removeEventListener("touchstart",g)}},[g]);const x=M=>{M.stopPropagation(),r instanceof Ue&&(p.current=r.getSplitterInitials(o)),Sl(!1,t.getCurrentDocument()),cs(M.currentTarget.ownerDocument,M,b,h,k),l.current=r instanceof Ke?r.getSplitterBounds(!0):r.getSplitterBounds(o);const E=t.getRootDiv();c.current=t.getCurrentDocument().createElement("div"),c.current.style.flexDirection=n?"row":"column",c.current.className=t.getClassName(U.FLEXLAYOUT__SPLITTER_DRAG)+(r instanceof Ke?" "+t.getClassName(U.FLEXLAYOUT__SPLITTER_BORDER):""),c.current.style.cursor=r.getOrientation()===_e.VERT?"ns-resize":"ew-resize",u.current=t.getCurrentDocument().createElement("div"),u.current.className=y(U.FLEXLAYOUT__SPLITTER_HANDLE)+" "+y(n?U.FLEXLAYOUT__SPLITTER_HANDLE_HORZ:U.FLEXLAYOUT__SPLITTER_HANDLE_VERT),c.current.appendChild(u.current);const z=i.current.getBoundingClientRect(),L=new ge(z.x-t.getDomRect().x,z.y-t.getDomRect().y,z.width,z.height);d.current=M.clientX-z.x,f.current=M.clientY-z.y,L.positionElement(c.current),E&&E.appendChild(c.current)},w=M=>{if(xa(M))return;let E=0;if(n?(M.key==="ArrowLeft"&&(E=-10),M.key==="ArrowRight"&&(E=10)):(M.key==="ArrowUp"&&(E=-10),M.key==="ArrowDown"&&(E=10)),E!==0)if(M.preventDefault(),r instanceof Ke){const z=r.getLocation(),L=z===ee.BOTTOM||z===ee.RIGHT?-E:E,R=Math.max(r.getMinSize(),Math.min(r.getMaxSize(),r.getSize()+L));t.doAction(re.adjustBorderSplit(r.getId(),R))}else{const z=r.getSplitterInitials(o);if(z.sum<=0)return;const L=r.getSplitterBounds(o),R=Math.max(L[0],Math.min(L[1],z.startPosition+E)),N=r.calculateSplit(o,R,z.initialSizes,z.sum,z.startPosition);t.doAction(re.adjustWeights(r.getId(),N))}},k=()=>{const M=t.getRootDiv();M&&c.current&&M.removeChild(c.current),c.current=void 0,Sl(!0,t.getCurrentDocument())},b=(M,E)=>{if(c.current){const z=t.getDomRect();if(!z)return;r.getOrientation()===_e.VERT?c.current.style.top=_(E-z.y-f.current)+"px":c.current.style.left=_(M-z.x-d.current)+"px",t.isRealtimeResize()&&v(!0)}},h=()=>{if(c.current){v(!1);const M=t.getRootDiv();M&&c.current&&M.removeChild(c.current),c.current=void 0}Sl(!0,t.getCurrentDocument())},v=M=>{(()=>{if(c.current){let z;if(r.getOrientation()===_e.VERT?z=c.current.offsetTop:z=c.current.offsetLeft,r instanceof Ke){const L=r.calculateSplit(r,z);t.doAction(re.adjustBorderSplit(r.getId(),L).setAdjusting(M))}else{const L=p.current;if(L.sum<=0)return;const R=r.calculateSplit(o,z,L.initialSizes,L.sum,L.startPosition);t.doAction(re.adjustWeights(r.getId(),R).setAdjusting(M))}}})()},_=M=>{const E=l.current;let z=M;return ME[1]&&(z=E[1]),z},y=t.getClassName,T={cursor:n?"ew-resize":"ns-resize",flexDirection:n?"column":"row"};let S=y(U.FLEXLAYOUT__SPLITTER)+" "+y(U.FLEXLAYOUT__SPLITTER_+r.getOrientation().getName());r instanceof Ke?S+=" "+y(U.FLEXLAYOUT__SPLITTER_BORDER):r.getModel().getMaximizedTabset(t.getLayoutId())!==void 0&&(T.display="none"),Xv()||(T["--splitter-active-size"]="30px");let P,O,B,j;if(r instanceof Ue){const M=r.getRect(),E=r.getChildren()[o-1],z=n?M.width:M.height;if(E&&z>0){const L=E.getRect();P=Math.round((n?L.getRight()-M.x:L.getBottom()-M.y)/z*100),O=0,B=100,j=P+"%"}}else P=Math.round(r.getSize()),O=Math.round(r.getMinSize()),B=Math.round(r.getMaxSize()),j=P+"px";return s.jsx("div",{className:S,style:T,ref:i,role:"separator","aria-label":t.i18nName(Ae.Splitter),"aria-orientation":n?"vertical":"horizontal","aria-valuenow":P,"aria-valuemin":O,"aria-valuemax":B,"aria-valuetext":j,tabIndex:0,onKeyDown:w,"data-layout-path":r.getPath()+"/s"+(o-1),onPointerDown:x,children:s.jsx("div",{className:y(U.FLEXLAYOUT__SPLITTER_HANDLE)+" "+y(n?U.FLEXLAYOUT__SPLITTER_HANDLE_HORZ:U.FLEXLAYOUT__SPLITTER_HANDLE_VERT)})})};qi.displayName="Splitter";var Rf=e=>{const{controller:t,rowNode:r}=e,o=m.useRef(null),n=r.getOrientation()===_e.HORZ,i=m.useCallback(u=>{o.current=u,t.registerMeasurable(r,"row",u)},[t,r]),a=[];let l=0;for(const u of r.getChildren())l>0&&a.push(s.jsx(qi,{controller:t,node:r,index:l,horizontal:n},"splitter"+l)),u instanceof Ue?a.push(s.jsx(Rf,{controller:t,rowNode:u},u.getId())):u instanceof Oe&&a.push(s.jsx(pm,{controller:t,tabsetNode:u},u.getId())),l++;const c={flexGrow:Math.max(1,r.getWeight()*1e3),minWidth:r.getMinWidth(),minHeight:r.getMinHeight(),maxWidth:r.getMaxWidth(),maxHeight:r.getMaxHeight()};return n?c.flexDirection="row":c.flexDirection="column",s.jsx("div",{ref:i,className:t.getClassName(U.FLEXLAYOUT__ROW),style:c,children:a})};Rf.displayName="Row";var hm=e=>{const{controller:t,selected:r,tabNode:o}=e,n=m.useRef(null),i=m.useRef(!0),a=m.useCallback(()=>{const g=o.getParent();g instanceof Oe&&(g.isActive()||t.doAction(re.setActiveTabset(g.getId(),t.getLayoutId())))},[o,t]),l=o.getParent(),c=t.getKeyMap().focusTabToggle,u=g=>{if(to(g,c)){const x=g.currentTarget.ownerDocument.getElementById(Lt("flexlayout-tabbutton-",o.getId()));x&&(x.focus(),g.preventDefault(),g.stopPropagation())}};m.useLayoutEffect(()=>{const g=o.getMoveableElement(),x=n.current.ownerDocument,w=g.ownerDocument!==x;w&&x.adoptNode(g),g.parentElement!==n.current&&n.current.appendChild(g),w&&t.redrawLayoutAndTabContent();const k=()=>{o.saveScrollPosition()};g.addEventListener("scroll",k);const b=n.current;return b&&b.addEventListener("pointerdown",a),()=>{b&&b.removeEventListener("pointerdown",a),g.removeEventListener("scroll",k),g.isConnected||(t.getModel().getNodeById(o.getId())&&(o.isEnableWindowReMount()||t.getMainController()?.getMoveablesHome()?.appendChild(g)),o.setVisible(!1))}},[o,t,a]),m.useEffect(()=>{o.isSelected()&&i.current&&(o.restoreScrollPosition(),i.current=!1)}),m.useLayoutEffect(()=>(t.registerTabPanel(o,n.current),()=>{t.registerTabPanel(o,null)}),[t,o]);const d=t.getClassName;let f=null;if(r&&document.hidden&&o.isEnablePopoutOverlay()){const g={};l.getContentRect().styleWithPosition(g);let x=d(U.FLEXLAYOUT__TAB_OVERLAY);l instanceof Ke&&l.isOverlay()&&(x+=" "+d(U.FLEXLAYOUT__TAB_OVERLAY_RAISED)),f=s.jsx("div",{style:g,className:x})}let p=d(U.FLEXLAYOUT__TAB);return l instanceof Ke&&(p+=" "+d(U.FLEXLAYOUT__TAB_BORDER),p+=" "+d(U.FLEXLAYOUT__TAB_BORDER_+l.getLocation().getName()),l.isOverlay()&&(p+=" "+d(U.FLEXLAYOUT__TAB_BORDER_OVERLAY))),o.getContentClassName()!==void 0&&(p+=" "+o.getContentClassName()),s.jsxs(s.Fragment,{children:[f,s.jsx("div",{ref:n,id:Lt("flexlayout-tab-",o.getId()),role:"tabpanel","aria-labelledby":Lt("flexlayout-tabbutton-",o.getId()),"aria-keyshortcuts":No(c),tabIndex:-1,onKeyDown:c?u:void 0,className:p,"data-layout-path":o.getPath()})]})};hm.displayName="Tab";var s1=class extends m.Component{constructor(t){super(t);D(this,"retry",()=>{this.setState({hasError:!1})});this.state={hasError:!1}}static getDerivedStateFromError(t){return{hasError:!0}}componentDidCatch(t,r){console.debug(t),console.debug(r)}render(){return this.state.hasError?s.jsx("div",{className:U.FLEXLAYOUT__ERROR_BOUNDARY_CONTAINER,children:s.jsx("div",{role:"alert",className:U.FLEXLAYOUT__ERROR_BOUNDARY_CONTENT,children:s.jsxs("div",{style:{display:"flex",flexDirection:"column",alignItems:"center"},children:[this.props.message,s.jsx("p",{children:s.jsx("button",{tabIndex:0,onClick:this.retry,children:this.props.retryText})})]})})}):this.props.children}},gm=m.memo(({controller:e,tabNode:t})=>{gm.displayName="TabContentRenderer";let r;if(t.getComponent())r=e.getFactory()(t);else if(t.getSubLayoutId()){const o=t.getModel().getLayouts().get(t.getSubLayoutId());r=s.jsxs("div",{className:e.getClassName(U.FLEXLAYOUT__TAB_LAYOUT_CONTAINER),children:[s.jsx(wa,{...e.getProps(),layoutId:t.getSubLayoutId(),path:t.getPath()+o.getPath(),mainLayoutController:e.getMainController()}),";"]})}return s.jsx(s1,{message:e.i18nName(Ae.Error_rendering_component),retryText:e.i18nName(Ae.Error_rendering_component_retry),children:r})},c1);function c1(e,t){return!(t.visible&&(e.windowId!==t.windowId||e.fullRedrawRevision!==t.fullRedrawRevision||e.parentRedrawRevision!==t.parentRedrawRevision||e.tabNode!==t.tabNode||t.tabNode.getSubLayoutId()!==void 0))}var Te,u1=(Te=class{constructor(t){D(this,"_controller");D(this,"_dragEnterCount",0);D(this,"_dragging",!1);D(this,"_active",!1);D(this,"_dropInfo");D(this,"_outlineDiv");D(this,"_mainController");D(this,"setDragNode",(t,r)=>{if(Te.dragState=new sl(this._controller.getMainController(),"internal",r,void 0,void 0),t.dataTransfer.setData("text/plain","--flexlayout--"),t.dataTransfer.effectAllowed="copyMove",t.dataTransfer.dropEffect="move",this._dragEnterCount=0,this._controller.getModel().sortLayouts(),r instanceof Oe){let o=!1,n=this._controller.i18nName(Ae.Move_Tabset);if(r.getChildren().length>0&&(n=this._controller.i18nName(Ae.Move_Tabs).replace("?",String(r.getChildren().length))),this._controller.getProps().onRenderDragRect){const i=this._controller.getProps().onRenderDragRect(n,r,void 0);i&&(this.setDragComponent(t,i,10,10),o=!0)}o||this.setDragComponent(t,n,10,10)}else{const o=t.target;if(o&&typeof o.getBoundingClientRect=="function"){const n=o.getBoundingClientRect(),i=t.clientX-n.left,a=t.clientY-n.top,l=r?.getParent(),c=l instanceof Ke&&l.getOrientation()===_e.HORZ,u=c?10:i,d=c?10:a;let f=!1;if(this._controller.getProps().onRenderDragRect){const p=s.jsx(_a,{controller:this._controller,tabNode:r},r.getId()),g=this._controller.getProps().onRenderDragRect(p,r,void 0);g&&(this.setDragComponent(t,g,u,d),f=!0)}f||(t1()?this.setDragComponent(t,s.jsx(_a,{tabNode:r,controller:this._controller}),u,d):t.dataTransfer.setDragImage(r.getTabStamp(),u,d))}}});D(this,"onDragEnterRaw",t=>{this._dragEnterCount++,this.updateActive(t)});D(this,"onDragLeaveRaw",t=>{this._dragEnterCount--,this.updateActive(t)});D(this,"onDragEnter",t=>{if(!Te.dragState&&this._controller.getProps().onExternalDrag){const r=this._controller.getProps().onExternalDrag(t);if(r){const o=Le.fromJson(r.json,this._controller.getModel(),!1);Te.dragState=new sl(this._controller.getMainController(),"external",o,r.json,r.onDrop)}}if(this._mainController===Te.dragState?.mainLayoutController&&!(Te.dragState?.dockFloatToMain&&!this.isDockTarget())&&Te.dragState){t.preventDefault(),this._dropInfo=void 0;const r=this._controller.getRootDiv(),o=this._controller.getCurrentDocument();this._outlineDiv=o.createElement("div"),this._outlineDiv.className=this._controller.getClassName(U.FLEXLAYOUT__OUTLINE_RECT),this._outlineDiv.style.visibility="hidden";const n=this._controller.getTabDragSpeed();this._outlineDiv.style.transition=`top ${n}s, left ${n}s, width ${n}s, height ${n}s`,r.appendChild(this._outlineDiv),this._dragging=!0,this._controller.showOverlayOnAllWindows(!0),this._controller.getModel().getMaximizedTabset(this._controller.getLayoutId())===void 0&&this._controller.setState({showEdges:this._controller.getModel().isEnableEdgeDock()});const i=this._controller.getRootDiv().getBoundingClientRect();new ge(t.clientX-i.left,t.clientY-i.top,1,1).positionElement(this._outlineDiv)}});D(this,"onDragOver",t=>{if(this._mainController===Te.dragState?.mainLayoutController&&!(Te.dragState?.dockFloatToMain&&!this.isDockTarget())&&this._active){if(Te.dragState?.dockFloatToMain){const i=t.target;if(i&&Te.dragState.sourceFloatElement?.contains(i)){this._dropInfo=void 0;return}}const r=this._controller.getRootDiv()?.getBoundingClientRect(),o={x:t.clientX-(r?.left??0),y:t.clientY-(r?.top??0)};Te.dragState.dockFloatToMain||this._controller.checkForBorderToShow(o.x,o.y);const n=this._controller.getModel().findDropTargetNode(this._controller.getLayoutId(),Te.dragState.dragNode,o.x,o.y,this.isExcludeCenter());if(n){if(Te.dragState.dockFloatToMain&&(n.location===ee.CENTER||!(n.node instanceof Oe)&&!(n.node instanceof Ue)))return;t.preventDefault(),this._dropInfo=n,this._outlineDiv&&(this._outlineDiv.className=this._controller.getClassName(n.className),n.rect.positionElement(this._outlineDiv),this._outlineDiv.style.visibility="visible")}}});D(this,"onDragLeave",t=>{if(this._mainController===Te.dragState?.mainLayoutController&&(this.clearDragLocalVisuals(),this._controller.isMainLayout())){let r=!1;for(const[,o]of this._controller.getModel().getLayouts())if(o.getController()&&o.getController().getDragDropManager().isDragging()){r=!0;break}r===!1&&this.clearDragMain()}});D(this,"onDrop",t=>{if(this._mainController===Te.dragState?.mainLayoutController&&!(Te.dragState?.dockFloatToMain&&!this.isDockTarget())){if(this._active){t.preventDefault();const r=Te.dragState;if(this._dropInfo&&r.dockFloatToMain){const o=t.target;o&&r.sourceFloatElement?.contains(o)&&(this._dropInfo=void 0)}if(this._dropInfo)if(r.dragJson!==void 0){const o=this._controller.doAction(re.addTab(r.dragJson,this._dropInfo.node.getId(),this._dropInfo.location,this._dropInfo.index));r.fnNewNodeDropped!==void 0&&r.fnNewNodeDropped(o,t)}else r.dragNode!==void 0&&(r.dockFloatToMain?this._controller.doAction(re.dockFloatToLayout(r.floatLayoutId,this._dropInfo.node.getId(),this._dropInfo.location,this._dropInfo.index)):this._controller.doAction(re.moveNode(r.dragNode.getId(),this._dropInfo.node.getId(),this._dropInfo.location,this._dropInfo.index)));this.clearDragMain(),Te.dragState=void 0}this._dragEnterCount=0}});this._controller=t,this._mainController=t.getMainController()}isDockTarget(){return this._controller.getLayout().getLayoutId()!==Te.dragState?.floatLayoutId}isExcludeCenter(){if(Te.dragState?.dockFloatToMain)return!0;const t=Te.dragState?.dragNode;return t instanceof Oe?!t.isEnableClose()||t.getPinnedRunLength()>0:!1}addTabWithDragAndDrop(t,r,o){const n=Le.fromJson(r,this._controller.getModel(),!1);Te.dragState=new sl(this._controller.getMainController(),"add",n,r,o)}onDragEnded(){this.clearDragMain(),Te.dragState=void 0}moveTabWithDragAndDrop(t,r){this.setDragNode(t,r)}startDockLayoutDrag(t,r,o){const n=r.getRootRow();Te.dragState=new sl(this._controller.getMainController(),"float",n,void 0,void 0,!0,r.getLayoutId(),o),t.dataTransfer.setData("text/plain","--flexlayout--"),t.dataTransfer.effectAllowed="copyMove",t.dataTransfer.dropEffect="move",this._dragEnterCount=0,this._controller.getModel().sortLayouts();let i=0;r.getRootRow()?.forEachNode(c=>{c instanceof Le&&i++},0);const a=this._controller.i18nName(Ae.Dock_Float_Tabs).replace("?",String(i));let l=!1;if(this._controller.getProps().onRenderDragRect){const c=this._controller.getProps().onRenderDragRect(a,n,void 0);c&&(this.setDragComponent(t,c,10,10),l=!0)}l||this.setDragComponent(t,a,10,10)}setDragComponent(t,r,o,n){const i=s.jsx("div",{style:{position:"unset"},className:this._controller.getClassName(U.FLEXLAYOUT__LAYOUT)+" "+this._controller.getClassName(U.FLEXLAYOUT__DRAG_RECT),children:r}),a=this._controller.getCurrentDocument(),l=a.createElement("div");l.setAttribute("data-layout-path","/drag-rectangle"),l.style.position="absolute",l.style.left="-10000px",l.style.top="-10000px",a.body.appendChild(l);const c=fi(l);Vr.flushSync(()=>c.render(i)),t.dataTransfer.setDragImage(l,o,n),setTimeout(()=>{c.unmount(),a.body.removeChild(l)},0)}updateActive(t){const r=Array.from(this._controller.getModel().getLayouts().values()),o=Te.dragState?.dockFloatToMain===!0;let n,i;for(let a=r.length-1;a>=0;a--){const l=r[a];if(o&&l.getLayoutId()===Te.dragState?.floatLayoutId)continue;const c=l.getController()?.getDragDropManager();c&&c.getDragEnterCount()>0&&(l.getType()==="tab"?i=l:!n&&!i&&(n=l))}if(i){const a=Kv(i);(n===a||!n)&&(n=i)}n&&n.getController().getDragDropManager().setActive(!0,t);for(const a of r)a!==n&&a.getController()?.getDragDropManager().setActive(!1,t)}setActive(t,r){this._active!==t&&(this._active=t,this._active?this.onDragEnter(r):this.onDragLeave(r))}clearDragMain(){this._controller.showOverlayOnAllWindows(!1);for(const[,t]of this._controller.getModel().getLayouts())t.getController()&&t.getController().getDragDropManager().clearDragLocal()}clearDragLocal(){this._dragEnterCount=0,this._active=!1,this.clearDragLocalVisuals()}clearDragLocalVisuals(){this._controller.setState({showEdges:!1}),this._dragging=!1,this._outlineDiv&&(this._controller.getRootDiv().removeChild(this._outlineDiv),this._outlineDiv=void 0)}getDragEnterCount(){return this._dragEnterCount}isDragging(){return this._dragging}},D(Te,"dragState"),Te),sl=class{constructor(e,t,r,o,n,i=!1,a=void 0,l=void 0){D(this,"mainLayoutController");D(this,"dragSource");D(this,"dragNode");D(this,"dragJson");D(this,"fnNewNodeDropped");D(this,"dockFloatToMain");D(this,"floatLayoutId");D(this,"sourceFloatElement");this.mainLayoutController=e,this.dragSource=t,this.dragNode=r,this.dragJson=o,this.fnNewNodeDropped=n,this.dockFloatToMain=i,this.floatLayoutId=a,this.sourceFloatElement=l}},bm=({controller:e})=>{const t=[],r=e.getIcons().edgeArrow;if(e.getState().showEdges&&e.getModel().isEnableEdgeDockIndicators()){const o=e.getModel().getRootRow(e.getLayoutId()).getRect(),n=100,i=10,a=100/2,l=e.getClassName(U.FLEXLAYOUT__EDGE_RECT),c=50;t.push(s.jsx("div",{"aria-hidden":"true",style:{top:0,left:o.width/2-a,width:n,height:i,borderBottomLeftRadius:c,borderBottomRightRadius:c},className:l+" "+e.getClassName(U.FLEXLAYOUT__EDGE_RECT_TOP),children:s.jsx("div",{style:{transform:"rotate(180deg)"},children:r})},"North")),t.push(s.jsx("div",{"aria-hidden":"true",style:{top:o.height/2-a,left:0,width:i,height:n,borderTopRightRadius:c,borderBottomRightRadius:c},className:l+" "+e.getClassName(U.FLEXLAYOUT__EDGE_RECT_LEFT),children:s.jsx("div",{style:{transform:"rotate(90deg)"},children:r})},"West")),t.push(s.jsx("div",{"aria-hidden":"true",style:{top:o.height-i,left:o.width/2-a,width:n,height:i,borderTopLeftRadius:c,borderTopRightRadius:c},className:l+" "+e.getClassName(U.FLEXLAYOUT__EDGE_RECT_BOTTOM),children:s.jsx("div",{children:r})},"South")),t.push(s.jsx("div",{"aria-hidden":"true",style:{top:o.height/2-a,left:o.width-i,width:i,height:n,borderTopLeftRadius:c,borderBottomLeftRadius:c},className:l+" "+e.getClassName(U.FLEXLAYOUT__EDGE_RECT_RIGHT),children:s.jsx("div",{style:{transform:"rotate(-90deg)"},children:r})},"East"))}return s.jsx(s.Fragment,{children:t})};bm.displayName="EdgeIndicators";var d1=2e3,f1=750,vm=e=>{const{title:t,controller:r,layout:o,url:n,onCloseLayout:i,children:a}=e,l=m.useRef(null),[c,u]=m.useState(void 0),[d,f]=m.useState(void 0),[p,g]=m.useState(void 0),x=m.useMemo(()=>new Map,[]),w=m.useRef(!1),k=m.useRef(null),b=m.useRef(null),h=m.useRef(new Map);if(m.useLayoutEffect(()=>{!w.current&&c&&(w.current=!0,r.redrawLayout(),b1(x))},[c,r,x]),m.useLayoutEffect(()=>{const v=()=>{if(l.current){const _=l.current;l.current=null,_.close()}};if(!l.current){const _=o.getLayoutId(),y=o.getRect();l.current=window.open(n,_,`left=${y.x},top=${y.y},width=${y.width},height=${y.height}`),l.current?(window.addEventListener("beforeunload",v),l.current.addEventListener("load",()=>{if(l.current){l.current.focus(),l.current.resizeTo(y.width,y.height),l.current.moveTo(y.x,y.y);const T=l.current;T.resizeBy(y.width-T.outerWidth,y.height-T.outerHeight),T.moveBy(y.x-T.screenLeft,y.y-T.screenTop);const S=l.current.document;f(l.current),g(S),S.title=t,document.documentElement.lang&&(S.documentElement.lang=document.documentElement.lang),document.documentElement.dir&&(S.documentElement.dir=document.documentElement.dir);const P=S.createElement("div");P.className=U.FLEXLAYOUT__FLOATING_WINDOW_CONTENT,S.body.appendChild(P),r.getProps().onPopoutOpen?.(o,l.current,S),g1(S,x).then(()=>{u(P)}),k.current=new MutationObserver(O=>p1(O,S,x)),k.current.observe(document.head,{childList:!0,subtree:!0,characterData:!0}),b.current=S.defaultView?.setInterval(()=>{v1(x,h.current)},f1)??null,l.current.addEventListener("beforeunload",()=>{l.current&&(r.getProps().onPopoutClose?.(o,l.current,S),i(o),l.current=null,k.current?.disconnect(),k.current=null,b.current!=null&&(S.defaultView?.clearInterval(b.current),b.current=null))})}})):(console.warn(`Unable to open window ${n}`),i(o))}return()=>{window.removeEventListener("beforeunload",v),l.current?.close(),l.current=null,k.current?.disconnect(),k.current=null,b.current!=null&&(b.current=null)}},[]),c!==void 0){const v=r.getProps().renderPopoutContent;let _=a;return v&&p&&(_=v({children:a,layout:o,popoutWindow:d??window,popoutDocument:p})),Vr.createPortal(_,c)}else return null};function p1(e,t,r){for(const o of e)if(o.type==="childList"&&o.target===document.head){for(const n of o.addedNodes)(n instanceof HTMLLinkElement||n instanceof HTMLStyleElement)&&mm(t,n,r);for(const n of o.removedNodes)if(n instanceof HTMLLinkElement||n instanceof HTMLStyleElement){const i=r.get(n);i&&(i.remove(),r.delete(n))}}else{const n=h1(o.target),i=n&&r.get(n);n&&i&&Qs(n,i)}}function h1(e){let t=e instanceof HTMLElement?e:e.parentNode;for(;t&&!(t instanceof HTMLStyleElement);)t=t.parentNode;return t instanceof HTMLStyleElement?t:void 0}function g1(e,t){const r=[],o=document.querySelectorAll('style, link[rel="stylesheet"]');for(const n of o)mm(e,n,t,r);return Promise.all(r)}function mm(e,t,r,o){if(t instanceof HTMLLinkElement){const n=t.cloneNode(!0);e.head.appendChild(n),r.set(t,n),o&&o.push(new Promise(i=>{let a=!1;const l=c=>{a||(a=!0,i(c))};n.onload=()=>l(!0),n.onerror=()=>l(!1),e.defaultView?.setTimeout(()=>l(!1),d1)}))}else if(t instanceof HTMLStyleElement)try{const n=t.cloneNode(!0);e.head.appendChild(n),Qs(t,n),r.set(t,n)}catch{}}function Qs(e,t){const r=e.textContent??"";if(r.trim()!=="")t.textContent=r;else try{t.textContent="";const o=e.sheet?.cssRules;if(o)for(const n of o)t.sheet.insertRule(n.cssText,t.sheet.cssRules.length)}catch{}}function b1(e){for(const[t,r]of e)t instanceof HTMLStyleElement&&Qs(t,r)}function v1(e,t){for(const[r,o]of e){if(!(r instanceof HTMLStyleElement)||(r.textContent??"").trim()!=="")continue;let n=0;try{n=r.sheet?.cssRules.length??0}catch{}n!==t.get(r)&&(t.set(r,n),Qs(r,o))}}vm.displayName="PopoutWindow";var co=10,Or=-4,ir=8,kn=12,Eh=12,m1=150,x1=25,y1=e=>{const{controller:t,layout:r,children:o}=e,[n,i]=m.useState(r.getRect()),a=m.useRef(ge.empty()),l=t.getClassName,c=m.useRef(null),u=m.useRef(null),d=m.useRef(null),f=m.useRef(null),p=m.useRef(null),g=m.useRef(null),x=m.useRef(null),w=m.useRef(null),k=m.useRef(null),b=m.useRef(null),h=m.useRef(!1),v=m.useRef(void 0);m.useEffect(()=>{a.current=n},[n]),m.useEffect(()=>{requestAnimationFrame(()=>{i(r.getRect())})},[r]);const _=m.useCallback(L=>{const R=t.getCurrentWindow()??window,N=ge.fromDomRect(t.getRootDiv().getBoundingClientRect());let A;if(t.getProps().constrainFloatPanels)A=new ge(0,0,N.width,N.height);else{const F=r1(R),ie=Math.max(F.fullWidth,R.innerWidth),X=Math.max(F.fullHeight,R.innerHeight);A=new ge(-N.x,-N.y,ie,X)}const W=L.clone();return W.clamp(A),W},[t]),y=m.useCallback(L=>{L.preventDefault(),L.stopImmediatePropagation()},[]);m.useEffect(()=>{const L=[u,d,f,p,g,x,w,k,b].map(R=>R.current).filter(R=>R!==null);return L.forEach(R=>R.addEventListener("touchstart",y,{passive:!1})),()=>{L.forEach(R=>R.removeEventListener("touchstart",y))}},[y]);const T=m.useRef(!1);m.useLayoutEffect(()=>{if(!T.current){T.current=!0;const L=_(n);L.equals(n)||(i(L),r.setRect(L))}},[_,n,r]),m.useEffect(()=>{const L=()=>{const W=[...t.getModel().getLayouts()],F=W[W.length-1][1];r!==F&&(h.current=!0)},R=t.getCurrentWindow()??window,N=()=>{h.current&&(v.current=R.setTimeout(()=>{v.current=void 0,t.moveWindowToFront(r.getLayoutId())},10),h.current=!1)},A=c.current;return A&&(A.addEventListener("pointerdown",L,{capture:!0}),A.addEventListener("pointerup",N)),()=>{A&&(A.removeEventListener("pointerdown",L,{capture:!0}),A.removeEventListener("pointerup",N)),v.current!==void 0&&(R.clearTimeout(v.current),v.current=void 0)}},[t,r]);const S=L=>{L.stopPropagation();const R={x:L.clientX-n.x,y:L.clientY-n.y};t.showOverlayOnAllWindows(!0),cs(t.getCurrentDocument()??document,L,(N,A)=>{h.current&&(t.moveWindowToFront(r.getLayoutId()),h.current=!1);const W=new ge(N-R.x,A-R.y,n.width,n.height),F=_(W);i(F),t.doAction(re.moveFloat(r.getLayoutId(),F).setAdjusting(!0))},()=>{t.doAction(re.moveFloat(r.getLayoutId(),a.current).setAdjusting(!1)),t.redrawLayout(),t.showOverlayOnAllWindows(!1)},()=>{t.doAction(re.moveFloat(r.getLayoutId(),a.current).setAdjusting(!1)),t.redrawLayout(),t.showOverlayOnAllWindows(!1)})},P=t.getIcons(),O=t.isSupportsPopout()&&r.getRootRow()?.isAllowedInWindow()===!0,B=L=>{L.stopPropagation(),r.getRootRow()?.getChildren().length?t.getDragDropManager().startDockLayoutDrag(L.nativeEvent,r,c.current??void 0):L.preventDefault()},j=L=>{t.getDragDropManager().onDragEnded()},M=L=>{L.stopPropagation()},E=L=>{L.stopPropagation();const R=t.getScreenRect(r.getRect());t.doAction(re.popoutFloat(r.getLayoutId(),R.toJson()))},z=(L,R)=>{const N=n,A={x:L.clientX,y:L.clientY};t.showOverlayOnAllWindows(!0),cs(t.getCurrentDocument()??document,L,(W,F)=>{const ie=W-A.x,X=F-A.y;let q=N.x,Z=N.y,Y=N.width,Q=N.height;R.includes("n")&&(Z+=X,Q-=X),R.includes("s")&&(Q+=X),R.includes("w")&&(q+=ie,Y-=ie),R.includes("e")&&(Y+=ie);const ne=new ge(q,Z,Math.max(m1,Y),Math.max(x1,Q)),le=_(ne);i(le),t.doAction(re.moveFloat(r.getLayoutId(),le).setAdjusting(!0))},()=>{t.doAction(re.moveFloat(r.getLayoutId(),a.current).setAdjusting(!1)),t.redrawLayout(),t.showOverlayOnAllWindows(!1)},()=>{t.doAction(re.moveFloat(r.getLayoutId(),a.current).setAdjusting(!1)),t.redrawLayout(),t.showOverlayOnAllWindows(!1)}),L.stopPropagation()};return s.jsxs("div",{ref:c,className:l(U.FLEXLAYOUT__FLOAT_WINDOW),style:{left:n.x,top:n.y,width:n.width,height:n.height,position:"absolute"},children:[s.jsxs("div",{ref:u,className:l(U.FLEXLAYOUT__FLOAT_WINDOW_HEADER),onPointerDown:S,children:[s.jsx("div",{"data-layout-path":"/floatwindow/drag-handle",className:l(U.FLEXLAYOUT__FLOAT_WINDOW_DRAG_HANDLE),draggable:!0,title:t.i18nName(Ae.Dock_Float_To_Layout),"aria-label":t.i18nName(Ae.Dock_Float_To_Layout),onDragStart:B,onDragEnd:j,onPointerDown:M,children:P.dragToDock}),s.jsx("div",{style:{flexGrow:1,display:"flex",justifyContent:"center",alignItems:"center",minWidth:0,overflow:"hidden"},children:r.getName()!==void 0?s.jsx("span",{"data-layout-path":"/floatwindow/title",className:l(U.FLEXLAYOUT__FLOAT_WINDOW_HEADER_TITLE),title:r.getName(),children:r.getName()}):s.jsx("div",{style:{width:50,height:8,display:"flex",flexDirection:"column",justifyContent:"space-around",opacity:.5},children:s.jsx("div",{style:{height:2,backgroundColor:"gray",borderRadius:1}})})}),O&&s.jsx("button",{type:"button","data-layout-path":"/floatwindow/button/popout",className:l(U.FLEXLAYOUT__FLOAT_WINDOW_BUTTON),title:t.i18nName(Ae.Popout_Float_To_Window),"aria-label":t.i18nName(Ae.Popout_Float_To_Window),onClick:E,onPointerDown:M,children:P.popoutFloatWindow})]}),s.jsx("div",{className:l(U.FLEXLAYOUT__FLOAT_WINDOW_CONTENT),children:o}),s.jsx("div",{ref:d,style:{position:"absolute",zIndex:co,top:Or,left:ir,right:ir,height:ir,cursor:"ns-resize"},onPointerDown:L=>z(L,"n")}),s.jsx("div",{ref:x,style:{position:"absolute",zIndex:co,bottom:Or,left:ir,right:ir,height:ir,cursor:"ns-resize"},onPointerDown:L=>z(L,"s")}),s.jsx("div",{ref:p,style:{position:"absolute",zIndex:co,top:ir,bottom:ir,right:Or,width:ir,cursor:"ew-resize"},onPointerDown:L=>z(L,"e")}),s.jsx("div",{ref:k,style:{position:"absolute",zIndex:co,top:ir,bottom:ir,left:Or,width:ir,cursor:"ew-resize"},onPointerDown:L=>z(L,"w")}),s.jsx("div",{ref:b,style:{position:"absolute",zIndex:co,top:Or,left:Or,width:kn,height:kn,cursor:"nwse-resize"},onPointerDown:L=>z(L,"nw")}),s.jsx("div",{ref:f,style:{position:"absolute",zIndex:co,top:Or,right:Or,width:kn,height:kn,cursor:"nesw-resize"},onPointerDown:L=>z(L,"ne")}),s.jsx("div",{ref:w,style:{position:"absolute",zIndex:co,bottom:Or,left:Or,width:kn,height:kn,cursor:"nesw-resize"},onPointerDown:L=>z(L,"sw")}),s.jsx("div",{ref:g,style:{position:"absolute",zIndex:co,bottom:0,right:0,width:Eh,height:Eh,cursor:"nwse-resize"},onPointerDown:L=>z(L,"se")})]})},xm=({controller:e})=>{const t=[],r=e.getModel().getLayouts();let o=0,n=2e3;for(const[i,a]of r)a.isMainLayout()||(a.getType()==="window"&&e.isSupportsPopout()?(t.push(s.jsx(vm,{controller:e,layout:a,title:e.getPopoutWindowName()+" "+o,url:e.getPopoutURL()+"?id="+encodeURIComponent(i),onCloseLayout:e.onCloseLayout,children:s.jsx("div",{className:e.getProps().popoutClassName,children:s.jsx(wa,{...e.getProps(),layoutId:i,path:a.getPath(),mainLayoutController:e})})},i)),o++):a.getType()==="float"&&(t.push(s.jsx(y1,{controller:e,layout:a,zIndex:n,onCloseLayout:e.onCloseLayout,children:s.jsx(wa,{...e.getProps(),layoutId:i,path:a.getPath(),mainLayoutController:e})},i+"float")),n++));return s.jsx(s.Fragment,{children:t})};xm.displayName="FloatingWindowContainer";var ym=e=>{const{controller:t,tabNode:r,selected:o,border:n,icons:i,path:a}=e,l=m.useRef(null),c=m.useRef(null),u=t.getKeyMap(),d=N=>{r.isEnableDrag()?(N.stopPropagation(),t.getDragDropManager().setDragNode(N.nativeEvent,r)):N.preventDefault()},f=N=>{N.stopPropagation(),t.getDragDropManager().onDragEnded()},p=N=>{ya(N)&&t.auxMouseClick(r,N)},g=N=>{t.showContextMenu(r,N)},x=()=>{t.doAction(re.selectTab(r.getId()))},w=N=>{const A=l.current?.closest('[role="tablist"]');if(A){const W=Array.from(A.querySelectorAll('[role="tab"]'));W[W.indexOf(l.current)+N]?.focus()}},k=()=>{const N=l.current.ownerDocument,A=()=>Gv(N.getElementById(Lt("flexlayout-tab-",r.getId())));o?A():(x(),requestAnimationFrame(A))},b=N=>{t.getEditingTab()!==r&&(to(N,u.focusTabToggle)?(k(),N.preventDefault()):N.key==="Enter"||N.key===" "?(x(),N.preventDefault()):(N.key==="ArrowLeft"||N.key==="ArrowUp")&&!xa(N)?(w(-1),N.preventDefault()):(N.key==="ArrowRight"||N.key==="ArrowDown")&&!xa(N)?(w(1),N.preventDefault()):to(N,u.closeTab)&&r.isCloseable()&&(w(1),t.doAction(re.deleteTab(r.getId())),N.preventDefault()))},h=()=>{const N=r.getCloseType();return!!(o||N===Qo.Always||N===Qo.Visible&&window.matchMedia&&window.matchMedia("(hover: hover) and (pointer: fine)").matches)},v=N=>{h()&&(t.doAction(re.deleteTab(r.getId())),N.stopPropagation())},_=N=>{N.stopPropagation()},y=()=>{if(o)return!0;const N=r.getParent();return N instanceof Ke&&N.getSelected()===-1&&N.getChildren()[0]===r},T=t.getEditingTab()===r,S=m.useCallback(N=>{l.current=N,t.registerMeasurable(r,"tabbutton",N)},[t,r]);m.useLayoutEffect(()=>{T&&c.current.select()},[T]),m.useEffect(()=>{if(T){const N=t.getCurrentDocument().body,A=W=>{W.target!==c.current&&t.setEditingTab(void 0)};return N.addEventListener("pointerdown",A),()=>N.removeEventListener("pointerdown",A)}},[T,t]);const P=N=>{N.stopPropagation()},O=N=>{N.code==="Escape"?(t.setEditingTab(void 0),l.current?.focus()):(N.code==="Enter"||N.code==="NumpadEnter")&&(t.setEditingTab(void 0),t.doAction(re.renameTab(r.getId(),N.target.value)),l.current?.focus())},B=t.getClassName;let j=B(U.FLEXLAYOUT__BORDER_BUTTON)+" "+B(U.FLEXLAYOUT__BORDER_BUTTON_+n);o?j+=" "+B(U.FLEXLAYOUT__BORDER_BUTTON__SELECTED):j+=" "+B(U.FLEXLAYOUT__BORDER_BUTTON__UNSELECTED),r.getClassName()!==void 0&&(j+=" "+r.getClassName());let M=0;r.getModel().isEnableRotateBorderIcons()===!1&&(n==="left"?M=r.getModel().getBorderLeftTabDirection()==="down"?-90:90:n==="right"&&(M=-90));const E=Tf(t,r,M);let z=E.content?s.jsx("div",{className:B(U.FLEXLAYOUT__BORDER_BUTTON_CONTENT),children:E.content}):null;const L=E.leading?s.jsx("div",{className:B(U.FLEXLAYOUT__BORDER_BUTTON_LEADING),children:E.leading}):null;if(T&&(z=s.jsx("input",{ref:c,className:B(U.FLEXLAYOUT__TAB_BUTTON_TEXTBOX),"data-layout-path":a+"/textbox",type:"text","aria-label":t.i18nName(Ae.Rename_Tab),autoFocus:!0,defaultValue:r.getName(),onKeyDown:O,onPointerDown:P})),r.isCloseable()){const N=t.i18nName(Ae.Close_Tab);E.buttons.push(s.jsx("div",{"data-layout-path":a+"/button/close",title:N,"aria-hidden":"true",className:B(U.FLEXLAYOUT__BORDER_BUTTON_TRAILING),onPointerDown:_,onClick:v,children:typeof i.close=="function"?i.close(r):i.close},"close"))}const R=[No(u.focusTabToggle),r.isCloseable()?No(u.closeTab):void 0].filter(Boolean).join(" ")||void 0;return s.jsxs("div",{ref:S,id:Lt("flexlayout-tabbutton-",r.getId()),role:T?void 0:"tab","aria-selected":T?void 0:o,"aria-controls":T?void 0:Lt("flexlayout-tab-",r.getId()),"aria-label":T?void 0:E.name,"aria-keyshortcuts":T?void 0:R,tabIndex:T?-1:y()?0:-1,onKeyDown:b,"data-layout-path":a,className:j,onClick:x,onAuxClick:p,onContextMenu:g,title:r.getHelpText(),draggable:!0,onDragStart:d,onDragEnd:f,children:[L,z,E.buttons]})};ym.displayName="BorderButton";var _m=e=>{const{borderNode:t,controller:r,size:o}=e,n=m.useRef(null),i=m.useRef(null),a=m.useRef(null),l=m.useRef(null),c=m.useRef(null),u=m.useRef(null),[d,f]=m.useState(!1),p=m.useRef(null),g=r.getIcons();m.useEffect(()=>()=>p.current?.(),[]);const{userControlledPositionRef:x,onScroll:w,onScrollPointerDown:k,hiddenTabs:b,onMouseWheel:h,isDockStickyButtons:v,isShowHiddenTabs:_}=fm(r,t,_e.flip(t.getOrientation()),u,a,n,r.getClassName(U.FLEXLAYOUT__BORDER_BUTTON)),y=m.useCallback(ne=>{n.current=ne,r.registerMeasurable(t,"borderheader",ne)},[r,t]),T=ne=>{ya(ne)&&r.auxMouseClick(t,ne)},S=ne=>{r.showContextMenu(t,ne)},P=ne=>{ne.stopPropagation()},O=ne=>{const le=r.getShowOverflowMenu(),Ce=b.map(Ee=>({index:Ee,node:t.getChildren()[Ee]}));if(le!==void 0)le(t,ne,Ce,B);else{const Ee=l.current;f(!0),p.current=um(Ee,t,Ce,B,r,()=>{f(!1),p.current=null})}ne.stopPropagation()},B=ne=>{r.doAction(re.selectTab(ne.node.getId())),x.current=!1},j=ne=>{const le=t.getChildren()[t.getSelected()];le!==void 0&&r.doAction(re.popoutTab(le.getId(),"window")),ne.stopPropagation()},M=ne=>{const le=t.getChildren()[t.getSelected()];le!==void 0&&r.doAction(re.popoutTab(le.getId(),"float")),ne.stopPropagation()},E=r.getClassName,z=()=>{const ne=[];for(let le=0;le{let ne,le=[],Ce=[],Ee;const ve={leading:ne,buttons:le,stickyButtons:Ce,overflowPosition:void 0};if(r.customizeTabSet(t,ve),ne=ve.leading,Ce=ve.stickyButtons,le=ve.buttons,ve.overflowPosition===void 0&&(ve.overflowPosition=Ce.length),Ce.length>0&&(v?le=[...Ce,...le]:Ee=s.jsx("div",{ref:c,onPointerDown:P,onDragStart:ue=>{ue.preventDefault()},className:E(U.FLEXLAYOUT__TAB_TOOLBAR_STICKY_BUTTONS_CONTAINER),children:Ce},"sticky_buttons_container")),_){const ue=r.i18nName(Ae.Overflow_Menu_Tooltip);let se;if(typeof g.more=="function"){const $=b.map(pe=>({index:pe,node:t.getChildren()[pe]}));se=g.more(t,$)}else se=s.jsxs(s.Fragment,{children:[g.more,s.jsx("div",{className:E(U.FLEXLAYOUT__TAB_BUTTON_OVERFLOW_COUNT),children:b.length>0?b.length:""})]});le.splice(Math.min(ve.overflowPosition,le.length),0,s.jsx("button",{tabIndex:0,"aria-haspopup":"menu","aria-expanded":d,"aria-label":ue,ref:l,className:E(U.FLEXLAYOUT__BORDER_TOOLBAR_BUTTON)+" "+E(U.FLEXLAYOUT__BORDER_TOOLBAR_BUTTON_OVERFLOW)+" "+E(U.FLEXLAYOUT__BORDER_TOOLBAR_BUTTON_OVERFLOW_+t.getLocation().getName()),title:ue,onClick:O,onPointerDown:P,children:se},"overflowbutton"))}const jt=t.getSelected();if(jt!==-1){const ue=t.getChildren()[jt];if(ue!==void 0&&r.isMainLayout()){if(ue.isEnablePopoutFloatIcon()){const se=r.i18nName(Ae.Popout_Tab_Float);le.push(s.jsx("button",{tabIndex:0,title:se,"aria-label":se,className:E(U.FLEXLAYOUT__BORDER_TOOLBAR_BUTTON)+" "+E(U.FLEXLAYOUT__BORDER_TOOLBAR_BUTTON_FLOAT),onClick:M,onPointerDown:P,children:typeof g.popoutFloat=="function"?g.popoutFloat(ue):g.popoutFloat},"popout-float"))}if(r.isSupportsPopout()&&ue.isEnablePopoutIcon()&&ue.isAllowedInWindow()){const se=r.i18nName(Ae.Popout_Tab);le.push(s.jsx("button",{tabIndex:0,title:se,"aria-label":se,className:E(U.FLEXLAYOUT__BORDER_TOOLBAR_BUTTON)+" "+E(U.FLEXLAYOUT__BORDER_TOOLBAR_BUTTON_FLOAT),onClick:j,onPointerDown:P,children:typeof g.popout=="function"?g.popout(ue):g.popout},"popout"))}}}const G=s.jsx("div",{ref:i,className:E(U.FLEXLAYOUT__BORDER_TOOLBAR)+" "+E(U.FLEXLAYOUT__BORDER_TOOLBAR_+t.getLocation().getName()),children:le},"toolbar");return{leading:ne,toolbar:G,stickyBar:Ee}},R=z(),{leading:N,toolbar:A,stickyBar:W}=L();let F=E(U.FLEXLAYOUT__BORDER)+" "+E(U.FLEXLAYOUT__BORDER_+t.getLocation().getName());t.getClassName()!==void 0&&(F+=" "+t.getClassName());let ie,X;const q=o-1;t.getLocation()===ee.LEFT?(ie=r.getModel().getBorderLeftTabDirection()==="down"?{left:"100%",top:0}:{right:"100%",top:0},X={width:q,overflowY:"auto"}):t.getLocation()===ee.RIGHT?(ie={left:"100%",top:0},X={width:q,overflowY:"auto"}):(ie={left:0},X={height:q,overflowX:"auto"});let Z;t.isEnableTabScrollbar()&&(Z=s.jsx("div",{ref:a,"aria-hidden":"true",className:E(U.FLEXLAYOUT__MINI_SCROLLBAR),onPointerDown:k}));let Y;N&&(Y=s.jsx("div",{className:E(U.FLEXLAYOUT__BORDER_LEADING),children:N}));const Q=E(U.FLEXLAYOUT__BORDER_INNER_TAB_CONTAINER)+" "+E(U.FLEXLAYOUT__BORDER_INNER_TAB_CONTAINER_+t.getLocation().getName())+(t.getLocation()===ee.LEFT&&r.getModel().getBorderLeftTabDirection()==="down"?" "+E(U.FLEXLAYOUT__BORDER_INNER_TAB_CONTAINER_LEFT_DOWN):"");return s.jsxs("div",{ref:y,style:{display:"flex",flexDirection:t.getOrientation()===_e.VERT?"row":"column"},className:F,"data-layout-path":t.getPath(),onClick:T,onAuxClick:T,onContextMenu:S,onWheel:h,children:[Y,s.jsxs("div",{className:E(U.FLEXLAYOUT__MINI_SCROLLBAR_CONTAINER),children:[s.jsxs("div",{ref:u,className:E(U.FLEXLAYOUT__BORDER_INNER)+" "+E(U.FLEXLAYOUT__BORDER_INNER_+t.getLocation().getName()),style:X,onScroll:w,children:[s.jsx("div",{style:ie,role:r.getEditingTab()?.getParent()===t?void 0:"tablist","aria-orientation":r.getEditingTab()?.getParent()!==t&&(t.getLocation()===ee.LEFT||t.getLocation()===ee.RIGHT)?"vertical":void 0,className:Q,children:R}),W]}),Z]}),A]})};_m.displayName="BorderTabSet";function wm(e){const{controller:t,borderNode:r,show:o}=e,n=m.useRef(null),i=m.useCallback(d=>{n.current=d,t.registerMeasurable(r,"bordercontent",d)},[t,r]);let a=!0;const l={};r.getOrientation()===_e.HORZ?(l.width=r.getSize(),l.minWidth=r.getMinSize(),l.maxWidth=r.getMaxSize()):(l.height=r.getSize(),l.minHeight=r.getMinSize(),l.maxHeight=r.getMaxSize(),a=!1);const c=t.getClassName(U.FLEXLAYOUT__BORDER_TAB_CONTENTS),u=r.getLocation()===ee.LEFT||r.getLocation()===ee.TOP;if(r.isOverlay()){l.display="flex";const d={display:o?"flex":"none"};if(a){const p=t.getModel();for(const g of p.getBorderSet().getBorders())if(g!==r&&g.isOverlay()&&g.isShowing()&&g.getSelected()!==-1){const x=g.getSize()+p.getSplitterSize();g.getLocation()===ee.TOP?d.top=x:g.getLocation()===ee.BOTTOM&&(d.bottom=x)}}const f=t.getClassName(U.FLEXLAYOUT__BORDER_TAB_OVERLAY)+" "+t.getClassName(U.FLEXLAYOUT__BORDER_TAB_OVERLAY_+r.getLocation().getName());return s.jsxs("div",{className:f,style:d,children:[u&&s.jsx("div",{ref:i,style:l,className:c}),o&&s.jsx(qi,{controller:t,node:r,index:0,horizontal:a}),!u&&s.jsx("div",{ref:i,style:l,className:c})]})}return l.display=o?"flex":"none",u?s.jsxs(s.Fragment,{children:[s.jsx("div",{ref:i,style:l,className:c}),o&&s.jsx(qi,{controller:t,node:r,index:0,horizontal:a})]}):s.jsxs(s.Fragment,{children:[o&&s.jsx(qi,{controller:t,node:r,index:0,horizontal:a}),s.jsx("div",{ref:i,style:l,className:c})]})}wm.displayName="BorderTab";var km=({controller:e,inner:t})=>{const r=e.getClassName(U.FLEXLAYOUT__LAYOUT_MAIN),o=e.getModel().getBorderSet().getBorderMap();if(e.isMainLayout()&&o.size>0){const n=s.jsx("div",{className:r,ref:e.getMainRef(),children:t}),i=new Map,a=new Map;for(const[d,f]of ee.values){const p=o.get(f);p&&p.isShowing()&&(!p.isAutoHide()||p.isAutoHide()&&(p.getChildren().length>0||e.getState().showHiddenBorder===f))&&(i.set(f,s.jsx(_m,{controller:e,borderNode:p,size:e.getState().calculatedBorderBarSize})),a.set(f,s.jsx(wm,{controller:e,borderNode:p,show:p.getSelected()!==-1})))}const l=e.getClassName(U.FLEXLAYOUT__LAYOUT_BORDER_CONTAINER),c=e.getClassName(U.FLEXLAYOUT__LAYOUT_BORDER_CONTAINER_INNER),u=s.jsxs("div",{className:c,style:{flexDirection:"column"},children:[a.get(ee.TOP),s.jsxs("div",{className:c,style:{flexDirection:"row"},children:[a.get(ee.LEFT),n,a.get(ee.RIGHT)]}),a.get(ee.BOTTOM)]});return s.jsxs("div",{className:l,style:{flexDirection:"column"},children:[i.get(ee.TOP),s.jsxs("div",{className:c,style:{flexDirection:"row"},children:[i.get(ee.LEFT),u,i.get(ee.RIGHT)]}),i.get(ee.BOTTOM)]})}else return s.jsx("div",{className:r,ref:e.getMainRef(),style:{position:"absolute",top:0,left:0,bottom:0,right:0,display:"flex"},children:t})};km.displayName="BorderContainer";var Em=m.memo(e=>{Em.displayName="DragTabButton";const{controller:t,tabNode:r}=e,o=m.useRef(null);m.useEffect(()=>{r.setTabStamp(o.current)},[r]);const n=t.getClassName,i=n(U.FLEXLAYOUT__DRAG_RECT);return s.jsx("div",{ref:o,className:i,children:s.jsx(_a,{controller:t,tabNode:r},r.getId())})},_1);function _1(e,t){return t.dragging}var wa=m.forwardRef((e,t)=>{wa.displayName="LayoutInternal";const[r,o]=m.useState({editingTab:void 0,showEdges:!1,showOverlay:!1,calculatedBorderBarSize:29,layoutRedrawRevision:0,fullRedrawRevision:0,showHiddenBorder:ee.CENTER}),n=m.useCallback(B=>{o(j=>({...j,...typeof B=="function"?B(j,e):B}))},[e]),i=m.useRef(null),[a,l]=m.useState(0),c=m.useRef(null),u=m.useRef(null),d=m.useRef(null),f=m.useRef(null),p=m.useMemo(()=>new w1(e,r,n),[]);p.setProps(e),p.setStateRaw(r),p.setSetState(n),p.setLayoutRef(i),p.setMoveablesHomeRef(c),p.setFindBorderBarSizeRef(u),p.setFindSplitterSizeRef(d),p.setMainRef(f);const g=e.model.getLayouts().get(p.getLayoutId());g.setController(p),m.useImperativeHandle(t,()=>p,[p]),m.useLayoutEffect(()=>{const B=p.syncLayoutMetrics();if(p.positionTabPanels(),p.isMainLayout()&&p.updateLayoutMetrics(),p.isReLayout()&&(p.redrawLayout(),p.setReLayout(!1)),i.current&&p.getCurrentDocument()!==void 0&&p.getCurrentDocument()!==i.current.ownerDocument&&l(j=>j+1),B){const j=i.current?.ownerDocument.defaultView??window,M=j.requestAnimationFrame(()=>{p.syncLayoutMetrics(),p.positionTabPanels(),p.isReLayout()&&(p.redrawLayout(),p.setReLayout(!1))});return()=>j.cancelAnimationFrame(M)}}),m.useEffect(()=>{const B=i.current.ownerDocument,j=B.defaultView;p.setCurrentDocument(B),p.setCurrentWindow(j);const M=new j.ResizeObserver(()=>{p.updateRect(),p.syncLayoutMetrics(),p.positionTabPanels(),p.updateLayoutMetrics(),p.isReLayout()&&(p.redrawLayout(),p.setReLayout(!1))});M.observe(i.current),p.setGeometryResizeObserver(M),u.current&&M.observe(u.current),d.current&&M.observe(d.current);const E=()=>{p.updateRect()};j.addEventListener("resize",E);const z=()=>{for(const[L,R]of p.getProps().model.getLayouts()){const N=R.getController();N&&N.redrawLayout()}};return p.isMainLayout()&&(document.addEventListener("visibilitychange",z),B.addEventListener("pointerdown",p.onOverlayBorderPointerDown,!0),B.addEventListener("keydown",p.onOverlayBorderKeyDown)),(p.isMainLayout()||p.getLayout()?.getType()==="window")&&B.addEventListener("keydown",p.onTabsetNavKeyDown),()=>{p.setGeometryResizeObserver(void 0),M.disconnect(),j.removeEventListener("resize",E),document.removeEventListener("visibilitychange",z),B.removeEventListener("pointerdown",p.onOverlayBorderPointerDown,!0),B.removeEventListener("keydown",p.onOverlayBorderKeyDown),B.removeEventListener("keydown",p.onTabsetNavKeyDown)}},[p,a]),m.useEffect(()=>{let B;if(!p.isMainLayout()&&p.getLayout().getType()==="window"){const j=p.getProps().mainLayoutController?.getRootDiv();if(j){const M=j,E=i.current;wh(M,E),B=new MutationObserver(()=>{wh(M,E)&&p.redrawLayout()}),B.observe(M,{attributeFilter:["style"]})}}return()=>{B&&B.disconnect()}},[p]),m.useEffect(()=>{const B=e.model;if(g.setToExportRectFunction((j,M)=>M==="window"?p.getScreenRect(j):p.getRelativeRect(j)),p.setLayout(g),p.isMainLayout()){const j={onAfterAction:p.onModelChange};return B.addChangeListener(j),()=>{B.removeChangeListener(j)}}},[e.model,p,g]);const x=p.isMainLayout()?s.jsxs("div",{className:p.getClassName(U.FLEXLAYOUT__LAYOUT_METRICS),children:[s.jsx("div",{ref:u,className:p.getClassName(U.FLEXLAYOUT__BORDER_SIZER),children:"FindBorderBarSize"},"findBorderBarSize"),s.jsx("div",{ref:d,className:p.getClassName(U.FLEXLAYOUT__SPLITTER_+"horz")},"findSplitterSize")]}):null;if(!i.current)return s.jsx("div",{ref:i,className:p.getClassName(U.FLEXLAYOUT__LAYOUT),children:x});const w=e.model,k=p.getLayoutId();w.getRootRow(k).calcMinMaxSize(),w.getRootRow(k).setPaths(e.path||""),p.isMainLayout()&&w.getBorderSet().setPaths();const b=s.jsx(lm,{controller:p,show:r.showOverlay},"__overlay__"),h=p.renderLayout(),v=s.jsx(km,{controller:p,inner:h}),_=p.renderTabContainers(),y=p.reorderComponents(_,p.getOrderedTabIds());let T=null,S=null,P=null,O=null;return p.isMainLayout()&&(T=s.jsx(xm,{controller:p}),S=p.reorderComponents(p.renderTabContents(),p.getOrderedTabMoveableIds()),P=s.jsx("div",{"aria-hidden":"true",className:p.getClassName(U.FLEXLAYOUT__LAYOUT_TAB_STAMPS),children:p.renderDragTabButtons()},"__dragTabButtons__"),O=s.jsx("div",{ref:c,className:p.getClassName(U.FLEXLAYOUT__LAYOUT_MOVEABLES_HOME)},"__moveables_home__")),s.jsxs("div",{ref:i,className:p.getClassName(U.FLEXLAYOUT__LAYOUT),onDragEnter:p.getDragDropManager().onDragEnterRaw,onDragLeave:p.getDragDropManager().onDragLeaveRaw,onDragOver:p.getDragDropManager().onDragOver,onDrop:p.getDragDropManager().onDrop,children:[x,O,b,v,y,S,T,P]})}),Zr,w1=(Zr=class{constructor(t,r,o){D(this,"_props");D(this,"_state");D(this,"_setState");D(this,"_layoutRef");D(this,"_moveablesHomeRef");D(this,"_findBorderBarSizeRef");D(this,"_findSplitterSizeRef");D(this,"_mainRef");D(this,"_orderedTabIds");D(this,"_orderedTabMoveableIds");D(this,"_currentDocument");D(this,"_currentWindow");D(this,"_showOverlay",!1);D(this,"_supportsPopout");D(this,"_popoutURL");D(this,"_icons");D(this,"_dragDropManager");D(this,"_layoutId");D(this,"_layout");D(this,"_mainController");D(this,"_popoutWindowName");D(this,"_cachedLayoutDOMRect");D(this,"_reLayout");D(this,"_measurables",new Map);D(this,"_tabPanels",new Map);D(this,"_lastRect",ge.empty());D(this,"_lastSplitterSize",8);D(this,"_geometryResizeObserver");D(this,"updateRect",()=>{if(this._layoutRef.current){let t=this._layoutRef.current;if(!this._layout.isMainLayout()&&this._layout.getType()==="float"){const o=t.closest("."+this.getClassName(U.FLEXLAYOUT__FLOAT_WINDOW));o instanceof HTMLDivElement&&(t=o)}let r=ge.fromDomRect(t.getBoundingClientRect());if(!this._layout.isMainLayout()&&this._layout.getType()==="float"){const o=this._mainController.getDomRect();r=r.relativeTo(o)}!r.equalsWhenRounded(this._lastRect)&&r.width!==0&&r.height!==0&&(this._lastRect=r,this._layout.setRect(r),this.redrawLayout())}});D(this,"onModelChange",t=>{const r=t instanceof $v?t.actions:[t];for(const o of r)if(o.type==re.DELETE_TAB&&this._state.showHiddenBorder!==ee.CENTER&&this._props.model.getBorderSet().getBorderMap().get(this._state.showHiddenBorder).getChildren().length===0){this._setState({showHiddenBorder:ee.CENTER});break}if(t.isAdjusting()&&(t.type===re.ADJUST_WEIGHTS||t.type===re.ADJUST_BORDER_SPLIT)){t.type===re.ADJUST_WEIGHTS?this.applyAdjustingWeights(t):this.applyAdjustingBorderSplit(t),this._props.onModelChange&&this._props.onModelChange(this._props.model,t);return}this.redrawLayout(),this._props.onModelChange&&this._props.onModelChange(this._props.model,t)});D(this,"onOverlayBorderPointerDown",t=>{const r=this._props.model.getBorderSet().getBorders().filter(l=>l.isOverlay()&&l.getSelected()!==-1);if(r.length===0||t.target?.closest?.("."+this.getClassName(U.FLEXLAYOUT__POPUP_MENU_CONTAINER)+",."+this.getClassName(U.FLEXLAYOUT__FLOAT_WINDOW)+",."+this.getClassName(U.FLEXLAYOUT__FLOATING_WINDOW_CONTENT)+",."+this.getClassName(U.FLEXLAYOUT__BORDER_TAB_OVERLAY)))return;const o=this.getDomRect();if(!o)return;const n=t.clientX-o.x,i=t.clientY-o.y,a=this._props.model.getRootRow(lt.MAIN_LAYOUT_ID)?.getRect();if(!(!a||!a.contains(n,i)))for(const l of r)l.getContentRect()?.contains(n,i)||this.closeOverlayBorder(l)});D(this,"onOverlayBorderKeyDown",t=>{if(!to(t,this.getKeyMap().closeOverlayBorder))return;const r=this._currentDocument?.activeElement;if(!r)return;const o=this._props.model.getBorderSet().getBorders().filter(n=>n.isOverlay()&&n.getSelected()!==-1);for(const n of o){const i=n.getSelectedNode(),a=this._currentDocument.getElementById(Lt("flexlayout-tab-",i.getId())),l=this._currentDocument.getElementById(Lt("flexlayout-tabbutton-",i.getId()));if(a&&a.contains(r)||r===l){this.closeOverlayBorder(n),t.preventDefault();break}}});D(this,"onTabsetNavKeyDown",t=>{if(t.defaultPrevented)return;const r=this.getKeyMap();let o;if(to(t,r.focusNextTabset))o=1;else if(to(t,r.focusPreviousTabset))o=-1;else return;this.focusAdjacentTabset(o)&&t.preventDefault()});D(this,"updateLayoutMetrics",()=>{if(this._findBorderBarSizeRef.current){const t=this._findBorderBarSizeRef.current.getBoundingClientRect().height;Math.abs(t-this._state.calculatedBorderBarSize)>.5&&this.setState({calculatedBorderBarSize:t})}if(this._findSplitterSizeRef.current){const t=this._findSplitterSizeRef.current.getBoundingClientRect().width;Math.abs(t-this._lastSplitterSize)>.5&&(this._lastSplitterSize=t,this._props.model.setSplitterSize(t),this.redrawLayout())}});D(this,"getClassName",t=>this._props.classNameMapper===void 0?t:this._props.classNameMapper(t));D(this,"onCloseLayout",t=>{this.doAction(re.closePopout(t.getLayoutId()))});this._props=t,this._state=r,this._setState=o,this._orderedTabIds=[],this._orderedTabMoveableIds=[],this._supportsPopout=t.supportsPopout!==void 0?t.supportsPopout:E1,this._popoutURL=t.popoutURL?t.popoutURL:"popout.html",this._icons={...k1,...t.icons},this._layoutId=t.layoutId?t.layoutId:lt.MAIN_LAYOUT_ID,this._mainController=t.mainLayoutController?t.mainLayoutController:this,this._dragDropManager=new u1(this),this._layout=t.model.getLayouts().get(this._layoutId),this._layout.setController(this),this._popoutWindowName=t.popoutWindowName||"Popout Window",this._reLayout=!1}renderLayout(){return this._cachedLayoutDOMRect=void 0,s.jsxs(s.Fragment,{children:[s.jsx(Rf,{controller:this,rowNode:this._props.model.getRootRow(this._layoutId)},"__row__"),s.jsx(bm,{controller:this})]})}renderTabContainers(){const t=new Map;return this._props.model.visitLayoutNodes(this._layoutId,r=>{if(r instanceof Le){const o=r,n=o.isSelected(),i=o.isRendered(),a=o.isEnableRenderOnDemand();(i||n||!a)&&t.set(o.getId(),s.jsx(hm,{controller:this,tabNode:o,selected:n},o.getId()))}}),t}renderTabContents(){const t=new Map;for(const[r,o]of this._props.model.getLayouts())this._props.model.visitLayoutNodes(r,n=>{if(n instanceof Le){const i=n,a=i.isSelected(),l=i.isRendered(),c=i.isEnableRenderOnDemand(),u=i.getParent().getContentRect(),d=a||!c;if(l||d&&u.width>0&&u.height>0){const f=i.getMoveableElement();f.style.overflow=i.isEnableScrollbars()?"auto":"hidden";const p=o.getWindowId()||"",g=i.getId()+(i.isEnableWindowReMount()?p:"");t.set(i.getId(),Vr.createPortal(s.jsx(gm,{controller:this,tabNode:i,windowId:p,visible:d,fullRedrawRevision:this._state.fullRedrawRevision,parentRedrawRevision:this._props.parentRedrawRevision},g),f,g)),i.setRendered(!0)}}});return t}renderDragTabButtons(){const t=[];return this._props.model.visitNodes(r=>{if(r instanceof Le){const o=r;t.push(s.jsx(Em,{controller:this,tabNode:o,dragging:Ll},o.getId()))}}),t}redrawLayout(){this._mainController?.setState(t=>({layoutRedrawRevision:t.layoutRedrawRevision+1}))}redrawLayoutAndTabContent(){this._mainController?.setState(t=>({fullRedrawRevision:t.fullRedrawRevision+1}))}doAction(t){if(this._props.onAction!==void 0){const r=this._props.onAction(t);return r!==void 0?this._props.model.doAction(r):void 0}else return this._props.model.doAction(t)}applyMeasuredGeometry(){this.syncLayoutMetrics(),this.positionTabPanels(),this.isReLayout()&&(this.redrawLayout(),this.setReLayout(!1))}applyAdjustingWeights(t){const r=this._props.model.getNodeById(t.data.nodeId);if(!(r instanceof Ue)){this.redrawLayout();return}const o=t.data.weights,n=r.getChildren();for(let i=0;it.has(i)),n=new Set(o);for(const i of t.keys())n.has(i)||o.push(i);return r.splice(0,r.length,...o),r.map(i=>t.get(i))}checkForBorderToShow(t,r){const o=this.getBoundingClientRect(this._mainRef.current),n=o.getCenter(),i=10,a=100/2;let l=!1;this._props.model.isEnableEdgeDock()&&this._state.showHiddenBorder===ee.CENTER&&(r>n.y-a&&rn.x-a&&t=o.getRight()-i?c=ee.RIGHT:r<=o.y+i?c=ee.TOP:r>=o.getBottom()-i&&(c=ee.BOTTOM)),c!==this._state.showHiddenBorder&&this.setState({showHiddenBorder:c})}closeOverlayBorder(t){const r=t.getSelectedNode();if(r===void 0)return;const o=this._currentDocument,n=o?.getElementById(Lt("flexlayout-tab-",r.getId())),i=!!o&&!!n&&n.contains(o.activeElement);this.doAction(re.selectTab(r.getId())),i&&o.getElementById(Lt("flexlayout-tabbutton-",r.getId()))?.focus()}focusAdjacentTabset(t){const r=this._currentDocument,o=r?.activeElement;if(!r||!o||!this.getRootDiv()?.contains(o))return!1;const n=o.tagName;if(n==="INPUT"||n==="TEXTAREA"||o.isContentEditable||o.closest('[role="menu"]')||this._props.model.getMaximizedTabset(this._layoutId)!==void 0)return!1;const i=[];if(this._props.model.visitLayoutNodes(this._layoutId,u=>{u instanceof Oe&&u.getSelectedNode()!==void 0&&i.push(u)}),i.length<2)return!1;const a=u=>this._measurables.get("tabset:"+u.getId())?.element.contains(o)?!0:!!r.getElementById(Lt("flexlayout-tab-",u.getSelectedNode().getId()))?.contains(o);let l=i.findIndex(a);if(l===-1){const u=this._props.model.getActiveTabset(this._layoutId);l=u!==void 0?i.indexOf(u):0,l===-1&&(l=0)}const c=i[(l+t+i.length)%i.length];return r.getElementById(Lt("flexlayout-tabbutton-",c.getSelectedNode().getId()))?.focus(),this.doAction(re.setActiveTabset(c.getId(),this._layoutId)),!0}registerMeasurable(t,r,o){const n=r+":"+t.getId(),i=this._measurables.get(n);o?this._measurables.set(n,{kind:r,node:t,element:o}):this._measurables.delete(n),r!=="tabbutton"&&(i&&this._geometryResizeObserver?.unobserve(i.element),o&&this._geometryResizeObserver?.observe(o))}setGeometryResizeObserver(t){if(this._geometryResizeObserver=t,t)for(const{kind:r,element:o}of this._measurables.values())r!=="tabbutton"&&t.observe(o)}syncLayoutMetrics(){this._cachedLayoutDOMRect=void 0;let t=!1;for(const{kind:r,node:o,element:n}of this._measurables.values()){if(!n.isConnected)continue;const i=this.getBoundingClientRect(n);switch(r){case"row":case"tabset":i.equalsWhenRounded(o.getRect())||(o.setRect(i),t=!0);break;case"tabstrip":i.equalsWhenRounded(o.getTabStripRect())||(o.setTabStripRect(i),t=!0);break;case"tabsetcontent":{const a=o;if(!isNaN(i.x)&&!a.getContentRect().equalsWhenRounded(i)){const l=a.getContentRect().width>0&&a.getContentRect().height>0;a.setContentRect(i),t=!0,!l&&i.width>0&&i.height>0&&this.setReLayout(!0)}break}case"tabbutton":i.equalsWhenRounded(o.getTabRect())||(o.setTabRect(i),t=!0);break;case"borderheader":i.equalsWhenRounded(o.getRect())||(o.setTabHeaderRect(i),t=!0);break;case"bordercontent":{const a=o;if(!isNaN(i.x)&&i.width>0&&!a.getContentRect().equalsWhenRounded(i)){const l=a.getContentRect().width>0&&a.getContentRect().height>0;a.setContentRect(i),t=!0,!l&&i.height>0&&this.setReLayout(!0)}break}}}return t}registerTabPanel(t,r){r?this._tabPanels.set(t.getId(),{node:t,element:r}):this._tabPanels.delete(t.getId())}positionTabPanels(){for(const{node:t,element:r}of this._tabPanels.values()){const o=t.getParent(),n=o.getContentRect();let i=t.isSelected();o instanceof Oe?this._props.model.getMaximizedTabset(this._layoutId)!==void 0&&!o.isMaximized()&&(i=!1):o instanceof Ke&&(o.isShowing()||(i=!1)),n.positionElement(r),r.style.display=i?"":"none",t.setRect(n),t.setVisible(i)}}addTabWithDragAndDrop(t,r,o){this._dragDropManager.addTabWithDragAndDrop(t,r,o)}moveTabWithDragAndDrop(t,r){this._dragDropManager.moveTabWithDragAndDrop(t,r)}setDragComponent(t,r,o,n){this._dragDropManager.setDragComponent(t,r,o,n)}getMoveablesHome(){return this._moveablesHomeRef.current}getProps(){return this._props}getKeyMap(){return e1(this._props.keyMap)}setProps(t){this._props=t}getState(){return this._state}setStateRaw(t){this._state=t}setState(t){this._setState(t)}setSetState(t){this._setState=t}setLayoutRef(t){this._layoutRef=t}setMoveablesHomeRef(t){this._moveablesHomeRef=t}setFindBorderBarSizeRef(t){this._findBorderBarSizeRef=t}setFindSplitterSizeRef(t){this._findSplitterSizeRef=t}getMainRef(){return this._mainRef}setMainRef(t){this._mainRef=t}getOrderedTabIds(){return this._orderedTabIds}getOrderedTabMoveableIds(){return this._orderedTabMoveableIds}getCurrentDocument(){return this._currentDocument}setCurrentDocument(t){this._currentDocument=t}getCurrentWindow(){return this._currentWindow}setCurrentWindow(t){this._currentWindow=t,t&&!Zr.Windows.has(t)&&Zr.Windows.set(t,Tn())}getWindowId(){if(this.getCurrentWindow())return Zr.Windows.get(this.getCurrentWindow())}isSupportsPopout(){return this._supportsPopout}getPopoutURL(){return this._popoutURL}getIcons(){return this._icons}getDragDropManager(){return this._dragDropManager}getLayoutId(){return this._layoutId}getLayout(){return this._layout}setLayout(t){this._layout=t}getMainController(){return this._mainController}isMainLayout(){return this._layout.isMainLayout()}getPopoutWindowName(){return this._popoutWindowName}isReLayout(){return this._reLayout}setReLayout(t){this._reLayout=t}getBoundingClientRect(t){const r=this.getDomRect();return r?ge.getBoundingClientRect(t).relativeTo(r):ge.empty()}getLayoutRef(){return this._layoutRef.current}getDomRect(){return this._cachedLayoutDOMRect!==void 0?this._cachedLayoutDOMRect:this._layoutRef.current?(this._cachedLayoutDOMRect=ge.fromDomRect(this._layoutRef.current.getBoundingClientRect()),this._cachedLayoutDOMRect):ge.empty()}getRootDiv(){return this._layoutRef.current}getMainElement(){return this._mainRef.current}getFactory(){return this._props.factory}isRealtimeResize(){return this._props.realtimeResize??!1}setEditingTab(t){this.setState({editingTab:t})}getEditingTab(){return this._state.editingTab}getModel(){return this._props.model}getTabDragSpeed(){return this._props.tabDragSpeed?this._props.tabDragSpeed:.3}getScreenRect(t){const r=t.clone(),o=this.getDomRect(),n=this._currentWindow.outerHeight-this._currentWindow.innerHeight,i=this._currentWindow.outerWidth-this._currentWindow.innerWidth,a=n>=0&&n<=200?n:60,l=i>=0&&i<=100?i:2;return r.x=this._currentWindow.screenX+this._currentWindow.scrollX+l/2+o.x+r.x,r.y=this._currentWindow.screenY+this._currentWindow.scrollY+(a-l/2)+o.y+r.y,r.height+=a,r.width+=l,r}getRelativeRect(t){const r=t.clone();if(!this._layout.isMainLayout()){const o=this._layout.getRect();r.x+=o.x,r.y+=o.y}return r}moveWindowToFront(t){this.doAction(re.movePopoutToFront(t))}addTabToTabSet(t,r){if(this._props.model.getNodeById(t)!==void 0)return this.doAction(re.addTab(r,t,ee.CENTER,-1))}addTabToActiveTabSet(t){const r=this._props.model.getActiveTabset(this._layoutId);if(r!==void 0)return this.doAction(re.addTab(t,r.getId(),ee.CENTER,-1))}maximize(t){this.doAction(re.maximizeToggle(t.getId(),this.getLayoutId()))}customizeTab(t,r){this._props.onRenderTab&&this._props.onRenderTab(t,r)}customizeTabSet(t,r){this._props.onRenderTabSet&&this._props.onRenderTabSet(t,r)}i18nName(t,r){let o;return this._props.i18nMapper&&(o=this._props.i18nMapper(t,r)),o===void 0&&(o=t+(r===void 0?"":r)),o}getShowOverflowMenu(){return this._props.onShowOverflowMenu}getTabSetPlaceHolderCallback(){return this._props.onTabSetPlaceHolder}showContextMenu(t,r){this._props.onContextMenu&&this._props.onContextMenu(t,r)}auxMouseClick(t,r){this._props.onAuxMouseClick&&this._props.onAuxMouseClick(t,r)}showOverlay(t){this._showOverlay!==t&&(this._showOverlay=t,this.setState({showOverlay:t}),Sl(!t,this._currentDocument))}showOverlayOnAllWindows(t){for(const[,r]of this._props.model.getLayouts())r.getController()&&r.getController().showOverlay(t)}},D(Zr,"Windows",new WeakMap),Zr),k1={close:s.jsx(Nl,{}),pin:s.jsx(Qv,{}),closeTabset:s.jsx(Nl,{}),closeFloatPopout:s.jsx(Nl,{}),popout:s.jsx(Qu,{}),popoutFloat:s.jsx(om,{}),maximize:s.jsx(em,{}),restore:s.jsx(im,{}),more:s.jsx(tm,{}),edgeArrow:s.jsx(rm,{}),activeTabset:s.jsx(am,{}),dragToDock:s.jsx(nm,{}),popoutFloatWindow:s.jsx(Qu,{})},E1=Xv(),Tm=m.forwardRef((e,t)=>{const r=m.useRef(null),o=m.useRef(e.model),n=m.useRef(0);o.current!==e.model&&(e.model.getAdoptedFromModel()!==o.current&&n.current++,o.current=e.model),Tm.displayName="Layout",m.useImperativeHandle(t,()=>({redraw:()=>{r.current?.redrawLayoutAndTabContent()},addTabToTabSet:(a,l)=>r.current?.addTabToTabSet(a,l),addTabWithDragAndDrop:(a,l,c)=>{r.current?.addTabWithDragAndDrop(a,l,c)},moveTabWithDragAndDrop:(a,l)=>{r.current?.moveTabWithDragAndDrop(a,l)},addTabToActiveTabSet:a=>r.current?.addTabToActiveTabSet(a),setDragComponent:(a,l,c,u)=>{r.current?.setDragComponent(a,l,c,u)},editTabName:a=>{const l=r.current?.getModel().getNodeById(a);l instanceof Le&&l.isEnableRename()&&l.getLayout().getController()?.setEditingTab(l)},getRootDiv:()=>r.current.getRootDiv()}));const i={};return s.jsx(wa,{ref:r,...e,parentRedrawRevision:i},n.current)});const Th=20,T1="bv-nodepack:layout-profiles:v1:",Sf=new Map,ed="bv-layout-session-changed",Rm=e=>`${T1}${e}`;function Lf(e){try{const t=JSON.parse(localStorage.getItem(Rm(e))??"");if(t?.schemaVersion===1&&Array.isArray(t.profiles))return t}catch{}return{schemaVersion:1,profiles:[]}}function Sm(e,t){localStorage.setItem(Rm(e),JSON.stringify(t))}const R1=e=>{const t=e.trim();if(t.length<1||t.length>40)throw new Error("Layout name must contain 1 to 40 characters.");return t};function Rh(e){const t=Lf(e.editorType),r=R1(e.name),o=e.id??crypto.randomUUID();if(t.profiles.find(l=>l.name.localeCompare(r,void 0,{sensitivity:"accent"})===0&&l.id!==o))throw new Error("A layout with this name already exists.");const i={...e,id:o,name:r,schemaVersion:1,updatedAt:new Date().toISOString()},a=t.profiles.some(l=>l.id===o)?t.profiles.map(l=>l.id===o?i:l):[...t.profiles,i];if(a.length>Th)throw new Error(`A maximum of ${Th} layouts can be saved for this editor.`);return Sm(e.editorType,{schemaVersion:1,profiles:a,selectedId:o}),i}function S1(e,t){const r=Lf(e);Sm(e,{...r,profiles:r.profiles.filter(o=>o.id!==t),selectedId:r.selectedId===t?void 0:r.selectedId})}function Ol(e,t,r,o,n=!0){Sf.set(e,{layout:structuredClone(t),status:r,profileId:o}),n&&window.dispatchEvent(new CustomEvent(ed,{detail:{key:e}}))}function Bi(e){const t=Sf.get(e);return t?structuredClone(t):void 0}function L1(e){Sf.delete(e)}function C1(e,t){return e.editorType===t.editorType&&e.editorVersion===t.editorVersion&&e.library===t.library&&e.signature===t.signature}const Sh="flexlayout-react@0.10.5";function N1(e){return{global:{tabEnableClose:!1,tabEnablePopout:!1,tabEnablePopoutIcon:!1,tabEnablePopoutFloatIcon:!0,tabSetMinWidth:180,tabSetMinHeight:130},borders:[],layout:{type:"row",children:e.map(t=>({type:"tabset",weight:t.weight,minWidth:t.minWidth,children:[{type:"tab",id:t.id,name:t.title,component:t.id,enablePopoutFloatIcon:!0}]}))}}}const O1=new Set([re.MOVE_NODE,re.DELETE_TAB,re.DELETE_TABSET,re.RENAME_TAB]),M1=e=>O1.has(e.type)?"modified":"adjusted";function A1(e){L1(e)}function Lm({storageId:e,panels:t,resetSignal:r=0,defaultModel:o,onStatus:n}){const i=JSON.stringify({panels:t.map(f=>`${f.id}:${f.weight}`),defaultModel:o}),a=m.useMemo(()=>o??N1(t),[i]),[l,c]=m.useState(()=>lt.fromJson(Bi(e)?.layout??a)),u=m.useMemo(()=>new Map(t.map(f=>[f.id,f.content])),[t]);m.useEffect(()=>{const f=Bi(e);c(lt.fromJson(f?.layout??a)),n?.(f?.status??"saved")},[a,i,e]),m.useEffect(()=>{r&&(A1(e),c(lt.fromJson(a)),n?.("saved"))},[a,r,e]),m.useEffect(()=>{const f=p=>{if(p.detail?.key!==e)return;const g=Bi(e);g&&(c(lt.fromJson(g.layout)),n?.(g.status))};return window.addEventListener(ed,f),()=>window.removeEventListener(ed,f)},[n,e]);const d=f=>f.type===re.POPOUT_TAB&&f.data.type==="float"&&l.getNodeById(f.data.node)?.getLayoutId()!==lt.MAIN_LAYOUT_ID?void 0:f;return s.jsx("div",{className:"bv-ui-dock flexlayout__theme_dark",children:s.jsx(Tm,{model:l,factory:f=>u.get(f.getComponent()??"")??null,constrainFloatPanels:!0,onAction:d,onModelChange:(f,p)=>{c(f);const g=Bi(e),x=g?.status==="modified"?"modified":M1(p);Ol(e,f.toJson(),x,g?.profileId,!1),n?.(x)}})})}let bo=[];const td=new Set,Cm=()=>td.forEach(e=>e());function jr(e){const t=e.id??`${e.title}:${e.message??""}`,r=bo.findIndex(n=>n.id===t),o={...e,id:t};return bo=r>=0?[...bo.slice(0,r),o,...bo.slice(r+1)]:[...bo,o].slice(-3),Cm(),t}function D1(e){bo=bo.filter(t=>t.id!==e),Cm()}const I1=e=>(td.add(e),()=>td.delete(e)),Lh=()=>bo;function j1(){const e=m.useSyncExternalStore(I1,Lh,Lh),t=m.useCallback(()=>{const r=document.getElementById("bv-global-toast-stack");if(!r)return;const o=[...document.querySelectorAll(".comfyui-bottom-panel,.bottom-panel,.actionbar,[class*='bottom'][class*='toolbar'],#graph-canvas-container [role='toolbar'],#bv-ui-window-shelf")].filter(i=>i.offsetParent!==null).map(i=>i.getBoundingClientRect()).filter(i=>i.bottom>window.innerHeight-160),n=Math.max(16,...o.map(i=>Math.max(0,window.innerHeight-i.top+8)));r.style.setProperty("--bv-toast-bottom",`${n}px`)},[]);return m.useEffect(()=>{const r=o=>{const n=o.detail;n?.title&&jr({title:n.title,message:n.message,tone:n.tone??"neutral",duration:n.duration??4500})};return window.addEventListener("bv-show-toast",r),()=>window.removeEventListener("bv-show-toast",r)},[]),m.useEffect(()=>{t();const r=new ResizeObserver(t),o=new MutationObserver(t);return document.querySelectorAll("body *").forEach(n=>{n.offsetParent!==null&&n.getBoundingClientRect().bottom>window.innerHeight-180&&r.observe(n)}),o.observe(document.body,{childList:!0,subtree:!0}),window.addEventListener("resize",t),()=>{r.disconnect(),o.disconnect(),window.removeEventListener("resize",t)}},[t]),e.length?Vr.createPortal(s.jsx("div",{id:"bv-global-toast-stack",className:"bv-ui bv-density-compact bv-toast-stack bv-global-toast-stack","aria-live":"polite",children:e.map(r=>s.jsx(qw,{tone:r.tone,title:r.title,duration:r.duration,onClose:()=>D1(r.id),children:r.message},r.id))}),document.body):null}const Dr=({children:e,className:t=""})=>s.jsx("svg",{className:t,viewBox:"0 0 24 24","aria-hidden":"true",children:e}),Nm=()=>s.jsx("svg",{className:"bv-brand-cyclone",viewBox:"0 0 32 32","aria-hidden":"true",children:s.jsx("path",{d:"M11.08 2.736a2 2 0 0 1-.286 2.814A12.99 12.99 0 0 0 6 15.64c0 5.525 4.475 10 10 10s10-4.475 10-10a7 7 0 0 0-14 0c0 2.215 1.785 4 4 4s4-1.785 4-4c0-.555-.445-1-1-1s-1 .445-1 1a2 2 0 1 1-4 0c0-2.765 2.235-5 5-5s5 2.235 5 5c0 4.425-3.575 8-8 8s-8-3.575-8-8c0-6.075 4.925-11 11-11s11 4.925 11 11c0 7.735-6.265 14-14 14s-14-6.265-14-14C2 10.313 4.45 5.563 8.266 2.45a2 2 0 0 1 2.814.286"})}),Om=m.createContext({narrow:!1,minimal:!1,menuOverflow:!1}),Mm=()=>m.useContext(Om);function B1(e){const t=e.mode==="workspace",r=m.useRef(null),[o,n]=m.useState(1/0),[i,a]=m.useState(!1),l=m.useRef(null);m.useEffect(()=>{const u=r.current;if(!u)return;const d=new ResizeObserver(f=>n(f[0]?.contentRect.width??u.clientWidth));return d.observe(u),()=>d.disconnect()},[]);const c=m.useMemo(()=>({narrow:o<760,minimal:o<620,menuOverflow:o<520}),[o]);return s.jsx(Om.Provider,{value:c,children:s.jsxs("header",{ref:r,className:`bv-ui-window-header bv-density-compact ${c.narrow?"is-narrow":""} ${c.minimal?"is-minimal":""} ${c.menuOverflow?"is-menu-overflow":""}`.trim(),onPointerDown:e.onPointerDown,children:[s.jsxs("div",{className:"bv-ui-window-identity",children:[s.jsx("span",{className:"bv-ui-window-icon",children:s.jsx(Nm,{})}),s.jsxs("strong",{className:"bv-ui-window-title",children:[s.jsx("span",{className:"bv-ui-window-title-full",children:e.title}),e.shortTitle&&s.jsx("span",{className:"bv-ui-window-title-short",children:e.shortTitle})]}),e.context&&s.jsx("div",{className:"bv-ui-window-context",children:e.context})]}),s.jsx("div",{className:"bv-ui-window-center",children:e.center}),s.jsxs("div",{className:"bv-ui-window-controls",children:[s.jsx("button",{type:"button",className:"bv-ui-window-control",title:"Choose BV window","aria-label":"Choose BV window",onClick:u=>window.dispatchEvent(new CustomEvent(ss,{detail:{anchor:u.currentTarget}})),children:s.jsxs(Dr,{children:[s.jsx("rect",{x:"4",y:"5",width:"7",height:"6",rx:"1"}),s.jsx("rect",{x:"13",y:"5",width:"7",height:"6",rx:"1"}),s.jsx("rect",{x:"4",y:"13",width:"7",height:"6",rx:"1"}),s.jsx("rect",{x:"13",y:"13",width:"7",height:"6",rx:"1"})]})}),e.onMenuVisible&&(c.minimal?s.jsxs("div",{ref:l,className:"bv-window-header-utility",children:[s.jsx("button",{type:"button",className:"bv-ui-window-control","aria-label":"More window actions","aria-expanded":i,onClick:()=>a(u=>!u),children:"•••"}),s.jsx(jo,{open:i,anchor:l,onClose:()=>a(!1),className:"bv-window-navigator-menu",children:s.jsx("button",{type:"button",className:"bv-window-visibility-menu-action",onClick:()=>{e.onMenuVisible?.(!e.menuVisible),a(!1)},children:e.menuVisible?"Hide from BV window menus":"Show in BV window menus"})})]}):s.jsx("button",{type:"button",className:"bv-ui-window-control bv-ui-window-control--visibility",title:e.menuVisible?"Hide this node from BV window menus":"Show this node in BV window menus","aria-label":e.menuVisible?"Hide this node from BV window menus":"Show this node in BV window menus","aria-pressed":e.menuVisible,onClick:()=>e.onMenuVisible?.(!e.menuVisible),children:e.menuVisible?s.jsxs(Dr,{children:[s.jsx("path",{d:"M2.5 12s3.5-5 9.5-5 9.5 5 9.5 5-3.5 5-9.5 5-9.5-5-9.5-5Z"}),s.jsx("circle",{cx:"12",cy:"12",r:"2.5"})]}):s.jsx(Dr,{children:s.jsx("path",{d:"m4 4 16 16M9.5 7.4A10.8 10.8 0 0 1 12 7c6 0 9.5 5 9.5 5a16 16 0 0 1-2.2 2.5M6.2 8.3A15.2 15.2 0 0 0 2.5 12s3.5 5 9.5 5c1 0 2-.2 2.8-.4"})})})),s.jsx("button",{type:"button",className:"bv-ui-window-control",title:"Minimize","aria-label":"Minimize window",onClick:e.onMinimize,children:s.jsx(Dr,{children:s.jsx("path",{d:"M7 16.5h10"})})}),e.allowWorkspace!==!1&&s.jsx("button",{type:"button",className:"bv-ui-window-control",title:t?"Restore floating window":"Maximize to workspace","aria-label":t?"Restore floating window":"Maximize to workspace",onClick:e.onMode,children:t?s.jsxs(Dr,{children:[s.jsx("rect",{x:"4.5",y:"7.5",width:"12",height:"12",rx:"1.5"}),s.jsx("path",{d:"M7.5 7.5v-3h12v12h-3"})]}):s.jsx(Dr,{children:s.jsx("rect",{x:"5",y:"5",width:"14",height:"14",rx:"1.5"})})}),s.jsx("button",{type:"button",className:"bv-ui-window-control bv-ui-window-control--close",title:"Close","aria-label":"Close window",onClick:e.onClose,children:s.jsx(Dr,{children:s.jsx("path",{d:"m7 7 10 10M17 7 7 17"})})})]})]})})}const Li=(e,t)=>{const r=Math.max(280,window.innerWidth-32),o=Math.max(240,window.innerHeight-32),n=Math.min(t.width,420,r),i=Math.min(t.height,o),a=Math.max(n,Math.min(e.width,r)),l=Math.max(i,Math.min(e.height,o));return{x:Math.max(16,Math.min(e.x,window.innerWidth-a-16)),y:Math.max(16,Math.min(e.y,window.innerHeight-l-16)),width:a,height:l}};function xn({open:e,title:t,shortTitle:r,context:o,center:n,children:i,status:a,actions:l,activationToken:c=0,allowWorkspace:u=!0,initialMode:d="floating",initialGeometry:f,minSize:p={width:360,height:240},mode:g,className:x="",bodyClassName:w="",menuVisible:k,onMenuVisible:b,onClose:h,onGeometry:v,onModeChange:_}){const y=r??(t==="BV Regional Editor"?"Reg. Editor":t==="Regional Quick Edit"?"Quick Edit":void 0),T=()=>Li({x:Math.max(16,(window.innerWidth-(f?.width??760))/2),y:Math.max(16,(window.innerHeight-(f?.height??640))/2),width:f?.width??760,height:f?.height??640,...f},p),[S,P]=m.useState(u?d:"floating"),[O,B]=m.useState(!1),[j,M]=m.useState(T),E=g??S,z=m.useRef(null),L=m.useRef(null),R=m.useRef(j),N=m.useRef(f),A=m.useRef();m.useEffect(()=>{R.current=j},[j]),m.useEffect(()=>{e&&B(!1)},[e]),m.useEffect(()=>{const Y=z.current;if(!(!e||!Y))return L.current=document.activeElement instanceof HTMLElement&&!Y.contains(document.activeElement)?document.activeElement:L.current,G0(Y)},[e]),m.useEffect(()=>{const Y=z.current;if(!Y)return;const Q=()=>{B(!1),requestAnimationFrame(()=>Y.focus({preventScroll:!0}))},ne=()=>B(!0);return Y.addEventListener("bv-ui-activate",Q),Y.addEventListener("bv-ui-minimize",ne),()=>{Y.removeEventListener("bv-ui-activate",Q),Y.removeEventListener("bv-ui-minimize",ne)}},[]),m.useEffect(()=>{const Y=z.current;if(!Y)return;const Q=ne=>{const le=ne.detail;u&&le?.mode&&(P(le.mode),_?.(le.mode)),le?.mode==="floating"&&le.geometry&&M(Li(le.geometry,p))};return Y.addEventListener("bv-ui-set-window-state",Q),()=>Y.removeEventListener("bv-ui-set-window-state",Q)},[u,p.height,p.width,_]),m.useEffect(()=>{e&&(B(!1),requestAnimationFrame(()=>z.current?.focus({preventScroll:!0})))},[c,e]),m.useEffect(()=>{const Y=N.current;N.current=f,f&&M(Q=>Li(W0(Q,Y,f),p))},[f?.height,f?.width,f?.x,f?.y,p.height,p.width]),m.useEffect(()=>{if(!e)return;const Y=()=>M(Q=>Li(Q,p));return window.addEventListener("resize",Y),()=>window.removeEventListener("resize",Y)},[p.height,p.width,e]);const W=Y=>{E!=="floating"||Y.button!==0||Y.target.closest("button,input,select,textarea")||(A.current={pointerId:Y.pointerId,startX:Y.clientX,startY:Y.clientY,kind:"move",x:j.x,y:j.y},Y.currentTarget.setPointerCapture(Y.pointerId),Y.preventDefault())},F=Y=>Q=>{E!=="floating"||Q.button!==0||(A.current={pointerId:Q.pointerId,startX:Q.clientX,startY:Q.clientY,kind:"resize",direction:Y,geometry:j},Q.currentTarget.setPointerCapture(Q.pointerId),Q.preventDefault(),Q.stopPropagation())},ie=Y=>{const Q=A.current;if(!Q||Q.pointerId!==Y.pointerId)return;const ne={x:Y.clientX-Q.startX,y:Y.clientY-Q.startY},le={...p,width:Math.min(p.width,420)};M(Ce=>Li(Q.kind==="move"?{...Ce,x:Q.x+ne.x,y:Q.y+ne.y}:V0(Q.geometry,ne,Q.direction,le),p))},X=Y=>{A.current?.pointerId===Y.pointerId&&(A.current=void 0,requestAnimationFrame(()=>v?.(R.current)))};if(!e)return null;const q=E==="workspace"?void 0:{left:j.x,top:j.y,width:j.width,height:j.height},Z=()=>{h(),requestAnimationFrame(()=>L.current?.focus({preventScroll:!0}))};return s.jsxs(s.Fragment,{children:[O&&s.jsx(ec,{title:t,onRestore:()=>B(!1),onClose:Z}),s.jsxs("div",{ref:z,tabIndex:-1,hidden:O,className:`bv-managed-window ${E} ${x}`.trim(),role:"dialog","aria-modal":E==="workspace","aria-label":t,style:q,onPointerDownCapture:()=>z.current&&yh(z.current),onFocusCapture:()=>z.current&&yh(z.current),onPointerMove:ie,onPointerUp:X,onPointerCancel:X,onKeyDown:Y=>{if(Y.key==="Escape"&&![...document.querySelectorAll(".bv-anchored-popover,[role='listbox'],[role='menu']")].some(ne=>ne.offsetParent!==null)){Y.preventDefault(),Y.stopPropagation(),Z();return}Y.stopPropagation()},children:[s.jsxs("div",{className:"bv-managed-window-surface",children:[s.jsx(B1,{title:t,shortTitle:y,context:o,center:n,mode:E,allowWorkspace:u,menuVisible:k,onMenuVisible:b,onMode:()=>{if(!u)return;const Y=E==="workspace"?"floating":"workspace";P(Y),_?.(Y)},onMinimize:()=>B(!0),onClose:Z,onPointerDown:W}),s.jsx("div",{className:`bv-managed-window-body ${w}`.trim(),children:i}),(a||l)&&s.jsx(P1,{status:a??null,actions:l,stacked:E==="floating"&&j.width<700,minimal:E==="floating"&&j.width<470})]}),E==="floating"&&["n","ne","e","se","s","sw","w","nw"].map(Y=>s.jsx("div",{className:`bv-window-resize-handle ${Y}`,"aria-hidden":"true",onPointerDown:F(Y)},Y))]})]})}function P1({status:e,actions:t,warning:r=!1,stacked:o=!1,minimal:n=!1}){return s.jsxs("footer",{className:`bv-ui-window-footer${r?" has-warning":""}${o?" is-stacked":""}${n?" is-minimal":""}`,children:[s.jsx("div",{className:"bv-ui-window-status",children:e}),t&&s.jsx("div",{className:"bv-ui-window-footer-actions",children:t})]})}function Cf({primary:e,secondary:t,overflow:r=[]}){return s.jsxs("div",{className:"bv-footer-action-set",children:[t&&s.jsx("div",{className:"bv-footer-secondary-actions",children:t}),r.length>0&&s.jsx(hf,{label:"More",actions:r,intent:"ghost",density:"compact"}),s.jsx("div",{className:"bv-footer-primary-action",children:e})]})}function ec({title:e,onRestore:t,onClose:r}){const o=m.useMemo(()=>{let n=document.getElementById("bv-ui-window-shelf");return n||(n=document.createElement("div"),n.id="bv-ui-window-shelf",n.className="bv-ui-window-shelf",document.body.append(n)),n},[]);return m.useEffect(()=>{const n="#graph-canvas, .graph-canvas-container, nav, aside, [role='navigation'], .side-tool-bar-container, .side-bar-panel",i=()=>{const f=document.querySelector("#graph-canvas, .graph-canvas-container")?.getBoundingClientRect()??null,p=[...document.querySelectorAll("nav, aside, [role='navigation'], .side-tool-bar-container, .side-bar-panel")].map(x=>x.getBoundingClientRect()),g=H0(f,p,{width:window.innerWidth,height:window.innerHeight});o.style.setProperty("--bv-ui-window-shelf-left",`${g.left}px`),o.style.setProperty("--bv-ui-window-shelf-bottom",`${g.bottom}px`)},a=new ResizeObserver(i),l=new Set,c=()=>document.querySelectorAll(n).forEach(d=>{l.has(d)||(l.add(d),a.observe(d))}),u=new MutationObserver(()=>{c(),i()});return c(),u.observe(document.body,{childList:!0,subtree:!0}),window.addEventListener("resize",i),i(),()=>{u.disconnect(),a.disconnect(),window.removeEventListener("resize",i)}},[o]),m.useEffect(()=>()=>{requestAnimationFrame(()=>{o.childElementCount||o.remove()})},[o]),Vr.createPortal(s.jsxs("div",{className:"bv-ui-window-shelf-item",children:[s.jsxs("button",{type:"button",className:"bv-ui-window-shelf-restore",onClick:t,title:`Restore ${e}`,children:[s.jsx("span",{className:"bv-ui-window-shelf-icon",children:s.jsx(Nm,{})}),s.jsx("span",{children:e})]}),r&&s.jsx("button",{type:"button",className:"bv-ui-window-shelf-close","aria-label":`Close ${e}`,title:`Close ${e}`,onClick:r,children:s.jsx(Dr,{children:s.jsx("path",{d:"m7 7 10 10M17 7 7 17"})})})]}),o)}function Pa({label:e,value:t,options:r,onNavigate:o}){const n=m.useSyncExternalStore(P0,ni,ni),i=n==="keep",a=Mm(),[l,c]=m.useState(!1),u=m.useRef(null),d=r.filter(k=>k.value!==t);if(!d.length)return null;const f=i?"Keep current window when switching. Hold Shift to replace once.":"Replace current window when switching. Hold Shift to keep once.",p=a.minimal,g=a.narrow,x=s.jsx(w0,{className:"bv-window-node-select",label:e,value:"",options:d,onValue:(k,b)=>o(k,b.shiftKey?i:!i)}),w=s.jsxs("button",{type:"button",role:"switch","aria-label":f,"aria-checked":i,className:"bv-window-switch-mode",title:f,onClick:()=>kf(i?"replace":"keep"),children:[s.jsx("span",{className:"bv-toggle-track",children:s.jsx("span",{})}),s.jsx("span",{"aria-hidden":"true",children:i?"Keep":"Replace"})]});return s.jsxs("div",{className:"bv-window-navigator",children:[!p&&x,!g&&w,g&&s.jsxs("div",{ref:u,className:"bv-window-navigator-overflow",children:[s.jsx("button",{type:"button","aria-label":"More window navigation options","aria-expanded":l,onClick:()=>c(k=>!k),children:"•••"}),s.jsx(jo,{open:l,anchor:u,onClose:()=>c(!1),className:"bv-window-navigator-menu",children:s.jsxs("div",{className:"bv-window-navigator-panel",children:[p&&s.jsx("div",{className:"bv-window-navigator-panel-row is-node",children:x}),s.jsxs("div",{className:"bv-window-navigator-panel-row is-mode",children:[s.jsx("span",{children:"Keep current window"}),w]})]})})]})]})}function Am({onClick:e,storageId:t,editorType:r="regional"}){const[o,n]=m.useState(null),[i,a]=m.useState(""),[l,c]=m.useState(0),u=bf();if(!t)return s.jsxs("button",{type:"button",className:"bv-ui-button bv-ui-button--secondary bv-ui-window-reset",title:"Restore the default panel arrangement",onClick:e,children:[s.jsx(Dr,{children:s.jsx("path",{d:"M4.9 9A7.5 7.5 0 1 1 5 15M4 4v5h5"})}),s.jsx("span",{children:"Reset layout"})]});const d=Lf(r),f=Bi(t),p=d.profiles.find(h=>h.id===f?.profileId),g=()=>c(h=>h+1),x=()=>{if(!f)return;const h=Rh({id:o==="rename"?p?.id:void 0,name:i,editorType:r,editorVersion:"1",library:Sh,signature:`${r}:v1`,layout:f.layout});Ol(t,f.layout,"saved",h.id),n(null),g()},w={editorType:r,editorVersion:"1",library:Sh,signature:`${r}:v1`},k=(h,v)=>f?.status==="modified"?u.confirm({title:"Replace modified layout?",message:`Structural panel changes in this session will be discarded when switching to ${h}.`,confirmLabel:"Switch layout",danger:!0,action:v}):v(),b=[{id:"factory",label:"Factory layout",onSelect:()=>k("Factory",e)},...d.profiles.map(h=>{const v=C1(h,w);return{id:h.id,label:`${h.name}${v?"":" · Incompatible"}`,onSelect:()=>k(h.name,()=>{if(!v){e(),jr({title:"Layout could not be loaded",message:"The saved layout belongs to an incompatible editor version. Factory layout was restored.",tone:"warning",duration:5e3});return}Ol(t,h.layout,"saved",h.id)})}}),{id:"save-as",label:"Save as new layout…",disabled:!f,onSelect:()=>{a(""),n("save")}},...p?[{id:"update",label:`Update ${p.name}`,onSelect:()=>{f&&(Rh({...p,layout:f.layout}),Ol(t,f.layout,"saved",p.id),g())}},{id:"rename",label:"Rename layout…",onSelect:()=>{a(p.name),n("rename")}},{id:"delete",label:"Delete layout",danger:!0,onSelect:()=>{S1(r,p.id),e(),g()}}]:[]];return s.jsxs(s.Fragment,{children:[s.jsx(hf,{label:`${p?.name??"Factory"}${f?.status&&f.status!=="saved"?` · ${f.status[0].toUpperCase()}${f.status.slice(1)}`:""}`,icon:s.jsx(Dr,{children:s.jsx("path",{d:"M4 5h16v14H4zM8 5v14M8 10h12"})}),actions:b}),s.jsx(Da,{open:!!o,title:o==="rename"?"Rename layout":"Save layout",onClose:()=>n(null),footer:s.jsx(oe,{intent:"primary",onClick:x,children:o==="rename"?"Rename":"Save layout"}),children:s.jsx(cn,{label:"Layout name",value:i,maxLength:40,onValue:a})}),u.dialog]})}const Dm=new Map;let Im;function _r(e,t){const r=String(t);r&&Dm.set(e,r),r&&e!=="quick"&&(Im=e)}function z1(){return Im}function po(e){return Dm.get(e)}function ds({label:e,value:t,onImport:r,allowImport:o=!0}){const[n,i]=m.useState(!1),[a,l]=m.useState(""),[c,u]=m.useState(""),d=async()=>{try{await navigator.clipboard.writeText(JSON.stringify(t,null,2)),jr({title:"Draft copied",message:`${e} draft JSON was copied to the clipboard.`,tone:"success",duration:4e3})}catch{jr({title:"Clipboard unavailable",message:"Copy the draft from the import/export dialog instead.",tone:"warning",duration:4e3}),l(JSON.stringify(t,null,2)),i(!0)}},f=()=>{try{const g=JSON.parse(a);r(g),i(!1),u("")}catch(g){u(g instanceof Error?g.message:"Invalid draft JSON")}},p=()=>{l(""),u(""),i(!0)};return s.jsxs(s.Fragment,{children:[s.jsx(oe,{intent:"ghost",onClick:d,children:"Copy draft"}),o&&s.jsx(oe,{intent:"ghost",onClick:p,children:"Import draft"}),s.jsx(Da,{open:n,title:`Import ${e} draft`,description:"Imported JSON updates only the editor draft. Save explicitly to update the workflow.",onClose:()=>i(!1),footer:s.jsxs(s.Fragment,{children:[s.jsx(oe,{intent:"ghost",iconOnly:!0,"aria-label":"Paste from clipboard",title:"Paste from clipboard",onClick:async()=>{try{l(await navigator.clipboard.readText())}catch{u("Clipboard permission was not granted.")}},children:"⌘"}),s.jsx(oe,{intent:"primary",onClick:f,children:"Import draft"})]}),children:s.jsx(y0,{label:"Draft JSON",value:a,rows:14,resize:"vertical",error:c,onValue:l})})]})}const Wr=(e,t)=>JSON.stringify(e)===JSON.stringify(t),Po=e=>e?.id??e?.key;function rd(e,t,r,o="draft"){if(Wr(r,e))return{ok:!0,value:structuredClone(t)};if(Wr(t,e))return{ok:!0,value:structuredClone(r)};if(Wr(t,r))return{ok:!0,value:structuredClone(t)};if(Array.isArray(e)&&Array.isArray(t)&&Array.isArray(r)){if(![...e,...t,...r].every(w=>Po(w)!=null))return{ok:!1,reason:`Concurrent list change at ${o}`};const n=e.map(Po),i=t.map(Po),a=r.map(Po),l=!Wr(n,i.filter(w=>n.includes(w))),c=!Wr(n,a.filter(w=>n.includes(w)));if(l&&c&&!Wr(i,a))return{ok:!1,reason:`Concurrent reorder at ${o}`};const u=new Map(e.map(w=>[Po(w),w])),d=new Map(t.map(w=>[Po(w),w])),f=new Map(r.map(w=>[Po(w),w])),p=l?i:a,g=[...p,...i,...a].filter((w,k,b)=>b.indexOf(w)===k),x=[];for(const w of g){const k=u.get(w),b=d.get(w),h=f.get(w);if(k&&b&&!h&&!Wr(k,b))return{ok:!1,reason:`Edited item ${w} was removed externally`};if(k&&!b&&h&&!Wr(k,h))return{ok:!1,reason:`Removed item ${w} changed externally`};if(!b&&!h)continue;if(!k){if(b&&h&&!Wr(b,h))return{ok:!1,reason:`Item ${w} was added differently`};x.push(structuredClone(b??h));continue}if(!b||!h){x.push(structuredClone(b??h));continue}const v=rd(k,b,h,`${o}.${w}`);if(!v.ok)return v;x.push(v.value)}return{ok:!0,value:x}}if(e&&t&&r&&typeof e=="object"&&typeof t=="object"&&typeof r=="object"){const n={};for(const i of new Set([...Object.keys(e),...Object.keys(t),...Object.keys(r)])){const a=rd(e[i],t[i],r[i],`${o}.${i}`);if(!a.ok)return a;n[i]=a.value}return{ok:!0,value:n}}return{ok:!1,reason:`Concurrent value change at ${o}`}}function F1(){const[e,t]=m.useState(sn);m.useEffect(()=>{const o=n=>t(n.detail);return window.addEventListener(ri,o),()=>window.removeEventListener(ri,o)},[]);const r=(o,n)=>ff({...e,controls:e.controls.map(i=>i.id===o?{...i,enabled:n}:i)});return e.controls.length?s.jsx("div",{className:"bv-control-live-list",children:e.controls.map(o=>s.jsx(eo,{label:o.name,checked:o.enabled,onValue:n=>r(o.id,n)},o.id))}):s.jsx(Fr,{tone:"info",title:"No controls configured",children:"Create a control in Configuration before using live workflow states."})}const U1=({open:e,onClose:t,hasControlNodes:r=!0})=>{const[o,n]=m.useState(0),i=sn().controls.length>0,a=m.useMemo(()=>({global:{tabEnableClose:!1,tabEnableDrag:!1,tabEnablePopout:!1,tabEnablePopoutIcon:!1,tabEnableFloat:!1},borders:[],layout:{type:"row",children:[{type:"tabset",selected:i?0:1,children:[{type:"tab",id:"control-center-controls",name:"Controls",component:"controls",enableClose:!1,enableDrag:!1},{type:"tab",id:"control-center-configuration",name:"Configuration",component:"configuration",enableClose:!1,enableDrag:!1}]}]}}),[i]);return s.jsxs(xn,{open:e,title:"BV Control Center",shortTitle:"Control Center",initialGeometry:{width:860,height:640},minSize:{width:420,height:360},onClose:t,status:"Workflow-wide controls are saved automatically.",actions:s.jsx(Am,{storageId:"control-center",editorType:"control-center",onClick:()=>n(l=>l+1)}),children:[!r&&s.jsx(Fr,{tone:"warning",title:"No Control Center nodes in workflow",children:"The workflow configuration is still available. Closing this window makes it unavailable until a Control Center node is added."}),s.jsx(Lm,{storageId:"control-center",resetSignal:o+(i?0:1),defaultModel:a,panels:[{id:"controls",title:"Controls",weight:1,content:s.jsx(F1,{})},{id:"configuration",title:"Configuration",weight:1,content:s.jsx(I0,{})}]})]})},jm=()=>globalThis.__bvSmartPipeEditorBridge??{},Nf=e=>String(e?.type??e?.comfyClass??""),zc=e=>Nf(e)==="BV Smart Pipe Merge"?"merge":"pipe",fs=()=>ct().rootGraph??ct().graph,Ch=()=>Ef(fs(),e=>["BV Smart Pipe","BV Smart Pipe Merge"].includes(Nf(e)));function V1(){const[e,t]=m.useState([]),[r,o]=m.useState(null),[n,i]=m.useState(0),[a,l]=m.useState({}),c=m.useRef(new Map),[u,d]=m.useState(null),f=()=>({mode:"floating",geometry:{x:Math.max(16,(window.innerWidth-860)/2),y:Math.max(16,(window.innerHeight-650)/2),width:860,height:650}}),p=k=>`${k.kind}:${ma(fs(),k.node)}`,g=(k,b)=>c.current.get(k)?.dirty?d({key:k,action:b}):b(),x=(k,b)=>{const h=p(k),v=r,_=()=>{_r(k.kind,ma(fs(),k.node)),t(y=>{const T=b&&v&&v!==h?y.filter(S=>S.key!==v):y;return T.some(S=>S.key===h)?T:[...T,{key:h,target:k}]}),l(y=>({...y,[h]:v&&y[v]?structuredClone(y[v]):y[h]??f()})),o(h),i(y=>y+1)};b&&v&&v!==h?g(v,_):_()},w=k=>g(k,()=>{c.current.delete(k),t(b=>b.filter(h=>h.key!==k)),l(b=>{const h={...b};return delete h[k],h}),o(b=>b===k?null:b)});return m.useEffect(()=>{const k=b=>{const h=b.detail;h?.node&&x({node:h.node,kind:h.kind??zc(h.node)},ni()==="replace")};return window.addEventListener("bv-open-smart-pipe-editor",k),()=>window.removeEventListener("bv-open-smart-pipe-editor",k)}),s.jsxs(s.Fragment,{children:[e.map(k=>{const b=a[k.key]??f();return s.jsx(W1,{sessionKey:k.key,target:k.target,open:k.key===r,activation:n,presentation:b,onPresentation:h=>l(v=>({...v,[k.key]:h})),onActions:h=>c.current.set(k.key,h),onClose:()=>w(k.key),onRemap:h=>t(v=>v.map(_=>_.key===k.key?{..._,target:{node:h,kind:zc(h)}}:_)),onNavigate:(h,v)=>x({node:h,kind:zc(h)},v)},k.key)}),e.filter(k=>k.key!==r).map(k=>s.jsx(ec,{title:`${k.target.kind==="merge"?"Smart Pipe Merge":"Smart Pipe Editor"} · ${k.target.node.title||`#${k.target.node.id}`}`,onRestore:()=>x(k.target,!1),onClose:()=>w(k.key)},`shelf:${k.key}`)),s.jsx(gf,{open:!!u,editorName:"Smart Pipe editor",onKeep:()=>d(null),onDiscard:()=>{const k=u;k&&c.current.get(k.key)?.discard(),d(null),k?.action()},onSave:()=>{const k=u;k&&c.current.get(k.key)?.save(),d(null),k?.action()}})]})}function W1({sessionKey:e,target:t,open:r,activation:o,presentation:n,onPresentation:i,onActions:a,onClose:l,onRemap:c,onNavigate:u}){const d=jm()[t.kind],f=m.useMemo(()=>d?.read(t.node)??{},[d,t.node]),p=Ks(f),g=p.value;qs(p);const x=m.useRef(structuredClone(f)),w=m.useRef(!1),[k,b]=m.useState(null),h=m.useMemo(()=>ma(fs(),t.node),[t.node]);m.useEffect(()=>{const j=()=>{const M=Ch().find(L=>L.key===h);if(!M){b("missing");return}if(M.node!==t.node){c(M.node);return}if(w.current)return;const E=d?.read(t.node)??{};if(JSON.stringify(E)===JSON.stringify(x.current))return;if(!p.canUndo){x.current=structuredClone(E),p.replace(E,!0),b(null);return}const z=rd(x.current,g,E);z.ok?(x.current=structuredClone(E),p.replace(z.value)):b(z.reason)};return Jr().addEventListener("graphChanged",j),()=>Jr().removeEventListener("graphChanged",j)},[d,g,p.canUndo,p.replace,c,t.node,h]);const v=hi(t.node),_=Ch(),y=_.filter(j=>vn(j.node)).map(j=>({value:j.key,label:`${j.breadcrumb?`${j.breadcrumb} › `:""}${j.node.title||Nf(j.node)} · #${j.node.id}`})),T=j=>p.commit(M=>(j(M),M)),S=t.kind==="pipe"?d?.validation?.(t.node,g)??[]:[],P=()=>{w.current=!0;try{d?.save(t.node,g);const j=d?.read(t.node)??g;x.current=structuredClone(j),p.replace(j,!0),b(null)}finally{w.current=!1}},O=()=>{const j=d?.read(t.node)??{};x.current=structuredClone(j),p.replace(j,!0),b(null)};m.useEffect(()=>{a({dirty:p.canUndo,save:P,discard:O})},[d,g,p.canUndo,p.replace,a,e,t.node]);const B=s.jsx(Pa,{label:"Smart Pipe node",value:_.find(j=>j.node===t.node)?.key??"",options:y,onNavigate:(j,M)=>{const E=_.find(z=>z.key===j);E&&u(E.node,M)}});return s.jsx(xn,{open:r,activationToken:o,title:t.kind==="merge"?"Smart Pipe Merge":"Smart Pipe Editor",shortTitle:"Smart Pipe",menuVisible:v,onMenuVisible:j=>mn(t.node,j),context:B,mode:n.mode,initialGeometry:n.geometry,onModeChange:j=>i({...n,mode:j}),onGeometry:j=>i({...n,geometry:j}),minSize:{width:420,height:360},onClose:l,status:S.length?"Required inputs missing":p.canUndo?"Unsaved changes":"Saved",actions:s.jsx(Cf,{primary:s.jsx(oe,{intent:"primary",onClick:P,children:"Save"}),secondary:s.jsxs(s.Fragment,{children:[s.jsx(oe,{disabled:!p.canUndo,onClick:O,children:"Discard"}),s.jsx(ds,{label:t.kind==="merge"?"Smart Pipe Merge":"Smart Pipe",value:{schema:"bv.editor-draft",version:1,type:t.kind,data:g},onImport:j=>{if(j?.schema!=="bv.editor-draft"||j?.version!==1||j?.type!==t.kind||!j?.data)throw new Error("Draft type or version does not match this editor.");p.replace(j.data)}})]}),overflow:[{id:"undo",label:"Undo",disabled:!p.canUndo,onSelect:p.undo},{id:"redo",label:"Redo",disabled:!p.canRedo,onSelect:p.redo}]}),children:k?s.jsxs(Fr,{tone:"danger",title:k==="missing"?"Node no longer exists":"Smart Pipe changed externally",children:[k==="missing"?"This draft cannot be saved because its workflow node was removed.":"An external change could not be migrated safely. Reload the editor to discard the incompatible draft.",s.jsxs("div",{className:"bv-callout-actions",children:[s.jsx(ds,{label:t.kind==="merge"?"Smart Pipe Merge":"Smart Pipe",value:{schema:"bv.editor-draft",version:1,type:t.kind,data:g},onImport:()=>{},allowImport:!1}),s.jsx(oe,{onClick:()=>{if(k==="missing")l();else{const j=d?.read(t.node)??{};x.current=structuredClone(j),p.replace(j,!0),b(null)}},children:k==="missing"?"Close window":"Reload editor"})]})]}):t.kind==="pipe"?s.jsx(H1,{node:t.node,draft:g,update:T}):s.jsx($1,{draft:g,update:T})})}function H1({node:e,draft:t,update:r}){const o=jm().pipe,[n,i]=m.useState(()=>o?.predecessor(e)??{value:"Start new pipe",options:[]}),a=o?.validation?.(e,t)??[];m.useEffect(()=>{const f=()=>i(o?.predecessor(e)??{value:"Start new pipe",options:[]});Jr().addEventListener("graphChanged",f);const p=window.setInterval(f,750);return()=>{Jr().removeEventListener("graphChanged",f),window.clearInterval(p)}},[o,e]);const l=t.definition?.localSlots??[],c=t.projection?.inheritedSlots??[],u=[...l.map((f,p)=>({id:f.id,title:f.name||"New slot",description:"Local · input required",summary:f.type||"*",content:s.jsxs("div",{className:"bv-ui-stack",children:[s.jsx(cn,{label:"Name",value:f.name??"",onValue:g=>r(x=>{x.definition.localSlots[p].name=g})}),s.jsx(cn,{label:"Type",value:f.type??"*",onValue:g=>r(x=>{x.definition.localSlots[p].type=g||"*"})}),s.jsx(eo,{label:"Expose output",checked:!!f.showOutput,onValue:g=>r(x=>{x.definition.localSlots[p].showOutput=g})})]})})),...c.map((f,p)=>({id:f.id,title:f.name||f.id,description:"Inherited override",content:s.jsxs("div",{className:"bv-ui-stack",children:[s.jsx(eo,{label:"Expose input",checked:!!f.showInput,onValue:g=>r(x=>{x.projection.inheritedSlots[p].showInput=g})}),s.jsx(eo,{label:"Expose output",checked:!!f.showOutput,onValue:g=>r(x=>{x.projection.inheritedSlots[p].showOutput=g})})]})}))],d=()=>r(f=>{f.definition.localSlots.push({id:crypto.randomUUID(),name:"new_slot",ordinal:f.definition.nextOrdinal++,type:"*",showInput:!0,showOutput:!1})});return s.jsxs("div",{className:"bv-ui-stack",children:[s.jsx(qe,{label:"Pipe predecessor",value:n.value,options:n.options.length?n.options:[{value:n.value,label:n.value}],onValue:f=>{o?.setPredecessor(e,f),i(o?.predecessor(e)??{value:f,options:n.options})}}),a.length>0&&s.jsx(Fr,{tone:"danger",title:"Required Smart Pipe inputs are missing",children:a.map(f=>s.jsx("div",{children:f.message},f.id))}),s.jsx(oe,{onClick:d,children:"Add slot"}),u.length?s.jsx(Ia,{items:u,onReorder:f=>r(p=>{const g=new Map(p.definition.localSlots.map(x=>[x.id,x]));p.definition.localSlots=f.map(x=>g.get(x.id)).filter(Boolean)}),onRemove:f=>r(p=>{p.definition.localSlots=p.definition.localSlots.filter(g=>g.id!==f),p.projection.inheritedSlots=p.projection.inheritedSlots.filter(g=>g.id!==f)})}):s.jsx(Ys,{title:"No slots",description:"Add a local slot or connect a predecessor."})]})}function $1({draft:e,update:t}){const r=e.sources??[],[o,n]=m.useState(""),i=r.map(c=>({id:c.key,title:c.label||c.key,description:c.mode==="wired"?"Wired":"Wireless"})),a=e.candidates?.find(c=>c.address===o),l=()=>{a&&(t(c=>c.sources.push({key:`pipe_${String(c.sources.length+1).padStart(3,"0")}`,mode:"wireless",address:a.address,label:a.label})),n(""))};return s.jsxs("div",{className:"bv-ui-stack",children:[s.jsxs("div",{className:"bv-ui-inline-footer bv-smart-pipe-merge-source",children:[s.jsx(qe,{label:"Wireless source",value:o,options:(e.candidates??[]).map(c=>({value:c.address,label:c.label})),onValue:n}),s.jsx(oe,{disabled:!a,onClick:l,children:"Add"})]}),i.length?s.jsx(Ia,{items:i,onReorder:c=>t(u=>{const d=new Map(u.sources.map(f=>[f.key,f]));u.sources=c.map(f=>d.get(f.id)).filter(Boolean)}),onRemove:c=>t(u=>{u.sources=u.sources.filter(d=>d.key!==c)})}):s.jsx(Ys,{title:"No merge sources",description:"Connect a pipe or add a wireless source."})]})}const Y1=`:root{--bv-primary-color: #1345b7;--bv-secondary-color: #24212b;--bv-text-color: #f2eef8;--bv-accent-color: #d35d71;--bv-bg-color: #1e1c24;--bv-border-color: rgba(231,225,247,.2);--bv-muted-text-color: #aaa2b5;--bv-layer-window:1400;--bv-layer-shelf:1410;--bv-layer-flyout:1500;--bv-layer-modal:1550;--bv-layer-toast:1600}:root.comfy-theme-light #bv-root{--bv-primary-color: #1345b7;--bv-secondary-color: #34495e;--bv-text-color: #2c3e50;--bv-accent-color: #c0392b;--bv-bg-color: #ecf0f1;--bv-border-color: #bdc3c7;--bv-muted-text-color: #7f8c8d}.bv-modal{position:fixed;inset:0;z-index:var(--bv-layer-modal);display:grid;place-items:center;padding:24px;background:#0009;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;color:var(--bv-text-color)}.bv-modal *{box-sizing:border-box}:root{--bv-ui-scale:1.125}:root.bv-ui-size-compact{--bv-ui-scale:1}:root.bv-ui-size-default{--bv-ui-scale:1.125}:root.bv-ui-size-large{--bv-ui-scale:1.25}.bv-ui,#bv-root,.bv-ui-portal,.bv-completion-popup{--bv-ui-bg:#121116;--bv-ui-surface:#1e1c24;--bv-ui-surface-raised:#24212b;--bv-ui-input:#17161b;--bv-ui-text:#f2eef8;--bv-ui-muted:#aaa2b5;--bv-ui-border:rgba(231,225,247,.14);--bv-ui-border-hover:rgba(231,225,247,.25);--bv-ui-accent:#1345b7;--bv-ui-accent-hover:#4c74c9;--bv-ui-accent-light:#5a7dcd;--bv-ui-accent-soft:#b2c2e6;--bv-ui-accent-rgb:19,69,183;--bv-ui-danger:#d35d71;--bv-ui-warning:#e9b65f;--bv-ui-success:#55c994;--bv-ui-control-height-comfortable:calc(42px * var(--bv-ui-scale));--bv-ui-control-height-compact:calc(30px * var(--bv-ui-scale));--bv-ui-control-height:var(--bv-ui-control-height-compact);--bv-ui-field-gap-comfortable:calc(6px * var(--bv-ui-scale));--bv-ui-field-gap-compact:calc(4px * var(--bv-ui-scale));--bv-ui-field-gap:var(--bv-ui-field-gap-compact);--bv-ui-content-padding-comfortable:calc(11px * var(--bv-ui-scale));--bv-ui-content-padding-compact:calc(8px * var(--bv-ui-scale));--bv-ui-content-padding:var(--bv-ui-content-padding-compact);--bv-ui-row-height-comfortable:calc(38px * var(--bv-ui-scale));--bv-ui-row-height-compact:calc(30px * var(--bv-ui-scale));--bv-ui-row-height:var(--bv-ui-row-height-compact);--bv-ui-textarea-height-comfortable:calc(100px * var(--bv-ui-scale));--bv-ui-textarea-height-compact:calc(76px * var(--bv-ui-scale));--bv-ui-textarea-height:var(--bv-ui-textarea-height-compact);--bv-ui-check-size-comfortable:calc(18px * var(--bv-ui-scale));--bv-ui-check-size-compact:calc(16px * var(--bv-ui-scale));--bv-ui-check-size:var(--bv-ui-check-size-compact);--bv-ui-radius-sm:calc(2px * var(--bv-ui-scale));--bv-ui-radius:calc(4px * var(--bv-ui-scale));--bv-ui-radius-lg:calc(6px * var(--bv-ui-scale));color:var(--bv-ui-text);font:calc(12px * var(--bv-ui-scale))/1.45 system-ui,-apple-system,"Segoe UI",sans-serif}.bv-density-comfortable{--bv-ui-control-height:var(--bv-ui-control-height-comfortable);--bv-ui-field-gap:var(--bv-ui-field-gap-comfortable);--bv-ui-content-padding:var(--bv-ui-content-padding-comfortable);--bv-ui-row-height:var(--bv-ui-row-height-comfortable);--bv-ui-textarea-height:var(--bv-ui-textarea-height-comfortable);--bv-ui-check-size:var(--bv-ui-check-size-comfortable)}.bv-density-compact{--bv-ui-control-height:var(--bv-ui-control-height-compact);--bv-ui-field-gap:var(--bv-ui-field-gap-compact);--bv-ui-content-padding:var(--bv-ui-content-padding-compact);--bv-ui-row-height:var(--bv-ui-row-height-compact);--bv-ui-textarea-height:var(--bv-ui-textarea-height-compact);--bv-ui-check-size:var(--bv-ui-check-size-compact)}:is(.bv-ui,#bv-root,.bv-ui-portal),:is(.bv-ui,#bv-root,.bv-ui-portal) *,:is(.bv-ui,#bv-root,.bv-ui-portal) *:before,:is(.bv-ui,#bv-root,.bv-ui-portal) *:after{box-sizing:border-box}:is(.bv-ui,#bv-root,.bv-ui-portal) :where(button,input,select,textarea){box-sizing:border-box;margin:0;font:inherit;color:inherit;letter-spacing:inherit}:is(.bv-ui,#bv-root,.bv-ui-portal) :where(button){appearance:none}.bv-ui-dialog{width:min(680px,calc(100vw - 32px));max-height:min(86vh,900px);margin:auto;padding:0;overflow:hidden;color:var(--bv-ui-text);background:var(--bv-ui-surface);border:1px solid var(--bv-ui-border-hover);border-radius:var(--bv-ui-radius-lg);box-shadow:0 28px 90px #000c}.bv-ui-dialog--small{width:min(480px,calc(100vw - 32px))}.bv-ui-dialog--large{width:min(1040px,calc(100vw - 32px))}.bv-ui-dialog::backdrop{background:#08070a9e}.bv-ui-overlay{position:fixed;z-index:var(--bv-layer-modal);inset:0;display:grid;place-items:center;padding:16px;background:#08070a9e}.bv-ui-overlay--modeless{pointer-events:none;place-items:start end;background:transparent}.bv-ui-overlay--modeless>.bv-ui-dialog{pointer-events:auto}.bv-ui-dialog__header{display:flex;align-items:flex-start;gap:16px;padding:calc(15px * var(--bv-ui-scale)) calc(17px * var(--bv-ui-scale));background:var(--bv-ui-surface-raised);border-bottom:1px solid var(--bv-ui-border)}.bv-ui-dialog__header>div{min-width:0;flex:1}.bv-ui-dialog__header h2,.bv-ui-dialog__header p{margin:0}.bv-ui-dialog__header h2{font-size:calc(16px * var(--bv-ui-scale));line-height:1.3}.bv-ui-dialog__header p{margin-top:4px;color:var(--bv-ui-muted);font-size:calc(11px * var(--bv-ui-scale))}.bv-ui-dialog__body{display:grid;gap:calc(13px * var(--bv-ui-scale));max-height:calc(86vh - 132px);padding:calc(17px * var(--bv-ui-scale));overflow:auto}.bv-ui-dialog__footer{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:calc(8px * var(--bv-ui-scale));padding:calc(11px * var(--bv-ui-scale)) calc(17px * var(--bv-ui-scale));background:var(--bv-ui-surface-raised);border-top:1px solid var(--bv-ui-border)}.bv-ui-button{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:var(--bv-ui-control-height);padding:0 calc(13px * var(--bv-ui-scale));color:var(--bv-ui-text);background:var(--bv-ui-surface-raised);border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius);cursor:pointer;transition:background-color .12s ease,border-color .12s ease,transform .08s ease}.bv-ui-button:hover:not(:disabled){background:#302d39;border-color:var(--bv-ui-border-hover)}.bv-ui-button:active:not(:disabled){transform:translateY(1px)}.bv-ui-button:focus-visible{outline:3px solid rgba(var(--bv-ui-accent-rgb),.25);outline-offset:2px}.bv-ui-button:disabled{opacity:.43;cursor:not-allowed}.bv-ui-button--primary{background:var(--bv-ui-accent);border-color:var(--bv-ui-accent-hover)}.bv-ui-button--primary:hover:not(:disabled){background:var(--bv-ui-accent-hover)}.bv-ui-button--ghost{color:var(--bv-ui-muted);background:transparent;border-color:transparent}.bv-ui-button--ghost:hover:not(:disabled){color:var(--bv-ui-text);background:#ffffff0f}.bv-ui-button--danger{background:#d35d7121;border-color:#d35d7152;color:#f19aa8}.bv-ui-button--icon{width:var(--bv-ui-control-height);padding:0;font-size:calc(20px * var(--bv-ui-scale));line-height:1}.bv-ui-field{display:grid;gap:calc(6px * var(--bv-ui-scale));min-width:0}.bv-ui-field__label{color:var(--bv-ui-muted);font-size:calc(11px * var(--bv-ui-scale))}.bv-ui-field__description{color:var(--bv-ui-muted);font-size:calc(10px * var(--bv-ui-scale));line-height:1.4}.bv-ui .bv-ui-field input,.bv-ui .bv-ui-field select,.bv-ui .bv-ui-field textarea{width:100%;min-height:var(--bv-ui-control-height);padding:0 calc(11px * var(--bv-ui-scale));color:var(--bv-ui-text);background:var(--bv-ui-input);border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius);outline:0}.bv-ui .bv-ui-field textarea{min-height:120px;padding-block:10px;resize:vertical}.bv-ui .bv-ui-field input:focus,.bv-ui .bv-ui-field select:focus,.bv-ui .bv-ui-field textarea:focus{border-color:var(--bv-ui-accent);box-shadow:0 0 0 3px rgba(var(--bv-ui-accent-rgb),.18)}.bv-ui-status{min-height:1.45em;margin:0;color:var(--bv-ui-muted);font-size:calc(10px * var(--bv-ui-scale))}.bv-ui-status--error{color:#f19aa8}.bv-ui-card-list{display:grid;gap:calc(10px * var(--bv-ui-scale))}.bv-ui-card-list>.bv-detailer-card{background:#12111675;border-color:var(--bv-ui-border);border-radius:var(--bv-ui-radius-lg)}.bv-ui-stack{display:grid;gap:calc(13px * var(--bv-ui-scale));min-width:0}.bv-ui-inline-footer{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:calc(8px * var(--bv-ui-scale));padding-top:calc(12px * var(--bv-ui-scale));border-top:1px solid var(--bv-ui-border)}.bv-smart-pipe-merge-source{align-items:end;justify-content:flex-start}.bv-smart-pipe-merge-source>.bv-control-field{flex:1 1 260px;min-width:min(260px,100%)}.bv-smart-pipe-merge-source>.bv-button{flex:0 0 auto}.inspector-tabs{position:sticky;z-index:3;top:0;display:flex;align-items:stretch;gap:2px;min-height:34px;padding:0 8px;background:var(--bv-ui-surface-raised);border-bottom:1px solid var(--bv-ui-border)}.inspector-tabs button{position:relative;min-width:0;min-height:34px;padding:0 10px;overflow:hidden;color:var(--bv-ui-muted);text-overflow:ellipsis;white-space:nowrap;background:transparent!important;border:0!important;border-radius:0!important;box-shadow:none!important;cursor:pointer}.inspector-tabs button:hover:not(:disabled){color:var(--bv-ui-text);background:#ffffff09!important}.inspector-tabs button[aria-selected=true]{color:var(--bv-ui-text)}.inspector-tabs button[aria-selected=true]:after{content:"";position:absolute;right:0;bottom:-1px;left:0;height:2px;background:var(--bv-ui-accent)}.inspector-tabs button:disabled{opacity:.38;cursor:not-allowed}.inspector-tab-panel[hidden]{display:none}.inspector-tab-panel{min-width:0}:root.bv-ui-reduced-effects .bv-ui *,:root.bv-ui-reduced-effects .bv-ui *:before,:root.bv-ui-reduced-effects .bv-ui *:after,:root.bv-ui-reduced-effects #bv-root *,:root.bv-ui-reduced-effects #bv-root *:before,:root.bv-ui-reduced-effects #bv-root *:after{animation:none!important;transition:none!important;backdrop-filter:none!important;filter:none!important}.bv-regional-dock-host{display:block!important;min-width:0;min-height:0}.bv-ui-dock{position:relative;width:100%;height:100%;min-width:0;min-height:0;overflow:hidden;--flexlayout-font-family:system-ui,-apple-system,"Segoe UI",sans-serif;--flexlayout-font-size:calc(12px * var(--bv-ui-scale));--flexlayout-color-text:var(--bv-ui-text);--flexlayout-color-background:var(--bv-ui-input);--flexlayout-color-base:var(--bv-ui-input);--flexlayout-color-1:var(--bv-ui-surface);--flexlayout-color-2:var(--bv-ui-surface-raised);--flexlayout-color-3:#20283a;--flexlayout-color-4:#263655;--flexlayout-color-5:#0a2665;--flexlayout-color-6:#0d3080;--flexlayout-color-focus:var(--bv-ui-accent);--flexlayout-color-icon:var(--bv-ui-muted);--flexlayout-color-splitter:rgba(231,225,247,.08);--flexlayout-color-splitter-hover:#4c74c9;--flexlayout-color-splitter-drag:#5a7dcd;--flexlayout-color-splitter-handle:#b2c2e6;--flexlayout-color-drag1:#7d97d7;--flexlayout-color-drag2:#5a7dcd;--flexlayout-color-drag1-background:rgba(var(--bv-ui-accent-rgb),.2);--flexlayout-color-drag2-background:rgba(var(--bv-ui-accent-rgb),.18);--flexlayout-color-drag-rect-border:#5a7dcd;--flexlayout-color-drag-rect-background:var(--bv-ui-surface-raised);--flexlayout-color-drag-rect:var(--bv-ui-text);--flexlayout-color-edge-marker:rgba(var(--bv-ui-accent-rgb),.72);--flexlayout-color-edge-icon:#fff;--flexlayout-color-toolbar-button-hover:rgba(var(--bv-ui-accent-rgb),.16);--flexlayout-splitter-size:9px;--flexlayout-splitter-active-size:13px;--flexlayout-splitter-handle-visibility:visible}.bv-ui-dock .flexlayout__splitter{transition:background-color .12s ease,box-shadow .12s ease}.bv-ui-dock .flexlayout__splitter:hover{box-shadow:0 0 12px rgba(var(--bv-ui-accent-rgb),.32)}.bv-ui-dock .flexlayout__splitter_handle_horz{width:2px;height:34px;opacity:.72}.bv-ui-dock .flexlayout__splitter_handle_vert{width:34px;height:2px;opacity:.72}.bv-ui-dock .flexlayout__tabset_tabbar_outer{height:calc(37px * var(--bv-ui-scale));padding:calc(8px * var(--bv-ui-scale)) 6px 0;background:var(--bv-ui-surface-raised);border-bottom:1px solid var(--bv-ui-border)}.bv-ui-dock .flexlayout__tabset_tabbar_inner{height:calc(29px * var(--bv-ui-scale));gap:2px;align-items:stretch}.bv-ui-dock .flexlayout__tab_button{position:relative;min-height:calc(29px * var(--bv-ui-scale));padding:0 calc(10px * var(--bv-ui-scale));color:var(--bv-ui-muted);background:transparent;border:1px solid transparent;border-bottom:0;border-radius:var(--bv-ui-radius-sm) var(--bv-ui-radius-sm) 0 0}.bv-ui-dock .flexlayout__tab_button--selected{color:var(--bv-ui-text);background:#fff1;border-color:#ffffff0b}.bv-ui-dock .flexlayout__tab_button--selected:after{content:"";position:absolute;right:-1px;bottom:-1px;left:-1px;height:2px;background:var(--bv-ui-accent)}.bv-ui-dock .flexlayout__tab_toolbar_button{width:29px;height:29px;padding:6px;color:var(--bv-ui-muted);border:0;background:transparent}.bv-ui-dock .flexlayout__float_window_content .flexlayout__tab_toolbar_button-float{display:none}.bv-ui-dock .flexlayout__tab{overflow:hidden;background:var(--bv-ui-surface)}.bv-ui-dock .bv-regional-work,.bv-ui-dock aside{width:100%;height:100%;min-width:0;min-height:0}.bv-dialog{width:min(900px,92vw);max-height:84vh}.bv-rack{width:100%;max-height:84vh;overflow:auto;padding:calc(18px * var(--bv-ui-scale));border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius-lg);background:var(--bv-ui-surface);box-shadow:0 18px 60px #0009}.bv-rack header,.bv-rack footer,.bv-control-title,.bv-assignments>div{display:flex;align-items:center;gap:10px}.bv-rack header{justify-content:space-between;border-bottom:1px solid #ffffff20;margin-bottom:16px}.bv-rack h2{margin:0}.bv-rack p{margin-top:4px;color:var(--bv-muted-text-color)}.bv-force{display:flex;gap:8px;padding:10px 12px;background:#ffffff08;border-radius:var(--bv-ui-radius)}.bv-controls{display:grid;gap:12px;margin:16px 0}.bv-control-card{border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius-lg);padding:calc(12px * var(--bv-ui-scale));background:#ffffff09}.bv-control-title input{flex:1;font-weight:650}.bv-control-title span{color:var(--bv-muted-text-color)}.bv-assignments{display:grid;gap:6px;margin:10px 0}.bv-assignments>div span{flex:1}.bv-assignments>div span small{display:block;margin-top:3px;color:#ffbd66}.bv-assignments .conflict{border-left:2px solid #ffbd66;padding-left:8px}.bv-assignments .unresolved{color:#ff9f7a}.bv-rack input,.bv-rack select,.bv-rack button{min-height:var(--bv-ui-control-height);color:inherit;background:var(--bv-ui-input);border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius);padding:7px 9px}.bv-rack button{cursor:pointer}.bv-rack button.primary{background:var(--bv-ui-accent);border-color:var(--bv-ui-accent-hover)}.bv-rack footer{justify-content:flex-end}.bv-regional-shell{position:fixed;z-index:var(--bv-layer-window);box-sizing:border-box;display:flex;flex-direction:column;min-width:0;min-height:0;resize:none;overflow:hidden;color:var(--bv-ui-text);background:var(--bv-ui-surface);border:1px solid var(--bv-ui-border-hover);border-radius:var(--bv-ui-radius-lg);box-shadow:0 20px 70px #000b;font:calc(12px * var(--bv-ui-scale))/1.4 system-ui,-apple-system,"Segoe UI",sans-serif}.bv-regional-shell.floating{resize:both;box-shadow:0 14px 48px #000c}.bv-regional-shell *{box-sizing:border-box}.bv-regional-shell header,.bv-regional-shell nav,.bv-regional-shell footer{display:flex;align-items:center;gap:8px;padding:9px 12px;border-bottom:1px solid #ffffff18}.bv-regional-shell header strong{font-size:16px}.bv-regional-shell .window-drag-handle{display:flex;flex:1;align-items:center;justify-content:center;gap:6px;min-width:150px;padding:4px 10px;border-radius:var(--bv-ui-radius-sm)}.bv-regional-shell .window-drag-handle>span{color:var(--bv-muted-text-color);font-size:18px}.bv-regional-shell.floating header,.bv-regional-shell.floating .window-drag-handle{cursor:move;user-select:none;touch-action:none}.bv-regional-shell.floating .window-drag-handle:hover{background:#ffffff0b}.bv-regional-shell nav .spacer{flex:1}.bv-brush-options{display:flex;align-items:center;gap:14px;padding:7px 12px;border-bottom:1px solid #ffffff18;background:#ffffff05}.bv-brush-options label{display:flex;align-items:center;gap:6px}.bv-brush-options input[type=range]{width:110px;padding:0}.bv-brush-options output{min-width:48px;color:var(--bv-muted-text-color)}.bv-regional-shell main{display:grid;grid-template-columns:190px minmax(300px,1fr) 290px;flex:1;min-height:0}.bv-regional-shell aside{overflow:auto;padding:10px;border-right:1px solid #ffffff18}.bv-regional-shell .inspector{display:grid;align-content:start;gap:10px;border:0;border-left:1px solid #ffffff18}.bv-regional-shell .inspector label{display:grid;gap:4px}.region-row{display:flex;align-items:center;gap:8px;margin-top:6px;padding:7px;border:1px solid transparent;border-radius:var(--bv-ui-radius-sm);cursor:pointer}.region-row.selected{border-color:var(--bv-primary-color);background:#ffffff0b}.region-row i{width:12px;height:12px;border-radius:50%}.region-row span{flex:1;overflow:hidden;text-overflow:ellipsis}.region-row button,.geometry-row button{padding:2px 4px;border:0;background:transparent}.region-group{border:1px solid transparent;border-radius:var(--bv-ui-radius);margin-top:6px}.region-group.selected{border-color:#fff2;background:#ffffff05}.geometry-layers{padding:0 5px 6px 20px}.geometry-row{display:grid;grid-template-columns:20px minmax(0,1fr) 24px 24px 20px;align-items:center;gap:3px;padding:4px;border-radius:var(--bv-ui-radius-sm);cursor:pointer;color:var(--bv-muted-text-color)}.geometry-row.selected{color:var(--bv-text-color);background:#ffffff12;outline:1px solid var(--bv-primary-color)}.geometry-row.selected:not(.primary-selection){outline-color:color-mix(in srgb,var(--bv-primary-color) 55%,transparent)}.geometry-row span:nth-child(2){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bv-regional-work{position:relative;min-width:0;min-height:0;overflow:hidden;background:#0f1114}.artboard-viewport{position:absolute;inset:0;overflow:hidden;touch-action:none;user-select:none}.artboard-viewport.pan-ready{cursor:grab}.artboard-viewport.pan-ready:active{cursor:grabbing}.artboard-stage{position:absolute;top:0;left:0;transform-origin:0 0;will-change:transform}.bv-regional-canvas{position:relative;background-color:#24282d;background-image:linear-gradient(45deg,#2c3137 25%,transparent 25%),linear-gradient(-45deg,#2c3137 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#2c3137 75%),linear-gradient(-45deg,transparent 75%,#2c3137 75%);background-size:24px 24px;background-position:0 0,0 12px,12px -12px,-12px 0;touch-action:none;user-select:none;box-shadow:0 4px 28px #000a}.bv-background-image{position:absolute;inset:0;background-size:cover;background-repeat:no-repeat;pointer-events:none}.bv-composition,.bv-selection-overlay,.bv-tool-preview{position:absolute;inset:0;width:100%;height:100%}.bv-composition{pointer-events:none}.bv-selection-overlay,.bv-tool-preview{overflow:visible;pointer-events:none}.bv-tool-preview .tool-preview-shape{fill:color-mix(in srgb,#55e6ff 15%,transparent);stroke:#55e6ff;stroke-width:2.5;vector-effect:non-scaling-stroke;filter:drop-shadow(0 0 2px #000)}.bv-tool-preview .tool-preview-shape.subtract{fill:color-mix(in srgb,#ff5f6d 18%,transparent);stroke:#ff5f6d;stroke-dasharray:8 5}.bv-tool-preview path.tool-preview-shape{fill:none;stroke-opacity:.75}.bv-tool-preview .tool-preview-vertex{fill:#55e6ff;stroke:#071014;stroke-width:1.5;vector-effect:non-scaling-stroke}.bv-tool-preview .tool-preview-vertex.subtract{fill:#ff5f6d}.bv-selection-overlay .tool-preview-size{fill:#fff;font:600 12px sans-serif;text-anchor:end;paint-order:stroke;stroke:#101419;stroke-width:4px;stroke-linejoin:round;vector-effect:non-scaling-stroke}.bv-selection-overlay .rect-bounds{fill:none;stroke:#fff;stroke-width:2;vector-effect:non-scaling-stroke}.bv-selection-overlay .brush-bounds{fill:rgba(var(--bv-ui-accent-rgb),.035);stroke:var(--bv-ui-accent);stroke-width:2;stroke-dasharray:7 5;vector-effect:non-scaling-stroke;filter:drop-shadow(0 0 3px rgba(var(--bv-ui-accent-rgb),.45))}.bv-selection-overlay .resize-handle{pointer-events:all}.bv-selection-overlay .resize-handle-hit{fill:transparent;stroke:none}.bv-selection-overlay .resize-handle-visible{fill:var(--bv-ui-accent);stroke:#f7f3ff;stroke-width:1.5;vector-effect:non-scaling-stroke;filter:drop-shadow(0 1px 2px #000b)}.bv-selection-overlay .resize-handle-nw,.bv-selection-overlay .resize-handle-se{cursor:nwse-resize}.bv-selection-overlay .resize-handle-ne,.bv-selection-overlay .resize-handle-sw{cursor:nesw-resize}.bv-selection-overlay .resize-handle-n,.bv-selection-overlay .resize-handle-s{cursor:ns-resize}.bv-selection-overlay .resize-handle-e,.bv-selection-overlay .resize-handle-w{cursor:ew-resize}.brush-cursor{position:absolute;translate:-50% -50%;display:grid;place-items:center;border:1px solid white;outline:1px solid #0009;pointer-events:none}.brush-cursor.round{border-radius:50%}.brush-cursor i{display:block;border:1px dashed #fff9}.brush-cursor.round i{border-radius:50%}.bv-regional-canvas.tool-brush-add,.bv-regional-canvas.tool-brush-subtract{cursor:none}.bounds-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.bounds-grid label{min-width:0}.bounds-grid input{width:100%}.layer-actions{display:grid;grid-template-columns:1fr 1fr;gap:6px}.bv-regional-shell details{border:1px solid #ffffff18;border-radius:var(--bv-ui-radius-sm);padding:7px}.bv-regional-shell details summary{cursor:pointer}.bv-regional-shell details[open] summary{margin-bottom:8px}.bv-regional-shell footer{justify-content:space-between;border-top:1px solid #ffffff18;border-bottom:0}.bv-regional-shell footer.has-warning{color:#ffcc7a}.bv-regional-shell footer span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bv-regional-shell .option-section label>small{color:var(--bv-muted-text-color)}.bv-panel-header{display:flex;align-items:center;gap:var(--bv-ui-content-padding);min-height:var(--bv-ui-row-height);padding:var(--bv-ui-field-gap) var(--bv-ui-content-padding);color:var(--bv-ui-text);background:var(--bv-ui-surface-raised);border-bottom:1px solid var(--bv-ui-border)}.bv-panel-header>div:not(.bv-panel-actions){display:grid;flex:1;min-width:0;gap:1px}.bv-panel-header strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bv-panel-header small{color:var(--bv-ui-muted);font-size:.84em}.bv-panel-header-icon{width:20px;height:20px;flex:none;padding:2px;color:var(--bv-ui-accent-soft);fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.bv-panel-actions{display:flex;align-items:center;justify-content:flex-end;gap:var(--bv-ui-field-gap);margin-left:auto}.bv-panel-header .bv-panel-actions .bv-button svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round}.bv-panel-footer{display:flex;align-items:center;justify-content:space-between;gap:var(--bv-ui-content-padding);min-height:var(--bv-ui-row-height);padding:var(--bv-ui-field-gap) var(--bv-ui-content-padding);color:var(--bv-ui-muted);background:var(--bv-ui-surface-raised);border-top:1px solid var(--bv-ui-border)}.bv-panel-status{min-width:0}.bv-panel-footer .bv-panel-actions{flex:none}.bv-quick-prompt-body{display:grid;grid-template-rows:auto auto minmax(0,1fr);gap:var(--bv-ui-content-padding);min-height:0;height:100%}.bv-prompt-editor-fields{display:grid;grid-template-rows:minmax(120px,3fr) minmax(100px,2fr);gap:var(--bv-ui-content-padding);min-width:0;min-height:0;height:100%}.bv-prompt-editor-fields>.bv-control-field{display:grid;grid-template-rows:auto minmax(0,1fr);align-self:stretch;align-content:stretch;min-height:0}.bv-prompt-editor-fields .bv-adaptive-field,.bv-prompt-editor-fields .bv-textarea-shell{min-height:0;height:100%}.bv-prompt-editor-fields textarea{min-height:0!important;max-height:none;height:100%;resize:none}.bv-regional-action{display:inline-flex!important;align-items:center;justify-content:center;width:38px;min-width:38px;height:36px;padding:0!important;color:#d8d8dc!important;background:#18191c!important;border:1px solid #ffffff1f!important;border-radius:var(--bv-ui-radius-sm)!important;box-shadow:inset 0 1px #ffffff0a;transition:background-color .12s ease,border-color .12s ease}.bv-regional-action:hover{color:#fff!important;background:#292a2f!important;border-color:#ffffff35!important}.bv-regional-action>i{display:none!important}.bv-regional-action:before{content:"";display:block;width:20px;height:20px;background-color:currentColor;mask-repeat:no-repeat;mask-position:center;mask-size:contain;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain}.bv-regional-action-editor:before{mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M4 3h16a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2Zm0 5v11h4V8H4Zm6 0v11h10V8H10Zm0-3v1h10V5H10ZM4 5v1h4V5H4Z'/%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M4 3h16a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2Zm0 5v11h4V8H4Zm6 0v11h10V8H10Zm0-3v1h10V5H10ZM4 5v1h4V5H4Z'/%3E%3C/svg%3E")}.bv-regional-action-quick:before{mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M5 3h9v2H5v14h14v-9h2v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2Zm13.7-.7 3 3L11 16H8v-3L18.7 2.3Zm0 2.8L10 13.8V14h.2l8.7-8.9-.2-.2Z'/%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M5 3h9v2H5v14h14v-9h2v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2Zm13.7-.7 3 3L11 16H8v-3L18.7 2.3Zm0 2.8L10 13.8V14h.2l8.7-8.9-.2-.2Z'/%3E%3C/svg%3E")}.bv-regional-action-menu{width:18px!important;min-width:18px!important;margin-left:-3px;border-radius:0 var(--bv-ui-radius-sm) var(--bv-ui-radius-sm) 0!important}.bv-regional-action-quick{border-radius:var(--bv-ui-radius-sm) 0 0 var(--bv-ui-radius-sm)!important}.bv-regional-action-menu:before{width:10px;height:10px;mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='m6 9 6 6 6-6Z'/%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='m6 9 6 6 6-6Z'/%3E%3C/svg%3E")}.bv-toolbar-window-launcher{position:fixed;z-index:var(--bv-layer-flyout);display:grid;grid-template-rows:minmax(0,1fr) auto;max-width:calc(100vw - 24px);max-height:min(420px,calc(100vh - 84px));overflow:hidden;color:var(--bv-ui-text);background:var(--bv-ui-surface-raised);border:1px solid var(--bv-ui-border-hover);border-radius:var(--bv-ui-radius);box-shadow:0 18px 48px #000c}.bv-toolbar-window-launcher__body{display:grid;grid-template-columns:repeat(var(--bv-launcher-columns),minmax(180px,210px));min-height:0;overflow:auto}.bv-toolbar-window-launcher section{display:grid;grid-template-rows:auto minmax(0,1fr);min-width:0;padding:3px}.bv-toolbar-window-launcher section+section{border-left:1px solid var(--bv-ui-border)}.bv-toolbar-window-launcher h3{margin:0;padding:4px 6px 5px;color:var(--bv-ui-muted);font-size:calc(9px * var(--bv-ui-scale));font-weight:650;letter-spacing:.04em;text-transform:uppercase}.bv-toolbar-window-launcher section>div{display:grid;align-content:start;gap:1px;min-height:0;overflow-y:auto}.bv-toolbar-launcher-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center}.bv-toolbar-launcher-row.is-hidden{opacity:.68}.bv-toolbar-launcher-reveal{width:26px;height:26px;padding:0;color:var(--bv-ui-muted);background:transparent;border:0;border-radius:var(--bv-ui-radius-xs);cursor:pointer}.bv-toolbar-launcher-reveal:hover{color:var(--bv-ui-text);background:var(--bv-ui-surface-hover)}.bv-toolbar-window-launcher .bv-button{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;justify-content:stretch;justify-items:start;gap:8px;min-width:0;min-height:26px;padding:2px 6px;text-align:left}.bv-toolbar-window-launcher .bv-button>span,.bv-toolbar-window-launcher .bv-button>small{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bv-toolbar-window-launcher .bv-button>small{justify-self:end;color:var(--bv-ui-muted);font-size:calc(9px * var(--bv-ui-scale))}.bv-toolbar-window-launcher .bv-button:disabled{opacity:.55}.bv-toolbar-window-launcher>footer{position:sticky;bottom:0;padding:5px 8px;background:var(--bv-ui-surface-raised);border-top:1px solid var(--bv-ui-border)}.bv-toolbar-launcher-empty{display:grid;gap:3px;padding:18px;color:var(--bv-ui-muted)}@media (max-width:760px){.bv-toolbar-window-launcher{width:min(320px,calc(100vw - 24px))}.bv-toolbar-window-launcher__body{grid-template-columns:minmax(190px,1fr)}.bv-toolbar-window-launcher section+section{border-top:1px solid var(--bv-ui-border);border-left:0}}.bv-toolbar-window-launcher{z-index:var(--bv-layer-flyout)}.bv-completion-popup{position:fixed;z-index:var(--bv-layer-flyout);max-height:calc(240px * var(--bv-ui-scale));overflow:auto;padding:4px;color:var(--bv-ui-text);background:var(--bv-ui-input);border:1px solid var(--bv-ui-border-hover);border-radius:var(--bv-ui-radius);box-shadow:0 10px 32px #000c;font:calc(12px * var(--bv-ui-scale))/1.4 system-ui,-apple-system,"Segoe UI",sans-serif}.bv-completion-popup button{display:grid;width:100%;gap:0;padding:5px 8px;color:var(--bv-ui-text);text-align:left;background:transparent;border:0;border-radius:var(--bv-ui-radius-sm);cursor:pointer}.bv-completion-popup .bv-button{min-height:0;justify-content:stretch;justify-items:start}.bv-completion-popup button:hover,.bv-completion-popup button.active{background:rgba(var(--bv-ui-accent-rgb),.24);color:var(--bv-ui-text)}.bv-completion-popup button:hover small,.bv-completion-popup button.active small{color:#dcefff}.bv-completion-popup small{overflow:hidden;color:var(--bv-ui-muted);font-size:calc(10px * var(--bv-ui-scale));text-overflow:ellipsis;white-space:nowrap}.completion-menu{min-width:320px}.completion-dataset-picker{display:grid;gap:6px;padding:5px 8px 8px}.completion-dataset-picker>label{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:7px}.completion-dataset-picker>label span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.completion-dataset-picker>label small{color:var(--bv-muted-text-color)}.completion-dataset-picker .dataset-error{color:#ffaca6;white-space:normal}.bv-settings-datasets{display:grid;gap:8px;width:min(680px,100%)}.bv-settings-datasets>small{color:var(--descrip-text, #a1a1aa)}.bv-settings-datasets>div{display:grid;gap:6px}.bv-settings-datasets label{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:9px;padding:7px 9px;border:1px solid var(--border-color, #ffffff24);border-radius:var(--bv-ui-radius)}.bv-settings-datasets label span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bv-settings-datasets label small{color:var(--descrip-text, #a1a1aa)}.bv-settings-datasets .dataset-error{color:#ffaca6}.dataset-order{display:inline-flex;gap:3px}.dataset-order button{min-width:24px;padding:1px 5px}.bv-regional-error{margin:20px;padding:15px;color:#ffaca6;border:1px solid #ff756d;border-radius:var(--bv-ui-radius)}.editor-menus{display:flex;align-items:center;gap:2px}.menu-item{position:relative}.editor-menus>.menu-item>button{padding:4px 7px;border-color:transparent;background:transparent}.menu-popover,.toolbar-popover{position:absolute;z-index:20;top:calc(100% + 5px);left:0;display:grid;min-width:230px;padding:7px;border:1px solid var(--bv-border-color);border-radius:var(--bv-ui-radius);background:var(--comfy-menu-bg, #20242a);box-shadow:0 12px 35px #000b}.menu-popover button{display:flex;justify-content:space-between;border-color:transparent;background:transparent;text-align:left}.menu-popover button:hover{background:#ffffff12}.menu-popover hr{width:100%;border:0;border-top:1px solid #ffffff18}.menu-popover kbd{color:var(--bv-muted-text-color)}.view-menu label{display:grid;grid-template-columns:1fr auto;gap:7px}.view-menu input{grid-column:1 / -1;width:100%;padding:0}.view-menu small{padding:5px 7px;color:var(--bv-muted-text-color)}.help-menu{width:min(680px,calc(100vw - 40px));grid-template-columns:repeat(2,minmax(280px,1fr));gap:18px}.help-section{min-width:0}.help-section strong{display:block;margin-bottom:8px}.help-section dl{display:grid;grid-template-columns:minmax(135px,auto) minmax(110px,1fr);gap:5px 12px;margin:0}.help-section dt{color:#8fd2ff;white-space:nowrap}.help-section dd{min-width:0;margin:0;color:var(--bv-muted-text-color)}@media (max-width: 720px){.help-menu{width:calc(100vw - 40px);grid-template-columns:1fr;max-height:calc(100vh - 90px);overflow:auto}}.help-button{width:29px;border-radius:50%!important}.toolbar-popover-anchor{position:relative}.toolbar-popover{right:0;left:auto;gap:7px}.toolbar-popover label{display:grid;grid-template-columns:65px 1fr;align-items:center}.toolbar-popover input{width:120px!important}.panel-splitter{position:relative;cursor:col-resize;background:#ffffff0b;border-left:1px solid #ffffff12;border-right:1px solid #0008}.panel-splitter:hover,.panel-splitter:active{background:var(--bv-primary-color)}.bv-regional-shell main>aside{min-width:0}.bv-regional-shell .layers{display:flex;flex-direction:column;padding:8px}.panel-toolbar{display:flex;align-items:center;gap:3px;margin-bottom:7px;padding:4px;background:#ffffff06;border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.panel-toolbar-spacer{flex:1}.panel-toolbar .panel-tool{display:flex;align-items:center;justify-content:center;gap:5px;min-width:28px;height:28px;min-height:28px;padding:0 6px;color:var(--bv-ui-muted);background:transparent;border:1px solid transparent;border-radius:var(--bv-ui-radius-sm)}.panel-toolbar .panel-tool.primary{color:var(--bv-ui-accent-soft);background:rgba(var(--bv-ui-accent-rgb),.11);border-color:rgba(var(--bv-ui-accent-rgb),.2)}.panel-toolbar .panel-tool:hover:not(:disabled){color:var(--bv-ui-text);background:#fff1;border-color:#ffffff14}.panel-toolbar .panel-tool.danger:not(:disabled){color:#e68f8a}.panel-toolbar .panel-tool:disabled{opacity:.35;cursor:default}.panel-toolbar .panel-tool .tree-control-icon{width:15px;height:15px}.panel-toolbar .panel-tool span{flex:none}.region-row{position:relative;display:grid;grid-template-columns:18px 20px 14px minmax(55px,1fr) auto auto 25px 27px 20px}.region-row .region-expand{display:grid;place-items:center;width:20px;min-width:20px;height:24px;min-height:24px;padding:0;color:var(--bv-ui-muted)}.region-row .region-usage{flex:none;color:var(--bv-muted-text-color);font-size:10px;letter-spacing:.03em}.region-row .priority{flex:none;color:var(--bv-muted-text-color);font-size:11px}.layer-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.inline-name{min-width:0;width:100%;padding:2px 4px!important}.geometry-row{position:relative;margin-bottom:3px}.geometry-tree-item{margin-bottom:4px}.geometry-row{grid-template-columns:18px 20px 22px minmax(0,1fr) 25px 27px 20px 24px;margin-bottom:0}.geometry-row .layer-expand{display:grid;place-items:center;width:20px;min-width:20px;height:24px;min-height:24px;padding:0;color:var(--bv-ui-muted)}.bv-regional-shell .tree-control-icon{display:block;width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.bv-regional-shell .tree-control-icon circle[r="1"]{fill:currentColor;stroke:none}.bv-regional-shell .tree-icon-button{display:grid;place-items:center;width:24px;min-width:24px;height:24px;min-height:24px;padding:0;color:var(--bv-ui-muted);background:transparent;border:0;border-radius:var(--bv-ui-radius-sm)}.bv-regional-shell .tree-icon-button:hover{color:var(--bv-ui-text);background:#ffffff0e}.bv-regional-shell .tree-icon-button.deviant{color:#e2b96e;background:#e2b96e13}.bv-regional-shell .tree-icon-button.deviant:hover{color:#f0cc88;background:#e2b96e21}.bv-regional-shell .tree-check{display:grid;place-items:center;align-self:center;width:16px;min-width:16px;height:16px;min-height:16px;padding:0;color:var(--bv-ui-muted);background:transparent;border:1px solid color-mix(in srgb,var(--bv-ui-muted) 72%,transparent);border-radius:var(--bv-ui-radius-sm);box-shadow:none}.bv-regional-shell .tree-check[aria-checked=true]{color:var(--bv-ui-muted);border-color:color-mix(in srgb,var(--bv-ui-muted) 72%,transparent);background:transparent}.bv-regional-shell .tree-check.deviant{color:#e2b96e;border-color:#e2b96eb8;background:#e2b96e13}.bv-regional-shell .tree-check:hover{color:var(--bv-ui-text);border-color:var(--bv-ui-text);background:#ffffff09}.bv-regional-shell .tree-check.deviant:hover{color:#f0cc88;border-color:#e2b96e;background:#e2b96e21}.bv-regional-shell .tree-check .tree-control-icon{width:13px;height:13px;stroke-width:2.2}.bv-regional-shell .layer-overflow{position:relative;margin:0;padding:0!important;border:0!important;border-radius:0}.bv-regional-shell .layer-overflow>summary{display:grid;place-items:center;width:24px;height:24px;margin:0!important;padding:0;color:var(--bv-ui-muted);border-radius:var(--bv-ui-radius-sm);cursor:pointer;list-style:none}.bv-regional-shell .layer-overflow>summary::-webkit-details-marker{display:none}.bv-regional-shell .layer-overflow>summary:hover,.bv-regional-shell .layer-overflow[open]>summary{color:var(--bv-ui-text);background:#ffffff12}.bv-regional-shell .layer-overflow>div{position:absolute;z-index:30;top:calc(100% + 4px);right:0;display:grid;gap:2px;min-width:142px;padding:4px;background:var(--bv-ui-surface-raised);border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius);box-shadow:0 10px 28px #00000061}.bv-regional-shell .layer-overflow>div>button{width:100%;min-height:28px;padding:4px 8px;text-align:left;white-space:nowrap}.geometry-operations{position:relative;display:grid;gap:2px;margin:2px 0 5px 20px;padding-left:12px;border-left:1px solid rgba(var(--bv-ui-accent-rgb),.28)}.geometry-operation{position:relative;display:grid;grid-template-columns:18px minmax(0,1fr) 24px 24px;align-items:center;gap:3px;min-height:32px;padding:3px 4px;color:var(--bv-ui-muted);border:1px solid transparent;border-radius:var(--bv-ui-radius-sm)}.geometry-operation:hover{color:var(--bv-ui-text);background:#ffffff0b}.geometry-operation.selected{color:var(--bv-ui-text);background:rgba(var(--bv-ui-accent-rgb),.14);border-color:rgba(var(--bv-ui-accent-rgb),.36);box-shadow:inset 2px 0 0 var(--bv-ui-accent)}.geometry-operation-select{display:grid!important;grid-template-columns:22px minmax(0,1fr) auto;align-items:center;gap:5px;min-width:0;min-height:24px;padding:0!important;color:inherit;text-align:left;background:transparent!important;border:0!important;box-shadow:none!important}.geometry-operation-select>span:nth-child(2){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.geometry-operation small{color:var(--bv-ui-muted);font-size:calc(9px * var(--bv-ui-scale));text-transform:capitalize}.geometry-operation>button:not(.geometry-operation-select){display:grid;place-items:center;min-width:24px;min-height:24px;padding:0;background:transparent;border:0}.operation-kind{display:grid;place-items:center;width:20px;height:20px;border-radius:var(--bv-ui-radius-sm);font-weight:800}.operation-kind.add{color:var(--bv-ui-accent-soft);background:rgba(var(--bv-ui-accent-rgb),.16)}.operation-kind.subtract{color:#f0c275;background:#e9b65f21}.bv-regional-shell .tree-drag-handle{display:grid;place-items:center;width:18px;min-width:18px;height:24px;min-height:24px;padding:0;color:var(--bv-ui-muted);background:transparent;border:0;border-radius:var(--bv-ui-radius-sm);cursor:grab;opacity:.62}.bv-regional-shell .tree-drag-handle:hover{color:var(--bv-ui-text);background:#ffffff12;opacity:1}.bv-regional-shell .tree-drag-handle:active{cursor:grabbing}.drop-target.drop-inside{background:rgba(var(--bv-ui-accent-rgb),.14)!important;outline:1px solid rgba(var(--bv-ui-accent-rgb),.7)!important}.drop-target.drop-before:before,.drop-target.drop-after:after{content:"";position:absolute;z-index:4;left:4px;right:4px;height:2px;background:var(--bv-ui-accent);border-radius:var(--bv-ui-radius-sm);box-shadow:0 0 0 2px rgba(var(--bv-ui-accent-rgb),.12)}.drop-target.drop-before:before{top:-2px}.drop-target.drop-after:after{bottom:-2px}.option-section{display:grid;gap:8px;padding:10px 0;border-bottom:1px solid #ffffff18}.option-section:first-child{padding-top:0}.option-section h3{margin:0;font-size:14px}.option-hint{padding:10px;border:1px dashed #ffffff22;border-radius:var(--bv-ui-radius-sm);color:var(--bv-muted-text-color)}.inspector details textarea{min-height:90px}.stroke-width-meta{color:var(--bv-muted-text-color);font-variant-numeric:tabular-nums}.inspector-density{width:100%;height:100%;min-height:0}.region-color-control{display:block;padding:8px;border:1px solid #ffffff18;border-radius:var(--bv-ui-radius)}.region-color-split{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end}.region-color-split>.bv-button{width:30px;min-width:30px;margin-bottom:1px;margin-left:-1px;border-radius:0 var(--bv-ui-radius) var(--bv-ui-radius) 0}.region-color-split>.bv-control-field .bv-color-field{border-radius:var(--bv-ui-radius) 0 0 var(--bv-ui-radius)}.region-color-control>.bv-control-field{min-width:0}.region-color-control>.bv-button{align-self:center}.bv-regional-shell header{min-height:38px;padding:5px 8px;gap:7px}.bv-regional-shell header strong{font-size:13px;white-space:nowrap}.menu-popover{font-size:13px;line-height:1.25}.menu-popover button{min-height:27px;padding:5px 7px}.menu-popover small{padding:5px 7px;color:var(--bv-muted-text-color)}.artboard-menu{gap:7px}.artboard-menu label{display:grid;grid-template-columns:65px 1fr;align-items:center}.artboard-menu input{width:130px}.bv-regional-shell[hidden]{display:none!important}.bv-managed-window{position:fixed;z-index:var(--bv-layer-window);min-width:0;min-height:0;overflow:visible;color:var(--bv-ui-text);border-radius:var(--bv-ui-radius);box-shadow:0 20px 70px #000b;outline:0}.bv-managed-window-surface{display:grid;grid-template-rows:auto minmax(0,1fr) auto;width:100%;height:100%;overflow:hidden;background:var(--bv-ui-surface);border:1px solid var(--bv-ui-border-hover);border-radius:inherit}.bv-managed-window[hidden]{display:none!important}.bv-managed-window.floating{resize:none}.bv-managed-window.workspace{left:24px;top:58px;width:calc(100vw - 48px);height:calc(100vh - 82px);border-radius:var(--bv-ui-radius);resize:none}.bv-managed-window-body{min-width:0;min-height:0;padding:var(--bv-ui-content-padding);overflow:auto}.bv-managed-window.floating>.bv-ui-window-header{cursor:move;user-select:none;touch-action:none}.bv-managed-window .bv-ui-window-header button,.bv-managed-window .bv-ui-window-header select{cursor:pointer;user-select:auto}.bv-window-resize-handle{position:absolute;z-index:8;touch-action:none}.bv-window-resize-handle.n,.bv-window-resize-handle.s{right:10px;left:10px;height:5px;cursor:ns-resize}.bv-window-resize-handle.n{top:0}.bv-window-resize-handle.s{bottom:0}.bv-window-resize-handle.e,.bv-window-resize-handle.w{top:10px;bottom:10px;width:5px;cursor:ew-resize}.bv-window-resize-handle.e{right:0}.bv-window-resize-handle.w{left:0}.bv-window-resize-handle.ne,.bv-window-resize-handle.nw,.bv-window-resize-handle.se,.bv-window-resize-handle.sw{width:10px;height:10px}.bv-window-resize-handle.ne,.bv-window-resize-handle.sw{cursor:nesw-resize}.bv-window-resize-handle.nw,.bv-window-resize-handle.se{cursor:nwse-resize}.bv-window-resize-handle.n,.bv-window-resize-handle.ne,.bv-window-resize-handle.nw{top:0}.bv-window-resize-handle.s,.bv-window-resize-handle.se,.bv-window-resize-handle.sw{bottom:0}.bv-window-resize-handle.e,.bv-window-resize-handle.ne,.bv-window-resize-handle.se{right:0}.bv-window-resize-handle.w,.bv-window-resize-handle.nw,.bv-window-resize-handle.sw{left:0}.bv-ui-window-header{display:grid!important;grid-template-columns:minmax(320px,1fr) auto minmax(180px,1fr);align-items:center;gap:calc(8px * var(--bv-ui-scale));min-height:calc(34px * var(--bv-ui-scale))!important;padding:calc(2px * var(--bv-ui-scale)) calc(6px * var(--bv-ui-scale))!important;background:var(--bv-ui-surface-raised);border-bottom:1px solid var(--bv-ui-border)!important}.bv-managed-window .bv-ui-window-header{grid-template-columns:minmax(0,1fr) auto}.bv-managed-window .bv-ui-window-center:empty{display:none}.bv-managed-window .bv-ui-window-header:has(.bv-ui-window-center:not(:empty)){grid-template-columns:minmax(250px,1fr) auto minmax(78px,1fr)}.bv-regional-window-body{display:flex;flex-direction:column;min-width:0;min-height:0;padding:0;overflow:hidden}.bv-regional-window-body>.bv-regional-dock-host{flex:1;min-height:0}.bv-ui-window-identity{display:flex;align-items:center;gap:calc(7px * var(--bv-ui-scale));min-width:0;overflow:visible}.bv-ui-window-icon{display:grid;place-items:center;width:calc(25px * var(--bv-ui-scale));height:calc(25px * var(--bv-ui-scale));flex:0 0 calc(25px * var(--bv-ui-scale));color:var(--bv-ui-accent-soft);background:rgba(var(--bv-ui-accent-rgb),.13);border:1px solid rgba(var(--bv-ui-accent-rgb),.22);border-radius:var(--bv-ui-radius-sm)}.bv-ui-window-icon svg,.bv-ui-window-reset svg,.bv-ui-window-shelf-icon svg{width:calc(16px * var(--bv-ui-scale));height:calc(16px * var(--bv-ui-scale));fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.bv-ui-window-icon .bv-brand-cyclone,.bv-ui-window-shelf-icon .bv-brand-cyclone{color:var(--bv-ui-accent-light);fill:currentColor;stroke:none}.bv-ui-window-title{flex:0 1 auto;min-width:0;overflow:hidden;font-size:calc(13px * var(--bv-ui-scale));text-overflow:ellipsis;white-space:nowrap}.bv-ui-window-title-short{display:none}@container bv-window-header (max-width:900px){.bv-ui-window-title:has(.bv-ui-window-title-short) .bv-ui-window-title-full{display:none}.bv-ui-window-title-short{display:inline}}.bv-ui-window-context{display:flex;align-items:center;gap:calc(5px * var(--bv-ui-scale));min-width:0;overflow:visible;color:var(--bv-ui-muted);font-size:calc(10px * var(--bv-ui-scale))}.bv-regional-shell .bv-ui-window-context select{width:min(240px,100%);min-width:0;height:auto;padding:0 18px 0 calc(5px * var(--bv-ui-scale));color:var(--bv-ui-muted);background-color:transparent;border:0;border-radius:0;font:inherit;text-overflow:ellipsis}.bv-regional-shell .bv-ui-window-context .bv-select-shell{width:min(240px,100%);min-height:calc(22px * var(--bv-ui-scale));overflow:visible;background:#ffffff06;border-color:var(--bv-ui-border);border-radius:var(--bv-ui-radius-sm);box-shadow:none}.bv-regional-shell .bv-ui-window-context .bv-select-shell:hover{background:#ffffff0b;border-color:var(--bv-ui-border)}.bv-regional-shell .bv-ui-window-context .bv-select-shell:focus-within{background:rgba(var(--bv-ui-accent-rgb),.07);border-color:rgba(var(--bv-ui-accent-rgb),.34);box-shadow:none}.bv-regional-shell .bv-ui-window-context .bv-select-shell:focus-within select{border-color:transparent;box-shadow:none;outline:0}.bv-regional-shell .bv-ui-window-context .bv-select-shell>.bv-chevron{right:calc(7px * var(--bv-ui-scale));color:var(--bv-ui-muted)}.bv-ui-window-center{display:flex;align-self:stretch;align-items:center;justify-content:center;min-width:0}.bv-ui-window-center .editor-menus{justify-content:center}.editor-menu-label-short{display:none}@container bv-window-header (max-width:560px){.editor-menu-label-full{display:none}.editor-menu-label-short{display:inline}.bv-ui-window-center .editor-menus .bv-button{min-width:22px;padding-inline:5px}}.bv-ui-window-controls{display:flex;align-items:center;justify-content:flex-end;gap:2px}.bv-ui-window-control{display:grid;place-items:center;width:calc(24px * var(--bv-ui-scale));height:calc(24px * var(--bv-ui-scale));min-height:0;padding:0;color:var(--bv-ui-muted);background:transparent;border:1px solid transparent;border-radius:var(--bv-ui-radius-sm);font-size:inherit}.bv-ui-window-control svg{width:calc(14px * var(--bv-ui-scale));height:calc(14px * var(--bv-ui-scale));fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.bv-ui-window-control:hover{color:var(--bv-ui-text);background:#ffffff12;border-color:#e7e1f714}.bv-ui-window-control--close:hover{color:#ffd8df;background:#ee6f8321;border-color:#ee6f8333}.bv-regional-shell.floating .bv-ui-window-header{cursor:move;user-select:none;touch-action:none}.bv-regional-shell .bv-ui-window-header button,.bv-regional-shell .bv-ui-window-header select{cursor:pointer;user-select:auto}.bv-ui-window-footer{container:bv-window-footer / inline-size;display:grid!important;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:calc(10px * var(--bv-ui-scale));min-height:calc(38px * var(--bv-ui-scale));padding:calc(4px * var(--bv-ui-scale)) calc(7px * var(--bv-ui-scale)) calc(4px * var(--bv-ui-scale)) calc(9px * var(--bv-ui-scale))!important;background:#211f27;border-top:1px solid var(--bv-ui-border)!important;border-bottom:0!important}.bv-ui-window-status{display:flex;align-items:center;gap:var(--bv-ui-field-gap);min-width:0;overflow:hidden;color:var(--bv-ui-muted);font-size:calc(10px * var(--bv-ui-scale));white-space:nowrap;text-overflow:ellipsis}.bv-ui-window-status>span:first-child{overflow:hidden;min-width:0;text-overflow:ellipsis;white-space:nowrap}.bv-ui-window-footer.has-warning .bv-ui-window-status{color:#e9b65f}.bv-ui-window-footer-actions{display:flex;align-items:center;gap:calc(7px * var(--bv-ui-scale));margin-left:auto}.bv-ui-window-footer-actions .bv-button{white-space:nowrap}.bv-ui-window-footer-actions .bv-button>svg{width:calc(16px * var(--bv-ui-scale));height:calc(16px * var(--bv-ui-scale));flex:none;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.bv-footer-action-set,.bv-footer-secondary-actions{display:flex;align-items:center;gap:5px}.bv-footer-action-set>.bv-menu-button{display:none}.bv-ui-window-footer.is-stacked{grid-template-columns:1fr}.bv-ui-window-footer.is-stacked .bv-ui-window-footer-actions{width:100%;margin-left:0;justify-content:flex-end}.bv-ui-window-footer.is-minimal .bv-footer-secondary-actions{display:none}.bv-ui-window-footer.is-minimal .bv-footer-action-set>.bv-menu-button{display:block}.bv-ui-window-footer.is-minimal .bv-ui-window-footer-actions>.bv-button:not(:last-child){display:none}.bv-regional-shell .bv-ui-window-reset{min-height:calc(29px * var(--bv-ui-scale));padding:0 calc(9px * var(--bv-ui-scale));font-size:calc(10px * var(--bv-ui-scale))}.bv-ui-window-shelf{position:fixed;z-index:var(--bv-layer-shelf);left:var(--bv-ui-window-shelf-left,calc(14px * var(--bv-ui-scale)));bottom:var(--bv-ui-window-shelf-bottom,calc(14px * var(--bv-ui-scale)));display:flex;align-items:flex-end;gap:calc(7px * var(--bv-ui-scale));pointer-events:none}.bv-ui-window-shelf-item{display:inline-flex;align-items:center;height:calc(36px * var(--bv-ui-scale));color:var(--bv-ui-muted);background:var(--bv-ui-surface-raised);border:1px solid var(--bv-ui-border-hover);border-radius:var(--bv-ui-radius);box-shadow:0 8px 24px #0006;font:calc(10px * var(--bv-ui-scale))/1.2 system-ui,-apple-system,"Segoe UI",sans-serif;pointer-events:auto;overflow:hidden}.bv-ui-window-shelf-restore,.bv-ui-window-shelf-close{align-self:stretch;display:inline-flex;align-items:center;color:inherit;background:transparent;border:0}.bv-ui-window-shelf-restore{gap:calc(7px * var(--bv-ui-scale));padding:0 calc(8px * var(--bv-ui-scale)) 0 calc(6px * var(--bv-ui-scale))}.bv-ui-window-shelf-close{padding:0 calc(7px * var(--bv-ui-scale));border-left:1px solid var(--bv-ui-border)}.bv-ui-window-shelf-close svg{width:calc(14px * var(--bv-ui-scale));fill:none;stroke:currentColor;stroke-width:1.7}.bv-ui-window-shelf-item:hover{color:var(--bv-ui-text);background:#2b2832;border-color:rgba(var(--bv-ui-accent-rgb),.3)}.bv-window-navigator{display:flex;align-items:center;gap:3px;min-width:0}.bv-window-navigator .bv-select-popover{width:clamp(112px,18vw,180px)}.bv-window-navigator .bv-select-trigger{min-height:22px;height:22px;padding:0 7px;gap:5px;color:var(--bv-ui-muted);background:#ffffff05;border-color:#e7e1f71a;border-radius:var(--bv-ui-radius-sm);font-size:10px;box-shadow:none}.bv-window-navigator .bv-select-trigger:hover:not(:disabled),.bv-window-navigator .bv-select-trigger[aria-expanded=true]{color:var(--bv-ui-text);background:#ffffff0b;border-color:#e7e1f72e;box-shadow:none}.bv-window-navigator .bv-select-trigger>span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bv-window-navigator .bv-chevron{width:6px;height:6px}.bv-window-switch-mode{display:inline-flex;align-items:center;height:22px;padding:0 4px;color:var(--bv-ui-muted);background:transparent;border:1px solid transparent;border-radius:var(--bv-ui-radius-sm);font:inherit}.bv-window-switch-mode:hover{background:#ffffff0b;border-color:#e7e1f71a}.bv-window-switch-mode>span:last-child{display:none}.bv-window-switch-mode .bv-toggle-track{width:26px;height:14px;padding:1px}.bv-window-switch-mode .bv-toggle-track>span{width:10px;height:10px}.bv-window-switch-mode[aria-checked=true] .bv-toggle-track{background:rgba(var(--bv-ui-accent-rgb),.35);border-color:var(--bv-ui-accent)}.bv-window-switch-mode .bv-toggle-track>span{margin-left:0;transition:margin-left .15s}.bv-window-switch-mode[aria-checked=true] .bv-toggle-track>span{margin-left:auto;translate:0;transform:none;background:var(--bv-ui-accent-soft)}.bv-ui-window-header{container:bv-window-header / inline-size}.bv-window-navigator-overflow{position:relative}.bv-window-navigator-overflow>button{display:grid;place-items:center;width:22px;height:22px;padding:0;color:var(--bv-ui-muted);cursor:pointer;background:transparent;border:1px solid transparent;border-radius:var(--bv-ui-radius-sm)}.bv-window-navigator-overflow>button:hover,.bv-window-navigator-overflow>button[aria-expanded=true]{color:var(--bv-ui-text);background:#ffffff0b;border-color:var(--bv-ui-border)}.bv-window-navigator-menu{color:var(--bv-ui-text);background:var(--bv-ui-surface-raised);border:1px solid var(--bv-ui-border-hover);border-radius:var(--bv-ui-radius);box-shadow:0 14px 42px #000b}.bv-window-navigator-panel{display:grid;gap:7px;width:min(260px,calc(100vw - 24px));padding:8px}.bv-window-navigator-panel-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0;color:var(--bv-ui-muted)}.bv-window-navigator-panel-row.is-node>.bv-select-popover{width:100%}.bv-ui-window-header.is-menu-overflow .bv-ui-window-title-full{display:none}.bv-ui-window-header.is-menu-overflow .bv-ui-window-title-short{display:inline}.bv-ui-window-shelf-icon{display:grid;place-items:center;width:calc(24px * var(--bv-ui-scale));height:calc(24px * var(--bv-ui-scale));color:var(--bv-ui-accent-soft);background:rgba(var(--bv-ui-accent-rgb),.14);border-radius:var(--bv-ui-radius-sm)}.artboard-tools{position:absolute;z-index:12;top:12px;left:12px;display:flex;align-items:flex-start;gap:7px;pointer-events:none}.artboard-tools .bv-toolbar{pointer-events:auto}.zoom-controls{position:absolute;z-index:12;bottom:12px;left:50%;display:flex;gap:3px;padding:4px;border:1px solid #ffffff2b;border-radius:var(--bv-ui-radius);background:color-mix(in srgb,var(--comfy-menu-bg, #20242a) 92%,transparent);box-shadow:0 8px 25px #0009;backdrop-filter:blur(8px);transform:translate(-50%)}.zoom-controls button{min-width:32px;height:28px;padding:3px 8px;border-color:transparent;background:transparent}.zoom-controls button:nth-child(2){min-width:66px}.zoom-controls button:hover{background:#ffffff15}.tool-palette,.brush-flyout{pointer-events:auto;border:1px solid #ffffff2b;border-radius:var(--bv-ui-radius);background:color-mix(in srgb,var(--comfy-menu-bg, #20242a) 92%,transparent);box-shadow:0 8px 25px #0009;backdrop-filter:blur(8px)}.tool-palette{display:grid;gap:3px;padding:4px}.tool-palette button{display:grid;place-items:center;width:34px;height:34px;padding:6px;border-color:transparent;background:transparent}.tool-palette button:hover:not(:disabled){background:#ffffff15}.tool-palette button.active{background:var(--bv-primary-color)}.tool-palette button:disabled{opacity:.3;cursor:not-allowed}.tool-palette svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.brush-flyout{display:grid;width:235px;gap:8px;padding:10px}.brush-flyout header{min-height:0;padding:0 0 5px;border-bottom:1px solid #ffffff18}.brush-flyout header button{margin-left:auto}.brush-flyout label{display:grid;grid-template-columns:1fr auto;align-items:center;gap:4px 8px}.brush-flyout output{color:var(--bv-muted-text-color)}.brush-flyout input[type=range]{grid-column:1 / -1;width:100%;padding:0}.brush-flyout select{grid-column:1 / -1}.fixed-inspector .inspector-tabs{display:none}.bv-ui-dock .flexlayout__float_window{border:1px solid rgba(var(--bv-ui-accent-rgb),.36);border-radius:var(--bv-ui-radius);background:var(--bv-ui-surface);box-shadow:0 18px 48px #00000094,0 0 0 1px #ffffff09}.bv-ui-dock .flexlayout__float_window_header{min-height:31px;padding:6px 8px;color:var(--bv-ui-text);font-family:system-ui,-apple-system,Segoe UI,sans-serif;font-size:calc(12px * var(--bv-ui-scale));line-height:1.35;background:var(--bv-ui-surface-raised);border-bottom:1px solid var(--bv-ui-border)}.bv-ui-dock .flexlayout__float_window_drag_handle{min-width:22px;min-height:22px;padding:0 5px;color:var(--bv-ui-muted);border-radius:var(--bv-ui-radius-sm)}.bv-ui-dock .flexlayout__float_window_drag_handle:hover{color:var(--bv-ui-text);background:rgba(var(--bv-ui-accent-rgb),.14)}.bv-ui-dock .flexlayout__float_window_content{margin:0;background:var(--bv-ui-surface);border-radius:0 0 var(--bv-ui-radius) var(--bv-ui-radius)}.bv-detector-card{display:grid;gap:12px}.bv-detector-card-title{display:grid;min-width:0;gap:2px;margin-right:auto}.bv-detector-card-title strong,.bv-detector-card-title small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bv-detector-card-title small,.bv-detector-impact{color:var(--bv-ui-muted)}.bv-detector-impact{display:block;padding:8px 10px;border-left:2px solid rgba(var(--bv-ui-accent-rgb),.55);background:rgba(var(--bv-ui-accent-rgb),.07)}.bv-ui-empty-state{display:grid;place-items:center;min-height:160px;padding:28px;color:var(--bv-ui-muted);text-align:center;border:1px dashed var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-ui-empty-state strong{color:var(--bv-ui-text)}.bv-ui-empty-state p{margin:4px 0 0}.bv-inspector-section{display:grid;align-content:start;gap:calc(12px * var(--bv-ui-scale));min-width:0;padding:calc(10px * var(--bv-ui-scale))}.bv-inspector-section>h3{margin:0;font-size:calc(13px * var(--bv-ui-scale))}.inspector-tab-panel>.bv-inspector-section+.bv-inspector-section{border-top:1px solid var(--bv-ui-border)}.bv-compact-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,125px),1fr));gap:calc(10px * var(--bv-ui-scale));min-width:0}.bv-inspector-section{container:bv-inspector-section / inline-size}.bv-layer-bounds-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--bv-ui-field-gap);min-width:0}@container bv-inspector-section (max-width:220px){.bv-layer-bounds-grid{grid-template-columns:1fr}}.bv-control-field,.bv-number-field{display:grid;gap:var(--bv-ui-field-gap);min-width:0;color:var(--bv-ui-muted);font-size:calc(11px * var(--bv-ui-scale))}.bv-control-label,.bv-number-field>label{color:var(--bv-ui-muted)}.bv-control-help{color:var(--bv-ui-muted);font-size:calc(10px * var(--bv-ui-scale));line-height:1.4}.bv-select-shell{position:relative;display:block;min-width:0}.bv-select-shell select{width:100%;height:var(--bv-ui-control-height);padding:0 calc(36px * var(--bv-ui-scale)) 0 calc(11px * var(--bv-ui-scale));appearance:none;color:var(--bv-ui-text);background:var(--bv-ui-input);border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius);outline:0}.bv-select-shell>svg{position:absolute;top:50%;right:calc(10px * var(--bv-ui-scale));width:calc(16px * var(--bv-ui-scale));height:calc(16px * var(--bv-ui-scale));translate:0 -50%;fill:none;stroke:var(--bv-ui-muted);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.bv-select-shell:hover{border-color:var(--bv-ui-border-hover)}.bv-number-field{grid-template-columns:minmax(0,1fr)}.bv-number-slider{position:relative;min-width:0;padding-top:calc(9px * var(--bv-ui-scale))}.bv-number-slider output{position:absolute;z-index:2;left:var(--bubble-left,50%);bottom:calc(100% + 4px);translate:-50% 2px;padding:3px 6px;color:var(--bv-ui-text);white-space:nowrap;background:#302c3a;border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius-sm);font-size:calc(10px * var(--bv-ui-scale));opacity:0;pointer-events:none}.bv-number-slider:hover output,.bv-number-slider:focus-within output{opacity:1;translate:-50% 0}.bv-number-track{width:100%;height:18px;margin:0;padding:0!important;appearance:none;background:transparent!important;border:0!important;cursor:pointer}.bv-number-track::-webkit-slider-runnable-track{height:4px;border-radius:999px;background:linear-gradient(90deg,var(--bv-ui-accent) 0 var(--range-fill),rgba(168,161,179,.18) var(--range-fill) 100%)}.bv-number-track::-webkit-slider-thumb{width:16px;height:16px;margin-top:-6px;appearance:none;border:2px solid var(--bv-ui-surface);border-radius:50%;background:var(--bv-ui-accent);box-shadow:0 0 0 1px rgba(var(--bv-ui-accent-rgb),.38)}.bv-number-box{display:flex;min-width:0;height:var(--bv-ui-control-height);overflow:hidden;background:var(--bv-ui-input);border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-number-box:focus-within{border-color:var(--bv-ui-accent);box-shadow:0 0 0 3px rgba(var(--bv-ui-accent-rgb),.18)}.bv-number-box input{min-width:0;width:100%;padding:0 calc(10px * var(--bv-ui-scale));color:var(--bv-ui-text);text-align:right;background:transparent;border:0;outline:0;font-variant-numeric:tabular-nums}.bv-number-box>span{display:grid;place-items:center;min-width:calc(34px * var(--bv-ui-scale));padding:0 7px;border-left:1px solid var(--bv-ui-border);background:#ffffff08}.bv-number-ticks{display:flex;justify-content:space-between;color:var(--bv-ui-muted);font-size:calc(9px * var(--bv-ui-scale))}.bv-textarea-shell{display:flex;min-width:0;max-width:100%;min-height:calc(100px * var(--bv-ui-scale));overflow:hidden;background:var(--bv-ui-input);border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-textarea-shell:hover{border-color:var(--bv-ui-border-hover)}.bv-textarea-shell:focus-within{border-color:var(--bv-ui-accent);box-shadow:0 0 0 3px rgba(var(--bv-ui-accent-rgb),.18)}.bv-textarea-shell textarea{width:100%;min-width:0;min-height:calc(98px * var(--bv-ui-scale));max-height:360px;padding:calc(9px * var(--bv-ui-scale)) calc(10px * var(--bv-ui-scale));color:var(--bv-ui-text);background:transparent;border:0;outline:0;resize:vertical;font:inherit;line-height:1.45}.bv-control-disclosure{margin:0;padding:0!important;overflow:hidden;border:1px solid var(--bv-ui-border)!important;border-radius:var(--bv-ui-radius)!important}.bv-control-disclosure>summary{position:relative;margin:0!important;padding:calc(9px * var(--bv-ui-scale)) calc(12px * var(--bv-ui-scale));list-style:none}.bv-control-disclosure>summary::-webkit-details-marker{display:none}.bv-control-disclosure>summary:after{content:"›";position:absolute;right:12px;font-size:18px;line-height:1}.bv-control-disclosure[open]>summary:after{transform:rotate(90deg)}.bv-control-disclosure-body{display:grid;gap:calc(10px * var(--bv-ui-scale));padding:calc(10px * var(--bv-ui-scale));border-top:1px solid var(--bv-ui-border)}.bv-control-field{container:bv-control-field / inline-size;display:grid;align-self:start;gap:var(--bv-ui-field-gap);min-width:0;color:var(--bv-ui-muted)}.bv-field-grid,.bv-choice-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,var(--bv-field-grid-min,165px)),1fr));gap:calc(9px * var(--bv-ui-scale));min-width:0}.bv-choice-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,var(--bv-choice-grid-min,145px)),1fr));gap:var(--bv-ui-field-gap)}.bv-editor-dialog,.bv-card-list,.bv-editor-item-summary{display:grid;gap:calc(10px * var(--bv-ui-scale));min-width:0}.bv-editor-item-compact-summary,.bv-detector-summary{display:flex;align-items:center;gap:calc(6px * var(--bv-ui-scale));min-width:0;color:var(--bv-ui-muted);font-size:calc(10px * var(--bv-ui-scale))}.bv-editor-item-compact-summary>span,.bv-detector-summary>span{max-width:220px;overflow:hidden;padding:2px 6px;text-overflow:ellipsis;white-space:nowrap;background:#ffffff09;border:1px solid var(--bv-ui-border);border-radius:999px}.bv-detector-summary{width:100%}.bv-detector-summary>strong{min-width:90px;color:var(--bv-ui-text)}.bv-detector-summary>span:nth-last-child(1){margin-left:auto}.bv-editor-item-details,.bv-detector-details{display:grid;gap:calc(10px * var(--bv-ui-scale))}.bv-editor-item-actions{display:flex;justify-content:flex-end;gap:var(--bv-ui-field-gap)}.bv-subtle-danger:hover:not(:disabled){color:#f19aa8;background:#d35d711a;border-color:#d35d7129}.bv-editor-impact{color:var(--bv-ui-muted)}.bv-control-label{display:flex;align-items:center;gap:6px;font-size:calc(11px * var(--bv-ui-scale))}.bv-control-help,.bv-control-message{color:var(--bv-ui-muted);font-size:calc(10px * var(--bv-ui-scale));line-height:1.4}.bv-control-message.is-error,.bv-control-field.is-error{color:#f19aa8}.bv-density-compact .bv-control-field,.bv-density-compact .bv-number-field{position:relative}.bv-density-compact .bv-control-help-overlay{position:absolute;z-index:30;top:calc(100% + 4px);left:0;width:max-content;max-width:min(280px,calc(100vw - 24px));padding:5px 7px;opacity:0;color:var(--bv-ui-text);background:#0d0c12;border:1px solid var(--bv-ui-border-hover);border-radius:var(--bv-ui-radius-sm);box-shadow:0 8px 20px #0009;pointer-events:none;transition:opacity .12s ease}.bv-density-compact .bv-control-field:hover>.bv-control-help-overlay,.bv-density-compact .bv-control-field:focus-within>.bv-control-help-overlay,.bv-density-compact .bv-number-field:hover>.bv-control-help-overlay,.bv-density-compact .bv-number-field:focus-within>.bv-control-help-overlay{opacity:1}.bv-input-shell,.bv-select-shell{position:relative;display:flex;align-items:stretch;min-width:0;min-height:var(--bv-ui-control-height);overflow:hidden;color:var(--bv-ui-text);background:var(--bv-ui-input);border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-input-shell:focus-within,.bv-select-shell:focus-within,.bv-number-box:focus-within,.bv-textarea-shell:focus-within{border-color:var(--bv-ui-accent);box-shadow:0 0 0 3px rgba(var(--bv-ui-accent-rgb),.18)}.bv-input-shell>input,.bv-select-shell>select{width:100%;min-width:0;min-height:0;padding:0 calc(11px * var(--bv-ui-scale));color:inherit;background:transparent;border:0;outline:0}.bv-select-shell>select{appearance:none;padding-right:36px}.bv-field-icon,.bv-field-suffix,.bv-number-unit{display:grid;place-items:center;flex:0 0 auto;min-width:calc(34px * var(--bv-ui-scale));padding:0 7px;color:var(--bv-ui-muted);background:#ffffff06}.bv-input-shell>.bv-field-icon{border-right:1px solid var(--bv-ui-border)}.bv-field-suffix,.bv-number-unit{border-left:1px solid var(--bv-ui-border)}.bv-chevron{display:inline-block;width:8px;height:8px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg) translateY(-2px)}.bv-select-shell>.bv-chevron{position:absolute;top:50%;right:13px;transform:translateY(-65%) rotate(45deg);pointer-events:none}.bv-select-popover{position:relative;min-width:0}.bv-select-trigger{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:var(--bv-ui-field-gap);width:100%;min-height:var(--bv-ui-control-height);padding:0 var(--bv-ui-content-padding);color:var(--bv-ui-text);text-align:left;background:var(--bv-ui-input);border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-select-trigger:hover:not(:disabled){border-color:var(--bv-ui-border-hover)}.bv-select-trigger:focus-visible,.bv-select-trigger[aria-expanded=true]{outline:0;border-color:var(--bv-ui-accent);box-shadow:0 0 0 3px rgba(var(--bv-ui-accent-rgb),.18)}.bv-select-trigger>.bv-chevron{justify-self:end}.bv-select-menu{z-index:120;display:grid;gap:2px;max-width:min(360px,calc(100vw - 24px));max-height:min(280px,50vh);padding:var(--bv-ui-field-gap);overflow:auto;color:var(--bv-ui-text);background:var(--bv-ui-surface-raised);border:1px solid var(--bv-ui-border-hover);border-radius:var(--bv-ui-radius);box-shadow:0 14px 42px #000b}.bv-select-menu>button{display:flex;align-items:center;gap:var(--bv-ui-field-gap);min-width:100%;min-height:var(--bv-ui-control-height);padding:0 var(--bv-ui-content-padding);color:var(--bv-ui-text);text-align:left;white-space:nowrap;background:transparent;border:1px solid transparent;border-radius:var(--bv-ui-radius)}.bv-select-menu>button:hover:not(:disabled),.bv-select-menu>button[aria-selected=true]{background:rgba(var(--bv-ui-accent-rgb),.14);border-color:rgba(var(--bv-ui-accent-rgb),.22)}.bv-select-menu>button:disabled{color:var(--bv-ui-muted);opacity:.45}.bv-input-shell>.bv-field-action{align-self:stretch;flex:0 0 auto;min-height:0;padding:0 var(--bv-ui-content-padding);color:var(--bv-ui-muted);background:#ffffff06;border:0;border-left:1px solid var(--bv-ui-border);border-radius:0}.bv-input-shell>.bv-field-action:hover:not(:disabled){color:var(--bv-ui-text);background:rgba(var(--bv-ui-accent-rgb),.12)}@container bv-control-field (max-width:220px){.bv-input-shell:has(.bv-field-action){flex-wrap:wrap;overflow:visible}.bv-input-shell:has(.bv-field-action)>input{flex-basis:100%;min-height:var(--bv-ui-control-height)}.bv-input-shell:has(.bv-field-action)>.bv-field-action{flex:1 1 auto;min-height:var(--bv-ui-control-height);border-top:1px solid var(--bv-ui-border)}.bv-input-shell:has(.bv-field-action)>.bv-field-action:first-of-type{border-left:0}.bv-keybinding{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.bv-keybinding>button:first-child{grid-column:1/-1}}.bv-number-field{container:bv-number-field / inline-size;display:grid;gap:var(--bv-ui-field-gap);min-width:0;color:var(--bv-ui-muted);font-size:calc(11px * var(--bv-ui-scale))}.bv-number-value-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(calc(148px * var(--bv-ui-scale)),38%);align-items:center;gap:calc(11px * var(--bv-ui-scale));min-width:0}.bv-number-field.direct-only .bv-number-value-row{grid-template-columns:1fr}.bv-number-box{display:flex;min-width:0;height:var(--bv-ui-control-height);overflow:hidden;color:var(--bv-ui-text);background:var(--bv-ui-input);border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-number-box>input{width:100%;min-width:0;min-height:0;padding:0 10px;text-align:right;background:transparent;border:0;outline:0;font-variant-numeric:tabular-nums}.bv-number-ticks{display:flex;justify-content:space-between;width:calc(62% - 6px);font-size:calc(9px * var(--bv-ui-scale))}@container bv-number-field (max-width:380px){.bv-number-field.has-slider .bv-number-value-row{grid-template-columns:1fr}.bv-number-field.has-slider .bv-number-box{grid-row:1;width:min(calc(292px * var(--bv-ui-scale)),100%);justify-self:center}.bv-number-field.has-slider .bv-number-slider{grid-row:2;width:100%}.bv-number-field.has-slider .bv-number-ticks{width:100%}}.bv-textarea-shell{display:flex;min-width:0;max-width:100%;min-height:var(--bv-ui-textarea-height);overflow:hidden;color:var(--bv-ui-text);background:var(--bv-ui-input);border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-textarea-shell>textarea{width:100%;min-width:0;min-height:calc(var(--bv-ui-textarea-height) - 2px);max-height:360px;padding:9px 10px;line-height:1.45;background:transparent;border:0;outline:0;resize:vertical;scrollbar-color:rgba(170,162,181,.55) transparent;scrollbar-width:thin}.bv-textarea-shell>textarea::-webkit-scrollbar{width:10px;height:10px}.bv-textarea-shell>textarea::-webkit-scrollbar-track{background:transparent}.bv-textarea-shell>textarea::-webkit-scrollbar-thumb{background:#aaa2b57a;border:2px solid var(--bv-ui-input);border-radius:999px}.bv-textarea-shell>textarea::-webkit-scrollbar-corner{background:var(--bv-ui-input)}.bv-textarea-shell>textarea::-webkit-resizer{background-color:var(--bv-ui-input);background-image:linear-gradient(135deg,transparent 0 48%,rgba(170,162,181,.3) 49% 56%,transparent 57% 65%,rgba(170,162,181,.55) 66% 73%,transparent 74%)}.bv-textarea-shell.resize-none>textarea{resize:none}.bv-textarea-shell.resize-both{max-width:100%;overflow:auto}.bv-textarea-shell.resize-both>textarea{resize:both;max-width:100%}.bv-button{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:var(--bv-ui-control-height);padding:0 calc(13px * var(--bv-ui-scale));color:var(--bv-ui-text);background:var(--bv-ui-surface-raised);border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius);cursor:pointer}.bv-button:hover:not(:disabled){border-color:var(--bv-ui-border-hover);background:#302d39}.bv-button.primary{background:var(--bv-ui-accent);border-color:var(--bv-ui-accent-hover)}.bv-button.ghost{color:var(--bv-ui-muted);background:transparent;border-color:transparent}.bv-button.danger{color:#f19aa8;background:#d35d7121}.bv-button.warning{color:#f0c275;background:#e9b65f1f}.bv-button.success{color:#83deb6;background:#55c9941f}.bv-button.icon-only{width:var(--bv-ui-control-height);padding:0}.bv-button:disabled{opacity:.42;cursor:not-allowed}.bv-menu-button,.bv-split-button,.bv-popover-host,.bv-rich-select,.bv-search-field,.bv-image-picker{position:relative}.bv-menu,.bv-rich-select-menu,.bv-search-results,.bv-image-picker-menu,.bv-popover{position:absolute;z-index:100;top:calc(100% + 6px);right:0;min-width:220px;padding:5px;color:var(--bv-ui-text);background:var(--bv-ui-surface-raised);border:1px solid var(--bv-ui-border-hover);border-radius:var(--bv-ui-radius);box-shadow:0 14px 42px #000b}.bv-menu-content>button,.bv-rich-select-menu>button,.bv-search-results>button,.bv-image-picker-menu>button{display:flex;align-items:center;gap:var(--bv-ui-field-gap);width:100%;padding:var(--bv-ui-field-gap) var(--bv-ui-content-padding);text-align:left;background:transparent;border:0;border-radius:var(--bv-ui-radius)}.bv-menu-content>button:hover,.bv-rich-select-menu>button:hover,.bv-search-results>button:hover,.bv-image-picker-menu>button:hover{background:rgba(var(--bv-ui-accent-rgb),.12)}.bv-menu-content kbd{margin-left:auto}.bv-split-button{display:inline-flex}.bv-split-button>.bv-button:first-child{border-radius:var(--bv-ui-radius) 0 0 var(--bv-ui-radius)}.bv-split-button>.bv-button:nth-child(2){border-radius:0 var(--bv-ui-radius) var(--bv-ui-radius) 0;border-left-color:#fff3}.bv-toggle{display:flex;align-items:center;gap:10px;padding:0;color:var(--bv-ui-text);background:transparent;border:0}.bv-toggle-track{width:42px;height:23px;padding:3px;background:#35313f;border:1px solid var(--bv-ui-border);border-radius:999px}.bv-toggle-track>span{display:block;width:15px;height:15px;background:var(--bv-ui-muted);border-radius:50%;transition:translate .15s}.bv-toggle[aria-checked=true] .bv-toggle-track{background:rgba(var(--bv-ui-accent-rgb),.35);border-color:var(--bv-ui-accent)}.bv-toggle[aria-checked=true] .bv-toggle-track>span{translate:19px;background:var(--bv-ui-accent-soft)}.bv-checkbox-field{display:flex;align-items:flex-start;gap:9px;color:var(--bv-ui-text)}.bv-checkbox-field>input{position:absolute;opacity:0}.bv-checkbox-mark{display:grid;width:var(--bv-ui-check-size);height:var(--bv-ui-check-size);flex:none;border:1px solid var(--bv-ui-muted);border-radius:var(--bv-ui-radius-sm)}.bv-checkbox-field>input:checked+.bv-checkbox-mark{border-color:var(--bv-ui-accent)}.bv-checkbox-field>input:checked+.bv-checkbox-mark:after{content:"";width:8px;height:4px;margin:4px 3px;border-left:2px solid var(--bv-ui-accent);border-bottom:2px solid var(--bv-ui-accent);transform:rotate(-45deg)}.bv-checkbox-field small{display:block;color:var(--bv-ui-muted)}.bv-option-set{display:flex}.bv-option-set>button{min-height:var(--bv-ui-control-height);padding:0 12px;color:var(--bv-ui-muted);background:var(--bv-ui-input);border:1px solid var(--bv-ui-border)}.bv-option-set>button+button{border-left:0}.bv-option-set>button:first-child{border-radius:var(--bv-ui-radius) 0 0 var(--bv-ui-radius)}.bv-option-set>button:last-child{border-radius:0 var(--bv-ui-radius) var(--bv-ui-radius) 0}.bv-option-set>button[aria-checked=true]{z-index:1;color:var(--bv-ui-text);background:rgba(var(--bv-ui-accent-rgb),.2);border-color:var(--bv-ui-accent);box-shadow:inset 0 0 0 1px var(--bv-ui-accent)}.bv-tag-input,.bv-multi-select{padding:var(--bv-ui-field-gap);color:var(--bv-ui-text);background:var(--bv-ui-input);border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-tag-values{display:flex;flex-wrap:wrap;gap:var(--bv-ui-field-gap)}.bv-tag{display:inline-flex;align-items:center;gap:4px;padding:var(--bv-ui-field-gap) var(--bv-ui-content-padding);background:rgba(var(--bv-ui-accent-rgb),.16);border:1px solid rgba(var(--bv-ui-accent-rgb),.28);border-radius:var(--bv-ui-radius)}.bv-tag>button{padding:0 2px;color:var(--bv-ui-muted);background:transparent;border:0}.bv-tag-input>input,.bv-multi-select>input{width:100%;min-height:var(--bv-ui-control-height);background:transparent;border:0;outline:0}.bv-tag-select{position:relative;min-width:0}.bv-tag-select-trigger{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:var(--bv-ui-field-gap);width:100%;min-height:var(--bv-ui-control-height);padding:3px var(--bv-ui-content-padding);color:var(--bv-ui-text);text-align:left;background:var(--bv-ui-input);border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-tag-select-trigger:hover{border-color:var(--bv-ui-border-hover)}.bv-tag-select-trigger:focus-visible,.bv-tag-select-trigger[aria-expanded=true]{outline:0;border-color:var(--bv-ui-accent);box-shadow:0 0 0 3px #8d70ff2e}.bv-tag-select-trigger>.bv-tag-values{min-width:0;overflow:hidden;flex-wrap:nowrap}.bv-tag-select-trigger .bv-tag{max-width:180px;padding:2px 6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bv-tag-select-trigger>.bv-chevron{justify-self:end}.bv-tag-select-menu>div>button{grid-template-columns:18px minmax(0,1fr)}.bv-tag-select-menu>div>button>span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bv-tag-select-check{display:grid;place-items:center;width:16px;height:16px;color:var(--bv-ui-accent-soft);border:1px solid var(--bv-ui-border-hover);border-radius:var(--bv-ui-radius-sm)}.bv-tag-select-menu button[aria-selected=true] .bv-tag-select-check{background:#8d70ff33;border-color:var(--bv-ui-accent)}.bv-tag-select-menu button:disabled{opacity:.7;cursor:not-allowed}.bv-color-field,.bv-keybinding{position:relative;display:flex;gap:7px}.bv-color-swatch{width:var(--bv-ui-control-height);flex:0 0 var(--bv-ui-control-height);border:1px solid var(--bv-ui-border-hover);border-radius:var(--bv-ui-radius)}.bv-color-field>input{flex:1;min-width:0;padding:0 10px;background:var(--bv-ui-input);border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-anchored-popover{position:fixed;right:auto;bottom:auto;min-width:0;z-index:var(--bv-layer-flyout)}.bv-color-popover{padding:10px;background:var(--bv-ui-surface-raised);border:1px solid var(--bv-ui-border-hover);border-radius:var(--bv-ui-radius);box-shadow:0 14px 34px #0000006b}.bv-color-popover .react-colorful{width:min(240px,calc(100vw - 36px))}.bv-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--bv-ui-field-gap);padding:var(--bv-ui-field-gap);background:var(--bv-ui-surface-raised);border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-toolbar.vertical{width:max-content;flex-direction:column}.bv-toolbar-divider{align-self:stretch;border-left:1px solid var(--bv-ui-border)}.bv-toolbar.vertical .bv-toolbar-divider{border-left:0;border-top:1px solid var(--bv-ui-border)}.bv-toolbar .active{color:var(--bv-ui-accent-soft);background:rgba(var(--bv-ui-accent-rgb),.18)}.bv-toolbar .bv-button>svg{width:calc(18px * var(--bv-ui-scale));height:calc(18px * var(--bv-ui-scale));fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.bv-section,.bv-card{min-width:0;color:var(--bv-ui-text)}.bv-section.outlined,.bv-card{border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-section.raised{background:var(--bv-ui-surface-raised);border-radius:var(--bv-ui-radius)}.bv-section>header,.bv-card>header{display:flex;align-items:center;gap:var(--bv-ui-field-gap);padding:var(--bv-ui-content-padding)}.bv-section>header>div,.bv-card>header>div{flex:1;min-width:0}.bv-section h3,.bv-section p{margin:0}.bv-section p,.bv-card small{color:var(--bv-ui-muted)}.bv-section-body,.bv-card>div{padding:var(--bv-ui-content-padding)}.bv-card.interactive{display:block;width:100%;text-align:left;background:transparent}.bv-callout{display:flex;gap:var(--bv-ui-field-gap);padding:var(--bv-ui-content-padding);color:var(--bv-ui-text);background:#ffffff09;border:1px solid var(--bv-ui-border);border-left:3px solid var(--bv-ui-muted);border-radius:var(--bv-ui-radius-sm)}.bv-callout.info{border-left-color:#72a7ff}.bv-callout.success{border-left-color:var(--bv-ui-success)}.bv-callout.warning{border-left-color:var(--bv-ui-warning)}.bv-callout.danger{border-left-color:var(--bv-ui-danger)}.bv-callout>div{flex:1}.bv-badge{display:inline-flex;align-items:center;padding:3px 7px;color:var(--bv-ui-muted);background:#ffffff0f;border-radius:999px;font-size:.85em}.bv-badge.success{color:#83deb6}.bv-badge.warning{color:#f0c275}.bv-badge.danger{color:#f19aa8}.bv-dialog-layer{position:fixed;z-index:var(--bv-layer-modal);inset:0;display:grid;place-items:center;padding:16px}.bv-dialog-layer.modal{background:#08070a9e}.bv-dialog-layer.modeless{place-items:start end;pointer-events:none}.bv-dialog{display:grid;grid-template-rows:auto minmax(0,1fr) auto;width:min(680px,calc(100vw - 32px));max-height:86vh;overflow:hidden;color:var(--bv-ui-text);background:var(--bv-ui-surface);border:1px solid var(--bv-ui-border-hover);border-radius:var(--bv-ui-radius-lg);box-shadow:0 28px 90px #000c;pointer-events:auto}.bv-dialog.small{width:min(480px,calc(100vw - 32px))}.bv-dialog.large{width:min(1040px,calc(100vw - 32px))}.bv-dialog>header,.bv-dialog>footer{display:flex;align-items:flex-start;gap:var(--bv-ui-field-gap);padding:var(--bv-ui-content-padding);background:var(--bv-ui-surface-raised)}.bv-dialog>header>div{flex:1}.bv-dialog h2,.bv-dialog p{margin:0}.bv-dialog-body{min-height:0;overflow:auto;padding:var(--bv-ui-content-padding)}.bv-tree{color:var(--bv-ui-text)}.bv-tree-row{display:grid;grid-template-columns:22px auto minmax(0,1fr) auto auto;align-items:center;gap:var(--bv-ui-field-gap);min-height:var(--bv-ui-row-height);padding:var(--bv-ui-field-gap);border:1px solid transparent;border-radius:var(--bv-ui-radius)}.bv-tree [role=treeitem][aria-selected=true]>.bv-tree-row{background:rgba(var(--bv-ui-accent-rgb),.15);border-color:rgba(var(--bv-ui-accent-rgb),.42)}.bv-tree [role=group]{margin-left:17px;padding-left:8px;border-left:1px solid rgba(var(--bv-ui-accent-rgb),.25)}.bv-tree-expander{display:grid;place-items:center;padding:0;color:var(--bv-ui-muted);background:transparent;border:0}.bv-tree [aria-expanded=false]>.bv-tree-row .bv-chevron{transform:rotate(-45deg)}.bv-tree-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bv-tree-meta{color:var(--bv-ui-muted);font-size:.85em}.bv-showcase{display:grid;grid-template-columns:240px minmax(0,1fr);min-height:100vh;color:var(--bv-ui-text);background:var(--bv-ui-bg)}.bv-showcase>aside{position:sticky;top:0;height:100vh;display:grid;align-content:start;gap:4px;padding:24px 16px;background:var(--bv-ui-surface);border-right:1px solid var(--bv-ui-border)}.bv-showcase>aside a{padding:8px 10px;color:var(--bv-ui-muted);text-decoration:none;border-radius:var(--bv-ui-radius)}.bv-showcase>aside a:hover{color:var(--bv-ui-text);background:#8d70ff1f}.bv-showcase>main{display:grid;gap:22px;width:min(1180px,100%);padding:32px}.bv-showcase>main>header{display:flex;align-items:end;justify-content:space-between;gap:18px}.bv-showcase>main>header>div{min-width:0}.bv-showcase>main>header>.bv-control-field{width:min(320px,100%)}.bv-showcase>main>header h1,.bv-showcase>main>header p{margin:0}.bv-demo-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:14px}.bv-showcase .bv-section-body{display:grid;gap:14px}.bv-window-contract-demo{container:bv-window-header / inline-size;display:grid;grid-template-rows:auto minmax(100px,1fr) auto;min-width:0;overflow:hidden;background:var(--bv-ui-surface);border:1px solid var(--bv-ui-border-hover);border-radius:var(--bv-ui-radius)}.bv-window-contract-demo>.bv-ui-window-header{position:relative}.bv-window-contract-body{display:grid;align-content:center;gap:4px;padding:var(--bv-ui-content-padding);color:var(--bv-ui-muted)}.bv-window-contract-body strong{color:var(--bv-ui-text)}.bv-demo-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.bv-panel-demo{overflow:hidden;background:var(--bv-ui-surface);border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-panel-demo>div{padding:var(--bv-ui-content-padding);color:var(--bv-ui-muted)}@media (max-width:760px){.bv-showcase{grid-template-columns:1fr}.bv-showcase>aside{position:relative;display:flex;height:auto;padding:10px;overflow-x:auto}.bv-showcase>aside h2{margin:0 8px 0 0}.bv-showcase>aside a{white-space:nowrap}.bv-showcase>main{padding:12px}.bv-showcase>main>header{align-items:stretch;flex-direction:column}.bv-showcase>main>header>.bv-control-field{width:100%}.bv-toast-stack{right:12px;bottom:12px;left:12px}.bv-toast{width:100%}}.bv-density-compact .bv-toggle-track{width:36px;height:20px;padding:2px}.bv-density-compact .bv-toggle-track>span{width:14px;height:14px}.bv-density-compact .bv-toggle[aria-checked=true] .bv-toggle-track>span{translate:16px}.bv-density-compact .bv-badge{padding:2px 6px}.bv-density-compact .bv-tooltip{padding:4px 7px}.bv-density-compact .bv-menu,.bv-density-compact .bv-rich-select-menu,.bv-density-compact .bv-search-results,.bv-density-compact .bv-image-picker-menu,.bv-density-compact .bv-popover{padding:var(--bv-ui-field-gap)}.bv-card>header>div,.bv-rich-select-trigger>span,.bv-rich-select-menu button>span,.bv-search-results button>span,.bv-image-picker button>span{display:grid;gap:2px}.bv-card>header>div small,.bv-rich-select small,.bv-search-results small,.bv-image-picker small{color:var(--bv-ui-muted);font-size:.84em}.bv-rich-select-trigger,.bv-image-picker-trigger{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:var(--bv-ui-field-gap);width:100%;min-height:var(--bv-ui-control-height);padding:var(--bv-ui-field-gap) var(--bv-ui-content-padding);color:var(--bv-ui-text);text-align:left;background:var(--bv-ui-input);border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-rich-select-trigger>.bv-chevron,.bv-image-picker-trigger>.bv-chevron{justify-self:end}.bv-image-picker-control{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:stretch;min-width:0;overflow:hidden;background:var(--bv-ui-input);border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-image-picker-control:focus-within{border-color:var(--bv-ui-accent);box-shadow:0 0 0 3px #8d70ff2e}.bv-image-picker-control .bv-image-picker-trigger{min-width:0;padding:var(--bv-ui-field-gap) var(--bv-ui-content-padding);background:transparent;border:0;border-radius:0}.bv-image-preview-action,.bv-image-picker-toggle{align-self:stretch;width:28px!important;min-height:0;padding:0;color:var(--bv-ui-muted);background:transparent;border:0;border-left:1px solid transparent;border-radius:0}.bv-image-preview-action:hover:not(:disabled),.bv-image-picker-toggle:hover:not(:disabled){color:var(--bv-ui-text);background:#8d70ff21;border-left-color:var(--bv-ui-border)}.bv-image-preview-action svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.bv-image-picker-toggle .bv-chevron{width:7px;height:7px}.bv-search-field .bv-input-shell>span:first-child{display:grid;place-items:center;width:34px;color:var(--bv-ui-muted)}.bv-search-results{left:0;right:auto;width:100%}.bv-keybinding{align-items:stretch}.bv-keybinding>button{min-height:var(--bv-ui-control-height);padding:0 10px;color:var(--bv-ui-text);background:var(--bv-ui-input);border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-keybinding>button:first-child{flex:1;text-align:left}.bv-compound-field{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,calc(132px * var(--bv-ui-scale))),1fr));align-self:start;gap:var(--bv-ui-field-gap);min-width:0;margin:0;padding:0;border:0}.bv-compound-field>legend{grid-column:1/-1;margin:0 0 1px;padding:0;color:var(--bv-ui-muted);font-size:calc(11px * var(--bv-ui-scale))}.bv-json-editor{overflow:hidden;color:var(--bv-ui-text);background:var(--bv-ui-input);border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-json-toolbar{display:flex;justify-content:flex-end;padding:var(--bv-ui-field-gap);background:var(--bv-ui-surface-raised);border-bottom:1px solid var(--bv-ui-border)}.bv-json-toolbar>button{min-height:28px;padding:0 9px;color:var(--bv-ui-text);background:transparent;border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-json-editor textarea,.bv-json-editor pre{outline:0!important;font:calc(11px * var(--bv-ui-scale))/1.45 var(--bv-ui-font-mono)!important}.bv-progress{display:grid;gap:var(--bv-ui-field-gap)}.bv-progress>div:first-child{display:flex;justify-content:space-between}.bv-progress [role=progressbar]{height:7px;overflow:hidden;background:var(--bv-ui-input);border-radius:999px}.bv-progress [role=progressbar]>span{display:block;height:100%;background:linear-gradient(90deg,var(--bv-ui-accent),var(--bv-ui-accent-light));border-radius:inherit}.bv-empty-state{display:grid;justify-items:center;gap:var(--bv-ui-field-gap);padding:calc(var(--bv-ui-content-padding) * 2);color:var(--bv-ui-muted);text-align:center;border:1px dashed var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-empty-state strong{color:var(--bv-ui-text)}.bv-empty-state p{margin:0}.bv-toast-stack{position:fixed;z-index:1000;right:18px;bottom:18px;display:grid;justify-items:end;gap:8px;max-width:calc(100vw - 24px)}.bv-toast{display:flex;align-items:flex-start;gap:10px;width:min(360px,calc(100vw - 24px));max-width:calc(100vw - 24px);min-width:0;padding:10px 10px 10px 12px;color:var(--bv-ui-text);background:var(--bv-ui-surface-raised);border:1px solid var(--bv-ui-border-hover);border-radius:var(--bv-ui-radius);box-shadow:0 12px 30px #0008}.bv-toast>div{flex:1 1 auto;min-width:0}.bv-toast strong{display:block;line-height:1.3}.bv-toast p{margin:4px 0 0;color:var(--bv-ui-muted);line-height:1.4;overflow-wrap:anywhere}.bv-toast>.bv-button{flex:0 0 auto;width:26px;min-width:26px;height:26px;padding:0;margin-top:-3px}.bv-breadcrumbs{display:flex;align-items:center;gap:var(--bv-ui-field-gap);color:var(--bv-ui-muted)}.bv-breadcrumbs button{padding:0;color:var(--bv-ui-accent-soft);background:transparent;border:0}.bv-tabs{container:bv-tabs / inline-size;min-width:0}.bv-tabs>div[role=tablist]{display:flex;align-items:end;min-height:var(--bv-ui-row-height);padding:var(--bv-ui-field-gap) var(--bv-ui-content-padding) 0;background:var(--bv-ui-surface-raised);border-bottom:1px solid var(--bv-ui-border)}.bv-tabs>div[role=tablist]>button{position:relative;min-height:var(--bv-ui-control-height);padding:0 var(--bv-ui-content-padding);color:var(--bv-ui-muted);background:transparent;border:0}.bv-tabs>div[role=tablist]>button[aria-selected=true]{color:var(--bv-ui-text)}.bv-tabs>div[role=tablist]>button[aria-selected=true]:after{content:"";position:absolute;right:0;bottom:0;left:0;height:2px;background:var(--bv-ui-accent)}.bv-tabs>[role=tabpanel]{padding:var(--bv-ui-content-padding)}.bv-tabs.vertical{display:grid;grid-template-columns:auto 1fr}.bv-tabs.vertical>div[role=tablist]{display:flex;flex-direction:column;align-items:stretch;padding:6px 0 6px 6px;border-right:1px solid var(--bv-ui-border);border-bottom:0}.bv-accordion{overflow:hidden;border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-accordion>section+section{border-top:1px solid var(--bv-ui-border)}.bv-accordion>section>button{display:flex;justify-content:space-between;align-items:center;width:100%;min-height:var(--bv-ui-row-height);padding:0 var(--bv-ui-content-padding);color:var(--bv-ui-text);text-align:left;background:var(--bv-ui-surface-raised);border:0}.bv-accordion>section>button .bv-chevron{flex:none;align-self:center;transform-origin:center}.bv-accordion>section>button[aria-expanded=true] .bv-chevron{transform:rotate(225deg)}.bv-accordion>section>div{padding:var(--bv-ui-content-padding)}.bv-pagination{display:flex;align-items:center;gap:3px}.bv-pagination button{min-width:var(--bv-ui-control-height);min-height:var(--bv-ui-control-height);padding:0 8px;color:var(--bv-ui-muted);background:transparent;border:1px solid transparent;border-radius:var(--bv-ui-radius)}.bv-pagination button[aria-current=page]{color:var(--bv-ui-text);background:var(--bv-ui-accent)}.bv-pagination button:hover{border-color:var(--bv-ui-border)}.bv-steps{display:flex;min-width:0;overflow-x:auto;counter-reset:steps;margin:0;padding:0;list-style:none}.bv-steps li{position:relative;display:grid;justify-items:center;gap:5px;flex:1;color:var(--bv-ui-muted)}.bv-steps li:not(:last-child):after{content:"";position:absolute;top:14px;left:calc(50% + 18px);width:calc(100% - 36px);border-top:1px solid var(--bv-ui-border)}.bv-steps li>span{z-index:1;display:grid;place-items:center;width:28px;height:28px;background:var(--bv-ui-surface-raised);border:1px solid var(--bv-ui-border);border-radius:50%}.bv-steps li.current,.bv-steps li.complete{color:var(--bv-ui-text)}.bv-steps li.current>span,.bv-steps li.complete>span{border-color:var(--bv-ui-accent)}.bv-tooltip-host{position:relative;display:inline-flex}.bv-tooltip-host>.bv-tooltip{position:absolute;z-index:110;bottom:calc(100% + 7px);left:50%;width:max-content;max-width:260px;padding:var(--bv-ui-field-gap) var(--bv-ui-content-padding);color:var(--bv-ui-text);background:#0d0c12;border:1px solid var(--bv-ui-border-hover);border-radius:var(--bv-ui-radius-sm);box-shadow:0 8px 20px #0009;translate:-50%;opacity:0;pointer-events:none}.bv-tooltip-host:hover>.bv-tooltip,.bv-tooltip-host:focus-within>.bv-tooltip{opacity:1}.bv-divider{display:flex;align-items:center;gap:9px;color:var(--bv-ui-muted)}.bv-divider:before,.bv-divider:after{content:"";flex:1;border-top:1px solid var(--bv-ui-border)}.bv-divider.vertical{flex-direction:column;align-self:stretch}.bv-divider.vertical:before,.bv-divider.vertical:after{border-top:0;border-left:1px solid var(--bv-ui-border)}.bv-code-block{overflow:hidden;background:#100f16;border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-code-block>header{display:flex;justify-content:space-between;align-items:center;min-height:var(--bv-ui-row-height);padding:0 var(--bv-ui-content-padding);color:var(--bv-ui-muted);background:var(--bv-ui-surface-raised);border-bottom:1px solid var(--bv-ui-border)}.bv-code-block pre{margin:0;padding:var(--bv-ui-content-padding);overflow:auto;font:calc(11px * var(--bv-ui-scale))/1.55 var(--bv-ui-font-mono)}.bv-code-line{display:block;min-height:1.55em}.bv-code-block.line-numbers pre{counter-reset:line}.bv-code-block.line-numbers .bv-code-line:before{counter-increment:line;content:counter(line);display:inline-block;width:2.5em;margin-right:1em;color:#6f6a7b;text-align:right}.bv-definition-list{container:bv-definition-list / inline-size;display:grid;gap:7px;margin:0}.bv-definition-row{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:18px}.bv-definition-list dt{color:var(--bv-ui-muted)}.bv-definition-list dd{margin:0}.bv-table-scroll{overflow:auto;border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-table-scroll table{width:100%;border-collapse:collapse}.bv-table-scroll th,.bv-table-scroll td{padding:var(--bv-ui-content-padding);text-align:left;border-bottom:1px solid var(--bv-ui-border)}.bv-table-scroll th{color:var(--bv-ui-muted);background:var(--bv-ui-surface-raised)}.bv-table-scroll tbody tr:last-child td{border-bottom:0}.bv-table-scroll .numeric{text-align:right}.bv-sortable-list{display:grid;gap:7px}.bv-sortable-list>article{container:bv-sortable-item / inline-size;overflow:hidden;background:var(--bv-ui-input);border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-sortable-list article>header{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:5px;min-height:var(--bv-ui-row-height);padding:var(--bv-ui-field-gap)}.bv-sortable-list>article>header>div{display:grid}.bv-sortable-list>article>header small{color:var(--bv-ui-muted)}.bv-drag-handle{width:30px;height:30px;color:var(--bv-ui-muted);background:transparent;border:0;cursor:grab}.bv-segmented-actions{display:inline-flex;align-items:stretch;overflow:hidden;border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-segmented-actions>.bv-button{width:30px;min-width:30px;border:0;border-radius:0}.bv-segmented-actions>.bv-button+.bv-button{border-left:1px solid var(--bv-ui-border)}.bv-segmented-actions .bv-chevron{transition:transform .15s}.bv-segmented-actions .bv-button[aria-expanded=true] .bv-chevron{transform:rotate(225deg)}.bv-sortable-summary,.bv-sortable-content{padding:var(--bv-ui-content-padding);border-top:1px solid var(--bv-ui-border)}.bv-sortable-content{background:#ffffff05}.bv-image-picker-trigger img,.bv-image-picker-menu img{width:42px;height:32px;object-fit:cover;border-radius:var(--bv-ui-radius-sm)}.bv-image-picker-menu{left:0;right:auto;width:100%}.bv-image-preview{position:fixed;z-index:var(--bv-layer-modal);inset:0;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 50% 42%,#221e2db3,#07060af0 70%);backdrop-filter:blur(3px)}.bv-image-preview-dialog{display:grid;grid-template-rows:auto minmax(0,1fr) auto;width:min(94vw,1600px);max-height:calc(100vh - 48px);overflow:hidden;color:var(--bv-ui-text);background:var(--bv-ui-surface);border:1px solid var(--bv-ui-border-hover);border-radius:var(--bv-ui-radius-lg);box-shadow:0 28px 90px #000d}.bv-image-preview-dialog>header{display:flex;align-items:center;gap:var(--bv-ui-content-padding);min-height:var(--bv-ui-row-height);padding:var(--bv-ui-field-gap) var(--bv-ui-content-padding);background:var(--bv-ui-surface-raised);border-bottom:1px solid var(--bv-ui-border)}.bv-image-preview-dialog>header>div{flex:1;min-width:0}.bv-image-preview-dialog h2{margin:0;overflow:hidden;font-size:calc(13px * var(--bv-ui-scale));text-overflow:ellipsis;white-space:nowrap}.bv-image-preview-dialog header small{color:var(--bv-ui-muted)}.bv-image-preview-icon{display:grid;place-items:center;width:26px;height:26px;color:#c7baff;background:#8d70ff21;border:1px solid rgba(141,112,255,.25);border-radius:var(--bv-ui-radius)}.bv-image-preview-icon svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.bv-image-preview-stage{display:grid;place-items:center;min-height:220px;max-height:calc(100vh - 140px);padding:18px;overflow:auto;background-color:#0d0c11;background-image:linear-gradient(45deg,rgba(255,255,255,.025) 25%,transparent 25%),linear-gradient(-45deg,rgba(255,255,255,.025) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,rgba(255,255,255,.025) 75%),linear-gradient(-45deg,transparent 75%,rgba(255,255,255,.025) 75%);background-position:0 0,0 8px,8px -8px,-8px 0;background-size:16px 16px}.bv-image-preview-stage>img{display:block;max-width:100%;max-height:calc(100vh - 176px);object-fit:contain;border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius);box-shadow:0 18px 50px #000a;transform-origin:center;user-select:none;will-change:transform}.bv-image-preview-stage.is-pannable{cursor:grab}.bv-image-preview-stage.is-dragging{cursor:grabbing}.bv-image-preview-stage:not(.is-dragging)>img{transition:transform .12s ease-out}.bv-image-preview-stage>span{color:var(--bv-ui-muted)}.bv-image-preview-dialog>footer{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:var(--bv-ui-content-padding);min-height:var(--bv-ui-row-height);padding:var(--bv-ui-field-gap) var(--bv-ui-content-padding);color:var(--bv-ui-muted);background:var(--bv-ui-surface-raised);border-top:1px solid var(--bv-ui-border);font-size:calc(10px * var(--bv-ui-scale))}.bv-image-preview-help{overflow:hidden;text-align:center;text-overflow:ellipsis;white-space:nowrap}.bv-image-preview-controls{display:flex;align-items:center;gap:2px}.bv-image-preview-controls .bv-button{min-height:24px}.bv-image-preview-controls .icon-only{width:24px}.bv-image-preview-controls output{width:48px;color:var(--bv-ui-text);text-align:center;font-variant-numeric:tabular-nums}@media (max-width:720px){.bv-image-preview-help{display:none}.bv-image-preview-dialog>footer{grid-template-columns:1fr auto}}.bv-command-palette{display:grid;gap:var(--bv-ui-field-gap)}.bv-command-input>span{display:grid;place-items:center;width:var(--bv-ui-control-height);color:var(--bv-ui-muted)}.bv-command-results{display:grid;gap:2px;max-height:min(420px,60vh);overflow:auto}.bv-command-option{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:var(--bv-ui-content-padding);width:100%;min-height:var(--bv-ui-row-height);padding:var(--bv-ui-field-gap) var(--bv-ui-content-padding);color:var(--bv-ui-text);text-align:left;background:transparent;border:1px solid transparent;border-radius:var(--bv-ui-radius)}.bv-command-option>span{display:grid;min-width:0}.bv-command-option small,.bv-command-option kbd{color:var(--bv-ui-muted)}.bv-command-option:hover,.bv-command-option[aria-selected=true]{background:rgba(var(--bv-ui-accent-rgb),.14);border-color:rgba(var(--bv-ui-accent-rgb),.25)}.bv-command-empty{margin:0;padding:calc(var(--bv-ui-content-padding) * 2);color:var(--bv-ui-muted);text-align:center}.bv-adaptive-field{container:bv-adaptive-field / inline-size;min-width:0}.bv-adaptive-inline{min-width:0}.bv-adaptive-trigger{display:none;width:100%;min-width:0;grid-template-columns:auto minmax(0,1fr) auto;text-align:left}.bv-adaptive-summary{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bv-adaptive-popover{width:min(calc(420px * var(--bv-ui-scale)),calc(100vw - 16px));padding:0;overflow:hidden;background:var(--bv-ui-surface-raised);border:1px solid var(--bv-ui-border-hover);border-radius:var(--bv-ui-radius);box-shadow:0 18px 48px #000c}.bv-adaptive-popover>header{display:flex;align-items:center;gap:var(--bv-ui-field-gap);min-height:var(--bv-ui-row-height);padding:var(--bv-ui-field-gap) var(--bv-ui-content-padding);border-bottom:1px solid var(--bv-ui-border)}.bv-adaptive-popover>header>strong{flex:1}.bv-adaptive-popover>div{display:grid;gap:var(--bv-ui-field-gap);padding:var(--bv-ui-content-padding)}.bv-number-popup{display:grid;gap:var(--bv-ui-field-gap)}.bv-number-popup .bv-number-ticks,.bv-number-popup .bv-number-slider{width:100%}.bv-number-popup .bv-number-box{width:min(calc(292px * var(--bv-ui-scale)),100%);justify-self:center}.bv-color-dot{width:14px;height:14px;border:1px solid var(--bv-ui-border-hover);border-radius:50%}.bv-color-expanded{display:grid;gap:var(--bv-ui-content-padding)}.bv-color-expanded>input{width:100%;min-height:var(--bv-ui-control-height);padding:0 var(--bv-ui-content-padding);color:var(--bv-ui-text);background:var(--bv-ui-input);border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-color-expanded .react-colorful{width:100%}@container bv-adaptive-field (max-width:220px){.bv-adaptive-inline{display:none}.bv-adaptive-trigger{display:grid}}.bv-select-menu>div,.bv-rich-select-menu>div,.bv-search-results>div,.bv-image-picker-menu>div{display:grid;gap:2px}.bv-select-menu>div>button,.bv-rich-select-menu>div>button,.bv-search-results>div>button,.bv-image-picker-menu>div>button{display:flex;align-items:center;gap:var(--bv-ui-field-gap);width:100%;min-height:var(--bv-ui-control-height);padding:var(--bv-ui-field-gap) var(--bv-ui-content-padding);color:var(--bv-ui-text);text-align:left;background:transparent;border:1px solid transparent;border-radius:var(--bv-ui-radius)}.bv-select-menu>div>button:hover:not(:disabled),.bv-rich-select-menu>div>button:hover:not(:disabled),.bv-search-results>div>button:hover:not(:disabled),.bv-image-picker-menu>div>button:hover:not(:disabled),.bv-select-menu>div>button[aria-selected=true],.bv-rich-select-menu>div>button[aria-selected=true],.bv-image-picker-menu>div>button[aria-selected=true]{background:rgba(var(--bv-ui-accent-rgb),.14);border-color:rgba(var(--bv-ui-accent-rgb),.24)}.bv-select-menu.bv-tag-select-menu>div>button{display:grid;grid-template-columns:18px minmax(0,1fr)}@container bv-tabs (max-width:280px){.bv-tabs:not(.vertical)>div[role=tablist]{align-items:stretch;overflow-x:auto}.bv-tabs:not(.vertical)>div[role=tablist]>button{flex:0 0 auto}.bv-tabs>[role=tabpanel]{min-width:0}}.bv-steps>li{min-width:88px}@container bv-definition-list (max-width:280px){.bv-definition-row{grid-template-columns:1fr;gap:2px}.bv-definition-row+.bv-definition-row{padding-top:var(--bv-ui-field-gap);border-top:1px solid var(--bv-ui-border)}}@container bv-sortable-item (max-width:280px){.bv-sortable-list>article>header{grid-template-columns:auto minmax(0,1fr) repeat(2,auto)}.bv-sortable-list>article>header>.bv-button{grid-row:2}.bv-sortable-list>article>header>div{grid-column:2/-1}}.bv-responsive-lab{display:grid;gap:18px}.bv-resizable-demo{width:min(100%,420px);min-width:150px;max-width:100%;resize:horizontal;overflow:auto;background:#12111680;border:1px dashed var(--bv-ui-border-hover);border-radius:var(--bv-ui-radius)}.bv-resizable-demo>header{display:flex;justify-content:space-between;gap:10px;padding:var(--bv-ui-field-gap) var(--bv-ui-content-padding);color:var(--bv-ui-muted);background:var(--bv-ui-surface-raised);border-bottom:1px solid var(--bv-ui-border)}.bv-resizable-demo>header strong{color:var(--bv-ui-text)}.bv-responsive-state:before{content:"Wide";color:var(--bv-ui-success)}@container (max-width:380px){.bv-responsive-state:before{content:"Medium";color:var(--bv-ui-warning)}}@container (max-width:220px){.bv-responsive-state:before{content:"Minimal";color:var(--bv-ui-accent-soft)}}.bv-resizable-demo>div{display:grid;gap:var(--bv-ui-content-padding);min-width:0;padding:var(--bv-ui-content-padding)}.bv-global-toast-stack{z-index:var(--bv-layer-toast);bottom:var(--bv-toast-bottom,18px)}.bv-window-header-utility{position:relative;display:inline-flex}.bv-window-visibility-menu-action{min-width:190px;padding:7px 9px;color:var(--bv-ui-text);background:transparent;border:0;text-align:left;cursor:pointer}.bv-window-visibility-menu-action:hover{background:var(--bv-ui-surface-hover)}.bv-toolbar-launcher-secondary{width:26px;height:26px;padding:0;color:var(--bv-ui-muted);background:transparent;border:0;border-radius:var(--bv-ui-radius-xs);cursor:pointer}.bv-toolbar-launcher-secondary:hover{color:var(--bv-ui-text);background:var(--bv-ui-surface-hover)}.bv-regional-action-control:before{mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M4 6h10v2H4V6Zm14-2h2v6h-2V4ZM4 16h4v2H4v-2Zm8-2h2v6h-2v-6Zm6 2h2v2h-2v-2ZM4 11h2v2H4v-2Zm6-2h2v6h-2V9Zm6 2h4v2h-4v-2Z'/%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M4 6h10v2H4V6Zm14-2h2v6h-2V4ZM4 16h4v2H4v-2Zm8-2h2v6h-2v-6Zm6 2h2v2h-2v-2ZM4 11h2v2H4v-2Zm6-2h2v6h-2V9Zm6 2h4v2h-4v-2Z'/%3E%3C/svg%3E")}.bv-toolbar-no-control .bv-regional-action-control,.bv-toolbar-no-editor .bv-regional-action-editor,.bv-toolbar-no-quick .bv-regional-action-quick,.bv-toolbar-no-overview .bv-regional-action-menu{display:none!important}.bv-tag-select-trigger:focus-visible,.bv-tag-select-trigger[aria-expanded=true],.bv-image-picker-control:focus-within{box-shadow:0 0 0 3px rgba(var(--bv-ui-accent-rgb),.18)}.bv-tag-select-menu button[aria-selected=true] .bv-tag-select-check{background:rgba(var(--bv-ui-accent-rgb),.2)}.bv-showcase>aside a:hover{background:rgba(var(--bv-ui-accent-rgb),.12)}.bv-image-preview-action:hover:not(:disabled),.bv-image-picker-toggle:hover:not(:disabled){background:rgba(var(--bv-ui-accent-rgb),.13)}.bv-image-preview-icon{color:var(--bv-ui-accent-soft);background:rgba(var(--bv-ui-accent-rgb),.13);border-color:rgba(var(--bv-ui-accent-rgb),.25)}.bv-m0-picker-host{position:relative;z-index:1;padding:6px}.bv-m0-picker-panel{display:grid;gap:7px}.bv-m0-picker-panel>.bv-control-field{grid-template-columns:1fr auto;align-items:center}.bv-m0-picker-panel>.bv-control-field>.bv-toggle{justify-self:end}.bv-resource-picker{display:grid;gap:5px}.bv-resource-picker.is-unresolved .bv-select-trigger{border-color:var(--bv-ui-danger)}.bv-resource-picker .bv-field-grid{align-items:end}.bv-resource-picker .bv-select-trigger{width:100%}.lg-node:has([node-type="BV M0 Fake Resource Collector"]) [node-type="BV M0 Fake Resource Collector"]:has(input[aria-label=collector_id]),.lg-node:has([node-type="BV M0 Fake Resource Collector"]) [node-type="BV M0 Fake Resource Collector"]:has(input[aria-label=resource_a_id]),.lg-node:has([node-type="BV M0 Fake Resource Collector"]) [node-type="BV M0 Fake Resource Collector"]:has(input[aria-label=resource_b_id]),.lg-node:has([node-type="BV M0 Fake Resource Consumer"]) [node-type="BV M0 Fake Resource Consumer"]:has(input[aria-label=collector_id]),.lg-node:has([node-type="BV M0 Fake Resource Consumer"]) [node-type="BV M0 Fake Resource Consumer"]:has(input[aria-label=resource_id]){display:none}.lg-slot:has(circle[fill*=BV_RUNTIME_RESOURCE_PROVIDER_M0],[style*=BV_RUNTIME_RESOURCE_PROVIDER_M0]){display:none!important}.lg-slot:has(circle[fill*=BV_RUNTIME_RESOURCE_PROVIDER],[style*=BV_RUNTIME_RESOURCE_PROVIDER]){display:none!important}.bv-lora-v3-picker-host{position:relative;z-index:1;padding:6px}.bv-lora-v3-picker-panel{display:grid;gap:10px}.bv-lora-v3-target{display:grid;gap:8px;padding:9px;border:1px solid var(--bv-ui-border);border-radius:4px}.bv-lora-v3-target>h3{margin:0}.bv-optional-lora-scope{display:grid;gap:7px}.bv-lora-v3-enable-row{display:grid;grid-template-columns:minmax(0,1fr);align-items:start;gap:8px}.bv-lora-v3-enable-row>.bv-control-field>.bv-control-label{display:none}.bv-lora-v3-enable-row>.bv-control-field .bv-toggle{white-space:nowrap}.bv-lora-v3-scope-picker{display:grid;gap:8px}.bv-lora-v3-stack-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 8px;align-items:end;padding:7px;border:1px solid var(--bv-ui-border);border-radius:4px}.bv-lora-v3-stack-row>strong,.bv-lora-v3-stack-row>.bv-resource-picker{grid-column:1}.bv-lora-v3-stack-row>.bv-button{grid-column:2;grid-row:2}.bv-trash-icon{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.bv-lora-v3-window{display:grid;gap:10px;padding:10px;overflow:auto}.lg-node:has([node-type="BV M0 Fake Multi Resource Consumer"]) [node-type="BV M0 Fake Multi Resource Consumer"]:has(input[aria-label=resource_bindings]){display:none}.bv-m0-multi-picker{max-height:520px;overflow:auto}.bv-m0-binding{display:grid;gap:5px;padding:6px;border:1px solid var(--bv-ui-border);border-radius:4px}.bv-m0-binding>header{display:flex;align-items:center;justify-content:space-between}.bv-m0-binding>header button,.bv-m0-add-binding{color:var(--bv-ui-text);background:var(--bv-ui-input);border:1px solid var(--bv-ui-border);border-radius:4px}.bv-m0-binding>header button{width:24px;height:24px}.bv-m0-add-binding{min-height:28px}`,X1='.flexlayout__theme_light .flexlayout__layout{--color-text: var(--flexlayout-color-text, black);--color-background: var(--flexlayout-color-background, white);--color-base: var(--flexlayout-color-base, white);--color-1: var(--flexlayout-color-1, rgb(97%, 97%, 97%));--color-2: var(--flexlayout-color-2, rgb(94%, 94%, 94%));--color-3: var(--flexlayout-color-3, rgb(91%, 91%, 91%));--color-4: var(--flexlayout-color-4, rgb(88%, 88%, 88%));--color-5: var(--flexlayout-color-5, rgb(85%, 85%, 85%));--color-6: var(--flexlayout-color-6, rgb(82%, 82%, 82%));--color-drag1: var(--flexlayout-color-drag1, rgb(95, 134, 196));--color-drag2: var(--flexlayout-color-drag2, rgb(119, 166, 119));--color-drag1-background: var(--flexlayout-color-drag1-background, rgba(95, 134, 196, .1));--color-drag2-background: var(--flexlayout-color-drag2-background, rgba(119, 166, 119, .075));--font-size: var(--flexlayout-font-size, medium);--font-family: var(--flexlayout-font-family, Roboto, Arial, sans-serif);--font-weight: var(--flexlayout-font-weight, normal);--splitter-size: var(--flexlayout-splitter-size, 8px);--splitter-active-size: var(--flexlayout-splitter-active-size, 8px);--splitter-handle-visibility: var(--flexlayout-splitter-handle-visibility, hidden);--color-overflow: var(--flexlayout-color-overflow, gray);--color-icon: var(--flexlayout-color-icon, gray);--color-focus: var(--flexlayout-color-focus, #3b7de7);--color-tabset-background: var(--flexlayout-color-tabset-background, var(--color-background));--color-tabset-background-selected: var(--flexlayout-color-tabset-background-selected, var(--color-1));--color-tabset-background-maximized: var(--flexlayout-color-tabset-background-maximized, var(--color-2));--color-tabset-divider-line: var(--flexlayout-color-tabset-divider-line, var(--color-4));--color-border-tab-content: var(--flexlayout-color-border-tab-content, var(--color-background));--color-border-background: var(--flexlayout-color-border-background, var(--color-background));--color-border-divider-line: var(--flexlayout-color-border-divider-line, var(--color-4));--color-tab-content: var(--flexlayout-color-tab-content, var(--color-background));--color-tab-selected: var(--flexlayout-color-tab-selected, var(--color-text));--color-tab-selected-background: var(--flexlayout-color-tab-selected-background, var(--color-4));--color-tab-unselected: var(--flexlayout-color-tab-unselected, gray);--color-tab-unselected-background: var(--flexlayout-color-tab-unselected-background, transparent);--color-tab-textbox: var(--flexlayout-color-tab-textbox, var(--color-text));--color-tab-textbox-background: var(--flexlayout-color-tab-textbox-background, var(--color-3));--color-border-tab-selected: var(--flexlayout-color-border-tab-selected, var(--color-text));--color-border-tab-selected-background: var(--flexlayout-color-border-tab-selected-background, var(--color-4));--color-border-tab-unselected: var(--flexlayout-color-border-tab-unselected, gray);--color-border-tab-unselected-background: var(--flexlayout-color-border-tab-unselected-background, var(--color-2));--color-splitter: var(--flexlayout-color-splitter, var(--color-1));--color-splitter-hover: var(--flexlayout-color-splitter-hover, var(--color-4));--color-splitter-drag: var(--flexlayout-color-splitter-drag, var(--color-4));--color-splitter-handle: var(--flexlayout-color-splitter-handle, var(--color-3));--color-drag-rect-border: var(--flexlayout-color-drag-rect-border, #ccc);--color-drag-rect-background: var(--flexlayout-color-drag-rect-background, var(--color-5));--color-drag-rect: var(--flexlayout-color-drag-rect, var(--color-text));--color-popup-border: var(--flexlayout-color-popup-border, var(--color-6));--color-popup-unselected: var(--flexlayout-color-popup-unselected, var(--color-text));--color-popup-unselected-background: var(--flexlayout-color-popup-unselected-background, var(--color-background));--color-popup-selected: var(--flexlayout-color-popup-selected, var(--color-text));--color-popup-selected-background: var(--flexlayout-color-popup-selected-background, var(--color-3));--color-edge-marker: var(--flexlayout-color-edge-marker, #aaa);--color-edge-icon: var(--flexlayout-color-edge-icon, #555);--color-mini-scroll-indicator: var(--flexlayout-color-mini-scroll-indicator, rgba(128, 128, 128, .5));--color-mini-scroll-indicator-hovered: var(--flexlayout-color-mini-scroll-indicator-hovered, rgba(128, 128, 128, .7));--size-mini-scroll-indicator: var(--flexlayout-size-mini-scroll-indicator, 3px);--color-toolbar-button-hover: var(--flexlayout-color-toolbar-button-hover, var(--color-3));--color-float-window-header-background: var(--flexlayout-color-float-window-header-background, var(--color-tabset-background))}.flexlayout__theme_dark .flexlayout__layout{--color-text: var(--flexlayout-color-text, #eeeeee);--color-background: var(--flexlayout-color-background, black);--color-base: var(--flexlayout-color-base, black);--color-1: var(--flexlayout-color-1, rgb(7%, 7%, 7%));--color-2: var(--flexlayout-color-2, rgb(10%, 10%, 10%));--color-3: var(--flexlayout-color-3, rgb(15%, 15%, 15%));--color-4: var(--flexlayout-color-4, #333333);--color-5: var(--flexlayout-color-5, rgb(25%, 25%, 25%));--color-6: var(--flexlayout-color-6, rgb(30%, 30%, 30%));--color-drag1: var(--flexlayout-color-drag1, rgb(207, 232, 255));--color-drag2: var(--flexlayout-color-drag2, rgb(183, 209, 181));--color-drag1-background: var(--flexlayout-color-drag1-background, rgba(128, 128, 128, .15));--color-drag2-background: var(--flexlayout-color-drag2-background, rgba(128, 128, 128, .15));--font-size: var(--flexlayout-font-size, medium);--font-family: var(--flexlayout-font-family, Roboto, Arial, sans-serif);--font-weight: var(--flexlayout-font-weight, normal);--splitter-size: var(--flexlayout-splitter-size, 8px);--splitter-active-size: var(--flexlayout-splitter-active-size, 8px);--splitter-handle-visibility: var(--flexlayout-splitter-handle-visibility, hidden);--color-overflow: var(--flexlayout-color-overflow, gray);--color-icon: var(--flexlayout-color-icon, gray);--color-focus: var(--flexlayout-color-focus, #93c5fd);--color-tabset-background: var(--flexlayout-color-tabset-background, var(--color-1));--color-tabset-background-selected: var(--flexlayout-color-tabset-background-selected, var(--color-1));--color-tabset-background-maximized: var(--flexlayout-color-tabset-background-maximized, var(--color-6));--color-tabset-divider-line: var(--flexlayout-color-tabset-divider-line, var(--color-4));--color-border-tab-content: var(--flexlayout-color-border-tab-content, var(--color-background));--color-border-background: var(--flexlayout-color-border-background, var(--color-1));--color-border-divider-line: var(--flexlayout-color-border-divider-line, var(--color-4));--color-tab-content: var(--flexlayout-color-tab-content, var(--color-background));--color-tab-selected: var(--flexlayout-color-tab-selected, var(--color-text));--color-tab-selected-background: var(--flexlayout-color-tab-selected-background, var(--color-4));--color-tab-unselected: var(--flexlayout-color-tab-unselected, gray);--color-tab-unselected-background: var(--flexlayout-color-tab-unselected-background, transparent);--color-tab-textbox: var(--flexlayout-color-tab-textbox, var(--color-text));--color-tab-textbox-background: var(--flexlayout-color-tab-textbox-background, var(--color-3));--color-border-tab-selected: var(--flexlayout-color-border-tab-selected, var(--color-text));--color-border-tab-selected-background: var(--flexlayout-color-border-tab-selected-background, var(--color-4));--color-border-tab-unselected: var(--flexlayout-color-border-tab-unselected, gray);--color-border-tab-unselected-background: var(--flexlayout-color-border-tab-unselected-background, var(--color-2));--color-splitter: var(--flexlayout-color-splitter, var(--color-2));--color-splitter-hover: var(--flexlayout-color-splitter-hover, var(--color-4));--color-splitter-drag: var(--flexlayout-color-splitter-drag, var(--color-5));--color-splitter-handle: var(--flexlayout-color-splitter-handle, var(--color-3));--color-drag-rect-border: var(--flexlayout-color-drag-rect-border, var(--color-4));--color-drag-rect-background: var(--flexlayout-color-drag-rect-background, var(--color-1));--color-drag-rect: var(--flexlayout-color-drag-rect, var(--color-text));--color-popup-border: var(--flexlayout-color-popup-border, var(--color-6));--color-popup-unselected: var(--flexlayout-color-popup-unselected, var(--color-text));--color-popup-unselected-background: var(--flexlayout-color-popup-unselected-background, var(--color-background));--color-popup-selected: var(--flexlayout-color-popup-selected, var(--color-text));--color-popup-selected-background: var(--flexlayout-color-popup-selected-background, var(--color-4));--color-edge-marker: var(--flexlayout-color-edge-marker, gray);--color-edge-icon: var(--flexlayout-color-edge-icon, #eee);--color-mini-scroll-indicator: var(--flexlayout-color-mini-scroll-indicator, rgba(128, 128, 128, .5));--color-mini-scroll-indicator-hovered: var(--flexlayout-color-mini-scroll-indicator-hovered, rgba(128, 128, 128, .8));--size-mini-scroll-indicator: var(--flexlayout-size-mini-scroll-indicator, 3px);--color-toolbar-button-hover: var(--flexlayout-color-toolbar-button-hover, var(--color-4));--color-float-window-header-background: var(--flexlayout-color-float-window-header-background, var(--color-tabset-background))}.flexlayout__theme_gray .flexlayout__layout{--color-text: var(--flexlayout-color-text, black);--color-background: var(--flexlayout-color-background, white);--color-base: var(--flexlayout-color-base, white);--color-1: var(--flexlayout-color-1, rgb(97%, 97%, 97%));--color-2: var(--flexlayout-color-2, rgb(90%, 90%, 90%));--color-3: var(--flexlayout-color-3, rgb(85%, 85%, 85%));--color-4: var(--flexlayout-color-4, #cccccc);--color-5: var(--flexlayout-color-5, rgb(75%, 75%, 75%));--color-6: var(--flexlayout-color-6, rgb(70%, 70%, 70%));--color-drag1: var(--flexlayout-color-drag1, rgb(95, 134, 196));--color-drag2: var(--flexlayout-color-drag2, rgb(119, 166, 119));--color-drag1-background: var(--flexlayout-color-drag1-background, rgba(95, 134, 196, .1));--color-drag2-background: var(--flexlayout-color-drag2-background, rgba(119, 166, 119, .075));--font-size: var(--flexlayout-font-size, medium);--font-family: var(--flexlayout-font-family, Roboto, Arial, sans-serif);--font-weight: var(--flexlayout-font-weight, normal);--splitter-size: var(--flexlayout-splitter-size, 8px);--splitter-active-size: var(--flexlayout-splitter-active-size, 8px);--splitter-handle-visibility: var(--flexlayout-splitter-handle-visibility, hidden);--color-overflow: var(--flexlayout-color-overflow, gray);--color-icon: var(--flexlayout-color-icon, gray);--color-focus: var(--flexlayout-color-focus, #3b7de7);--color-tabset-background: var(--flexlayout-color-tabset-background, var(--color-1));--color-tabset-background-selected: var(--flexlayout-color-tabset-background-selected, var(--color-1));--color-tabset-background-maximized: var(--flexlayout-color-tabset-background-maximized, var(--color-6));--color-tabset-divider-line: var(--flexlayout-color-tabset-divider-line, var(--color-3));--color-border-tab-content: var(--flexlayout-color-border-tab-content, var(--color-background));--color-border-background: var(--flexlayout-color-border-background, var(--color-1));--color-border-divider-line: var(--flexlayout-color-border-divider-line, var(--color-3));--color-tab-content: var(--flexlayout-color-tab-content, var(--color-background));--color-tab-selected: var(--flexlayout-color-tab-selected, var(--color-text));--color-tab-selected-background: var(--flexlayout-color-tab-selected-background, var(--color-3));--color-tab-unselected: var(--flexlayout-color-tab-unselected, gray);--color-tab-unselected-background: var(--flexlayout-color-tab-unselected-background, transparent);--color-tab-textbox: var(--flexlayout-color-tab-textbox, var(--color-text));--color-tab-textbox-background: var(--flexlayout-color-tab-textbox-background, var(--color-3));--color-border-tab-selected: var(--flexlayout-color-border-tab-selected, var(--color-text));--color-border-tab-selected-background: var(--flexlayout-color-border-tab-selected-background, var(--color-3));--color-border-tab-unselected: var(--flexlayout-color-border-tab-unselected, gray);--color-border-tab-unselected-background: var(--flexlayout-color-border-tab-unselected-background, var(--color-2));--color-splitter: var(--flexlayout-color-splitter, var(--color-2));--color-splitter-hover: var(--flexlayout-color-splitter-hover, var(--color-4));--color-splitter-drag: var(--flexlayout-color-splitter-drag, var(--color-5));--color-splitter-handle: var(--flexlayout-color-splitter-handle, var(--color-3));--color-drag-rect-border: var(--flexlayout-color-drag-rect-border, var(--color-4));--color-drag-rect-background: var(--flexlayout-color-drag-rect-background, var(--color-3));--color-drag-rect: var(--flexlayout-color-drag-rect, var(--color-text));--color-popup-border: var(--flexlayout-color-popup-border, var(--color-6));--color-popup-unselected: var(--flexlayout-color-popup-unselected, var(--color-text));--color-popup-unselected-background: var(--flexlayout-color-popup-unselected-background, var(--color-background));--color-popup-selected: var(--flexlayout-color-popup-selected, var(--color-text));--color-popup-selected-background: var(--flexlayout-color-popup-selected-background, var(--color-3));--color-edge-marker: var(--flexlayout-color-edge-marker, #aaa);--color-edge-icon: var(--flexlayout-color-edge-icon, #555);--color-mini-scroll-indicator: var(--flexlayout-color-mini-scroll-indicator, rgba(128, 128, 128, .5));--color-mini-scroll-indicator-hovered: var(--flexlayout-color-mini-scroll-indicator-hovered, rgba(128, 128, 128, .7));--size-mini-scroll-indicator: var(--flexlayout-size-mini-scroll-indicator, 3px);--color-toolbar-button-hover: var(--flexlayout-color-toolbar-button-hover, var(--color-4));--color-float-window-header-background: var(--flexlayout-color-float-window-header-background, var(--color-tabset-background))}.flexlayout__theme_underline .flexlayout__layout{--color-text: var(--flexlayout-color-text, black);--color-background: var(--flexlayout-color-background, white);--color-base: var(--flexlayout-color-base, white);--color-1: var(--flexlayout-color-1, rgb(98%, 98%, 98%));--color-2: var(--flexlayout-color-2, rgb(96%, 96%, 96%));--color-3: var(--flexlayout-color-3, rgb(93%, 93%, 93%));--color-4: var(--flexlayout-color-4, rgb(90%, 90%, 90%));--color-5: var(--flexlayout-color-5, rgb(87%, 87%, 87%));--color-6: var(--flexlayout-color-6, rgb(84%, 84%, 84%));--color-drag1: var(--flexlayout-color-drag1, rgb(95, 134, 196));--color-drag2: var(--flexlayout-color-drag2, rgb(119, 166, 119));--color-drag1-background: var(--flexlayout-color-drag1-background, rgba(95, 134, 196, .1));--color-drag2-background: var(--flexlayout-color-drag2-background, rgba(119, 166, 119, .075));--font-size: var(--flexlayout-font-size, medium);--font-family: var(--flexlayout-font-family, Roboto, Arial, sans-serif);--font-weight: var(--flexlayout-font-weight, normal);--splitter-size: var(--flexlayout-splitter-size, 8px);--splitter-active-size: var(--flexlayout-splitter-active-size, 8px);--splitter-handle-visibility: var(--flexlayout-splitter-handle-visibility, hidden);--color-overflow: var(--flexlayout-color-overflow, gray);--color-icon: var(--flexlayout-color-icon, gray);--color-focus: var(--flexlayout-color-focus, #3b7de7);--color-tabset-background: var(--flexlayout-color-tabset-background, var(--color-background));--color-tabset-background-selected: var(--flexlayout-color-tabset-background-selected, var(--color-1));--color-tabset-background-maximized: var(--flexlayout-color-tabset-background-maximized, var(--color-6));--color-tabset-divider-line: var(--flexlayout-color-tabset-divider-line, var(--color-3));--color-border-tab-content: var(--flexlayout-color-border-tab-content, var(--color-background));--color-border-background: var(--flexlayout-color-border-background, var(--color-background));--color-border-divider-line: var(--flexlayout-color-border-divider-line, var(--color-3));--color-tab-content: var(--flexlayout-color-tab-content, var(--color-background));--color-tab-selected: var(--flexlayout-color-tab-selected, var(--color-text));--color-tab-selected-background: var(--flexlayout-color-tab-selected-background, transparent);--color-tab-unselected: var(--flexlayout-color-tab-unselected, gray);--color-tab-unselected-background: var(--flexlayout-color-tab-unselected-background, transparent);--color-tab-textbox: var(--flexlayout-color-tab-textbox, var(--color-text));--color-tab-textbox-background: var(--flexlayout-color-tab-textbox-background, var(--color-3));--color-border-tab-selected: var(--flexlayout-color-border-tab-selected, var(--color-text));--color-border-tab-selected-background: var(--flexlayout-color-border-tab-selected-background, transparent);--color-border-tab-unselected: var(--flexlayout-color-border-tab-unselected, gray);--color-border-tab-unselected-background: var(--flexlayout-color-border-tab-unselected-background, transparent);--color-splitter: var(--flexlayout-color-splitter, var(--color-1));--color-splitter-hover: var(--flexlayout-color-splitter-hover, var(--color-4));--color-splitter-drag: var(--flexlayout-color-splitter-drag, var(--color-4));--color-splitter-handle: var(--flexlayout-color-splitter-handle, var(--color-3));--color-drag-rect-border: var(--flexlayout-color-drag-rect-border, var(--color-6));--color-drag-rect-background: var(--flexlayout-color-drag-rect-background, var(--color-4));--color-drag-rect: var(--flexlayout-color-drag-rect, var(--color-text));--color-popup-border: var(--flexlayout-color-popup-border, var(--color-6));--color-popup-unselected: var(--flexlayout-color-popup-unselected, var(--color-text));--color-popup-unselected-background: var(--flexlayout-color-popup-unselected-background, var(--color-background));--color-popup-selected: var(--flexlayout-color-popup-selected, var(--color-text));--color-popup-selected-background: var(--flexlayout-color-popup-selected-background, var(--color-3));--color-edge-marker: var(--flexlayout-color-edge-marker, #aaa);--color-edge-icon: var(--flexlayout-color-edge-icon, #555);--color-underline: var(--flexlayout-color-underline, rgb(65, 105, 225));--color-underline-hover: var(--flexlayout-color-underline-hover, #aaa);--underline_height: 3px;--color-mini-scroll-indicator: var(--flexlayout-color-mini-scroll-indicator, rgba(128, 128, 128, .5));--color-mini-scroll-indicator-hovered: var(--flexlayout-color-mini-scroll-indicator-hovered, rgba(128, 128, 128, .7));--size-mini-scroll-indicator: var(--flexlayout-size-mini-scroll-indicator, 4px);--color-toolbar-button-hover: var(--flexlayout-color-toolbar-button-hover, var(--color-3));--color-float-window-header-background: var(--flexlayout-color-float-window-header-background, var(--color-tabset-background))}.flexlayout__theme_rounded .flexlayout__layout{--color-text: var(--flexlayout-color-text, black);--color-background: var(--flexlayout-color-background, #e9eef6);--color-base: var(--flexlayout-color-base, #f2f6fb);--color-1: var(--flexlayout-color-1, rgb(90.3137254902%, 93.2941176471%, 97.0196078431%));--color-2: var(--flexlayout-color-2, rgb(85.7254901961%, 90.1176470588%, 95.6078431373%));--color-3: var(--flexlayout-color-3, rgb(81.137254902%, 86.9411764706%, 94.1960784314%));--color-4: var(--flexlayout-color-4, rgb(76.5490196078%, 83.7647058824%, 92.7843137255%));--color-5: var(--flexlayout-color-5, rgb(71.9607843137%, 80.5882352941%, 91.3725490196%));--color-6: var(--flexlayout-color-6, rgb(67.3725490196%, 77.4117647059%, 89.9607843137%));--color-drag1: var(--flexlayout-color-drag1, rgb(95, 134, 196));--color-drag2: var(--flexlayout-color-drag2, var(--color-drag1));--color-drag1-background: var(--flexlayout-color-drag1-background, rgba(95, 134, 196, .1));--color-drag2-background: var(--flexlayout-color-drag2-background, var(--color-drag1-background));--font-size: var(--flexlayout-font-size, medium);--font-family: var(--flexlayout-font-family, Roboto, Arial, sans-serif);--font-weight: var(--flexlayout-font-weight, normal);--splitter-size: var(--flexlayout-splitter-size, 8px);--splitter-active-size: var(--flexlayout-splitter-active-size, 8px);--splitter-handle-visibility: var(--flexlayout-splitter-handle-visibility, hidden);--color-overflow: var(--flexlayout-color-overflow, #999db2);--color-icon: var(--flexlayout-color-icon, #999db2);--color-focus: var(--flexlayout-color-focus, #3b7de7);--color-tabset-background: var(--flexlayout-color-tabset-background, white);--color-tabset-background-selected: var(--flexlayout-color-tabset-background-selected, white);--color-tabset-background-maximized: var(--flexlayout-color-tabset-background-maximized, white);--color-tabset-divider-line: var(--flexlayout-color-tabset-divider-line, white);--color-border-tab-content: var(--flexlayout-color-border-tab-content, white);--color-border-background: var(--flexlayout-color-border-background, var(--color-background));--color-border-divider-line: var(--flexlayout-color-border-divider-line, var(--color-background));--color-tab-content: var(--flexlayout-color-tab-content, white);--color-tab-selected: var(--flexlayout-color-tab-selected, var(--color-text));--color-tab-selected-background: var(--flexlayout-color-tab-selected-background, var(--color-2));--color-tab-unselected: var(--flexlayout-color-tab-unselected, gray);--color-tab-unselected-background: var(--flexlayout-color-tab-unselected-background, #d3d4e745);--color-tab-textbox: var(--flexlayout-color-tab-textbox, var(--color-text));--color-tab-textbox-background: var(--flexlayout-color-tab-textbox-background, var(--color-3));--color-border-tab-selected: var(--flexlayout-color-border-tab-selected, var(--color-text));--color-border-tab-selected-background: var(--flexlayout-color-border-tab-selected-background, var(--color-2));--color-border-tab-unselected: var(--flexlayout-color-border-tab-unselected, gray);--color-border-tab-unselected-background: var(--flexlayout-color-border-tab-unselected-background, #d3d4e745);--color-splitter: var(--flexlayout-color-splitter, var(--color-background));--color-splitter-hover: var(--flexlayout-color-splitter-hover, var(--color-2));--color-splitter-drag: var(--flexlayout-color-splitter-drag, var(--color-2));--color-splitter-handle: var(--flexlayout-color-splitter-handle, var(--color-3));--color-drag-rect-border: var(--flexlayout-color-drag-rect-border, #ccc);--color-drag-rect-background: var(--flexlayout-color-drag-rect-background, var(--color-5));--color-drag-rect: var(--flexlayout-color-drag-rect, var(--color-text));--color-popup-border: var(--flexlayout-color-popup-border, var(--color-6));--color-popup-unselected: var(--flexlayout-color-popup-unselected, var(--color-text));--color-popup-unselected-background: var(--flexlayout-color-popup-unselected-background, var(--color-background));--color-popup-selected: var(--flexlayout-color-popup-selected, var(--color-text));--color-popup-selected-background: var(--flexlayout-color-popup-selected-background, var(--color-3));--color-edge-marker: var(--flexlayout-color-edge-marker, #a6bbdf);--color-edge-icon: var(--flexlayout-color-edge-icon, #555);--color-mini-scroll-indicator: var(--flexlayout-color-mini-scroll-indicator, rgba(180, 200, 230, .5));--color-mini-scroll-indicator-hovered: var(--flexlayout-color-mini-scroll-indicator-hovered, rgba(180, 200, 230, .7));--size-mini-scroll-indicator: var(--flexlayout-size-mini-scroll-indicator, 4px);--color-toolbar-button-hover: var(--flexlayout-color-toolbar-button-hover, var(--color-2));--tab-button-radius: var(--flexlayout-tab-button-radius, 10px);--border-button-radius: var(--flexlayout-border-button-radius, 10px);--color-float-window-header-background: var(--flexlayout-color-float-window-header-background, var(--color-tabset-background))}.flexlayout__theme_alpha_light .flexlayout__layout{--color-text: var(--flexlayout-color-text, black);--color-background: var(--flexlayout-color-background, #ffffff);--color-base: var(--flexlayout-color-base, #f9fafb);--color-1: var(--flexlayout-color-1, #ededee);--color-2: var(--flexlayout-color-2, #e5e7eb);--color-3: var(--flexlayout-color-3, #d1d5db);--color-4: var(--flexlayout-color-4, #9ca3af);--color-5: var(--flexlayout-color-5, #6b7280);--color-6: var(--flexlayout-color-6, #4b5563);--color-drag1: var(--flexlayout-color-drag1, rgb(95, 134, 196));--color-drag2: var(--flexlayout-color-drag2, rgb(119, 166, 119));--color-drag1-background: var(--flexlayout-color-drag1-background, rgba(59, 130, 246, .1));--color-drag2-background: var(--flexlayout-color-drag2-background, rgba(16, 185, 129, .075));--font-size: var(--flexlayout-font-size, medium);--font-family: var(--flexlayout-font-family, system-ui, -apple-system, Arial, sans-serif);--font-weight: var(--flexlayout-font-weight, 500);--splitter-size: var(--flexlayout-splitter-size, 8px);--splitter-active-size: var(--flexlayout-splitter-active-size, 8px);--splitter-handle-visibility: var(--flexlayout-splitter-handle-visibility, hidden);--color-overflow: var(--flexlayout-color-overflow, var(--color-5));--color-icon: var(--flexlayout-color-icon, var(--color-5));--color-focus: var(--flexlayout-color-focus, #3b7de7);--color-tabset-background: var(--flexlayout-color-tabset-background, var(--color-1));--color-tabset-background-selected: var(--flexlayout-color-tabset-background-selected, var(--color-1));--color-tabset-background-maximized: var(--flexlayout-color-tabset-background-maximized, var(--color-1));--color-tabset-divider-line: var(--flexlayout-color-tabset-divider-line, var(--color-2));--color-border-tab-content: var(--flexlayout-color-border-tab-content, var(--color-1));--color-border-background: var(--flexlayout-color-border-background, var(--color-1));--color-border-divider-line: var(--flexlayout-color-border-divider-line, var(--color-2));--color-tab-content: var(--flexlayout-color-tab-content, var(--color-background));--color-tab-selected: var(--flexlayout-color-tab-selected, #3b7de7);--color-tab-selected-background: var(--flexlayout-color-tab-selected-background, var(--color-background));--color-tab-unselected: var(--flexlayout-color-tab-unselected, var(--color-5));--color-tab-unselected-background: var(--flexlayout-color-tab-unselected-background, transparent);--color-tab-textbox: var(--flexlayout-color-tab-textbox, var(--color-text));--color-tab-textbox-background: var(--flexlayout-color-tab-textbox-background, var(--color-background));--color-border-tab-selected: var(--flexlayout-color-border-tab-selected, #3b7de7);--color-border-tab-selected-background: var(--flexlayout-color-border-tab-selected-background, var(--color-background));--color-border-tab-unselected: var(--flexlayout-color-border-tab-unselected, var(--color-5));--color-border-tab-unselected-background: var(--flexlayout-color-border-tab-unselected-background, var(--color-1));--color-splitter: var(--flexlayout-color-splitter, var(--color-1));--color-splitter-hover: var(--flexlayout-color-splitter-hover, var(--color-4));--color-splitter-drag: var(--flexlayout-color-splitter-drag, var(--color-4));--color-splitter-handle: var(--flexlayout-color-splitter-handle, var(--color-3));--color-drag-rect-border: var(--flexlayout-color-drag-rect-border, var(--color-3));--color-drag-rect-background: var(--flexlayout-color-drag-rect-background, var(--color-background));--color-drag-rect: var(--flexlayout-color-drag-rect, var(--color-text));--color-popup-border: var(--flexlayout-color-popup-border, var(--color-2));--color-popup-unselected: var(--flexlayout-color-popup-unselected, var(--color-text));--color-popup-unselected-background: var(--flexlayout-color-popup-unselected-background, var(--color-background));--color-popup-selected: var(--flexlayout-color-popup-selected, var(--color-drag1));--color-popup-selected-background: var(--flexlayout-color-popup-selected-background, var(--color-1));--color-edge-marker: var(--flexlayout-color-edge-marker, var(--color-3));--color-edge-icon: var(--flexlayout-color-edge-icon, var(--color-6));--color-mini-scroll-indicator: var(--flexlayout-color-mini-scroll-indicator, rgba(0, 0, 0, .1));--color-mini-scroll-indicator-hovered: var(--flexlayout-color-mini-scroll-indicator-hovered, rgba(0, 0, 0, .3));--size-mini-scroll-indicator: var(--flexlayout-size-mini-scroll-indicator, 4px);--color-toolbar-button-hover: var(--flexlayout-color-toolbar-button-hover, var(--color-2));--tab-button-radius: var(--flexlayout-tab-button-radius, 10px);--border-button-radius: var(--flexlayout-border-button-radius, 5px);--color-float-window-header-background: var(--flexlayout-color-float-window-header-background, var(--color-tabset-background))}.flexlayout__theme_alpha_dark .flexlayout__layout{--color-text: var(--flexlayout-color-text, white);--color-background: var(--flexlayout-color-background, black);--color-base: var(--flexlayout-color-base, #121212);--color-1: var(--flexlayout-color-1, #1c1c1c);--color-2: var(--flexlayout-color-2, #383838);--color-3: var(--flexlayout-color-3, #404040);--color-4: var(--flexlayout-color-4, #525252);--color-5: var(--flexlayout-color-5, #737373);--color-6: var(--flexlayout-color-6, #a3a3a3);--color-drag1: var(--flexlayout-color-drag1, #93c5fd);--color-drag2: var(--flexlayout-color-drag2, #6ee7b7);--color-drag1-background: var(--flexlayout-color-drag1-background, rgba(147, 197, 253, .15));--color-drag2-background: var(--flexlayout-color-drag2-background, rgba(110, 231, 183, .1));--font-size: var(--flexlayout-font-size, medium);--font-family: var(--flexlayout-font-family, system-ui, -apple-system, Arial, sans-serif);--font-weight: var(--flexlayout-font-weight, 500);--splitter-size: var(--flexlayout-splitter-size, 8px);--splitter-active-size: var(--flexlayout-splitter-active-size, 8px);--splitter-handle-visibility: var(--flexlayout-splitter-handle-visibility, hidden);--color-overflow: var(--flexlayout-color-overflow, gray);--color-icon: var(--flexlayout-color-icon, gray);--color-focus: var(--flexlayout-color-focus, #93c5fd);--color-tabset-background: var(--flexlayout-color-tabset-background, var(--color-1));--color-tabset-background-selected: var(--flexlayout-color-tabset-background-selected, var(--color-1));--color-tabset-background-maximized: var(--flexlayout-color-tabset-background-maximized, var(--color-1));--color-tabset-divider-line: var(--flexlayout-color-tabset-divider-line, var(--color-2));--color-border-tab-content: var(--flexlayout-color-border-tab-content, var(--color-1));--color-border-background: var(--flexlayout-color-border-background, var(--color-1));--color-border-divider-line: var(--flexlayout-color-border-divider-line, var(--color-2));--color-tab-content: var(--flexlayout-color-tab-content, var(--color-background));--color-tab-selected: var(--flexlayout-color-tab-selected, #e5e7eb);--color-tab-selected-background: var(--flexlayout-color-tab-selected-background, var(--color-background));--color-tab-unselected: var(--flexlayout-color-tab-unselected, var(--color-5));--color-tab-unselected-background: var(--flexlayout-color-tab-unselected-background, transparent);--color-tab-textbox: var(--flexlayout-color-tab-textbox, var(--color-text));--color-tab-textbox-background: var(--flexlayout-color-tab-textbox-background, var(--color-background));--color-border-tab-selected: var(--flexlayout-color-border-tab-selected, #e5e7eb);--color-border-tab-selected-background: var(--flexlayout-color-border-tab-selected-background, var(--color-background));--color-border-tab-unselected: var(--flexlayout-color-border-tab-unselected, var(--color-5));--color-border-tab-unselected-background: var(--flexlayout-color-border-tab-unselected-background, var(--color-1));--color-splitter: var(--flexlayout-color-splitter, var(--color-1));--color-splitter-hover: var(--flexlayout-color-splitter-hover, var(--color-3));--color-splitter-drag: var(--flexlayout-color-splitter-drag, var(--color-4));--color-splitter-handle: var(--flexlayout-color-splitter-handle, var(--color-3));--color-drag-rect-border: var(--flexlayout-color-drag-rect-border, var(--color-3));--color-drag-rect-background: var(--flexlayout-color-drag-rect-background, var(--color-background));--color-drag-rect: var(--flexlayout-color-drag-rect, var(--color-text));--color-popup-border: var(--flexlayout-color-popup-border, var(--color-2));--color-popup-unselected: var(--flexlayout-color-popup-unselected, var(--color-text));--color-popup-unselected-background: var(--flexlayout-color-popup-unselected-background, var(--color-background));--color-popup-selected: var(--flexlayout-color-popup-selected, #f9fafb);--color-popup-selected-background: var(--flexlayout-color-popup-selected-background, var(--color-1));--color-edge-marker: var(--flexlayout-color-edge-marker, var(--color-3));--color-edge-icon: var(--flexlayout-color-edge-icon, gray);--color-mini-scroll-indicator: var(--flexlayout-color-mini-scroll-indicator, rgba(255, 255, 255, .1));--color-mini-scroll-indicator-hovered: var(--flexlayout-color-mini-scroll-indicator-hovered, rgba(255, 255, 255, .3));--size-mini-scroll-indicator: var(--flexlayout-size-mini-scroll-indicator, 4px);--color-toolbar-button-hover: var(--flexlayout-color-toolbar-button-hover, var(--color-2));--tab-button-radius: var(--flexlayout-tab-button-radius, 10px);--border-button-radius: var(--flexlayout-border-button-radius, 5px);--color-float-window-header-background: var(--flexlayout-color-float-window-header-background, var(--color-tabset-background))}.flexlayout__theme_alpha_rounded .flexlayout__layout{--color-text: var(--flexlayout-color-text, black);--color-background: var(--flexlayout-color-background, #e9eef6);--color-base: var(--flexlayout-color-base, #ffffff);--color-1: var(--flexlayout-color-1, #f1f5f9);--color-2: var(--flexlayout-color-2, #e2e8f0);--color-3: var(--flexlayout-color-3, #cbd5e1);--color-4: var(--flexlayout-color-4, #94a3b8);--color-5: var(--flexlayout-color-5, #64748b);--color-6: var(--flexlayout-color-6, #475569);--color-drag1: var(--flexlayout-color-drag1, rgb(95, 134, 196));--color-drag2: var(--flexlayout-color-drag2, rgb(119, 166, 119));--color-drag1-background: var(--flexlayout-color-drag1-background, rgba(59, 130, 246, .1));--color-drag2-background: var(--flexlayout-color-drag2-background, rgba(16, 185, 129, .075));--font-size: var(--flexlayout-font-size, medium);--font-family: var(--flexlayout-font-family, system-ui, -apple-system, Arial, sans-serif);--font-weight: var(--flexlayout-font-weight, 500);--splitter-size: var(--flexlayout-splitter-size, 8px);--splitter-active-size: var(--flexlayout-splitter-active-size, 8px);--splitter-handle-visibility: var(--flexlayout-splitter-handle-visibility, hidden);--color-overflow: var(--flexlayout-color-overflow, var(--color-4));--color-icon: var(--flexlayout-color-icon, var(--color-4));--color-focus: var(--flexlayout-color-focus, #3b7de7);--color-tabset-background: var(--flexlayout-color-tabset-background, white);--color-tabset-background-selected: var(--flexlayout-color-tabset-background-selected, white);--color-tabset-background-maximized: var(--flexlayout-color-tabset-background-maximized, white);--color-tabset-divider-line: var(--flexlayout-color-tabset-divider-line, white);--color-border-tab-content: var(--flexlayout-color-border-tab-content, white);--color-border-background: var(--flexlayout-color-border-background, var(--color-background));--color-border-divider-line: var(--flexlayout-color-border-divider-line, var(--color-background));--color-tab-content: var(--flexlayout-color-tab-content, white);--color-tab-selected: var(--flexlayout-color-tab-selected, #3b7de7);--color-tab-selected-background: var(--flexlayout-color-tab-selected-background, var(--color-2));--color-tab-unselected: var(--flexlayout-color-tab-unselected, var(--color-4));--color-tab-unselected-background: var(--flexlayout-color-tab-unselected-background, var(--color-1));--color-tab-textbox: var(--flexlayout-color-tab-textbox, var(--color-text));--color-tab-textbox-background: var(--flexlayout-color-tab-textbox-background, var(--color-3));--color-border-tab-selected: var(--flexlayout-color-border-tab-selected, #3b7de7);--color-border-tab-selected-background: var(--flexlayout-color-border-tab-selected-background, var(--color-2));--color-border-tab-unselected: var(--flexlayout-color-border-tab-unselected, var(--color-4));--color-border-tab-unselected-background: var(--flexlayout-color-border-tab-unselected-background, var(--color-1));--color-splitter: var(--flexlayout-color-splitter, var(--color-background));--color-splitter-hover: var(--flexlayout-color-splitter-hover, var(--color-3));--color-splitter-drag: var(--flexlayout-color-splitter-drag, var(--color-3));--color-splitter-handle: var(--flexlayout-color-splitter-handle, var(--color-3));--color-drag-rect-border: var(--flexlayout-color-drag-rect-border, var(--color-3));--color-drag-rect-background: var(--flexlayout-color-drag-rect-background, var(--color-base));--color-drag-rect: var(--flexlayout-color-drag-rect, var(--color-text));--color-popup-border: var(--flexlayout-color-popup-border, var(--color-2));--color-popup-unselected: var(--flexlayout-color-popup-unselected, var(--color-text));--color-popup-unselected-background: var(--flexlayout-color-popup-unselected-background, var(--color-base));--color-popup-selected: var(--flexlayout-color-popup-selected, var(--color-drag1));--color-popup-selected-background: var(--flexlayout-color-popup-selected-background, var(--color-1));--color-edge-marker: var(--flexlayout-color-edge-marker, var(--color-3));--color-edge-icon: var(--flexlayout-color-edge-icon, var(--color-6));--color-mini-scroll-indicator: var(--flexlayout-color-mini-scroll-indicator, rgba(0, 0, 0, .1));--color-mini-scroll-indicator-hovered: var(--flexlayout-color-mini-scroll-indicator-hovered, rgba(0, 0, 0, .2));--size-mini-scroll-indicator: var(--flexlayout-size-mini-scroll-indicator, 4px);--color-toolbar-button-hover: var(--flexlayout-color-toolbar-button-hover, var(--color-1));--tab-button-radius: var(--flexlayout-tab-button-radius, 16px);--border-button-radius: var(--flexlayout-border-button-radius, 16px);--color-float-window-header-background: var(--flexlayout-color-float-window-header-background, var(--color-tabset-background))}.flexlayout__theme_aria .flexlayout__layout{--color-text: var(--flexlayout-color-text, black);--color-background: var(--flexlayout-color-background, #ffffff);--color-base: var(--flexlayout-color-base, #f9fafb);--color-1: var(--flexlayout-color-1, #ededee);--color-2: var(--flexlayout-color-2, #e5e7eb);--color-3: var(--flexlayout-color-3, #d1d5db);--color-4: var(--flexlayout-color-4, #9ca3af);--color-5: var(--flexlayout-color-5, #6b7280);--color-6: var(--flexlayout-color-6, #4b5563);--color-drag1: var(--flexlayout-color-drag1, rgb(95, 134, 196));--color-drag2: var(--flexlayout-color-drag2, rgb(119, 166, 119));--color-drag1-background: var(--flexlayout-color-drag1-background, rgba(59, 130, 246, .1));--color-drag2-background: var(--flexlayout-color-drag2-background, rgba(16, 185, 129, .075));--font-size: var(--flexlayout-font-size, medium);--font-family: var(--flexlayout-font-family, system-ui, -apple-system, Arial, sans-serif);--font-weight: var(--flexlayout-font-weight, 500);--splitter-size: var(--flexlayout-splitter-size, 8px);--splitter-active-size: var(--flexlayout-splitter-active-size, 8px);--splitter-handle-visibility: var(--flexlayout-splitter-handle-visibility, hidden);--color-overflow: var(--flexlayout-color-overflow, var(--color-5));--color-icon: var(--flexlayout-color-icon, var(--color-5));--color-focus: var(--flexlayout-color-focus, #3b7de7);--color-tabset-background: var(--flexlayout-color-tabset-background, var(--color-1));--color-tabset-background-selected: var(--flexlayout-color-tabset-background-selected, var(--color-1));--color-tabset-background-maximized: var(--flexlayout-color-tabset-background-maximized, var(--color-1));--color-tabset-divider-line: var(--flexlayout-color-tabset-divider-line, var(--color-2));--color-border-tab-content: var(--flexlayout-color-border-tab-content, var(--color-1));--color-border-background: var(--flexlayout-color-border-background, var(--color-1));--color-border-divider-line: var(--flexlayout-color-border-divider-line, var(--color-2));--color-tab-content: var(--flexlayout-color-tab-content, var(--color-background));--color-tab-selected: var(--flexlayout-color-tab-selected, #3b7de7);--color-tab-selected-background: var(--flexlayout-color-tab-selected-background, var(--color-background));--color-tab-unselected: var(--flexlayout-color-tab-unselected, var(--color-5));--color-tab-unselected-background: var(--flexlayout-color-tab-unselected-background, transparent);--color-tab-textbox: var(--flexlayout-color-tab-textbox, var(--color-text));--color-tab-textbox-background: var(--flexlayout-color-tab-textbox-background, var(--color-background));--color-border-tab-selected: var(--flexlayout-color-border-tab-selected, #3b7de7);--color-border-tab-selected-background: var(--flexlayout-color-border-tab-selected-background, var(--color-background));--color-border-tab-unselected: var(--flexlayout-color-border-tab-unselected, var(--color-5));--color-border-tab-unselected-background: var(--flexlayout-color-border-tab-unselected-background, var(--color-1));--color-splitter: var(--flexlayout-color-splitter, var(--color-1));--color-splitter-hover: var(--flexlayout-color-splitter-hover, var(--color-4));--color-splitter-drag: var(--flexlayout-color-splitter-drag, var(--color-4));--color-splitter-handle: var(--flexlayout-color-splitter-handle, var(--color-3));--color-drag-rect-border: var(--flexlayout-color-drag-rect-border, var(--color-3));--color-drag-rect-background: var(--flexlayout-color-drag-rect-background, var(--color-background));--color-drag-rect: var(--flexlayout-color-drag-rect, var(--color-text));--color-popup-border: var(--flexlayout-color-popup-border, var(--color-2));--color-popup-unselected: var(--flexlayout-color-popup-unselected, var(--color-text));--color-popup-unselected-background: var(--flexlayout-color-popup-unselected-background, var(--color-background));--color-popup-selected: var(--flexlayout-color-popup-selected, var(--color-drag1));--color-popup-selected-background: var(--flexlayout-color-popup-selected-background, var(--color-1));--color-edge-marker: var(--flexlayout-color-edge-marker, var(--color-3));--color-edge-icon: var(--flexlayout-color-edge-icon, var(--color-6));--color-mini-scroll-indicator: var(--flexlayout-color-mini-scroll-indicator, rgba(0, 0, 0, .1));--color-mini-scroll-indicator-hovered: var(--flexlayout-color-mini-scroll-indicator-hovered, rgba(0, 0, 0, .3));--size-mini-scroll-indicator: var(--flexlayout-size-mini-scroll-indicator, 4px);--color-toolbar-button-hover: var(--flexlayout-color-toolbar-button-hover, var(--color-2));--tab-button-radius: var(--flexlayout-tab-button-radius, 10px);--border-button-radius: var(--flexlayout-border-button-radius, 5px);--color-float-window-header-background: var(--flexlayout-color-float-window-header-background, var(--color-tabset-background))}.flexlayout__theme_aria .flexlayout__layout{--color-tab-selected: var(--flexlayout-color-tab-selected, #2563eb);--color-border-tab-selected: var(--flexlayout-color-border-tab-selected, #2563eb);--color-tab-unselected: var(--flexlayout-color-tab-unselected, var(--color-6));--color-border-tab-unselected: var(--flexlayout-color-border-tab-unselected, var(--color-6))}.flexlayout__layout{inset:0;position:absolute;display:flex;background-color:var(--color-background)}.flexlayout__layout_metrics{position:absolute;top:-30000px}.flexlayout__layout_overlay{inset:0;position:absolute;z-index:1000}.flexlayout__layout_tab_stamps{position:absolute;top:-10000px;z-index:100;display:flex;flex-direction:column;align-items:flex-start}.flexlayout__layout_moveables_home{visibility:hidden;position:absolute;width:100px;height:100px;top:-20000px}.flexlayout__layout_main{display:flex;flex-basis:0px;min-width:0;min-height:0;flex-grow:1;position:relative}.flexlayout__layout_border_container{display:flex;flex-basis:0px;min-width:0;min-height:0;flex-grow:1}.flexlayout__layout_border_container_inner{display:flex;flex-basis:0px;min-width:0;min-height:0;flex-grow:1;position:relative}.flexlayout__splitter{display:flex;align-items:center;justify-content:center;background-color:var(--color-splitter);touch-action:none;z-index:10;position:relative}.flexlayout__splitter:focus-visible{outline:2px solid var(--color-focus);outline-offset:-2px}.flexlayout__splitter_horz{width:var(--splitter-size);min-width:var(--splitter-size)}.flexlayout__splitter_horz:before{content:"";position:absolute;top:0;bottom:0;left:50%;width:var(--splitter-active-size);transform:translate(-50%);z-index:1}.flexlayout__splitter_vert{height:var(--splitter-size);min-height:var(--splitter-size)}.flexlayout__splitter_vert:before{content:"";position:absolute;left:0;right:0;top:50%;height:var(--splitter-active-size);transform:translateY(-50%);z-index:1}@media (hover: hover){.flexlayout__splitter:hover{background-color:var(--color-splitter-hover);transition:background-color ease-in .1s;transition-delay:.05s;border-radius:5px}}.flexlayout__splitter_drag{position:absolute;display:flex;align-items:center;justify-content:center;z-index:1000;border-radius:5px;background-color:var(--color-splitter-drag)}.flexlayout__splitter_handle{background-color:var(--color-splitter-handle);border-radius:3px;visibility:var(--splitter-handle-visibility)}.flexlayout__splitter_handle_horz{width:3px;height:30px}.flexlayout__splitter_handle_vert{width:30px;height:3px}.flexlayout__outline_rect{position:absolute;pointer-events:none;box-sizing:border-box;border:2px solid var(--color-drag1);background:var(--color-drag1-background);border-radius:5px;z-index:1000}.flexlayout__outline_rect_edge{pointer-events:none;border:2px solid var(--color-drag2);background:var(--color-drag2-background);border-radius:5px;z-index:1000;box-sizing:border-box}.flexlayout__edge_rect{position:absolute;z-index:1000;background-color:var(--color-edge-marker);pointer-events:none;display:flex;align-items:center;justify-content:center}.flexlayout__drag_rect{color:var(--color-drag-rect);background-color:var(--color-drag-rect-background);border:2px solid var(--color-drag-rect-border);border-radius:5px;box-sizing:border-box;display:flex;justify-content:center;flex-direction:column;overflow:hidden;padding:.3em .8em;word-wrap:break-word;font-size:var(--font-size);font-family:var(--font-family)}.flexlayout__row{display:flex;flex-basis:0px;min-width:0;min-height:0;position:relative;box-sizing:border-box;overflow:hidden}.flexlayout__tabset{display:flex;flex-direction:column;position:relative;background-color:var(--color-tabset-background);box-sizing:border-box;font-family:var(--font-family);overflow:hidden;flex-grow:1}.flexlayout__tabset_container{display:flex;flex-basis:0px;min-width:0;min-height:0;flex-direction:column;overflow:hidden;flex-grow:1}.flexlayout__tabset_tab_divider{width:4px}.flexlayout__tabset_content{display:flex;flex-basis:0px;min-width:0;min-height:0;flex-grow:1;box-sizing:border-box;position:relative}.flexlayout__tabset_leading{display:flex}.flexlayout__tabset_tabbar_outer{box-sizing:border-box;background-color:var(--color-tabset-background);overflow:hidden;display:flex;align-items:center;min-height:1.5em;font-size:var(--font-size);font-weight:var(--font-weight)}.flexlayout__tabset_tabbar_outer_top{padding:0 2px;border-bottom:1px solid var(--color-tabset-divider-line)}.flexlayout__tabset_tabbar_outer_bottom{padding:0 2px;border-top:1px solid var(--color-tabset-divider-line)}.flexlayout__tabset_tabbar_inner{position:relative;box-sizing:border-box;display:flex;flex-grow:1;scrollbar-width:none}.flexlayout__tabset_tabbar_inner::-webkit-scrollbar{display:none}.flexlayout__tabset_tabbar_inner_tab_container{position:relative;display:flex;padding-left:4px;padding-right:4px;box-sizing:border-box;white-space:nowrap;align-items:center}.flexlayout__tabset_tabbar_inner_tab_container_top{border-top:2px solid transparent}.flexlayout__tabset_tabbar_inner_tab_container_bottom{border-bottom:2px solid transparent}.flexlayout__tabset-selected{background-color:var(--color-tabset-background-selected)}.flexlayout__tabset-maximized{background-color:var(--color-tabset-background-maximized)}.flexlayout__tab_button_stamp{display:inline-flex;align-items:center;gap:.3em;white-space:nowrap;box-sizing:border-box}.flexlayout__tab{overflow:hidden;box-sizing:border-box;background-color:var(--color-tab-content);color:var(--color-text);position:absolute}.flexlayout__tab_moveable{position:relative;height:100%;min-width:1px;min-height:1px;overflow:auto;box-sizing:border-box}.flexlayout__tab_overlay{z-index:20;position:absolute;inset:0;background-color:#0000003d}.flexlayout__tab_border_overlay{z-index:1000}.flexlayout__tab_overlay_raised{z-index:1001}.flexlayout__tab_layout_container{position:relative;height:100%;box-sizing:border-box}.flexlayout__tab_layout_container_user{position:relative;flex-grow:1;box-sizing:border-box}.flexlayout__tab_button{display:flex;gap:.3em;align-items:center;box-sizing:border-box;padding:3px .5em;font-weight:var(--font-weight)}.flexlayout__tab_button:focus-visible{outline:2px solid var(--color-focus);outline-offset:-2px}.flexlayout__tab_button{cursor:pointer}.flexlayout__tab_button_stretch{background-color:transparent;color:var(--color-tab-selected);width:100%;padding:3px 0;text-wrap:nowrap;display:flex;gap:.3em;align-items:center;box-sizing:border-box;cursor:pointer}@media (hover: hover){.flexlayout__tab_button_stretch:hover{color:var(--color-tab-selected)}}.flexlayout__tab_button--selected{background-color:var(--color-tab-selected-background);color:var(--color-tab-selected)}@media (hover: hover){.flexlayout__tab_button:hover{color:var(--color-tab-selected)}}.flexlayout__tab_button--unselected{background-color:var(--color-tab-unselected-background);color:var(--color-tab-unselected)}.flexlayout__tab_button_leading,.flexlayout__tab_button_pin{display:flex}.flexlayout__tab_button_content{display:flex;text-wrap:nowrap}.flexlayout__tab_button_textbox{border:none;font-family:var(--font-family);font-size:var(--font-size);font-weight:var(--font-weight);color:var(--color-tab-textbox);background-color:var(--color-tab-textbox-background);border:1px inset var(--color-1);border-radius:3px;width:10em}.flexlayout__tab_button_textbox:focus{outline:2px solid var(--color-focus);outline-offset:-1px}.flexlayout__tab_button_trailing{display:flex;visibility:hidden;border-radius:4px}.flexlayout__tab_button_trailing:hover{background-color:var(--color-toolbar-button-hover)}@media (hover: hover){.flexlayout__tab_button:hover .flexlayout__tab_button_trailing{visibility:visible}}.flexlayout__tab_button--selected .flexlayout__tab_button_trailing{visibility:visible}.flexlayout__tab_button_overflow{display:flex;align-items:center;border:none;color:var(--color-overflow);font-size:inherit;background-color:transparent;width:2em;overflow:hidden}.flexlayout__tab_toolbar{display:flex;align-items:center;gap:.3em;padding-left:.5em;padding-right:.3em}.flexlayout__tab_toolbar_icon{border:none;outline:none;font-size:inherit;margin:0;background-color:transparent;padding:1px}.flexlayout__tab_toolbar_icon:focus-visible{outline:2px solid var(--color-focus);outline-offset:-2px}.flexlayout__tab_toolbar_button{border:none;outline:none;font-size:inherit;margin:0;background-color:transparent;border-radius:4px;padding:1px}.flexlayout__tab_toolbar_button:focus-visible{outline:2px solid var(--color-focus);outline-offset:-2px}@media (hover: hover){.flexlayout__tab_toolbar_button:hover{background-color:var(--color-toolbar-button-hover)}}.flexlayout__tab_toolbar_sticky_buttons_container{display:flex;gap:.3em;padding-left:5px;align-items:center}.flexlayout__border{box-sizing:border-box;overflow:hidden;display:flex;font-family:var(--font-family);font-size:var(--font-size);font-weight:var(--font-weight);color:var(--color-border);background-color:var(--color-border-background)}.flexlayout__border_tab_contents{box-sizing:border-box;overflow:hidden;background-color:var(--color-border-tab-content)}.flexlayout__border_tab_overlay{position:absolute;z-index:100}.flexlayout__border_tab_overlay_top{top:0;left:0;right:0;flex-direction:column}.flexlayout__border_tab_overlay_bottom{bottom:0;left:0;right:0;flex-direction:column}.flexlayout__border_tab_overlay_left{left:0;top:0;bottom:0;flex-direction:row}.flexlayout__border_tab_overlay_right{right:0;top:0;bottom:0;flex-direction:row}.flexlayout__border_leading{display:flex}.flexlayout__border_top{border-bottom:1px solid var(--color-border-divider-line);align-items:center}.flexlayout__border_bottom{border-top:1px solid var(--color-border-divider-line);align-items:center}.flexlayout__border_left{border-right:1px solid var(--color-border-divider-line);align-content:center;flex-direction:column}.flexlayout__border_right{border-left:1px solid var(--color-border-divider-line);align-content:center;flex-direction:column}.flexlayout__border_inner{position:relative;box-sizing:border-box;align-items:center;display:flex;flex-grow:1;scrollbar-width:none}.flexlayout__border_inner::-webkit-scrollbar{display:none}.flexlayout__border_inner_tab_container{white-space:nowrap;display:flex;align-items:center;padding-left:2px;padding-right:2px;box-sizing:border-box;position:absolute}.flexlayout__border_inner_tab_container_right{transform-origin:top left;transform:rotate(90deg)}.flexlayout__border_inner_tab_container_left{flex-direction:row-reverse;transform-origin:top right;transform:rotate(-90deg)}.flexlayout__border_inner_tab_container_left_down{flex-direction:row;transform-origin:top left;transform:rotate(90deg)}.flexlayout__border_tab_divider{width:4px}.flexlayout__border_button{display:flex;gap:.3em;align-items:center;cursor:pointer;padding:3px .5em;margin:2px 0;box-sizing:border-box;white-space:nowrap;font-weight:var(--font-weight)}.flexlayout__border_button:focus-visible{outline:2px solid var(--color-focus);outline-offset:-2px}.flexlayout__border_button--selected{background-color:var(--color-border-tab-selected-background);color:var(--color-border-tab-selected)}@media (hover: hover){.flexlayout__border_button:hover{color:var(--color-border-tab-selected)}}.flexlayout__border_button--unselected{background-color:var(--color-border-tab-unselected-background);color:var(--color-border-tab-unselected)}.flexlayout__border_button_leading,.flexlayout__border_button_content{display:flex}.flexlayout__border_button_trailing{display:flex;border-radius:4px;visibility:hidden}@media (hover: hover){.flexlayout__border_button:hover .flexlayout__border_button_trailing{visibility:visible}}.flexlayout__border_button--selected .flexlayout__border_button_trailing{visibility:visible}.flexlayout__border_toolbar{display:flex;gap:.3em;align-items:center}.flexlayout__border_toolbar_left,.flexlayout__border_toolbar_right{flex-direction:column;padding-top:.5em;padding-bottom:.3em}.flexlayout__border_toolbar_top,.flexlayout__border_toolbar_bottom{padding-left:.5em;padding-right:.3em}.flexlayout__border_toolbar_button{border:none;outline:none;font-size:inherit;background-color:transparent;border-radius:4px;padding:1px}.flexlayout__border_toolbar_button:focus-visible{outline:2px solid var(--color-focus);outline-offset:-2px}@media (hover: hover){.flexlayout__border_toolbar_button:hover{background-color:var(--color-toolbar-button-hover)}}.flexlayout__border_toolbar_button_overflow{display:flex;align-items:center;border:none;color:var(--color-overflow);font-size:inherit;background-color:transparent;width:1.5em}.flexlayout__popup_menu{font-size:var(--font-size);font-family:var(--font-family);font-weight:var(--font-weight)}.flexlayout__popup_menu_item{padding:2px .5em;white-space:nowrap;cursor:pointer;border-radius:2px}.flexlayout__popup_menu_item:focus-visible{outline:2px solid var(--color-focus);outline-offset:-2px}.flexlayout__popup_menu_item--selected{font-weight:500;background-color:var(--color-tab-selected-background);color:var(--color-tab-selected)}.flexlayout__popup_menu_item--disabled{opacity:.4;cursor:default;pointer-events:none}@media (hover: hover){.flexlayout__popup_menu_item:hover{background-color:var(--color-6)}}.flexlayout__popup_menu_divider{height:1px;margin:4px 2px;background-color:var(--color-popup-border)}.flexlayout__popup_menu_container{box-shadow:inset 0 0 5px #00000026;border:1px solid var(--color-popup-border);color:var(--color-popup-unselected);background:var(--color-popup-unselected-background);border-radius:3px;position:absolute;z-index:3000;max-height:50%;min-width:100px;overflow:auto;padding:2px}.flexlayout__float_window{box-sizing:border-box;background-color:var(--color-tabset-background);border-radius:5px;box-shadow:0 0 10px #00000080;display:flex;flex-direction:column;overflow:hidden;z-index:2000}.flexlayout__float_window_header{display:flex;align-items:center;padding:5px;background-color:var(--color-float-window-header-background);border-bottom:1px solid var(--color-tabset-divider-line);cursor:move;user-select:none;font-family:var(--font-family);font-size:.8em;min-height:15px}.flexlayout__float_window_header_title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.flexlayout__float_window_drag_handle{display:flex;align-items:center;padding:0 4px;opacity:.7;cursor:grab}.flexlayout__float_window_drag_handle:hover{opacity:1}.flexlayout__float_window_drag_handle:active{cursor:grabbing}.flexlayout__float_window_button{display:flex;align-items:center;padding:0 4px;margin:0;border:none;background:none;opacity:.7;cursor:pointer}.flexlayout__float_window_button:hover{opacity:1}.flexlayout__float_window_content{position:relative;overflow:auto;flex-grow:1;display:flex;flex-direction:column;min-height:0;min-width:0;margin:5px}.flexlayout__floating_window _body{height:100%}.flexlayout__floating_window_content{inset:0;position:absolute}.flexlayout__error_boundary_container{inset:0;position:absolute;display:flex;justify-content:center}.flexlayout__error_boundary_content{display:flex;align-items:center}.flexlayout__border_sizer{position:absolute;padding-top:6px;padding-bottom:5px;font-size:var(--font-size);font-family:var(--font-family);font-weight:var(--font-weight)}.flexlayout__mini_scrollbar{position:absolute;background-color:var(--color-mini-scroll-indicator);border-radius:5px;width:var(--size-mini-scroll-indicator);height:var(--size-mini-scroll-indicator);visibility:hidden;opacity:0;transition:opacity .3s ease-in-out,visibility .3s ease-in-out}.flexlayout__mini_scrollbar:hover{background-color:var(--color-mini-scroll-indicator-hovered);transition:background-color .3s ease-in-out}.flexlayout__mini_scrollbar_container{position:relative;display:flex;flex-grow:1;overflow:hidden}@media (hover: hover){.flexlayout__mini_scrollbar_container:hover .flexlayout__mini_scrollbar{opacity:1;visibility:visible}}.flexlayout__theme_dark .flexlayout__tabset-selected{background-image:linear-gradient(var(--color-background),var(--color-4))}.flexlayout__theme_dark .flexlayout__tabset-maximized{background-image:linear-gradient(var(--color-6),var(--color-2))}.flexlayout__theme_dark .flexlayout__tab_top{box-shadow:inset -2px 0 5px #0000001a;border-top-left-radius:3px;border-top-right-radius:3px}.flexlayout__theme_dark .flexlayout__tab_bottom{box-shadow:inset -2px 0 5px #0000001a;border-bottom-left-radius:3px;border-bottom-right-radius:3px}.flexlayout__theme_dark .flexlayout__border_button{box-shadow:inset 0 0 5px #00000026;border-radius:3px}.flexlayout__theme_gray .flexlayout__tabset-selected{background-image:linear-gradient(var(--color-background),var(--color-4))}.flexlayout__theme_gray .flexlayout__tabset-selected{background-image:linear-gradient(var(--color-background),var(--color-3))}.flexlayout__theme_gray .flexlayout__tabset-maximized{background-image:linear-gradient(var(--color-3),var(--color-1))}.flexlayout__theme_gray .flexlayout__tab_button_top{box-shadow:inset -2px 0 5px #0000001a;border-top-left-radius:3px;border-top-right-radius:3px}.flexlayout__theme_gray .flexlayout__tab_button_bottom{box-shadow:inset -2px 0 5px #0000001a;border-bottom-left-radius:3px;border-bottom-right-radius:3px}.flexlayout__theme_gray .flexlayout__border_button{box-shadow:inset 0 0 5px #00000026;border-radius:3px}.flexlayout__theme_underline .flexlayout__tab_button{padding:2px .5em calc(4px - var(--underline_height)) .5em}.flexlayout__theme_underline .flexlayout__tab_button--selected{border-bottom:var(--underline_height) solid var(--color-underline)}.flexlayout__theme_underline .flexlayout__tab_button--unselected{border-bottom:var(--underline_height) solid transparent}.flexlayout__theme_underline .flexlayout__border_button{padding:2px .5em calc(4px - var(--underline_height)) .5em}.flexlayout__theme_underline .flexlayout__border_button--selected{border-bottom:var(--underline_height) solid var(--color-underline)}.flexlayout__theme_underline .flexlayout__border_button--unselected{border-bottom:var(--underline_height) solid transparent}.flexlayout__theme_underline .flexlayout__tabset_tab_divider,.flexlayout__theme_underline .flexlayout__border_tab_divider{width:1px;height:.8em;margin:0 6px;background-color:#ddd}.flexlayout__theme_underline .flexlayout__tab_button_textbox{border:none}.flexlayout__theme_rounded .flexlayout__tabset{padding:3px;border-radius:10px}.flexlayout__theme_rounded .flexlayout__tabset_content{padding:1px 3px 3px;border-bottom-left-radius:10px;border-bottom-right-radius:10px}.flexlayout__theme_rounded .flexlayout__tab_border{border-radius:10px;padding:5px}.flexlayout__theme_rounded .flexlayout__border_tab_contents{border-radius:10px}.flexlayout__theme_rounded .flexlayout__tab_button{border-radius:var(--tab-button-radius);padding:2px .8em}.flexlayout__theme_rounded .flexlayout__border_button{border-radius:var(--border-button-radius);padding:2px .8em}.flexlayout__theme_rounded .flexlayout__tabset_tabbar_outer_top{border-bottom:unset;padding-bottom:1px}.flexlayout__theme_rounded .flexlayout__tabset_tabbar_inner_tab_container_top{border-bottom:2px solid transparent}.flexlayout__theme_rounded .flexlayout__border_bottom{border-top:2px solid var(--color-border-divider-line)}.flexlayout__theme_rounded .flexlayout__border_sizer{padding-bottom:6px}.flexlayout__theme_rounded .flexlayout__tab_button_trailing:hover,.flexlayout__theme_rounded .flexlayout__border_button_trailing:hover{background-color:var(--color-3)}.flexlayout__theme_alpha_light .flexlayout__tab{border:5px solid var(--color-background);border-radius:5px}.flexlayout__theme_alpha_light .flexlayout__splitter_border .flexlayout__splitter_handle{visibility:visible}.flexlayout__theme_alpha_light .flexlayout__tabset_tabbar_outer_top{border-bottom:unset}.flexlayout__theme_alpha_light .flexlayout__tabset_tabbar_outer_bottom{border-top:unset}.flexlayout__theme_alpha_light .flexlayout__tab_button{border-bottom:2px solid transparent;padding:4px 12px}.flexlayout__theme_alpha_light .flexlayout__tab_button--selected:hover{background-color:var(--color-background)}.flexlayout__theme_alpha_light .flexlayout__tabset_tabbar_outer_top .flexlayout__tab_button--selected{border-top-left-radius:var(--tab-button-radius);border-top-right-radius:var(--tab-button-radius)}.flexlayout__theme_alpha_light .flexlayout__tabset_tabbar_outer_bottom .flexlayout__tab_button--selected{border-bottom-left-radius:var(--tab-button-radius);border-bottom-right-radius:var(--tab-button-radius)}.flexlayout__theme_alpha_light .flexlayout__tabset_tab_spacer{width:12px}.flexlayout__theme_alpha_light .flexlayout__tabset_tab_divider,.flexlayout__theme_alpha_light .flexlayout__border_tab_divider{width:2px;border-radius:2px;height:.8em;margin:0 5px;background-color:#ddd}.flexlayout__theme_alpha_light .flexlayout__tabset_tab_divider_selected_before,.flexlayout__theme_alpha_light .flexlayout__tabset_tab_divider_selected_after{width:12px;height:100%;margin:unset;border-radius:unset;background-color:var(--color-tab-selected-background)}.flexlayout__theme_alpha_light .flexlayout__tabset_tab_divider_inner{height:100%}.flexlayout__theme_alpha_light .flexlayout__tabset-selected{--tab-divider-bg: var(--flexlayout-tab-divider-bg, var(--color-tabset-background-selected))}.flexlayout__theme_alpha_light .flexlayout__tabset-maximized{--tab-divider-bg: var(--flexlayout-tab-divider-bg, var(--color-tabset-background-maximized))}.flexlayout__theme_alpha_light .flexlayout__tabset_tabbar_outer_top .flexlayout__tabset_tab_divider_selected_before .flexlayout__tabset_tab_divider_inner{border-bottom-right-radius:var(--tab-button-radius);background-color:var(--tab-divider-bg, var(--color-tabset-background))}.flexlayout__theme_alpha_light .flexlayout__tabset_tabbar_outer_top .flexlayout__tabset_tab_divider_selected_after .flexlayout__tabset_tab_divider_inner{border-bottom-left-radius:var(--tab-button-radius);background-color:var(--tab-divider-bg, var(--color-tabset-background))}.flexlayout__theme_alpha_light .flexlayout__tabset_tabbar_outer_bottom .flexlayout__tabset_tab_divider_selected_before .flexlayout__tabset_tab_divider_inner{border-top-right-radius:var(--tab-button-radius);background-color:var(--tab-divider-bg, var(--color-tabset-background))}.flexlayout__theme_alpha_light .flexlayout__tabset_tabbar_outer_bottom .flexlayout__tabset_tab_divider_selected_after .flexlayout__tabset_tab_divider_inner{border-top-left-radius:var(--tab-button-radius);background-color:var(--tab-divider-bg, var(--color-tabset-background))}.flexlayout__theme_alpha_light .flexlayout__border_button{border-radius:var(--border-button-radius);margin:3px;padding:3px 8px}.flexlayout__theme_alpha_light .flexlayout__border_button--selected{box-shadow:0 1px 2px #0000000d}.flexlayout__theme_alpha_light .flexlayout__border_sizer{padding-bottom:8px}.flexlayout__theme_alpha_light .flexlayout__popup_menu_container{box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;border:1px solid var(--color-2);padding:4px}.flexlayout__theme_alpha_light .flexlayout__popup_menu_item{border-radius:4px;padding:6px 8px}.flexlayout__theme_alpha_light .flexlayout__popup_menu_item:hover{background-color:var(--color-1)}.flexlayout__theme_alpha_dark .flexlayout__tab{border:5px solid var(--color-background);border-radius:5px}.flexlayout__theme_alpha_dark .flexlayout__splitter_border .flexlayout__splitter_handle{visibility:visible}.flexlayout__theme_alpha_dark .flexlayout__tabset_tabbar_outer_top{border-bottom:unset}.flexlayout__theme_alpha_dark .flexlayout__tabset_tabbar_outer_bottom{border-top:unset}.flexlayout__theme_alpha_dark .flexlayout__tab_button{border-bottom:2px solid transparent;padding:4px 12px}.flexlayout__theme_alpha_dark .flexlayout__tab_button--selected:hover{background-color:var(--color-background)}.flexlayout__theme_alpha_dark .flexlayout__tabset_tabbar_outer_top .flexlayout__tab_button--selected{border-top-left-radius:var(--tab-button-radius);border-top-right-radius:var(--tab-button-radius)}.flexlayout__theme_alpha_dark .flexlayout__tabset_tabbar_outer_bottom .flexlayout__tab_button--selected{border-bottom-left-radius:var(--tab-button-radius);border-bottom-right-radius:var(--tab-button-radius)}.flexlayout__theme_alpha_dark .flexlayout__tabset_tab_spacer{width:12px}.flexlayout__theme_alpha_dark .flexlayout__tabset_tab_divider,.flexlayout__theme_alpha_dark .flexlayout__border_tab_divider{width:2px;border-radius:2px;height:.8em;margin:0 5px;background-color:#333}.flexlayout__theme_alpha_dark .flexlayout__tabset_tab_divider_selected_before,.flexlayout__theme_alpha_dark .flexlayout__tabset_tab_divider_selected_after{width:12px;height:100%;margin:unset;border-radius:unset;background-color:var(--color-tab-selected-background)}.flexlayout__theme_alpha_dark .flexlayout__tabset_tab_divider_inner{height:100%}.flexlayout__theme_alpha_dark .flexlayout__tabset-selected{--tab-divider-bg: var(--flexlayout-tab-divider-bg, var(--color-tabset-background-selected))}.flexlayout__theme_alpha_dark .flexlayout__tabset-maximized{--tab-divider-bg: var(--flexlayout-tab-divider-bg, var(--color-tabset-background-maximized))}.flexlayout__theme_alpha_dark .flexlayout__tabset_tabbar_outer_top .flexlayout__tabset_tab_divider_selected_before .flexlayout__tabset_tab_divider_inner{border-bottom-right-radius:var(--tab-button-radius);background-color:var(--tab-divider-bg, var(--color-tabset-background))}.flexlayout__theme_alpha_dark .flexlayout__tabset_tabbar_outer_top .flexlayout__tabset_tab_divider_selected_after .flexlayout__tabset_tab_divider_inner{border-bottom-left-radius:var(--tab-button-radius);background-color:var(--tab-divider-bg, var(--color-tabset-background))}.flexlayout__theme_alpha_dark .flexlayout__tabset_tabbar_outer_bottom .flexlayout__tabset_tab_divider_selected_before .flexlayout__tabset_tab_divider_inner{border-top-right-radius:var(--tab-button-radius);background-color:var(--tab-divider-bg, var(--color-tabset-background))}.flexlayout__theme_alpha_dark .flexlayout__tabset_tabbar_outer_bottom .flexlayout__tabset_tab_divider_selected_after .flexlayout__tabset_tab_divider_inner{border-top-left-radius:var(--tab-button-radius);background-color:var(--tab-divider-bg, var(--color-tabset-background))}.flexlayout__theme_alpha_dark .flexlayout__splitter{transition:background-color .2s}.flexlayout__theme_alpha_dark .flexlayout__splitter:hover{border-radius:0}.flexlayout__theme_alpha_dark .flexlayout__border_button{border-radius:var(--border-button-radius);margin:3px;padding:3px 8px}.flexlayout__theme_alpha_dark .flexlayout__border_button--selected{box-shadow:0 1px 2px #0003}.flexlayout__theme_alpha_dark .flexlayout__border_sizer{padding-bottom:8px}.flexlayout__theme_alpha_dark .flexlayout__popup_menu_container{box-shadow:0 10px 15px -3px #0006,0 4px 6px -2px #0003;border:1px solid var(--color-2);padding:4px}.flexlayout__theme_alpha_dark .flexlayout__popup_menu_item{border-radius:4px;padding:6px 8px}.flexlayout__theme_alpha_dark .flexlayout__popup_menu_item:hover{background-color:var(--color-1)}.flexlayout__theme_alpha_rounded .flexlayout__tabset{padding:2px;border-radius:12px}.flexlayout__theme_alpha_rounded .flexlayout__splitter_border .flexlayout__splitter_handle{visibility:visible}.flexlayout__theme_alpha_rounded .flexlayout__float_window{background-color:var(--color-2)}.flexlayout__theme_alpha_rounded .flexlayout__float_window_header{background-color:var(--color-2);border-bottom:none}.flexlayout__theme_alpha_rounded .flexlayout__tab_border{border-radius:12px}.flexlayout__theme_alpha_rounded .flexlayout__border_tab_contents{border-radius:var(--tab-button-radius)}.flexlayout__theme_alpha_rounded .flexlayout__tab_button{border-radius:var(--tab-button-radius);padding:4px 12px;margin:2px}.flexlayout__theme_alpha_rounded .flexlayout__border_button{border-radius:var(--border-button-radius);padding:4px 12px;margin:2px}.flexlayout__theme_alpha_rounded .flexlayout__border_sizer{padding-bottom:10px}.flexlayout__theme_alpha_rounded .flexlayout__popup_menu_container{border-radius:8px;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;border:1px solid var(--color-2);padding:6px}.flexlayout__theme_alpha_rounded .flexlayout__popup_menu_item{border-radius:6px;padding:8px 12px}.flexlayout__theme_alpha_rounded .flexlayout__popup_menu_item:hover{background-color:var(--color-1)}.flexlayout__theme_aria .flexlayout__tab{border:5px solid var(--color-background);border-radius:5px}.flexlayout__theme_aria .flexlayout__splitter_border .flexlayout__splitter_handle{visibility:visible}.flexlayout__theme_aria .flexlayout__tabset_tabbar_outer_top{border-bottom:unset}.flexlayout__theme_aria .flexlayout__tabset_tabbar_outer_bottom{border-top:unset}.flexlayout__theme_aria .flexlayout__tab_button{border-bottom:2px solid transparent;padding:4px 12px}.flexlayout__theme_aria .flexlayout__tab_button--selected:hover{background-color:var(--color-background)}.flexlayout__theme_aria .flexlayout__tabset_tabbar_outer_top .flexlayout__tab_button--selected{border-top-left-radius:var(--tab-button-radius);border-top-right-radius:var(--tab-button-radius)}.flexlayout__theme_aria .flexlayout__tabset_tabbar_outer_bottom .flexlayout__tab_button--selected{border-bottom-left-radius:var(--tab-button-radius);border-bottom-right-radius:var(--tab-button-radius)}.flexlayout__theme_aria .flexlayout__tabset_tab_spacer{width:12px}.flexlayout__theme_aria .flexlayout__tabset_tab_divider,.flexlayout__theme_aria .flexlayout__border_tab_divider{width:2px;border-radius:2px;height:.8em;margin:0 5px;background-color:#ddd}.flexlayout__theme_aria .flexlayout__tabset_tab_divider_selected_before,.flexlayout__theme_aria .flexlayout__tabset_tab_divider_selected_after{width:12px;height:100%;margin:unset;border-radius:unset;background-color:var(--color-tab-selected-background)}.flexlayout__theme_aria .flexlayout__tabset_tab_divider_inner{height:100%}.flexlayout__theme_aria .flexlayout__tabset-selected{--tab-divider-bg: var(--flexlayout-tab-divider-bg, var(--color-tabset-background-selected))}.flexlayout__theme_aria .flexlayout__tabset-maximized{--tab-divider-bg: var(--flexlayout-tab-divider-bg, var(--color-tabset-background-maximized))}.flexlayout__theme_aria .flexlayout__tabset_tabbar_outer_top .flexlayout__tabset_tab_divider_selected_before .flexlayout__tabset_tab_divider_inner{border-bottom-right-radius:var(--tab-button-radius);background-color:var(--tab-divider-bg, var(--color-tabset-background))}.flexlayout__theme_aria .flexlayout__tabset_tabbar_outer_top .flexlayout__tabset_tab_divider_selected_after .flexlayout__tabset_tab_divider_inner{border-bottom-left-radius:var(--tab-button-radius);background-color:var(--tab-divider-bg, var(--color-tabset-background))}.flexlayout__theme_aria .flexlayout__tabset_tabbar_outer_bottom .flexlayout__tabset_tab_divider_selected_before .flexlayout__tabset_tab_divider_inner{border-top-right-radius:var(--tab-button-radius);background-color:var(--tab-divider-bg, var(--color-tabset-background))}.flexlayout__theme_aria .flexlayout__tabset_tabbar_outer_bottom .flexlayout__tabset_tab_divider_selected_after .flexlayout__tabset_tab_divider_inner{border-top-left-radius:var(--tab-button-radius);background-color:var(--tab-divider-bg, var(--color-tabset-background))}.flexlayout__theme_aria .flexlayout__border_button{border-radius:var(--border-button-radius);margin:3px;padding:3px 8px}.flexlayout__theme_aria .flexlayout__border_button--selected{box-shadow:0 1px 2px #0000000d}.flexlayout__theme_aria .flexlayout__border_sizer{padding-bottom:8px}.flexlayout__theme_aria .flexlayout__popup_menu_container{box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;border:1px solid var(--color-2);padding:4px}.flexlayout__theme_aria .flexlayout__popup_menu_item{border-radius:4px;padding:6px 8px}.flexlayout__theme_aria .flexlayout__popup_menu_item:hover{background-color:var(--color-1)}';function G1(e){return!e||!e.enabled||e.authoring.locked?null:e.id}function K1(e,t,r=3){return Math.hypot(t.x-e.x,t.y-e.y)>=r}function q1(e,t,r,o=12){return e>=3&&Math.hypot(r.x-t.x,r.y-t.y)<=o}function J1(e){return[...e].sort((t,r)=>r.priority-t.priority)}function Z1(e){e.forEach((t,r)=>{t.priority=r})}function Q1(e){return e==="draw-brush"}function Nh(e){return[...e].sort((t,r)=>t.priority-r.priority)}const ek=[{id:"nw",x:0,y:0},{id:"n",x:.5,y:0},{id:"ne",x:1,y:0},{id:"e",x:1,y:.5},{id:"se",x:1,y:1},{id:"s",x:.5,y:1},{id:"sw",x:0,y:1},{id:"w",x:0,y:.5}];function tk({geometry:e,canvas:t}){const r=e.operation==="add"?"white":"black";if(e.type==="rect")return s.jsx("rect",{x:e.x*t.width,y:e.y*t.height,width:e.width*t.width,height:e.height*t.height,fill:r});if(e.type==="ellipse")return s.jsx("ellipse",{cx:(e.x+e.width/2)*t.width,cy:(e.y+e.height/2)*t.height,rx:e.width*t.width/2,ry:e.height*t.height/2,fill:r});if(e.type==="polygon")return s.jsx("polygon",{points:e.points.map(c=>`${c.x*t.width},${c.y*t.height}`).join(" "),fill:r});if(e.type==="raster_mask"){const c=`raster-${e.id}`;return s.jsxs(s.Fragment,{children:[s.jsx("defs",{children:s.jsx("mask",{id:c,maskUnits:"userSpaceOnUse",x:"0",y:"0",width:t.width,height:t.height,children:s.jsx("image",{href:e.data_url,x:e.x*t.width,y:e.y*t.height,width:e.width*t.width,height:e.height*t.height,preserveAspectRatio:"none"})})}),s.jsx("rect",{width:t.width,height:t.height,fill:r,mask:`url(#${c})`})]})}const o=e.shape==="square"?"square":"round",n=e.size*Math.min(t.width,t.height),i=`bv-brush-soft-${e.id}`,a=(1-e.hardness)*n/6,l=a>.05?`url(#${i})`:void 0;if(e.points.length===1){const c=e.points[0],u=n*c.pressure,d=e.shape==="square"?s.jsx("rect",{x:c.x*t.width-u/2,y:c.y*t.height-u/2,width:u,height:u,fill:r,fillOpacity:e.opacity,filter:l}):s.jsx("circle",{cx:c.x*t.width,cy:c.y*t.height,r:u/2,fill:r,fillOpacity:e.opacity,filter:l}),f=u*e.hardness;return s.jsxs(s.Fragment,{children:[s.jsx("defs",{children:l&&s.jsx("filter",{id:i,filterUnits:"userSpaceOnUse",x:"0",y:"0",width:t.width,height:t.height,children:s.jsx("feGaussianBlur",{stdDeviation:a})})}),d,f>0&&(e.shape==="square"?s.jsx("rect",{x:c.x*t.width-f/2,y:c.y*t.height-f/2,width:f,height:f,fill:r,fillOpacity:e.opacity}):s.jsx("circle",{cx:c.x*t.width,cy:c.y*t.height,r:f/2,fill:r,fillOpacity:e.opacity}))]})}if((e.pressure_mode??"constant")==="constant"){const c=e.points.map((u,d)=>`${d?"L":"M"}${u.x*t.width},${u.y*t.height}`).join(" ");return s.jsxs(s.Fragment,{children:[s.jsx("defs",{children:l&&s.jsx("filter",{id:i,filterUnits:"userSpaceOnUse",x:"0",y:"0",width:t.width,height:t.height,children:s.jsx("feGaussianBlur",{stdDeviation:a})})}),s.jsx("path",{d:c,fill:"none",stroke:r,strokeOpacity:e.opacity,strokeWidth:n,strokeLinecap:o,strokeLinejoin:o==="round"?"round":"miter",filter:l}),e.hardness>0&&s.jsx("path",{d:c,fill:"none",stroke:r,strokeOpacity:e.opacity,strokeWidth:n*e.hardness,strokeLinecap:o,strokeLinejoin:o==="round"?"round":"miter"})]})}return s.jsx(s.Fragment,{children:e.points.slice(1).map((c,u)=>{const d=e.points[u],f=(d.pressure+c.pressure)/2;return s.jsx("line",{x1:d.x*t.width,y1:d.y*t.height,x2:c.x*t.width,y2:c.y*t.height,stroke:r,strokeOpacity:e.opacity,strokeWidth:n*f,strokeLinecap:o},u)})})}function rk({geometry:e,canvas:t,cursor:r,activePolygon:o}){const n=`tool-preview-shape ${e.operation}`;if(e.type==="rect"||e.type==="raster_mask")return s.jsx("rect",{className:n,x:e.x*t.width,y:e.y*t.height,width:e.width*t.width,height:e.height*t.height});if(e.type==="ellipse")return s.jsx("ellipse",{className:n,cx:(e.x+e.width/2)*t.width,cy:(e.y+e.height/2)*t.height,rx:e.width*t.width/2,ry:e.height*t.height/2});if(e.type==="polygon"){const a=[...e.points,...o&&r?[r]:[]],l=o?s.jsx("polyline",{className:n,points:a.map(c=>`${c.x*t.width},${c.y*t.height}`).join(" ")}):s.jsx("polygon",{className:n,points:a.map(c=>`${c.x*t.width},${c.y*t.height}`).join(" ")});return s.jsxs(s.Fragment,{children:[l,e.points.map((c,u)=>s.jsx("circle",{className:`tool-preview-vertex ${e.operation}`,cx:c.x*t.width,cy:c.y*t.height,r:"4"},u))]})}const i=e.points.map((a,l)=>`${l?"L":"M"}${a.x*t.width},${a.y*t.height}`).join(" ");return s.jsx("path",{className:n,d:i,strokeWidth:e.size*Math.min(t.width,t.height),strokeLinecap:e.shape==="square"?"square":"round"})}function ok({region:e,geometries:t,canvas:r,opacity:o,resolved:n}){const i=L0(t).filter(u=>u.enabled&&(n||u.geometries.some((d,f)=>sr(d,f).visible))),a=`bv-feather-${e.id}`,l=Math.min(64,Math.round(e.mask.feather*Math.min(r.width,r.height))),c=l/3;return s.jsxs("g",{opacity:o,children:[n&&l>0&&s.jsx("defs",{children:s.jsx("filter",{id:a,filterUnits:"userSpaceOnUse",x:"0",y:"0",width:r.width,height:r.height,children:s.jsx("feGaussianBlur",{stdDeviation:c})})}),s.jsx("g",{filter:n&&l>0?`url(#${a})`:void 0,children:i.map(u=>{const d=`bv-mask-${e.id}-${u.id}`;return s.jsxs("g",{children:[s.jsx("defs",{children:s.jsxs("mask",{id:d,maskUnits:"userSpaceOnUse",x:"0",y:"0",width:r.width,height:r.height,children:[s.jsx("rect",{width:r.width,height:r.height,fill:"black"}),u.geometries.filter((f,p)=>f.enabled!==!1&&(n||sr(f,p).visible)).map(f=>s.jsx(tk,{geometry:f,canvas:r},f.id))]})}),s.jsx("rect",{width:r.width,height:r.height,fill:e.authoring.color,mask:`url(#${d})`})]},u.id)})})]})}function nk(e){const{document:t,selectedLayerId:r,selectedRegionId:o}=e,n=m.useRef(null),i=m.useRef(null),[a,l]=m.useState({width:1,height:1}),[c,u]=m.useState(e.initialView.zoom),[d,f]=m.useState({x:e.initialView.panX,y:e.initialView.panY}),[p,g]=m.useState(e.initialView.fit),[x,w]=m.useState(!1),k=m.useCallback((M=a)=>Math.max(.02,Math.min(1,(M.width-40)/t.canvas.width,(M.height-40)/t.canvas.height)),[t.canvas.height,t.canvas.width,a]),b=m.useCallback(()=>{u(k()),f({x:0,y:0}),g(!0)},[k]);m.useEffect(()=>{const M=n.current;if(!M)return;const E=new ResizeObserver(z=>{const L=z[0].contentRect,R={width:L.width,height:L.height};l(R),p&&(u(Math.max(.02,Math.min(1,(R.width-40)/t.canvas.width,(R.height-40)/t.canvas.height))),f({x:0,y:0}))});return E.observe(M),()=>E.disconnect()},[t.canvas.height,t.canvas.width,p]),m.useEffect(()=>e.onView({zoom:c,panX:d.x,panY:d.y,fit:p}),[p,d.x,d.y,e.onView,c]),m.useEffect(()=>{const M=z=>{const L=z.target;z.code!=="Space"||L instanceof HTMLInputElement||L instanceof HTMLTextAreaElement||L instanceof HTMLSelectElement||L?.isContentEditable||(z.preventDefault(),z.stopImmediatePropagation(),w(!0))},E=z=>{z.code==="Space"&&(z.preventDefault(),z.stopImmediatePropagation(),w(!1),i.current=null)};return window.addEventListener("keydown",M,!0),window.addEventListener("keyup",E,!0),()=>{window.removeEventListener("keydown",M,!0),window.removeEventListener("keyup",E,!0)}},[]);const h=M=>{let E=[...M.geometry];if(e.draft&&M.id===o){const z=new Set(e.draft.map(L=>L.id));E=E.map(L=>z.has(L.id)?e.draft.find(R=>R.id===L.id):L);for(const L of e.draft)E.some(R=>R.id===L.id)||E.push(L)}return!e.binaryMaskPreview&&e.isolate&&r&&(E=E.filter(z=>zt(z)===r)),E},v=e.brush.size*Math.min(t.canvas.width,t.canvas.height)/t.canvas.width*100,_=M=>{M.preventDefault();const E=M.currentTarget.getBoundingClientRect(),z=M.clientX-E.left,L=M.clientY-E.top,R=Math.max(.02,Math.min(8,c*Math.exp(-M.deltaY*.0015))),N=R/c;f(A=>({x:z-E.width/2-(z-E.width/2-A.x)*N,y:L-E.height/2-(L-E.height/2-A.y)*N})),u(R),g(!1)},y=M=>{M.button!==1&&!(M.button===0&&x)||(M.preventDefault(),M.stopPropagation(),M.currentTarget.setPointerCapture(M.pointerId),i.current={x:M.clientX,y:M.clientY,panX:d.x,panY:d.y},g(!1))},T=M=>{i.current&&(M.preventDefault(),M.stopPropagation(),f({x:i.current.panX+M.clientX-i.current.x,y:i.current.panY+M.clientY-i.current.y}))},S=M=>{i.current&&(M.preventDefault(),M.stopPropagation(),i.current=null)},P=a.width/2-t.canvas.width*c/2+d.x,O=a.height/2-t.canvas.height*c/2+d.y,B=10/c,j=24/c;return s.jsx("section",{className:"bv-regional-work",children:s.jsxs("div",{ref:n,className:`artboard-viewport ${x?"pan-ready":""}`,onWheel:_,onPointerDownCapture:y,onPointerMoveCapture:T,onPointerUpCapture:S,onPointerCancelCapture:S,children:[s.jsx(N0,{tool:e.tool,brush:e.brush,canSubtract:e.canSubtract,canvas:t.canvas,onTool:e.onTool,onBrush:e.onBrush}),s.jsx("div",{className:"artboard-stage",style:{width:t.canvas.width,height:t.canvas.height,transform:`translate(${P}px, ${O}px) scale(${c})`},children:s.jsxs("div",{className:`bv-regional-canvas tool-${e.tool}`,style:{width:t.canvas.width,height:t.canvas.height},onPointerDown:e.binaryMaskPreview?void 0:e.onPointerDown,onPointerMove:e.binaryMaskPreview?void 0:e.onPointerMove,onPointerUp:e.binaryMaskPreview?void 0:e.onPointerUp,onPointerCancel:e.binaryMaskPreview?void 0:e.onPointerCancel,onPointerLeave:e.onPointerLeave,onDoubleClick:e.binaryMaskPreview?void 0:e.onDoubleClick,children:[e.background&&!e.binaryMaskPreview&&s.jsx("div",{className:"bv-background-image",style:{backgroundImage:`linear-gradient(#0002,#0002), url(${JSON.stringify(e.background)})`,opacity:e.backgroundOpacity}}),s.jsx("svg",{className:"bv-composition",style:e.binaryMaskPreview?{background:"black"}:void 0,viewBox:`0 0 ${t.canvas.width} ${t.canvas.height}`,preserveAspectRatio:"none",children:J1(t.regions.filter(M=>M.enabled&&(e.binaryMaskPreview||M.authoring.visible))).map(M=>s.jsx(ok,{region:e.binaryMaskPreview?{...M,authoring:{...M.authoring,color:"#FFFFFF"}}:M,geometries:h(M),canvas:t.canvas,opacity:e.binaryMaskPreview?1:e.displayOpacity,resolved:e.binaryMaskPreview},M.id))}),!e.binaryMaskPreview&&e.draft&&s.jsx("svg",{className:"bv-tool-preview",viewBox:`0 0 ${t.canvas.width} ${t.canvas.height}`,preserveAspectRatio:"none",children:e.draft.map(M=>s.jsx(rk,{geometry:M,canvas:t.canvas,cursor:e.cursor,activePolygon:e.tool.startsWith("polygon")},M.id))}),!e.binaryMaskPreview&&e.selectionBounds&&s.jsxs("svg",{className:"bv-selection-overlay",viewBox:`0 0 ${t.canvas.width} ${t.canvas.height}`,preserveAspectRatio:"none",children:[s.jsx("rect",{className:"brush-bounds",x:e.selectionBounds.x*t.canvas.width,y:e.selectionBounds.y*t.canvas.height,width:e.selectionBounds.width*t.canvas.width,height:e.selectionBounds.height*t.canvas.height}),ek.map(M=>{const E=(e.selectionBounds.x+e.selectionBounds.width*M.x)*t.canvas.width,z=(e.selectionBounds.y+e.selectionBounds.height*M.y)*t.canvas.height;return s.jsxs("g",{"data-handle":M.id,className:`resize-handle resize-handle-${M.id}`,children:[s.jsx("rect",{className:"resize-handle-hit",x:E-j/2,y:z-j/2,width:j,height:j}),s.jsx("rect",{className:"resize-handle-visible",x:E-B/2,y:z-B/2,width:B,height:B,rx:2/c})]},M.id)}),e.draft&&s.jsxs("text",{className:"tool-preview-size",style:{fontSize:12/c},x:(e.selectionBounds.x+e.selectionBounds.width)*t.canvas.width-4/c,y:(e.selectionBounds.y+e.selectionBounds.height)*t.canvas.height-7/c,children:[Math.round(e.selectionBounds.width*t.canvas.width)," × ",Math.round(e.selectionBounds.height*t.canvas.height)," px"]})]}),!e.binaryMaskPreview&&e.cursor&&e.tool.startsWith("brush")&&s.jsx("div",{className:`brush-cursor ${e.brush.shape}`,style:{left:`${e.cursor.x*100}%`,top:`${e.cursor.y*100}%`,width:`${v}%`,aspectRatio:"1"},children:s.jsx("i",{style:{width:`${e.brush.hardness*100}%`,height:`${e.brush.hardness*100}%`}})})]})}),s.jsxs("div",{className:"zoom-controls",onWheel:M=>M.stopPropagation(),children:[s.jsx(oe,{intent:"ghost",title:"Zoom out",onClick:()=>{u(M=>Math.max(.02,M/1.25)),g(!1)},children:"−"}),s.jsxs(oe,{intent:"ghost",title:"100%",onClick:()=>{u(1),f({x:0,y:0}),g(!1)},children:[Math.round(c*100)," %"]}),s.jsx(oe,{intent:"ghost",title:"Zoom in",onClick:()=>{u(M=>Math.min(8,M*1.25)),g(!1)},children:"+"}),s.jsx(oe,{intent:"ghost",title:"Fit to view",onClick:b,children:"Fit"})]})]})})}const Bm="BV.NodePack.Completion.Enabled",Pm="BV.NodePack.Completion.Datasets",zm="BV.NodePack.Completion.Placement",Fm="bv-nodepack:completion-enabled",ka="bv-completion-enabled-changed",Ea="bv-completion-placement-changed",Of="bv-nodepack:completion-datasets",Um="bv-nodepack:completion-placement",ps="bv-completion-datasets-changed";let Vm=null,Wm=null,Hm=null;function od(){try{return localStorage.getItem(Um)==="field"?"field":"caret"}catch{return"caret"}}function ik(e){Hm=e}function $m(e,t=!1){const r=e==="field"?"field":"caret";try{localStorage.setItem(Um,r)}catch{}t&&Hm?.(r),window.dispatchEvent(new CustomEvent(Ea,{detail:{placement:r}}))}function Ym(){const[e,t]=m.useState(od);return m.useEffect(()=>{const r=o=>t(o.detail?.placement==="field"?"field":"caret");return window.addEventListener(Ea,r),()=>window.removeEventListener(Ea,r)},[]),e}function Mf(){try{return localStorage.getItem(Fm)!=="false"}catch{return!0}}function ak(e){Vm=e}function Xm(e,t=!1){try{localStorage.setItem(Fm,String(e))}catch{}t&&Vm?.(e),window.dispatchEvent(new CustomEvent(ka,{detail:{enabled:e}}))}function Gm(){const[e,t]=m.useState(Mf);return m.useEffect(()=>{const r=o=>t(!!o.detail?.enabled);return window.addEventListener(ka,r),()=>window.removeEventListener(ka,r)},[]),e}function Km(){try{const e=localStorage.getItem(Of);if(e==null)return null;const t=JSON.parse(e);return Array.isArray(t)?t.map(String):null}catch{return null}}function lk(e){Wm=e}function qm(e,t=!1){const r=[...new Set(e.map(String))];try{localStorage.setItem(Of,JSON.stringify(r))}catch{}t&&Wm?.(JSON.stringify(r)),window.dispatchEvent(new CustomEvent(ps,{detail:{datasets:r}}))}function Jm(e){if(e==null||e===""){try{localStorage.removeItem(Of)}catch{}window.dispatchEvent(new CustomEvent(ps,{detail:{datasets:null}}));return}try{const t=typeof e=="string"?JSON.parse(e):e;Array.isArray(t)&&qm(t.map(String))}catch{}}function sk(){const[e,t]=m.useState(Km);return m.useEffect(()=>{const r=o=>t(o.detail?.datasets??null);return window.addEventListener(ps,r),()=>window.removeEventListener(ps,r)},[]),e}function Zm({onSelectionChange:e}={}){const t=sk(),[r,o]=m.useState([]),[n,i]=m.useState(""),a=async()=>{try{const g=await fetch("/bv_nodepack/completion/status");if(!g.ok)throw new Error(`HTTP ${g.status}`);const x=await g.json();o(Array.isArray(x?.datasets)?x.datasets:[]),i("")}catch(g){i(g instanceof Error?g.message:String(g))}};m.useEffect(()=>{a()},[]);const l=t??r.map(g=>g.id),c=g=>{qm(g,!0),e?.(g)},u=g=>c(l.includes(g)?l.filter(x=>x!==g):[...l,g]),d=(g,x)=>{const w=l.indexOf(g),k=w+x;if(w<0||k<0||k>=l.length)return;const b=[...l];[b[w],b[k]]=[b[k],b[w]],c(b)},f=new Map(r.map(g=>[g.id,g])),p=[...l.map(g=>f.get(g)).filter(g=>!!g),...r.filter(g=>!l.includes(g.id))];return s.jsxs("div",{className:"completion-dataset-picker",children:[s.jsx("strong",{children:"Completion Data"}),s.jsx("small",{children:"Topmost enabled dataset wins when tags are duplicated."}),p.map(g=>{const x=l.indexOf(g.id),w=x>=0;return s.jsxs("div",{children:[s.jsx(eo,{label:g.name,help:`${(g.bytes/1048576).toFixed(1)} MiB`,checked:w,onValue:()=>u(g.id)}),s.jsxs("span",{className:"dataset-order",children:[s.jsx(oe,{intent:"ghost",iconOnly:!0,disabled:!w||x===0,title:"Move up",onClick:()=>d(g.id,-1),children:"↑"}),s.jsx(oe,{intent:"ghost",iconOnly:!0,disabled:!w||x===l.length-1,title:"Move down",onClick:()=>d(g.id,1),children:"↓"})]})]},g.id)}),!r.length&&!n&&s.jsx("small",{children:"No local CSV/TSV dataset found."}),n&&s.jsxs("small",{className:"dataset-error",children:["Could not load datasets: ",n]}),s.jsx(oe,{onClick:()=>void a(),children:"Reload List"})]})}function ck(e){const t=Gm(),r=Ym(),o=e.openMenu,n=m.useRef(null),{menuOverflow:i}=Mm(),a=m.useRef(null),l=m.useRef(null);m.useEffect(()=>{const d=f=>{n.current?.contains(f.target)||e.onOpenMenu(null)};return window.addEventListener("pointerdown",d),()=>window.removeEventListener("pointerdown",d)},[e.onOpenMenu]);const c=(d,f,p)=>s.jsx(ah,{open:o===d,onOpen:g=>e.onOpenMenu(g?d:null),trigger:({toggle:g})=>s.jsxs(oe,{intent:"ghost",density:"compact","aria-label":f,title:f,"aria-expanded":o===d,onClick:g,children:[s.jsx("span",{className:"editor-menu-label-full",children:f}),s.jsx("span",{className:"editor-menu-label-short","aria-hidden":"true",children:f==="?"?f:f[0]})]}),children:p}),u=s.jsxs(s.Fragment,{children:[c("file","File",s.jsxs("div",{className:"bv-menu-stack",children:[s.jsx(oe,{intent:"ghost",onClick:()=>{e.onExportDocument(),e.onOpenMenu(null)},children:"Export Document"}),s.jsx(oe,{intent:"ghost",onClick:()=>a.current?.click(),children:"Load and Replace Document"}),s.jsx("hr",{}),s.jsx(oe,{intent:"ghost",onClick:()=>{e.onExportRegions(),e.onOpenMenu(null)},children:"Export Regions"}),s.jsx(oe,{intent:"ghost",onClick:()=>l.current?.click(),children:"Add Regions"})]})),c("edit","Edit",s.jsxs("div",{className:"bv-menu-stack",children:[s.jsxs(oe,{intent:"ghost",disabled:!e.canUndo,onClick:e.onUndo,children:["Undo ",s.jsx("kbd",{children:"Ctrl Z"})]}),s.jsxs(oe,{intent:"ghost",disabled:!e.canRedo,onClick:e.onRedo,children:["Redo ",s.jsx("kbd",{children:"Ctrl Shift Z"})]}),s.jsx(eo,{label:"Prompt Autocomplete",help:"Optional. Disable it when using another completion extension.",checked:t,onValue:d=>Xm(d,!0)}),s.jsx(qe,{label:"Popup Position",value:r,onValue:d=>$m(d,!0),options:[{value:"caret",label:"At Caret"},{value:"field",label:"Below Text Field"}]}),s.jsx(Zm,{})]})),c("view","View",s.jsxs("div",{className:"bv-menu-stack",children:[s.jsx(Pt,{label:"Mask Display",value:e.displayOpacity,min:.05,max:1,step:.05,unit:"×",onValue:e.onDisplayOpacity}),s.jsx(Pt,{label:"Background Image",value:e.backgroundOpacity,min:0,max:1,step:.05,unit:"×",onValue:e.onBackgroundOpacity}),s.jsx(eo,{label:"Binary Mask Preview",checked:e.binaryMaskPreview,onValue:e.onToggleBinaryMaskPreview}),s.jsx(eo,{label:"Isolate Selection",checked:e.isolate,disabled:!e.hasSelection,onValue:e.onToggleIsolate}),s.jsx("small",{children:"Affects the editor display only."})]})),c("artboard","Artboard",s.jsxs("div",{className:"bv-menu-stack",children:[s.jsx(Pt,{label:"Width",value:e.canvas.width,min:1,max:32768,step:1,unit:"px",slider:!1,onValue:d=>e.onCanvas({...e.canvas,width:d})}),s.jsx(Pt,{label:"Height",value:e.canvas.height,min:1,max:32768,step:1,unit:"px",slider:!1,onValue:d=>e.onCanvas({...e.canvas,height:d})})]})),c("layers","Layers",s.jsxs("div",{className:"bv-menu-stack",children:[s.jsxs(oe,{intent:"ghost",disabled:!e.canMergeLayers,onClick:()=>{e.onMergeLayers(),e.onOpenMenu(null)},children:["Merge Selected Layers ",s.jsx("kbd",{children:"Ctrl E"})]}),s.jsx("small",{children:"Ctrl-click or Shift-click layers in one region to select them."})]})),c("help","?",s.jsxs("div",{className:"help-menu",children:[s.jsx(ih,{items:[{term:"Ctrl Z",description:"Undo"},{term:"Ctrl Shift Z",description:"Redo"},{term:"Ctrl E",description:"Merge selected layers"},{term:"Escape",description:"Cancel action"},{term:"Delete",description:"Delete layer"},{term:"Shift + Resize",description:"Scale proportionally"},{term:"Space + Drag",description:"Pan artboard"}]}),s.jsx(ih,{items:[{term:"Click",description:"Select layer"},{term:"Ctrl + Click",description:"Add/remove layer selection"},{term:"Shift + Click",description:"Select layer range"},{term:"Drag",description:"Draw or move"},{term:"Mouse wheel",description:"Zoom under cursor"}]})]}))]});return s.jsxs("div",{className:"editor-menus",ref:n,children:[i?s.jsx(ah,{trigger:({toggle:d})=>s.jsx(oe,{intent:"ghost",density:"compact","aria-label":"Editor menus",onClick:d,children:"•••"}),children:s.jsx("div",{className:"editor-menus-overflow-panel",children:u})}):u,s.jsx("input",{hidden:!0,ref:a,type:"file",accept:"application/json,.json",onChange:d=>{const f=d.target.files?.[0];f&&e.onImportDocument(f),d.target.value=""}}),s.jsx("input",{hidden:!0,ref:l,type:"file",accept:"application/json,.json",onChange:d=>{const f=d.target.files?.[0];f&&e.onImportRegions(f),d.target.value=""}})]})}function Qm(e,t,r,o=20){const n=Math.max(0,Math.min(e.length,t)),l=e.slice(0,n).match(/(?:^|[,\n;])\s*([^,\n;]*)$/)?.[1]??"",c=l.match(/^\s*/)?.[0].length??0,u=l.slice(c);if(u.trim().length<2)return null;const d=n-l.length+c;return{...r,text:e,caret:n,term:u,start:d,end:n,limit:o}}function ex(e,t,r){const o=e.slice(t.end).match(/^\s*[,;\n]/)?"":", ",n=`${r.insertText}${o}`;return{text:e.slice(0,t.start)+n+e.slice(t.end),caret:t.start+n.length}}async function tx(e,t,r){const o=await Promise.allSettled(t.map(i=>i.suggest(e,r)));if(r.aborted)return[];const n=new Map;return o.forEach(i=>{i.status==="fulfilled"&&i.value.forEach(a=>{n.has(a.id)||n.set(a.id,a)})}),[...n.values()].sort((i,a)=>(a.score??0)-(i.score??0)||i.label.localeCompare(a.label)).slice(0,e.limit)}const rx={id:"bv-local-tags",async suggest(e,t){const r=await fetch("/bv_nodepack/completion/search",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({term:e.term.trim(),limit:e.limit,datasets:Km()}),signal:t});if(!r.ok)return[];const o=await r.json();return(Array.isArray(o?.results)?o.results:[]).flatMap(i=>{const a=String(i?.insert_text??"").trim();return a?[{id:String(i?.id??`local:${a}`),insertText:a,label:String(i?.label??a),source:String(i?.source??"BV Local Tags"),detail:i?.detail||void 0,category:i?.category||void 0,score:Number(i?.score)||0,metadata:i?.metadata&&typeof i.metadata=="object"?i.metadata:{}}]:[]})}},uk=["fontFamily","fontSize","fontStyle","fontWeight","letterSpacing","lineHeight","textTransform","textIndent","textAlign","wordSpacing","paddingTop","paddingRight","paddingBottom","paddingLeft","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth"];function dk(e,t=e.selectionStart??e.value.length){const r=e.getBoundingClientRect(),o=window.getComputedStyle(e),n=e.offsetWidth||r.width,i=e.offsetHeight||r.height,a=r.width/n,l=r.height/i,c=document.createElement("div");c.setAttribute("aria-hidden","true"),Object.assign(c.style,{position:"fixed",visibility:"hidden",pointerEvents:"none",left:"0",top:"0",width:`${n}px`,height:`${i}px`,boxSizing:o.boxSizing,whiteSpace:"pre-wrap",overflowWrap:"break-word",overflow:"hidden"}),uk.forEach(w=>{c.style[w]=o[w]}),c.textContent=e.value.slice(0,t);const u=document.createElement("span");u.textContent=e.value.slice(t,t+1)||"​",c.append(u),document.body.append(c),c.scrollTop=e.scrollTop,c.scrollLeft=e.scrollLeft;const d=c.getBoundingClientRect(),f=u.getBoundingClientRect(),p=Number.parseFloat(o.lineHeight)||Number.parseFloat(o.fontSize)*1.2||16;c.remove();const g=r.left+(f.left-d.left)*a,x=r.top+(f.top-d.top)*l;return{left:g,top:x,bottom:x+p*l}}function hs(e,t,r=210){const i=e.getBoundingClientRect(),a=t==="caret"?dk(e):{left:i.left,top:i.top,bottom:i.bottom},l=t==="caret"?Math.min(460,Math.max(320,i.width*.8)):i.width,c=Math.max(180,Math.min(l,window.innerWidth-4*2)),u=Math.max(4,Math.min(a.left,window.innerWidth-c-4)),d=a.bottom+4,f=d+r<=window.innerHeight-4?d:Math.max(4,a.top-r-4);return{left:u,top:f,width:c}}function ox({suggestions:e,selected:t,position:r,onAccept:o,onHeight:n}){const i=m.useRef(null);return m.useLayoutEffect(()=>{i.current&&n?.(i.current.offsetHeight)}),s.jsx("div",{ref:i,className:"bv-completion-popup bv-global-completion-popup",style:r,role:"listbox",children:e.map((a,l)=>s.jsxs(oe,{density:"compact",intent:"ghost",className:l===t?"active":"",onPointerDown:c=>{c.preventDefault(),o(l)},children:[s.jsx("span",{children:a.label}),s.jsx("small",{children:[a.category,a.detail,a.source].filter(Boolean).join(" · ")})]},a.id))})}function gs({value:e,onValue:t,completionContext:r,onKeyDown:o,onBlur:n,onSelect:i,...a}){const l=Gm(),c=Ym(),u=m.useRef(null),[d,f]=m.useState([]),[p,g]=m.useState(0),[x,w]=m.useState(null),k=m.useRef(null),b=m.useRef(null),h=m.useRef(null),v=m.useRef(210),_=m.useRef(()=>{}),y=()=>{b.current?.abort(),f([]),w(null)},T=()=>{const O=u.current;O&&w(hs(O,c,v.current))},S=(O,B,j=B)=>{if(!l||B!==j)return y();h.current!=null&&window.clearTimeout(h.current),b.current?.abort();const M=Qm(O,B,r);if(k.current=M,!M)return y();const E=new AbortController;b.current=E,h.current=window.setTimeout(async()=>{const z=await tx(M,[rx],E.signal);if(E.signal.aborted)return;const L=u.current;f(z),g(0),w(z.length&&L?hs(L,c):null)},120)};_.current=S;const P=(O=p)=>{const B=k.current,j=d[O];if(!B||!j)return;const M=ex(e,B,j);t(M.text),y(),requestAnimationFrame(()=>{u.current?.focus(),u.current?.setSelectionRange(M.caret,M.caret)})};return m.useEffect(()=>{l||y()},[l]),m.useEffect(()=>{const O=()=>{const B=u.current;B&&document.activeElement===B&&_.current(B.value,B.selectionStart,B.selectionEnd)};return document.addEventListener("selectionchange",O),()=>document.removeEventListener("selectionchange",O)},[]),m.useEffect(()=>{x&&T()},[c]),m.useEffect(()=>{if(x)return window.addEventListener("scroll",T,!0),window.addEventListener("resize",T),()=>{window.removeEventListener("scroll",T,!0),window.removeEventListener("resize",T)}},[!!x,c]),m.useEffect(()=>()=>{b.current?.abort(),h.current!=null&&window.clearTimeout(h.current)},[]),s.jsxs(s.Fragment,{children:[s.jsx("span",{className:"bv-textarea-shell resize-vertical",children:s.jsx(_0,{...a,ref:u,value:e,onChange:O=>{t(O.target.value),S(O.target.value,O.target.selectionStart,O.target.selectionEnd)},onSelect:O=>{S(O.currentTarget.value,O.currentTarget.selectionStart,O.currentTarget.selectionEnd),i?.(O)},onKeyDown:O=>{if(d.length){if(O.key==="ArrowDown"||O.key==="ArrowUp"){O.preventDefault(),O.stopPropagation(),g(B=>(B+(O.key==="ArrowDown"?1:-1)+d.length)%d.length);return}if(O.key==="Enter"||O.key==="Tab"){O.preventDefault(),O.stopPropagation(),P();return}if(O.key==="Escape"){O.preventDefault(),O.stopPropagation(),y();return}}o?.(O)},onBlur:O=>{window.setTimeout(y,120),n?.(O)}})}),l&&x&&s.jsx(ox,{suggestions:d,selected:p,position:x,onAccept:P,onHeight:O=>{Math.abs(O-v.current)<1||(v.current=O,T())}})]})}function En({label:e,help:t,value:r,onChange:o,children:n,disabled:i,className:a=""}){const l=Re.Children.toArray(n).flatMap(c=>Re.isValidElement(c)?[{value:String(c.props.value??c.props.children??""),label:String(c.props.children??c.props.value??""),disabled:c.props.disabled}]:[]);return s.jsx("div",{className:a,children:s.jsx(qe,{label:e,help:t,value:r,onValue:o,options:l,disabled:i})})}function Rn({onChange:e,...t}){return s.jsx(Pt,{...t,onValue:e})}const Oh=({stacks:e})=>s.jsxs(s.Fragment,{children:[s.jsx("option",{value:"",children:"None"}),e.map(t=>s.jsx("option",{value:t.id,children:t.name},t.id))]}),Fc=({title:e,scope:t,value:r,open:o,onOpen:n,onChange:i})=>s.jsx(as,{value:o?[t]:[],onValue:a=>n(a.includes(t)),items:[{id:t,title:e,content:s.jsxs("div",{className:"bv-prompt-editor-fields",children:[s.jsx(Rr,{label:"Positive",children:s.jsx(gs,{value:r.positive_source,onValue:a=>i({...r,positive_source:a}),completionContext:{scope:t,polarity:"positive"}})}),s.jsx(Rr,{label:"Negative",children:s.jsx(gs,{value:r.negative_source,onValue:a=>i({...r,negative_source:a}),completionContext:{scope:t,polarity:"negative"}})})]})}]}),fk=({region:e,automaticColor:t,onRegion:r})=>s.jsxs("section",{className:"bv-inspector-section",children:[s.jsx("h3",{children:"Mask & appearance"}),s.jsx(Rn,{label:"Feather",value:e.mask.feather,min:0,max:.5,step:.005,onChange:o=>r(n=>{n.mask.feather=o})}),s.jsx("div",{className:"region-color-control",children:s.jsxs("div",{className:"region-color-split",children:[s.jsx(T0,{label:"Display color",help:"Editor display only. It does not change masks or sampling.",value:e.authoring.color,onValue:o=>r(n=>{n.authoring.color=o.toUpperCase()})}),s.jsx(oe,{density:"compact",intent:"ghost",iconOnly:!0,"aria-label":"Reset display color to automatic",title:"Reset to automatic",disabled:!t||e.authoring.color.toUpperCase()===t,onClick:()=>r(o=>{t&&(o.authoring.color=t)}),children:"↶"})]})})]});function pk(e){const t=e.layer?.geometries.find(n=>n.type==="brush_stroke"),[r,o]=m.useState(e.mode??(e.layer?"selection":e.region?"region":"document"));return m.useEffect(()=>o(e.mode??(e.layer?"selection":e.region?"region":"document")),[e.layer?.id,e.mode,e.region?.id]),s.jsx(pf,{density:"compact",className:"inspector-density",children:s.jsxs("aside",{className:`inspector bv-ui ${e.mode?"fixed-inspector":""}`,children:[s.jsxs("nav",{className:"inspector-tabs",role:"tablist","aria-label":"Inspector context",children:[s.jsx(oe,{intent:"ghost",role:"tab","aria-selected":r==="selection",disabled:!e.layer,onClick:()=>o("selection"),children:"Selection"}),s.jsx(oe,{intent:"ghost",role:"tab","aria-selected":r==="region",disabled:!e.region,onClick:()=>o("region"),children:"Region"}),s.jsx(oe,{intent:"ghost",role:"tab","aria-selected":r==="document",onClick:()=>o("document"),children:"Document"})]}),s.jsxs("div",{className:"inspector-tab-panel",role:"tabpanel",hidden:r!=="selection",children:[e.region&&s.jsx(fk,{region:e.region,automaticColor:e.automaticRegionColor,onRegion:e.onRegion}),e.layer&&e.bounds?s.jsxs("section",{className:"bv-inspector-section",children:[s.jsx("h3",{children:"Layer"}),s.jsx("div",{className:"bv-layer-bounds-grid",children:["x","y","width","height"].map(n=>{const i=n==="x"||n==="width"?e.canvas.width:e.canvas.height;return s.jsx(Rn,{label:n.toUpperCase(),value:Math.round(e.bounds[n]*i),min:0,max:i,step:1,unit:"px",onChange:a=>e.onLayerBounds({...e.bounds,[n]:a/i})},n)})}),t&&s.jsxs(s.Fragment,{children:[s.jsx(Rn,{label:"Stroke width",value:t.size,min:.001,max:1,step:.005,onChange:n=>e.onBrushSetting("size",n),unit:"×"}),s.jsxs("div",{className:"bv-compact-grid",children:[s.jsx(Rn,{label:"Hardness",value:t.hardness,min:0,max:1,step:.05,onChange:n=>e.onBrushSetting("hardness",n)}),s.jsx(Rn,{label:"Opacity",value:t.opacity,min:0,max:1,step:.05,onChange:n=>e.onBrushSetting("opacity",n)})]}),s.jsxs("div",{className:"bv-compact-grid",children:[s.jsxs(En,{label:"Shape",value:t.shape??"round",onChange:n=>e.onBrushSetting("shape",n),children:[s.jsx("option",{value:"round",children:"Round"}),s.jsx("option",{value:"square",children:"Square"})]}),s.jsxs(En,{label:"Pressure",value:t.pressure_mode??"constant",onChange:n=>e.onBrushSetting("pressure_mode",n),children:[s.jsx("option",{value:"constant",children:"Constant"}),s.jsx("option",{value:"stylus",children:"Stylus"})]})]})]})]}):s.jsx("p",{className:"option-hint",children:"Select a layer to edit its geometry."})]}),s.jsx("div",{className:"inspector-tab-panel",role:"tabpanel",hidden:r!=="region",children:e.region&&s.jsxs("section",{className:"bv-inspector-section",children:[s.jsx("h3",{children:"Region"}),s.jsxs(En,{label:"Usage",help:"Controls whether this region participates in the main render, Detailer output, or both.",value:e.region.usage,onChange:n=>e.onRegion(i=>{i.usage=n}),children:[s.jsx("option",{value:"generation",children:"Generation"}),s.jsx("option",{value:"detailer",children:"Detailer only"}),s.jsx("option",{value:"both",children:"Generation + Detailer"})]}),e.loraV3RegionEditor??s.jsx(En,{label:"Additional LoRA Stack",help:"Added to the global stack. Source activation and strengths remain unchanged.",value:e.loraBindings.regions[e.region.id]??"",onChange:n=>e.onRegionLoraStack(e.region.id,n||null),children:s.jsx(Oh,{stacks:e.loraStacks})}),s.jsx(Rn,{label:"Strength",value:e.region.strength,min:0,max:10,step:.05,onChange:n=>e.onRegion(i=>{i.strength=n})}),s.jsx(Fc,{title:"Region Prompt",scope:"region",value:e.region.prompts,open:e.promptSections.region,onOpen:n=>e.onPromptSection("region",n),onChange:n=>e.onRegion(i=>{i.prompts=n})})]})}),s.jsx("div",{className:"inspector-tab-panel",role:"tabpanel",hidden:r!=="document",children:s.jsxs("section",{className:"bv-inspector-section",children:[s.jsx("h3",{children:"Document Prompts"}),e.loraV3GlobalEditor??s.jsx(En,{label:"Global LoRA Stack",help:"Applied globally and inherited by every region.",value:e.loraBindings.global_stack_id??"",onChange:n=>e.onGlobalLoraStack(n||null),children:s.jsx(Oh,{stacks:e.loraStacks})}),s.jsxs(En,{label:"Negative Mode",value:e.negativeMode,onChange:n=>e.onNegativeMode(n),children:[s.jsx("option",{value:"auto",children:"Auto"}),s.jsx("option",{value:"prompt",children:"Prompt"}),s.jsx("option",{value:"zero_out",children:"Zero out"})]}),s.jsx(Fc,{title:"Global",scope:"global",value:e.globalPrompts,open:e.promptSections.global,onOpen:n=>e.onPromptSection("global",n),onChange:e.onGlobalPrompts}),s.jsx(Fc,{title:"Background",scope:"background",value:e.backgroundPrompts,open:e.promptSections.background,onOpen:n=>e.onPromptSection("background",n),onChange:e.onBackgroundPrompts})]})})]})})}const et=(e,t=0,r=1)=>Math.max(t,Math.min(r,e));function hk(e,t={width:1,height:1}){if(e.type==="rect"||e.type==="ellipse"||e.type==="raster_mask")return{x:e.x,y:e.y,width:e.width,height:e.height};const r=e.points.map(f=>f.x),o=e.points.map(f=>f.y);if(e.type==="polygon")return{x:Math.min(...r),y:Math.min(...o),width:Math.max(...r)-Math.min(...r),height:Math.max(...o)-Math.min(...o)};const n=Math.min(t.width,t.height),i=e.size*n/t.width/2,a=e.size*n/t.height/2,l=et(Math.min(...r)-i),c=et(Math.min(...o)-a),u=et(Math.max(...r)+i),d=et(Math.max(...o)+a);return{x:l,y:c,width:u-l,height:d-c}}function nx(e,t,r){const o=r.x-t.x,n=r.y-t.y;if(o===0&&n===0)return Math.hypot(e.x-t.x,e.y-t.y);const i=et(((e.x-t.x)*o+(e.y-t.y)*n)/(o*o+n*n));return Math.hypot(e.x-(t.x+i*o),e.y-(t.y+i*n))}function gk(e,t,r={width:1,height:1}){if(e.type==="rect"||e.type==="raster_mask")return t.x>=e.x&&t.x<=e.x+e.width&&t.y>=e.y&&t.y<=e.y+e.height;if(e.type==="ellipse"){const a=e.width/2,l=e.height/2;return((t.x-e.x-a)/a)**2+((t.y-e.y-l)/l)**2<=1}if(e.type==="polygon"){let a=!1;for(let l=0,c=e.points.length-1;lt.y!=d.y>t.y&&t.x<(d.x-u.x)*(t.y-u.y)/(d.y-u.y)+u.x&&(a=!a)}return a}const o=a=>({...a,x:a.x*r.width,y:a.y*r.height}),n=e.size*Math.min(r.width,r.height)/2,i=o(t);return e.points.length===1?Math.hypot(i.x-e.points[0].x*r.width,i.y-e.points[0].y*r.height)<=n:e.points.slice(1).some((a,l)=>nx(i,o(e.points[l]),o(a))<=n)}function tc(e,t){const r=e.map(l=>hk(l,t)),o=Math.min(...r.map(l=>l.x)),n=Math.min(...r.map(l=>l.y)),i=Math.max(...r.map(l=>l.x+l.width)),a=Math.max(...r.map(l=>l.y+l.height));return{x:o,y:n,width:i-o,height:a-n}}function Mh(e,t,r,o){const n=tc(e,o);return t=et(t,-n.x,1-n.x-n.width),r=et(r,-n.y,1-n.y-n.height),e.map(i=>{const a=Kt(i);return a.type==="rect"||a.type==="ellipse"||a.type==="raster_mask"?(a.x+=t,a.y+=r):a.points=a.points.map(l=>({...l,x:l.x+t,y:l.y+r})),a})}function ix(e,t,r){const o=tc(e,r);t={x:et(t.x,0,.998),y:et(t.y,0,.998),width:et(t.width,.002,1),height:et(t.height,.002,1)},t.width=Math.min(t.width,1-t.x),t.height=Math.min(t.height,1-t.y);const n=t.width/Math.max(o.width,1e-6),i=t.height/Math.max(o.height,1e-6);return e.map(a=>{const l=Kt(a);return l.type==="rect"||l.type==="ellipse"||l.type==="raster_mask"?(l.x=t.x+(l.x-o.x)*n,l.y=t.y+(l.y-o.y)*i,l.width*=n,l.height*=i):(l.points=l.points.map(c=>({...c,x:t.x+(c.x-o.x)*n,y:t.y+(c.y-o.y)*i})),l.type==="brush_stroke"&&(l.size=et(l.size*Math.sqrt(n*i),.001,1))),l})}function bk(e,t,r,o,n=!1,i){const a=tc(e,i);let l=a.x,c=a.y,u=l+a.width,d=c+a.height;if(t.includes("w")&&(l=et(l+r,0,u-.002)),t.includes("e")&&(u=et(u+r,l+.002,1)),t.includes("n")&&(c=et(c+o,0,d-.002)),t.includes("s")&&(d=et(d+o,c+.002,1)),n&&t.length===2){const f=a.width/Math.max(a.height,1e-4),p=u-l,g=d-c;if(p/g>f){const x=p/f;t.includes("n")?c=et(d-x):d=et(c+x)}else{const x=g*f;t.includes("w")?l=et(u-x):u=et(l+x)}}return ix(e,{x:l,y:c,width:u-l,height:d-c},i)}function vk(e,t,r){return nx(e,t,r)}function mk(e,t=.0015){if(e.length<=2)return e;const r=[e[0]];for(const n of e.slice(1,-1))Math.hypot(n.x-r[r.length-1].x,n.y-r[r.length-1].y)>=t&&r.push(n);r.push(e[e.length-1]);const o=n=>{if(n.length<=2)return n;let i=0,a=0;for(let l=1;li&&(i=c,a=l)}return i<=t?[n[0],n[n.length-1]]:[...o(n.slice(0,a+1)).slice(0,-1),...o(n.slice(a))]};return o(r)}const Ah=e=>e.layer_id??e.id,xk=e=>e.authoring??{name:"Layer",visible:!0,locked:!1};function yk(e,t,r,o){if(o==="replace")return{ids:[t],primary:t,anchor:t};if(o==="toggle"){const l=e.ids.includes(t)?e.ids.filter(c=>c!==t):[...e.ids,t];return{ids:l,primary:l.includes(t)?t:l[l.length-1]??null,anchor:t}}const n=e.anchor&&r.includes(e.anchor)?e.anchor:e.primary;if(!n)return{ids:[t],primary:t,anchor:t};const i=r.indexOf(n),a=r.indexOf(t);return i<0||a<0?{ids:[t],primary:t,anchor:t}:{ids:r.slice(Math.min(i,a),Math.max(i,a)+1),primary:t,anchor:n}}function _k(e,t,r){const o=new Set(t);if(o.size<2||!o.has(r))return!1;const n=e.geometry.find(l=>Ah(l)===r);if(!n)return!1;const i=xk(n);let a=!1;return e.geometry.forEach(l=>{const c=Ah(l);o.has(c)&&(l.mask_group_id??(l.mask_group_id=c),l.layer_id=r,l.authoring={...i},a||(a=c!==r))}),a}function ax(e,t){const r=new Map;e.forEach(o=>{o.mask_group_id&&(r.has(o.mask_group_id)||r.set(o.mask_group_id,t()),o.mask_group_id=r.get(o.mask_group_id))})}const wk="bv-regional-editor-state-v1:",Qe=(e,t)=>typeof e=="number"&&Number.isFinite(e)?e:t,Tt=(e,t,r)=>Math.max(t,Math.min(r,e)),kk=["select","rect-add","rect-subtract","ellipse-add","ellipse-subtract","polygon-add","polygon-subtract","brush-add","brush-subtract"];function lx(e){return`${wk}${e}`}function Ek(e,t,r={width:520,height:560}){return{x:Tt(Qe(e.x,t.width-r.width-24),-r.width+52,t.width-52),y:Tt(Qe(e.y,84),72,Math.max(72,t.height-52))}}function bs(e,t){const r=Tt(Qe(e.width,520),Math.min(360,t.width),Math.max(360,t.width-32)),o=Tt(Qe(e.height,640),Math.min(320,t.height),Math.max(320,t.height-32));return{...Ek({x:Qe(e.x,t.width-r-24),y:Qe(e.y,84)},t,{width:r}),width:r,height:o}}function Dh(e,t){return e.mode==="workspace"?dn({x:24,y:58,width:t.width-48,height:t.height-82},t,"workspace"):e.windows.floating}function dn(e,t,r){const o=Math.min(780,Math.max(320,t.width-16)),n=Math.min(520,Math.max(300,t.height-16)),i=Math.max(o,t.width),a=Math.max(n,t.height),l=Tt(Qe(e.width,o),o,i),c=Tt(Qe(e.height,n),n,a),u=r==="workspace"?8:0;return{x:Tt(Qe(e.x,u),u-l+80,t.width-u-80),y:Tt(Qe(e.y,58),0,t.height-42),width:l,height:c}}function Af(e={width:window.innerWidth,height:window.innerHeight}){const t=dn({x:24,y:58,width:e.width-48,height:e.height-82},e,"workspace"),r=Math.min(1100,e.width-32),o=Math.min(760,e.height-80),n=dn({x:Math.max(16,e.width-r-32),y:64,width:r,height:o},e,"floating");return{version:1,mode:"workspace",windows:{workspace:t,floating:n},panels:{left:290,right:340},artboard:{zoom:1,panX:0,panY:0,fit:!0},selectedRegionId:null,selectedLayerId:null,displayOpacity:.5,backgroundOpacity:1,isolate:!1,binaryMaskPreview:!1,tool:"select",brush:{size:.04,hardness:.75,opacity:1,shape:"round",pressureMode:"constant"},openMenu:null,promptSections:{region:!1,global:!1,background:!1},quickPromptTarget:"global",quickPromptWindow:bs({x:e.width-544,y:84,width:520,height:640},e)}}function Tk(e,t={width:window.innerWidth,height:window.innerHeight}){const r=Af(t),o=e&&typeof e=="object"?e:{},n=o.mode==="floating"?"floating":"workspace",i=o.windows&&typeof o.windows=="object"?o.windows:r.windows,a=o.panels&&typeof o.panels=="object"?o.panels:r.panels,l=o.artboard&&typeof o.artboard=="object"?o.artboard:r.artboard,c=o.brush&&typeof o.brush=="object"?o.brush:r.brush;return{version:1,mode:n,windows:{workspace:dn(i.workspace??r.windows.workspace,t,"workspace"),floating:dn(i.floating??r.windows.floating,t,"floating")},panels:{left:Tt(Qe(a.left,290),210,620),right:Tt(Qe(a.right,340),210,620)},artboard:{zoom:Tt(Qe(l.zoom,1),.02,8),panX:Qe(l.panX,0),panY:Qe(l.panY,0),fit:typeof l.fit=="boolean"?l.fit:!0},selectedRegionId:typeof o.selectedRegionId=="string"?o.selectedRegionId:null,selectedLayerId:typeof o.selectedLayerId=="string"?o.selectedLayerId:null,displayOpacity:Tt(Qe(o.displayOpacity,.5),.05,1),backgroundOpacity:Tt(Qe(o.backgroundOpacity,1),0,1),isolate:o.isolate===!0,tool:o.tool==="rect"?"rect-add":kk.includes(o.tool)?o.tool:"select",binaryMaskPreview:o.binaryMaskPreview===!0,brush:{size:Tt(Qe(c.size,.04),.001,1),hardness:Tt(Qe(c.hardness,.75),0,1),opacity:Tt(Qe(c.opacity,1),0,1),shape:c.shape==="square"?"square":"round",pressureMode:c.pressureMode==="stylus"?"stylus":"constant"},openMenu:["file","edit","view","artboard","layers","help"].includes(o.openMenu)?o.openMenu:null,promptSections:{region:o.promptSections?.region===!0,global:o.promptSections?.global===!0,background:o.promptSections?.background===!0},quickPromptTarget:typeof o.quickPromptTarget=="string"&&o.quickPromptTarget?o.quickPromptTarget:"global",quickPromptWindow:bs(o.quickPromptWindow??r.quickPromptWindow,t)}}function Ml(e,t=localStorage,r={width:window.innerWidth,height:window.innerHeight}){try{return Tk(JSON.parse(t.getItem(lx(e))||"null"),r)}catch{return Af(r)}}function nd(e,t,r=localStorage){try{return r.setItem(lx(e),JSON.stringify(t)),!0}catch{return!1}}function Rk(e,t,r,o=8){if(e.length!==t*r)throw new Error("Alpha buffer size does not match its dimensions");const n=new Int32Array(e.length),i=[];let a=0;const l=new Int32Array(e.length);for(let c=0;c=o&&(n[y]=a,l[d++]=y)}}i.push({label:a,x:f,y:p,width:g-f+1,height:x-p+1,pixels:w})}return{labels:n,areas:i}}const id=(e,t)=>{const r=document.createElement("canvas");return r.width=e,r.height=t,r},Sk=e=>new Promise((t,r)=>{const o=new Image;o.onload=()=>t(o),o.onerror=()=>r(new Error("Raster layer image could not be decoded")),o.src=e});async function Lk(e,t,r,o){if(e.save(),e.globalCompositeOperation=t.operation==="subtract"?"destination-out":"source-over",e.fillStyle="white",e.strokeStyle="white",t.type==="rect")e.fillRect(t.x*r,t.y*o,t.width*r,t.height*o);else if(t.type==="ellipse")e.beginPath(),e.ellipse((t.x+t.width/2)*r,(t.y+t.height/2)*o,t.width*r/2,t.height*o/2,0,0,Math.PI*2),e.fill();else if(t.type==="polygon")e.beginPath(),t.points.forEach((n,i)=>i?e.lineTo(n.x*r,n.y*o):e.moveTo(n.x*r,n.y*o)),e.closePath(),e.fill();else if(t.type==="raster_mask")e.drawImage(await Sk(t.data_url),t.x*r,t.y*o,t.width*r,t.height*o);else{const n=Math.min(r,o),i=t.points,a=t.size*n,l=t.shape==="square"?"square":"round",c=(f,p,g=0)=>{const x=a*f.pressure*p;e.filter=g>0?`blur(${g}px)`:"none",e.beginPath(),t.shape==="square"?e.rect(f.x*r-x/2,f.y*o-x/2,x,x):e.arc(f.x*r,f.y*o,x/2,0,Math.PI*2),e.fill()},u=(f,p=0)=>{e.filter=p>0?`blur(${p}px)`:"none",e.lineCap=l,e.lineJoin=l==="round"?"round":"miter";for(let g=1;g0&&c(i[0],t.hardness)):(u(1,d),t.hardness>0&&u(t.hardness))}e.restore()}async function Ck(e,t,r){const o=id(t,r),n=o.getContext("2d",{willReadFrequently:!0}),i=new Map;e.filter(a=>a.enabled!==!1).forEach(a=>{const l=Ba(a),c=i.get(l);c?c.push(a):i.set(l,[a])});for(const a of i.values()){const l=id(t,r),c=l.getContext("2d");for(const u of a)await Lk(c,u,t,r);n.drawImage(l,0,0)}return o}async function Nk(e,t,r){const i=(await Ck(e,t.width,t.height)).getContext("2d",{willReadFrequently:!0}).getImageData(0,0,t.width,t.height),a=new Uint8ClampedArray(t.width*t.height);for(let f=0;ff.pixels>1);if(u.length<2)return[];const d={...e[0].authoring??{name:"Layer",visible:!0,locked:!1}};return u.map((f,p)=>{const g=id(f.width,f.height),x=g.getContext("2d"),w=x.createImageData(f.width,f.height);for(let b=0;b({schema:"bv.regional.lora_bindings",version:1,document_id:e,global_stack_id:null,regions:{}});function Ok(e,t,r){if(!t)return!1;const o=r.filter(n=>n.id===t);return o.length>1&&o[0].nodeId!==e}function Df(e,t){if(e==null||e==="")return rc(t);const r=typeof e=="string"?JSON.parse(e):structuredClone(e);if(r?.schema!=="bv.regional.lora_bindings"||r?.version!==1||typeof r?.regions!="object"||Array.isArray(r.regions))throw new Error("Not a valid BV regional LoRA bindings v1 value");if(r.document_id&&r.document_id!==t)throw new Error("LoRA bindings target a different BV Regional document");const o={};for(const[n,i]of Object.entries(r.regions))typeof i=="string"&&i&&(o[n]=i);return{schema:"bv.regional.lora_bindings",version:1,document_id:t,global_stack_id:typeof r.global_stack_id=="string"&&r.global_stack_id?r.global_stack_id:null,regions:o}}function $n(e,t){const r=Object.fromEntries(Object.entries(e.regions).filter(([o])=>t.has(o)));return{...e,regions:r}}function Uc(e,t){const r=structuredClone(e);return{document:r,loraBindings:structuredClone($n(t,new Set(r.regions.map(o=>o.id))))}}function Mk(e,t,r){const o=t.find((c,u)=>t.findIndex(d=>d.id===c.id)!==u);if(o)return[`Duplicate LoRA stack ID: ${o.id}`];const n=t.find((c,u)=>t.findIndex(d=>d.name.localeCompare(c.name,void 0,{sensitivity:"accent"})===0)!==u);if(n)return[`Duplicate LoRA stack name: ${n.name}`];const i=r&&Object.keys(e.regions).find(c=>!r.has(c));if(i)return[`LoRA assignment targets a missing region: ${i}`];const a=new Set(t.map(c=>c.id)),l=[e.global_stack_id,...Object.values(e.regions)].filter(c=>!!c);return l.length?t.length?[...new Set(l.filter(c=>!a.has(c)))].map(c=>`Assigned LoRA stack is missing: ${c}`):["LoRA stacks are assigned, but no BV Named LoRA Stack sources exist in this workflow."]:[]}function Ak(e,t,r){const o=new Map(t.map(i=>[i.id,i.name])),n=[];e.global_stack_id&&n.push(`Global: ${o.get(e.global_stack_id)??"Missing stack"}`);for(const[i,a]of Object.entries(e.regions))n.push(`${r[i]??"Missing region"}: ${o.get(a)??"Missing stack"}`);return n.length?`${n.join(" · ")} · source values unchanged`:"No LoRA stacks assigned"}const vs=(e,t)=>e.regions.find(r=>r.id===t)??null,ad=(e,t)=>e?Ar(e).find(r=>r.id===t)??null:null,ld=e=>e.kind==="layer"||e.kind==="geometry"?e.layerId:null;function Dk(e,t){const r=vs(e,t.source.regionId),o=vs(e,t.target.regionId);if(!r||!o||r.authoring.locked||o.authoring.locked||t.source.kind!=="region"&&ad(r,t.source.layerId)?.authoring.locked)return!1;const n=ld(t.target);return!(n&&ad(o,n)?.authoring.locked)}function Ik(e,t,r,o){if(!r||o==="inside"){e.geometry.push(...t);return}const n=e.geometry.map((a,l)=>zt(a)===r?l:-1).filter(a=>a>=0);if(!n.length){e.geometry.push(...t);return}const i=o==="before"?n[n.length-1]+1:n[0];e.geometry.splice(i,0,...t)}function jk(e,t,r){if(!Dk(e,t))return!1;const o=structuredClone(e.regions),n=()=>e.regions.every(f=>Pv(f.geometry))?!0:(e.regions=o,!1);if(t.source.kind==="region"){if(t.target.kind!=="region"||t.position==="inside"||t.source.regionId===t.target.regionId)return!1;const f=e.regions.findIndex(x=>x.id===t.source.regionId),[p]=e.regions.splice(f,1),g=e.regions.findIndex(x=>x.id===t.target.regionId);return e.regions.splice(t.position==="before"?g:g+1,0,p),e.regions.forEach((x,w)=>{x.priority=w}),n()}const i=vs(e,t.source.regionId),a=vs(e,t.target.regionId);if(t.source.kind==="layer"){const f=t.source;if(t.target.kind==="geometry"||f.layerId===ld(t.target))return!1;const p=i.geometry.filter(g=>zt(g)===f.layerId);return p.length?(i.geometry=i.geometry.filter(g=>zt(g)!==f.layerId),Ik(a,p,ld(t.target),t.position),n()):!1}const l=t.source,c=i.geometry.findIndex(f=>f.id===l.geometryId);if(c<0||t.target.kind==="region"&&t.position!=="inside")return!1;const[u]=i.geometry.splice(c,1);if(t.target.kind==="region")return u.layer_id=r(),delete u.mask_group_id,u.authoring={...sr(u)},a.geometry.push(u),n();const d=t.target.layerId;if((d!==l.layerId||a!==i)&&(u.mask_group_id??(u.mask_group_id=l.layerId),u.layer_id=d,u.authoring={...ad(a,d).authoring}),t.target.kind==="layer"||t.position==="inside"){const f=a.geometry.map((p,g)=>zt(p)===d?g:-1).filter(p=>p>=0);a.geometry.splice(f.length?f[f.length-1]+1:a.geometry.length,0,u)}else{const f=t.target,p=a.geometry.findIndex(g=>g.id===f.geometryId);a.geometry.splice(t.position==="before"?p:p+1,0,u)}return n()}const sx=e=>e.scope==="global"?"global":`region:${e.document_id}:${e.region_id}`;function cx(e,t){return e.scope===t.scope&&(t.scope==="global"||e.document_id===t.document_id&&e.region_id===t.region_id)}function ux(e,t,r){const o=e.entries.flatMap(n=>{if(r&&n.id!==r)return[n];const i=n.targets.filter(a=>!cx(a,t));return i.length?[{...n,targets:i}]:[]});return{...e,collector_id:o.some(n=>n.source.kind==="external")?e.collector_id:null,entries:o}}const dx=(e,t)=>e.entries.filter(r=>r.source.kind==="external"&&r.targets.some(o=>cx(o,t)));function Bk({collectors:e,config:t,target:r,resolved:o,onCollector:n,onResource:i,onAdd:a,onRemove:l}){const c=dx(t,r);return s.jsxs("div",{className:"bv-lora-v3-scope-picker",children:[c.map((u,d)=>s.jsxs("section",{className:"bv-lora-v3-stack-row",children:[s.jsxs("strong",{children:["LoRA Stack ",d+1]}),s.jsx(Gs,{collectors:e,collectorId:t.collector_id??"",resourceId:u.source.resource_id,resolved:o,onCollector:n,onResource:f=>i(u.id,f)}),s.jsx(oe,{density:"compact",intent:"ghost",iconOnly:!0,"aria-label":`Remove LoRA Stack ${d+1}`,title:"Remove LoRA stack",onClick:()=>l(u.id,r),children:s.jsx("svg",{className:"bv-trash-icon",viewBox:"0 0 24 24","aria-hidden":"true",children:s.jsx("path",{d:"M4 7h16M9 7V4h6v3M7 7l1 13h8l1-13M10 11v5M14 11v5"})})})]},u.id)),s.jsx(oe,{intent:"secondary",disabled:!e.some(u=>u.resources.length>0),onClick:()=>a(r),children:"Add LoRA stack"})]})}function Ih(e){const t=sx(e.target),r=dx(e.config,e.target).length>0,[o,n]=m.useState(r);return m.useEffect(()=>n(r),[r,t]),s.jsx("div",{className:"bv-optional-lora-scope",children:s.jsxs("div",{className:"bv-lora-v3-enable-row",children:[s.jsx(Xs,{label:"",value:o,trueLabel:"LoRA enabled",falseLabel:"LoRA disabled",onValue:i=>{n(i),i&&!r&&e.onAdd(e.target),i||e.onClear(e.target)}}),o&&s.jsx(Bk,{...e})]})})}const Pk=()=>({version:1,collector_id:null,entries:[]});function zk(e){const t=typeof e=="string"?JSON.parse(e):e;if(!t||typeof t!="object"||![1,2].includes(t.version)||!Array.isArray(t.entries)||t.version===2&&!Array.isArray(t.steps))throw new Error("Invalid BV Regional LoRA v3 configuration");return structuredClone(t)}const Fk=e=>JSON.stringify(e),fn="BV_RUNTIME_RESOURCE_PROVIDER",ai="resource_provider",fx="BV LoRA Stack Collector",If=(e,t)=>t==null?null:e?._links?.get?.(t)??e?.links?.get?.(t)??e?.links?.[t]??null,ms=e=>e?.findIndex(t=>t?.name===ai||t?.type===fn)??-1;function px(e){let t=ms(e.outputs);t<0&&e.addOutput&&(e.addOutput(ai,fn),t=ms(e.outputs));const r=e.outputs?.[t];return r&&(r.name=ai,r.type=fn,r.hidden=!0,r.__bvResourceSlot=!0),t}function hx(e){let t=ms(e.inputs);t<0&&e.addInput&&(e.addInput(ai,fn),t=ms(e.inputs));const r=e.inputs?.[t];return r&&(r.name=ai,r.type=fn,r.hidden=!0,r.__bvResourceSlot=!0),t}function Ta(e){const t=e.inputs?.find(i=>i.name===ai||i.type===fn),r=If(e.graph,t?.link);if(!r||String(r.target_id)!==String(e.id))return null;const o=e.graph?.getNodeById?.(r.origin_id),n=o?.outputs?.[Number(r.origin_slot)];return o?.graph===e.graph&&(o?.type===fx||n?.type===fn)?o:null}function Uk(e,t){const r=hx(e);if(r<0)return!1;if(e.inputs?.[r]?.link!=null&&e.disconnectInput?.(r),!t)return!0;if(t.graph!==e.graph)return!1;const o=px(t);return o<0?!1:(t.connect?.(o,e,r),Ta(e)===t)}function Vk(e){return(e.graph?._nodes??[]).filter(t=>t!==e&&t.graph===e.graph&&String(t.comfyClass??t.type)===fx)}const Wk=new Set(["BV Regional Native Conditioning","BV Regional Krea 2 Attention","BV Regional Anima Conditioning"]);function Hk(e){const t=e.graph,r=[e],o=new Set([e]),n=[];for(;r.length;){const i=r.shift();for(const a of i?.outputs??[])if(a?.type==="BV_REGIONAL")for(const l of a.links??[]){const c=If(t,l),u=c&&t?.getNodeById?.(c.target_id);!u||u.graph!==t||o.has(u)||(o.add(u),Wk.has(u.type)&&n.push(u),(u.outputs??[]).some(d=>d.type==="BV_REGIONAL")&&r.push(u))}}return n}function gx(e,t){return[e,...Hk(e)].map(o=>Uk(o,t)).every(Boolean)}function $k(e){const t=e.graph,r=[e],o=new Set([e]);for(;r.length;){const n=r.shift();for(const i of n?.inputs??[]){if(i?.type!=="BV_REGIONAL")continue;const a=If(t,i.link),l=a&&t?.getNodeById?.(a.origin_id);if(!(!l||l.graph!==t||o.has(l))){if(["BV Regional LoRA","BV Regional Prompt"].includes(String(l.comfyClass??l.type)))return l;o.add(l),r.push(l)}}}return null}const Yk="BV_RUNTIME_RESOURCE_PROVIDER_M0",sd="BV_RUNTIME_RESOURCE_PROVIDER",cd=e=>e===Yk||e===sd;function jf(e){return(e?._nodes??[]).some(t=>t.__bvM0ResourceConsumer===!0&&!!t.properties?.bvM0DebugVisible)}function Xk(e,t){if(!t)return!1;const r=e.graph?.getNodeById?.(t.origin_id),o=e.graph?.getNodeById?.(t.target_id);return r?.outputs?.[t.origin_slot]?.type===sd||o?.inputs?.[t.target_slot]?.type===sd?!0:bx(e,t)?!jf(e.graph):!!(r?.outputs?.[t.origin_slot]?.__bvM0VisualHidden||o?.inputs?.[t.target_slot]?.__bvM0VisualHidden)}function bx(e,t){if(!t)return!1;const r=e.graph?.getNodeById?.(t.origin_id),o=e.graph?.getNodeById?.(t.target_id),n=r?.outputs?.[t.origin_slot],i=o?.inputs?.[t.target_slot];return!!((n?.__bvM0ResourceSlot||cd(n?.type))&&(i?.__bvM0ResourceSlot||cd(i?.type)))}function vx(e){if(!e||e.__bvM0DebugAnimation)return;e.__bvM0DebugAnimation=!0;const t=()=>{const r=jf(e.graph);if(document.documentElement.classList.toggle("bv-m0-debug-active",r),!r){e.__bvM0DebugAnimation=!1;return}e.setDirty?.(!1,!0),e.setDirtyCanvas?.(!1,!0),requestAnimationFrame(t)};requestAnimationFrame(t)}function mx(e){if(typeof document>"u")return;const t=jf(e);document.documentElement.classList.toggle("bv-m0-debug-active",t)}function Bf(e){if(!e||e.__bvM0VisibilityInstalled)return;e.__bvM0VisibilityInstalled=!0;const t=e.drawNode,r=e.renderLink;e.renderLink=function(...o){if(Xk(this,o[3]))return;if(!bx(this,o[3]))return r.apply(this,o);const n=this.graph?.getNodeById?.(o[3]?.target_id),i=n?.inputs?.map((c,u)=>({slot:c,index:u})).filter(({slot:c})=>c.__bvM0ResourceSlot)??[],a=n?.__bvM0FanInAnchorSlot??(i.length>1?i[0].index:void 0);a!=null&&n&&((o[3]?.target_slot===a||!n.__bvM0FanInPoint)&&(n.__bvM0FanInPoint=o[2]),o[2]=n.__bvM0FanInPoint);const l=o[0];l.save();try{return l.setLineDash([7,5]),l.lineDashOffset=-((typeof performance>"u"?0:performance.now())/45%12),o[5]=typeof performance>"u"?0:performance.now()/1e3,r.apply(this,o)}finally{l.restore()}},e.drawNode=function(o,n){const i=[];for(const a of[...o.inputs??[],...o.outputs??[]])if(cd(a.type)){for(const l of["name","label","localized_name"]){const c=Object.prototype.hasOwnProperty.call(a,l),u=a[l];Object.defineProperty(a,l,{configurable:!0,writable:!0,value:""}),i.push(()=>c?Object.defineProperty(a,l,{configurable:!0,writable:!0,value:u}):delete a[l])}for(const l of["draw","drawCollapsed"]){if(typeof a[l]!="function")continue;const c=Object.prototype.hasOwnProperty.call(a,l),u=a[l];Object.defineProperty(a,l,{configurable:!0,writable:!0,value:()=>{}}),i.push(()=>c?Object.defineProperty(a,l,{configurable:!0,writable:!0,value:u}):delete a[l])}}try{return t.call(this,o,n)}finally{for(let a=i.length-1;a>=0;a--)i[a]()}}}function Pf(e,t,r){let o=0;const n=(e.__bvM0ElementMarkRevision??0)+1;e.__bvM0ElementMarkRevision=n;const i=()=>{if(e.__bvM0ElementMarkRevision!==n)return;const a=CSS.escape(String(e.id)),l=document.querySelector(`.lg-node[data-node-id="${a}"]`);if(!l){o++<40&&setTimeout(i,50);return}l.classList.add(`bv-m0-${t}`),l.classList.toggle("bv-m0-debug",r);const c=l.querySelectorAll(".lg-slot--input"),u=e.inputs?.map((f,p)=>({slot:f,index:p})).filter(({slot:f})=>f.__bvM0ResourceSlot)??[],d=u.length>1?u[0].index:void 0;c.forEach((f,p)=>f.classList.toggle("bv-m0-port-hidden",!!e.inputs?.[p]?.__bvM0PortHidden||d!=null&&p!==d)),l.classList.toggle("bv-m0-fan-in",d!=null),o++<4&&setTimeout(i,75*o)};i()}const Ji="bv-open-regional-lora-editor",xs="bv-regional-lora-inventory-changed",Sr=(e,t)=>e.widgets?.find(r=>r.name===t),za=e=>String(e?.comfyClass??e?.type??""),xx=(e,t)=>t==null?null:e?._links?.get?.(t)??e?.links?.get?.(t)??e?.links?.[t]??null,Ra=e=>{e&&(e.type="converted-widget",e.hidden=!0,e.computeSize=()=>[0,-4],e.element&&(e.element.style.display="none"),e.serializeValue=e.serializeValue??function(){return this.value})},Gk=e=>{e&&!String(e.value??"").trim()&&(e.value=crypto.randomUUID())},yx=()=>{let e=0;const t=()=>{const r=ct().canvas;r?Bf(r):e++<40&&setTimeout(t,50)};t()};function _x(e){const t=[],r=new Set,o=[e];for(;o.length;){const n=o.shift();if(!(!n||r.has(n))){r.add(n);for(const i of n.inputs??[]){if(!["lora_registry","registry"].includes(i.name))continue;const a=xx(n.graph,i.link),l=a&&n.graph?.getNodeById?.(a.origin_id);if(!(!l||l.graph!==n.graph)){if(za(l)==="BV Named LoRA Stack"){const c=String(Sr(l,"stack_id")?.value??"").trim(),u=String(Sr(l,"name")?.value??"").trim();c&&u&&t.push({id:c,label:u,node:l})}o.push(l)}}}}return t.reverse()}function li(e){return Vk(e).map(t=>({id:String(Sr(t,"collector_id")?.value??"").trim(),label:String(t.title||"BV LoRA Stack Collector"),resources:_x(t),node:t})).filter(t=>t.id)}function ys(e,t=za(e)==="BV Regional Prompt"?"lora_v3_config_json":"config_json"){try{let r=zk(Sr(e,t)?.value),o=Ta(e);const n=o?.__bvLoraCollectorIdRemap?.[String(r.collector_id??"")],i=Object.assign({},..._x(o).map(l=>l.node?.__bvLoraResourceIdRemap??{})),a=l=>l.source.kind==="external"&&i[l.source.resource_id]?{...l,source:{...l.source,resource_id:i[l.source.resource_id]}}:l;return n&&(r={...r,collector_id:n,entries:r.entries.map(a),steps:r.steps?.map(l=>({...l,entries:l.entries.map(a)}))},wx(e,r,t)),r}catch{return Pk()}}function wx(e,t,r=za(e)==="BV Regional Prompt"?"lora_v3_config_json":"config_json"){const o=Sr(e,r);o&&(o.value=Fk(t),o.callback?.(o.value),e.setDirtyCanvas?.(!0,!0))}function Kk(e){const t=e?.graph,r=[e],o=new Set;let n=null;for(;r.length&&!n;){const i=r.shift();if(!(!i||o.has(i))){if(o.add(i),za(i)==="BV Regional Prompt"){try{const a=JSON.parse(String(Sr(i,"regional_json")?.value??"{}"));n=a.version===3?a.core:a}catch{}break}for(const a of i.inputs??[]){if(a.type!=="BV_REGIONAL")continue;const l=xx(t,a.link),c=l&&t?.getNodeById?.(l.origin_id);c?.graph===t&&r.push(c)}}}return n?.document_id?[{value:"global",label:"Global",target:{scope:"global"}},...(n.regions??[]).map(i=>({value:`region:${n.document_id}:${i.id}`,label:String(i.name||i.id),target:{scope:"region",document_id:String(n.document_id),region_id:String(i.id)}}))]:[{value:"global",label:"Global",target:{scope:"global"}}]}function ud(e,t){const r=Ta(e);return!!r&&String(Sr(r,"collector_id")?.value??"")===String(t.collector_id??"")}function bi(e,t){const r=li(e).find(o=>o.id===t.collector_id);return gx(e,r?.node??null),wx(e,t),t}function kx(e,t,r){const o=li(e).find(a=>a.id===r),n=o?.resources[0]?.id??"",i=a=>a.source.kind==="external"?{...a,source:{...a.source,resource_id:n}}:a;return bi(e,{...t,collector_id:r||null,entries:t.entries.map(i),steps:t.steps?.map(a=>({...a,entries:a.entries.map(i)}))})}function Ex(e,t,r,o){const n=i=>i.id===r&&i.source.kind==="external"?{...i,source:{...i.source,resource_id:o}}:i;return bi(e,{...t,entries:t.entries.map(n),steps:t.steps?.map(i=>({...i,entries:i.entries.map(n)}))})}function qk(e,t,r){const o=li(e).find(i=>i.id===t.collector_id)??li(e)[0],n=o?.resources[0];return!o||!n?t:bi(e,{...t,collector_id:o.id,entries:[...t.entries,{id:crypto.randomUUID(),source:{kind:"external",resource_id:n.id},targets:[r]}]})}function Jk(e,t,r,o){return bi(e,ux(t,o,r))}function Zk(e,t,r){return bi(e,ux(t,r))}function Qk(e){yx();const t=Sr(e,"collector_id");Gk(t);const r=String(t?.value??"").trim(),o=(e.graph?._nodes??[]).find(n=>n!==e&&za(n)==="BV LoRA Stack Collector"&&String(Sr(n,"collector_id")?.value??"").trim()===r);if(t&&r&&o){const n=crypto.randomUUID();t.value=n,e.__bvLoraCollectorIdRemap={[r]:n}}Ra(t),px(e),e.__bvRuntimeResourceProvider=!0}function _s(e){yx();const t=hx(e),r=e.inputs?.[t];if(r&&(r.hidden=!0,r.__bvM0VisualHidden=!0,r.__bvM0PortHidden=!0,r.__bvM0ResourceSlot=!0),!Ta(e)){const o=$k(e),n=o&&Ta(o);n&&gx(o,n)}}function eE(e){if(_s(e),Ra(Sr(e,"operation")),Ra(Sr(e,"config_json")),!e.widgets?.find(t=>t.name==="open_lora_editor")){const t=e.addWidget?.("button","open_lora_editor",null,()=>window.dispatchEvent(new CustomEvent(Ji,{detail:{node:e}})),{serialize:!1});t&&(t.label="Open LoRA Editor",t.serialize=!1)}e.setSize?.([Math.max(e.size?.[0]??0,220),e.computeSize?.()[1]??60])}function tE(e,t){const r=t.name==="BV LoRA Stack Collector",o=t.name==="BV Regional LoRA",n=["BV Regional Native Conditioning","BV Regional Krea 2 Attention","BV Regional Anima Conditioning"].includes(t.name);if(!r&&!o&&!n)return!1;const i=e.prototype.onNodeCreated,a=e.prototype.onConfigure,l=e.prototype.onConnectionsChange,c=e.prototype.onRemoved,u=function(){r&&Qk(this),o&&eE(this),n&&_s(this),o&&window.dispatchEvent(new CustomEvent(xs))};return e.prototype.onNodeCreated=function(){const d=i?.apply(this,arguments);return queueMicrotask(()=>u.call(this)),d},e.prototype.onConfigure=function(){const d=a?.apply(this,arguments);return queueMicrotask(()=>u.call(this)),d},e.prototype.onConnectionsChange=function(){const d=l?.apply(this,arguments);return queueMicrotask(()=>u.call(this)),d},e.prototype.onRemoved=function(){const d=c?.apply(this,arguments);return o&&queueMicrotask(()=>window.dispatchEvent(new CustomEvent(xs))),d},!0}const zo=e=>ma(ct().rootGraph??ct().graph,e),jh=e=>e?.widgets?.find(t=>t.name==="regional_json"),cl=e=>e?.widgets?.find(t=>t.name==="lora_bindings_json"),Bh=(e,t)=>e&&t?e.geometry.filter(r=>zt(r)===t):[],Fo=Z1,Vc=(e,t)=>{const r=e.currentTarget.getBoundingClientRect();return{x:Math.max(0,Math.min(1,(e.clientX-r.left)/r.width)),y:Math.max(0,Math.min(1,(e.clientY-r.top)/r.height)),pressure:t==="stylus"&&e.pointerType==="pen"?Math.max(.01,e.pressure):1}};function Ph(e,t){const r=URL.createObjectURL(new Blob([JSON.stringify(t,null,2)],{type:"application/json"})),o=document.createElement("a");o.href=r,o.download=e,o.click(),URL.revokeObjectURL(r)}function rE(e){const t=new Map(e.map(r=>[r.id,Mt()]));return Kt(e).map(r=>{r.id=t.get(r.id),r.parent_region_id=r.parent_region_id?t.get(r.parent_region_id)??null:null,ax(r.geometry,Mt);const o=new Map;return r.geometry.forEach(n=>{const i=zt(n);o.has(i)||o.set(i,Mt()),n.id=Mt(),n.layer_id=o.get(i)}),r})}function oE({open:e,activationToken:t=0,nodes:r,initialNode:o,backgrounds:n,loraStacks:i,onClose:a}){const[l,c]=m.useState(o),[u,d]=m.useState(null),[f,p]=m.useState(null),[g,x]=m.useState(null),[w,k]=m.useState([]),[b,h]=m.useState(null),[v,_]=m.useState(null),[y,T]=m.useState("select"),[S,P]=m.useState({size:.04,hardness:.75,opacity:1,shape:"round",pressureMode:"constant"}),[O,B]=m.useState(.5),[j,M]=m.useState(1),[E,z]=m.useState(!1),[L,R]=m.useState([]),[N,A]=m.useState([]),[W,F]=m.useState(null),[ie,X]=m.useState(null),[q,Z]=m.useState(""),[Y,Q]=m.useState(()=>Af()),[ne,le]=m.useState(0),[Ce,Ee]=m.useState([]),[ve,jt]=m.useState(()=>rc("")),[G,ue]=m.useState(()=>ys(o)),se=bf(),$=m.useRef(null),pe=m.useRef(!1),fe=m.useRef(t),he=m.useRef(null),ot=m.useCallback(C=>Q(I=>{const V=I.artboard;return V.zoom===C.zoom&&V.panX===C.panX&&V.panY===C.panY&&V.fit===C.fit?I:{...I,artboard:C}}),[]),nt=m.useCallback(C=>Q(I=>I.openMenu===C?I:{...I,openMenu:C}),[]);m.useEffect(()=>{const C=pe.current,I=fe.current!==t;if(pe.current=e,fe.current=t,!e||!I)return;const V=o??r[0]??null,H=zo(l),J=zo(V);C&&H&&J!==H&&ni()==="keep"?Ee(de=>[...new Set([...de,H])].filter(Se=>Se!==J)):J&&Ee(de=>de.filter(Se=>Se!==J)),he.current=C?{mode:Y.mode,geometry:Dh(Y,{width:window.innerWidth,height:window.innerHeight})}:null,c(V)},[t,o,r,e]),m.useEffect(()=>{h(null)},[l,e]),m.useEffect(()=>{if(!(!e||!l))try{const C=un(jh(l)?.value);C.regions=Nh(C.regions),Fo(C.regions);const I=Df(cl(l)?.value,C.document_id),V=$n(I,new Set(C.regions.map(br=>br.id))),H=cl(l);H&&JSON.stringify(I)!==JSON.stringify(V)&&(H.value=JSON.stringify(V),H.callback?.(H.value),l.graph?.setDirtyCanvas?.(!0,!0));const J=Ml(C.document_id),de=C.regions.some(br=>br.id===J.selectedRegionId)?J.selectedRegionId:C.regions[0]?.id??null,Se=he.current;he.current=null,Se&&(J.mode=Se.mode,J.windows[Se.mode]=Se.geometry);const ut=C.regions.find(br=>br.id===de),$t=ut&&Ar(ut).some(br=>br.id===J.selectedLayerId)?J.selectedLayerId:null;Q(J),d(C),jt(V),ue(ys(l)),p(de),x($t),k($t?[$t]:[]),_($t),T(J.tool),P(J.brush),B(J.displayOpacity),M(J.backgroundOpacity),z(J.isolate&&!!$t),R([]),A([]),Z("")}catch(C){Z(C instanceof Error?C.message:String(C))}},[l,e]),m.useEffect(()=>{u&&nd(u.document_id,{...Y,selectedRegionId:f,selectedLayerId:g,displayOpacity:O,backgroundOpacity:j,isolate:E,tool:y,brush:S})},[j,S,O,u,E,g,f,y,Y]),m.useEffect(()=>{if(!e)return;const C=()=>Q(I=>({...I,windows:{workspace:dn(I.windows.workspace,{width:window.innerWidth,height:window.innerHeight},"workspace"),floating:dn(I.windows.floating,{width:window.innerWidth,height:window.innerHeight},"floating")}}));return window.addEventListener("resize",C),()=>window.removeEventListener("resize",C)},[e]);const ye=u?.regions.find(C=>C.id===f)??null,We=Bh(ye,g),me=b?We.filter(C=>C.id===b):We,we=ye&&g?Ar(ye).find(C=>C.id===g)??null:null,Je=ye?Ar(ye).filter(C=>w.includes(C.id)):[],gt=Je.length>1&&Je.every(C=>!C.authoring.locked),Lr=!!we&&!we.authoring.locked,yt=C=>{x(C),k(C?[C]:[]),_(C),h(null)},yn=(C,I,V)=>{const H=u?.regions.find($t=>$t.id===C);if(!H)return;const J=C===f,de=[...Ar(H)].reverse().map($t=>$t.id),ut=yk(J?{ids:w,primary:g,anchor:v}:{ids:[],primary:null,anchor:null},I,de,V);p(C),k(ut.ids),x(ut.primary),_(ut.anchor),z(!1),h(null)},vi=W&&g&&W.every(C=>zt(C)===g)?$.current&&"commit"in $.current&&$.current.commit==="subtract"?[...me,...W]:W:me,rr=vi.length&&u?tc(vi,u.canvas):null,Ht=m.useCallback((C,I=!0,V=ve)=>{if(!l)return;I&&u&&(R(Se=>[...Se.slice(-99),Uc(u,ve)]),A([]));const H=$n(V,new Set(C.regions.map(Se=>Se.id)));d(C);const J=jh(l);J&&(J.value=JSON.stringify(C),J.callback?.(J.value)),jt(H);const de=cl(l);de&&(de.value=JSON.stringify(H),de.callback?.(de.value)),l.graph?.setDirtyCanvas?.(!0,!0)},[u,ve,l]),He=m.useCallback((C,I=!0)=>{if(!u)return;const V=Kt(u);C(V),Ht(V,I)},[u,Ht]),mi=m.useCallback(C=>{if(!l)return;const I=u?$n(C,new Set(u.regions.map(H=>H.id))):C;jt(I);const V=cl(l);V&&(V.value=JSON.stringify(I),V.callback?.(V.value)),l.graph?.setDirtyCanvas?.(!0,!0)},[u,l]),Ua=C=>mi({...ve,global_stack_id:C}),Ux=(C,I)=>{const V={...ve.regions};I?V[C]=I:delete V[C],mi({...ve,regions:V})},Vx=C=>He(I=>{const V=I.regions.find(H=>H.id===f);V&&C(V)}),Bo=(C,I)=>He(V=>{const H=V.regions.find(J=>J.id===f);H&&I(Bh(H,C),H)}),gr=m.useCallback(()=>{$.current=null,F(null)},[]),Va=m.useCallback(()=>{if($.current?.mode!=="draw-polygon"||!W?.length)return;const C=W.map(I=>I.type==="polygon"?{...I,points:I.points.filter((V,H,J)=>H===0||Math.hypot(V.x-J[H-1].x,V.y-J[H-1].y)>.001)}:I);if(C.some(I=>I.type!=="polygon"||I.points.length<3))return gr();He(I=>{const V=I.regions.find(H=>H.id===f);V&&V.geometry.push(...C)}),gr()},[gr,W,He,f]),lc=m.useCallback(()=>{if(!u||!L.length)return;const C=L[L.length-1];R(L.slice(0,-1)),A([Uc(u,ve),...N]),Ht(Kt(C.document),!1,Kt(C.loraBindings))},[u,N,L,ve,Ht]),sc=m.useCallback(()=>{if(!u||!N.length)return;const C=N[0];A(N.slice(1)),R([...L,Uc(u,ve)]),Ht(Kt(C.document),!1,Kt(C.loraBindings))},[u,N,L,ve,Ht]),cc=C=>{Bo(C,(I,V)=>{V.geometry=V.geometry.filter(H=>zt(H)!==C)}),w.includes(C)&&yt(null)},Wx=C=>He(I=>{const V=I.regions.find(J=>J.id===f),H=V?.geometry.find(J=>J.id===C);H&&(H.enabled=H.enabled===!1)}),Hx=C=>{const I=u?.regions.find(V=>V.id===f);if(!I||!qu(I.geometry,C)){jr({title:"Operation cannot be removed",message:"This operation is the additive base for later subtract operations. Delete or move those operations first.",tone:"warning",duration:5e3});return}He(V=>{const H=V.regions.find(J=>J.id===f);H&&(H.geometry=H.geometry.filter(J=>J.id!==C))}),b===C&&h(null)},Wf=()=>{if(!f||!g||!gt)return;const C=g;He(I=>{const V=I.regions.find(H=>H.id===f);V&&_k(V,w,C)}),yt(C)},$x=async()=>{if(!(!u||!f||!g||!we||!Lr))try{const C=await Nk(we.geometries,u.canvas,Mt);if(C.length<2){jr({title:"Layer was not split",message:"The selected layer contains fewer than two disconnected visible areas.",tone:"info",duration:4500});return}He(V=>{const H=V.regions.find(de=>de.id===f);if(!H)return;const J=H.geometry.findIndex(de=>zt(de)===g);H.geometry=H.geometry.filter(de=>zt(de)!==g),H.geometry.splice(Math.max(0,J),0,...C)});const I=C.map(V=>zt(V));k(I),x(I[0]),_(I[0])}catch(C){jr({title:"Split failed",message:String(C),tone:"danger",duration:6e3})}};m.useEffect(()=>{if(!e)return;const C=I=>{if(I.key==="Escape"&&$.current){I.preventDefault(),I.stopImmediatePropagation(),gr();return}if(I.key==="Enter"&&$.current?.mode==="draw-polygon"){I.preventDefault(),I.stopImmediatePropagation(),Va();return}if((I.ctrlKey||I.metaKey)&&I.key.toLowerCase()==="e"&>){I.preventDefault(),I.stopImmediatePropagation(),Wf();return}if((I.key==="Delete"||I.key==="Backspace")&&g&&!(I.target instanceof HTMLInputElement||I.target instanceof HTMLTextAreaElement)){I.preventDefault(),I.stopImmediatePropagation(),cc(g);return}!(I.ctrlKey||I.metaKey)||I.key.toLowerCase()!=="z"||(I.preventDefault(),I.stopImmediatePropagation(),I.shiftKey?sc():lc())};return window.addEventListener("keydown",C,!0),()=>window.removeEventListener("keydown",C,!0)},[gr,gt,cc,Va,e,sc,g,w,lc]);const Yx=C=>{if(!u||!ye||ye.authoring.locked)return;const I=Vc(C,S.pressureMode),V=C.target.closest?.("[data-handle]")?.getAttribute("data-handle");if(y==="select"){if(C.currentTarget.setPointerCapture(C.pointerId),F(null),V&&we&&!we.authoring.locked){$.current={mode:"resize",start:I,original:Kt(me),handle:V};return}const or=[...Ar(ye)].reverse().find(Yt=>Yt.enabled&&Yt.authoring.visible&&Yt.geometries.filter(Cr=>Cr.operation==="add").some(Cr=>gk(Cr,I,u.canvas)));yt(or?.id??null),or&&!or.authoring.locked&&($.current={mode:"move",start:I,startScreen:{x:C.clientX,y:C.clientY},original:Kt(or.geometries),started:!1});return}const H=y.endsWith("subtract");if(H&&(!g||we?.authoring.locked))return;if(y.startsWith("polygon")&&$.current?.mode==="draw-polygon"){const or=W?.find(Yt=>Yt.type==="polygon")?.points.length??0;if(q1(or,$.current.startScreen,{x:C.clientX,y:C.clientY})){Va();return}F(Yt=>Yt?.map(Cr=>Cr.type==="polygon"?{...Cr,points:[...Cr.points,I]}:Cr)??null);return}const J=Mt(),de=H?null:G1(we),Se=H?g:de??J,ut=y.startsWith("rect")?"Rectangle":y.startsWith("ellipse")?"Ellipse":y.startsWith("polygon")?"Polygon":"Brush",$t=H||de?we?.authoring:{name:`${ut} ${Ar(ye).length+1}`,visible:!0,locked:!1},br=H?[...new Set(me.map(Ba))]:[void 0];if(y.startsWith("rect")||y.startsWith("ellipse")){C.currentTarget.setPointerCapture(C.pointerId);const or=y.startsWith("rect")?"rect":"ellipse";F(br.map((Yt,Cr)=>({id:Cr?Mt():J,layer_id:Se,mask_group_id:Yt,type:or,operation:H?"subtract":"add",enabled:!0,authoring:$t,x:I.x,y:I.y,width:.001,height:.001}))),$.current={mode:"draw-box",start:I,commit:H?"subtract":"add"},H||yt(Se)}else y.startsWith("polygon")?(F(br.map((or,Yt)=>({id:Yt?Mt():J,layer_id:Se,mask_group_id:or,type:"polygon",operation:H?"subtract":"add",enabled:!0,authoring:$t,points:[I]}))),$.current={mode:"draw-polygon",start:I,startScreen:{x:C.clientX,y:C.clientY},commit:H?"subtract":"add"},H||yt(Se)):(C.currentTarget.setPointerCapture(C.pointerId),F(br.map((or,Yt)=>({id:Yt?Mt():J,layer_id:Se,mask_group_id:or,type:"brush_stroke",operation:y==="brush-add"?"add":"subtract",enabled:!0,authoring:$t,size:S.size,hardness:S.hardness,opacity:S.opacity,shape:S.shape,pressure_mode:S.pressureMode,points:[I]}))),$.current={mode:"draw-brush",start:I,commit:y==="brush-add"?"add":"subtract"},y==="brush-add"&&yt(Se))},Xx=C=>{if(!u)return;const I=Vc(C,S.pressureMode);X(I);const V=$.current;if(V)if(V.mode==="draw-box"&&(W?.[0]?.type==="rect"||W?.[0]?.type==="ellipse"))F(W.map(H=>H.type==="rect"||H.type==="ellipse"?{...H,x:Math.min(V.start.x,I.x),y:Math.min(V.start.y,I.y),width:Math.max(.001,Math.abs(I.x-V.start.x)),height:Math.max(.001,Math.abs(I.y-V.start.y))}:H));else if(V.mode==="draw-brush"&&W?.[0]?.type==="brush_stroke")F(W.map(H=>H.type==="brush_stroke"?{...H,points:[...H.points,I]}:H));else if(V.mode==="move"){if(!V.started&&!K1(V.startScreen,{x:C.clientX,y:C.clientY}))return;V.started=!0,F(Mh(V.original,I.x-V.start.x,I.y-V.start.y,u.canvas))}else V.mode==="resize"&&F(bk(V.original,V.handle,I.x-V.start.x,I.y-V.start.y,C.shiftKey,u.canvas))},Gx=C=>{if(!u||!$.current||!W)return gr();const I=$.current,V=Vc(C,S.pressureMode);if(I.mode==="draw-polygon")return;let H=Q1(I.mode)?W.map(J=>J.type==="brush_stroke"?{...J,points:mk([...J.points,V])}:J):W;if(I.mode==="draw-box"&&(H[0].type==="rect"||H[0].type==="ellipse")&&(H[0].width<=.002||H[0].height<=.002))return gr();He(J=>{const de=J.regions.find(Se=>Se.id===f);if(de)if(I.mode.startsWith("draw"))de.geometry.push(...H);else{const Se=new Map(H.map(ut=>[ut.id,ut]));de.geometry=de.geometry.map(ut=>Se.get(ut.id)??ut)}}),gr()},Kx=C=>{$.current?.mode==="draw-polygon"&&(C.preventDefault(),Va())},qx=(C,I)=>He(V=>{const H=V.regions.findIndex(de=>de.id===C),J=H+I;J<0||J>=V.regions.length||([V.regions[H],V.regions[J]]=[V.regions[J],V.regions[H]],Fo(V.regions))}),Jx=(C,I)=>Bo(C,(V,H)=>{const J=Ar(H),de=J.findIndex(ut=>ut.id===C),Se=de+I;Se<0||Se>=J.length||([J[de],J[Se]]=[J[Se],J[de]],H.geometry=J.flatMap(ut=>ut.geometries))}),Zx=C=>{let I=!1,V=null;if(He(J=>{I=jk(J,C,()=>V=Mt()),Fo(J.regions)}),!I)return;if(p(C.target.regionId),C.source.kind==="region"){yt(null);return}const H=C.source.kind==="layer"?C.source.layerId:C.target.kind==="region"?V:C.target.layerId;x(H),k(H?[H]:[]),_(H),h(C.source.kind==="geometry"?C.source.geometryId:null),z(!1)},Qx=(C,I)=>Bo(C,V=>{if(V.length)if(I==="enabled"){const H=!V.some(J=>J.enabled!==!1);V.forEach(J=>{J.enabled=H})}else{const H=!sr(V[0])[I];V.forEach(J=>{J.authoring={...sr(J),[I]:H}})}}),ey=C=>Bo(C,(I,V)=>{const H=Mt(),J=Mh(Kt(I),.02,.02,u.canvas);ax(J,Mt),J.forEach((de,Se)=>{de.id=Mt(),de.layer_id=H,de.authoring={...sr(de),name:`${sr(de).name} Copy`,visible:!0,locked:!1},Se&&(de.authoring=J[0].authoring)}),V.geometry.push(...J),yt(H)}),ty=C=>{const I=u?.regions.find(V=>V.id===C);I&&se.confirm({title:`Delete region “${I.name}”?`,message:`This removes ${Ar(I).length} layer(s) and clears child-region parent references.`,confirmLabel:"Delete region",danger:!0,action:()=>{He(V=>{V.regions=V.regions.filter(H=>H.id!==C),V.regions.forEach(H=>{H.parent_region_id===C&&(H.parent_region_id=null)}),Fo(V.regions)}),p(u?.regions.find(V=>V.id!==C)?.id??null),yt(null)}})},ry=async C=>{try{if(!u)return;const I=S0(un(await C.text()),u.document_id);I.regions=Nh(I.regions),Fo(I.regions),Ht(I),p(I.regions[0]?.id??null),yt(null)}catch(I){jr({title:"Document import failed",message:String(I),tone:"danger",duration:6e3})}},oy=async C=>{try{const I=JSON.parse(await C.text());if(I?.schema!=="bv.regions"||![1,2].includes(I?.version)||!Array.isArray(I.regions))throw new Error("Not a BV Regions v1/v2 export");const V=I.version===1?I.regions.map(H=>({...H,usage:"generation"})):I.regions;He(H=>{H.regions.push(...rE(V)),Fo(H.regions)})}catch(I){jr({title:"Region import failed",message:String(I),tone:"danger",duration:6e3})}},ny=hi(l);if(!e)return null;const Hf=Dh(Y,{width:window.innerWidth,height:window.innerHeight}),$f=(C,I,V=!0)=>{const H=zo(l);_r("regional",C),C!==H&&(Ee(J=>I?J.filter(de=>de!==C):[...new Set([...J,H])].filter(de=>de&&de!==C)),V&&(he.current={mode:Y.mode,geometry:Hf}),c(r.find(J=>zo(J)===C)??null))},iy=u?Mk(ve,i,new Set(u.regions.map(C=>C.id))):[],Yf=G.entries.length&&(!l||!ud(l,G))?["V3 LoRA collector link is unresolved"]:iy,ay=G.entries.length?`${G.entries.length} V3 LoRA assignment${G.entries.length===1?"":"s"}`:u?Ak(ve,i,Object.fromEntries(u.regions.map(C=>[C.id,C.name]))):"",ly=l?li(l).filter(C=>C.resources.length>0):[],sy=l?ud(l,G):!1,Xf={collectors:ly,config:G,resolved:sy,onCollector:C=>l&&ue(kx(l,G,C)),onResource:(C,I)=>l&&ue(Ex(l,G,C,I)),onAdd:C=>l&&ue(qk(l,G,C)),onRemove:(C,I)=>l&&ue(Jk(l,G,C,I)),onClear:C=>l&&ue(Zk(l,G,C))},uc=C=>u?s.jsx(pk,{mode:C,region:ye,layer:we,bounds:rr,canvas:u.canvas,automaticRegionColor:ye?jv(u.regions.indexOf(ye)):null,globalPrompts:u.prompts.global,backgroundPrompts:u.prompts.background,negativeMode:u.negative_mode,promptSections:Y.promptSections,loraBindings:ve,loraStacks:i,loraV3GlobalEditor:s.jsx(Ih,{...Xf,target:{scope:"global"}}),loraV3RegionEditor:ye?s.jsx(Ih,{...Xf,target:{scope:"region",document_id:u.document_id,region_id:ye.id}}):null,onGlobalLoraStack:Ua,onRegionLoraStack:Ux,onPromptSection:(I,V)=>Q(H=>({...H,promptSections:{...H.promptSections,[I]:V}})),onNegativeMode:I=>He(V=>{V.negative_mode=I}),onGlobalPrompts:I=>He(V=>{V.prompts.global=I}),onBackgroundPrompts:I=>He(V=>{V.prompts.background=I}),onRegion:Vx,onLayerBounds:I=>g&&Bo(g,(V,H)=>{const J=new Map(ix(V,I,u.canvas).map(de=>[de.id,de]));H.geometry=H.geometry.map(de=>J.get(de.id)??de)}),onBrushSetting:(I,V)=>g&&Bo(g,H=>H.forEach(J=>{J.type==="brush_stroke"&&Object.assign(J,{[I]:V})}))}):null;return s.jsxs(s.Fragment,{children:[Ce.map(C=>{const I=r.find(V=>zo(V)===C);return I?s.jsx(ec,{title:`Regional Editor · ${I.title||"BV Regional Prompt"} · #${I.id}`,onRestore:()=>$f(C,!1,!1),onClose:()=>Ee(V=>V.filter(H=>H!==C))},C):null}),s.jsx(xn,{open:e,activationToken:t,title:"BV Regional Editor",menuVisible:ny,onMenuVisible:C=>mn(l,C),context:s.jsx(Pa,{label:"Regional prompt document",value:zo(l),onNavigate:$f,options:r.filter(C=>vn(C)).map(C=>({value:zo(C),label:`${C.title||"BV Regional Prompt"} · #${C.id}`}))}),center:s.jsx(ck,{openMenu:Y.openMenu,onOpenMenu:nt,displayOpacity:O,backgroundOpacity:j,isolate:E,binaryMaskPreview:Y.binaryMaskPreview,hasSelection:!!g,onDisplayOpacity:B,onBackgroundOpacity:M,onToggleIsolate:()=>z(C=>!C),onToggleBinaryMaskPreview:()=>{gr(),Q(C=>({...C,binaryMaskPreview:!C.binaryMaskPreview}))},onExportDocument:()=>u&&Ph(`${u.title||"bv-regional"}.json`,u),onExportRegions:()=>u&&Ph(`${u.title||"bv-regions"}.regions.json`,{schema:"bv.regions",version:2,canvas:u.canvas,regions:u.regions}),onImportDocument:ry,onImportRegions:oy,onUndo:lc,onRedo:sc,canUndo:!!L.length,canRedo:!!N.length,canMergeLayers:gt,onMergeLayers:Wf,canvas:u?.canvas??{width:1024,height:1024},onCanvas:C=>He(I=>{I.canvas=C})}),mode:Y.mode,initialGeometry:Hf,minSize:{width:780,height:520},className:"bv-regional-shell",bodyClassName:"bv-regional-window-body",onModeChange:C=>Q(I=>({...I,mode:C})),onGeometry:C=>Q(I=>({...I,windows:{...I.windows,floating:C}})),onClose:a,status:u?s.jsxs(s.Fragment,{children:[s.jsx("span",{children:Yf[0]?`⚠ ${Yf[0]}`:`✓ ${ay}`}),s.jsxs("span",{children:[u.regions.length," regions · layout adjusted for this session"]})]}):null,actions:u?s.jsx(Am,{storageId:`regional-editor:${u.document_id}`,editorType:"regional",onClick:()=>le(C=>C+1)}):null,children:q?s.jsx("div",{className:"bv-regional-error",children:q}):u&&s.jsx(s.Fragment,{children:s.jsx("main",{className:"bv-regional-dock-host",children:s.jsx(Lm,{storageId:`regional-editor:${u.document_id}`,resetSignal:ne,defaultModel:{global:{tabEnableClose:!1,tabEnablePopout:!1,tabEnablePopoutIcon:!1,tabEnablePopoutFloatIcon:!0,tabSetMinWidth:180,tabSetMinHeight:120},borders:[],layout:{type:"row",children:[{type:"row",weight:22,minWidth:220,children:[{type:"tabset",weight:55,children:[{type:"tab",id:"regions",name:"Regions",component:"regions",enablePopoutFloatIcon:!0}]},{type:"tabset",weight:45,children:[{type:"tab",id:"selection",name:"Selection",component:"selection",enablePopoutFloatIcon:!0}]}]},{type:"tabset",weight:54,minWidth:320,children:[{type:"tab",id:"canvas",name:"Canvas",component:"canvas",enablePopoutFloatIcon:!0}]},{type:"row",weight:24,minWidth:260,children:[{type:"tabset",weight:65,children:[{type:"tab",id:"global",name:"Global",component:"global",enablePopoutFloatIcon:!0}]},{type:"tabset",weight:35,children:[{type:"tab",id:"region",name:"Region",component:"region",enablePopoutFloatIcon:!0}]}]}]}},panels:[{id:"regions",title:"Regions",weight:22,minWidth:220,content:s.jsx(C0,{regions:u.regions,selectedRegionId:f,selectedLayerId:g,selectedLayerIds:w,selectedGeometryId:b,onSelectRegion:C=>{p(C),yt(null),z(!1)},onSelectLayer:yn,onSelectGeometry:(C,I,V)=>{p(C),x(I),k([I]),_(I),h(V),z(!1)},onToggleGeometry:Wx,onDeleteGeometry:Hx,onAddRegion:()=>He(C=>{const I=R0(C.regions.length);C.regions.unshift(I),Fo(C.regions),p(I.id),yt(null)}),onRenameRegion:(C,I)=>He(V=>{V.regions.find(H=>H.id===C).name=I}),onRenameLayer:(C,I)=>Bo(C,V=>V.forEach(H=>{H.authoring={...sr(H),name:I}})),onToggleRegion:(C,I)=>He(V=>{const H=V.regions.find(J=>J.id===C);I==="enabled"?H.enabled=!H.enabled:I==="visible"?H.authoring.visible=!H.authoring.visible:H.authoring.locked=!H.authoring.locked}),onToggleLayer:Qx,onMoveRegion:qx,onMoveLayer:Jx,onTreeMove:Zx,onDeleteRegion:ty,onDeleteLayer:cc,onDuplicateLayer:ey,canSplitDisconnectedAreas:Lr,onSplitDisconnectedAreas:$x})},{id:"canvas",title:"Canvas",weight:54,minWidth:320,content:s.jsx(nk,{document:u,background:n[u.document_id],selectedRegionId:f,selectedLayerId:g,draft:W,selectionBounds:rr,cursor:ie,tool:y,brush:S,canSubtract:!!we&&!we.authoring.locked,displayOpacity:O,backgroundOpacity:j,isolate:E,binaryMaskPreview:Y.binaryMaskPreview,initialView:Y.artboard,onView:ot,onTool:C=>{T(C),gr()},onBrush:P,onPointerDown:Yx,onPointerMove:Xx,onPointerUp:Gx,onPointerCancel:gr,onPointerLeave:()=>{$.current||X(null)},onDoubleClick:Kx},u.document_id)},{id:"global",title:"Global",weight:12,minWidth:240,content:uc("document")},{id:"selection",title:"Selection",weight:12,minWidth:240,content:uc("selection")},{id:"region",title:"Region",weight:12,minWidth:240,content:uc("region")}]})})})}),se.dialog]})}const Uo=e=>ma(ct().rootGraph??ct().graph,e),zh=e=>e?.widgets?.find(t=>t.name==="regional_json"),Wc=e=>e?.widgets?.find(t=>t.name==="lora_bindings_json"),nE=(e,t)=>t==="global"||t==="background"||e.regions.some(r=>r.id===t),iE=(e,t)=>t==="global"?e.prompts.global:t==="background"?e.prompts.background:e.regions.find(r=>r.id===t)?.prompts??e.prompts.global;function aE({open:e,activationToken:t=0,nodes:r,initialNode:o,loraStacks:n,onClose:i,onOpenEditor:a}){const[l,c]=m.useState(o),[u,d]=m.useState(null),[f,p]=m.useState(()=>rc("")),[g,x]=m.useState("global"),[w,k]=m.useState(()=>bs({x:window.innerWidth-544,y:84,width:520,height:640},{width:window.innerWidth,height:window.innerHeight})),[b,h]=m.useState(""),[v,_]=m.useState([]),y=m.useRef(null),T=m.useRef(!1),S=m.useRef(t);m.useEffect(()=>{const R=T.current,N=S.current!==t;if(T.current=e,S.current=t,!e||!N)return;const A=o??r[0]??null,W=Uo(l),F=Uo(A);R&&W&&F!==W&&ni()==="keep"?_(ie=>[...new Set([...ie,W])].filter(X=>X!==F)):F&&_(ie=>ie.filter(X=>X!==F)),y.current=R?w:null,c(A)},[t,o,r,e]),m.useEffect(()=>{if(l)try{const R=un(zh(l)?.value),N=Df(Wc(l)?.value,R.document_id),A=$n(N,new Set(R.regions.map(X=>X.id))),W=Wc(l);W&&JSON.stringify(N)!==JSON.stringify(A)&&(W.value=JSON.stringify(A),W.callback?.(W.value),l.graph?.setDirtyCanvas?.(!0,!0));const F=Ml(R.document_id),ie=nE(R,F.quickPromptTarget)?F.quickPromptTarget:"global";d(R),p(A),x(ie),k(y.current??F.quickPromptWindow),y.current=null,h("")}catch(R){d(null),h(R instanceof Error?R.message:String(R))}},[l,e]);const P=m.useMemo(()=>u?iE(u,g):null,[u,g]),O=R=>{if(x(R),!u)return;const N=Ml(u.document_id);nd(u.document_id,{...N,quickPromptTarget:R})},B=R=>{if(!u)return;const N=Ml(u.document_id);nd(u.document_id,{...N,quickPromptWindow:R})},j=R=>{if(!u||!l)return;const N=Kt(u);if(g==="global")N.prompts.global=R;else if(g==="background")N.prompts.background=R;else{const W=N.regions.find(F=>F.id===g);if(!W)return;W.prompts=R}d(N);const A=zh(l);A&&(A.value=JSON.stringify(N),A.callback?.(A.value)),l.graph?.setDirtyCanvas?.(!0,!0)},M=R=>{if(!u||!l)return;let N;if(g==="global"||g==="background")N={...f,global_stack_id:R};else{const W={...f.regions};R?W[g]=R:delete W[g],N={...f,regions:W}}p(N);const A=Wc(l);A&&(A.value=JSON.stringify(N),A.callback?.(A.value)),l.graph?.setDirtyCanvas?.(!0,!0)},E=g==="global"||g==="background"?f.global_stack_id??"":f.regions[g]??"",z=(R,N,A=!0)=>{const W=Uo(l);_r("quick",R),R!==W&&(_(F=>N?F.filter(ie=>ie!==R):[...new Set([...F,W])].filter(ie=>ie&&ie!==R)),y.current=A?w:null,c(r.find(F=>Uo(F)===R)??null))},L=hi(l);return s.jsxs(s.Fragment,{children:[v.map(R=>{const N=r.find(A=>Uo(A)===R);return N?s.jsx(ec,{title:`Quick Edit · ${N.title||"BV Regional Prompt"} · #${N.id}`,onRestore:()=>z(R,!1,!1),onClose:()=>_(A=>A.filter(W=>W!==R))},R):null}),s.jsx(xn,{open:e,activationToken:t,title:"Regional Quick Edit",menuVisible:L,onMenuVisible:R=>mn(l,R),context:s.jsx(Pa,{label:"Regional Prompt Node",value:Uo(l),options:r.filter(R=>vn(R)).map(R=>({value:Uo(R),label:`${R.title||"BV Regional Prompt"} · #${R.id}`})),onNavigate:z}),allowWorkspace:!1,initialGeometry:w,minSize:{width:360,height:320},className:"bv-quick-prompt-window bv-density-compact",onClose:i,onGeometry:R=>{const N=bs(R,{width:window.innerWidth,height:window.innerHeight});k(N),B(N)},status:s.jsx(Ev,{tone:"success",dot:!0,children:"Autosaved"}),actions:s.jsx(oe,{intent:"primary",disabled:!l||!u,onClick:()=>l&&a(l),children:"Open Full Editor"}),children:s.jsx("div",{className:"bv-quick-prompt-body",children:b?s.jsx(Fr,{tone:"danger",title:"Prompt document unavailable",children:b}):u&&P&&s.jsxs(s.Fragment,{children:[s.jsx(qe,{label:"Prompt Target",value:g,onValue:O,options:[{value:"global",label:"Global"},{value:"background",label:"Background"},...u.regions.map(R=>({value:R.id,label:R.name}))]}),s.jsx(qe,{label:g==="global"||g==="background"?"Global LoRA Stack":"Additional LoRA Stack",help:g==="global"||g==="background"?"Applied globally and inherited by every region.":"Added to the global stack for this region.",value:E,onValue:R=>M(R||null),options:[{value:"",label:"None"},...n.map(R=>({value:R.id,label:R.name}))]}),s.jsxs("div",{className:"bv-prompt-editor-fields",children:[s.jsx(Rr,{label:"Positive",children:s.jsx(gs,{autoFocus:!0,value:P.positive_source,onValue:R=>j({...P,positive_source:R}),completionContext:{scope:g==="global"||g==="background"?g:"region",polarity:"positive"}})}),s.jsx(Rr,{label:"Negative",children:s.jsx(gs,{value:P.negative_source,onValue:R=>j({...P,negative_source:R}),completionContext:{scope:g==="global"||g==="background"?g:"region",polarity:"negative"}})})]})]})})})]})}function Tx(e,t){const r=t?e.filter(n=>n.enabled!==!1&&(n.usage===t||n.usage==="both"||!n.usage&&t==="generation")):e,o=new Map;for(const n of r)o.set(n.name,(o.get(n.name)??0)+1);return r.map(n=>({...n,label:o.get(n.name)===1?n.name:`${n.name} · ${n.id.slice(0,8)}`}))}function lE(e){const t=new Map;return e.forEach(r=>t.set(r.title,(t.get(r.title)??0)+1)),e.map(r=>({...r,label:t.get(r.title)>1?`${r.title} · #${r.nodeId}`:`${r.title} · #${r.nodeId}`}))}function sE(e,t,r){const o=typeof e=="string"?e:"";return t.some(n=>n.documentId===o)?o:r?t[0]?.documentId??"":""}function cE(e,t,r){Jm(r);const o=document.createElement("div");o.className="bv-ui bv-settings-datasets";const n=fi(o),i=Zm;return n.render(m.createElement(i,{onSelectionChange:a=>t(JSON.stringify(a))})),o}const xo=new Map;let Ci=null;function uE(e){return e.disabled||e.readOnly||e.closest("#bv-root")||e.dataset.bvAutocomplete==="off"||e.closest('[data-bv-autocomplete="off"]')?!1:e.matches("textarea.comfy-multiline-input")||!!e.closest("[data-node-id]")}function Fh(e){if(xo.has(e)||!uE(e))return;let t=[],r=0,o=null,n=null,i=null,a=null,l=null,c=210;const u=()=>{n?.abort(),n=null,t=[],o=null,l?.unmount(),l=null,a?.remove(),a=null},d=()=>{if(!a)return;const h=hs(e,od(),c);f(h)},f=(h=hs(e,od(),c))=>{a||(a=document.createElement("div"),a.className="bv-ui bv-ui-portal",document.body.append(a),l=fi(a)),l.render(m.createElement(ox,{suggestions:t,selected:r,position:h,onAccept:g,onHeight:v=>{Math.abs(v-c)<1||(c=v,d())}}))},p=()=>f(),g=(h=r)=>{const v=t[h];if(!o||!v)return;const _=ex(e.value,o,v);e.value=_.text,e.dispatchEvent(new InputEvent("input",{bubbles:!0,inputType:"insertText",data:v.insertText})),e.dispatchEvent(new Event("change",{bubbles:!0})),u(),requestAnimationFrame(()=>{e.focus(),e.setSelectionRange(_.caret,_.caret)})},x=()=>{if(!Mf()||e.selectionStart!==e.selectionEnd||(i!=null&&window.clearTimeout(i),n?.abort(),o=Qm(e.value,e.selectionStart??e.value.length,{scope:"generic",polarity:"positive"}),!o))return u();const h=o;n=new AbortController;const v=n;i=window.setTimeout(async()=>{const _=await tx(h,[rx],v.signal);v.signal.aborted||document.activeElement!==e||(t=_,r=0,_.length?p():u())},120)},w=h=>{t.length&&(h.key==="ArrowDown"||h.key==="ArrowUp"?(h.preventDefault(),h.stopPropagation(),h.stopImmediatePropagation(),r=(r+(h.key==="ArrowDown"?1:-1)+t.length)%t.length,p()):h.key==="Enter"||h.key==="Tab"?(h.preventDefault(),h.stopPropagation(),h.stopImmediatePropagation(),g()):h.key==="Escape"&&(h.preventDefault(),h.stopPropagation(),h.stopImmediatePropagation(),u()))},k=()=>window.setTimeout(()=>{a?.contains(document.activeElement)||u()},120),b=()=>{document.activeElement===e&&x()};e.addEventListener("input",x),e.addEventListener("select",x),document.addEventListener("selectionchange",b),e.addEventListener("keydown",w,!0),e.addEventListener("blur",k),window.addEventListener("resize",d),window.addEventListener("scroll",d,!0),xo.set(e,{close:u,destroy:()=>{u(),e.removeEventListener("input",x),e.removeEventListener("select",x),document.removeEventListener("selectionchange",b),e.removeEventListener("keydown",w,!0),e.removeEventListener("blur",k),window.removeEventListener("resize",d),window.removeEventListener("scroll",d,!0)}})}function Uh(e){e instanceof HTMLTextAreaElement&&Fh(e),e.querySelectorAll?.("textarea").forEach(t=>Fh(t))}function dE(e){(e instanceof HTMLTextAreaElement?[e]:[...e.querySelectorAll?.("textarea")??[]]).forEach(r=>{xo.get(r)?.destroy(),xo.delete(r)})}function fE(){if(Ci)return Ci;Uh(document);const e=new MutationObserver(o=>o.forEach(n=>{n.addedNodes.forEach(i=>{i instanceof Element&&Uh(i)}),n.removedNodes.forEach(i=>{i instanceof Element&&dE(i)})}));e.observe(document.body,{childList:!0,subtree:!0});const t=()=>{Mf()||xo.forEach(o=>o.close())},r=()=>xo.forEach(o=>o.close());return window.addEventListener(ka,t),window.addEventListener(Ea,r),Ci=()=>{e.disconnect(),window.removeEventListener(ka,t),window.removeEventListener(Ea,r),xo.forEach(o=>o.destroy()),xo.clear(),Ci=null},Ci}function Vh(e){return e?.extensionManager?.workflow?.activeWorkflow??e?.workflowManager?.activeWorkflow??e?.graph??null}function pE(e,t,r,o=(i,a)=>globalThis.setInterval(i,a),n=i=>globalThis.clearInterval(i)){const i=Vh(e);let a=!1;const l=()=>{a||Vh(e)===i||(a=!0,r())};t.addEventListener("graphChanged",l);const c=o(l,250);return()=>{t.removeEventListener("graphChanged",l),n(c)}}const Rx=["region","global_influence","background_influence","primary_region_influence","context_regions_json"],hE=e=>Rx.map(t=>e?.find(r=>r.name===t)?.value),gE=e=>Array.isArray(e)&&e.length===Rx.length+1&&e[3]==null&&typeof e[4]=="number"&&typeof e[5]=="string"?[...e.slice(0,3),...e.slice(4)]:e,Hr=(e,t,r,o)=>{const n=Number(e);return Number.isFinite(n)?Math.max(r,Math.min(o,n)):t},Sx=()=>({global_influence:1,background_influence:.35,primary_region_influence:1,context_region_influence:1}),Lx=()=>({roi_padding:.15,threshold:.5,dilation:0,crop_factor:1.5,drop_size:10}),zf=e=>e.filter(t=>t.enabled!==!1&&(t.usage==="detailer"||t.usage==="both")).sort((t,r)=>(t.priority??0)-(r.priority??0)),dd=e=>({schema:"bv.detailer_plan",version:1,jobs:zf(e).map(t=>({region_ids:[t.id],primary_region_id:t.id,mask_composition:"union",prompt_composition:"context",conditioning:Sx(),detector:Lx()}))}),Al=(e,t)=>{const r=new Set(zf(t).map(i=>i.id));let o;try{o=String(e??"").trim()?JSON.parse(String(e)):dd(t)}catch{o=dd(t)}return{schema:"bv.detailer_plan",version:1,jobs:Array.isArray(o?.jobs)?o.jobs.flatMap(i=>{const a=Array.isArray(i?.region_ids)?[...new Set(i.region_ids.map(String).filter(u=>r.has(u)))]:[];if(!a.length)return[];const l=i.conditioning??{},c=i.detector??{};return[{region_ids:a,primary_region_id:a.includes(String(i.primary_region_id))?String(i.primary_region_id):a[0],mask_composition:["union","intersection","subtract"].includes(i.mask_composition)?i.mask_composition:"union",prompt_composition:i.prompt_composition==="primary"?"primary":"context",...String(i.detector_id??"").trim()?{detector_id:String(i.detector_id).trim()}:{},conditioning:{global_influence:Hr(l.global_influence,1,0,2),background_influence:Hr(l.background_influence,.35,0,2),primary_region_influence:Hr(l.primary_region_influence,1,0,2),context_region_influence:Hr(l.context_region_influence,1,0,2)},detector:{roi_padding:Hr(c.roi_padding,.15,0,2),threshold:Hr(c.threshold,.5,0,1),dilation:Math.round(Hr(c.dilation,0,-512,512)),crop_factor:Hr(c.crop_factor,1.5,1,20),drop_size:Math.round(Hr(c.drop_size,10,1,8192)),...String(c.query??"").trim()?{query:String(c.query).trim()}:{},...Array.isArray(c.labels)?{labels:c.labels.map(String).map(u=>u.trim()).filter(Boolean)}:{}}}]}):[]}},Hc=e=>JSON.stringify(e),bE=e=>structuredClone(e);function vE({regions:e,detectorIds:t,stored:r,save:o,close:n,nodeId:i="",nodes:a=[],onNavigate:l=()=>{},currentNode:c}){const u=zf(e),d=m.useMemo(()=>Al(r,e),[e,r]),f=Ks(d),p=f.value,[g,x]=m.useState(()=>Hc(d));qs(f);const w=Hc(p)!==g,[k,b]=m.useState(null),h=()=>{const E=Hc(p);o(E),x(E),f.clear()},v=E=>w?b(()=>E):E(),_=()=>v(n),y=hi(c),T=m.useMemo(()=>E=>s.jsx(xn,{...E,title:`${E.title} · #${i}`,shortTitle:"Detailer Plan",menuVisible:y,onMenuVisible:z=>mn(c,z),onClose:_,context:s.jsx(Pa,{label:"Detailer Plan Node",value:i,options:a.map(z=>({value:z.id,label:z.label})),onNavigate:(z,L)=>L?v(()=>l(z,!0)):l(z,!1)})}),[c,w,y,i,a,l]),[S,P]=m.useState([]),O=E=>f.commit(z=>{const L=bE(z);return E(L),L}),B=()=>O(E=>{const z=u[0];z&&E.jobs.push({region_ids:[z.id],primary_region_id:z.id,mask_composition:"union",prompt_composition:"context",conditioning:Sx(),detector:Lx()})}),j=E=>[{value:"",label:"No detector · use composed region mask"},...[...new Set([...E&&!t.includes(E)?[E]:[],...t])].map(z=>({value:z,label:t.includes(z)?z:`Missing · ${z}`}))],M=p.jobs.map((E,z)=>({id:`job-${z}`,title:`Job ${z+1}`,description:E.region_ids.map(L=>u.find(R=>R.id===L)?.name??L).join(" + ")||"No region",summary:s.jsxs("div",{className:"bv-editor-item-compact-summary",children:[s.jsxs("span",{children:[E.region_ids.length," region",E.region_ids.length===1?"":"s"]}),s.jsx("span",{children:E.detector_id||"Composed mask"}),s.jsx("span",{children:E.region_ids.length?"Ready":"Needs region"})]}),content:s.jsxs("div",{className:"bv-editor-item-details",children:[s.jsxs("div",{className:"bv-editor-item-summary",children:[s.jsx(k0,{label:"Regions",value:E.region_ids,minSelected:1,options:u.map(L=>({value:L.id,label:L.name})),onValue:L=>O(R=>{const N=R.jobs[z];N.region_ids=L,L.includes(N.primary_region_id)||(N.primary_region_id=L[0]??"")})}),s.jsxs(Go,{children:[s.jsx(qe,{label:"Detector assignment",value:E.detector_id??"",options:j(E.detector_id),onValue:L=>O(R=>{R.jobs[z].detector_id=L||void 0})}),E.region_ids.length>1&&s.jsx(qe,{label:"Primary region",value:E.primary_region_id,options:E.region_ids.map(L=>({value:L,label:u.find(R=>R.id===L)?.name??L})),onValue:L=>O(R=>{R.jobs[z].primary_region_id=L})})]})]}),s.jsx(as,{value:S,onValue:P,items:[{id:`composition-${z}`,title:"Mask and prompt composition",content:s.jsxs(Go,{children:[s.jsx(qe,{label:"Mask composition",value:E.mask_composition,options:[{value:"union",label:"Union"},{value:"intersection",label:"Intersection"},{value:"subtract",label:"Subtract in listed order"}],onValue:L=>O(R=>{R.jobs[z].mask_composition=L})}),s.jsx(qe,{label:"Prompt composition",value:E.prompt_composition,options:[{value:"context",label:"Primary and context regions"},{value:"primary",label:"Primary region only"}],onValue:L=>O(R=>{R.jobs[z].prompt_composition=L})})]})},{id:`conditioning-${z}`,title:"Conditioning strengths",content:s.jsx(Go,{minimum:150,children:[["Global influence","global_influence"],["Background influence","background_influence"],["Primary region influence","primary_region_influence"],["Context region influence","context_region_influence"]].map(([L,R])=>s.jsx(Pt,{label:L,value:E.conditioning[R],min:0,max:2,step:.05,onValue:N=>O(A=>{A.jobs[z].conditioning[R]=N})},R))})},{id:`detection-${z}`,title:"Detector and ROI settings",content:s.jsxs(Go,{minimum:150,children:[s.jsx(Pt,{label:"ROI padding",value:E.detector.roi_padding,min:0,max:2,step:.01,onValue:L=>O(R=>{R.jobs[z].detector.roi_padding=L})}),s.jsx(Pt,{label:"Threshold",value:E.detector.threshold,min:0,max:1,step:.01,onValue:L=>O(R=>{R.jobs[z].detector.threshold=L})}),s.jsx(Pt,{label:"Dilation",value:E.detector.dilation,min:-512,max:512,step:1,slider:!1,onValue:L=>O(R=>{R.jobs[z].detector.dilation=L})}),s.jsx(Pt,{label:"Crop factor",value:E.detector.crop_factor,min:1,max:20,step:.1,onValue:L=>O(R=>{R.jobs[z].detector.crop_factor=L})}),s.jsx(Pt,{label:"Drop size",value:E.detector.drop_size,min:1,max:8192,step:1,slider:!1,onValue:L=>O(R=>{R.jobs[z].detector.drop_size=L})}),s.jsx(cn,{label:"Detector query",value:E.detector.query??"",onValue:L=>O(R=>{R.jobs[z].detector.query=L.trim()||void 0})}),s.jsx(cn,{label:"Accepted labels",value:(E.detector.labels??[]).join(", "),onValue:L=>O(R=>{R.jobs[z].detector.labels=L.split(",").map(N=>N.trim()).filter(Boolean)})})]})}]})]})}));return s.jsxs(s.Fragment,{children:[s.jsx(T,{open:!0,title:"Regional Detailer Plan",initialGeometry:{width:1040,height:720},minSize:{width:420,height:360},onClose:n,status:w?"Unsaved plan changes":"Plan saved",actions:s.jsx(Cf,{primary:s.jsx(oe,{intent:"primary",disabled:p.jobs.some(E=>!E.region_ids.length),onClick:h,children:"Save plan"}),secondary:s.jsxs(s.Fragment,{children:[s.jsx(oe,{onClick:B,disabled:!u.length,children:"Add job"}),s.jsx(ds,{label:"Detailer Plan",value:{schema:"bv.editor-draft",version:1,type:"detailer-plan",data:p},onImport:E=>{if(E?.schema!=="bv.editor-draft"||E?.version!==1||E?.type!=="detailer-plan"||!E?.data)throw new Error("Draft type or version does not match this editor.");f.replace(Al(E.data,e))}})]}),overflow:[{id:"undo",label:"Undo",disabled:!f.canUndo,onSelect:f.undo},{id:"redo",label:"Redo",disabled:!f.canRedo,onSelect:f.redo},{id:"discard",label:"Discard changes",disabled:!w,onSelect:()=>f.replace(Al(g,e),!0)},{id:"restore",label:"Restore defaults",onSelect:()=>f.commit(dd(e))}]}),children:s.jsxs(pf,{density:"compact",className:"bv-editor-dialog",children:[!t.length&&p.jobs.length>0&&s.jsx(Fr,{tone:"warning",title:"No registered detectors",children:"Jobs can still use their composed region masks. Add detectors in Detector Registry when object detection is required."}),u.length?s.jsx(Ia,{items:M,onReorder:E=>O(z=>{z.jobs=E.map(L=>z.jobs[Number(L.id.slice(4))])}),onRemove:E=>O(z=>{z.jobs.splice(Number(E.slice(4)),1)})}):s.jsx(Ys,{title:"No eligible regions",description:"Enable a region with Detailer or Both usage first."})]})}),s.jsx(gf,{open:!!k,editorName:"Detailer Plan",onKeep:()=>b(null),onDiscard:()=>{const E=k;b(null),E?.()},onSave:()=>{h();const E=k;b(null),E?.()}})]})}const mE=(e,t,r,o,n,i,a,l)=>{yf((c,u)=>m.createElement(vE,{regions:e,detectorIds:t,stored:r,save:o,close:c,activationToken:u,nodeId:n.split(":").slice(1).join(":"),nodes:i,onNavigate:a,currentNode:l}),{key:n})},ws=()=>({schema:"bv.detector_registry_config",version:1,detectors:[]}),Zi=e=>{try{const t=String(e??"").trim()?JSON.parse(String(e)):ws();return{schema:"bv.detector_registry_config",version:1,detectors:Array.isArray(t?.detectors)?t.detectors.flatMap(o=>{const n=String(o?.id??"").trim(),i=String(o?.model_name??"").trim();if(!n||!i)return[];const a=o.provider==="onnx"?"onnx":"ultralytics",l=String(o.sam_model_name??"").trim();return[{id:n,provider:a,model_name:i,...l?{sam_model_name:l,sam_device_mode:["Prefer GPU","CPU"].includes(o.sam_device_mode)?o.sam_device_mode:"AUTO"}:{}}]}):[]}}catch{return ws()}},$c=e=>JSON.stringify(e);function xE({catalog:e,stored:t,save:r,close:o,nodeId:n="",nodes:i=[],onNavigate:a=()=>{},currentNode:l}){const c=m.useMemo(()=>Zi(t),[t]),u=m.useMemo(()=>new Set(c.detectors.map(R=>R.id)),[c]),d=Ks(c),f=d.value,[p,g]=m.useState(()=>$c(c));qs(d);const x=$c(f)!==p,w=bf(),[k,b]=m.useState(null),h=()=>{const R=$c(f);r(R),g(R),d.clear()},v=R=>x?b(()=>R):R(),_=()=>v(o),y=hi(l),T=m.useMemo(()=>R=>s.jsx(xn,{...R,title:`${R.title} · #${n}`,shortTitle:"Registry",menuVisible:y,onMenuVisible:N=>mn(l,N),onClose:_,context:s.jsx(Pa,{label:"Detector Registry Node",value:n,options:i.map(N=>({value:N.id,label:N.label})),onNavigate:(N,A)=>A?v(()=>a(N,!0)):a(N,!1)})}),[l,x,y,n,i,a]),[S,P]=m.useState([]),O=R=>d.commit(N=>{const A=structuredClone(N);return R(A),A}),B=()=>{let R=f.detectors.length+1,N=`detector-${R}`;for(;f.detectors.some(A=>A.id===N);)N=`detector-${++R}`;return N},j=f.detectors.map(R=>R.id.trim()),M=j.find((R,N)=>R&&j.indexOf(R)!==N),E=f.detectors.some(R=>!R.id.trim()||!R.model_name),z=()=>O(R=>{const N=e.ultralytics.length?"ultralytics":"onnx";R.detectors.push({id:B(),provider:N,model_name:e[N][0]??""})}),L=()=>{f.detectors.length?w.confirm({title:"Clear Detector Registry?",message:"Existing Detailer jobs will keep missing references until reassigned.",confirmLabel:"Clear registry",danger:!0,action:()=>d.commit(ws())}):d.commit(ws())};return s.jsxs(s.Fragment,{children:[s.jsx(T,{open:!0,title:"Detector Registry",initialGeometry:{width:1040,height:720},minSize:{width:420,height:360},onClose:o,status:x?"Unsaved registry changes":"Registry saved",actions:s.jsx(Cf,{primary:s.jsx(oe,{intent:"primary",disabled:!!(M||E),onClick:h,children:"Save registry"}),secondary:s.jsxs(s.Fragment,{children:[s.jsx(oe,{onClick:z,children:"Add detector"}),s.jsx(ds,{label:"Detector Registry",value:{schema:"bv.editor-draft",version:1,type:"detector-registry",data:f},onImport:R=>{if(R?.schema!=="bv.editor-draft"||R?.version!==1||R?.type!=="detector-registry"||!R?.data)throw new Error("Draft type or version does not match this editor.");d.replace(Zi(R.data))}})]}),overflow:[{id:"undo",label:"Undo",disabled:!d.canUndo,onSelect:d.undo},{id:"redo",label:"Redo",disabled:!d.canRedo,onSelect:d.redo},{id:"discard",label:"Discard changes",disabled:!x,onSelect:()=>d.replace(Zi(p),!0)},{id:"clear",label:"Clear registry…",onSelect:L}]}),children:s.jsxs(pf,{density:"compact",className:"bv-editor-dialog",children:[M||E?s.jsx(Fr,{tone:"danger",title:"Registry needs attention",children:M?`Detector ID “${M}” is used more than once.`:"Every detector needs a unique ID and a detection model."}):s.jsxs(Fr,{tone:"success",title:"Registry valid",children:[f.detectors.length," detector",f.detectors.length===1?"":"s"," ready to save."]}),s.jsxs("div",{className:"bv-card-list",children:[!f.detectors.length&&s.jsx(Ys,{title:"No detectors configured",description:"Add a detector to make it selectable in Regional Detailer jobs."}),s.jsx(as,{value:S,onValue:P,items:f.detectors.map((R,N)=>({id:`detector-${N}`,title:s.jsxs("span",{className:"bv-detector-summary",children:[s.jsx("strong",{children:R.id||"New detector"}),s.jsx("span",{children:R.provider==="onnx"?"ONNX":"Ultralytics"}),s.jsx("span",{children:R.model_name||"No model selected"}),s.jsx("span",{children:R.id.trim()&&R.model_name?"Ready":"Needs attention"})]}),content:s.jsxs("div",{className:"bv-detector-details",children:[s.jsxs("div",{className:"bv-editor-item-actions",children:[s.jsx(oe,{intent:"ghost",onClick:()=>O(A=>{A.detectors.splice(N+1,0,{...A.detectors[N],id:B()})}),children:"Duplicate"}),s.jsx(oe,{intent:"ghost",className:"bv-subtle-danger",onClick:()=>{const A=()=>O(W=>{W.detectors.splice(N,1)});u.has(R.id)?w.confirm({title:`Remove detector “${R.id}”?`,message:"Existing Detailer jobs will show it as missing until reassigned.",confirmLabel:"Remove detector",danger:!0,action:A}):A()},children:"Remove"})]}),s.jsxs(Go,{children:[s.jsx(cn,{label:"Detector ID",value:R.id,readOnly:u.has(R.id),help:u.has(R.id)?"Stable job reference. Create a new detector instead of renaming it.":"Choose once; the ID becomes immutable after saving.",onValue:A=>O(W=>{W.detectors[N].id=A.trim()})}),s.jsx(qe,{label:"Provider",value:R.provider,options:[{value:"ultralytics",label:"Ultralytics"},{value:"onnx",label:"ONNX"}],onValue:A=>O(W=>{const F=W.detectors[N];F.provider=A,F.model_name=e[F.provider][0]??""})}),s.jsx(qe,{label:"Detection model",value:R.model_name,options:e[R.provider].map(A=>({value:A,label:A})),onValue:A=>O(W=>{W.detectors[N].model_name=A})})]}),s.jsx(as,{value:S,onValue:P,items:[{id:`sam-${N}`,title:R.sam_model_name?"SAM refinement enabled":"Optional SAM refinement",content:s.jsxs(Go,{children:[s.jsx(qe,{label:"SAM model",value:R.sam_model_name??"",options:[{value:"",label:"No SAM refinement"},...e.sam.map(A=>({value:A,label:A}))],onValue:A=>O(W=>{const F=W.detectors[N];F.sam_model_name=A||void 0,A||delete F.sam_device_mode})}),R.sam_model_name&&s.jsx(qe,{label:"Execution device",value:R.sam_device_mode??"AUTO",options:["AUTO","Prefer GPU","CPU"].map(A=>({value:A,label:A})),onValue:A=>O(W=>{W.detectors[N].sam_device_mode=A})})]})}]})]})}))})]})]})}),w.dialog,s.jsx(gf,{open:!!k,editorName:"Detector Registry",onKeep:()=>b(null),onDiscard:()=>{const R=k;b(null),R?.()},onSave:()=>{h();const R=k;b(null),R?.()}})]})}const yE=async(e,t,r,o,n,i,a)=>{const l=await fetch(e.apiURL("/bv_nodepack/detectors/models"));if(!l.ok)throw new Error(`Detector model catalog failed: ${l.status}`);const c=await l.json();yf((u,d)=>m.createElement(xE,{catalog:c,stored:t,save:r,close:u,activationToken:d,nodeId:o.split(":").slice(1).join(":"),nodes:n,onNavigate:i,currentNode:a}),{key:o})},_E=10,wE=(e,t=_E)=>{const r=[...new Set(e.filter(i=>Number.isInteger(i)&&i>=1&&i<=t))],o=r.length?Math.max(...r):0,n=Math.min(t,o+1);return Array.from({length:Math.max(1,n)},(i,a)=>a+1)},kE=new Set(["BV Regional Detailer Mask","BV Regional Detailer Plan","BV Detailer Loop Job Resolver","BV Detector Binding","BV Detector Registry","BV Detailer Loop Detect to SEGS (Impact)","BV Detailer Loop Start","BV Detailer Loop End"]),EE={regional:"regional prompt",detailer_plan:"detailer plan",job_index:"job index",job:"detailer job",job_id:"job ID",job_name:"job name",job_count:"job count",detector_id:"detector ID",detector_count:"detector count",detector_registry:"detector registry",detector_query:"detector query",detector_labels:"detector labels",bbox_detector:"BBOX detector",segm_detector:"segmentation detector",sam_model:"SAM model",has_bbox:"has BBOX",has_segmentation:"has segmentation",has_sam:"has SAM",basic_pipe:"basic pipe",positive:"positive conditioning",negative:"negative conditioning",positive_text:"positive text",negative_text:"negative text",positive_weighted_text:"positive weighted text",negative_weighted_text:"negative weighted text",global_influence:"global influence",background_influence:"background influence",primary_region_influence:"primary region influence",context_regions_json:"context regions",roi_padding:"ROI padding",roi_x:"ROI x",roi_y:"ROI y",roi_width:"ROI width",roi_height:"ROI height",crop_factor:"crop factor",drop_size:"drop size",effective_mask:"effective mask",flow_to_loop_end:"flow to loop end",last_job_index:"last job index",final_image:"final image",current_image:"current image",processed_image:"processed image"},TE={"BV Regional Detailer Mask":{image:"source image",mask:"region mask",summary:"detailer summary"},"BV Regional Detailer Plan":{plan_summary:"plan summary"},"BV Detailer Loop Detect to SEGS (Impact)":{segs:"SEGS"}},Yc=(e,t)=>TE[e]?.[t]??EE[t]??t.split("_").join(" ");function RE({label:e,configured:t,close:r,onSave:o,onDelete:n}){const[i,a]=m.useState(""),[l,c]=m.useState(""),[u,d]=m.useState(!1),f=async p=>{d(!0),c("");try{const g=await p();g?c(g):r()}finally{d(!1)}};return s.jsxs(Da,{open:!0,title:`${e} API Key`,description:"Credentials are stored by the local BV Nodepack backend and are never written into the workflow.",size:"small",onClose:r,footer:s.jsxs(s.Fragment,{children:[s.jsx(oe,{intent:"danger",disabled:!t||u,onClick:()=>f(n),children:"Delete key"}),s.jsx(oe,{intent:"ghost",disabled:u,onClick:r,children:"Cancel"}),s.jsx(oe,{intent:"primary",loading:u,disabled:!i.trim(),onClick:()=>f(()=>o(i)),children:"Save key"})]}),children:[s.jsx(Fr,{tone:t?"info":"warning",children:t?"A key is configured. Enter a new key to replace it.":"No key is configured."}),s.jsx(E0,{label:"API key",value:i,onValue:a}),l&&s.jsx(Fr,{tone:"danger",children:l})]})}let Xc=null;const fd=(e,t=!1)=>((t||!Xc)&&(Xc=fetch(e.apiURL("/bv_nodepack/remote_llm/providers")).then(async r=>{if(!r.ok)throw new Error(await r.text());const o=await r.json();return Array.isArray(o.profiles)?o.profiles:[]})),Xc),Gr=(e,t)=>e.widgets?.find(r=>r.name===t),ks=(e,t,r)=>{const o=t.find(l=>l.label===String(Gr(e,"provider_profile")?.value??""));if(!o)return;const n=Gr(e,"custom_endpoint"),i=Gr(e,"model");if(n&&((!o.allow_custom_endpoint||!String(n.value??"").trim())&&(n.value=o.endpoint),n.disabled=!1,n.element&&(n.element.readOnly=!o.allow_custom_endpoint),n.label=o.allow_custom_endpoint?"custom endpoint":"endpoint (managed)",!n.__bvRemoteEndpointHooked)){n.__bvRemoteEndpointHooked=!0;const l=n.callback;n.callback=function(){const c=l?.apply(this,arguments),u=t.find(d=>d.label===String(Gr(e,"provider_profile")?.value??""));return u&&!u.allow_custom_endpoint&&(n.value=u.endpoint),c}}if(i&&r&&r!==o.label){const l=t.find(u=>u.label===r),c=String(i.value??"").trim();(!c||c===l?.default_model)&&(i.value=o.default_model)}const a=Gr(e,"configure_api_key");a&&(a.disabled=o.auth_mode==="none",a.label=o.auth_mode==="none"?"✓ No API key required":`${o.configured?"✓":"⚠"} Configure ${o.label} API Key`),e.setDirtyCanvas?.(!0,!0)},SE=(e,t,r)=>{const o=r.find(n=>n.label===String(Gr(t,"provider_profile")?.value??""))??r[0];o&&o.auth_mode!=="none"&&yf(n=>m.createElement(RE,{label:o.label,configured:o.configured,close:n,onSave:async i=>{const a=await fetch(e.apiURL("/bv_nodepack/remote_llm/api_key"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({profile_id:o.id,api_key:i})});if(!a.ok)return(await a.json().catch(()=>null))?.error??"Could not save API key.";o.configured=!0,ks(t,r),fd(e,!0)},onDelete:async()=>{if(!(await fetch(e.apiURL(`/bv_nodepack/remote_llm/api_key/${encodeURIComponent(o.id)}`),{method:"DELETE"})).ok)return"Could not delete API key.";o.configured=!1,ks(t,r),fd(e,!0)}}))},Wh=(e,t)=>{fd(t).then(r=>{let o=String(Gr(e,"provider_profile")?.value??"");const n=Gr(e,"provider_profile");if(n&&!n.__bvRemoteLLMHooked){n.__bvRemoteLLMHooked=!0;const a=n.callback;n.callback=function(l){const c=a?.apply(this,arguments);return ks(e,r,o),o=l,c}}let i=Gr(e,"configure_api_key");i||(i=e.addWidget("button","configure_api_key",null,()=>SE(t,e,r),{serialize:!1}),i.serialize=!1),ks(e,r)}).catch(r=>console.error("BV Remote LLM settings unavailable",r))};function LE({collectors:e,collectorId:t,resourceId:r,resolved:o,debugVisible:n,onCollector:i,onResource:a,onDebug:l}){return s.jsxs("div",{className:"bv-m0-picker-panel",children:[s.jsx(Xs,{label:"Hidden link debug",value:n,trueLabel:"Visible",falseLabel:"Hidden",onValue:l}),s.jsx(Gs,{collectors:e,collectorId:t,resourceId:r,resolved:o,onCollector:i,onResource:a})]})}function CE({collectors:e,bindings:t,debugVisible:r,onBinding:o,onAdd:n,onRemove:i,onDebug:a}){return s.jsxs("div",{className:"bv-m0-picker-panel bv-m0-multi-picker",children:[s.jsx(Xs,{label:"Native fan-in debug",value:r,trueLabel:"Dashed links",falseLabel:"Hidden",onValue:a}),t.map((l,c)=>s.jsxs("section",{className:"bv-m0-binding",children:[s.jsxs("header",{children:[s.jsxs("strong",{children:["Binding ",c+1]}),s.jsx(oe,{type:"button",iconOnly:!0,icon:"×",onClick:()=>i(c),"aria-label":`Remove binding ${c+1}`})]}),s.jsx(Gs,{collectors:e,collectorId:l.collector_id,resourceId:l.resource_id,resolved:l.resolved,onCollector:u=>{const d=e.find(f=>f.id===u)?.resources[0];o(c,u,d?.id??"")},onResource:u=>o(c,l.collector_id,u)})]},l.binding_id)),s.jsx(oe,{type:"button",className:"bv-m0-add-binding",disabled:t.length>=20,onClick:n,children:"Add collector binding"})]})}const Ur="BV_RUNTIME_RESOURCE_PROVIDER_M0",si="resource_provider",oc=20;function Es(e){return e?.findIndex(t=>t?.name===si||t?.type===Ur)??-1}function Ff(e){let t=Es(e.outputs);t<0&&e.addOutput&&(e.addOutput(si,Ur),t=Es(e.outputs));const r=e.outputs?.[t];return r&&(r.name=si,r.type=Ur),t}function Cx(e){let t=Es(e.inputs);t<0&&e.addInput&&(e.addInput(si,Ur),t=Es(e.inputs));const r=e.inputs?.[t];return r&&(r.name=si,r.type=Ur),t}function NE(e){return`${si}_${e}`}function nc(e,t=oc){const r=[];for(let o=1;o<=t;o++){const n=NE(o);let i=e.inputs?.findIndex(l=>l?.name===n)??-1;i<0&&e.addInput&&(e.addInput(n,Ur),i=e.inputs?.findIndex(l=>l?.name===n)??-1);const a=e.inputs?.[i];a&&(a.name=n,a.type=Ur,a.__bvM0ProviderOrdinal=o),r.push(i)}return r}const OE=(e,t)=>t==null?null:e?._links?.get?.(t)??e?.links?.get?.(t)??e?.links?.[t]??null,ME=e=>[...e?._links?.values?.()??[],...e?.links?.values?.()??Object.values(e?.links??{})],Hh=(e,t)=>{if(!t||String(t.target_id)!==String(e.id))return null;const r=e.graph?.getNodeById?.(t.origin_id),o=r?.outputs?.[Number(t.origin_slot)];return r?.graph===e.graph&&(r.__bvM0ResourceProvider===!0||t.type===Ur||o?.type===Ur)?r:null};function AE(e,t,r){const o=e.inputs?.find(a=>a.name===t),n=OE(e.graph,o?.link),i=Hh(e,n);if(i&&(!r||r(i)))return i;if(!r)return null;for(const a of ME(e.graph)){const l=Hh(e,a);if(l&&r(l))return l}return null}const DE="BV M0 Fake Resource Collector",IE="BV M0 Fake Resource Consumer",Nx="BV M0 Fake Multi Resource Consumer",Ox=Ur,jE="a1bdeceb-76ae-4e45-ae36-e5c2664819ce",BE="d97a4268-c02c-42a3-8793-8e578e12e12c",De=(e,t)=>e?.widgets?.find(r=>r.name===t),Gc=e=>{e&&(e.type="converted-widget",e.hidden=!0,e.computeSize=()=>[0,-4],e.serializeValue=()=>e.value)},Kc=(e,t)=>(e&&!String(e.value??"").trim()&&(e.value=t??crypto.randomUUID()),String(e?.value??"")),qc=()=>{let e=0;const t=()=>{const r=ct().canvas;r?Bf(r):e++<40&&setTimeout(t,50)};t()};function PE(e){const t=De(e,"collector_id"),r=De(e,"resource_a_id"),o=De(e,"resource_b_id");if(!t||!r||!o||!e.graph||!(e.graph._nodes??[]).find(a=>a!==e&&a.__bvM0ResourceProvider===!0&&String(De(a,"collector_id")?.value??"")===String(t.value??"")))return;const i={collector:{[String(t.value)]:crypto.randomUUID()},resources:{[String(r.value)]:crypto.randomUUID(),[String(o.value)]:crypto.randomUUID()}};t.value=i.collector[String(t.value)],r.value=i.resources[String(r.value)],o.value=i.resources[String(o.value)],e.__bvM0IdRemap=i}function ic(e,t,r=""){return AE(e,t,r?o=>String(De(o,"collector_id")?.value??"")===r:void 0)}function pn(e){return ic(e,"resource_provider",String(De(e,"collector_id")?.value??""))}function Fa(e,t){const r=hn(e)[t];return ic(e,`resource_provider_${t+1}`,r?.collector_id??"")}function $h(e){const t=pn(e),r=t?.__bvM0IdRemap;if(!r)return;const o=De(e,"collector_id"),n=De(e,"resource_id");o&&r.collector[String(o.value)]&&(o.value=r.collector[String(o.value)]),n&&r.resources[String(n.value)]&&(n.value=r.resources[String(n.value)])}function Sa(e){return(e.graph?._nodes??[]).filter(t=>t.__bvM0ResourceProvider===!0&&t.graph===e.graph).map(t=>({id:String(De(t,"collector_id")?.value??""),label:String(t.title||`Collector #${t.id}`),resources:[{id:String(De(t,"resource_a_id")?.value??""),label:"Alpha"},{id:String(De(t,"resource_b_id")?.value??""),label:"Beta"}],node:t})).filter((t,r,o)=>t.id&&o.findIndex(n=>n.id===t.id)===r)}function yo(e){if(!e?.__bvM0ResourceProvider)return;const t=e.graph?._nodes??[],r=e.outputs?.find(n=>n.type===Ox),o=t.some(n=>!!n.properties?.bvM0DebugVisible&&(pn(n)===e||n.inputs?.some((i,a)=>Fa(n,a)===e)));r&&(r.hidden=!0,r.__bvM0VisualHidden=!o,r.__bvM0PortHidden=!0,r.__bvM0ResourceSlot=!0),Pf(e,"collector",o)}function hn(e){const t=De(e,"resource_bindings");if(!t)return[];try{const r=JSON.parse(String(t.value??"[]"));return Array.isArray(r)?r.slice(0,oc).map(o=>({binding_id:String(o.binding_id||crypto.randomUUID()),collector_id:String(o.collector_id||""),resource_id:String(o.resource_id||""),resolved:!1})):[]}catch{return[]}}function Yn(e,t){const r=De(e,"resource_bindings");r&&(r.value=JSON.stringify(t.map(({binding_id:o,collector_id:n,resource_id:i})=>({binding_id:o,collector_id:n,resource_id:i}))))}function zE(e){const t=hn(e),r=new Set(t.map(n=>n.binding_id));if((e.graph?._nodes??[]).some(n=>n!==e&&n.type===Nx&&hn(n).some(i=>r.has(i.binding_id)))){for(const n of t)n.binding_id=crypto.randomUUID();Yn(e,t)}}function ul(e){const t=hn(e);let r=!1;t.forEach((o,n)=>{const i=Fa(e,n)?.__bvM0IdRemap;if(!i)return;const a=i.collector[o.collector_id],l=i.resources[o.resource_id];a&&(o.collector_id=a,r=!0),l&&(o.resource_id=l,r=!0)}),r&&Yn(e,t)}function Mx(e,t){return["resource_a_id","resource_b_id"].some(r=>String(De(e,r)?.value??"")===t)}function Yh(e){const t=De(e,"collector_id"),r=De(e,"resource_id");if(!t||!r)return;const o=ic(e,"resource_provider",String(t.value??""));if(!!o&&String(t.value??"")===String(De(o,"collector_id")?.value??"")&&Mx(o,String(r.value??"")))return;t.value="",r.value="";const i=e.inputs?.findIndex(a=>a.name==="resource_provider")??-1;i>=0&&e.inputs?.[i]?.link!=null&&e.disconnectInput?.(i)}function Jc(e){const t=hn(e),r=nc(e);let o=!1;t.forEach((n,i)=>{const a=ic(e,`resource_provider_${i+1}`,n.collector_id);if(!!a&&Mx(a,n.resource_id))return;n.collector_id="",n.resource_id="",o=!0;const c=r[i];c>=0&&e.inputs?.[c]?.link!=null&&e.disconnectInput?.(c)}),o&&Yn(e,t)}function Ts(e,t,r=!0){e.properties??(e.properties={}),e.properties.bvM0DebugVisible=t;const o=(e.inputs??[]).map((n,i)=>({input:n,index:i})).filter(({input:n})=>String(n.name??"").startsWith("resource_provider_"));e.__bvM0FanInAnchorSlot=t?o[0]?.index:void 0;for(const{input:n}of o)n.hidden=!0,n.__bvM0ResourceSlot=!0,n.__bvM0VisualHidden=!t,n.__bvM0PortHidden=!0,n.label="";Pf(e,"consumer",t);for(let n=0;n=0&&e.inputs?.[n]?.link!=null&&e.disconnectInput?.(n);const a=Sa(e).find(c=>c.id===r)?.node,l=a?Ff(a):-1;a&&n>=0&&l>=0&&a.connect(l,e,n),Ts(e,!!e.properties?.bvM0DebugVisible),yo(i)}function La(e,t){if(!(t.parentElement?.style.position==="fixed")){t.style.transform="",t.style.maxHeight="",t.style.overflowY="";return}const o=(e.inputs??[]).filter(n=>n.__bvM0ResourceSlot||n.type===Ox).length;t.style.transform=`translateY(-${o*20}px)`,t.style.maxHeight=`${Math.max(120,Number(e.size?.[1]??200)-40)}px`,t.style.overflowY="auto"}function Ax(e,t){[0,50,150,300].forEach(r=>setTimeout(()=>La(e,t),r))}function dl(e){if(!De(e,"resource_bindings"))return;let r=e.__bvM0PickerHost;if(!r){r=document.createElement("div"),r.className="bv-ui bv-m0-picker-host",r.style.position="relative",r.style.zIndex="1",e.__bvM0PickerHost=r;const n=e.addDOMWidget?.("bv_multi_resource_picker","div",r,{serialize:!1,getMinHeight:()=>Math.max(150,78+hn(e).length*124),onDraw:()=>La(e,r),afterResize:()=>La(e,r)});n&&(n.serialize=!1)}e.__bvM0PickerRoot??(e.__bvM0PickerRoot=ea.createRoot(r));const o=()=>{const n=Sa(e),i=hn(e).map((a,l)=>{const c=Fa(e,l);return{...a,resolved:!!c&&String(De(c,"collector_id")?.value??"")===a.collector_id}});e.__bvM0PickerRoot.render(s.jsx(CE,{collectors:n,bindings:i,debugVisible:!!e.properties?.bvM0DebugVisible,onDebug:a=>{Ts(e,a),o()},onBinding:(a,l,c)=>{i[a]={...i[a],collector_id:l,resource_id:c},Yn(e,i),Xh(e,a,l),o()},onAdd:()=>{i.length>=oc||(i.push({binding_id:crypto.randomUUID(),collector_id:"",resource_id:"",resolved:!1}),Yn(e,i),o())},onRemove:a=>{const l=nc(e),c=l[a];c>=0&&e.inputs?.[c]?.link!=null&&e.disconnectInput?.(c),i.splice(a,1),Yn(e,i);for(let d=a;d=0&&e.inputs?.[u]?.link!=null&&e.disconnectInput?.(u),o()}}))};o(),Ts(e,!!e.properties?.bvM0DebugVisible,!1),Ax(e,r)}function Zc(e,t){if(e.__bvM0DomRefresh)return;const r=()=>{setTimeout(t,0),setTimeout(t,100)};e.__bvM0DomRefresh=r,Jr().addEventListener("executed",r),Jr().addEventListener("graphChanged",r);const o=e.onRemoved;e.onRemoved=function(){return Jr().removeEventListener("executed",r),Jr().removeEventListener("graphChanged",r),o?.apply(this,arguments)}}function pd(e,t,r=!0){e.properties??(e.properties={}),e.properties.bvM0DebugVisible=t;const o=e.inputs?.find(n=>n.name==="resource_provider");o&&(o.hidden=!0,o.__bvM0VisualHidden=!t,o.__bvM0PortHidden=!0,o.__bvM0ResourceSlot=!0,o.label=""),Pf(e,"consumer",t),yo(pn(e)),mx(e.graph),t&&vx(e.graph?.list_of_graphcanvas?.[0]??ct().canvas),r&&e.setDirtyCanvas?.(!0,!0)}function FE(e,t){const r=pn(e),o=Cx(e);o>=0&&e.inputs?.[o]?.link!=null&&e.disconnectInput?.(o);const n=Sa(e).find(a=>a.id===t)?.node,i=n?Ff(n):-1;n&&o>=0&&i>=0&&n.connect(i,e,o),pd(e,!!e.properties?.bvM0DebugVisible),yo(r)}function fl(e){const t=De(e,"collector_id"),r=De(e,"resource_id");if(!t||!r)return;let o=e.__bvM0PickerHost;if(!o){o=document.createElement("div"),o.className="bv-ui bv-m0-picker-host",o.style.position="relative",o.style.zIndex="1",e.__bvM0PickerHost=o;const i=e.addDOMWidget?.("bv_resource_picker","div",o,{serialize:!1,getMinHeight:()=>150,onDraw:()=>La(e,o),afterResize:()=>La(e,o)});i&&(i.serialize=!1)}e.__bvM0PickerRoot??(e.__bvM0PickerRoot=ea.createRoot(o));const n=()=>{const i=pn(e),a=String(De(i,"collector_id")?.value??"");e.__bvM0PickerRoot.render(s.jsx(LE,{collectors:Sa(e),collectorId:String(t.value??""),resourceId:String(r.value??""),resolved:!!i&&a===String(t.value??""),debugVisible:!!e.properties?.bvM0DebugVisible,onDebug:l=>{pd(e,l),n()},onCollector:l=>{t.value=l;const c=Sa(e).find(u=>u.id===l)?.resources[0];r.value=c?.id??"",FE(e,l),n()},onResource:l=>{r.value=l,n()}}))};n(),pd(e,!!e.properties?.bvM0DebugVisible,!1),Ax(e,o)}function UE(e,t){if(t.name===DE){const r=e.prototype.onNodeCreated,o=e.prototype.onConfigure,n=function(){qc(),this.__bvM0ResourceProvider=!0,Ff(this),Kc(De(this,"collector_id")),Kc(De(this,"resource_a_id"),jE),Kc(De(this,"resource_b_id"),BE),PE(this),["collector_id","resource_a_id","resource_b_id"].forEach(i=>Gc(De(this,i))),Zc(this,()=>yo(this)),yo(this)};return e.prototype.onNodeCreated=function(){const i=r?.apply(this,arguments);return queueMicrotask(()=>n.call(this)),i},e.prototype.onConfigure=function(){const i=o?.apply(this,arguments);return queueMicrotask(()=>n.call(this)),i},!0}if(t.name===IE){const r=e.prototype.onNodeCreated,o=e.prototype.onConfigure,n=e.prototype.onConnectionsChange,i=function(){qc(),this.__bvM0ResourceConsumer=!0,Cx(this),$h(this),Yh(this),["collector_id","resource_id"].forEach(a=>Gc(De(this,a))),Zc(this,()=>fl(this)),fl(this),setTimeout(()=>fl(this),0)};return e.prototype.onNodeCreated=function(){const a=r?.apply(this,arguments);return queueMicrotask(()=>i.call(this)),a},e.prototype.onConfigure=function(){const a=o?.apply(this,arguments);return queueMicrotask(()=>i.call(this)),a},e.prototype.onConnectionsChange=function(){const a=pn(this),l=n?.apply(this,arguments);return queueMicrotask(()=>{$h(this),Yh(this),fl(this),yo(a),yo(pn(this))}),l},!0}if(t.name===Nx){const r=e.prototype.onNodeCreated,o=e.prototype.onConfigure,n=e.prototype.onConnectionsChange,i=function(){qc(),this.__bvM0ResourceConsumer=!0,nc(this),zE(this),ul(this),Jc(this),Gc(De(this,"resource_bindings")),Zc(this,()=>{ul(this),dl(this)}),dl(this),[0,50,150].forEach(a=>setTimeout(()=>{ul(this),Jc(this),dl(this)},a))};return e.prototype.onNodeCreated=function(){const a=r?.apply(this,arguments);return queueMicrotask(()=>i.call(this)),a},e.prototype.onConfigure=function(){const a=o?.apply(this,arguments);return queueMicrotask(()=>i.call(this)),a},e.prototype.onConnectionsChange=function(){const a=n?.apply(this,arguments);return queueMicrotask(()=>{ul(this),Jc(this),Ts(this,!!this.properties?.bvM0DebugVisible,!1),dl(this)}),a},!0}return!1}const VE=(e,t)=>e?.widgets?.find(r=>r.name===t),WE=["replace","merge","subtract","clear"].map(e=>({value:e,label:e[0].toUpperCase()+e.slice(1)}));function HE({open:e,node:t,onClose:r}){const[o,n]=m.useState(()=>ys(t)),i=hi(t);if(m.useEffect(()=>{e&&t&&n(ys(t))},[t,e]),!t)return null;const a=li(t).filter(g=>g.resources.length>0),l=Kk(t),c=ud(t,o),u=String(VE(t,"operation")?.value??"replace"),d=o.version===2?o.steps??[]:o.entries.flatMap(g=>g.targets.map(x=>({id:crypto.randomUUID(),operation:u,target:x,entries:[{...g,targets:[x]}]}))),f=(g,x=o.collector_id)=>{n(bi(t,{version:2,collector_id:x,entries:[],steps:g}))},p=d.map((g,x)=>{const w=sx(g.target),k=l.find(b=>b.value===w)?.label??"Missing region";return{id:g.id,title:`Step ${x+1}: ${k}`,description:g.operation,content:s.jsxs("div",{className:"bv-ui-stack",children:[s.jsx(qe,{label:"Target",value:w,options:l,onValue:b=>{const h=l.find(v=>v.value===b)?.target;h&&f(d.map(v=>v.id===g.id?{...v,target:h,entries:v.entries.map(_=>({..._,targets:[h]}))}:v))}}),s.jsx(qe,{label:"Operation",value:g.operation,options:WE,onValue:b=>f(d.map(h=>h.id===g.id?{...h,operation:b}:h))}),g.operation!=="clear"&&g.entries.map((b,h)=>b.source.kind==="external"?s.jsxs("section",{className:"bv-lora-v3-stack-row",children:[s.jsxs("strong",{children:["LoRA Stack ",h+1]}),s.jsx(Gs,{collectors:a,collectorId:o.collector_id??"",resourceId:b.source.resource_id,resolved:c,onCollector:v=>n(kx(t,o,v)),onResource:v=>n(Ex(t,o,b.id,v))}),s.jsx(oe,{intent:"ghost",iconOnly:!0,"aria-label":`Remove LoRA Stack ${h+1}`,onClick:()=>f(d.map(v=>v.id===g.id?{...v,entries:v.entries.filter(_=>_.id!==b.id)}:v)),children:"×"})]},b.id):null),g.operation!=="clear"&&s.jsx(oe,{intent:"secondary",disabled:!a.length,onClick:()=>{const b=a.find(v=>v.id===o.collector_id)??a[0],h=b?.resources[0];h&&f(d.map(v=>v.id===g.id?{...v,entries:[...v.entries,{id:crypto.randomUUID(),source:{kind:"external",resource_id:h.id},targets:[v.target]}]}:v),b.id)},children:"Add LoRA stack"})]})}});return s.jsx(xn,{open:e,title:"BV Regional LoRA Editor",shortTitle:"Regional LoRA",menuVisible:i,onMenuVisible:g=>mn(t,g),initialGeometry:{width:620,height:520},minSize:{width:420,height:320},onClose:r,children:s.jsxs("div",{className:"bv-ui bv-lora-v3-window",children:[s.jsx(oe,{intent:"secondary",disabled:!l.length,onClick:()=>f([...d,{id:crypto.randomUUID(),operation:"merge",target:l[0].target,entries:[]}]),children:"Add step"}),s.jsx(Ia,{items:p,initialExpanded:p.map(g=>g.id),onReorder:g=>{const x=new Map(d.map(w=>[w.id,w]));f(g.map(w=>x.get(w.id)).filter(Boolean))},onRemove:g=>f(d.filter(x=>x.id!==g))})]})})}const Uf="BV Control Center",Rs=0,$E=2,YE=4,Pi="bvControlBaseMode",XE="bv-open-control-rack",Dx=320,GE=48,Gh="bv_control_conflict_status",Qc=new Set;function KE(e){return e==="activate"?{mode:Rs,priority:3}:e==="mute"?{mode:$E,priority:2}:{mode:YE,priority:1}}function Kh(e){const t=new Set(is(ct()).map(r=>r.id));return{...e,controls:e.controls.map(r=>({...r,assignments:r.assignments.map(o=>({...o,unresolved:!t.has(o.groupId)}))}))}}function qE(e){return $w(e,t=>_v(t,Uf))}function JE(e){for(const o of Qc){const n=o.properties?.[Pi];o.mode=e.forceActive?Rs:typeof n=="number"?n:o.mode,o.properties&&delete o.properties[Pi],o.setDirtyCanvas?.(!0,!0)}Qc.clear();const t=new Map(is(ct()).map(o=>[o.id,o])),r=new Map;for(const o of e.controls)if(o.enabled)for(const n of o.assignments){const i=t.get(n.groupId);if(i)for(const a of qE(i)){const l=KE(n.action),c=r.get(a);(!c||l.priority>c.priority)&&r.set(a,l)}}for(const[o,n]of r)o.properties??(o.properties={}),typeof o.properties[Pi]!="number"&&(o.properties[Pi]=typeof o.mode=="number"?o.mode:Rs),o.mode=n.mode,Qc.add(o),o.setDirtyCanvas?.(!0,!0)}function ZE(e,t){const r=e.inputs[t],o=e.widgets?.find(n=>n.name===r.name);o&&e.removeWidget?.(o),r.link!=null&&e.disconnectInput(t),e.removeInput(t)}function QE(e,t){const r=wv(t),o=Yw(r);let n=e.widgets?.find(i=>i.name===Gh);n||(n=e.addCustomWidget({name:Gh,type:"custom",value:o,y:0,options:{},serialize:!1,computeSize:()=>[0,24],computeLayoutSize:()=>({minHeight:24,maxHeight:24,minWidth:Dx}),mouse:()=>!1,draw(i,a,l,c,u){i.save(),i.beginPath(),i.rect(10,c,Math.max(0,l-20),u),i.clip(),i.fillStyle=this.__bvHasConflict?"#ffbd66":"#8fc9a3",i.font="12px sans-serif",i.textBaseline="middle",i.fillText(String(this.value??""),14,c+u/2),i.restore()}})),n.value=o,n.__bvHasConflict=r.length>0,n.tooltip=r.map(i=>`${i.groupPath}: ${i.winnerAction} wins`).join(` -`)}function Ix(e,t){e.mode=Rs,e.properties&&delete e.properties[Pi];let r=e.widgets?.find(c=>c.name==="configure_control_center");r||(r=e.addWidget("button","configure_control_center",null,()=>window.dispatchEvent(new Event(XE)),{serialize:!1})),r.label="Configure Control Center",r.serialize=!1;const o=new Set(t.controls.map(c=>`bvcc_${c.id}`));for(let c=e.inputs.length-1;c>=0;c--){const u=e.inputs[c];u.name.startsWith("bvcc_")&&!o.has(u.name)&&ZE(e,c)}for(const c of t.controls){const u=`bvcc_${c.id}`,d=g=>{const x=sn(),w={...x,controls:x.controls.map(k=>k.id===c.id?{...k,enabled:!!g}:k)};ff(w)};let f=e.inputs.find(g=>g.name===u);f||(f=e.addInput(u,"BOOLEAN",{label:c.name,nameLocked:!0,widget:{name:u}})),f.label=c.name;let p=e.widgets?.find(g=>g.name===u);p&&!p.__bvControlCallbackBound&&(e.removeWidget?.(p),p=null),p||(p=e.addWidget("toggle",u,c.enabled,d,{on:"ACTIVE",off:"INACTIVE"})),p.__bvControlCallbackBound=!0,p.label=c.name,p.value=c.enabled,p.serialize=!0,p.options??(p.options={}),p.options.on="ACTIVE",p.options.off="INACTIVE",p.callback=d,f.widget={name:u}}QE(e,t);const n=e.widgets?.find(c=>c.name==="bv_control_config_json");n&&(n.value=JSON.stringify(Kh(t)),n.type="converted-widget",n.draw=()=>{},n.hidden=!0,n.options??(n.options={}),n.options.hidden=!0,n.element&&(n.element.style.display="none"),n.computeSize=()=>[0,-4],n.serializeValue=()=>JSON.stringify(Kh(sn()))),e.serialize_widgets=!0;const i=e.size??[0,0],a=e.computeSize?.()??i,l=Math.max(Dx,(a[0]??0)+GE);e.setSize?.([Math.max(i[0]??0,l),a[1]??i[1]??0]),e.setDirtyCanvas?.(!0,!0)}function jx(e=sn()){for(const{node:t}of Ww(ct(),Uf))Ix(t,e);JE(e)}window.addEventListener(ri,e=>jx(e.detail));ct().registerExtension({name:"bv_nodepack.control_center",async beforeRegisterNodeDef(e,t){if(t.name!==Uf)return;const r=e.prototype.onNodeCreated;e.prototype.onNodeCreated=function(){const o=r?.apply(this,arguments);return Ix(this,sn()),o}},afterConfigureGraph(){jx()}});const rt=ct(),wr=Jr();ak(e=>rt.ui?.settings?.setSettingValue?.(Bm,e));lk(e=>rt.ui?.settings?.setSettingValue?.(Pm,e));ik(e=>rt.ui?.settings?.setSettingValue?.(zm,e));B0(e=>rt.ui?.settings?.setSettingValue?.(wf,e));const hd="bv-open-control-rack",Xn="bv-open-regional-editor",Qi="bv-open-regional-quick-edit",_o="bv-regional-document-changed",qh="bv-nodepack-styles",Bx="BV.DebugBridge.Enabled";let en=!1,pl=null;const eT=()=>{const e=rt.extensionManager?.workflow?.activeWorkflow??rt.workflowManager?.activeWorkflow;return String(e?.filename??e?.path??"Current workflow")},Px=async e=>{en=!!e;const t=await fetch(wr.apiURL("/bv_nodepack/debug/session"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({enabled:en})});if(!t.ok)throw new Error(`BV Debug Bridge session failed: ${t.status} ${await t.text()}`)},zx=async()=>{if(!en)return!1;const e=await rt.graphToPrompt(),t=await fetch(wr.apiURL("/bv_nodepack/debug/snapshot"),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({prompt:e.output,workflow_name:eT()})});if(!t.ok)throw new Error(`BV Debug Bridge snapshot failed: ${t.status} ${await t.text()}`);return!0},Ss=()=>{en&&(pl!=null&&window.clearTimeout(pl),pl=window.setTimeout(()=>{pl=null,zx().catch(e=>console.error(e))},600))},Br=e=>{e.type="converted-widget",e.hidden=!0,e.computeSize=()=>[0,-4],e.element&&(e.element.style.display="none")},tT=(e,t,r)=>{if(!t||!r||t===r)return;const o=e.widgets?.indexOf(t)??-1;if(o<0)return;e.widgets.splice(o,1);const n=e.widgets.indexOf(r);e.widgets.splice(n<0?e.widgets.length:n,0,t)},rT=e=>{const t=[e.widgets?.find(r=>r.name==="region_selector"),...e.__bvDetailerContextWidgets??[]].filter(Boolean);for(const r of t){const o=e.widgets?.indexOf(r)??-1;o>=0&&e.widgets.splice(o,1),r.onRemove?.()}e.__bvDetailerContextWidgets=[]},ac=e=>{const t=e.inputs?.find(a=>a.name==="regional"||a.name==="regional_prompt"),r=e.graph??rt.graph,o=t?.link==null?null:r?.links?.[t.link]??r?._links?.get?.(t.link),n=o?r?.getNodeById?.(o.origin_id):null;if(n?.type!=="BV Regional Prompt")return null;const i=n.widgets?.find(a=>a.name==="regional_json")?.value;try{return un(i)}catch{return null}},oT=e=>{const t=e.graph??rt.graph,r=e.inputs?.find(l=>l.name==="detector_registry"),o=r?.link==null?null:t?.links?.[r.link]??t?._links?.get?.(r.link),n=o?t?.getNodeById?.(o.origin_id):null;if(n?.type!=="BV Detector Registry")return[];const i=n.widgets?.find(l=>l.name==="config_json")?.value,a=Zi(i).detectors.map(l=>l.id);for(const l of n.inputs??[]){if(!String(l.name).startsWith("external_detector_")||l.link==null)continue;const c=t?.links?.[l.link]??t?._links?.get?.(l.link),u=c?t?.getNodeById?.(c.origin_id):null,d=String(u?.widgets?.find(f=>f.name==="detector_id")?.value??"").trim();d&&a.push(d)}return[...new Set(a)].sort((l,c)=>l.localeCompare(c))},eu=e=>{const t=/^external_detector_(\d+)$/,r=(e.inputs??[]).flatMap(n=>{const i=t.exec(String(n.name));return i&&n.link!=null?[Number(i[1])]:[]}),o=new Set(wE(r));for(let n=(e.inputs?.length??0)-1;n>=0;n--){const i=e.inputs[n],a=t.exec(String(i.name));a&&i.link==null&&!o.has(Number(a[1]))&&e.removeInput(n)}for(const n of[...o].sort((i,a)=>i-a)){const i=`external_detector_${n}`;e.inputs?.some(a=>a.name===i)||e.addInput(i,"BV_DETECTOR_BINDING",{label:`external detector ${n}`,nameLocked:!0})}e.setDirtyCanvas?.(!0,!0)},Jh=(e,t)=>{for(const r of e.inputs??[])r.label=Yc(t,String(r.name));for(const r of e.outputs??[])r.label=Yc(t,String(r.name));for(const r of e.widgets??[])String(r.name).startsWith("configure_")||(r.label=Yc(t,String(r.name)));e.setDirtyCanvas?.(!0,!0)},gd=e=>{const t=e.widgets?.find(i=>i.name==="config_json"),r=e.widgets?.find(i=>i.name==="configure_detailer_plan");if(!t||!r)return;Br(t);const o=ac(e),n=o?Al(t.value,o.regions).jobs.length:0;r.label=o?`Configure Detailer Plan · ${n} Job${n===1?"":"s"}`:"Connect a BV Regional Prompt",r.disabled=!o,e.setDirtyCanvas?.(!0,!0)},Zh=e=>{const t=e.widgets?.find(o=>o.name==="config_json");if(!t)return;Br(t);let r=e.widgets?.find(o=>o.name==="configure_detailer_plan");r||(r=e.addWidget("button","configure_detailer_plan",null,()=>{const o=ac(e);o&&(_r("detailer",Ne(e)),mE(o.regions,oT(e),t.value,n=>{t.value=n,gd(e),e.graph?.setDirtyCanvas?.(!0,!0)},`detailer-plan:${Ne(e)}`,Ct("BV Regional Detailer Plan").filter(vn).map(n=>({id:Ne(n),label:`${n.title||"BV Regional Detailer Plan"} · #${n.id}`})),(n,i)=>{const a=Ct("BV Regional Detailer Plan").find(c=>Ne(c)===n),l=a?.widgets?.find(c=>c.name==="configure_detailer_plan");l&&_f(`detailer-plan:${Ne(e)}`,`detailer-plan:${Ne(a)}`,()=>l.callback?.(),i)},e))},{serialize:!1}),r.serialize=!1),gd(e)},Qh=e=>{try{const t=JSON.parse(String(e??"[]"));return Array.isArray(t)?t.filter(r=>r&&typeof r.region_id=="string").map(r=>({region_id:r.region_id,influence:Math.max(0,Math.min(2,Number.isFinite(+r.influence)?+r.influence:1))})):[]}catch{return[]}},Vf=e=>{if(e.comfyClass!=="BV Regional Detailer Mask"&&e.type!=="BV Regional Detailer Mask")return;const t=e.widgets?.find(d=>d.name==="context_regions_json");if(!t)return;Br(t);const r=ac(e);if(!r)return;for(const d of e.__bvDetailerContextWidgets??[]){const f=e.widgets?.indexOf(d)??-1;f>=0&&e.widgets.splice(f,1),d.onRemove?.()}const o=String(e.widgets?.find(d=>d.name==="region")?.value??""),n=(r?.regions??[]).filter(d=>d.enabled!==!1&&d.id!==o),i=new Set,a=Qh(t.value).filter(d=>d.region_id!==o&&!i.has(d.region_id)&&!!i.add(d.region_id));t.value=JSON.stringify(a);const l=[],c=d=>{t.value=JSON.stringify(d),queueMicrotask(()=>Vf(e))};for(let d=0;d<=a.length;d++){const f=a[d],p=new Set(a.filter((k,b)=>b!==d).map(k=>k.region_id)),g=Tx(n.filter(k=>!p.has(k.id))),x=f&&!g.some(k=>k.id===f.region_id)?`Missing region · ${f.region_id.slice(0,8)}`:null,w=e.addWidget("combo",`context_region_${d+1}`,f?g.find(k=>k.id===f.region_id)?.label??x??"None":"None",k=>{if(k==="None")return c(a.slice(0,d));const b=g.find(v=>v.label===k);if(!b)return;const h=a.slice();h[d]={region_id:b.id,influence:f?.influence??1},c(h)},{values:["None",...x?[x]:[],...g.map(k=>k.label)],serialize:!1});if(w.label=`context region ${d+1}`,w.serialize=!1,l.push(w),f){const k=e.addWidget("number",`context_influence_${d+1}`,f.influence,b=>{const h=Qh(t.value);h[d]&&(h[d].influence=Math.max(0,Math.min(2,+b))),t.value=JSON.stringify(h)},{min:0,max:2,step:.05,precision:2,serialize:!1});k.label=`context influence ${d+1}`,k.serialize=!1,l.push(k)}}e.__bvDetailerContextWidgets=l;const u=e.computeSize?.();u&&e.setSize&&e.setSize([Math.max(e.size?.[0]??0,u[0]),u[1]]),e.setDirtyCanvas?.(!0,!0),e.graph?.setDirtyCanvas?.(!0,!0)},Dl=e=>{const t=e.widgets?.find(d=>d.name==="region"),r=e.widgets?.find(d=>d.name==="region_selector");if(!t||!r)return;const o=ac(e);if(!o){r.options??(r.options={}),r.options.values=["Connect a BV Regional Prompt"],r.value=r.options.values[0],r.disabled=!0,e.setDirtyCanvas?.(!0,!0);return}const n=e.comfyClass==="BV Regional Detailer Mask"||e.type==="BV Regional Detailer Mask"?"detailer":void 0,i=Tx(o.regions,n),a=String(t.value??""),l=i.some(d=>d.id===a)?a:a||i[0]?.id||"";t.value=l,e.__bvRegionChoices=i,r.options??(r.options={});const c=l&&!i.some(d=>d.id===l)?`Missing region · ${l.slice(0,8)}`:null;r.options.values=i.length||c?[...c?[c]:[],...i.map(d=>d.label)]:["Connect a BV Regional Prompt"],r.value=i.find(d=>d.id===l)?.label??c??r.options.values[0];const u=e.widgets?.find(d=>d.name==="scope");r.disabled=u&&u.value!=="region"||!i.length,Vf(e),e.setDirtyCanvas?.(!0,!0)},eg=e=>{const t=e.widgets?.find(n=>n.name==="region");if(!t)return;Br(t);let r=e.widgets?.find(n=>n.name==="region_selector");r||(r=e.addWidget("combo","region_selector","Connect a BV Regional Prompt",n=>{const i=e.__bvRegionChoices?.find(a=>a.label===n);i&&(t.value=i.id,Vf(e))},{values:["Connect a BV Regional Prompt"],serialize:!1}),r.label="region",r.serialize=!1),(e.comfyClass==="BV Regional Detailer Mask"||e.type==="BV Regional Detailer Mask")&&tT(e,r,e.widgets?.find(n=>n.name==="primary_region_influence"));const o=e.widgets?.find(n=>n.name==="scope");if(o&&!o.__bvRegionSelectorHooked){o.__bvRegionSelectorHooked=!0;const n=o.callback;o.callback=function(){const i=n?.apply(this,arguments);return Dl(e),i}}if(!e.__bvRegionDocumentListener){e.__bvRegionDocumentListener=()=>Dl(e),window.addEventListener(_o,e.__bvRegionDocumentListener);const n=e.onRemoved;e.onRemoved=function(){return window.removeEventListener(_o,e.__bvRegionDocumentListener),n?.apply(this,arguments)}}Dl(e)},Ct=e=>{const t=[],r=o=>{for(const n of o?._nodes??[])n.type===e&&t.push(n),n.subgraph&&r(n.subgraph)};return r(rt.graph),t},tn=()=>{const e=rt.graph,t=[],r=o=>{for(const n of o?._nodes??[])n.type==="BV Regional Prompt"&&t.push(n),n.subgraph&&r(n.subgraph)};return r(e),t},Gn=()=>{const e=Ct("BV Control Center").length>0,t=tn().length>0,r=t||["BV Regional LoRA","BV Regional Detailer Plan","BV Detector Registry","BV Smart Pipe","BV Smart Pipe Merge"].some(n=>Ct(n).length>0),o=r||t;document.body.classList.toggle("bv-toolbar-no-control",!e),document.body.classList.toggle("bv-toolbar-no-editor",!r),document.body.classList.toggle("bv-toolbar-no-quick",!t),document.body.classList.toggle("bv-toolbar-no-overview",!o),window.dispatchEvent(new CustomEvent("bv-toolbar-capabilities-changed",{detail:{control:e,quick:t,full:r,overview:o}}))},Fx=e=>Ef(rt.rootGraph??rt.graph,t=>t===e)[0],Ne=e=>Fx(e)?.key??String(e.id),Ni=(e,t)=>{const r=Fx(e);return{label:String(e.title||t),meta:`${r?.breadcrumb?`${r.breadcrumb} · `:""}#${e.id}`}},Ls=(e,t,r,o)=>{const n=o.widgets?.find(c=>c.name===r);if(!n||n.disabled)return;const i=Ne(o),a=po(e),l=()=>n.callback?.();a&&a!==i?_f(`${t}:${a}`,`${t}:${i}`,l,ni()==="replace"):l(),_r(e,i)},tg=(e,t)=>{e==="regional"?window.dispatchEvent(new CustomEvent(Xn,{detail:{node:t}})):e==="lora"?window.dispatchEvent(new CustomEvent(Ji,{detail:{node:t}})):e==="detailer"?Ls("detailer","detailer-plan","configure_detailer_plan",t):e==="detector"?Ls("detector","detector-registry","configure_detector_registry",t):window.dispatchEvent(new CustomEvent("bv-open-smart-pipe-editor",{detail:{node:t,kind:e}}))},nT=()=>{const e=[{type:"regional",nodes:tn()},{type:"lora",nodes:Ct("BV Regional LoRA")},{type:"detailer",nodes:Ct("BV Regional Detailer Plan")},{type:"detector",nodes:Ct("BV Detector Registry")},{type:"pipe",nodes:Ct("BV Smart Pipe")},{type:"merge",nodes:Ct("BV Smart Pipe Merge")}],t=z1(),r=t&&po(t),o=e.find(i=>i.type===t)?.nodes.find(i=>Ne(i)===r);if(o){tg(t,o);return}const n=e.flatMap(i=>i.nodes.map(a=>({type:i.type,node:a}))).sort((i,a)=>(Number(i.node.id)||Number.MAX_SAFE_INTEGER)-(Number(a.node.id)||Number.MAX_SAFE_INTEGER))[0];n&&(tg(n.type,n.node),t&&jr({title:"Previous editor unavailable",message:"Opened the first available BV editor instead.",tone:"warning",duration:4e3}))},bd=()=>{const e=rt.graph,t=[],r=o=>{for(const n of o?._nodes??[]){if(n.type==="BV Named LoRA Stack"){const i=String(n.widgets?.find(l=>l.name==="stack_id")?.value??"").trim(),a=String(n.widgets?.find(l=>l.name==="name")?.value??"").trim();i&&a&&t.push({id:i,name:a,nodeId:String(n.id)})}n.subgraph&&r(n.subgraph)}};return r(e),t.sort((o,n)=>o.name.localeCompare(n.name))},iT=()=>lE(tn().flatMap(e=>{try{const t=un(e.widgets?.find(r=>r.name==="regional_json")?.value);return[{documentId:t.document_id,nodeId:String(e.id),title:e.title||t.title||"BV Regional Prompt"}]}catch{return[]}})),rg=(e,t=!1)=>{const r=e.widgets?.find(a=>a.name==="document_id"),o=e.widgets?.find(a=>a.name==="target_editor");if(!r||!o)return;const n=iT(),i=sE(r.value,n,t);r.value=i,e.__bvDocumentTargets=n,o.options??(o.options={}),o.options.values=n.length?n.map(a=>a.label):["No BV Regional Prompt available"],o.value=n.find(a=>a.documentId===i)?.label??(i?`Missing target · ${i.slice(0,8)}`:o.options.values[0]),o.disabled=!n.length,e.setDirtyCanvas?.(!0,!0)},og=(e,t=!1)=>{const r=e.widgets?.find(n=>n.name==="document_id");if(!r)return;Br(r);let o=e.widgets?.find(n=>n.name==="target_editor");if(o||(o=e.addWidget("combo","target_editor","No BV Regional Prompt available",n=>{const i=e.__bvDocumentTargets?.find(a=>a.label===n);i&&(r.value=i.documentId)},{values:["No BV Regional Prompt available"],serialize:!1}),o.label="target_editor",o.serialize=!1),!e.__bvDocumentTargetListener){e.__bvDocumentTargetListener=()=>rg(e,!1),window.addEventListener(_o,e.__bvDocumentTargetListener);const n=e.onRemoved;e.onRemoved=function(){return window.removeEventListener(_o,e.__bvDocumentTargetListener),n?.apply(this,arguments)}}rg(e,t)},ng=(e,t=!1)=>{const r=e.widgets?.find(o=>o.name==="regional_json");if(r)try{const o=t?bh():un(r.value);!t&&tn().some(a=>{if(a===e)return!1;try{return un(a.widgets?.find(l=>l.name==="regional_json")?.value).document_id===o.document_id}catch{return!1}})&&(o.document_id=crypto.randomUUID()),r.value=JSON.stringify(o);const i=e.widgets?.find(a=>a.name==="lora_bindings_json");if(i)try{const a={...Df(i.value,t?"":o.document_id),document_id:o.document_id};i.value=JSON.stringify($n(a,new Set(o.regions.map(l=>l.id))))}catch{i.value=JSON.stringify(rc(o.document_id))}}catch{r.value=JSON.stringify(bh())}};function aT(){const[e,t]=m.useState(!1),[r,o]=m.useState(!1),[n,i]=m.useState(!1),[a,l]=m.useState(0),[c,u]=m.useState(!1),[d,f]=m.useState(0),[p,g]=m.useState(null),[x,w]=m.useState([]),[k,b]=m.useState({}),[h,v]=m.useState([]),[_,y]=m.useState(null),T=m.useCallback((S=!1)=>{const P=tn(),O=Ct("BV Regional LoRA"),B=Ct("BV Regional Detailer Plan"),j=Ct("BV Detector Registry"),M=[...Ct("BV Smart Pipe"),...Ct("BV Smart Pipe Merge")],E=(L,R)=>{const N=!vn(L);return N&&!S?null:{...R,hidden:N,onReveal:N?()=>mn(L,!0):void 0}};return[{id:"regional",label:"Regional Prompts",items:P.map(L=>{const R=Ni(L,"BV Regional Prompt"),N=po("regional")===Ne(L);return E(L,{id:Ne(L),...R,meta:`${R.meta}${N?" · Last active":""}`,onSelect:()=>window.dispatchEvent(new CustomEvent(Xn,{detail:{node:L}})),secondary:{label:`Quick edit ${R.label}`,onSelect:()=>window.dispatchEvent(new CustomEvent(Qi,{detail:{node:L}}))}})}).filter(Boolean)},{id:"lora",label:"Regional LoRA",items:O.map(L=>{const R=Ni(L,"BV Regional LoRA"),N=po("lora")===Ne(L);return E(L,{id:Ne(L),...R,meta:`${R.meta}${N?" · Last active":""}`,onSelect:()=>{_r("lora",Ne(L)),window.dispatchEvent(new CustomEvent(Ji,{detail:{node:L}}))}})}).filter(Boolean)},{id:"detailer",label:"Detailer Plan",items:B.map(L=>{const R=Ni(L,"BV Regional Detailer Plan"),N=L.widgets?.find(W=>W.name==="configure_detailer_plan"),A=po("detailer")===Ne(L);return E(L,{id:Ne(L),...R,disabled:!N||N.disabled,meta:`${R.meta}${N?.disabled?" · Connect Regional Prompt":A?" · Last active":""}`,onSelect:()=>Ls("detailer","detailer-plan","configure_detailer_plan",L)})}).filter(Boolean)},{id:"detector",label:"Detector Registry",items:j.map(L=>{const R=Ni(L,"BV Detector Registry"),N=po("detector")===Ne(L);return E(L,{id:Ne(L),...R,meta:`${R.meta}${N?" · Last active":""}`,onSelect:()=>Ls("detector","detector-registry","configure_detector_registry",L)})}).filter(Boolean)},{id:"smart-pipe",label:"Smart Pipes",items:M.map(L=>{const R=String(L.type??L.comfyClass)==="BV Smart Pipe Merge"?"merge":"pipe",N=Ni(L,R==="merge"?"Smart Pipe Merge":"Smart Pipe");return E(L,{id:Ne(L),...N,meta:`${N.meta} · ${R==="merge"?"Merge":"Pipe"}`,onSelect:()=>window.dispatchEvent(new CustomEvent("bv-open-smart-pipe-editor",{detail:{node:L,kind:R}}))})}).filter(Boolean)}]},[]);return m.useEffect(()=>{if(!(!n&&!c))return pE(rt,wr,()=>{i(!1),u(!1)})},[c,n]),m.useEffect(()=>{const S=()=>t(!0);return window.addEventListener(hd,S),()=>window.removeEventListener(hd,S)},[]),m.useEffect(()=>{const S=P=>{const O=P.detail?.node??null;O&&_r("lora",Ne(O)),y(O)};return window.addEventListener(Ji,S),()=>window.removeEventListener(Ji,S)},[]),m.useEffect(()=>{const S=P=>o(!!P.detail?.control);return window.addEventListener("bv-toolbar-capabilities-changed",S),Gn(),()=>window.removeEventListener("bv-toolbar-capabilities-changed",S)},[]),m.useEffect(()=>{const S=()=>Gn();return window.addEventListener(xs,S),()=>window.removeEventListener(xs,S)},[]),m.useEffect(()=>{const S=P=>{const O=P.detail?.node??null,B=tn();v(bd()),w(B);const j=O??B.find(M=>Ne(M)===po("quick"))??B[0]??null;j&&_r("quick",Ne(j)),g(j),i(!1),u(!0),f(M=>M+1)};return window.addEventListener(Qi,S),()=>window.removeEventListener(Qi,S)},[]),m.useEffect(()=>{const S=P=>{const O=P.detail?.output,B=O?.bv_regional_background?.[0]?.document_id,j=O?.images?.[O.images.length-1];if(!B||!j)return;const M=new URLSearchParams({filename:j.filename,type:j.type,subfolder:j.subfolder||""});b(E=>({...E,[B]:wr.apiURL(`/view?${M}`)}))};return wr.addEventListener("executed",S),()=>wr.removeEventListener("executed",S)},[]),m.useEffect(()=>{const S=P=>{const O=P.detail?.node??null,B=tn();v(bd()),w(B);const j=O??B.find(M=>Ne(M)===po("regional"))??B[0]??null;j&&_r("regional",Ne(j)),g(j),j&&c&&String(p?.id)===String(j.id)&&u(!1),i(!0),l(M=>M+1)};return window.addEventListener(Xn,S),()=>window.removeEventListener(Xn,S)},[c,p]),s.jsxs(s.Fragment,{children:[s.jsx(j1,{}),s.jsx(Z0,{getColumns:T}),s.jsx(V1,{}),s.jsx(U1,{open:e,hasControlNodes:r,onClose:()=>t(!1)}),s.jsx(HE,{open:!!_,node:_,onClose:()=>y(null)}),s.jsx(oE,{open:n,activationToken:a,nodes:x,initialNode:p,backgrounds:k,loraStacks:h,onClose:()=>i(!1)}),s.jsx(aE,{open:c,activationToken:d,nodes:x,initialNode:p,loraStacks:h,onClose:()=>u(!1),onOpenEditor:S=>{_r("regional",Ne(S)),g(S),u(!1),i(!0),l(P=>P+1)}})]})}const ig="bv-root";function lT(){if(!document.getElementById(qh)){const t=document.createElement("style");t.id=qh,t.textContent=`${X1} -${Y1}`,document.head.appendChild(t)}let e=document.getElementById(ig);e||(e=document.createElement("div"),e.id=ig,document.body.appendChild(e),ea.createRoot(e).render(s.jsx(Re.StrictMode,{children:s.jsx(aT,{})})))}rt.registerExtension({name:"bv_nodepack.control_rack_portal",setup(){lT(),Bf(rt.canvas),U0(rt.ui?.settings),fE(),en=!!rt.ui?.settings?.getSettingValue?.(Bx,!1),Px(en).then(()=>{en&&Ss()}).catch(e=>console.error(e)),wr.addEventListener("graphChanged",Ss),wr.addEventListener("graphChanged",Gn)}});rt.registerExtension({name:"bv_nodepack.regional_editor",settings:[{id:zv,name:"BV Interface Size",type:"combo",defaultValue:"default",options:[{text:"Compact",value:"compact"},{text:"Default",value:"default"},{text:"Large",value:"large"}],category:["BV Node Pack","Appearance","Interface size"],tooltip:"Scale every BV-owned interface consistently. Default is the comfortable size; Compact matches the former standard.",onChange:e=>Vv(e)},{id:Fv,name:"Reduce BV Interface Effects",type:"boolean",defaultValue:!1,category:["BV Node Pack","Appearance","Reduced effects"],tooltip:"Disable BV animations, transitions, blur and visual filters without changing ComfyUI's canvas.",onChange:e=>Wv(e)},{id:wf,name:"BV Window Switch Mode",type:"combo",defaultValue:"keep",options:[{text:"Keep current window",value:"keep"},{text:"Replace current window",value:"replace"}],category:["BV Node Pack","Appearance","Window switching"],tooltip:"Choose whether changing the node in a BV editor minimizes or closes the current window. Hold Shift to invert the mode once.",onChange:e=>kf(e,!1)},{id:Bx,name:"Enable BV Debug Bridge",type:"boolean",defaultValue:!1,category:["BV Node Pack","Developer","Enable Debug Bridge"],tooltip:"Expose the current API-format workflow as an in-memory snapshot to loopback clients only.",onChange:e=>{Px(!!e).then(()=>{e&&Ss()}).catch(t=>console.error(t))}},{id:Bm,name:"Enable BV Prompt Autocomplete",type:"boolean",defaultValue:!0,category:["BV Node Pack","Prompting","Enable autocomplete"],tooltip:"Enable BV-owned prompt completion. Disable this when another autocomplete extension should control prompt fields.",onChange:e=>Xm(!!e)},{id:zm,name:"Autocomplete Popup Position",type:"combo",defaultValue:"caret",options:[{text:"At Caret",value:"caret"},{text:"Below Text Field",value:"field"}],category:["BV Node Pack","Prompting","Popup position"],tooltip:"Open suggestions at the active caret or below the complete text field.",onChange:e=>$m(e)},{id:Pm,name:"Completion Datasets",type:cE,defaultValue:"",category:["BV Node Pack","Prompting","Completion datasets"],tooltip:"Choose one or more local CSV/TSV datasets for BV Prompt Autocomplete.",onChange:e=>Jm(e)}],commands:[{id:"bv.regional.openEditor",label:"Open BV Regional Editor",icon:"icon-[lucide--layers]",function:()=>{window.dispatchEvent(new CustomEvent(Xn))}},{id:"bv.debugBridge.publishSnapshot",label:"Refresh BV Debug Bridge Snapshot",icon:"icon-[lucide--radio-tower]",function:()=>zx().catch(e=>console.error(e))}],actionBarButtons:[{icon:"icon-[lucide--sliders-horizontal]",class:"bv-regional-action bv-regional-action-control",tooltip:"Open BV Control Center",onClick:()=>window.dispatchEvent(new Event(hd))},{icon:"icon-[lucide--scan-search]",class:"bv-regional-action bv-regional-action-editor",tooltip:"Open last BV editor",onClick:nT},{icon:"icon-[lucide--layers]",class:"bv-regional-action bv-regional-action-quick",tooltip:"Quick edit BV Regional prompts",onClick:()=>window.dispatchEvent(new CustomEvent(Qi))},{icon:"icon-[lucide--chevron-down]",class:"bv-regional-action bv-regional-action-menu",tooltip:"Choose BV window",onClick:()=>window.dispatchEvent(new CustomEvent(ss))}],beforeRegisterNodeDef(e,t){if(UE(e,t)||tE(e,t))return;if(["BV Control Center","BV Regional Prompt","BV Regional Detailer Plan","BV Detector Registry","BV Smart Pipe","BV Smart Pipe Merge"].includes(t.name)){const i=e.prototype.onNodeCreated,a=e.prototype.onRemoved;e.prototype.onNodeCreated=function(){const l=i?.apply(this,arguments);return t.name!=="BV Control Center"&&(this.properties??(this.properties={}),typeof this.properties.bvWindowMenuVisible!="boolean"&&(this.properties.bvWindowMenuVisible=!["BV Smart Pipe","BV Smart Pipe Merge"].includes(t.name))),queueMicrotask(Gn),l},e.prototype.onRemoved=function(){const l=a?.apply(this,arguments);return queueMicrotask(Gn),l}}if(kE.has(t.name)){const i=e.prototype.onNodeCreated,a=e.prototype.onConfigure;e.prototype.onNodeCreated=function(){const l=i?.apply(this,arguments);return queueMicrotask(()=>Jh(this,t.name)),l},e.prototype.onConfigure=function(l){const c=a?.call(this,l);return queueMicrotask(()=>Jh(this,t.name)),c}}if(t.name==="BV Detector Registry"){const i=u=>{const d=u.widgets?.find(g=>g.name==="config_json");if(!d)return;Br(d);let f=u.widgets?.find(g=>g.name==="configure_detector_registry");f||(f=u.addWidget("button","configure_detector_registry",null,()=>{_r("detector",Ne(u)),yE(wr,d.value,g=>{d.value=g,i(u),u.graph?.setDirtyCanvas?.(!0,!0)},`detector-registry:${Ne(u)}`,Ct("BV Detector Registry").filter(vn).map(g=>({id:Ne(g),label:`${g.title||"BV Detector Registry"} · #${g.id}`})),(g,x)=>{const w=Ct("BV Detector Registry").find(b=>Ne(b)===g),k=w?.widgets?.find(b=>b.name==="configure_detector_registry");k&&_f(`detector-registry:${Ne(u)}`,`detector-registry:${Ne(w)}`,()=>k.callback?.(),x)},u).catch(g=>console.error(g))},{serialize:!1}),f.serialize=!1);const p=Zi(d.value).detectors.length;f.label=`Configure Detector Registry · ${p} Detector${p===1?"":"s"}`,u.setDirtyCanvas?.(!0,!0)},a=e.prototype.onNodeCreated,l=e.prototype.onConfigure,c=e.prototype.onConnectionsChange;e.prototype.onNodeCreated=function(){const u=a?.apply(this,arguments);return queueMicrotask(()=>{i(this),eu(this)}),u},e.prototype.onConfigure=function(){const u=l?.apply(this,arguments);return queueMicrotask(()=>{i(this),eu(this)}),u},e.prototype.onConnectionsChange=function(){const u=c?.apply(this,arguments);return queueMicrotask(()=>eu(this)),u};return}if(t.name==="BV Regional Detailer Plan"){const i=e.prototype.onNodeCreated,a=e.prototype.onConfigure,l=e.prototype.onConnectionsChange;e.prototype.onNodeCreated=function(){const c=i?.apply(this,arguments);return queueMicrotask(()=>Zh(this)),c},e.prototype.onConfigure=function(){const c=a?.apply(this,arguments);return queueMicrotask(()=>Zh(this)),c},e.prototype.onConnectionsChange=function(){const c=l?.apply(this,arguments);return queueMicrotask(()=>gd(this)),c};return}if(t.name==="BV Remote LLM Provider"){const i=e.prototype.onNodeCreated,a=e.prototype.onConfigure;e.prototype.onNodeCreated=function(){const l=i?.apply(this,arguments);return queueMicrotask(()=>Wh(this,wr)),l},e.prototype.onConfigure=function(l){Array.isArray(l?.widgets_values)&&l.widgets_values.length>=6&&/^[A-Za-z_][A-Za-z0-9_]*$/.test(String(l.widgets_values[3]??""))&&(l={...l,widgets_values:[...l.widgets_values.slice(0,3),...l.widgets_values.slice(4)]});const c=a?.call(this,l);return queueMicrotask(()=>Wh(this,wr)),c};return}if(t.name==="BV Named LoRA Stack"){const i=c=>{const u=c.widgets?.find(f=>f.name==="stack_id");if(!u)return;const d=String(u.value??"").trim();if(!d||Ok(String(c.id),d,bd())){const f=crypto.randomUUID();d&&(c.__bvLoraResourceIdRemap={[d]:f}),u.value=f,c.setDirtyCanvas?.(!0,!0)}Br(u)},a=e.prototype.onNodeCreated,l=e.prototype.onConfigure;e.prototype.onNodeCreated=function(){const c=a?.apply(this,arguments);return i(this),c},e.prototype.onConfigure=function(){const c=l?.apply(this,arguments);return queueMicrotask(()=>i(this)),c};return}if(t.name==="BV Regional Image Send"||t.name==="BV Regional Image Save"){const i=e.prototype.onNodeCreated,a=e.prototype.onConfigure;e.prototype.onNodeCreated=function(){const l=i?.apply(this,arguments);return queueMicrotask(()=>og(this,!0)),l},e.prototype.onConfigure=function(){const l=a?.apply(this,arguments);return queueMicrotask(()=>og(this,!1)),l};return}if(["BV Regional Select","BV Regional Deconstructor","BV Regional Detailer Mask"].includes(t.name)){const i=e.prototype.onNodeCreated,a=e.prototype.onConfigure,l=e.prototype.onConnectionsChange;e.prototype.onNodeCreated=function(){const u=i?.apply(this,arguments);return eg(this),u};const c=e.prototype.onSerialize;e.prototype.onConfigure=function(u){t.name==="BV Regional Detailer Mask"&&(rT(this),u?.widgets_values&&(u={...u,widgets_values:gE(u.widgets_values)}));const d=a?.call(this,u);return queueMicrotask(()=>eg(this)),d},e.prototype.onSerialize=function(u){const d=c?.apply(this,arguments);return t.name==="BV Regional Detailer Mask"&&(u.widgets_values=hE(this.widgets)),d},e.prototype.onConnectionsChange=function(){const u=l?.apply(this,arguments);return queueMicrotask(()=>Dl(this)),u};return}if(t.name!=="BV Regional Prompt")return;const r=e.prototype.onNodeCreated,o=e.prototype.onConfigure;e.prototype.onNodeCreated=function(){const i=r?.apply(this,arguments);ng(this,!0);const a=this.widgets?.find(u=>u.name==="regional_json"),l=this.widgets?.find(u=>u.name==="lora_bindings_json"),c=this.widgets?.find(u=>u.name==="lora_v3_config_json");if(l&&Br(l),c&&Ra(c),_s(this),a&&(Br(a),!a.__bvRegionalDocumentHooked)){a.__bvRegionalDocumentHooked=!0;const u=a.callback;a.callback=function(){const d=u?.apply(this,arguments);return window.dispatchEvent(new CustomEvent(_o)),d}}if(!this.widgets?.find(u=>u.name==="open_regional_editor")){const u=this.addWidget("button","open_regional_editor",null,()=>window.dispatchEvent(new CustomEvent(Xn,{detail:{node:this}})),{serialize:!1});u.label="Open Regional Editor",u.serialize=!1}if(!this.widgets?.find(u=>u.name==="quick_edit_regional_prompts")){const u=this.addWidget("button","quick_edit_regional_prompts",null,()=>window.dispatchEvent(new CustomEvent(Qi,{detail:{node:this}})),{serialize:!1});u.label="Quick Edit Prompts",u.serialize=!1}return this.setSize?.([Math.max(this.size?.[0]??0,220),this.computeSize?.()[1]??60]),window.dispatchEvent(new CustomEvent(_o)),i},e.prototype.onConfigure=function(){const i=o?.apply(this,arguments);ng(this,!1);const a=this.widgets?.find(c=>c.name==="lora_bindings_json"),l=this.widgets?.find(c=>c.name==="lora_v3_config_json");return a&&Br(a),l&&Ra(l),_s(this),window.dispatchEvent(new CustomEvent(_o)),i};const n=e.prototype.onRemoved;e.prototype.onRemoved=function(){const i=n?.apply(this,arguments);return window.dispatchEvent(new CustomEvent(_o)),i}},afterConfigureGraph(){Ss(),queueMicrotask(Gn)}}); + then enabling this option will gray out this tab`),r.addInherited("borderWidth","tabBorderWidth").setDescription("the width of this tab when shown in a border; -1 uses the border's default size"),r.addInherited("borderHeight","tabBorderHeight").setDescription("the height of this tab when shown in a border; -1 uses the border's default size"),r.addInherited("minWidth","tabMinWidth").setDescription("the minimum width (in px) of this tab"),r.addInherited("minHeight","tabMinHeight").setDescription("the minimum height (in px) of this tab"),r.addInherited("maxWidth","tabMaxWidth").setDescription("the maximum width (in px) of this tab"),r.addInherited("maxHeight","tabMaxHeight").setDescription("the maximum height (in px) of this tab"),r.addInherited("enableScrollbars","tabEnableScrollbars").setDescription("whether the tab will be hosted in a scrollable container"),r}},D(Et,"TYPE","tab"),D(Et,"attributeDefinitions",Et.createAttributeDefinitions()),Et),lo={width:"1em",height:"1em",display:"flex",alignItems:"center"},Nl=()=>s.jsxs("svg",{"aria-hidden":"true",focusable:"false",xmlns:"http://www.w3.org/2000/svg",style:lo,viewBox:"0 0 24 24",children:[s.jsx("path",{fill:"none",d:"M0 0h24v24H0z"}),s.jsx("path",{stroke:"var(--color-icon)",fill:"var(--color-icon)",d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"})]});Nl.displayName="CloseIcon";var Qv=()=>s.jsxs("svg",{"aria-hidden":"true",focusable:"false",xmlns:"http://www.w3.org/2000/svg",style:lo,viewBox:"0 0 24 24",fill:"var(--color-icon)",children:[s.jsx("path",{fill:"none",d:"M0 0h24v24H0z"}),s.jsx("path",{transform:"rotate(45 12 12)",d:"M16 9V4h1a1 1 0 000-2H7a1 1 0 000 2h1v5c0 1.66-1.34 3-3 3v2h5.97v7l1 1 1-1v-7H19v-2c-1.66 0-3-1.34-3-3z"})]});Qv.displayName="PinIcon";var em=()=>s.jsxs("svg",{"aria-hidden":"true",focusable:"false",xmlns:"http://www.w3.org/2000/svg",style:lo,viewBox:"0 0 24 24",fill:"var(--color-icon)",children:[s.jsx("path",{d:"M0 0h24v24H0z",fill:"none"}),s.jsx("path",{stroke:"var(--color-icon)",d:"M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z"})]});em.displayName="MaximizeIcon";var tm=()=>s.jsxs("svg",{"aria-hidden":"true",focusable:"false",xmlns:"http://www.w3.org/2000/svg",style:lo,viewBox:"0 0 24 24",fill:"var(--color-icon)",children:[s.jsx("path",{d:"M0 0h24v24H0z",fill:"none"}),s.jsx("path",{stroke:"var(--color-icon)",d:"M7 10l5 5 5-5z"})]});tm.displayName="OverflowIcon";var rm=()=>s.jsx("svg",{"aria-hidden":"true",focusable:"false",xmlns:"http://www.w3.org/2000/svg",style:{display:"block",width:10,height:10},preserveAspectRatio:"none",viewBox:"0 0 100 100",children:s.jsx("path",{fill:"var(--color-edge-icon)",stroke:"var(--color-edge-icon)",d:"M10 30 L90 30 l-40 40 Z"})});rm.displayName="EdgeIcon";var Qu=()=>s.jsxs("svg",{"aria-hidden":"true",focusable:"false",xmlns:"http://www.w3.org/2000/svg",style:lo,viewBox:"0 0 20 20",fill:"var(--color-icon)",children:[s.jsx("path",{d:"M11 3a1 1 0 100 2h2.586l-6.293 6.293a1 1 0 101.414 1.414L15 6.414V9a1 1 0 102 0V4a1 1 0 00-1-1h-5z"}),s.jsx("path",{d:"M5 5a2 2 0 00-2 2v8a2 2 0 002 2h8a2 2 0 002-2v-3a1 1 0 10-2 0v3H5V7h3a1 1 0 000-2H5z"})]});Qu.displayName="PopoutIcon";var om=()=>s.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 -960 960 960",style:lo,fill:"var(--color-icon)",children:s.jsx("path",{d:"M360-280q-33 0-56.5-23.5T280-360v-400q0-33 23.5-56.5T360-840h400q33 0 56.5 23.5T840-760v400q0 33-23.5 56.5T760-280H360Zm0-80h400v-400H360v400ZM200-200v80q-33 0-56.5-23.5T120-200h80Zm-80-80v-80h80v80h-80Zm0-160v-80h80v80h-80Zm0-160v-80h80v80h-80Zm160 480v-80h80v80h-80Zm160 0v-80h80v80h-80Zm160 0v-80h80v80h-80Z"})});om.displayName="PopoutFloatIcon";var nm=()=>s.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",style:lo,fill:"var(--color-icon)",children:s.jsx("path",{d:"M4 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm0 6a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm0 6a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm6-12a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm0 6a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm0 6a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm6-12a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm0 6a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm0 6a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"})});nm.displayName="GripIcon";var im=()=>s.jsxs("svg",{"aria-hidden":"true",focusable:"false",xmlns:"http://www.w3.org/2000/svg",style:lo,viewBox:"0 0 24 24",fill:"var(--color-icon)",children:[s.jsx("path",{d:"M0 0h24v24H0z",fill:"none"}),s.jsx("path",{stroke:"var(--color-icon)",d:"M5 16h3v3h2v-5H5v2zm3-8H5v2h5V5H8v3zm6 11h2v-3h3v-2h-5v5zm2-11V5h-2v5h5V8h-3z"})]});im.displayName="RestoreIcon";var am=()=>s.jsx("svg",{"aria-hidden":"true",focusable:"false",xmlns:"http://www.w3.org/2000/svg",style:lo,height:"24px",viewBox:"0 -960 960 960",width:"24px",children:s.jsx("path",{fill:"var(--color-icon)",stroke:"var(--color-icon)",d:"M440-120v-264L254-197l-57-57 187-186H120v-80h264L197-706l57-57 186 187v-264h80v264l186-187 57 57-187 186h264v80H576l187 186-57 57-186-187v264h-80Z"})});am.displayName="AsterickIcon";var lm=e=>{const{controller:t,show:r}=e;return s.jsx("div",{"aria-hidden":"true",className:t.getClassName(U.FLEXLAYOUT__LAYOUT_OVERLAY),style:{display:r?"flex":"none"}})};lm.displayName="Overlay";var Ae=function(e){return e.Close_Tab="Close",e.Pinned_Tab="Pinned",e.Rename_Tab="Rename tab",e.Close_Tabset="Close tab set",e.Active_Tabset="Active tab set",e.Move_Tabset="Move tab set",e.Move_Tabs="Move tabs (?)",e.Maximize="Maximize tab set",e.Restore="Restore tab set",e.Popout_Tab="Popout selected tab",e.Popout_Tab_Float="Float selected tab",e.Popout_Float_To_Window="Popout panel",e.Dock_Float_To_Layout="Drag into another layout",e.Dock_Float_Tabs="Dock tabs (?)",e.Overflow_Menu_Tooltip="Hidden tabs",e.Splitter="Resize",e.Error_rendering_component="Error rendering component",e.Error_rendering_component_retry="Retry",e.Menu_Rename="Rename",e.Menu_Pin="Pin",e.Menu_Unpin="Unpin",e.Menu_Popout="Popout",e.Menu_Float="Float",e.Menu_Popout_Tabset="Pop out tabset",e.Menu_Float_Tabset="Float tabset",e.Menu_Maximize="Maximize",e.Menu_Restore="Restore",e.Menu_Overlay="Overlay",e.Menu_Split="Split",e.Menu_Close_All="Close All",e.Menu_Close_Right="Close to the Right",e.Menu_Close_Others="Close Others",e}({}),_a=e=>{const{controller:t,tabNode:r}=e,o=t.getClassName,n=o(U.FLEXLAYOUT__TAB_BUTTON_STAMP),i=Tf(t,r),a=i.content?s.jsx("div",{className:o(U.FLEXLAYOUT__TAB_BUTTON_CONTENT),children:i.content}):r.getNameForOverflowMenu(),l=i.leading?s.jsx("div",{className:o(U.FLEXLAYOUT__TAB_BUTTON_LEADING),children:i.leading}):null;return s.jsxs("div",{className:n,title:r.getHelpText(),children:[l,a]})};_a.displayName="TabButtonStamp";var r1=500;function Zs(e){return typeof e.getBoundingClientRect=="function"}function sm(e){return e.container?e.container:Zs(e.anchor)?e.anchor.ownerDocument.body:document.body}function o1(e){if(Zs(e))return e.getBoundingClientRect();if("right"in e&&"bottom"in e)return e;const t=e;return new DOMRect(t.x,t.y,0,0)}function n1(e,t){const r=t,{left:o,right:n,top:i,bottom:a}=e,l={};return(o+n)/2{const{anchor:t,items:r,onSelect:o,onClose:n,renderItem:i,title:a}=e,l=e.classNameMapper??(b=>b),c=sm(e),u=m.useRef(null),d=m.useRef(null),f=m.useRef({buffer:"",timer:void 0});m.useEffect(()=>()=>{f.current.timer&&clearTimeout(f.current.timer)},[]);const p=m.useCallback(b=>{b.disabled||((b.onSelect??o)?.(b),n())},[o,n]);m.useEffect(()=>{(d.current?.querySelector('[role="menuitem"]:not([aria-disabled="true"])')??d.current)?.focus();const b=e.returnFocusTo??(Zs(t)?t:void 0);return()=>{b?.focus?.()}},[]),m.useEffect(()=>{const b=c.ownerDocument,h=v=>{u.current?.contains(v.target)||n()};return b.addEventListener("pointerdown",h),()=>b.removeEventListener("pointerdown",h)},[c,n]);const g=b=>{const h=Array.from(d.current?.querySelectorAll('[role="menuitem"]:not([aria-disabled="true"])')??[]),v=b.target.closest?.('[role="menuitem"]'),_=v?h.indexOf(v):-1;if(b.key==="Escape"||b.key==="Tab")n(),b.preventDefault();else if(b.key==="ArrowDown"||b.key==="ArrowUp")h.length>0&&h[(_+(b.key==="ArrowDown"?1:-1)+h.length)%h.length]?.focus(),b.preventDefault();else if(b.key==="Home"||b.key==="End")(b.key==="Home"?h[0]:h[h.length-1])?.focus(),b.preventDefault();else if(b.key.length===1&&b.key!==" "&&!b.ctrlKey&&!b.metaKey&&!b.altKey){const y=f.current;y.timer&&clearTimeout(y.timer),y.buffer+=b.key.toLowerCase(),y.timer=setTimeout(()=>{y.buffer=""},r1);const T=[...y.buffer].every(O=>O===y.buffer[0]),S=T?y.buffer[0]:y.buffer,P=T?_+1:Math.max(_,0);for(let O=0;O({select:()=>p(b),close:n}),w=b=>s.jsx("div",{className:l(U.FLEXLAYOUT__POPUP_MENU_ITEM)+(b.disabled?" "+l(U.FLEXLAYOUT__POPUP_MENU_ITEM__DISABLED):""),role:"menuitem",tabIndex:-1,"aria-disabled":b.disabled||void 0,onClick:h=>{p(b),h.stopPropagation()},children:b.content??s.jsxs(s.Fragment,{children:[b.icon,b.label]})},b.key),k=s.jsx("div",{ref:u,className:l(U.FLEXLAYOUT__POPUP_MENU_CONTAINER),style:n1(o1(t),c.getBoundingClientRect()),children:s.jsx("div",{ref:d,className:l(U.FLEXLAYOUT__POPUP_MENU),role:"menu","aria-label":a,tabIndex:0,onKeyDown:g,"data-layout-path":"/popup-menu",children:r.map((b,h)=>b.type==="divider"?s.jsx("div",{className:l(U.FLEXLAYOUT__POPUP_MENU_DIVIDER),role:"separator"},b.key):i?i(b,h,x(b)):w(b))})});return Vr.createPortal(k,c)};function i1(e){const t=sm(e),r=Zs(e.anchor)?e.anchor.getBoundingClientRect():e.anchor,o=t.ownerDocument.createElement("div");t.appendChild(o);const n=fi(o);let i=!1;const a=()=>{i||(i=!0,n.unmount(),o.remove(),e.onClose())};return n.render(s.jsx(cm,{...e,anchor:r,container:t,onClose:a})),a}function um(e,t,r,o,n,i){const a=n.getClassName,l=r.map(u=>({key:u.node.getId()}));n.showOverlayOnAllWindows(!0);const c=(u,d,f)=>{const p=r[d];let g=a(U.FLEXLAYOUT__POPUP_MENU_ITEM);return t.getSelected()===p.index&&(g+=" "+a(U.FLEXLAYOUT__POPUP_MENU_ITEM__SELECTED)),s.jsx("div",{className:g,role:"menuitem","aria-label":p.node.getNameForOverflowMenu(),tabIndex:-1,"data-layout-path":"/popup-menu/tb"+d,onClick:x=>{f.select(),x.stopPropagation()},draggable:!0,onDragStart:x=>{x.stopPropagation(),n.getDragDropManager().setDragNode(x.nativeEvent,p.node),setTimeout(()=>f.close(),0)},onDragEnd:()=>n.getDragDropManager().onDragEnded(),title:p.node.getHelpText(),children:s.jsx(_a,{tabNode:p.node,controller:n})},u.key)};return i1({anchor:e,container:n.getRootDiv()??void 0,classNameMapper:a,returnFocusTo:e,title:n.i18nName(Ae.Overflow_Menu_Tooltip),items:l,onSelect:u=>{const d=l.indexOf(u);d>=0&&o(r[d])},renderItem:c,onClose:()=>{n.showOverlayOnAllWindows(!1),i?.()}})}cm.displayName="PopupMenu";var dm=e=>{const{controller:t,tabNode:r,selected:o,path:n}=e,i=m.useRef(null),a=m.useRef(null),l=t.getIcons(),c=t.getKeyMap(),u=t.getEditingTab()===r,d=m.useCallback(F=>{i.current=F,t.registerMeasurable(r,"tabbutton",F)},[t,r]);m.useLayoutEffect(()=>{u&&a.current.select()},[u]),m.useEffect(()=>{if(u){const F=t.getCurrentDocument().body,ie=X=>{X.target!==a.current&&t.setEditingTab(void 0)};return F.addEventListener("pointerdown",ie),()=>F.removeEventListener("pointerdown",ie)}},[u,t]);const f=F=>{r.isEnableDrag()?(F.stopPropagation(),t.getDragDropManager().setDragNode(F.nativeEvent,r)):F.preventDefault()},p=F=>{t.getDragDropManager().onDragEnded()},g=F=>{ya(F)&&t.auxMouseClick(r,F)},x=F=>{t.showContextMenu(r,F)},w=()=>{r.isSelected()||t.doAction(re.selectTab(r.getId()))},k=F=>{const ie=i.current?.closest('[role="tablist"]');if(ie){const X=Array.from(ie.querySelectorAll('[role="tab"]'));X[X.indexOf(i.current)+F]?.focus()}},b=()=>{const F=i.current.ownerDocument,ie=()=>Gv(F.getElementById(Lt("flexlayout-tab-",r.getId())));o?ie():(w(),requestAnimationFrame(ie))},h=F=>{u||(to(F,c.focusTabToggle)?(b(),F.preventDefault()):F.key==="Enter"||F.key===" "?(o?b():w(),F.preventDefault()):(F.key==="ArrowLeft"||F.key==="ArrowUp")&&!xa(F)?(k(-1),F.preventDefault()):(F.key==="ArrowRight"||F.key==="ArrowDown")&&!xa(F)?(k(1),F.preventDefault()):to(F,c.closeTab)&&r.isCloseable()?(k(1),t.doAction(re.deleteTab(r.getId())),F.preventDefault()):to(F,c.renameTab)&&r.isEnableRename()&&(_(),F.preventDefault()))},v=F=>{r.isEnableRename()&&(_(),F.stopPropagation())},_=()=>{t.setEditingTab(r)},y=()=>{const F=r.getCloseType();return!!(o||F===Qo.Always||F===Qo.Visible&&window.matchMedia&&window.matchMedia("(hover: hover) and (pointer: fine)").matches)},T=F=>{y()&&(t.doAction(re.deleteTab(r.getId())),F.stopPropagation())},S=F=>{F.stopPropagation()},P=F=>{F.stopPropagation()},O=F=>{F.code==="Escape"?(t.setEditingTab(void 0),i.current?.focus()):(F.code==="Enter"||F.code==="NumpadEnter")&&(t.setEditingTab(void 0),t.doAction(re.renameTab(r.getId(),F.target.value)),i.current?.focus())},B=t.getClassName,j=r.getParent(),M=j.isEnableSingleTabStretch()&&j.getChildren().length===1,E=M?U.FLEXLAYOUT__TAB_BUTTON_STRETCH:U.FLEXLAYOUT__TAB_BUTTON;let z=B(E);z+=" "+B(E+"_"+j.getTabLocation()),M||(o?z+=" "+B(E+"--selected"):z+=" "+B(E+"--unselected")),r.isPinned()&&(z+=" "+B(E+"--pinned")),r.getClassName()!==void 0&&(z+=" "+r.getClassName());const L=Tf(t,r),R=o||j.getSelectedNode()===void 0&&j.getChildren()[0]===r,N=[No(c.focusTabToggle),r.isCloseable()?No(c.closeTab):void 0,r.isEnableRename()?No(c.renameTab):void 0].filter(Boolean).join(" ")||void 0;let A=L.content?s.jsx("div",{className:B(U.FLEXLAYOUT__TAB_BUTTON_CONTENT),children:L.content}):null;const W=L.leading?s.jsx("div",{className:B(U.FLEXLAYOUT__TAB_BUTTON_LEADING),children:L.leading}):null;if(u&&(A=s.jsx("input",{ref:a,className:B(U.FLEXLAYOUT__TAB_BUTTON_TEXTBOX),"data-layout-path":n+"/textbox",type:"text","aria-label":t.i18nName(Ae.Rename_Tab),autoFocus:!0,defaultValue:r.getName(),onKeyDown:O,onPointerDown:P})),r.isPinned()){const F=t.i18nName(Ae.Pinned_Tab);L.buttons.push(s.jsx("div",{"data-layout-path":n+"/button/pin",title:F,"aria-hidden":"true",className:B(U.FLEXLAYOUT__TAB_BUTTON_PIN),children:typeof l.pin=="function"?l.pin(r):l.pin},"pin"))}if(r.isCloseable()&&!M){const F=t.i18nName(Ae.Close_Tab);L.buttons.push(s.jsx("div",{"data-layout-path":n+"/button/close",title:F,"aria-hidden":"true",className:B(U.FLEXLAYOUT__TAB_BUTTON_TRAILING),onPointerDown:S,onClick:T,children:typeof l.close=="function"?l.close(r):l.close},"close"))}return s.jsxs("div",{ref:d,id:Lt("flexlayout-tabbutton-",r.getId()),role:u?void 0:"tab","aria-selected":u?void 0:o,"aria-controls":u?void 0:Lt("flexlayout-tab-",r.getId()),"aria-label":u?void 0:r.isPinned()?L.name+" ("+t.i18nName(Ae.Pinned_Tab)+")":L.name,"aria-keyshortcuts":u?void 0:N,tabIndex:u?-1:R?0:-1,onKeyDown:h,"data-layout-path":n,className:z,onClick:w,onAuxClick:g,onContextMenu:x,title:r.getHelpText(),draggable:!0,onDragStart:f,onDragEnd:p,onDoubleClick:v,children:[W,A,L.buttons]})};dm.displayName="TabButton";var fm=(e,t,r,o,n,i,a)=>{const[l,c]=m.useState([]),[u,d]=m.useState(!1),[f,p]=m.useState(!1),g=m.useRef(!1),x=m.useRef(void 0),w=m.useRef([]),k=m.useRef(0),b=m.useRef(!1);m.useEffect(()=>()=>{x.current!==void 0&&clearTimeout(x.current)},[]),m.useLayoutEffect(()=>{w.current=l});const h=m.useCallback(q=>{r===_e.HORZ?o.current.scrollLeft=q:o.current.scrollTop=q},[r,o]),v=m.useCallback(q=>r===_e.HORZ?q.scrollLeft:q.scrollTop,[r]),_=m.useCallback(q=>r===_e.HORZ?q.clientWidth:q.clientHeight,[r]),y=m.useCallback(q=>r===_e.HORZ?q.scrollWidth:q.scrollHeight,[r]),T=m.useCallback(q=>r===_e.HORZ?q.width:q.height,[r]),S=m.useCallback(q=>r===_e.HORZ?q.x:q.y,[r]),P=m.useCallback(q=>r===_e.HORZ?q.right:q.bottom,[r]),O=m.useCallback(()=>{const q=[];if(o.current){const Z=o.current,Y=Z.getBoundingClientRect(),Q=S(Y)-1,ne=P(Y)+1,le=Z.firstElementChild;let Ce=0;Array.from(le.children).forEach(Ee=>{const ve=Ee.getBoundingClientRect();Ee.classList.contains(a)&&((S(ve)ne)&&q.push(Ce),Ce++)})}return q},[a,o,S,P]),B=m.useCallback(()=>{if(o.current&&n.current){const q=o.current,Z=n.current,Y=_(q),Q=y(q),ne=v(q);if(Q>Y&&Q>0){let le=Y*Y/Q,Ce=0;le<20&&(Ce=20-le,le=20);const Ee=ne*(Y-Ce)/Q;r===_e.HORZ?(Z.style.width=le+"px",Z.style.left=Ee+"px"):(Z.style.height=le+"px",Z.style.top=Ee+"px"),Z.style.display="block"}else Z.style.display="none";r===_e.HORZ?Z.style.bottom="0px":Z.style.right="0px"}},[r,o,n,_,y,v]),j=m.useCallback((q=!1)=>{const Z=O(),Y=Z.length>0;Y!==u&&d(Y),q?c(Z):x.current===void 0&&(x.current=setTimeout(()=>{const Q=O();a1(Q,w.current)||c(Q),x.current=void 0},100))},[O,u]),M=m.useCallback(()=>{const q=t.getSelectedNode();if(q&&o.current){const Z=e.getBoundingClientRect(o.current),Y=o.current.ownerDocument.getElementById(Lt("flexlayout-tabbutton-",q.getId()));if(!Y)return;const Q=e.getBoundingClientRect(Y);let ne=S(Z)-S(Q);ne>0||T(Q)>T(Z)?(h(v(o.current)-ne),b.current=!0):(ne=P(Q)-P(Z),ne>0&&(h(v(o.current)+ne),b.current=!0))}},[t,e,o,S,P,T,v,h]),E=m.useCallback(()=>{if(o.current){const q=o.current;let Z=0;for(const Q of Array.from(q.children))Z+=_(Q);const Y=Z+(f?10:0)>_(o.current);Y!==f&&p(Y)}},[o,f,_]),z=m.useCallback(()=>{b.current||(g.current=!0),b.current=!1,B(),j()},[B,j]),L=m.useCallback((q,Z)=>{if(o.current&&n.current){const Y=o.current,Q=n.current,ne=_(Y),le=y(Y),Ce=_(Q),Ee=Y.getBoundingClientRect();let ve;if(r===_e.HORZ?ve=q-Ee.x-k.current:ve=Z-Ee.y-k.current,ve=Math.max(0,Math.min(le-Ce,ve)),ne>0){const jt=ve*le/ne;h(jt)}}},[o,n,r,_,y,h]),R=m.useCallback(()=>{},[]),N=m.useCallback(()=>{},[]),A=m.useCallback(q=>{q.stopPropagation(),n.current.setPointerCapture(q.pointerId);const Z=n.current.getBoundingClientRect();r===_e.HORZ?k.current=q.clientX-Z.x:k.current=q.clientY-Z.y,cs(q.currentTarget.ownerDocument,q,L,R,N)},[n,r,L,R,N]),W=m.useCallback(q=>{if(o.current){if(t.getChildren().length===0)return;let Z;if(Math.abs(q.deltaY)>0){Z=-q.deltaY,q.deltaMode===1&&(Z*=40);const Y=v(o.current)-Z,Q=y(o.current)-_(o.current);h(Math.max(0,Math.min(Q,Y))),q.stopPropagation()}}},[t,o,v,y,_,h]),F=m.useCallback(q=>{q.preventDefault()},[]),ie=t.getId(),X=t.getSelectedNode();return m.useLayoutEffect(()=>{o.current&&h(0)},[ie,o,h]),m.useLayoutEffect(()=>{g.current=!1},[X]),m.useLayoutEffect(()=>{E(),g.current===!1&&M(),B(),j(!0),requestAnimationFrame(()=>{j()})},[E,M,B,j,r,X]),m.useLayoutEffect(()=>{const q=o.current;if(!q)return;const Z=new q.ownerDocument.defaultView.ResizeObserver(()=>{g.current=!1,E(),M(),B(),j()});return Z.observe(q),()=>Z.disconnect()},[E,M,B,j,o]),m.useEffect(()=>{if(t instanceof Oe&&t.isEnableTabWrap())return;const q=i.current;return q?.addEventListener("wheel",F,{passive:!1}),()=>{q?.removeEventListener("wheel",F)}}),{userControlledPositionRef:g,onScroll:z,onScrollPointerDown:A,hiddenTabs:l,onMouseWheel:W,isDockStickyButtons:f,isShowHiddenTabs:u}};function a1(e,t){return e.length===t.length&&e.every((r,o)=>r===t[o])}var pm=e=>{const{tabsetNode:t,controller:r}=e,o=m.useRef(null),n=m.useRef(null),i=m.useRef(null),a=m.useRef(null),l=m.useRef(null),c=m.useRef(null),u=m.useRef(null),d=m.useRef(null),[f,p]=m.useState(!1),g=m.useRef(null),x=r.getIcons();m.useEffect(()=>()=>g.current?.(),[]);const{userControlledPositionRef:w,onScroll:k,onScrollPointerDown:b,hiddenTabs:h,onMouseWheel:v,isDockStickyButtons:_,isShowHiddenTabs:y}=fm(r,t,_e.HORZ,a,i,n,r.getClassName(U.FLEXLAYOUT__TAB_BUTTON)),T=m.useCallback($=>{o.current=$,r.registerMeasurable(t,"tabset",$)},[r,t]),S=m.useCallback($=>{n.current=$,r.registerMeasurable(t,"tabstrip",$)},[r,t]),P=m.useCallback($=>{l.current=$,r.registerMeasurable(t,"tabsetcontent",$)},[r,t]),O=$=>{const pe=r.getShowOverflowMenu(),fe=h.map(he=>({index:he,node:t.getChildren()[he]}));if(pe!==void 0)pe(t,$,fe,B);else{const he=u.current;p(!0),g.current=um(he,t,fe,B,r,()=>{p(!1),g.current=null})}$.stopPropagation()},B=$=>{r.doAction(re.selectTab($.node.getId())),w.current=!1},j=$=>{r.getEditingTab()?$.preventDefault():t.isEnableDrag()?($.stopPropagation(),r.getDragDropManager().setDragNode($.nativeEvent,t)):$.preventDefault()},M=$=>{!ya($)&&!t.isActive()&&r.doAction(re.setActiveTabset(t.getId(),r.getLayoutId()))},E=$=>{ya($)&&r.auxMouseClick(t,$)},z=$=>{r.showContextMenu(t,$)},L=$=>{$.stopPropagation()},R=$=>{t.canMaximize()&&r.maximize(t),$.stopPropagation()},N=$=>{r.doAction(re.deleteTabset(t.getId())),$.stopPropagation()},A=$=>{r.doAction(re.deleteTab(t.getChildren()[0].getId())),$.stopPropagation()},W=$=>{q!==void 0&&r.doAction(re.popoutTab(q.getId(),"window")),$.stopPropagation()},F=$=>{q!==void 0&&r.doAction(re.popoutTab(q.getId(),"float")),$.stopPropagation()},ie=$=>{t.canMaximize()&&r.maximize(t)},X=r.getClassName,q=t.getSelectedNode(),Z=t.getPath(),Y=()=>{const $=[];let pe=!1;if(t.isEnableTabStrip()){const fe=t.isEnableSingleTabStretch()&&t.getChildren().length===1;for(let he=0;he{let $,pe=[],fe=[];const he={leading:$,stickyButtons:pe,buttons:fe,overflowPosition:void 0};r.customizeTabSet(t,he),$=he.leading,pe=he.stickyButtons,fe=he.buttons;const ot=t.isEnableSingleTabStretch()&&t.getChildren().length===1;let nt=ot&&t.getChildren()[0].isCloseable()||t.isCloseable();nt=nt&&t.isEnableCloseButton(),he.overflowPosition===void 0&&(he.overflowPosition=pe.length);let ye;if(pe.length>0&&(!t.isEnableTabWrap()&&(_||ot)?fe=[...pe,...fe]:ye=s.jsx("div",{ref:d,onPointerDown:L,onDragStart:me=>{me.preventDefault()},className:X(U.FLEXLAYOUT__TAB_TOOLBAR_STICKY_BUTTONS_CONTAINER),children:pe},"sticky_buttons_container")),!t.isEnableTabWrap()&&y){const me=r.i18nName(Ae.Overflow_Menu_Tooltip);let we;if(typeof x.more=="function"){const Je=h.map(gt=>({index:gt,node:t.getChildren()[gt]}));we=x.more(t,Je)}else we=s.jsxs(s.Fragment,{children:[x.more,s.jsx("div",{className:X(U.FLEXLAYOUT__TAB_BUTTON_OVERFLOW_COUNT),children:h.length>0?h.length:""})]});fe.splice(Math.min(he.overflowPosition,fe.length),0,s.jsx("button",{tabIndex:0,"data-layout-path":Z+"/button/overflow","aria-haspopup":"menu","aria-expanded":f,"aria-label":me,ref:u,className:X(U.FLEXLAYOUT__TAB_TOOLBAR_BUTTON)+" "+X(U.FLEXLAYOUT__TAB_BUTTON_OVERFLOW),title:me,onClick:O,onPointerDown:L,children:we},"overflowbutton"))}if(q!==void 0&&!q.isPinned()){if(q.isEnablePopoutFloatIcon()){const me=r.i18nName(Ae.Popout_Tab_Float);fe.push(s.jsx("button",{tabIndex:0,"data-layout-path":Z+"/button/popout-float",title:me,"aria-label":me,className:X(U.FLEXLAYOUT__TAB_TOOLBAR_BUTTON)+" "+X(U.FLEXLAYOUT__TAB_TOOLBAR_BUTTON_FLOAT),onClick:F,onPointerDown:L,children:typeof x.popoutFloat=="function"?x.popoutFloat(q):x.popoutFloat},"popout-float"))}if(r.isSupportsPopout()&&q.isAllowedInWindow()&&q.isEnablePopoutIcon()){const me=r.i18nName(Ae.Popout_Tab);fe.push(s.jsx("button",{tabIndex:0,"data-layout-path":Z+"/button/popout",title:me,"aria-label":me,className:X(U.FLEXLAYOUT__TAB_TOOLBAR_BUTTON)+" "+X(U.FLEXLAYOUT__TAB_TOOLBAR_BUTTON_FLOAT),onClick:W,onPointerDown:L,children:typeof x.popout=="function"?x.popout(q):x.popout},"popout"))}}if(t.canMaximize()){const me=r.i18nName(Ae.Restore),we=r.i18nName(Ae.Maximize);fe.push(s.jsx("button",{tabIndex:0,"data-layout-path":Z+"/button/max",title:t.isMaximized()?me:we,"aria-label":t.isMaximized()?me:we,"aria-pressed":t.isMaximized(),className:X(U.FLEXLAYOUT__TAB_TOOLBAR_BUTTON)+" "+X(U.FLEXLAYOUT__TAB_TOOLBAR_BUTTON_+(t.isMaximized()?"max":"min")),onClick:R,onPointerDown:L,children:t.isMaximized()?typeof x.restore=="function"?x.restore(t):x.restore:typeof x.maximize=="function"?x.maximize(t):x.maximize},"max"))}if(!t.isMaximized()&&nt){const me=ot?r.i18nName(Ae.Close_Tab):r.i18nName(Ae.Close_Tabset);fe.push(s.jsx("button",{tabIndex:0,"data-layout-path":Z+"/button/close",title:me,"aria-label":me,className:X(U.FLEXLAYOUT__TAB_TOOLBAR_BUTTON)+" "+X(U.FLEXLAYOUT__TAB_TOOLBAR_BUTTON_CLOSE),onClick:ot?A:N,onPointerDown:L,children:typeof x.closeTabset=="function"?x.closeTabset(t):x.closeTabset},"close"))}if(t.isActive()&&t.isEnableActiveIcon()){const me=r.i18nName(Ae.Active_Tabset);fe.push(s.jsx("div",{"data-layout-path":Z+"/button/active",title:me,"aria-hidden":"true",className:X(U.FLEXLAYOUT__TAB_TOOLBAR_ICON),children:typeof x.activeTabset=="function"?x.activeTabset(t):x.activeTabset},"active"))}const We=s.jsx("div",{ref:c,className:X(U.FLEXLAYOUT__TAB_TOOLBAR),onPointerDown:L,onDragStart:me=>{me.preventDefault()},children:fe},"buttonbar");return{leading:$,buttonbar:We,stickyBar:ye}},ne=($,pe,fe,he)=>{let ot;const nt=r.getKeyMap(),ye=[No(nt.focusNextTabset),No(nt.focusPreviousTabset)].filter(Boolean).join(" ")||void 0,We=r.getEditingTab()?.getParent()===t,me=We?void 0:"tablist";let we=X(U.FLEXLAYOUT__TABSET_TABBAR_OUTER);t.getClassNameTabStrip()!==void 0&&(we+=" "+t.getClassNameTabStrip()),we+=" "+U.FLEXLAYOUT__TABSET_TABBAR_OUTER_+t.getTabLocation(),t.isActive()&&(we+=" "+X(U.FLEXLAYOUT__TABSET_SELECTED)),t.isMaximized()&&(we+=" "+X(U.FLEXLAYOUT__TABSET_MAXIMIZED));const Je=t.isEnableSingleTabStretch()&&t.getChildren().length===1;if(Je){const Lr=t.getChildren()[0];Lr.getTabSetClassName()!==void 0&&(we+=" "+Lr.getTabSetClassName())}let gt;if(pe&&(gt=s.jsx("div",{className:X(U.FLEXLAYOUT__TABSET_LEADING),children:pe})),t.isEnableTabWrap())t.isEnableTabStrip()&&(ot=s.jsxs("div",{className:we,style:{flexWrap:"wrap",gap:"1px",marginTop:"2px"},ref:S,"data-layout-path":Z+"/tabstrip",onPointerDown:M,onDoubleClick:ie,onContextMenu:z,onClick:E,onAuxClick:E,draggable:!0,onDragStart:j,children:[gt,s.jsx("div",{role:me,"aria-orientation":We?void 0:"horizontal","aria-label":We?void 0:t.getName(),"aria-keyshortcuts":We?void 0:ye,style:{display:"contents"},children:$}),he,s.jsx("div",{style:{flexGrow:1,display:"flex",justifyContent:"flex-end"},children:fe})]}));else if(t.isEnableTabStrip()){let Lr;t.isEnableTabScrollbar()&&(Lr=s.jsx("div",{ref:i,"aria-hidden":"true",className:X(U.FLEXLAYOUT__MINI_SCROLLBAR),onPointerDown:b})),ot=s.jsxs("div",{className:we,ref:S,"data-layout-path":Z+"/tabstrip",onPointerDown:M,onDoubleClick:ie,onContextMenu:z,onClick:E,onAuxClick:E,draggable:!0,onWheel:v,onDragStart:j,children:[gt,s.jsxs("div",{className:X(U.FLEXLAYOUT__MINI_SCROLLBAR_CONTAINER),children:[s.jsxs("div",{ref:a,className:X(U.FLEXLAYOUT__TABSET_TABBAR_INNER)+" "+X(U.FLEXLAYOUT__TABSET_TABBAR_INNER_+t.getTabLocation()),style:{overflowX:"auto",overflowY:"hidden"},onScroll:k,children:[s.jsx("div",{style:{width:Je?"100%":"none"},role:me,"aria-orientation":We?void 0:"horizontal","aria-label":We?void 0:t.getName(),"aria-keyshortcuts":We?void 0:ye,className:X(U.FLEXLAYOUT__TABSET_TABBAR_INNER_TAB_CONTAINER)+" "+X(U.FLEXLAYOUT__TABSET_TABBAR_INNER_TAB_CONTAINER_+t.getTabLocation()),children:$}),he]}),Lr]}),fe]})}return ot},le=$=>{let pe;if(t.getChildren().length===0){const he=r.getTabSetPlaceHolderCallback();he&&(pe=he(t))}let fe=s.jsx("div",{ref:P,className:X(U.FLEXLAYOUT__TABSET_CONTENT),children:pe});return t.getTabLocation()==="top"?fe=s.jsxs(s.Fragment,{children:[$,fe]}):fe=s.jsxs(s.Fragment,{children:[fe,$]}),fe},Ce=Y(),{leading:Ee,buttonbar:ve,stickyBar:jt}=Q(),G=le(ne(Ce,Ee,ve,jt)),ue={flexGrow:Math.max(1,t.getWeight()*1e3),minWidth:t.getMinWidth(),minHeight:t.getMinHeight(),maxWidth:t.getMaxWidth(),maxHeight:t.getMaxHeight()};t.getModel().getMaximizedTabset(r.getLayoutId())!==void 0&&!t.isMaximized()&&(ue.display="none");const se=s.jsx("div",{ref:T,className:X(U.FLEXLAYOUT__TABSET_CONTAINER),style:ue,children:s.jsx("div",{className:X(U.FLEXLAYOUT__TABSET),"data-layout-path":Z,children:G})});return t.isMaximized()&&r.getMainElement()?Vr.createPortal(s.jsx("div",{style:{position:"absolute",display:"flex",top:0,left:0,bottom:0,right:0},children:se}),r.getMainElement()):se};pm.displayName="TabSet";var qi=e=>{const{controller:t,node:r,index:o,horizontal:n}=e,i=m.useRef(null),a=m.useRef(null),l=m.useRef([]),c=m.useRef(void 0),u=m.useRef(void 0),d=m.useRef(0),f=m.useRef(0),p=m.useRef({initialSizes:[],sum:0,startPosition:0}),g=m.useCallback(M=>{M.preventDefault(),M.stopImmediatePropagation()},[]);m.useEffect(()=>{const M=i.current,E=a.current;return M?.addEventListener("touchstart",g,{passive:!1}),E?.addEventListener("touchstart",g,{passive:!1}),()=>{M?.removeEventListener("touchstart",g),E?.removeEventListener("touchstart",g)}},[g]);const x=M=>{M.stopPropagation(),r instanceof Ue&&(p.current=r.getSplitterInitials(o)),Sl(!1,t.getCurrentDocument()),cs(M.currentTarget.ownerDocument,M,b,h,k),l.current=r instanceof Ke?r.getSplitterBounds(!0):r.getSplitterBounds(o);const E=t.getRootDiv();c.current=t.getCurrentDocument().createElement("div"),c.current.style.flexDirection=n?"row":"column",c.current.className=t.getClassName(U.FLEXLAYOUT__SPLITTER_DRAG)+(r instanceof Ke?" "+t.getClassName(U.FLEXLAYOUT__SPLITTER_BORDER):""),c.current.style.cursor=r.getOrientation()===_e.VERT?"ns-resize":"ew-resize",u.current=t.getCurrentDocument().createElement("div"),u.current.className=y(U.FLEXLAYOUT__SPLITTER_HANDLE)+" "+y(n?U.FLEXLAYOUT__SPLITTER_HANDLE_HORZ:U.FLEXLAYOUT__SPLITTER_HANDLE_VERT),c.current.appendChild(u.current);const z=i.current.getBoundingClientRect(),L=new ge(z.x-t.getDomRect().x,z.y-t.getDomRect().y,z.width,z.height);d.current=M.clientX-z.x,f.current=M.clientY-z.y,L.positionElement(c.current),E&&E.appendChild(c.current)},w=M=>{if(xa(M))return;let E=0;if(n?(M.key==="ArrowLeft"&&(E=-10),M.key==="ArrowRight"&&(E=10)):(M.key==="ArrowUp"&&(E=-10),M.key==="ArrowDown"&&(E=10)),E!==0)if(M.preventDefault(),r instanceof Ke){const z=r.getLocation(),L=z===ee.BOTTOM||z===ee.RIGHT?-E:E,R=Math.max(r.getMinSize(),Math.min(r.getMaxSize(),r.getSize()+L));t.doAction(re.adjustBorderSplit(r.getId(),R))}else{const z=r.getSplitterInitials(o);if(z.sum<=0)return;const L=r.getSplitterBounds(o),R=Math.max(L[0],Math.min(L[1],z.startPosition+E)),N=r.calculateSplit(o,R,z.initialSizes,z.sum,z.startPosition);t.doAction(re.adjustWeights(r.getId(),N))}},k=()=>{const M=t.getRootDiv();M&&c.current&&M.removeChild(c.current),c.current=void 0,Sl(!0,t.getCurrentDocument())},b=(M,E)=>{if(c.current){const z=t.getDomRect();if(!z)return;r.getOrientation()===_e.VERT?c.current.style.top=_(E-z.y-f.current)+"px":c.current.style.left=_(M-z.x-d.current)+"px",t.isRealtimeResize()&&v(!0)}},h=()=>{if(c.current){v(!1);const M=t.getRootDiv();M&&c.current&&M.removeChild(c.current),c.current=void 0}Sl(!0,t.getCurrentDocument())},v=M=>{(()=>{if(c.current){let z;if(r.getOrientation()===_e.VERT?z=c.current.offsetTop:z=c.current.offsetLeft,r instanceof Ke){const L=r.calculateSplit(r,z);t.doAction(re.adjustBorderSplit(r.getId(),L).setAdjusting(M))}else{const L=p.current;if(L.sum<=0)return;const R=r.calculateSplit(o,z,L.initialSizes,L.sum,L.startPosition);t.doAction(re.adjustWeights(r.getId(),R).setAdjusting(M))}}})()},_=M=>{const E=l.current;let z=M;return ME[1]&&(z=E[1]),z},y=t.getClassName,T={cursor:n?"ew-resize":"ns-resize",flexDirection:n?"column":"row"};let S=y(U.FLEXLAYOUT__SPLITTER)+" "+y(U.FLEXLAYOUT__SPLITTER_+r.getOrientation().getName());r instanceof Ke?S+=" "+y(U.FLEXLAYOUT__SPLITTER_BORDER):r.getModel().getMaximizedTabset(t.getLayoutId())!==void 0&&(T.display="none"),Xv()||(T["--splitter-active-size"]="30px");let P,O,B,j;if(r instanceof Ue){const M=r.getRect(),E=r.getChildren()[o-1],z=n?M.width:M.height;if(E&&z>0){const L=E.getRect();P=Math.round((n?L.getRight()-M.x:L.getBottom()-M.y)/z*100),O=0,B=100,j=P+"%"}}else P=Math.round(r.getSize()),O=Math.round(r.getMinSize()),B=Math.round(r.getMaxSize()),j=P+"px";return s.jsx("div",{className:S,style:T,ref:i,role:"separator","aria-label":t.i18nName(Ae.Splitter),"aria-orientation":n?"vertical":"horizontal","aria-valuenow":P,"aria-valuemin":O,"aria-valuemax":B,"aria-valuetext":j,tabIndex:0,onKeyDown:w,"data-layout-path":r.getPath()+"/s"+(o-1),onPointerDown:x,children:s.jsx("div",{className:y(U.FLEXLAYOUT__SPLITTER_HANDLE)+" "+y(n?U.FLEXLAYOUT__SPLITTER_HANDLE_HORZ:U.FLEXLAYOUT__SPLITTER_HANDLE_VERT)})})};qi.displayName="Splitter";var Rf=e=>{const{controller:t,rowNode:r}=e,o=m.useRef(null),n=r.getOrientation()===_e.HORZ,i=m.useCallback(u=>{o.current=u,t.registerMeasurable(r,"row",u)},[t,r]),a=[];let l=0;for(const u of r.getChildren())l>0&&a.push(s.jsx(qi,{controller:t,node:r,index:l,horizontal:n},"splitter"+l)),u instanceof Ue?a.push(s.jsx(Rf,{controller:t,rowNode:u},u.getId())):u instanceof Oe&&a.push(s.jsx(pm,{controller:t,tabsetNode:u},u.getId())),l++;const c={flexGrow:Math.max(1,r.getWeight()*1e3),minWidth:r.getMinWidth(),minHeight:r.getMinHeight(),maxWidth:r.getMaxWidth(),maxHeight:r.getMaxHeight()};return n?c.flexDirection="row":c.flexDirection="column",s.jsx("div",{ref:i,className:t.getClassName(U.FLEXLAYOUT__ROW),style:c,children:a})};Rf.displayName="Row";var hm=e=>{const{controller:t,selected:r,tabNode:o}=e,n=m.useRef(null),i=m.useRef(!0),a=m.useCallback(()=>{const g=o.getParent();g instanceof Oe&&(g.isActive()||t.doAction(re.setActiveTabset(g.getId(),t.getLayoutId())))},[o,t]),l=o.getParent(),c=t.getKeyMap().focusTabToggle,u=g=>{if(to(g,c)){const x=g.currentTarget.ownerDocument.getElementById(Lt("flexlayout-tabbutton-",o.getId()));x&&(x.focus(),g.preventDefault(),g.stopPropagation())}};m.useLayoutEffect(()=>{const g=o.getMoveableElement(),x=n.current.ownerDocument,w=g.ownerDocument!==x;w&&x.adoptNode(g),g.parentElement!==n.current&&n.current.appendChild(g),w&&t.redrawLayoutAndTabContent();const k=()=>{o.saveScrollPosition()};g.addEventListener("scroll",k);const b=n.current;return b&&b.addEventListener("pointerdown",a),()=>{b&&b.removeEventListener("pointerdown",a),g.removeEventListener("scroll",k),g.isConnected||(t.getModel().getNodeById(o.getId())&&(o.isEnableWindowReMount()||t.getMainController()?.getMoveablesHome()?.appendChild(g)),o.setVisible(!1))}},[o,t,a]),m.useEffect(()=>{o.isSelected()&&i.current&&(o.restoreScrollPosition(),i.current=!1)}),m.useLayoutEffect(()=>(t.registerTabPanel(o,n.current),()=>{t.registerTabPanel(o,null)}),[t,o]);const d=t.getClassName;let f=null;if(r&&document.hidden&&o.isEnablePopoutOverlay()){const g={};l.getContentRect().styleWithPosition(g);let x=d(U.FLEXLAYOUT__TAB_OVERLAY);l instanceof Ke&&l.isOverlay()&&(x+=" "+d(U.FLEXLAYOUT__TAB_OVERLAY_RAISED)),f=s.jsx("div",{style:g,className:x})}let p=d(U.FLEXLAYOUT__TAB);return l instanceof Ke&&(p+=" "+d(U.FLEXLAYOUT__TAB_BORDER),p+=" "+d(U.FLEXLAYOUT__TAB_BORDER_+l.getLocation().getName()),l.isOverlay()&&(p+=" "+d(U.FLEXLAYOUT__TAB_BORDER_OVERLAY))),o.getContentClassName()!==void 0&&(p+=" "+o.getContentClassName()),s.jsxs(s.Fragment,{children:[f,s.jsx("div",{ref:n,id:Lt("flexlayout-tab-",o.getId()),role:"tabpanel","aria-labelledby":Lt("flexlayout-tabbutton-",o.getId()),"aria-keyshortcuts":No(c),tabIndex:-1,onKeyDown:c?u:void 0,className:p,"data-layout-path":o.getPath()})]})};hm.displayName="Tab";var l1=class extends m.Component{constructor(t){super(t);D(this,"retry",()=>{this.setState({hasError:!1})});this.state={hasError:!1}}static getDerivedStateFromError(t){return{hasError:!0}}componentDidCatch(t,r){console.debug(t),console.debug(r)}render(){return this.state.hasError?s.jsx("div",{className:U.FLEXLAYOUT__ERROR_BOUNDARY_CONTAINER,children:s.jsx("div",{role:"alert",className:U.FLEXLAYOUT__ERROR_BOUNDARY_CONTENT,children:s.jsxs("div",{style:{display:"flex",flexDirection:"column",alignItems:"center"},children:[this.props.message,s.jsx("p",{children:s.jsx("button",{tabIndex:0,onClick:this.retry,children:this.props.retryText})})]})})}):this.props.children}},gm=m.memo(({controller:e,tabNode:t})=>{gm.displayName="TabContentRenderer";let r;if(t.getComponent())r=e.getFactory()(t);else if(t.getSubLayoutId()){const o=t.getModel().getLayouts().get(t.getSubLayoutId());r=s.jsxs("div",{className:e.getClassName(U.FLEXLAYOUT__TAB_LAYOUT_CONTAINER),children:[s.jsx(wa,{...e.getProps(),layoutId:t.getSubLayoutId(),path:t.getPath()+o.getPath(),mainLayoutController:e.getMainController()}),";"]})}return s.jsx(l1,{message:e.i18nName(Ae.Error_rendering_component),retryText:e.i18nName(Ae.Error_rendering_component_retry),children:r})},s1);function s1(e,t){return!(t.visible&&(e.windowId!==t.windowId||e.fullRedrawRevision!==t.fullRedrawRevision||e.parentRedrawRevision!==t.parentRedrawRevision||e.tabNode!==t.tabNode||t.tabNode.getSubLayoutId()!==void 0))}var Te,c1=(Te=class{constructor(t){D(this,"_controller");D(this,"_dragEnterCount",0);D(this,"_dragging",!1);D(this,"_active",!1);D(this,"_dropInfo");D(this,"_outlineDiv");D(this,"_mainController");D(this,"setDragNode",(t,r)=>{if(Te.dragState=new sl(this._controller.getMainController(),"internal",r,void 0,void 0),t.dataTransfer.setData("text/plain","--flexlayout--"),t.dataTransfer.effectAllowed="copyMove",t.dataTransfer.dropEffect="move",this._dragEnterCount=0,this._controller.getModel().sortLayouts(),r instanceof Oe){let o=!1,n=this._controller.i18nName(Ae.Move_Tabset);if(r.getChildren().length>0&&(n=this._controller.i18nName(Ae.Move_Tabs).replace("?",String(r.getChildren().length))),this._controller.getProps().onRenderDragRect){const i=this._controller.getProps().onRenderDragRect(n,r,void 0);i&&(this.setDragComponent(t,i,10,10),o=!0)}o||this.setDragComponent(t,n,10,10)}else{const o=t.target;if(o&&typeof o.getBoundingClientRect=="function"){const n=o.getBoundingClientRect(),i=t.clientX-n.left,a=t.clientY-n.top,l=r?.getParent(),c=l instanceof Ke&&l.getOrientation()===_e.HORZ,u=c?10:i,d=c?10:a;let f=!1;if(this._controller.getProps().onRenderDragRect){const p=s.jsx(_a,{controller:this._controller,tabNode:r},r.getId()),g=this._controller.getProps().onRenderDragRect(p,r,void 0);g&&(this.setDragComponent(t,g,u,d),f=!0)}f||(e1()?this.setDragComponent(t,s.jsx(_a,{tabNode:r,controller:this._controller}),u,d):t.dataTransfer.setDragImage(r.getTabStamp(),u,d))}}});D(this,"onDragEnterRaw",t=>{this._dragEnterCount++,this.updateActive(t)});D(this,"onDragLeaveRaw",t=>{this._dragEnterCount--,this.updateActive(t)});D(this,"onDragEnter",t=>{if(!Te.dragState&&this._controller.getProps().onExternalDrag){const r=this._controller.getProps().onExternalDrag(t);if(r){const o=Le.fromJson(r.json,this._controller.getModel(),!1);Te.dragState=new sl(this._controller.getMainController(),"external",o,r.json,r.onDrop)}}if(this._mainController===Te.dragState?.mainLayoutController&&!(Te.dragState?.dockFloatToMain&&!this.isDockTarget())&&Te.dragState){t.preventDefault(),this._dropInfo=void 0;const r=this._controller.getRootDiv(),o=this._controller.getCurrentDocument();this._outlineDiv=o.createElement("div"),this._outlineDiv.className=this._controller.getClassName(U.FLEXLAYOUT__OUTLINE_RECT),this._outlineDiv.style.visibility="hidden";const n=this._controller.getTabDragSpeed();this._outlineDiv.style.transition=`top ${n}s, left ${n}s, width ${n}s, height ${n}s`,r.appendChild(this._outlineDiv),this._dragging=!0,this._controller.showOverlayOnAllWindows(!0),this._controller.getModel().getMaximizedTabset(this._controller.getLayoutId())===void 0&&this._controller.setState({showEdges:this._controller.getModel().isEnableEdgeDock()});const i=this._controller.getRootDiv().getBoundingClientRect();new ge(t.clientX-i.left,t.clientY-i.top,1,1).positionElement(this._outlineDiv)}});D(this,"onDragOver",t=>{if(this._mainController===Te.dragState?.mainLayoutController&&!(Te.dragState?.dockFloatToMain&&!this.isDockTarget())&&this._active){if(Te.dragState?.dockFloatToMain){const i=t.target;if(i&&Te.dragState.sourceFloatElement?.contains(i)){this._dropInfo=void 0;return}}const r=this._controller.getRootDiv()?.getBoundingClientRect(),o={x:t.clientX-(r?.left??0),y:t.clientY-(r?.top??0)};Te.dragState.dockFloatToMain||this._controller.checkForBorderToShow(o.x,o.y);const n=this._controller.getModel().findDropTargetNode(this._controller.getLayoutId(),Te.dragState.dragNode,o.x,o.y,this.isExcludeCenter());if(n){if(Te.dragState.dockFloatToMain&&(n.location===ee.CENTER||!(n.node instanceof Oe)&&!(n.node instanceof Ue)))return;t.preventDefault(),this._dropInfo=n,this._outlineDiv&&(this._outlineDiv.className=this._controller.getClassName(n.className),n.rect.positionElement(this._outlineDiv),this._outlineDiv.style.visibility="visible")}}});D(this,"onDragLeave",t=>{if(this._mainController===Te.dragState?.mainLayoutController&&(this.clearDragLocalVisuals(),this._controller.isMainLayout())){let r=!1;for(const[,o]of this._controller.getModel().getLayouts())if(o.getController()&&o.getController().getDragDropManager().isDragging()){r=!0;break}r===!1&&this.clearDragMain()}});D(this,"onDrop",t=>{if(this._mainController===Te.dragState?.mainLayoutController&&!(Te.dragState?.dockFloatToMain&&!this.isDockTarget())){if(this._active){t.preventDefault();const r=Te.dragState;if(this._dropInfo&&r.dockFloatToMain){const o=t.target;o&&r.sourceFloatElement?.contains(o)&&(this._dropInfo=void 0)}if(this._dropInfo)if(r.dragJson!==void 0){const o=this._controller.doAction(re.addTab(r.dragJson,this._dropInfo.node.getId(),this._dropInfo.location,this._dropInfo.index));r.fnNewNodeDropped!==void 0&&r.fnNewNodeDropped(o,t)}else r.dragNode!==void 0&&(r.dockFloatToMain?this._controller.doAction(re.dockFloatToLayout(r.floatLayoutId,this._dropInfo.node.getId(),this._dropInfo.location,this._dropInfo.index)):this._controller.doAction(re.moveNode(r.dragNode.getId(),this._dropInfo.node.getId(),this._dropInfo.location,this._dropInfo.index)));this.clearDragMain(),Te.dragState=void 0}this._dragEnterCount=0}});this._controller=t,this._mainController=t.getMainController()}isDockTarget(){return this._controller.getLayout().getLayoutId()!==Te.dragState?.floatLayoutId}isExcludeCenter(){if(Te.dragState?.dockFloatToMain)return!0;const t=Te.dragState?.dragNode;return t instanceof Oe?!t.isEnableClose()||t.getPinnedRunLength()>0:!1}addTabWithDragAndDrop(t,r,o){const n=Le.fromJson(r,this._controller.getModel(),!1);Te.dragState=new sl(this._controller.getMainController(),"add",n,r,o)}onDragEnded(){this.clearDragMain(),Te.dragState=void 0}moveTabWithDragAndDrop(t,r){this.setDragNode(t,r)}startDockLayoutDrag(t,r,o){const n=r.getRootRow();Te.dragState=new sl(this._controller.getMainController(),"float",n,void 0,void 0,!0,r.getLayoutId(),o),t.dataTransfer.setData("text/plain","--flexlayout--"),t.dataTransfer.effectAllowed="copyMove",t.dataTransfer.dropEffect="move",this._dragEnterCount=0,this._controller.getModel().sortLayouts();let i=0;r.getRootRow()?.forEachNode(c=>{c instanceof Le&&i++},0);const a=this._controller.i18nName(Ae.Dock_Float_Tabs).replace("?",String(i));let l=!1;if(this._controller.getProps().onRenderDragRect){const c=this._controller.getProps().onRenderDragRect(a,n,void 0);c&&(this.setDragComponent(t,c,10,10),l=!0)}l||this.setDragComponent(t,a,10,10)}setDragComponent(t,r,o,n){const i=s.jsx("div",{style:{position:"unset"},className:this._controller.getClassName(U.FLEXLAYOUT__LAYOUT)+" "+this._controller.getClassName(U.FLEXLAYOUT__DRAG_RECT),children:r}),a=this._controller.getCurrentDocument(),l=a.createElement("div");l.setAttribute("data-layout-path","/drag-rectangle"),l.style.position="absolute",l.style.left="-10000px",l.style.top="-10000px",a.body.appendChild(l);const c=fi(l);Vr.flushSync(()=>c.render(i)),t.dataTransfer.setDragImage(l,o,n),setTimeout(()=>{c.unmount(),a.body.removeChild(l)},0)}updateActive(t){const r=Array.from(this._controller.getModel().getLayouts().values()),o=Te.dragState?.dockFloatToMain===!0;let n,i;for(let a=r.length-1;a>=0;a--){const l=r[a];if(o&&l.getLayoutId()===Te.dragState?.floatLayoutId)continue;const c=l.getController()?.getDragDropManager();c&&c.getDragEnterCount()>0&&(l.getType()==="tab"?i=l:!n&&!i&&(n=l))}if(i){const a=Kv(i);(n===a||!n)&&(n=i)}n&&n.getController().getDragDropManager().setActive(!0,t);for(const a of r)a!==n&&a.getController()?.getDragDropManager().setActive(!1,t)}setActive(t,r){this._active!==t&&(this._active=t,this._active?this.onDragEnter(r):this.onDragLeave(r))}clearDragMain(){this._controller.showOverlayOnAllWindows(!1);for(const[,t]of this._controller.getModel().getLayouts())t.getController()&&t.getController().getDragDropManager().clearDragLocal()}clearDragLocal(){this._dragEnterCount=0,this._active=!1,this.clearDragLocalVisuals()}clearDragLocalVisuals(){this._controller.setState({showEdges:!1}),this._dragging=!1,this._outlineDiv&&(this._controller.getRootDiv().removeChild(this._outlineDiv),this._outlineDiv=void 0)}getDragEnterCount(){return this._dragEnterCount}isDragging(){return this._dragging}},D(Te,"dragState"),Te),sl=class{constructor(e,t,r,o,n,i=!1,a=void 0,l=void 0){D(this,"mainLayoutController");D(this,"dragSource");D(this,"dragNode");D(this,"dragJson");D(this,"fnNewNodeDropped");D(this,"dockFloatToMain");D(this,"floatLayoutId");D(this,"sourceFloatElement");this.mainLayoutController=e,this.dragSource=t,this.dragNode=r,this.dragJson=o,this.fnNewNodeDropped=n,this.dockFloatToMain=i,this.floatLayoutId=a,this.sourceFloatElement=l}},bm=({controller:e})=>{const t=[],r=e.getIcons().edgeArrow;if(e.getState().showEdges&&e.getModel().isEnableEdgeDockIndicators()){const o=e.getModel().getRootRow(e.getLayoutId()).getRect(),n=100,i=10,a=100/2,l=e.getClassName(U.FLEXLAYOUT__EDGE_RECT),c=50;t.push(s.jsx("div",{"aria-hidden":"true",style:{top:0,left:o.width/2-a,width:n,height:i,borderBottomLeftRadius:c,borderBottomRightRadius:c},className:l+" "+e.getClassName(U.FLEXLAYOUT__EDGE_RECT_TOP),children:s.jsx("div",{style:{transform:"rotate(180deg)"},children:r})},"North")),t.push(s.jsx("div",{"aria-hidden":"true",style:{top:o.height/2-a,left:0,width:i,height:n,borderTopRightRadius:c,borderBottomRightRadius:c},className:l+" "+e.getClassName(U.FLEXLAYOUT__EDGE_RECT_LEFT),children:s.jsx("div",{style:{transform:"rotate(90deg)"},children:r})},"West")),t.push(s.jsx("div",{"aria-hidden":"true",style:{top:o.height-i,left:o.width/2-a,width:n,height:i,borderTopLeftRadius:c,borderTopRightRadius:c},className:l+" "+e.getClassName(U.FLEXLAYOUT__EDGE_RECT_BOTTOM),children:s.jsx("div",{children:r})},"South")),t.push(s.jsx("div",{"aria-hidden":"true",style:{top:o.height/2-a,left:o.width-i,width:i,height:n,borderTopLeftRadius:c,borderBottomLeftRadius:c},className:l+" "+e.getClassName(U.FLEXLAYOUT__EDGE_RECT_RIGHT),children:s.jsx("div",{style:{transform:"rotate(-90deg)"},children:r})},"East"))}return s.jsx(s.Fragment,{children:t})};bm.displayName="EdgeIndicators";var u1=2e3,d1=750,vm=e=>{const{title:t,controller:r,layout:o,url:n,onCloseLayout:i,children:a}=e,l=m.useRef(null),[c,u]=m.useState(void 0),[d,f]=m.useState(void 0),[p,g]=m.useState(void 0),x=m.useMemo(()=>new Map,[]),w=m.useRef(!1),k=m.useRef(null),b=m.useRef(null),h=m.useRef(new Map);if(m.useLayoutEffect(()=>{!w.current&&c&&(w.current=!0,r.redrawLayout(),g1(x))},[c,r,x]),m.useLayoutEffect(()=>{const v=()=>{if(l.current){const _=l.current;l.current=null,_.close()}};if(!l.current){const _=o.getLayoutId(),y=o.getRect();l.current=window.open(n,_,`left=${y.x},top=${y.y},width=${y.width},height=${y.height}`),l.current?(window.addEventListener("beforeunload",v),l.current.addEventListener("load",()=>{if(l.current){l.current.focus(),l.current.resizeTo(y.width,y.height),l.current.moveTo(y.x,y.y);const T=l.current;T.resizeBy(y.width-T.outerWidth,y.height-T.outerHeight),T.moveBy(y.x-T.screenLeft,y.y-T.screenTop);const S=l.current.document;f(l.current),g(S),S.title=t,document.documentElement.lang&&(S.documentElement.lang=document.documentElement.lang),document.documentElement.dir&&(S.documentElement.dir=document.documentElement.dir);const P=S.createElement("div");P.className=U.FLEXLAYOUT__FLOATING_WINDOW_CONTENT,S.body.appendChild(P),r.getProps().onPopoutOpen?.(o,l.current,S),h1(S,x).then(()=>{u(P)}),k.current=new MutationObserver(O=>f1(O,S,x)),k.current.observe(document.head,{childList:!0,subtree:!0,characterData:!0}),b.current=S.defaultView?.setInterval(()=>{b1(x,h.current)},d1)??null,l.current.addEventListener("beforeunload",()=>{l.current&&(r.getProps().onPopoutClose?.(o,l.current,S),i(o),l.current=null,k.current?.disconnect(),k.current=null,b.current!=null&&(S.defaultView?.clearInterval(b.current),b.current=null))})}})):(console.warn(`Unable to open window ${n}`),i(o))}return()=>{window.removeEventListener("beforeunload",v),l.current?.close(),l.current=null,k.current?.disconnect(),k.current=null,b.current!=null&&(b.current=null)}},[]),c!==void 0){const v=r.getProps().renderPopoutContent;let _=a;return v&&p&&(_=v({children:a,layout:o,popoutWindow:d??window,popoutDocument:p})),Vr.createPortal(_,c)}else return null};function f1(e,t,r){for(const o of e)if(o.type==="childList"&&o.target===document.head){for(const n of o.addedNodes)(n instanceof HTMLLinkElement||n instanceof HTMLStyleElement)&&mm(t,n,r);for(const n of o.removedNodes)if(n instanceof HTMLLinkElement||n instanceof HTMLStyleElement){const i=r.get(n);i&&(i.remove(),r.delete(n))}}else{const n=p1(o.target),i=n&&r.get(n);n&&i&&Qs(n,i)}}function p1(e){let t=e instanceof HTMLElement?e:e.parentNode;for(;t&&!(t instanceof HTMLStyleElement);)t=t.parentNode;return t instanceof HTMLStyleElement?t:void 0}function h1(e,t){const r=[],o=document.querySelectorAll('style, link[rel="stylesheet"]');for(const n of o)mm(e,n,t,r);return Promise.all(r)}function mm(e,t,r,o){if(t instanceof HTMLLinkElement){const n=t.cloneNode(!0);e.head.appendChild(n),r.set(t,n),o&&o.push(new Promise(i=>{let a=!1;const l=c=>{a||(a=!0,i(c))};n.onload=()=>l(!0),n.onerror=()=>l(!1),e.defaultView?.setTimeout(()=>l(!1),u1)}))}else if(t instanceof HTMLStyleElement)try{const n=t.cloneNode(!0);e.head.appendChild(n),Qs(t,n),r.set(t,n)}catch{}}function Qs(e,t){const r=e.textContent??"";if(r.trim()!=="")t.textContent=r;else try{t.textContent="";const o=e.sheet?.cssRules;if(o)for(const n of o)t.sheet.insertRule(n.cssText,t.sheet.cssRules.length)}catch{}}function g1(e){for(const[t,r]of e)t instanceof HTMLStyleElement&&Qs(t,r)}function b1(e,t){for(const[r,o]of e){if(!(r instanceof HTMLStyleElement)||(r.textContent??"").trim()!=="")continue;let n=0;try{n=r.sheet?.cssRules.length??0}catch{}n!==t.get(r)&&(t.set(r,n),Qs(r,o))}}vm.displayName="PopoutWindow";var co=10,Or=-4,ir=8,kn=12,Eh=12,v1=150,m1=25,x1=e=>{const{controller:t,layout:r,children:o}=e,[n,i]=m.useState(r.getRect()),a=m.useRef(ge.empty()),l=t.getClassName,c=m.useRef(null),u=m.useRef(null),d=m.useRef(null),f=m.useRef(null),p=m.useRef(null),g=m.useRef(null),x=m.useRef(null),w=m.useRef(null),k=m.useRef(null),b=m.useRef(null),h=m.useRef(!1),v=m.useRef(void 0);m.useEffect(()=>{a.current=n},[n]),m.useEffect(()=>{requestAnimationFrame(()=>{i(r.getRect())})},[r]);const _=m.useCallback(L=>{const R=t.getCurrentWindow()??window,N=ge.fromDomRect(t.getRootDiv().getBoundingClientRect());let A;if(t.getProps().constrainFloatPanels)A=new ge(0,0,N.width,N.height);else{const F=t1(R),ie=Math.max(F.fullWidth,R.innerWidth),X=Math.max(F.fullHeight,R.innerHeight);A=new ge(-N.x,-N.y,ie,X)}const W=L.clone();return W.clamp(A),W},[t]),y=m.useCallback(L=>{L.preventDefault(),L.stopImmediatePropagation()},[]);m.useEffect(()=>{const L=[u,d,f,p,g,x,w,k,b].map(R=>R.current).filter(R=>R!==null);return L.forEach(R=>R.addEventListener("touchstart",y,{passive:!1})),()=>{L.forEach(R=>R.removeEventListener("touchstart",y))}},[y]);const T=m.useRef(!1);m.useLayoutEffect(()=>{if(!T.current){T.current=!0;const L=_(n);L.equals(n)||(i(L),r.setRect(L))}},[_,n,r]),m.useEffect(()=>{const L=()=>{const W=[...t.getModel().getLayouts()],F=W[W.length-1][1];r!==F&&(h.current=!0)},R=t.getCurrentWindow()??window,N=()=>{h.current&&(v.current=R.setTimeout(()=>{v.current=void 0,t.moveWindowToFront(r.getLayoutId())},10),h.current=!1)},A=c.current;return A&&(A.addEventListener("pointerdown",L,{capture:!0}),A.addEventListener("pointerup",N)),()=>{A&&(A.removeEventListener("pointerdown",L,{capture:!0}),A.removeEventListener("pointerup",N)),v.current!==void 0&&(R.clearTimeout(v.current),v.current=void 0)}},[t,r]);const S=L=>{L.stopPropagation();const R={x:L.clientX-n.x,y:L.clientY-n.y};t.showOverlayOnAllWindows(!0),cs(t.getCurrentDocument()??document,L,(N,A)=>{h.current&&(t.moveWindowToFront(r.getLayoutId()),h.current=!1);const W=new ge(N-R.x,A-R.y,n.width,n.height),F=_(W);i(F),t.doAction(re.moveFloat(r.getLayoutId(),F).setAdjusting(!0))},()=>{t.doAction(re.moveFloat(r.getLayoutId(),a.current).setAdjusting(!1)),t.redrawLayout(),t.showOverlayOnAllWindows(!1)},()=>{t.doAction(re.moveFloat(r.getLayoutId(),a.current).setAdjusting(!1)),t.redrawLayout(),t.showOverlayOnAllWindows(!1)})},P=t.getIcons(),O=t.isSupportsPopout()&&r.getRootRow()?.isAllowedInWindow()===!0,B=L=>{L.stopPropagation(),r.getRootRow()?.getChildren().length?t.getDragDropManager().startDockLayoutDrag(L.nativeEvent,r,c.current??void 0):L.preventDefault()},j=L=>{t.getDragDropManager().onDragEnded()},M=L=>{L.stopPropagation()},E=L=>{L.stopPropagation();const R=t.getScreenRect(r.getRect());t.doAction(re.popoutFloat(r.getLayoutId(),R.toJson()))},z=(L,R)=>{const N=n,A={x:L.clientX,y:L.clientY};t.showOverlayOnAllWindows(!0),cs(t.getCurrentDocument()??document,L,(W,F)=>{const ie=W-A.x,X=F-A.y;let q=N.x,Z=N.y,Y=N.width,Q=N.height;R.includes("n")&&(Z+=X,Q-=X),R.includes("s")&&(Q+=X),R.includes("w")&&(q+=ie,Y-=ie),R.includes("e")&&(Y+=ie);const ne=new ge(q,Z,Math.max(v1,Y),Math.max(m1,Q)),le=_(ne);i(le),t.doAction(re.moveFloat(r.getLayoutId(),le).setAdjusting(!0))},()=>{t.doAction(re.moveFloat(r.getLayoutId(),a.current).setAdjusting(!1)),t.redrawLayout(),t.showOverlayOnAllWindows(!1)},()=>{t.doAction(re.moveFloat(r.getLayoutId(),a.current).setAdjusting(!1)),t.redrawLayout(),t.showOverlayOnAllWindows(!1)}),L.stopPropagation()};return s.jsxs("div",{ref:c,className:l(U.FLEXLAYOUT__FLOAT_WINDOW),style:{left:n.x,top:n.y,width:n.width,height:n.height,position:"absolute"},children:[s.jsxs("div",{ref:u,className:l(U.FLEXLAYOUT__FLOAT_WINDOW_HEADER),onPointerDown:S,children:[s.jsx("div",{"data-layout-path":"/floatwindow/drag-handle",className:l(U.FLEXLAYOUT__FLOAT_WINDOW_DRAG_HANDLE),draggable:!0,title:t.i18nName(Ae.Dock_Float_To_Layout),"aria-label":t.i18nName(Ae.Dock_Float_To_Layout),onDragStart:B,onDragEnd:j,onPointerDown:M,children:P.dragToDock}),s.jsx("div",{style:{flexGrow:1,display:"flex",justifyContent:"center",alignItems:"center",minWidth:0,overflow:"hidden"},children:r.getName()!==void 0?s.jsx("span",{"data-layout-path":"/floatwindow/title",className:l(U.FLEXLAYOUT__FLOAT_WINDOW_HEADER_TITLE),title:r.getName(),children:r.getName()}):s.jsx("div",{style:{width:50,height:8,display:"flex",flexDirection:"column",justifyContent:"space-around",opacity:.5},children:s.jsx("div",{style:{height:2,backgroundColor:"gray",borderRadius:1}})})}),O&&s.jsx("button",{type:"button","data-layout-path":"/floatwindow/button/popout",className:l(U.FLEXLAYOUT__FLOAT_WINDOW_BUTTON),title:t.i18nName(Ae.Popout_Float_To_Window),"aria-label":t.i18nName(Ae.Popout_Float_To_Window),onClick:E,onPointerDown:M,children:P.popoutFloatWindow})]}),s.jsx("div",{className:l(U.FLEXLAYOUT__FLOAT_WINDOW_CONTENT),children:o}),s.jsx("div",{ref:d,style:{position:"absolute",zIndex:co,top:Or,left:ir,right:ir,height:ir,cursor:"ns-resize"},onPointerDown:L=>z(L,"n")}),s.jsx("div",{ref:x,style:{position:"absolute",zIndex:co,bottom:Or,left:ir,right:ir,height:ir,cursor:"ns-resize"},onPointerDown:L=>z(L,"s")}),s.jsx("div",{ref:p,style:{position:"absolute",zIndex:co,top:ir,bottom:ir,right:Or,width:ir,cursor:"ew-resize"},onPointerDown:L=>z(L,"e")}),s.jsx("div",{ref:k,style:{position:"absolute",zIndex:co,top:ir,bottom:ir,left:Or,width:ir,cursor:"ew-resize"},onPointerDown:L=>z(L,"w")}),s.jsx("div",{ref:b,style:{position:"absolute",zIndex:co,top:Or,left:Or,width:kn,height:kn,cursor:"nwse-resize"},onPointerDown:L=>z(L,"nw")}),s.jsx("div",{ref:f,style:{position:"absolute",zIndex:co,top:Or,right:Or,width:kn,height:kn,cursor:"nesw-resize"},onPointerDown:L=>z(L,"ne")}),s.jsx("div",{ref:w,style:{position:"absolute",zIndex:co,bottom:Or,left:Or,width:kn,height:kn,cursor:"nesw-resize"},onPointerDown:L=>z(L,"sw")}),s.jsx("div",{ref:g,style:{position:"absolute",zIndex:co,bottom:0,right:0,width:Eh,height:Eh,cursor:"nwse-resize"},onPointerDown:L=>z(L,"se")})]})},xm=({controller:e})=>{const t=[],r=e.getModel().getLayouts();let o=0,n=2e3;for(const[i,a]of r)a.isMainLayout()||(a.getType()==="window"&&e.isSupportsPopout()?(t.push(s.jsx(vm,{controller:e,layout:a,title:e.getPopoutWindowName()+" "+o,url:e.getPopoutURL()+"?id="+encodeURIComponent(i),onCloseLayout:e.onCloseLayout,children:s.jsx("div",{className:e.getProps().popoutClassName,children:s.jsx(wa,{...e.getProps(),layoutId:i,path:a.getPath(),mainLayoutController:e})})},i)),o++):a.getType()==="float"&&(t.push(s.jsx(x1,{controller:e,layout:a,zIndex:n,onCloseLayout:e.onCloseLayout,children:s.jsx(wa,{...e.getProps(),layoutId:i,path:a.getPath(),mainLayoutController:e})},i+"float")),n++));return s.jsx(s.Fragment,{children:t})};xm.displayName="FloatingWindowContainer";var ym=e=>{const{controller:t,tabNode:r,selected:o,border:n,icons:i,path:a}=e,l=m.useRef(null),c=m.useRef(null),u=t.getKeyMap(),d=N=>{r.isEnableDrag()?(N.stopPropagation(),t.getDragDropManager().setDragNode(N.nativeEvent,r)):N.preventDefault()},f=N=>{N.stopPropagation(),t.getDragDropManager().onDragEnded()},p=N=>{ya(N)&&t.auxMouseClick(r,N)},g=N=>{t.showContextMenu(r,N)},x=()=>{t.doAction(re.selectTab(r.getId()))},w=N=>{const A=l.current?.closest('[role="tablist"]');if(A){const W=Array.from(A.querySelectorAll('[role="tab"]'));W[W.indexOf(l.current)+N]?.focus()}},k=()=>{const N=l.current.ownerDocument,A=()=>Gv(N.getElementById(Lt("flexlayout-tab-",r.getId())));o?A():(x(),requestAnimationFrame(A))},b=N=>{t.getEditingTab()!==r&&(to(N,u.focusTabToggle)?(k(),N.preventDefault()):N.key==="Enter"||N.key===" "?(x(),N.preventDefault()):(N.key==="ArrowLeft"||N.key==="ArrowUp")&&!xa(N)?(w(-1),N.preventDefault()):(N.key==="ArrowRight"||N.key==="ArrowDown")&&!xa(N)?(w(1),N.preventDefault()):to(N,u.closeTab)&&r.isCloseable()&&(w(1),t.doAction(re.deleteTab(r.getId())),N.preventDefault()))},h=()=>{const N=r.getCloseType();return!!(o||N===Qo.Always||N===Qo.Visible&&window.matchMedia&&window.matchMedia("(hover: hover) and (pointer: fine)").matches)},v=N=>{h()&&(t.doAction(re.deleteTab(r.getId())),N.stopPropagation())},_=N=>{N.stopPropagation()},y=()=>{if(o)return!0;const N=r.getParent();return N instanceof Ke&&N.getSelected()===-1&&N.getChildren()[0]===r},T=t.getEditingTab()===r,S=m.useCallback(N=>{l.current=N,t.registerMeasurable(r,"tabbutton",N)},[t,r]);m.useLayoutEffect(()=>{T&&c.current.select()},[T]),m.useEffect(()=>{if(T){const N=t.getCurrentDocument().body,A=W=>{W.target!==c.current&&t.setEditingTab(void 0)};return N.addEventListener("pointerdown",A),()=>N.removeEventListener("pointerdown",A)}},[T,t]);const P=N=>{N.stopPropagation()},O=N=>{N.code==="Escape"?(t.setEditingTab(void 0),l.current?.focus()):(N.code==="Enter"||N.code==="NumpadEnter")&&(t.setEditingTab(void 0),t.doAction(re.renameTab(r.getId(),N.target.value)),l.current?.focus())},B=t.getClassName;let j=B(U.FLEXLAYOUT__BORDER_BUTTON)+" "+B(U.FLEXLAYOUT__BORDER_BUTTON_+n);o?j+=" "+B(U.FLEXLAYOUT__BORDER_BUTTON__SELECTED):j+=" "+B(U.FLEXLAYOUT__BORDER_BUTTON__UNSELECTED),r.getClassName()!==void 0&&(j+=" "+r.getClassName());let M=0;r.getModel().isEnableRotateBorderIcons()===!1&&(n==="left"?M=r.getModel().getBorderLeftTabDirection()==="down"?-90:90:n==="right"&&(M=-90));const E=Tf(t,r,M);let z=E.content?s.jsx("div",{className:B(U.FLEXLAYOUT__BORDER_BUTTON_CONTENT),children:E.content}):null;const L=E.leading?s.jsx("div",{className:B(U.FLEXLAYOUT__BORDER_BUTTON_LEADING),children:E.leading}):null;if(T&&(z=s.jsx("input",{ref:c,className:B(U.FLEXLAYOUT__TAB_BUTTON_TEXTBOX),"data-layout-path":a+"/textbox",type:"text","aria-label":t.i18nName(Ae.Rename_Tab),autoFocus:!0,defaultValue:r.getName(),onKeyDown:O,onPointerDown:P})),r.isCloseable()){const N=t.i18nName(Ae.Close_Tab);E.buttons.push(s.jsx("div",{"data-layout-path":a+"/button/close",title:N,"aria-hidden":"true",className:B(U.FLEXLAYOUT__BORDER_BUTTON_TRAILING),onPointerDown:_,onClick:v,children:typeof i.close=="function"?i.close(r):i.close},"close"))}const R=[No(u.focusTabToggle),r.isCloseable()?No(u.closeTab):void 0].filter(Boolean).join(" ")||void 0;return s.jsxs("div",{ref:S,id:Lt("flexlayout-tabbutton-",r.getId()),role:T?void 0:"tab","aria-selected":T?void 0:o,"aria-controls":T?void 0:Lt("flexlayout-tab-",r.getId()),"aria-label":T?void 0:E.name,"aria-keyshortcuts":T?void 0:R,tabIndex:T?-1:y()?0:-1,onKeyDown:b,"data-layout-path":a,className:j,onClick:x,onAuxClick:p,onContextMenu:g,title:r.getHelpText(),draggable:!0,onDragStart:d,onDragEnd:f,children:[L,z,E.buttons]})};ym.displayName="BorderButton";var _m=e=>{const{borderNode:t,controller:r,size:o}=e,n=m.useRef(null),i=m.useRef(null),a=m.useRef(null),l=m.useRef(null),c=m.useRef(null),u=m.useRef(null),[d,f]=m.useState(!1),p=m.useRef(null),g=r.getIcons();m.useEffect(()=>()=>p.current?.(),[]);const{userControlledPositionRef:x,onScroll:w,onScrollPointerDown:k,hiddenTabs:b,onMouseWheel:h,isDockStickyButtons:v,isShowHiddenTabs:_}=fm(r,t,_e.flip(t.getOrientation()),u,a,n,r.getClassName(U.FLEXLAYOUT__BORDER_BUTTON)),y=m.useCallback(ne=>{n.current=ne,r.registerMeasurable(t,"borderheader",ne)},[r,t]),T=ne=>{ya(ne)&&r.auxMouseClick(t,ne)},S=ne=>{r.showContextMenu(t,ne)},P=ne=>{ne.stopPropagation()},O=ne=>{const le=r.getShowOverflowMenu(),Ce=b.map(Ee=>({index:Ee,node:t.getChildren()[Ee]}));if(le!==void 0)le(t,ne,Ce,B);else{const Ee=l.current;f(!0),p.current=um(Ee,t,Ce,B,r,()=>{f(!1),p.current=null})}ne.stopPropagation()},B=ne=>{r.doAction(re.selectTab(ne.node.getId())),x.current=!1},j=ne=>{const le=t.getChildren()[t.getSelected()];le!==void 0&&r.doAction(re.popoutTab(le.getId(),"window")),ne.stopPropagation()},M=ne=>{const le=t.getChildren()[t.getSelected()];le!==void 0&&r.doAction(re.popoutTab(le.getId(),"float")),ne.stopPropagation()},E=r.getClassName,z=()=>{const ne=[];for(let le=0;le{let ne,le=[],Ce=[],Ee;const ve={leading:ne,buttons:le,stickyButtons:Ce,overflowPosition:void 0};if(r.customizeTabSet(t,ve),ne=ve.leading,Ce=ve.stickyButtons,le=ve.buttons,ve.overflowPosition===void 0&&(ve.overflowPosition=Ce.length),Ce.length>0&&(v?le=[...Ce,...le]:Ee=s.jsx("div",{ref:c,onPointerDown:P,onDragStart:ue=>{ue.preventDefault()},className:E(U.FLEXLAYOUT__TAB_TOOLBAR_STICKY_BUTTONS_CONTAINER),children:Ce},"sticky_buttons_container")),_){const ue=r.i18nName(Ae.Overflow_Menu_Tooltip);let se;if(typeof g.more=="function"){const $=b.map(pe=>({index:pe,node:t.getChildren()[pe]}));se=g.more(t,$)}else se=s.jsxs(s.Fragment,{children:[g.more,s.jsx("div",{className:E(U.FLEXLAYOUT__TAB_BUTTON_OVERFLOW_COUNT),children:b.length>0?b.length:""})]});le.splice(Math.min(ve.overflowPosition,le.length),0,s.jsx("button",{tabIndex:0,"aria-haspopup":"menu","aria-expanded":d,"aria-label":ue,ref:l,className:E(U.FLEXLAYOUT__BORDER_TOOLBAR_BUTTON)+" "+E(U.FLEXLAYOUT__BORDER_TOOLBAR_BUTTON_OVERFLOW)+" "+E(U.FLEXLAYOUT__BORDER_TOOLBAR_BUTTON_OVERFLOW_+t.getLocation().getName()),title:ue,onClick:O,onPointerDown:P,children:se},"overflowbutton"))}const jt=t.getSelected();if(jt!==-1){const ue=t.getChildren()[jt];if(ue!==void 0&&r.isMainLayout()){if(ue.isEnablePopoutFloatIcon()){const se=r.i18nName(Ae.Popout_Tab_Float);le.push(s.jsx("button",{tabIndex:0,title:se,"aria-label":se,className:E(U.FLEXLAYOUT__BORDER_TOOLBAR_BUTTON)+" "+E(U.FLEXLAYOUT__BORDER_TOOLBAR_BUTTON_FLOAT),onClick:M,onPointerDown:P,children:typeof g.popoutFloat=="function"?g.popoutFloat(ue):g.popoutFloat},"popout-float"))}if(r.isSupportsPopout()&&ue.isEnablePopoutIcon()&&ue.isAllowedInWindow()){const se=r.i18nName(Ae.Popout_Tab);le.push(s.jsx("button",{tabIndex:0,title:se,"aria-label":se,className:E(U.FLEXLAYOUT__BORDER_TOOLBAR_BUTTON)+" "+E(U.FLEXLAYOUT__BORDER_TOOLBAR_BUTTON_FLOAT),onClick:j,onPointerDown:P,children:typeof g.popout=="function"?g.popout(ue):g.popout},"popout"))}}}const G=s.jsx("div",{ref:i,className:E(U.FLEXLAYOUT__BORDER_TOOLBAR)+" "+E(U.FLEXLAYOUT__BORDER_TOOLBAR_+t.getLocation().getName()),children:le},"toolbar");return{leading:ne,toolbar:G,stickyBar:Ee}},R=z(),{leading:N,toolbar:A,stickyBar:W}=L();let F=E(U.FLEXLAYOUT__BORDER)+" "+E(U.FLEXLAYOUT__BORDER_+t.getLocation().getName());t.getClassName()!==void 0&&(F+=" "+t.getClassName());let ie,X;const q=o-1;t.getLocation()===ee.LEFT?(ie=r.getModel().getBorderLeftTabDirection()==="down"?{left:"100%",top:0}:{right:"100%",top:0},X={width:q,overflowY:"auto"}):t.getLocation()===ee.RIGHT?(ie={left:"100%",top:0},X={width:q,overflowY:"auto"}):(ie={left:0},X={height:q,overflowX:"auto"});let Z;t.isEnableTabScrollbar()&&(Z=s.jsx("div",{ref:a,"aria-hidden":"true",className:E(U.FLEXLAYOUT__MINI_SCROLLBAR),onPointerDown:k}));let Y;N&&(Y=s.jsx("div",{className:E(U.FLEXLAYOUT__BORDER_LEADING),children:N}));const Q=E(U.FLEXLAYOUT__BORDER_INNER_TAB_CONTAINER)+" "+E(U.FLEXLAYOUT__BORDER_INNER_TAB_CONTAINER_+t.getLocation().getName())+(t.getLocation()===ee.LEFT&&r.getModel().getBorderLeftTabDirection()==="down"?" "+E(U.FLEXLAYOUT__BORDER_INNER_TAB_CONTAINER_LEFT_DOWN):"");return s.jsxs("div",{ref:y,style:{display:"flex",flexDirection:t.getOrientation()===_e.VERT?"row":"column"},className:F,"data-layout-path":t.getPath(),onClick:T,onAuxClick:T,onContextMenu:S,onWheel:h,children:[Y,s.jsxs("div",{className:E(U.FLEXLAYOUT__MINI_SCROLLBAR_CONTAINER),children:[s.jsxs("div",{ref:u,className:E(U.FLEXLAYOUT__BORDER_INNER)+" "+E(U.FLEXLAYOUT__BORDER_INNER_+t.getLocation().getName()),style:X,onScroll:w,children:[s.jsx("div",{style:ie,role:r.getEditingTab()?.getParent()===t?void 0:"tablist","aria-orientation":r.getEditingTab()?.getParent()!==t&&(t.getLocation()===ee.LEFT||t.getLocation()===ee.RIGHT)?"vertical":void 0,className:Q,children:R}),W]}),Z]}),A]})};_m.displayName="BorderTabSet";function wm(e){const{controller:t,borderNode:r,show:o}=e,n=m.useRef(null),i=m.useCallback(d=>{n.current=d,t.registerMeasurable(r,"bordercontent",d)},[t,r]);let a=!0;const l={};r.getOrientation()===_e.HORZ?(l.width=r.getSize(),l.minWidth=r.getMinSize(),l.maxWidth=r.getMaxSize()):(l.height=r.getSize(),l.minHeight=r.getMinSize(),l.maxHeight=r.getMaxSize(),a=!1);const c=t.getClassName(U.FLEXLAYOUT__BORDER_TAB_CONTENTS),u=r.getLocation()===ee.LEFT||r.getLocation()===ee.TOP;if(r.isOverlay()){l.display="flex";const d={display:o?"flex":"none"};if(a){const p=t.getModel();for(const g of p.getBorderSet().getBorders())if(g!==r&&g.isOverlay()&&g.isShowing()&&g.getSelected()!==-1){const x=g.getSize()+p.getSplitterSize();g.getLocation()===ee.TOP?d.top=x:g.getLocation()===ee.BOTTOM&&(d.bottom=x)}}const f=t.getClassName(U.FLEXLAYOUT__BORDER_TAB_OVERLAY)+" "+t.getClassName(U.FLEXLAYOUT__BORDER_TAB_OVERLAY_+r.getLocation().getName());return s.jsxs("div",{className:f,style:d,children:[u&&s.jsx("div",{ref:i,style:l,className:c}),o&&s.jsx(qi,{controller:t,node:r,index:0,horizontal:a}),!u&&s.jsx("div",{ref:i,style:l,className:c})]})}return l.display=o?"flex":"none",u?s.jsxs(s.Fragment,{children:[s.jsx("div",{ref:i,style:l,className:c}),o&&s.jsx(qi,{controller:t,node:r,index:0,horizontal:a})]}):s.jsxs(s.Fragment,{children:[o&&s.jsx(qi,{controller:t,node:r,index:0,horizontal:a}),s.jsx("div",{ref:i,style:l,className:c})]})}wm.displayName="BorderTab";var km=({controller:e,inner:t})=>{const r=e.getClassName(U.FLEXLAYOUT__LAYOUT_MAIN),o=e.getModel().getBorderSet().getBorderMap();if(e.isMainLayout()&&o.size>0){const n=s.jsx("div",{className:r,ref:e.getMainRef(),children:t}),i=new Map,a=new Map;for(const[d,f]of ee.values){const p=o.get(f);p&&p.isShowing()&&(!p.isAutoHide()||p.isAutoHide()&&(p.getChildren().length>0||e.getState().showHiddenBorder===f))&&(i.set(f,s.jsx(_m,{controller:e,borderNode:p,size:e.getState().calculatedBorderBarSize})),a.set(f,s.jsx(wm,{controller:e,borderNode:p,show:p.getSelected()!==-1})))}const l=e.getClassName(U.FLEXLAYOUT__LAYOUT_BORDER_CONTAINER),c=e.getClassName(U.FLEXLAYOUT__LAYOUT_BORDER_CONTAINER_INNER),u=s.jsxs("div",{className:c,style:{flexDirection:"column"},children:[a.get(ee.TOP),s.jsxs("div",{className:c,style:{flexDirection:"row"},children:[a.get(ee.LEFT),n,a.get(ee.RIGHT)]}),a.get(ee.BOTTOM)]});return s.jsxs("div",{className:l,style:{flexDirection:"column"},children:[i.get(ee.TOP),s.jsxs("div",{className:c,style:{flexDirection:"row"},children:[i.get(ee.LEFT),u,i.get(ee.RIGHT)]}),i.get(ee.BOTTOM)]})}else return s.jsx("div",{className:r,ref:e.getMainRef(),style:{position:"absolute",top:0,left:0,bottom:0,right:0,display:"flex"},children:t})};km.displayName="BorderContainer";var Em=m.memo(e=>{Em.displayName="DragTabButton";const{controller:t,tabNode:r}=e,o=m.useRef(null);m.useEffect(()=>{r.setTabStamp(o.current)},[r]);const n=t.getClassName,i=n(U.FLEXLAYOUT__DRAG_RECT);return s.jsx("div",{ref:o,className:i,children:s.jsx(_a,{controller:t,tabNode:r},r.getId())})},y1);function y1(e,t){return t.dragging}var wa=m.forwardRef((e,t)=>{wa.displayName="LayoutInternal";const[r,o]=m.useState({editingTab:void 0,showEdges:!1,showOverlay:!1,calculatedBorderBarSize:29,layoutRedrawRevision:0,fullRedrawRevision:0,showHiddenBorder:ee.CENTER}),n=m.useCallback(B=>{o(j=>({...j,...typeof B=="function"?B(j,e):B}))},[e]),i=m.useRef(null),[a,l]=m.useState(0),c=m.useRef(null),u=m.useRef(null),d=m.useRef(null),f=m.useRef(null),p=m.useMemo(()=>new _1(e,r,n),[]);p.setProps(e),p.setStateRaw(r),p.setSetState(n),p.setLayoutRef(i),p.setMoveablesHomeRef(c),p.setFindBorderBarSizeRef(u),p.setFindSplitterSizeRef(d),p.setMainRef(f);const g=e.model.getLayouts().get(p.getLayoutId());g.setController(p),m.useImperativeHandle(t,()=>p,[p]),m.useLayoutEffect(()=>{const B=p.syncLayoutMetrics();if(p.positionTabPanels(),p.isMainLayout()&&p.updateLayoutMetrics(),p.isReLayout()&&(p.redrawLayout(),p.setReLayout(!1)),i.current&&p.getCurrentDocument()!==void 0&&p.getCurrentDocument()!==i.current.ownerDocument&&l(j=>j+1),B){const j=i.current?.ownerDocument.defaultView??window,M=j.requestAnimationFrame(()=>{p.syncLayoutMetrics(),p.positionTabPanels(),p.isReLayout()&&(p.redrawLayout(),p.setReLayout(!1))});return()=>j.cancelAnimationFrame(M)}}),m.useEffect(()=>{const B=i.current.ownerDocument,j=B.defaultView;p.setCurrentDocument(B),p.setCurrentWindow(j);const M=new j.ResizeObserver(()=>{p.updateRect(),p.syncLayoutMetrics(),p.positionTabPanels(),p.updateLayoutMetrics(),p.isReLayout()&&(p.redrawLayout(),p.setReLayout(!1))});M.observe(i.current),p.setGeometryResizeObserver(M),u.current&&M.observe(u.current),d.current&&M.observe(d.current);const E=()=>{p.updateRect()};j.addEventListener("resize",E);const z=()=>{for(const[L,R]of p.getProps().model.getLayouts()){const N=R.getController();N&&N.redrawLayout()}};return p.isMainLayout()&&(document.addEventListener("visibilitychange",z),B.addEventListener("pointerdown",p.onOverlayBorderPointerDown,!0),B.addEventListener("keydown",p.onOverlayBorderKeyDown)),(p.isMainLayout()||p.getLayout()?.getType()==="window")&&B.addEventListener("keydown",p.onTabsetNavKeyDown),()=>{p.setGeometryResizeObserver(void 0),M.disconnect(),j.removeEventListener("resize",E),document.removeEventListener("visibilitychange",z),B.removeEventListener("pointerdown",p.onOverlayBorderPointerDown,!0),B.removeEventListener("keydown",p.onOverlayBorderKeyDown),B.removeEventListener("keydown",p.onTabsetNavKeyDown)}},[p,a]),m.useEffect(()=>{let B;if(!p.isMainLayout()&&p.getLayout().getType()==="window"){const j=p.getProps().mainLayoutController?.getRootDiv();if(j){const M=j,E=i.current;wh(M,E),B=new MutationObserver(()=>{wh(M,E)&&p.redrawLayout()}),B.observe(M,{attributeFilter:["style"]})}}return()=>{B&&B.disconnect()}},[p]),m.useEffect(()=>{const B=e.model;if(g.setToExportRectFunction((j,M)=>M==="window"?p.getScreenRect(j):p.getRelativeRect(j)),p.setLayout(g),p.isMainLayout()){const j={onAfterAction:p.onModelChange};return B.addChangeListener(j),()=>{B.removeChangeListener(j)}}},[e.model,p,g]);const x=p.isMainLayout()?s.jsxs("div",{className:p.getClassName(U.FLEXLAYOUT__LAYOUT_METRICS),children:[s.jsx("div",{ref:u,className:p.getClassName(U.FLEXLAYOUT__BORDER_SIZER),children:"FindBorderBarSize"},"findBorderBarSize"),s.jsx("div",{ref:d,className:p.getClassName(U.FLEXLAYOUT__SPLITTER_+"horz")},"findSplitterSize")]}):null;if(!i.current)return s.jsx("div",{ref:i,className:p.getClassName(U.FLEXLAYOUT__LAYOUT),children:x});const w=e.model,k=p.getLayoutId();w.getRootRow(k).calcMinMaxSize(),w.getRootRow(k).setPaths(e.path||""),p.isMainLayout()&&w.getBorderSet().setPaths();const b=s.jsx(lm,{controller:p,show:r.showOverlay},"__overlay__"),h=p.renderLayout(),v=s.jsx(km,{controller:p,inner:h}),_=p.renderTabContainers(),y=p.reorderComponents(_,p.getOrderedTabIds());let T=null,S=null,P=null,O=null;return p.isMainLayout()&&(T=s.jsx(xm,{controller:p}),S=p.reorderComponents(p.renderTabContents(),p.getOrderedTabMoveableIds()),P=s.jsx("div",{"aria-hidden":"true",className:p.getClassName(U.FLEXLAYOUT__LAYOUT_TAB_STAMPS),children:p.renderDragTabButtons()},"__dragTabButtons__"),O=s.jsx("div",{ref:c,className:p.getClassName(U.FLEXLAYOUT__LAYOUT_MOVEABLES_HOME)},"__moveables_home__")),s.jsxs("div",{ref:i,className:p.getClassName(U.FLEXLAYOUT__LAYOUT),onDragEnter:p.getDragDropManager().onDragEnterRaw,onDragLeave:p.getDragDropManager().onDragLeaveRaw,onDragOver:p.getDragDropManager().onDragOver,onDrop:p.getDragDropManager().onDrop,children:[x,O,b,v,y,S,T,P]})}),Zr,_1=(Zr=class{constructor(t,r,o){D(this,"_props");D(this,"_state");D(this,"_setState");D(this,"_layoutRef");D(this,"_moveablesHomeRef");D(this,"_findBorderBarSizeRef");D(this,"_findSplitterSizeRef");D(this,"_mainRef");D(this,"_orderedTabIds");D(this,"_orderedTabMoveableIds");D(this,"_currentDocument");D(this,"_currentWindow");D(this,"_showOverlay",!1);D(this,"_supportsPopout");D(this,"_popoutURL");D(this,"_icons");D(this,"_dragDropManager");D(this,"_layoutId");D(this,"_layout");D(this,"_mainController");D(this,"_popoutWindowName");D(this,"_cachedLayoutDOMRect");D(this,"_reLayout");D(this,"_measurables",new Map);D(this,"_tabPanels",new Map);D(this,"_lastRect",ge.empty());D(this,"_lastSplitterSize",8);D(this,"_geometryResizeObserver");D(this,"updateRect",()=>{if(this._layoutRef.current){let t=this._layoutRef.current;if(!this._layout.isMainLayout()&&this._layout.getType()==="float"){const o=t.closest("."+this.getClassName(U.FLEXLAYOUT__FLOAT_WINDOW));o instanceof HTMLDivElement&&(t=o)}let r=ge.fromDomRect(t.getBoundingClientRect());if(!this._layout.isMainLayout()&&this._layout.getType()==="float"){const o=this._mainController.getDomRect();r=r.relativeTo(o)}!r.equalsWhenRounded(this._lastRect)&&r.width!==0&&r.height!==0&&(this._lastRect=r,this._layout.setRect(r),this.redrawLayout())}});D(this,"onModelChange",t=>{const r=t instanceof $v?t.actions:[t];for(const o of r)if(o.type==re.DELETE_TAB&&this._state.showHiddenBorder!==ee.CENTER&&this._props.model.getBorderSet().getBorderMap().get(this._state.showHiddenBorder).getChildren().length===0){this._setState({showHiddenBorder:ee.CENTER});break}if(t.isAdjusting()&&(t.type===re.ADJUST_WEIGHTS||t.type===re.ADJUST_BORDER_SPLIT)){t.type===re.ADJUST_WEIGHTS?this.applyAdjustingWeights(t):this.applyAdjustingBorderSplit(t),this._props.onModelChange&&this._props.onModelChange(this._props.model,t);return}this.redrawLayout(),this._props.onModelChange&&this._props.onModelChange(this._props.model,t)});D(this,"onOverlayBorderPointerDown",t=>{const r=this._props.model.getBorderSet().getBorders().filter(l=>l.isOverlay()&&l.getSelected()!==-1);if(r.length===0||t.target?.closest?.("."+this.getClassName(U.FLEXLAYOUT__POPUP_MENU_CONTAINER)+",."+this.getClassName(U.FLEXLAYOUT__FLOAT_WINDOW)+",."+this.getClassName(U.FLEXLAYOUT__FLOATING_WINDOW_CONTENT)+",."+this.getClassName(U.FLEXLAYOUT__BORDER_TAB_OVERLAY)))return;const o=this.getDomRect();if(!o)return;const n=t.clientX-o.x,i=t.clientY-o.y,a=this._props.model.getRootRow(lt.MAIN_LAYOUT_ID)?.getRect();if(!(!a||!a.contains(n,i)))for(const l of r)l.getContentRect()?.contains(n,i)||this.closeOverlayBorder(l)});D(this,"onOverlayBorderKeyDown",t=>{if(!to(t,this.getKeyMap().closeOverlayBorder))return;const r=this._currentDocument?.activeElement;if(!r)return;const o=this._props.model.getBorderSet().getBorders().filter(n=>n.isOverlay()&&n.getSelected()!==-1);for(const n of o){const i=n.getSelectedNode(),a=this._currentDocument.getElementById(Lt("flexlayout-tab-",i.getId())),l=this._currentDocument.getElementById(Lt("flexlayout-tabbutton-",i.getId()));if(a&&a.contains(r)||r===l){this.closeOverlayBorder(n),t.preventDefault();break}}});D(this,"onTabsetNavKeyDown",t=>{if(t.defaultPrevented)return;const r=this.getKeyMap();let o;if(to(t,r.focusNextTabset))o=1;else if(to(t,r.focusPreviousTabset))o=-1;else return;this.focusAdjacentTabset(o)&&t.preventDefault()});D(this,"updateLayoutMetrics",()=>{if(this._findBorderBarSizeRef.current){const t=this._findBorderBarSizeRef.current.getBoundingClientRect().height;Math.abs(t-this._state.calculatedBorderBarSize)>.5&&this.setState({calculatedBorderBarSize:t})}if(this._findSplitterSizeRef.current){const t=this._findSplitterSizeRef.current.getBoundingClientRect().width;Math.abs(t-this._lastSplitterSize)>.5&&(this._lastSplitterSize=t,this._props.model.setSplitterSize(t),this.redrawLayout())}});D(this,"getClassName",t=>this._props.classNameMapper===void 0?t:this._props.classNameMapper(t));D(this,"onCloseLayout",t=>{this.doAction(re.closePopout(t.getLayoutId()))});this._props=t,this._state=r,this._setState=o,this._orderedTabIds=[],this._orderedTabMoveableIds=[],this._supportsPopout=t.supportsPopout!==void 0?t.supportsPopout:k1,this._popoutURL=t.popoutURL?t.popoutURL:"popout.html",this._icons={...w1,...t.icons},this._layoutId=t.layoutId?t.layoutId:lt.MAIN_LAYOUT_ID,this._mainController=t.mainLayoutController?t.mainLayoutController:this,this._dragDropManager=new c1(this),this._layout=t.model.getLayouts().get(this._layoutId),this._layout.setController(this),this._popoutWindowName=t.popoutWindowName||"Popout Window",this._reLayout=!1}renderLayout(){return this._cachedLayoutDOMRect=void 0,s.jsxs(s.Fragment,{children:[s.jsx(Rf,{controller:this,rowNode:this._props.model.getRootRow(this._layoutId)},"__row__"),s.jsx(bm,{controller:this})]})}renderTabContainers(){const t=new Map;return this._props.model.visitLayoutNodes(this._layoutId,r=>{if(r instanceof Le){const o=r,n=o.isSelected(),i=o.isRendered(),a=o.isEnableRenderOnDemand();(i||n||!a)&&t.set(o.getId(),s.jsx(hm,{controller:this,tabNode:o,selected:n},o.getId()))}}),t}renderTabContents(){const t=new Map;for(const[r,o]of this._props.model.getLayouts())this._props.model.visitLayoutNodes(r,n=>{if(n instanceof Le){const i=n,a=i.isSelected(),l=i.isRendered(),c=i.isEnableRenderOnDemand(),u=i.getParent().getContentRect(),d=a||!c;if(l||d&&u.width>0&&u.height>0){const f=i.getMoveableElement();f.style.overflow=i.isEnableScrollbars()?"auto":"hidden";const p=o.getWindowId()||"",g=i.getId()+(i.isEnableWindowReMount()?p:"");t.set(i.getId(),Vr.createPortal(s.jsx(gm,{controller:this,tabNode:i,windowId:p,visible:d,fullRedrawRevision:this._state.fullRedrawRevision,parentRedrawRevision:this._props.parentRedrawRevision},g),f,g)),i.setRendered(!0)}}});return t}renderDragTabButtons(){const t=[];return this._props.model.visitNodes(r=>{if(r instanceof Le){const o=r;t.push(s.jsx(Em,{controller:this,tabNode:o,dragging:Ll},o.getId()))}}),t}redrawLayout(){this._mainController?.setState(t=>({layoutRedrawRevision:t.layoutRedrawRevision+1}))}redrawLayoutAndTabContent(){this._mainController?.setState(t=>({fullRedrawRevision:t.fullRedrawRevision+1}))}doAction(t){if(this._props.onAction!==void 0){const r=this._props.onAction(t);return r!==void 0?this._props.model.doAction(r):void 0}else return this._props.model.doAction(t)}applyMeasuredGeometry(){this.syncLayoutMetrics(),this.positionTabPanels(),this.isReLayout()&&(this.redrawLayout(),this.setReLayout(!1))}applyAdjustingWeights(t){const r=this._props.model.getNodeById(t.data.nodeId);if(!(r instanceof Ue)){this.redrawLayout();return}const o=t.data.weights,n=r.getChildren();for(let i=0;it.has(i)),n=new Set(o);for(const i of t.keys())n.has(i)||o.push(i);return r.splice(0,r.length,...o),r.map(i=>t.get(i))}checkForBorderToShow(t,r){const o=this.getBoundingClientRect(this._mainRef.current),n=o.getCenter(),i=10,a=100/2;let l=!1;this._props.model.isEnableEdgeDock()&&this._state.showHiddenBorder===ee.CENTER&&(r>n.y-a&&rn.x-a&&t=o.getRight()-i?c=ee.RIGHT:r<=o.y+i?c=ee.TOP:r>=o.getBottom()-i&&(c=ee.BOTTOM)),c!==this._state.showHiddenBorder&&this.setState({showHiddenBorder:c})}closeOverlayBorder(t){const r=t.getSelectedNode();if(r===void 0)return;const o=this._currentDocument,n=o?.getElementById(Lt("flexlayout-tab-",r.getId())),i=!!o&&!!n&&n.contains(o.activeElement);this.doAction(re.selectTab(r.getId())),i&&o.getElementById(Lt("flexlayout-tabbutton-",r.getId()))?.focus()}focusAdjacentTabset(t){const r=this._currentDocument,o=r?.activeElement;if(!r||!o||!this.getRootDiv()?.contains(o))return!1;const n=o.tagName;if(n==="INPUT"||n==="TEXTAREA"||o.isContentEditable||o.closest('[role="menu"]')||this._props.model.getMaximizedTabset(this._layoutId)!==void 0)return!1;const i=[];if(this._props.model.visitLayoutNodes(this._layoutId,u=>{u instanceof Oe&&u.getSelectedNode()!==void 0&&i.push(u)}),i.length<2)return!1;const a=u=>this._measurables.get("tabset:"+u.getId())?.element.contains(o)?!0:!!r.getElementById(Lt("flexlayout-tab-",u.getSelectedNode().getId()))?.contains(o);let l=i.findIndex(a);if(l===-1){const u=this._props.model.getActiveTabset(this._layoutId);l=u!==void 0?i.indexOf(u):0,l===-1&&(l=0)}const c=i[(l+t+i.length)%i.length];return r.getElementById(Lt("flexlayout-tabbutton-",c.getSelectedNode().getId()))?.focus(),this.doAction(re.setActiveTabset(c.getId(),this._layoutId)),!0}registerMeasurable(t,r,o){const n=r+":"+t.getId(),i=this._measurables.get(n);o?this._measurables.set(n,{kind:r,node:t,element:o}):this._measurables.delete(n),r!=="tabbutton"&&(i&&this._geometryResizeObserver?.unobserve(i.element),o&&this._geometryResizeObserver?.observe(o))}setGeometryResizeObserver(t){if(this._geometryResizeObserver=t,t)for(const{kind:r,element:o}of this._measurables.values())r!=="tabbutton"&&t.observe(o)}syncLayoutMetrics(){this._cachedLayoutDOMRect=void 0;let t=!1;for(const{kind:r,node:o,element:n}of this._measurables.values()){if(!n.isConnected)continue;const i=this.getBoundingClientRect(n);switch(r){case"row":case"tabset":i.equalsWhenRounded(o.getRect())||(o.setRect(i),t=!0);break;case"tabstrip":i.equalsWhenRounded(o.getTabStripRect())||(o.setTabStripRect(i),t=!0);break;case"tabsetcontent":{const a=o;if(!isNaN(i.x)&&!a.getContentRect().equalsWhenRounded(i)){const l=a.getContentRect().width>0&&a.getContentRect().height>0;a.setContentRect(i),t=!0,!l&&i.width>0&&i.height>0&&this.setReLayout(!0)}break}case"tabbutton":i.equalsWhenRounded(o.getTabRect())||(o.setTabRect(i),t=!0);break;case"borderheader":i.equalsWhenRounded(o.getRect())||(o.setTabHeaderRect(i),t=!0);break;case"bordercontent":{const a=o;if(!isNaN(i.x)&&i.width>0&&!a.getContentRect().equalsWhenRounded(i)){const l=a.getContentRect().width>0&&a.getContentRect().height>0;a.setContentRect(i),t=!0,!l&&i.height>0&&this.setReLayout(!0)}break}}}return t}registerTabPanel(t,r){r?this._tabPanels.set(t.getId(),{node:t,element:r}):this._tabPanels.delete(t.getId())}positionTabPanels(){for(const{node:t,element:r}of this._tabPanels.values()){const o=t.getParent(),n=o.getContentRect();let i=t.isSelected();o instanceof Oe?this._props.model.getMaximizedTabset(this._layoutId)!==void 0&&!o.isMaximized()&&(i=!1):o instanceof Ke&&(o.isShowing()||(i=!1)),n.positionElement(r),r.style.display=i?"":"none",t.setRect(n),t.setVisible(i)}}addTabWithDragAndDrop(t,r,o){this._dragDropManager.addTabWithDragAndDrop(t,r,o)}moveTabWithDragAndDrop(t,r){this._dragDropManager.moveTabWithDragAndDrop(t,r)}setDragComponent(t,r,o,n){this._dragDropManager.setDragComponent(t,r,o,n)}getMoveablesHome(){return this._moveablesHomeRef.current}getProps(){return this._props}getKeyMap(){return Q0(this._props.keyMap)}setProps(t){this._props=t}getState(){return this._state}setStateRaw(t){this._state=t}setState(t){this._setState(t)}setSetState(t){this._setState=t}setLayoutRef(t){this._layoutRef=t}setMoveablesHomeRef(t){this._moveablesHomeRef=t}setFindBorderBarSizeRef(t){this._findBorderBarSizeRef=t}setFindSplitterSizeRef(t){this._findSplitterSizeRef=t}getMainRef(){return this._mainRef}setMainRef(t){this._mainRef=t}getOrderedTabIds(){return this._orderedTabIds}getOrderedTabMoveableIds(){return this._orderedTabMoveableIds}getCurrentDocument(){return this._currentDocument}setCurrentDocument(t){this._currentDocument=t}getCurrentWindow(){return this._currentWindow}setCurrentWindow(t){this._currentWindow=t,t&&!Zr.Windows.has(t)&&Zr.Windows.set(t,Tn())}getWindowId(){if(this.getCurrentWindow())return Zr.Windows.get(this.getCurrentWindow())}isSupportsPopout(){return this._supportsPopout}getPopoutURL(){return this._popoutURL}getIcons(){return this._icons}getDragDropManager(){return this._dragDropManager}getLayoutId(){return this._layoutId}getLayout(){return this._layout}setLayout(t){this._layout=t}getMainController(){return this._mainController}isMainLayout(){return this._layout.isMainLayout()}getPopoutWindowName(){return this._popoutWindowName}isReLayout(){return this._reLayout}setReLayout(t){this._reLayout=t}getBoundingClientRect(t){const r=this.getDomRect();return r?ge.getBoundingClientRect(t).relativeTo(r):ge.empty()}getLayoutRef(){return this._layoutRef.current}getDomRect(){return this._cachedLayoutDOMRect!==void 0?this._cachedLayoutDOMRect:this._layoutRef.current?(this._cachedLayoutDOMRect=ge.fromDomRect(this._layoutRef.current.getBoundingClientRect()),this._cachedLayoutDOMRect):ge.empty()}getRootDiv(){return this._layoutRef.current}getMainElement(){return this._mainRef.current}getFactory(){return this._props.factory}isRealtimeResize(){return this._props.realtimeResize??!1}setEditingTab(t){this.setState({editingTab:t})}getEditingTab(){return this._state.editingTab}getModel(){return this._props.model}getTabDragSpeed(){return this._props.tabDragSpeed?this._props.tabDragSpeed:.3}getScreenRect(t){const r=t.clone(),o=this.getDomRect(),n=this._currentWindow.outerHeight-this._currentWindow.innerHeight,i=this._currentWindow.outerWidth-this._currentWindow.innerWidth,a=n>=0&&n<=200?n:60,l=i>=0&&i<=100?i:2;return r.x=this._currentWindow.screenX+this._currentWindow.scrollX+l/2+o.x+r.x,r.y=this._currentWindow.screenY+this._currentWindow.scrollY+(a-l/2)+o.y+r.y,r.height+=a,r.width+=l,r}getRelativeRect(t){const r=t.clone();if(!this._layout.isMainLayout()){const o=this._layout.getRect();r.x+=o.x,r.y+=o.y}return r}moveWindowToFront(t){this.doAction(re.movePopoutToFront(t))}addTabToTabSet(t,r){if(this._props.model.getNodeById(t)!==void 0)return this.doAction(re.addTab(r,t,ee.CENTER,-1))}addTabToActiveTabSet(t){const r=this._props.model.getActiveTabset(this._layoutId);if(r!==void 0)return this.doAction(re.addTab(t,r.getId(),ee.CENTER,-1))}maximize(t){this.doAction(re.maximizeToggle(t.getId(),this.getLayoutId()))}customizeTab(t,r){this._props.onRenderTab&&this._props.onRenderTab(t,r)}customizeTabSet(t,r){this._props.onRenderTabSet&&this._props.onRenderTabSet(t,r)}i18nName(t,r){let o;return this._props.i18nMapper&&(o=this._props.i18nMapper(t,r)),o===void 0&&(o=t+(r===void 0?"":r)),o}getShowOverflowMenu(){return this._props.onShowOverflowMenu}getTabSetPlaceHolderCallback(){return this._props.onTabSetPlaceHolder}showContextMenu(t,r){this._props.onContextMenu&&this._props.onContextMenu(t,r)}auxMouseClick(t,r){this._props.onAuxMouseClick&&this._props.onAuxMouseClick(t,r)}showOverlay(t){this._showOverlay!==t&&(this._showOverlay=t,this.setState({showOverlay:t}),Sl(!t,this._currentDocument))}showOverlayOnAllWindows(t){for(const[,r]of this._props.model.getLayouts())r.getController()&&r.getController().showOverlay(t)}},D(Zr,"Windows",new WeakMap),Zr),w1={close:s.jsx(Nl,{}),pin:s.jsx(Qv,{}),closeTabset:s.jsx(Nl,{}),closeFloatPopout:s.jsx(Nl,{}),popout:s.jsx(Qu,{}),popoutFloat:s.jsx(om,{}),maximize:s.jsx(em,{}),restore:s.jsx(im,{}),more:s.jsx(tm,{}),edgeArrow:s.jsx(rm,{}),activeTabset:s.jsx(am,{}),dragToDock:s.jsx(nm,{}),popoutFloatWindow:s.jsx(Qu,{})},k1=Xv(),Tm=m.forwardRef((e,t)=>{const r=m.useRef(null),o=m.useRef(e.model),n=m.useRef(0);o.current!==e.model&&(e.model.getAdoptedFromModel()!==o.current&&n.current++,o.current=e.model),Tm.displayName="Layout",m.useImperativeHandle(t,()=>({redraw:()=>{r.current?.redrawLayoutAndTabContent()},addTabToTabSet:(a,l)=>r.current?.addTabToTabSet(a,l),addTabWithDragAndDrop:(a,l,c)=>{r.current?.addTabWithDragAndDrop(a,l,c)},moveTabWithDragAndDrop:(a,l)=>{r.current?.moveTabWithDragAndDrop(a,l)},addTabToActiveTabSet:a=>r.current?.addTabToActiveTabSet(a),setDragComponent:(a,l,c,u)=>{r.current?.setDragComponent(a,l,c,u)},editTabName:a=>{const l=r.current?.getModel().getNodeById(a);l instanceof Le&&l.isEnableRename()&&l.getLayout().getController()?.setEditingTab(l)},getRootDiv:()=>r.current.getRootDiv()}));const i={};return s.jsx(wa,{ref:r,...e,parentRedrawRevision:i},n.current)});const Th=20,E1="bv-nodepack:layout-profiles:v1:",Sf=new Map,ed="bv-layout-session-changed",Rm=e=>`${E1}${e}`;function Lf(e){try{const t=JSON.parse(localStorage.getItem(Rm(e))??"");if(t?.schemaVersion===1&&Array.isArray(t.profiles))return t}catch{}return{schemaVersion:1,profiles:[]}}function Sm(e,t){localStorage.setItem(Rm(e),JSON.stringify(t))}const T1=e=>{const t=e.trim();if(t.length<1||t.length>40)throw new Error("Layout name must contain 1 to 40 characters.");return t};function Rh(e){const t=Lf(e.editorType),r=T1(e.name),o=e.id??crypto.randomUUID();if(t.profiles.find(l=>l.name.localeCompare(r,void 0,{sensitivity:"accent"})===0&&l.id!==o))throw new Error("A layout with this name already exists.");const i={...e,id:o,name:r,schemaVersion:1,updatedAt:new Date().toISOString()},a=t.profiles.some(l=>l.id===o)?t.profiles.map(l=>l.id===o?i:l):[...t.profiles,i];if(a.length>Th)throw new Error(`A maximum of ${Th} layouts can be saved for this editor.`);return Sm(e.editorType,{schemaVersion:1,profiles:a,selectedId:o}),i}function R1(e,t){const r=Lf(e);Sm(e,{...r,profiles:r.profiles.filter(o=>o.id!==t),selectedId:r.selectedId===t?void 0:r.selectedId})}function Ol(e,t,r,o,n=!0){Sf.set(e,{layout:structuredClone(t),status:r,profileId:o}),n&&window.dispatchEvent(new CustomEvent(ed,{detail:{key:e}}))}function Bi(e){const t=Sf.get(e);return t?structuredClone(t):void 0}function S1(e){Sf.delete(e)}function L1(e,t){return e.editorType===t.editorType&&e.editorVersion===t.editorVersion&&e.library===t.library&&e.signature===t.signature}const Sh="flexlayout-react@0.10.5";function C1(e){return{global:{tabEnableClose:!1,tabEnablePopout:!1,tabEnablePopoutIcon:!1,tabEnablePopoutFloatIcon:!0,tabSetMinWidth:180,tabSetMinHeight:130},borders:[],layout:{type:"row",children:e.map(t=>({type:"tabset",weight:t.weight,minWidth:t.minWidth,children:[{type:"tab",id:t.id,name:t.title,component:t.id,enablePopoutFloatIcon:!0}]}))}}}const N1=new Set([re.MOVE_NODE,re.DELETE_TAB,re.DELETE_TABSET,re.RENAME_TAB]),O1=e=>N1.has(e.type)?"modified":"adjusted";function M1(e){S1(e)}function Lm({storageId:e,panels:t,resetSignal:r=0,defaultModel:o,onStatus:n}){const i=JSON.stringify({panels:t.map(f=>`${f.id}:${f.weight}`),defaultModel:o}),a=m.useMemo(()=>o??C1(t),[i]),[l,c]=m.useState(()=>lt.fromJson(Bi(e)?.layout??a)),u=m.useMemo(()=>new Map(t.map(f=>[f.id,f.content])),[t]);m.useEffect(()=>{const f=Bi(e);c(lt.fromJson(f?.layout??a)),n?.(f?.status??"saved")},[a,i,e]),m.useEffect(()=>{r&&(M1(e),c(lt.fromJson(a)),n?.("saved"))},[a,r,e]),m.useEffect(()=>{const f=p=>{if(p.detail?.key!==e)return;const g=Bi(e);g&&(c(lt.fromJson(g.layout)),n?.(g.status))};return window.addEventListener(ed,f),()=>window.removeEventListener(ed,f)},[n,e]);const d=f=>f.type===re.POPOUT_TAB&&f.data.type==="float"&&l.getNodeById(f.data.node)?.getLayoutId()!==lt.MAIN_LAYOUT_ID?void 0:f;return s.jsx("div",{className:"bv-ui-dock flexlayout__theme_dark",children:s.jsx(Tm,{model:l,factory:f=>u.get(f.getComponent()??"")??null,constrainFloatPanels:!0,onAction:d,onModelChange:(f,p)=>{c(f);const g=Bi(e),x=g?.status==="modified"?"modified":O1(p);Ol(e,f.toJson(),x,g?.profileId,!1),n?.(x)}})})}let bo=[];const td=new Set,Cm=()=>td.forEach(e=>e());function jr(e){const t=e.id??`${e.title}:${e.message??""}`,r=bo.findIndex(n=>n.id===t),o={...e,id:t};return bo=r>=0?[...bo.slice(0,r),o,...bo.slice(r+1)]:[...bo,o].slice(-3),Cm(),t}function A1(e){bo=bo.filter(t=>t.id!==e),Cm()}const D1=e=>(td.add(e),()=>td.delete(e)),Lh=()=>bo;function I1(){const e=m.useSyncExternalStore(D1,Lh,Lh),t=m.useCallback(()=>{const r=document.getElementById("bv-global-toast-stack");if(!r)return;const o=[...document.querySelectorAll(".comfyui-bottom-panel,.bottom-panel,.actionbar,[class*='bottom'][class*='toolbar'],#graph-canvas-container [role='toolbar'],#bv-ui-window-shelf")].filter(i=>i.offsetParent!==null).map(i=>i.getBoundingClientRect()).filter(i=>i.bottom>window.innerHeight-160),n=Math.max(16,...o.map(i=>Math.max(0,window.innerHeight-i.top+8)));r.style.setProperty("--bv-toast-bottom",`${n}px`)},[]);return m.useEffect(()=>{const r=o=>{const n=o.detail;n?.title&&jr({title:n.title,message:n.message,tone:n.tone??"neutral",duration:n.duration??4500})};return window.addEventListener("bv-show-toast",r),()=>window.removeEventListener("bv-show-toast",r)},[]),m.useEffect(()=>{t();const r=new ResizeObserver(t),o=new MutationObserver(t);return document.querySelectorAll("body *").forEach(n=>{n.offsetParent!==null&&n.getBoundingClientRect().bottom>window.innerHeight-180&&r.observe(n)}),o.observe(document.body,{childList:!0,subtree:!0}),window.addEventListener("resize",t),()=>{r.disconnect(),o.disconnect(),window.removeEventListener("resize",t)}},[t]),e.length?Vr.createPortal(s.jsx("div",{id:"bv-global-toast-stack",className:"bv-ui bv-density-compact bv-toast-stack bv-global-toast-stack","aria-live":"polite",children:e.map(r=>s.jsx(Kw,{tone:r.tone,title:r.title,duration:r.duration,onClose:()=>A1(r.id),children:r.message},r.id))}),document.body):null}const Dr=({children:e,className:t=""})=>s.jsx("svg",{className:t,viewBox:"0 0 24 24","aria-hidden":"true",children:e}),Nm=()=>s.jsx("svg",{className:"bv-brand-cyclone",viewBox:"0 0 32 32","aria-hidden":"true",children:s.jsx("path",{d:"M11.08 2.736a2 2 0 0 1-.286 2.814A12.99 12.99 0 0 0 6 15.64c0 5.525 4.475 10 10 10s10-4.475 10-10a7 7 0 0 0-14 0c0 2.215 1.785 4 4 4s4-1.785 4-4c0-.555-.445-1-1-1s-1 .445-1 1a2 2 0 1 1-4 0c0-2.765 2.235-5 5-5s5 2.235 5 5c0 4.425-3.575 8-8 8s-8-3.575-8-8c0-6.075 4.925-11 11-11s11 4.925 11 11c0 7.735-6.265 14-14 14s-14-6.265-14-14C2 10.313 4.45 5.563 8.266 2.45a2 2 0 0 1 2.814.286"})}),Om=m.createContext({narrow:!1,minimal:!1,menuOverflow:!1}),Mm=()=>m.useContext(Om);function j1(e){const t=e.mode==="workspace",r=m.useRef(null),[o,n]=m.useState(1/0),[i,a]=m.useState(!1),l=m.useRef(null);m.useEffect(()=>{const u=r.current;if(!u)return;const d=new ResizeObserver(f=>n(f[0]?.contentRect.width??u.clientWidth));return d.observe(u),()=>d.disconnect()},[]);const c=m.useMemo(()=>({narrow:o<760,minimal:o<620,menuOverflow:o<520}),[o]);return s.jsx(Om.Provider,{value:c,children:s.jsxs("header",{ref:r,className:`bv-ui-window-header bv-density-compact ${c.narrow?"is-narrow":""} ${c.minimal?"is-minimal":""} ${c.menuOverflow?"is-menu-overflow":""}`.trim(),onPointerDown:e.onPointerDown,children:[s.jsxs("div",{className:"bv-ui-window-identity",children:[s.jsx("span",{className:"bv-ui-window-icon",children:s.jsx(Nm,{})}),s.jsxs("strong",{className:"bv-ui-window-title",children:[s.jsx("span",{className:"bv-ui-window-title-full",children:e.title}),e.shortTitle&&s.jsx("span",{className:"bv-ui-window-title-short",children:e.shortTitle})]}),e.context&&s.jsx("div",{className:"bv-ui-window-context",children:e.context})]}),s.jsx("div",{className:"bv-ui-window-center",children:e.center}),s.jsxs("div",{className:"bv-ui-window-controls",children:[s.jsx("button",{type:"button",className:"bv-ui-window-control",title:"Choose BV window","aria-label":"Choose BV window",onClick:u=>window.dispatchEvent(new CustomEvent(ss,{detail:{anchor:u.currentTarget}})),children:s.jsxs(Dr,{children:[s.jsx("rect",{x:"4",y:"5",width:"7",height:"6",rx:"1"}),s.jsx("rect",{x:"13",y:"5",width:"7",height:"6",rx:"1"}),s.jsx("rect",{x:"4",y:"13",width:"7",height:"6",rx:"1"}),s.jsx("rect",{x:"13",y:"13",width:"7",height:"6",rx:"1"})]})}),e.onMenuVisible&&(c.minimal?s.jsxs("div",{ref:l,className:"bv-window-header-utility",children:[s.jsx("button",{type:"button",className:"bv-ui-window-control","aria-label":"More window actions","aria-expanded":i,onClick:()=>a(u=>!u),children:"•••"}),s.jsx(jo,{open:i,anchor:l,onClose:()=>a(!1),className:"bv-window-navigator-menu",children:s.jsx("button",{type:"button",className:"bv-window-visibility-menu-action",onClick:()=>{e.onMenuVisible?.(!e.menuVisible),a(!1)},children:e.menuVisible?"Hide from BV window menus":"Show in BV window menus"})})]}):s.jsx("button",{type:"button",className:"bv-ui-window-control bv-ui-window-control--visibility",title:e.menuVisible?"Hide this node from BV window menus":"Show this node in BV window menus","aria-label":e.menuVisible?"Hide this node from BV window menus":"Show this node in BV window menus","aria-pressed":e.menuVisible,onClick:()=>e.onMenuVisible?.(!e.menuVisible),children:e.menuVisible?s.jsxs(Dr,{children:[s.jsx("path",{d:"M2.5 12s3.5-5 9.5-5 9.5 5 9.5 5-3.5 5-9.5 5-9.5-5-9.5-5Z"}),s.jsx("circle",{cx:"12",cy:"12",r:"2.5"})]}):s.jsx(Dr,{children:s.jsx("path",{d:"m4 4 16 16M9.5 7.4A10.8 10.8 0 0 1 12 7c6 0 9.5 5 9.5 5a16 16 0 0 1-2.2 2.5M6.2 8.3A15.2 15.2 0 0 0 2.5 12s3.5 5 9.5 5c1 0 2-.2 2.8-.4"})})})),s.jsx("button",{type:"button",className:"bv-ui-window-control",title:"Minimize","aria-label":"Minimize window",onClick:e.onMinimize,children:s.jsx(Dr,{children:s.jsx("path",{d:"M7 16.5h10"})})}),e.allowWorkspace!==!1&&s.jsx("button",{type:"button",className:"bv-ui-window-control",title:t?"Restore floating window":"Maximize to workspace","aria-label":t?"Restore floating window":"Maximize to workspace",onClick:e.onMode,children:t?s.jsxs(Dr,{children:[s.jsx("rect",{x:"4.5",y:"7.5",width:"12",height:"12",rx:"1.5"}),s.jsx("path",{d:"M7.5 7.5v-3h12v12h-3"})]}):s.jsx(Dr,{children:s.jsx("rect",{x:"5",y:"5",width:"14",height:"14",rx:"1.5"})})}),s.jsx("button",{type:"button",className:"bv-ui-window-control bv-ui-window-control--close",title:"Close","aria-label":"Close window",onClick:e.onClose,children:s.jsx(Dr,{children:s.jsx("path",{d:"m7 7 10 10M17 7 7 17"})})})]})]})})}const Li=(e,t)=>{const r=Math.max(280,window.innerWidth-32),o=Math.max(240,window.innerHeight-32),n=Math.min(t.width,420,r),i=Math.min(t.height,o),a=Math.max(n,Math.min(e.width,r)),l=Math.max(i,Math.min(e.height,o));return{x:Math.max(16,Math.min(e.x,window.innerWidth-a-16)),y:Math.max(16,Math.min(e.y,window.innerHeight-l-16)),width:a,height:l}};function xn({open:e,title:t,shortTitle:r,context:o,center:n,children:i,status:a,actions:l,activationToken:c=0,allowWorkspace:u=!0,initialMode:d="floating",initialGeometry:f,minSize:p={width:360,height:240},mode:g,className:x="",bodyClassName:w="",menuVisible:k,onMenuVisible:b,onClose:h,onGeometry:v,onModeChange:_}){const y=r??(t==="BV Regional Editor"?"Reg. Editor":t==="Regional Quick Edit"?"Quick Edit":void 0),T=()=>Li({x:Math.max(16,(window.innerWidth-(f?.width??760))/2),y:Math.max(16,(window.innerHeight-(f?.height??640))/2),width:f?.width??760,height:f?.height??640,...f},p),[S,P]=m.useState(u?d:"floating"),[O,B]=m.useState(!1),[j,M]=m.useState(T),E=g??S,z=m.useRef(null),L=m.useRef(null),R=m.useRef(j),N=m.useRef(f),A=m.useRef();m.useEffect(()=>{R.current=j},[j]),m.useEffect(()=>{e&&B(!1)},[e]),m.useEffect(()=>{const Y=z.current;if(!(!e||!Y))return L.current=document.activeElement instanceof HTMLElement&&!Y.contains(document.activeElement)?document.activeElement:L.current,X0(Y)},[e]),m.useEffect(()=>{const Y=z.current;if(!Y)return;const Q=()=>{B(!1),requestAnimationFrame(()=>Y.focus({preventScroll:!0}))},ne=()=>B(!0);return Y.addEventListener("bv-ui-activate",Q),Y.addEventListener("bv-ui-minimize",ne),()=>{Y.removeEventListener("bv-ui-activate",Q),Y.removeEventListener("bv-ui-minimize",ne)}},[]),m.useEffect(()=>{const Y=z.current;if(!Y)return;const Q=ne=>{const le=ne.detail;u&&le?.mode&&(P(le.mode),_?.(le.mode)),le?.mode==="floating"&&le.geometry&&M(Li(le.geometry,p))};return Y.addEventListener("bv-ui-set-window-state",Q),()=>Y.removeEventListener("bv-ui-set-window-state",Q)},[u,p.height,p.width,_]),m.useEffect(()=>{e&&(B(!1),requestAnimationFrame(()=>z.current?.focus({preventScroll:!0})))},[c,e]),m.useEffect(()=>{const Y=N.current;N.current=f,f&&M(Q=>Li(V0(Q,Y,f),p))},[f?.height,f?.width,f?.x,f?.y,p.height,p.width]),m.useEffect(()=>{if(!e)return;const Y=()=>M(Q=>Li(Q,p));return window.addEventListener("resize",Y),()=>window.removeEventListener("resize",Y)},[p.height,p.width,e]);const W=Y=>{E!=="floating"||Y.button!==0||Y.target.closest("button,input,select,textarea")||(A.current={pointerId:Y.pointerId,startX:Y.clientX,startY:Y.clientY,kind:"move",x:j.x,y:j.y},Y.currentTarget.setPointerCapture(Y.pointerId),Y.preventDefault())},F=Y=>Q=>{E!=="floating"||Q.button!==0||(A.current={pointerId:Q.pointerId,startX:Q.clientX,startY:Q.clientY,kind:"resize",direction:Y,geometry:j},Q.currentTarget.setPointerCapture(Q.pointerId),Q.preventDefault(),Q.stopPropagation())},ie=Y=>{const Q=A.current;if(!Q||Q.pointerId!==Y.pointerId)return;const ne={x:Y.clientX-Q.startX,y:Y.clientY-Q.startY},le={...p,width:Math.min(p.width,420)};M(Ce=>Li(Q.kind==="move"?{...Ce,x:Q.x+ne.x,y:Q.y+ne.y}:U0(Q.geometry,ne,Q.direction,le),p))},X=Y=>{A.current?.pointerId===Y.pointerId&&(A.current=void 0,requestAnimationFrame(()=>v?.(R.current)))};if(!e)return null;const q=E==="workspace"?void 0:{left:j.x,top:j.y,width:j.width,height:j.height},Z=()=>{h(),requestAnimationFrame(()=>L.current?.focus({preventScroll:!0}))};return s.jsxs(s.Fragment,{children:[O&&s.jsx(ec,{title:t,onRestore:()=>B(!1),onClose:Z}),s.jsxs("div",{ref:z,tabIndex:-1,hidden:O,className:`bv-managed-window ${E} ${x}`.trim(),role:"dialog","aria-modal":E==="workspace","aria-label":t,style:q,onPointerDownCapture:()=>z.current&&yh(z.current),onFocusCapture:()=>z.current&&yh(z.current),onPointerMove:ie,onPointerUp:X,onPointerCancel:X,onKeyDown:Y=>{if(Y.key==="Escape"&&![...document.querySelectorAll(".bv-anchored-popover,[role='listbox'],[role='menu']")].some(ne=>ne.offsetParent!==null)){Y.preventDefault(),Y.stopPropagation(),Z();return}Y.stopPropagation()},children:[s.jsxs("div",{className:"bv-managed-window-surface",children:[s.jsx(j1,{title:t,shortTitle:y,context:o,center:n,mode:E,allowWorkspace:u,menuVisible:k,onMenuVisible:b,onMode:()=>{if(!u)return;const Y=E==="workspace"?"floating":"workspace";P(Y),_?.(Y)},onMinimize:()=>B(!0),onClose:Z,onPointerDown:W}),s.jsx("div",{className:`bv-managed-window-body ${w}`.trim(),children:i}),(a||l)&&s.jsx(B1,{status:a??null,actions:l,stacked:E==="floating"&&j.width<700,minimal:E==="floating"&&j.width<470})]}),E==="floating"&&["n","ne","e","se","s","sw","w","nw"].map(Y=>s.jsx("div",{className:`bv-window-resize-handle ${Y}`,"aria-hidden":"true",onPointerDown:F(Y)},Y))]})]})}function B1({status:e,actions:t,warning:r=!1,stacked:o=!1,minimal:n=!1}){return s.jsxs("footer",{className:`bv-ui-window-footer${r?" has-warning":""}${o?" is-stacked":""}${n?" is-minimal":""}`,children:[s.jsx("div",{className:"bv-ui-window-status",children:e}),t&&s.jsx("div",{className:"bv-ui-window-footer-actions",children:t})]})}function Cf({primary:e,secondary:t,overflow:r=[]}){return s.jsxs("div",{className:"bv-footer-action-set",children:[t&&s.jsx("div",{className:"bv-footer-secondary-actions",children:t}),r.length>0&&s.jsx(hf,{label:"More",actions:r,intent:"ghost",density:"compact"}),s.jsx("div",{className:"bv-footer-primary-action",children:e})]})}function ec({title:e,onRestore:t,onClose:r}){const o=m.useMemo(()=>{let n=document.getElementById("bv-ui-window-shelf");return n||(n=document.createElement("div"),n.id="bv-ui-window-shelf",n.className="bv-ui-window-shelf",document.body.append(n)),n},[]);return m.useEffect(()=>{const n="#graph-canvas, .graph-canvas-container, nav, aside, [role='navigation'], .side-tool-bar-container, .side-bar-panel",i=()=>{const f=document.querySelector("#graph-canvas, .graph-canvas-container")?.getBoundingClientRect()??null,p=[...document.querySelectorAll("nav, aside, [role='navigation'], .side-tool-bar-container, .side-bar-panel")].map(x=>x.getBoundingClientRect()),g=W0(f,p,{width:window.innerWidth,height:window.innerHeight});o.style.setProperty("--bv-ui-window-shelf-left",`${g.left}px`),o.style.setProperty("--bv-ui-window-shelf-bottom",`${g.bottom}px`)},a=new ResizeObserver(i),l=new Set,c=()=>document.querySelectorAll(n).forEach(d=>{l.has(d)||(l.add(d),a.observe(d))}),u=new MutationObserver(()=>{c(),i()});return c(),u.observe(document.body,{childList:!0,subtree:!0}),window.addEventListener("resize",i),i(),()=>{u.disconnect(),a.disconnect(),window.removeEventListener("resize",i)}},[o]),m.useEffect(()=>()=>{requestAnimationFrame(()=>{o.childElementCount||o.remove()})},[o]),Vr.createPortal(s.jsxs("div",{className:"bv-ui-window-shelf-item",children:[s.jsxs("button",{type:"button",className:"bv-ui-window-shelf-restore",onClick:t,title:`Restore ${e}`,children:[s.jsx("span",{className:"bv-ui-window-shelf-icon",children:s.jsx(Nm,{})}),s.jsx("span",{children:e})]}),r&&s.jsx("button",{type:"button",className:"bv-ui-window-shelf-close","aria-label":`Close ${e}`,title:`Close ${e}`,onClick:r,children:s.jsx(Dr,{children:s.jsx("path",{d:"m7 7 10 10M17 7 7 17"})})})]}),o)}function Pa({label:e,value:t,options:r,onNavigate:o}){const n=m.useSyncExternalStore(B0,ni,ni),i=n==="keep",a=Mm(),[l,c]=m.useState(!1),u=m.useRef(null),d=r.filter(k=>k.value!==t);if(!d.length)return null;const f=i?"Keep current window when switching. Hold Shift to replace once.":"Replace current window when switching. Hold Shift to keep once.",p=a.minimal,g=a.narrow,x=s.jsx(_0,{className:"bv-window-node-select",label:e,value:"",options:d,onValue:(k,b)=>o(k,b.shiftKey?i:!i)}),w=s.jsxs("button",{type:"button",role:"switch","aria-label":f,"aria-checked":i,className:"bv-window-switch-mode",title:f,onClick:()=>kf(i?"replace":"keep"),children:[s.jsx("span",{className:"bv-toggle-track",children:s.jsx("span",{})}),s.jsx("span",{"aria-hidden":"true",children:i?"Keep":"Replace"})]});return s.jsxs("div",{className:"bv-window-navigator",children:[!p&&x,!g&&w,g&&s.jsxs("div",{ref:u,className:"bv-window-navigator-overflow",children:[s.jsx("button",{type:"button","aria-label":"More window navigation options","aria-expanded":l,onClick:()=>c(k=>!k),children:"•••"}),s.jsx(jo,{open:l,anchor:u,onClose:()=>c(!1),className:"bv-window-navigator-menu",children:s.jsxs("div",{className:"bv-window-navigator-panel",children:[p&&s.jsx("div",{className:"bv-window-navigator-panel-row is-node",children:x}),s.jsxs("div",{className:"bv-window-navigator-panel-row is-mode",children:[s.jsx("span",{children:"Keep current window"}),w]})]})})]})]})}function Am({onClick:e,storageId:t,editorType:r="regional"}){const[o,n]=m.useState(null),[i,a]=m.useState(""),[l,c]=m.useState(0),u=bf();if(!t)return s.jsxs("button",{type:"button",className:"bv-ui-button bv-ui-button--secondary bv-ui-window-reset",title:"Restore the default panel arrangement",onClick:e,children:[s.jsx(Dr,{children:s.jsx("path",{d:"M4.9 9A7.5 7.5 0 1 1 5 15M4 4v5h5"})}),s.jsx("span",{children:"Reset layout"})]});const d=Lf(r),f=Bi(t),p=d.profiles.find(h=>h.id===f?.profileId),g=()=>c(h=>h+1),x=()=>{if(!f)return;const h=Rh({id:o==="rename"?p?.id:void 0,name:i,editorType:r,editorVersion:"1",library:Sh,signature:`${r}:v1`,layout:f.layout});Ol(t,f.layout,"saved",h.id),n(null),g()},w={editorType:r,editorVersion:"1",library:Sh,signature:`${r}:v1`},k=(h,v)=>f?.status==="modified"?u.confirm({title:"Replace modified layout?",message:`Structural panel changes in this session will be discarded when switching to ${h}.`,confirmLabel:"Switch layout",danger:!0,action:v}):v(),b=[{id:"factory",label:"Factory layout",onSelect:()=>k("Factory",e)},...d.profiles.map(h=>{const v=L1(h,w);return{id:h.id,label:`${h.name}${v?"":" · Incompatible"}`,onSelect:()=>k(h.name,()=>{if(!v){e(),jr({title:"Layout could not be loaded",message:"The saved layout belongs to an incompatible editor version. Factory layout was restored.",tone:"warning",duration:5e3});return}Ol(t,h.layout,"saved",h.id)})}}),{id:"save-as",label:"Save as new layout…",disabled:!f,onSelect:()=>{a(""),n("save")}},...p?[{id:"update",label:`Update ${p.name}`,onSelect:()=>{f&&(Rh({...p,layout:f.layout}),Ol(t,f.layout,"saved",p.id),g())}},{id:"rename",label:"Rename layout…",onSelect:()=>{a(p.name),n("rename")}},{id:"delete",label:"Delete layout",danger:!0,onSelect:()=>{R1(r,p.id),e(),g()}}]:[]];return s.jsxs(s.Fragment,{children:[s.jsx(hf,{label:`${p?.name??"Factory"}${f?.status&&f.status!=="saved"?` · ${f.status[0].toUpperCase()}${f.status.slice(1)}`:""}`,icon:s.jsx(Dr,{children:s.jsx("path",{d:"M4 5h16v14H4zM8 5v14M8 10h12"})}),actions:b}),s.jsx(Da,{open:!!o,title:o==="rename"?"Rename layout":"Save layout",onClose:()=>n(null),footer:s.jsx(oe,{intent:"primary",onClick:x,children:o==="rename"?"Rename":"Save layout"}),children:s.jsx(cn,{label:"Layout name",value:i,maxLength:40,onValue:a})}),u.dialog]})}const Dm=new Map;let Im;function _r(e,t){const r=String(t);r&&Dm.set(e,r),r&&e!=="quick"&&(Im=e)}function P1(){return Im}function po(e){return Dm.get(e)}function ds({label:e,value:t,onImport:r,allowImport:o=!0}){const[n,i]=m.useState(!1),[a,l]=m.useState(""),[c,u]=m.useState(""),d=async()=>{try{await navigator.clipboard.writeText(JSON.stringify(t,null,2)),jr({title:"Draft copied",message:`${e} draft JSON was copied to the clipboard.`,tone:"success",duration:4e3})}catch{jr({title:"Clipboard unavailable",message:"Copy the draft from the import/export dialog instead.",tone:"warning",duration:4e3}),l(JSON.stringify(t,null,2)),i(!0)}},f=()=>{try{const g=JSON.parse(a);r(g),i(!1),u("")}catch(g){u(g instanceof Error?g.message:"Invalid draft JSON")}},p=()=>{l(""),u(""),i(!0)};return s.jsxs(s.Fragment,{children:[s.jsx(oe,{intent:"ghost",onClick:d,children:"Copy draft"}),o&&s.jsx(oe,{intent:"ghost",onClick:p,children:"Import draft"}),s.jsx(Da,{open:n,title:`Import ${e} draft`,description:"Imported JSON updates only the editor draft. Save explicitly to update the workflow.",onClose:()=>i(!1),footer:s.jsxs(s.Fragment,{children:[s.jsx(oe,{intent:"ghost",iconOnly:!0,"aria-label":"Paste from clipboard",title:"Paste from clipboard",onClick:async()=>{try{l(await navigator.clipboard.readText())}catch{u("Clipboard permission was not granted.")}},children:"⌘"}),s.jsx(oe,{intent:"primary",onClick:f,children:"Import draft"})]}),children:s.jsx(x0,{label:"Draft JSON",value:a,rows:14,resize:"vertical",error:c,onValue:l})})]})}const Wr=(e,t)=>JSON.stringify(e)===JSON.stringify(t),Po=e=>e?.id??e?.key;function rd(e,t,r,o="draft"){if(Wr(r,e))return{ok:!0,value:structuredClone(t)};if(Wr(t,e))return{ok:!0,value:structuredClone(r)};if(Wr(t,r))return{ok:!0,value:structuredClone(t)};if(Array.isArray(e)&&Array.isArray(t)&&Array.isArray(r)){if(![...e,...t,...r].every(w=>Po(w)!=null))return{ok:!1,reason:`Concurrent list change at ${o}`};const n=e.map(Po),i=t.map(Po),a=r.map(Po),l=!Wr(n,i.filter(w=>n.includes(w))),c=!Wr(n,a.filter(w=>n.includes(w)));if(l&&c&&!Wr(i,a))return{ok:!1,reason:`Concurrent reorder at ${o}`};const u=new Map(e.map(w=>[Po(w),w])),d=new Map(t.map(w=>[Po(w),w])),f=new Map(r.map(w=>[Po(w),w])),p=l?i:a,g=[...p,...i,...a].filter((w,k,b)=>b.indexOf(w)===k),x=[];for(const w of g){const k=u.get(w),b=d.get(w),h=f.get(w);if(k&&b&&!h&&!Wr(k,b))return{ok:!1,reason:`Edited item ${w} was removed externally`};if(k&&!b&&h&&!Wr(k,h))return{ok:!1,reason:`Removed item ${w} changed externally`};if(!b&&!h)continue;if(!k){if(b&&h&&!Wr(b,h))return{ok:!1,reason:`Item ${w} was added differently`};x.push(structuredClone(b??h));continue}if(!b||!h){x.push(structuredClone(b??h));continue}const v=rd(k,b,h,`${o}.${w}`);if(!v.ok)return v;x.push(v.value)}return{ok:!0,value:x}}if(e&&t&&r&&typeof e=="object"&&typeof t=="object"&&typeof r=="object"){const n={};for(const i of new Set([...Object.keys(e),...Object.keys(t),...Object.keys(r)])){const a=rd(e[i],t[i],r[i],`${o}.${i}`);if(!a.ok)return a;n[i]=a.value}return{ok:!0,value:n}}return{ok:!1,reason:`Concurrent value change at ${o}`}}function z1(){const[e,t]=m.useState(sn);m.useEffect(()=>{const o=n=>t(n.detail);return window.addEventListener(ri,o),()=>window.removeEventListener(ri,o)},[]);const r=(o,n)=>ff({...e,controls:e.controls.map(i=>i.id===o?{...i,enabled:n}:i)});return e.controls.length?s.jsx("div",{className:"bv-control-live-list",children:e.controls.map(o=>s.jsx(eo,{label:o.name,checked:o.enabled,onValue:n=>r(o.id,n)},o.id))}):s.jsx(Fr,{tone:"info",title:"No controls configured",children:"Create a control in Configuration before using live workflow states."})}const F1=({open:e,onClose:t,hasControlNodes:r=!0})=>{const[o,n]=m.useState(0),i=sn().controls.length>0,a=m.useMemo(()=>({global:{tabEnableClose:!1,tabEnableDrag:!1,tabEnablePopout:!1,tabEnablePopoutIcon:!1,tabEnableFloat:!1},borders:[],layout:{type:"row",children:[{type:"tabset",selected:i?0:1,children:[{type:"tab",id:"control-center-controls",name:"Controls",component:"controls",enableClose:!1,enableDrag:!1},{type:"tab",id:"control-center-configuration",name:"Configuration",component:"configuration",enableClose:!1,enableDrag:!1}]}]}}),[i]);return s.jsxs(xn,{open:e,title:"BV Control Center",shortTitle:"Control Center",initialGeometry:{width:860,height:640},minSize:{width:420,height:360},onClose:t,status:"Workflow-wide controls are saved automatically.",actions:s.jsx(Am,{storageId:"control-center",editorType:"control-center",onClick:()=>n(l=>l+1)}),children:[!r&&s.jsx(Fr,{tone:"warning",title:"No Control Center nodes in workflow",children:"The workflow configuration is still available. Closing this window makes it unavailable until a Control Center node is added."}),s.jsx(Lm,{storageId:"control-center",resetSignal:o+(i?0:1),defaultModel:a,panels:[{id:"controls",title:"Controls",weight:1,content:s.jsx(z1,{})},{id:"configuration",title:"Configuration",weight:1,content:s.jsx(D0,{})}]})]})},jm=()=>globalThis.__bvSmartPipeEditorBridge??{},Nf=e=>String(e?.type??e?.comfyClass??""),zc=e=>Nf(e)==="BV Smart Pipe Merge"?"merge":"pipe",fs=()=>ct().rootGraph??ct().graph,Ch=()=>Ef(fs(),e=>["BV Smart Pipe","BV Smart Pipe Merge"].includes(Nf(e)));function U1(){const[e,t]=m.useState([]),[r,o]=m.useState(null),[n,i]=m.useState(0),[a,l]=m.useState({}),c=m.useRef(new Map),[u,d]=m.useState(null),f=()=>({mode:"floating",geometry:{x:Math.max(16,(window.innerWidth-860)/2),y:Math.max(16,(window.innerHeight-650)/2),width:860,height:650}}),p=k=>`${k.kind}:${ma(fs(),k.node)}`,g=(k,b)=>c.current.get(k)?.dirty?d({key:k,action:b}):b(),x=(k,b)=>{const h=p(k),v=r,_=()=>{_r(k.kind,ma(fs(),k.node)),t(y=>{const T=b&&v&&v!==h?y.filter(S=>S.key!==v):y;return T.some(S=>S.key===h)?T:[...T,{key:h,target:k}]}),l(y=>({...y,[h]:v&&y[v]?structuredClone(y[v]):y[h]??f()})),o(h),i(y=>y+1)};b&&v&&v!==h?g(v,_):_()},w=k=>g(k,()=>{c.current.delete(k),t(b=>b.filter(h=>h.key!==k)),l(b=>{const h={...b};return delete h[k],h}),o(b=>b===k?null:b)});return m.useEffect(()=>{const k=b=>{const h=b.detail;h?.node&&x({node:h.node,kind:h.kind??zc(h.node)},ni()==="replace")};return window.addEventListener("bv-open-smart-pipe-editor",k),()=>window.removeEventListener("bv-open-smart-pipe-editor",k)}),s.jsxs(s.Fragment,{children:[e.map(k=>{const b=a[k.key]??f();return s.jsx(V1,{sessionKey:k.key,target:k.target,open:k.key===r,activation:n,presentation:b,onPresentation:h=>l(v=>({...v,[k.key]:h})),onActions:h=>c.current.set(k.key,h),onClose:()=>w(k.key),onRemap:h=>t(v=>v.map(_=>_.key===k.key?{..._,target:{node:h,kind:zc(h)}}:_)),onNavigate:(h,v)=>x({node:h,kind:zc(h)},v)},k.key)}),e.filter(k=>k.key!==r).map(k=>s.jsx(ec,{title:`${k.target.kind==="merge"?"Smart Pipe Merge":"Smart Pipe Editor"} · ${k.target.node.title||`#${k.target.node.id}`}`,onRestore:()=>x(k.target,!1),onClose:()=>w(k.key)},`shelf:${k.key}`)),s.jsx(gf,{open:!!u,editorName:"Smart Pipe editor",onKeep:()=>d(null),onDiscard:()=>{const k=u;k&&c.current.get(k.key)?.discard(),d(null),k?.action()},onSave:()=>{const k=u;k&&c.current.get(k.key)?.save(),d(null),k?.action()}})]})}function V1({sessionKey:e,target:t,open:r,activation:o,presentation:n,onPresentation:i,onActions:a,onClose:l,onRemap:c,onNavigate:u}){const d=jm()[t.kind],f=m.useMemo(()=>d?.read(t.node)??{},[d,t.node]),p=Ks(f),g=p.value;qs(p);const x=m.useRef(structuredClone(f)),w=m.useRef(!1),[k,b]=m.useState(null),h=m.useMemo(()=>ma(fs(),t.node),[t.node]);m.useEffect(()=>{const j=()=>{const M=Ch().find(L=>L.key===h);if(!M){b("missing");return}if(M.node!==t.node){c(M.node);return}if(w.current)return;const E=d?.read(t.node)??{};if(JSON.stringify(E)===JSON.stringify(x.current))return;if(!p.canUndo){x.current=structuredClone(E),p.replace(E,!0),b(null);return}const z=rd(x.current,g,E);z.ok?(x.current=structuredClone(E),p.replace(z.value)):b(z.reason)};return Jr().addEventListener("graphChanged",j),()=>Jr().removeEventListener("graphChanged",j)},[d,g,p.canUndo,p.replace,c,t.node,h]);const v=hi(t.node),_=Ch(),y=_.filter(j=>vn(j.node)).map(j=>({value:j.key,label:`${j.breadcrumb?`${j.breadcrumb} › `:""}${j.node.title||Nf(j.node)} · #${j.node.id}`})),T=j=>p.commit(M=>(j(M),M)),S=t.kind==="pipe"?d?.validation?.(t.node,g)??[]:[],P=()=>{w.current=!0;try{d?.save(t.node,g);const j=d?.read(t.node)??g;x.current=structuredClone(j),p.replace(j,!0),b(null)}finally{w.current=!1}},O=()=>{const j=d?.read(t.node)??{};x.current=structuredClone(j),p.replace(j,!0),b(null)};m.useEffect(()=>{a({dirty:p.canUndo,save:P,discard:O})},[d,g,p.canUndo,p.replace,a,e,t.node]);const B=s.jsx(Pa,{label:"Smart Pipe node",value:_.find(j=>j.node===t.node)?.key??"",options:y,onNavigate:(j,M)=>{const E=_.find(z=>z.key===j);E&&u(E.node,M)}});return s.jsx(xn,{open:r,activationToken:o,title:t.kind==="merge"?"Smart Pipe Merge":"Smart Pipe Editor",shortTitle:"Smart Pipe",menuVisible:v,onMenuVisible:j=>mn(t.node,j),context:B,mode:n.mode,initialGeometry:n.geometry,onModeChange:j=>i({...n,mode:j}),onGeometry:j=>i({...n,geometry:j}),minSize:{width:420,height:360},onClose:l,status:S.length?"Required inputs missing":p.canUndo?"Unsaved changes":"Saved",actions:s.jsx(Cf,{primary:s.jsx(oe,{intent:"primary",onClick:P,children:"Save"}),secondary:s.jsxs(s.Fragment,{children:[s.jsx(oe,{disabled:!p.canUndo,onClick:O,children:"Discard"}),s.jsx(ds,{label:t.kind==="merge"?"Smart Pipe Merge":"Smart Pipe",value:{schema:"bv.editor-draft",version:1,type:t.kind,data:g},onImport:j=>{if(j?.schema!=="bv.editor-draft"||j?.version!==1||j?.type!==t.kind||!j?.data)throw new Error("Draft type or version does not match this editor.");p.replace(j.data)}})]}),overflow:[{id:"undo",label:"Undo",disabled:!p.canUndo,onSelect:p.undo},{id:"redo",label:"Redo",disabled:!p.canRedo,onSelect:p.redo}]}),children:k?s.jsxs(Fr,{tone:"danger",title:k==="missing"?"Node no longer exists":"Smart Pipe changed externally",children:[k==="missing"?"This draft cannot be saved because its workflow node was removed.":"An external change could not be migrated safely. Reload the editor to discard the incompatible draft.",s.jsxs("div",{className:"bv-callout-actions",children:[s.jsx(ds,{label:t.kind==="merge"?"Smart Pipe Merge":"Smart Pipe",value:{schema:"bv.editor-draft",version:1,type:t.kind,data:g},onImport:()=>{},allowImport:!1}),s.jsx(oe,{onClick:()=>{if(k==="missing")l();else{const j=d?.read(t.node)??{};x.current=structuredClone(j),p.replace(j,!0),b(null)}},children:k==="missing"?"Close window":"Reload editor"})]})]}):t.kind==="pipe"?s.jsx(W1,{node:t.node,draft:g,update:T}):s.jsx(H1,{draft:g,update:T})})}function W1({node:e,draft:t,update:r}){const o=jm().pipe,[n,i]=m.useState(()=>o?.predecessor(e)??{value:"Start new pipe",options:[]}),a=o?.validation?.(e,t)??[];m.useEffect(()=>{const f=()=>i(o?.predecessor(e)??{value:"Start new pipe",options:[]});Jr().addEventListener("graphChanged",f);const p=window.setInterval(f,750);return()=>{Jr().removeEventListener("graphChanged",f),window.clearInterval(p)}},[o,e]);const l=t.definition?.localSlots??[],c=t.projection?.inheritedSlots??[],u=[...l.map((f,p)=>({id:f.id,title:f.name||"New slot",description:"Local · input required",summary:f.type||"*",content:s.jsxs("div",{className:"bv-ui-stack",children:[s.jsx(cn,{label:"Name",value:f.name??"",onValue:g=>r(x=>{x.definition.localSlots[p].name=g})}),s.jsx(cn,{label:"Type",value:f.type??"*",onValue:g=>r(x=>{x.definition.localSlots[p].type=g||"*"})}),s.jsx(eo,{label:"Expose output",checked:!!f.showOutput,onValue:g=>r(x=>{x.definition.localSlots[p].showOutput=g})})]})})),...c.map((f,p)=>({id:f.id,title:f.name||f.id,description:"Inherited override",content:s.jsxs("div",{className:"bv-ui-stack",children:[s.jsx(eo,{label:"Expose input",checked:!!f.showInput,onValue:g=>r(x=>{x.projection.inheritedSlots[p].showInput=g})}),s.jsx(eo,{label:"Expose output",checked:!!f.showOutput,onValue:g=>r(x=>{x.projection.inheritedSlots[p].showOutput=g})})]})}))],d=()=>r(f=>{f.definition.localSlots.push({id:crypto.randomUUID(),name:"new_slot",ordinal:f.definition.nextOrdinal++,type:"*",showInput:!0,showOutput:!1})});return s.jsxs("div",{className:"bv-ui-stack",children:[s.jsx(qe,{label:"Pipe predecessor",value:n.value,options:n.options.length?n.options:[{value:n.value,label:n.value}],onValue:f=>{o?.setPredecessor(e,f),i(o?.predecessor(e)??{value:f,options:n.options})}}),a.length>0&&s.jsx(Fr,{tone:"danger",title:"Required Smart Pipe inputs are missing",children:a.map(f=>s.jsx("div",{children:f.message},f.id))}),s.jsx(oe,{onClick:d,children:"Add slot"}),u.length?s.jsx(Ia,{items:u,onReorder:f=>r(p=>{const g=new Map(p.definition.localSlots.map(x=>[x.id,x]));p.definition.localSlots=f.map(x=>g.get(x.id)).filter(Boolean)}),onRemove:f=>r(p=>{p.definition.localSlots=p.definition.localSlots.filter(g=>g.id!==f),p.projection.inheritedSlots=p.projection.inheritedSlots.filter(g=>g.id!==f)})}):s.jsx(Ys,{title:"No slots",description:"Add a local slot or connect a predecessor."})]})}function H1({draft:e,update:t}){const r=e.sources??[],[o,n]=m.useState(""),i=r.map(c=>({id:c.key,title:c.label||c.key,description:c.mode==="wired"?"Wired":"Wireless"})),a=e.candidates?.find(c=>c.address===o),l=()=>{a&&(t(c=>c.sources.push({key:`pipe_${String(c.sources.length+1).padStart(3,"0")}`,mode:"wireless",address:a.address,label:a.label})),n(""))};return s.jsxs("div",{className:"bv-ui-stack",children:[s.jsxs("div",{className:"bv-ui-inline-footer bv-smart-pipe-merge-source",children:[s.jsx(qe,{label:"Wireless source",value:o,options:(e.candidates??[]).map(c=>({value:c.address,label:c.label})),onValue:n}),s.jsx(oe,{disabled:!a,onClick:l,children:"Add"})]}),i.length?s.jsx(Ia,{items:i,onReorder:c=>t(u=>{const d=new Map(u.sources.map(f=>[f.key,f]));u.sources=c.map(f=>d.get(f.id)).filter(Boolean)}),onRemove:c=>t(u=>{u.sources=u.sources.filter(d=>d.key!==c)})}):s.jsx(Ys,{title:"No merge sources",description:"Connect a pipe or add a wireless source."})]})}const $1=`:root{--bv-primary-color: #1345b7;--bv-secondary-color: #24212b;--bv-text-color: #f2eef8;--bv-accent-color: #d35d71;--bv-bg-color: #1e1c24;--bv-border-color: rgba(231,225,247,.2);--bv-muted-text-color: #aaa2b5;--bv-layer-window:1400;--bv-layer-shelf:1410;--bv-layer-flyout:1500;--bv-layer-modal:1550;--bv-layer-toast:1600}:root.comfy-theme-light #bv-root{--bv-primary-color: #1345b7;--bv-secondary-color: #34495e;--bv-text-color: #2c3e50;--bv-accent-color: #c0392b;--bv-bg-color: #ecf0f1;--bv-border-color: #bdc3c7;--bv-muted-text-color: #7f8c8d}.bv-modal{position:fixed;inset:0;z-index:var(--bv-layer-modal);display:grid;place-items:center;padding:24px;background:#0009;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;color:var(--bv-text-color)}.bv-modal *{box-sizing:border-box}:root{--bv-ui-scale:1.125}:root.bv-ui-size-compact{--bv-ui-scale:1}:root.bv-ui-size-default{--bv-ui-scale:1.125}:root.bv-ui-size-large{--bv-ui-scale:1.25}.bv-ui,#bv-root,.bv-ui-portal,.bv-completion-popup{--bv-ui-bg:#121116;--bv-ui-surface:#1e1c24;--bv-ui-surface-raised:#24212b;--bv-ui-input:#17161b;--bv-ui-text:#f2eef8;--bv-ui-muted:#aaa2b5;--bv-ui-border:rgba(231,225,247,.14);--bv-ui-border-hover:rgba(231,225,247,.25);--bv-ui-accent:#1345b7;--bv-ui-accent-hover:#4c74c9;--bv-ui-accent-light:#5a7dcd;--bv-ui-accent-soft:#b2c2e6;--bv-ui-accent-rgb:19,69,183;--bv-ui-danger:#d35d71;--bv-ui-warning:#e9b65f;--bv-ui-success:#55c994;--bv-ui-control-height-comfortable:calc(42px * var(--bv-ui-scale));--bv-ui-control-height-compact:calc(30px * var(--bv-ui-scale));--bv-ui-control-height:var(--bv-ui-control-height-compact);--bv-ui-field-gap-comfortable:calc(6px * var(--bv-ui-scale));--bv-ui-field-gap-compact:calc(4px * var(--bv-ui-scale));--bv-ui-field-gap:var(--bv-ui-field-gap-compact);--bv-ui-content-padding-comfortable:calc(11px * var(--bv-ui-scale));--bv-ui-content-padding-compact:calc(8px * var(--bv-ui-scale));--bv-ui-content-padding:var(--bv-ui-content-padding-compact);--bv-ui-row-height-comfortable:calc(38px * var(--bv-ui-scale));--bv-ui-row-height-compact:calc(30px * var(--bv-ui-scale));--bv-ui-row-height:var(--bv-ui-row-height-compact);--bv-ui-textarea-height-comfortable:calc(100px * var(--bv-ui-scale));--bv-ui-textarea-height-compact:calc(76px * var(--bv-ui-scale));--bv-ui-textarea-height:var(--bv-ui-textarea-height-compact);--bv-ui-check-size-comfortable:calc(18px * var(--bv-ui-scale));--bv-ui-check-size-compact:calc(16px * var(--bv-ui-scale));--bv-ui-check-size:var(--bv-ui-check-size-compact);--bv-ui-radius-sm:calc(2px * var(--bv-ui-scale));--bv-ui-radius:calc(4px * var(--bv-ui-scale));--bv-ui-radius-lg:calc(6px * var(--bv-ui-scale));color:var(--bv-ui-text);font:calc(12px * var(--bv-ui-scale))/1.45 system-ui,-apple-system,"Segoe UI",sans-serif}.bv-density-comfortable{--bv-ui-control-height:var(--bv-ui-control-height-comfortable);--bv-ui-field-gap:var(--bv-ui-field-gap-comfortable);--bv-ui-content-padding:var(--bv-ui-content-padding-comfortable);--bv-ui-row-height:var(--bv-ui-row-height-comfortable);--bv-ui-textarea-height:var(--bv-ui-textarea-height-comfortable);--bv-ui-check-size:var(--bv-ui-check-size-comfortable)}.bv-density-compact{--bv-ui-control-height:var(--bv-ui-control-height-compact);--bv-ui-field-gap:var(--bv-ui-field-gap-compact);--bv-ui-content-padding:var(--bv-ui-content-padding-compact);--bv-ui-row-height:var(--bv-ui-row-height-compact);--bv-ui-textarea-height:var(--bv-ui-textarea-height-compact);--bv-ui-check-size:var(--bv-ui-check-size-compact)}:is(.bv-ui,#bv-root,.bv-ui-portal),:is(.bv-ui,#bv-root,.bv-ui-portal) *,:is(.bv-ui,#bv-root,.bv-ui-portal) *:before,:is(.bv-ui,#bv-root,.bv-ui-portal) *:after{box-sizing:border-box}:is(.bv-ui,#bv-root,.bv-ui-portal) :where(button,input,select,textarea){box-sizing:border-box;margin:0;font:inherit;color:inherit;letter-spacing:inherit}:is(.bv-ui,#bv-root,.bv-ui-portal) :where(button){appearance:none}.bv-ui-dialog{width:min(680px,calc(100vw - 32px));max-height:min(86vh,900px);margin:auto;padding:0;overflow:hidden;color:var(--bv-ui-text);background:var(--bv-ui-surface);border:1px solid var(--bv-ui-border-hover);border-radius:var(--bv-ui-radius-lg);box-shadow:0 28px 90px #000c}.bv-ui-dialog--small{width:min(480px,calc(100vw - 32px))}.bv-ui-dialog--large{width:min(1040px,calc(100vw - 32px))}.bv-ui-dialog::backdrop{background:#08070a9e}.bv-ui-overlay{position:fixed;z-index:var(--bv-layer-modal);inset:0;display:grid;place-items:center;padding:16px;background:#08070a9e}.bv-ui-overlay--modeless{pointer-events:none;place-items:start end;background:transparent}.bv-ui-overlay--modeless>.bv-ui-dialog{pointer-events:auto}.bv-ui-dialog__header{display:flex;align-items:flex-start;gap:16px;padding:calc(15px * var(--bv-ui-scale)) calc(17px * var(--bv-ui-scale));background:var(--bv-ui-surface-raised);border-bottom:1px solid var(--bv-ui-border)}.bv-ui-dialog__header>div{min-width:0;flex:1}.bv-ui-dialog__header h2,.bv-ui-dialog__header p{margin:0}.bv-ui-dialog__header h2{font-size:calc(16px * var(--bv-ui-scale));line-height:1.3}.bv-ui-dialog__header p{margin-top:4px;color:var(--bv-ui-muted);font-size:calc(11px * var(--bv-ui-scale))}.bv-ui-dialog__body{display:grid;gap:calc(13px * var(--bv-ui-scale));max-height:calc(86vh - 132px);padding:calc(17px * var(--bv-ui-scale));overflow:auto}.bv-ui-dialog__footer{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:calc(8px * var(--bv-ui-scale));padding:calc(11px * var(--bv-ui-scale)) calc(17px * var(--bv-ui-scale));background:var(--bv-ui-surface-raised);border-top:1px solid var(--bv-ui-border)}.bv-ui-button{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:var(--bv-ui-control-height);padding:0 calc(13px * var(--bv-ui-scale));color:var(--bv-ui-text);background:var(--bv-ui-surface-raised);border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius);cursor:pointer;transition:background-color .12s ease,border-color .12s ease,transform .08s ease}.bv-ui-button:hover:not(:disabled){background:#302d39;border-color:var(--bv-ui-border-hover)}.bv-ui-button:active:not(:disabled){transform:translateY(1px)}.bv-ui-button:focus-visible{outline:3px solid rgba(var(--bv-ui-accent-rgb),.25);outline-offset:2px}.bv-ui-button:disabled{opacity:.43;cursor:not-allowed}.bv-ui-button--primary{background:var(--bv-ui-accent);border-color:var(--bv-ui-accent-hover)}.bv-ui-button--primary:hover:not(:disabled){background:var(--bv-ui-accent-hover)}.bv-ui-button--ghost{color:var(--bv-ui-muted);background:transparent;border-color:transparent}.bv-ui-button--ghost:hover:not(:disabled){color:var(--bv-ui-text);background:#ffffff0f}.bv-ui-button--danger{background:#d35d7121;border-color:#d35d7152;color:#f19aa8}.bv-ui-button--icon{width:var(--bv-ui-control-height);padding:0;font-size:calc(20px * var(--bv-ui-scale));line-height:1}.bv-ui-field{display:grid;gap:calc(6px * var(--bv-ui-scale));min-width:0}.bv-ui-field__label{color:var(--bv-ui-muted);font-size:calc(11px * var(--bv-ui-scale))}.bv-ui-field__description{color:var(--bv-ui-muted);font-size:calc(10px * var(--bv-ui-scale));line-height:1.4}.bv-ui .bv-ui-field input,.bv-ui .bv-ui-field select,.bv-ui .bv-ui-field textarea{width:100%;min-height:var(--bv-ui-control-height);padding:0 calc(11px * var(--bv-ui-scale));color:var(--bv-ui-text);background:var(--bv-ui-input);border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius);outline:0}.bv-ui .bv-ui-field textarea{min-height:120px;padding-block:10px;resize:vertical}.bv-ui .bv-ui-field input:focus,.bv-ui .bv-ui-field select:focus,.bv-ui .bv-ui-field textarea:focus{border-color:var(--bv-ui-accent);box-shadow:0 0 0 3px rgba(var(--bv-ui-accent-rgb),.18)}.bv-ui-status{min-height:1.45em;margin:0;color:var(--bv-ui-muted);font-size:calc(10px * var(--bv-ui-scale))}.bv-ui-status--error{color:#f19aa8}.bv-ui-card-list{display:grid;gap:calc(10px * var(--bv-ui-scale))}.bv-ui-card-list>.bv-detailer-card{background:#12111675;border-color:var(--bv-ui-border);border-radius:var(--bv-ui-radius-lg)}.bv-ui-stack{display:grid;gap:calc(13px * var(--bv-ui-scale));min-width:0}.bv-ui-inline-footer{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:calc(8px * var(--bv-ui-scale));padding-top:calc(12px * var(--bv-ui-scale));border-top:1px solid var(--bv-ui-border)}.bv-smart-pipe-merge-source{align-items:end;justify-content:flex-start}.bv-smart-pipe-merge-source>.bv-control-field{flex:1 1 260px;min-width:min(260px,100%)}.bv-smart-pipe-merge-source>.bv-button{flex:0 0 auto}.inspector-tabs{position:sticky;z-index:3;top:0;display:flex;align-items:stretch;gap:2px;min-height:34px;padding:0 8px;background:var(--bv-ui-surface-raised);border-bottom:1px solid var(--bv-ui-border)}.inspector-tabs button{position:relative;min-width:0;min-height:34px;padding:0 10px;overflow:hidden;color:var(--bv-ui-muted);text-overflow:ellipsis;white-space:nowrap;background:transparent!important;border:0!important;border-radius:0!important;box-shadow:none!important;cursor:pointer}.inspector-tabs button:hover:not(:disabled){color:var(--bv-ui-text);background:#ffffff09!important}.inspector-tabs button[aria-selected=true]{color:var(--bv-ui-text)}.inspector-tabs button[aria-selected=true]:after{content:"";position:absolute;right:0;bottom:-1px;left:0;height:2px;background:var(--bv-ui-accent)}.inspector-tabs button:disabled{opacity:.38;cursor:not-allowed}.inspector-tab-panel[hidden]{display:none}.inspector-tab-panel{min-width:0}:root.bv-ui-reduced-effects .bv-ui *,:root.bv-ui-reduced-effects .bv-ui *:before,:root.bv-ui-reduced-effects .bv-ui *:after,:root.bv-ui-reduced-effects #bv-root *,:root.bv-ui-reduced-effects #bv-root *:before,:root.bv-ui-reduced-effects #bv-root *:after{animation:none!important;transition:none!important;backdrop-filter:none!important;filter:none!important}.bv-regional-dock-host{display:block!important;min-width:0;min-height:0}.bv-ui-dock{position:relative;width:100%;height:100%;min-width:0;min-height:0;overflow:hidden;--flexlayout-font-family:system-ui,-apple-system,"Segoe UI",sans-serif;--flexlayout-font-size:calc(12px * var(--bv-ui-scale));--flexlayout-color-text:var(--bv-ui-text);--flexlayout-color-background:var(--bv-ui-input);--flexlayout-color-base:var(--bv-ui-input);--flexlayout-color-1:var(--bv-ui-surface);--flexlayout-color-2:var(--bv-ui-surface-raised);--flexlayout-color-3:#20283a;--flexlayout-color-4:#263655;--flexlayout-color-5:#0a2665;--flexlayout-color-6:#0d3080;--flexlayout-color-focus:var(--bv-ui-accent);--flexlayout-color-icon:var(--bv-ui-muted);--flexlayout-color-splitter:rgba(231,225,247,.08);--flexlayout-color-splitter-hover:#4c74c9;--flexlayout-color-splitter-drag:#5a7dcd;--flexlayout-color-splitter-handle:#b2c2e6;--flexlayout-color-drag1:#7d97d7;--flexlayout-color-drag2:#5a7dcd;--flexlayout-color-drag1-background:rgba(var(--bv-ui-accent-rgb),.2);--flexlayout-color-drag2-background:rgba(var(--bv-ui-accent-rgb),.18);--flexlayout-color-drag-rect-border:#5a7dcd;--flexlayout-color-drag-rect-background:var(--bv-ui-surface-raised);--flexlayout-color-drag-rect:var(--bv-ui-text);--flexlayout-color-edge-marker:rgba(var(--bv-ui-accent-rgb),.72);--flexlayout-color-edge-icon:#fff;--flexlayout-color-toolbar-button-hover:rgba(var(--bv-ui-accent-rgb),.16);--flexlayout-splitter-size:9px;--flexlayout-splitter-active-size:13px;--flexlayout-splitter-handle-visibility:visible}.bv-ui-dock .flexlayout__splitter{transition:background-color .12s ease,box-shadow .12s ease}.bv-ui-dock .flexlayout__splitter:hover{box-shadow:0 0 12px rgba(var(--bv-ui-accent-rgb),.32)}.bv-ui-dock .flexlayout__splitter_handle_horz{width:2px;height:34px;opacity:.72}.bv-ui-dock .flexlayout__splitter_handle_vert{width:34px;height:2px;opacity:.72}.bv-ui-dock .flexlayout__tabset_tabbar_outer{height:calc(37px * var(--bv-ui-scale));padding:calc(8px * var(--bv-ui-scale)) 6px 0;background:var(--bv-ui-surface-raised);border-bottom:1px solid var(--bv-ui-border)}.bv-ui-dock .flexlayout__tabset_tabbar_inner{height:calc(29px * var(--bv-ui-scale));gap:2px;align-items:stretch}.bv-ui-dock .flexlayout__tab_button{position:relative;min-height:calc(29px * var(--bv-ui-scale));padding:0 calc(10px * var(--bv-ui-scale));color:var(--bv-ui-muted);background:transparent;border:1px solid transparent;border-bottom:0;border-radius:var(--bv-ui-radius-sm) var(--bv-ui-radius-sm) 0 0}.bv-ui-dock .flexlayout__tab_button--selected{color:var(--bv-ui-text);background:#fff1;border-color:#ffffff0b}.bv-ui-dock .flexlayout__tab_button--selected:after{content:"";position:absolute;right:-1px;bottom:-1px;left:-1px;height:2px;background:var(--bv-ui-accent)}.bv-ui-dock .flexlayout__tab_toolbar_button{width:29px;height:29px;padding:6px;color:var(--bv-ui-muted);border:0;background:transparent}.bv-ui-dock .flexlayout__float_window_content .flexlayout__tab_toolbar_button-float{display:none}.bv-ui-dock .flexlayout__tab{overflow:hidden;background:var(--bv-ui-surface)}.bv-ui-dock .bv-regional-work,.bv-ui-dock aside{width:100%;height:100%;min-width:0;min-height:0}.bv-dialog{width:min(900px,92vw);max-height:84vh}.bv-rack{width:100%;max-height:84vh;overflow:auto;padding:calc(18px * var(--bv-ui-scale));border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius-lg);background:var(--bv-ui-surface);box-shadow:0 18px 60px #0009}.bv-rack header,.bv-rack footer,.bv-control-title,.bv-assignments>div{display:flex;align-items:center;gap:10px}.bv-rack header{justify-content:space-between;border-bottom:1px solid #ffffff20;margin-bottom:16px}.bv-rack h2{margin:0}.bv-rack p{margin-top:4px;color:var(--bv-muted-text-color)}.bv-force{display:flex;gap:8px;padding:10px 12px;background:#ffffff08;border-radius:var(--bv-ui-radius)}.bv-controls{display:grid;gap:12px;margin:16px 0}.bv-control-card{border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius-lg);padding:calc(12px * var(--bv-ui-scale));background:#ffffff09}.bv-control-title input{flex:1;font-weight:650}.bv-control-title span{color:var(--bv-muted-text-color)}.bv-assignments{display:grid;gap:6px;margin:10px 0}.bv-assignments>div span{flex:1}.bv-assignments>div span small{display:block;margin-top:3px;color:#ffbd66}.bv-assignments .conflict{border-left:2px solid #ffbd66;padding-left:8px}.bv-assignments .unresolved{color:#ff9f7a}.bv-rack input,.bv-rack select,.bv-rack button{min-height:var(--bv-ui-control-height);color:inherit;background:var(--bv-ui-input);border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius);padding:7px 9px}.bv-rack button{cursor:pointer}.bv-rack button.primary{background:var(--bv-ui-accent);border-color:var(--bv-ui-accent-hover)}.bv-rack footer{justify-content:flex-end}.bv-regional-shell{position:fixed;z-index:var(--bv-layer-window);box-sizing:border-box;display:flex;flex-direction:column;min-width:0;min-height:0;resize:none;overflow:hidden;color:var(--bv-ui-text);background:var(--bv-ui-surface);border:1px solid var(--bv-ui-border-hover);border-radius:var(--bv-ui-radius-lg);box-shadow:0 20px 70px #000b;font:calc(12px * var(--bv-ui-scale))/1.4 system-ui,-apple-system,"Segoe UI",sans-serif}.bv-regional-shell.floating{resize:both;box-shadow:0 14px 48px #000c}.bv-regional-shell *{box-sizing:border-box}.bv-regional-shell header,.bv-regional-shell nav,.bv-regional-shell footer{display:flex;align-items:center;gap:8px;padding:9px 12px;border-bottom:1px solid #ffffff18}.bv-regional-shell header strong{font-size:16px}.bv-regional-shell .window-drag-handle{display:flex;flex:1;align-items:center;justify-content:center;gap:6px;min-width:150px;padding:4px 10px;border-radius:var(--bv-ui-radius-sm)}.bv-regional-shell .window-drag-handle>span{color:var(--bv-muted-text-color);font-size:18px}.bv-regional-shell.floating header,.bv-regional-shell.floating .window-drag-handle{cursor:move;user-select:none;touch-action:none}.bv-regional-shell.floating .window-drag-handle:hover{background:#ffffff0b}.bv-regional-shell nav .spacer{flex:1}.bv-brush-options{display:flex;align-items:center;gap:14px;padding:7px 12px;border-bottom:1px solid #ffffff18;background:#ffffff05}.bv-brush-options label{display:flex;align-items:center;gap:6px}.bv-brush-options input[type=range]{width:110px;padding:0}.bv-brush-options output{min-width:48px;color:var(--bv-muted-text-color)}.bv-regional-shell main{display:grid;grid-template-columns:190px minmax(300px,1fr) 290px;flex:1;min-height:0}.bv-regional-shell aside{overflow:auto;padding:10px;border-right:1px solid #ffffff18}.bv-regional-shell .inspector{display:grid;align-content:start;gap:10px;border:0;border-left:1px solid #ffffff18}.bv-regional-shell .inspector label{display:grid;gap:4px}.region-row{display:flex;align-items:center;gap:8px;margin-top:6px;padding:7px;border:1px solid transparent;border-radius:var(--bv-ui-radius-sm);cursor:pointer}.region-row.selected{border-color:var(--bv-primary-color);background:#ffffff0b}.region-row i{width:12px;height:12px;border-radius:50%}.region-row span{flex:1;overflow:hidden;text-overflow:ellipsis}.region-row button,.geometry-row button{padding:2px 4px;border:0;background:transparent}.region-group{border:1px solid transparent;border-radius:var(--bv-ui-radius);margin-top:6px}.region-group.selected{border-color:#fff2;background:#ffffff05}.geometry-layers{padding:0 5px 6px 20px}.geometry-row{display:grid;grid-template-columns:20px minmax(0,1fr) 24px 24px 20px;align-items:center;gap:3px;padding:4px;border-radius:var(--bv-ui-radius-sm);cursor:pointer;color:var(--bv-muted-text-color)}.geometry-row.selected{color:var(--bv-text-color);background:#ffffff12;outline:1px solid var(--bv-primary-color)}.geometry-row.selected:not(.primary-selection){outline-color:color-mix(in srgb,var(--bv-primary-color) 55%,transparent)}.geometry-row span:nth-child(2){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bv-regional-work{position:relative;min-width:0;min-height:0;overflow:hidden;background:#0f1114}.artboard-viewport{position:absolute;inset:0;overflow:hidden;touch-action:none;user-select:none}.artboard-viewport.pan-ready{cursor:grab}.artboard-viewport.pan-ready:active{cursor:grabbing}.artboard-stage{position:absolute;top:0;left:0;transform-origin:0 0;will-change:transform}.bv-regional-canvas{position:relative;background-color:#24282d;background-image:linear-gradient(45deg,#2c3137 25%,transparent 25%),linear-gradient(-45deg,#2c3137 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#2c3137 75%),linear-gradient(-45deg,transparent 75%,#2c3137 75%);background-size:24px 24px;background-position:0 0,0 12px,12px -12px,-12px 0;touch-action:none;user-select:none;box-shadow:0 4px 28px #000a}.bv-background-image{position:absolute;inset:0;background-size:cover;background-repeat:no-repeat;pointer-events:none}.bv-composition,.bv-selection-overlay,.bv-tool-preview{position:absolute;inset:0;width:100%;height:100%}.bv-composition{pointer-events:none}.bv-selection-overlay,.bv-tool-preview{overflow:visible;pointer-events:none}.bv-tool-preview .tool-preview-shape{fill:color-mix(in srgb,#55e6ff 15%,transparent);stroke:#55e6ff;stroke-width:2.5;vector-effect:non-scaling-stroke;filter:drop-shadow(0 0 2px #000)}.bv-tool-preview .tool-preview-shape.subtract{fill:color-mix(in srgb,#ff5f6d 18%,transparent);stroke:#ff5f6d;stroke-dasharray:8 5}.bv-tool-preview path.tool-preview-shape{fill:none;stroke-opacity:.75}.bv-tool-preview .tool-preview-vertex{fill:#55e6ff;stroke:#071014;stroke-width:1.5;vector-effect:non-scaling-stroke}.bv-tool-preview .tool-preview-vertex.subtract{fill:#ff5f6d}.bv-selection-overlay .tool-preview-size{fill:#fff;font:600 12px sans-serif;text-anchor:end;paint-order:stroke;stroke:#101419;stroke-width:4px;stroke-linejoin:round;vector-effect:non-scaling-stroke}.bv-selection-overlay .rect-bounds{fill:none;stroke:#fff;stroke-width:2;vector-effect:non-scaling-stroke}.bv-selection-overlay .brush-bounds{fill:rgba(var(--bv-ui-accent-rgb),.035);stroke:var(--bv-ui-accent);stroke-width:2;stroke-dasharray:7 5;vector-effect:non-scaling-stroke;filter:drop-shadow(0 0 3px rgba(var(--bv-ui-accent-rgb),.45))}.bv-selection-overlay .resize-handle{pointer-events:all}.bv-selection-overlay .resize-handle-hit{fill:transparent;stroke:none}.bv-selection-overlay .resize-handle-visible{fill:var(--bv-ui-accent);stroke:#f7f3ff;stroke-width:1.5;vector-effect:non-scaling-stroke;filter:drop-shadow(0 1px 2px #000b)}.bv-selection-overlay .resize-handle-nw,.bv-selection-overlay .resize-handle-se{cursor:nwse-resize}.bv-selection-overlay .resize-handle-ne,.bv-selection-overlay .resize-handle-sw{cursor:nesw-resize}.bv-selection-overlay .resize-handle-n,.bv-selection-overlay .resize-handle-s{cursor:ns-resize}.bv-selection-overlay .resize-handle-e,.bv-selection-overlay .resize-handle-w{cursor:ew-resize}.brush-cursor{position:absolute;translate:-50% -50%;display:grid;place-items:center;border:1px solid white;outline:1px solid #0009;pointer-events:none}.brush-cursor.round{border-radius:50%}.brush-cursor i{display:block;border:1px dashed #fff9}.brush-cursor.round i{border-radius:50%}.bv-regional-canvas.tool-brush-add,.bv-regional-canvas.tool-brush-subtract{cursor:none}.bounds-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.bounds-grid label{min-width:0}.bounds-grid input{width:100%}.layer-actions{display:grid;grid-template-columns:1fr 1fr;gap:6px}.bv-regional-shell details{border:1px solid #ffffff18;border-radius:var(--bv-ui-radius-sm);padding:7px}.bv-regional-shell details summary{cursor:pointer}.bv-regional-shell details[open] summary{margin-bottom:8px}.bv-regional-shell footer{justify-content:space-between;border-top:1px solid #ffffff18;border-bottom:0}.bv-regional-shell footer.has-warning{color:#ffcc7a}.bv-regional-shell footer span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bv-regional-shell .option-section label>small{color:var(--bv-muted-text-color)}.bv-panel-header{display:flex;align-items:center;gap:var(--bv-ui-content-padding);min-height:var(--bv-ui-row-height);padding:var(--bv-ui-field-gap) var(--bv-ui-content-padding);color:var(--bv-ui-text);background:var(--bv-ui-surface-raised);border-bottom:1px solid var(--bv-ui-border)}.bv-panel-header>div:not(.bv-panel-actions){display:grid;flex:1;min-width:0;gap:1px}.bv-panel-header strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bv-panel-header small{color:var(--bv-ui-muted);font-size:.84em}.bv-panel-header-icon{width:20px;height:20px;flex:none;padding:2px;color:var(--bv-ui-accent-soft);fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.bv-panel-actions{display:flex;align-items:center;justify-content:flex-end;gap:var(--bv-ui-field-gap);margin-left:auto}.bv-panel-header .bv-panel-actions .bv-button svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round}.bv-panel-footer{display:flex;align-items:center;justify-content:space-between;gap:var(--bv-ui-content-padding);min-height:var(--bv-ui-row-height);padding:var(--bv-ui-field-gap) var(--bv-ui-content-padding);color:var(--bv-ui-muted);background:var(--bv-ui-surface-raised);border-top:1px solid var(--bv-ui-border)}.bv-panel-status{min-width:0}.bv-panel-footer .bv-panel-actions{flex:none}.bv-quick-prompt-body{display:grid;grid-template-rows:auto auto minmax(0,1fr);gap:var(--bv-ui-content-padding);min-height:0;height:100%}.bv-prompt-editor-fields{display:grid;grid-template-rows:minmax(120px,3fr) minmax(100px,2fr);gap:var(--bv-ui-content-padding);min-width:0;min-height:0;height:100%}.bv-prompt-editor-fields>.bv-control-field{display:grid;grid-template-rows:auto minmax(0,1fr);align-self:stretch;align-content:stretch;min-height:0}.bv-prompt-editor-fields .bv-adaptive-field,.bv-prompt-editor-fields .bv-textarea-shell{min-height:0;height:100%}.bv-prompt-editor-fields textarea{min-height:0!important;max-height:none;height:100%;resize:none}.bv-regional-action{display:inline-flex!important;align-items:center;justify-content:center;width:38px;min-width:38px;height:36px;padding:0!important;color:#d8d8dc!important;background:#18191c!important;border:1px solid #ffffff1f!important;border-radius:var(--bv-ui-radius-sm)!important;box-shadow:inset 0 1px #ffffff0a;transition:background-color .12s ease,border-color .12s ease}.bv-regional-action:hover{color:#fff!important;background:#292a2f!important;border-color:#ffffff35!important}.bv-regional-action>i{display:none!important}.bv-regional-action:before{content:"";display:block;width:20px;height:20px;background-color:currentColor;mask-repeat:no-repeat;mask-position:center;mask-size:contain;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain}.bv-regional-action-editor:before{mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M4 3h16a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2Zm0 5v11h4V8H4Zm6 0v11h10V8H10Zm0-3v1h10V5H10ZM4 5v1h4V5H4Z'/%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M4 3h16a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2Zm0 5v11h4V8H4Zm6 0v11h10V8H10Zm0-3v1h10V5H10ZM4 5v1h4V5H4Z'/%3E%3C/svg%3E")}.bv-regional-action-quick:before{mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M5 3h9v2H5v14h14v-9h2v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2Zm13.7-.7 3 3L11 16H8v-3L18.7 2.3Zm0 2.8L10 13.8V14h.2l8.7-8.9-.2-.2Z'/%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M5 3h9v2H5v14h14v-9h2v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2Zm13.7-.7 3 3L11 16H8v-3L18.7 2.3Zm0 2.8L10 13.8V14h.2l8.7-8.9-.2-.2Z'/%3E%3C/svg%3E")}.bv-regional-action-menu{width:18px!important;min-width:18px!important;margin-left:-3px;border-radius:0 var(--bv-ui-radius-sm) var(--bv-ui-radius-sm) 0!important}.bv-regional-action-quick{border-radius:var(--bv-ui-radius-sm) 0 0 var(--bv-ui-radius-sm)!important}.bv-regional-action-menu:before{width:10px;height:10px;mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='m6 9 6 6 6-6Z'/%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='m6 9 6 6 6-6Z'/%3E%3C/svg%3E")}.bv-toolbar-window-launcher{position:fixed;z-index:var(--bv-layer-flyout);display:grid;grid-template-rows:minmax(0,1fr) auto;max-width:calc(100vw - 24px);max-height:min(420px,calc(100vh - 84px));overflow:hidden;color:var(--bv-ui-text);background:var(--bv-ui-surface-raised);border:1px solid var(--bv-ui-border-hover);border-radius:var(--bv-ui-radius);box-shadow:0 18px 48px #000c}.bv-toolbar-window-launcher__body{display:grid;grid-template-columns:repeat(var(--bv-launcher-columns),minmax(180px,210px));min-height:0;overflow:auto}.bv-toolbar-window-launcher section{display:grid;grid-template-rows:auto minmax(0,1fr);min-width:0;padding:3px}.bv-toolbar-window-launcher section+section{border-left:1px solid var(--bv-ui-border)}.bv-toolbar-window-launcher h3{margin:0;padding:4px 6px 5px;color:var(--bv-ui-muted);font-size:calc(9px * var(--bv-ui-scale));font-weight:650;letter-spacing:.04em;text-transform:uppercase}.bv-toolbar-window-launcher section>div{display:grid;align-content:start;gap:1px;min-height:0;overflow-y:auto}.bv-toolbar-launcher-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center}.bv-toolbar-launcher-row.is-hidden{opacity:.68}.bv-toolbar-launcher-reveal{width:26px;height:26px;padding:0;color:var(--bv-ui-muted);background:transparent;border:0;border-radius:var(--bv-ui-radius-xs);cursor:pointer}.bv-toolbar-launcher-reveal:hover{color:var(--bv-ui-text);background:var(--bv-ui-surface-hover)}.bv-toolbar-window-launcher .bv-button{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;justify-content:stretch;justify-items:start;gap:8px;min-width:0;min-height:26px;padding:2px 6px;text-align:left}.bv-toolbar-window-launcher .bv-button>span,.bv-toolbar-window-launcher .bv-button>small{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bv-toolbar-window-launcher .bv-button>small{justify-self:end;color:var(--bv-ui-muted);font-size:calc(9px * var(--bv-ui-scale))}.bv-toolbar-window-launcher .bv-button:disabled{opacity:.55}.bv-toolbar-window-launcher>footer{position:sticky;bottom:0;padding:5px 8px;background:var(--bv-ui-surface-raised);border-top:1px solid var(--bv-ui-border)}.bv-toolbar-launcher-empty{display:grid;gap:3px;padding:18px;color:var(--bv-ui-muted)}@media (max-width:760px){.bv-toolbar-window-launcher{width:min(320px,calc(100vw - 24px))}.bv-toolbar-window-launcher__body{grid-template-columns:minmax(190px,1fr)}.bv-toolbar-window-launcher section+section{border-top:1px solid var(--bv-ui-border);border-left:0}}.bv-toolbar-window-launcher{z-index:var(--bv-layer-flyout)}.bv-completion-popup{position:fixed;z-index:var(--bv-layer-flyout);max-height:calc(240px * var(--bv-ui-scale));overflow:auto;padding:4px;color:var(--bv-ui-text);background:var(--bv-ui-input);border:1px solid var(--bv-ui-border-hover);border-radius:var(--bv-ui-radius);box-shadow:0 10px 32px #000c;font:calc(12px * var(--bv-ui-scale))/1.4 system-ui,-apple-system,"Segoe UI",sans-serif}.bv-completion-popup button{display:grid;width:100%;gap:0;padding:5px 8px;color:var(--bv-ui-text);text-align:left;background:transparent;border:0;border-radius:var(--bv-ui-radius-sm);cursor:pointer}.bv-completion-popup .bv-button{min-height:0;justify-content:stretch;justify-items:start}.bv-completion-popup button:hover,.bv-completion-popup button.active{background:rgba(var(--bv-ui-accent-rgb),.24);color:var(--bv-ui-text)}.bv-completion-popup button:hover small,.bv-completion-popup button.active small{color:#dcefff}.bv-completion-popup small{overflow:hidden;color:var(--bv-ui-muted);font-size:calc(10px * var(--bv-ui-scale));text-overflow:ellipsis;white-space:nowrap}.completion-menu{min-width:320px}.completion-dataset-picker{display:grid;gap:6px;padding:5px 8px 8px}.completion-dataset-picker>label{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:7px}.completion-dataset-picker>label span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.completion-dataset-picker>label small{color:var(--bv-muted-text-color)}.completion-dataset-picker .dataset-error{color:#ffaca6;white-space:normal}.bv-settings-datasets{display:grid;gap:8px;width:min(680px,100%)}.bv-settings-datasets>small{color:var(--descrip-text, #a1a1aa)}.bv-settings-datasets>div{display:grid;gap:6px}.bv-settings-datasets label{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:9px;padding:7px 9px;border:1px solid var(--border-color, #ffffff24);border-radius:var(--bv-ui-radius)}.bv-settings-datasets label span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bv-settings-datasets label small{color:var(--descrip-text, #a1a1aa)}.bv-settings-datasets .dataset-error{color:#ffaca6}.dataset-order{display:inline-flex;gap:3px}.dataset-order button{min-width:24px;padding:1px 5px}.bv-regional-error{margin:20px;padding:15px;color:#ffaca6;border:1px solid #ff756d;border-radius:var(--bv-ui-radius)}.editor-menus{display:flex;align-items:center;gap:2px}.menu-item{position:relative}.editor-menus>.menu-item>button{padding:4px 7px;border-color:transparent;background:transparent}.menu-popover,.toolbar-popover{position:absolute;z-index:20;top:calc(100% + 5px);left:0;display:grid;min-width:230px;padding:7px;border:1px solid var(--bv-border-color);border-radius:var(--bv-ui-radius);background:var(--comfy-menu-bg, #20242a);box-shadow:0 12px 35px #000b}.menu-popover button{display:flex;justify-content:space-between;border-color:transparent;background:transparent;text-align:left}.menu-popover button:hover{background:#ffffff12}.menu-popover hr{width:100%;border:0;border-top:1px solid #ffffff18}.menu-popover kbd{color:var(--bv-muted-text-color)}.view-menu label{display:grid;grid-template-columns:1fr auto;gap:7px}.view-menu input{grid-column:1 / -1;width:100%;padding:0}.view-menu small{padding:5px 7px;color:var(--bv-muted-text-color)}.help-menu{width:min(680px,calc(100vw - 40px));grid-template-columns:repeat(2,minmax(280px,1fr));gap:18px}.help-section{min-width:0}.help-section strong{display:block;margin-bottom:8px}.help-section dl{display:grid;grid-template-columns:minmax(135px,auto) minmax(110px,1fr);gap:5px 12px;margin:0}.help-section dt{color:#8fd2ff;white-space:nowrap}.help-section dd{min-width:0;margin:0;color:var(--bv-muted-text-color)}@media (max-width: 720px){.help-menu{width:calc(100vw - 40px);grid-template-columns:1fr;max-height:calc(100vh - 90px);overflow:auto}}.help-button{width:29px;border-radius:50%!important}.toolbar-popover-anchor{position:relative}.toolbar-popover{right:0;left:auto;gap:7px}.toolbar-popover label{display:grid;grid-template-columns:65px 1fr;align-items:center}.toolbar-popover input{width:120px!important}.panel-splitter{position:relative;cursor:col-resize;background:#ffffff0b;border-left:1px solid #ffffff12;border-right:1px solid #0008}.panel-splitter:hover,.panel-splitter:active{background:var(--bv-primary-color)}.bv-regional-shell main>aside{min-width:0}.bv-regional-shell .layers{display:flex;flex-direction:column;padding:8px}.panel-toolbar{display:flex;align-items:center;gap:3px;margin-bottom:7px;padding:4px;background:#ffffff06;border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.panel-toolbar-spacer{flex:1}.panel-toolbar .panel-tool{display:flex;align-items:center;justify-content:center;gap:5px;min-width:28px;height:28px;min-height:28px;padding:0 6px;color:var(--bv-ui-muted);background:transparent;border:1px solid transparent;border-radius:var(--bv-ui-radius-sm)}.panel-toolbar .panel-tool.primary{color:var(--bv-ui-accent-soft);background:rgba(var(--bv-ui-accent-rgb),.11);border-color:rgba(var(--bv-ui-accent-rgb),.2)}.panel-toolbar .panel-tool:hover:not(:disabled){color:var(--bv-ui-text);background:#fff1;border-color:#ffffff14}.panel-toolbar .panel-tool.danger:not(:disabled){color:#e68f8a}.panel-toolbar .panel-tool:disabled{opacity:.35;cursor:default}.panel-toolbar .panel-tool .tree-control-icon{width:15px;height:15px}.panel-toolbar .panel-tool span{flex:none}.region-row{position:relative;display:grid;grid-template-columns:18px 20px 14px minmax(55px,1fr) auto auto 25px 27px 20px}.region-row .region-expand{display:grid;place-items:center;width:20px;min-width:20px;height:24px;min-height:24px;padding:0;color:var(--bv-ui-muted)}.region-row .region-usage{flex:none;color:var(--bv-muted-text-color);font-size:10px;letter-spacing:.03em}.region-row .priority{flex:none;color:var(--bv-muted-text-color);font-size:11px}.layer-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.inline-name{min-width:0;width:100%;padding:2px 4px!important}.geometry-row{position:relative;margin-bottom:3px}.geometry-tree-item{margin-bottom:4px}.geometry-row{grid-template-columns:18px 20px 22px minmax(0,1fr) 25px 27px 20px 24px;margin-bottom:0}.geometry-row .layer-expand{display:grid;place-items:center;width:20px;min-width:20px;height:24px;min-height:24px;padding:0;color:var(--bv-ui-muted)}.bv-regional-shell .tree-control-icon{display:block;width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.bv-regional-shell .tree-control-icon circle[r="1"]{fill:currentColor;stroke:none}.bv-regional-shell .tree-icon-button{display:grid;place-items:center;width:24px;min-width:24px;height:24px;min-height:24px;padding:0;color:var(--bv-ui-muted);background:transparent;border:0;border-radius:var(--bv-ui-radius-sm)}.bv-regional-shell .tree-icon-button:hover{color:var(--bv-ui-text);background:#ffffff0e}.bv-regional-shell .tree-icon-button.deviant{color:#e2b96e;background:#e2b96e13}.bv-regional-shell .tree-icon-button.deviant:hover{color:#f0cc88;background:#e2b96e21}.bv-regional-shell .tree-check{display:grid;place-items:center;align-self:center;width:16px;min-width:16px;height:16px;min-height:16px;padding:0;color:var(--bv-ui-muted);background:transparent;border:1px solid color-mix(in srgb,var(--bv-ui-muted) 72%,transparent);border-radius:var(--bv-ui-radius-sm);box-shadow:none}.bv-regional-shell .tree-check[aria-checked=true]{color:var(--bv-ui-muted);border-color:color-mix(in srgb,var(--bv-ui-muted) 72%,transparent);background:transparent}.bv-regional-shell .tree-check.deviant{color:#e2b96e;border-color:#e2b96eb8;background:#e2b96e13}.bv-regional-shell .tree-check:hover{color:var(--bv-ui-text);border-color:var(--bv-ui-text);background:#ffffff09}.bv-regional-shell .tree-check.deviant:hover{color:#f0cc88;border-color:#e2b96e;background:#e2b96e21}.bv-regional-shell .tree-check .tree-control-icon{width:13px;height:13px;stroke-width:2.2}.bv-regional-shell .layer-overflow{position:relative;margin:0;padding:0!important;border:0!important;border-radius:0}.bv-regional-shell .layer-overflow>summary{display:grid;place-items:center;width:24px;height:24px;margin:0!important;padding:0;color:var(--bv-ui-muted);border-radius:var(--bv-ui-radius-sm);cursor:pointer;list-style:none}.bv-regional-shell .layer-overflow>summary::-webkit-details-marker{display:none}.bv-regional-shell .layer-overflow>summary:hover,.bv-regional-shell .layer-overflow[open]>summary{color:var(--bv-ui-text);background:#ffffff12}.bv-regional-shell .layer-overflow>div{position:absolute;z-index:30;top:calc(100% + 4px);right:0;display:grid;gap:2px;min-width:142px;padding:4px;background:var(--bv-ui-surface-raised);border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius);box-shadow:0 10px 28px #00000061}.bv-regional-shell .layer-overflow>div>button{width:100%;min-height:28px;padding:4px 8px;text-align:left;white-space:nowrap}.geometry-operations{position:relative;display:grid;gap:2px;margin:2px 0 5px 20px;padding-left:12px;border-left:1px solid rgba(var(--bv-ui-accent-rgb),.28)}.geometry-operation{position:relative;display:grid;grid-template-columns:18px minmax(0,1fr) 24px 24px;align-items:center;gap:3px;min-height:32px;padding:3px 4px;color:var(--bv-ui-muted);border:1px solid transparent;border-radius:var(--bv-ui-radius-sm)}.geometry-operation:hover{color:var(--bv-ui-text);background:#ffffff0b}.geometry-operation.selected{color:var(--bv-ui-text);background:rgba(var(--bv-ui-accent-rgb),.14);border-color:rgba(var(--bv-ui-accent-rgb),.36);box-shadow:inset 2px 0 0 var(--bv-ui-accent)}.geometry-operation-select{display:grid!important;grid-template-columns:22px minmax(0,1fr) auto;align-items:center;gap:5px;min-width:0;min-height:24px;padding:0!important;color:inherit;text-align:left;background:transparent!important;border:0!important;box-shadow:none!important}.geometry-operation-select>span:nth-child(2){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.geometry-operation small{color:var(--bv-ui-muted);font-size:calc(9px * var(--bv-ui-scale));text-transform:capitalize}.geometry-operation>button:not(.geometry-operation-select){display:grid;place-items:center;min-width:24px;min-height:24px;padding:0;background:transparent;border:0}.operation-kind{display:grid;place-items:center;width:20px;height:20px;border-radius:var(--bv-ui-radius-sm);font-weight:800}.operation-kind.add{color:var(--bv-ui-accent-soft);background:rgba(var(--bv-ui-accent-rgb),.16)}.operation-kind.subtract{color:#f0c275;background:#e9b65f21}.bv-regional-shell .tree-drag-handle{display:grid;place-items:center;width:18px;min-width:18px;height:24px;min-height:24px;padding:0;color:var(--bv-ui-muted);background:transparent;border:0;border-radius:var(--bv-ui-radius-sm);cursor:grab;opacity:.62}.bv-regional-shell .tree-drag-handle:hover{color:var(--bv-ui-text);background:#ffffff12;opacity:1}.bv-regional-shell .tree-drag-handle:active{cursor:grabbing}.drop-target.drop-inside{background:rgba(var(--bv-ui-accent-rgb),.14)!important;outline:1px solid rgba(var(--bv-ui-accent-rgb),.7)!important}.drop-target.drop-before:before,.drop-target.drop-after:after{content:"";position:absolute;z-index:4;left:4px;right:4px;height:2px;background:var(--bv-ui-accent);border-radius:var(--bv-ui-radius-sm);box-shadow:0 0 0 2px rgba(var(--bv-ui-accent-rgb),.12)}.drop-target.drop-before:before{top:-2px}.drop-target.drop-after:after{bottom:-2px}.option-section{display:grid;gap:8px;padding:10px 0;border-bottom:1px solid #ffffff18}.option-section:first-child{padding-top:0}.option-section h3{margin:0;font-size:14px}.option-hint{padding:10px;border:1px dashed #ffffff22;border-radius:var(--bv-ui-radius-sm);color:var(--bv-muted-text-color)}.inspector details textarea{min-height:90px}.stroke-width-meta{color:var(--bv-muted-text-color);font-variant-numeric:tabular-nums}.inspector-density{width:100%;height:100%;min-height:0}.region-color-control{display:block;padding:8px;border:1px solid #ffffff18;border-radius:var(--bv-ui-radius)}.region-color-split{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end}.region-color-split>.bv-button{width:30px;min-width:30px;margin-bottom:1px;margin-left:-1px;border-radius:0 var(--bv-ui-radius) var(--bv-ui-radius) 0}.region-color-split>.bv-control-field .bv-color-field{border-radius:var(--bv-ui-radius) 0 0 var(--bv-ui-radius)}.region-color-control>.bv-control-field{min-width:0}.region-color-control>.bv-button{align-self:center}.bv-regional-shell header{min-height:38px;padding:5px 8px;gap:7px}.bv-regional-shell header strong{font-size:13px;white-space:nowrap}.menu-popover{font-size:13px;line-height:1.25}.menu-popover button{min-height:27px;padding:5px 7px}.menu-popover small{padding:5px 7px;color:var(--bv-muted-text-color)}.artboard-menu{gap:7px}.artboard-menu label{display:grid;grid-template-columns:65px 1fr;align-items:center}.artboard-menu input{width:130px}.bv-regional-shell[hidden]{display:none!important}.bv-managed-window{position:fixed;z-index:var(--bv-layer-window);min-width:0;min-height:0;overflow:visible;color:var(--bv-ui-text);border-radius:var(--bv-ui-radius);box-shadow:0 20px 70px #000b;outline:0}.bv-managed-window-surface{display:grid;grid-template-rows:auto minmax(0,1fr) auto;width:100%;height:100%;overflow:hidden;background:var(--bv-ui-surface);border:1px solid var(--bv-ui-border-hover);border-radius:inherit}.bv-managed-window[hidden]{display:none!important}.bv-managed-window.floating{resize:none}.bv-managed-window.workspace{left:24px;top:58px;width:calc(100vw - 48px);height:calc(100vh - 82px);border-radius:var(--bv-ui-radius);resize:none}.bv-managed-window-body{min-width:0;min-height:0;padding:var(--bv-ui-content-padding);overflow:auto}.bv-managed-window.floating>.bv-ui-window-header{cursor:move;user-select:none;touch-action:none}.bv-managed-window .bv-ui-window-header button,.bv-managed-window .bv-ui-window-header select{cursor:pointer;user-select:auto}.bv-window-resize-handle{position:absolute;z-index:8;touch-action:none}.bv-window-resize-handle.n,.bv-window-resize-handle.s{right:10px;left:10px;height:5px;cursor:ns-resize}.bv-window-resize-handle.n{top:0}.bv-window-resize-handle.s{bottom:0}.bv-window-resize-handle.e,.bv-window-resize-handle.w{top:10px;bottom:10px;width:5px;cursor:ew-resize}.bv-window-resize-handle.e{right:0}.bv-window-resize-handle.w{left:0}.bv-window-resize-handle.ne,.bv-window-resize-handle.nw,.bv-window-resize-handle.se,.bv-window-resize-handle.sw{width:10px;height:10px}.bv-window-resize-handle.ne,.bv-window-resize-handle.sw{cursor:nesw-resize}.bv-window-resize-handle.nw,.bv-window-resize-handle.se{cursor:nwse-resize}.bv-window-resize-handle.n,.bv-window-resize-handle.ne,.bv-window-resize-handle.nw{top:0}.bv-window-resize-handle.s,.bv-window-resize-handle.se,.bv-window-resize-handle.sw{bottom:0}.bv-window-resize-handle.e,.bv-window-resize-handle.ne,.bv-window-resize-handle.se{right:0}.bv-window-resize-handle.w,.bv-window-resize-handle.nw,.bv-window-resize-handle.sw{left:0}.bv-ui-window-header{display:grid!important;grid-template-columns:minmax(320px,1fr) auto minmax(180px,1fr);align-items:center;gap:calc(8px * var(--bv-ui-scale));min-height:calc(34px * var(--bv-ui-scale))!important;padding:calc(2px * var(--bv-ui-scale)) calc(6px * var(--bv-ui-scale))!important;background:var(--bv-ui-surface-raised);border-bottom:1px solid var(--bv-ui-border)!important}.bv-managed-window .bv-ui-window-header{grid-template-columns:minmax(0,1fr) auto}.bv-managed-window .bv-ui-window-center:empty{display:none}.bv-managed-window .bv-ui-window-header:has(.bv-ui-window-center:not(:empty)){grid-template-columns:minmax(250px,1fr) auto minmax(78px,1fr)}.bv-regional-window-body{display:flex;flex-direction:column;min-width:0;min-height:0;padding:0;overflow:hidden}.bv-regional-window-body>.bv-regional-dock-host{flex:1;min-height:0}.bv-ui-window-identity{display:flex;align-items:center;gap:calc(7px * var(--bv-ui-scale));min-width:0;overflow:visible}.bv-ui-window-icon{display:grid;place-items:center;width:calc(25px * var(--bv-ui-scale));height:calc(25px * var(--bv-ui-scale));flex:0 0 calc(25px * var(--bv-ui-scale));color:var(--bv-ui-accent-soft);background:rgba(var(--bv-ui-accent-rgb),.13);border:1px solid rgba(var(--bv-ui-accent-rgb),.22);border-radius:var(--bv-ui-radius-sm)}.bv-ui-window-icon svg,.bv-ui-window-reset svg,.bv-ui-window-shelf-icon svg{width:calc(16px * var(--bv-ui-scale));height:calc(16px * var(--bv-ui-scale));fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.bv-ui-window-icon .bv-brand-cyclone,.bv-ui-window-shelf-icon .bv-brand-cyclone{color:var(--bv-ui-accent-light);fill:currentColor;stroke:none}.bv-ui-window-title{flex:0 1 auto;min-width:0;overflow:hidden;font-size:calc(13px * var(--bv-ui-scale));text-overflow:ellipsis;white-space:nowrap}.bv-ui-window-title-short{display:none}@container bv-window-header (max-width:900px){.bv-ui-window-title:has(.bv-ui-window-title-short) .bv-ui-window-title-full{display:none}.bv-ui-window-title-short{display:inline}}.bv-ui-window-context{display:flex;align-items:center;gap:calc(5px * var(--bv-ui-scale));min-width:0;overflow:visible;color:var(--bv-ui-muted);font-size:calc(10px * var(--bv-ui-scale))}.bv-regional-shell .bv-ui-window-context select{width:min(240px,100%);min-width:0;height:auto;padding:0 18px 0 calc(5px * var(--bv-ui-scale));color:var(--bv-ui-muted);background-color:transparent;border:0;border-radius:0;font:inherit;text-overflow:ellipsis}.bv-regional-shell .bv-ui-window-context .bv-select-shell{width:min(240px,100%);min-height:calc(22px * var(--bv-ui-scale));overflow:visible;background:#ffffff06;border-color:var(--bv-ui-border);border-radius:var(--bv-ui-radius-sm);box-shadow:none}.bv-regional-shell .bv-ui-window-context .bv-select-shell:hover{background:#ffffff0b;border-color:var(--bv-ui-border)}.bv-regional-shell .bv-ui-window-context .bv-select-shell:focus-within{background:rgba(var(--bv-ui-accent-rgb),.07);border-color:rgba(var(--bv-ui-accent-rgb),.34);box-shadow:none}.bv-regional-shell .bv-ui-window-context .bv-select-shell:focus-within select{border-color:transparent;box-shadow:none;outline:0}.bv-regional-shell .bv-ui-window-context .bv-select-shell>.bv-chevron{right:calc(7px * var(--bv-ui-scale));color:var(--bv-ui-muted)}.bv-ui-window-center{display:flex;align-self:stretch;align-items:center;justify-content:center;min-width:0}.bv-ui-window-center .editor-menus{justify-content:center}.editor-menu-label-short{display:none}@container bv-window-header (max-width:560px){.editor-menu-label-full{display:none}.editor-menu-label-short{display:inline}.bv-ui-window-center .editor-menus .bv-button{min-width:22px;padding-inline:5px}}.bv-ui-window-controls{display:flex;align-items:center;justify-content:flex-end;gap:2px}.bv-ui-window-control{display:grid;place-items:center;width:calc(24px * var(--bv-ui-scale));height:calc(24px * var(--bv-ui-scale));min-height:0;padding:0;color:var(--bv-ui-muted);background:transparent;border:1px solid transparent;border-radius:var(--bv-ui-radius-sm);font-size:inherit}.bv-ui-window-control svg{width:calc(14px * var(--bv-ui-scale));height:calc(14px * var(--bv-ui-scale));fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.bv-ui-window-control:hover{color:var(--bv-ui-text);background:#ffffff12;border-color:#e7e1f714}.bv-ui-window-control--close:hover{color:#ffd8df;background:#ee6f8321;border-color:#ee6f8333}.bv-regional-shell.floating .bv-ui-window-header{cursor:move;user-select:none;touch-action:none}.bv-regional-shell .bv-ui-window-header button,.bv-regional-shell .bv-ui-window-header select{cursor:pointer;user-select:auto}.bv-ui-window-footer{container:bv-window-footer / inline-size;display:grid!important;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:calc(10px * var(--bv-ui-scale));min-height:calc(38px * var(--bv-ui-scale));padding:calc(4px * var(--bv-ui-scale)) calc(7px * var(--bv-ui-scale)) calc(4px * var(--bv-ui-scale)) calc(9px * var(--bv-ui-scale))!important;background:#211f27;border-top:1px solid var(--bv-ui-border)!important;border-bottom:0!important}.bv-ui-window-status{display:flex;align-items:center;gap:var(--bv-ui-field-gap);min-width:0;overflow:hidden;color:var(--bv-ui-muted);font-size:calc(10px * var(--bv-ui-scale));white-space:nowrap;text-overflow:ellipsis}.bv-ui-window-status>span:first-child{overflow:hidden;min-width:0;text-overflow:ellipsis;white-space:nowrap}.bv-ui-window-footer.has-warning .bv-ui-window-status{color:#e9b65f}.bv-ui-window-footer-actions{display:flex;align-items:center;gap:calc(7px * var(--bv-ui-scale));margin-left:auto}.bv-ui-window-footer-actions .bv-button{white-space:nowrap}.bv-ui-window-footer-actions .bv-button>svg{width:calc(16px * var(--bv-ui-scale));height:calc(16px * var(--bv-ui-scale));flex:none;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.bv-footer-action-set,.bv-footer-secondary-actions{display:flex;align-items:center;gap:5px}.bv-footer-action-set>.bv-menu-button{display:none}.bv-ui-window-footer.is-stacked{grid-template-columns:1fr}.bv-ui-window-footer.is-stacked .bv-ui-window-footer-actions{width:100%;margin-left:0;justify-content:flex-end}.bv-ui-window-footer.is-minimal .bv-footer-secondary-actions{display:none}.bv-ui-window-footer.is-minimal .bv-footer-action-set>.bv-menu-button{display:block}.bv-ui-window-footer.is-minimal .bv-ui-window-footer-actions>.bv-button:not(:last-child){display:none}.bv-regional-shell .bv-ui-window-reset{min-height:calc(29px * var(--bv-ui-scale));padding:0 calc(9px * var(--bv-ui-scale));font-size:calc(10px * var(--bv-ui-scale))}.bv-ui-window-shelf{position:fixed;z-index:var(--bv-layer-shelf);left:var(--bv-ui-window-shelf-left,calc(14px * var(--bv-ui-scale)));bottom:var(--bv-ui-window-shelf-bottom,calc(14px * var(--bv-ui-scale)));display:flex;align-items:flex-end;gap:calc(7px * var(--bv-ui-scale));pointer-events:none}.bv-ui-window-shelf-item{display:inline-flex;align-items:center;height:calc(36px * var(--bv-ui-scale));color:var(--bv-ui-muted);background:var(--bv-ui-surface-raised);border:1px solid var(--bv-ui-border-hover);border-radius:var(--bv-ui-radius);box-shadow:0 8px 24px #0006;font:calc(10px * var(--bv-ui-scale))/1.2 system-ui,-apple-system,"Segoe UI",sans-serif;pointer-events:auto;overflow:hidden}.bv-ui-window-shelf-restore,.bv-ui-window-shelf-close{align-self:stretch;display:inline-flex;align-items:center;color:inherit;background:transparent;border:0}.bv-ui-window-shelf-restore{gap:calc(7px * var(--bv-ui-scale));padding:0 calc(8px * var(--bv-ui-scale)) 0 calc(6px * var(--bv-ui-scale))}.bv-ui-window-shelf-close{padding:0 calc(7px * var(--bv-ui-scale));border-left:1px solid var(--bv-ui-border)}.bv-ui-window-shelf-close svg{width:calc(14px * var(--bv-ui-scale));fill:none;stroke:currentColor;stroke-width:1.7}.bv-ui-window-shelf-item:hover{color:var(--bv-ui-text);background:#2b2832;border-color:rgba(var(--bv-ui-accent-rgb),.3)}.bv-window-navigator{display:flex;align-items:center;gap:3px;min-width:0}.bv-window-navigator .bv-select-popover{width:clamp(112px,18vw,180px)}.bv-window-navigator .bv-select-trigger{min-height:22px;height:22px;padding:0 7px;gap:5px;color:var(--bv-ui-muted);background:#ffffff05;border-color:#e7e1f71a;border-radius:var(--bv-ui-radius-sm);font-size:10px;box-shadow:none}.bv-window-navigator .bv-select-trigger:hover:not(:disabled),.bv-window-navigator .bv-select-trigger[aria-expanded=true]{color:var(--bv-ui-text);background:#ffffff0b;border-color:#e7e1f72e;box-shadow:none}.bv-window-navigator .bv-select-trigger>span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bv-window-navigator .bv-chevron{width:6px;height:6px}.bv-window-switch-mode{display:inline-flex;align-items:center;height:22px;padding:0 4px;color:var(--bv-ui-muted);background:transparent;border:1px solid transparent;border-radius:var(--bv-ui-radius-sm);font:inherit}.bv-window-switch-mode:hover{background:#ffffff0b;border-color:#e7e1f71a}.bv-window-switch-mode>span:last-child{display:none}.bv-window-switch-mode .bv-toggle-track{width:26px;height:14px;padding:1px}.bv-window-switch-mode .bv-toggle-track>span{width:10px;height:10px}.bv-window-switch-mode[aria-checked=true] .bv-toggle-track{background:rgba(var(--bv-ui-accent-rgb),.35);border-color:var(--bv-ui-accent)}.bv-window-switch-mode .bv-toggle-track>span{margin-left:0;transition:margin-left .15s}.bv-window-switch-mode[aria-checked=true] .bv-toggle-track>span{margin-left:auto;translate:0;transform:none;background:var(--bv-ui-accent-soft)}.bv-ui-window-header{container:bv-window-header / inline-size}.bv-window-navigator-overflow{position:relative}.bv-window-navigator-overflow>button{display:grid;place-items:center;width:22px;height:22px;padding:0;color:var(--bv-ui-muted);cursor:pointer;background:transparent;border:1px solid transparent;border-radius:var(--bv-ui-radius-sm)}.bv-window-navigator-overflow>button:hover,.bv-window-navigator-overflow>button[aria-expanded=true]{color:var(--bv-ui-text);background:#ffffff0b;border-color:var(--bv-ui-border)}.bv-window-navigator-menu{color:var(--bv-ui-text);background:var(--bv-ui-surface-raised);border:1px solid var(--bv-ui-border-hover);border-radius:var(--bv-ui-radius);box-shadow:0 14px 42px #000b}.bv-window-navigator-panel{display:grid;gap:7px;width:min(260px,calc(100vw - 24px));padding:8px}.bv-window-navigator-panel-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0;color:var(--bv-ui-muted)}.bv-window-navigator-panel-row.is-node>.bv-select-popover{width:100%}.bv-ui-window-header.is-menu-overflow .bv-ui-window-title-full{display:none}.bv-ui-window-header.is-menu-overflow .bv-ui-window-title-short{display:inline}.bv-ui-window-shelf-icon{display:grid;place-items:center;width:calc(24px * var(--bv-ui-scale));height:calc(24px * var(--bv-ui-scale));color:var(--bv-ui-accent-soft);background:rgba(var(--bv-ui-accent-rgb),.14);border-radius:var(--bv-ui-radius-sm)}.artboard-tools{position:absolute;z-index:12;top:12px;left:12px;display:flex;align-items:flex-start;gap:7px;pointer-events:none}.artboard-tools .bv-toolbar{pointer-events:auto}.zoom-controls{position:absolute;z-index:12;bottom:12px;left:50%;display:flex;gap:3px;padding:4px;border:1px solid #ffffff2b;border-radius:var(--bv-ui-radius);background:color-mix(in srgb,var(--comfy-menu-bg, #20242a) 92%,transparent);box-shadow:0 8px 25px #0009;backdrop-filter:blur(8px);transform:translate(-50%)}.zoom-controls button{min-width:32px;height:28px;padding:3px 8px;border-color:transparent;background:transparent}.zoom-controls button:nth-child(2){min-width:66px}.zoom-controls button:hover{background:#ffffff15}.tool-palette,.brush-flyout{pointer-events:auto;border:1px solid #ffffff2b;border-radius:var(--bv-ui-radius);background:color-mix(in srgb,var(--comfy-menu-bg, #20242a) 92%,transparent);box-shadow:0 8px 25px #0009;backdrop-filter:blur(8px)}.tool-palette{display:grid;gap:3px;padding:4px}.tool-palette button{display:grid;place-items:center;width:34px;height:34px;padding:6px;border-color:transparent;background:transparent}.tool-palette button:hover:not(:disabled){background:#ffffff15}.tool-palette button.active{background:var(--bv-primary-color)}.tool-palette button:disabled{opacity:.3;cursor:not-allowed}.tool-palette svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.brush-flyout{display:grid;width:235px;gap:8px;padding:10px}.brush-flyout header{min-height:0;padding:0 0 5px;border-bottom:1px solid #ffffff18}.brush-flyout header button{margin-left:auto}.brush-flyout label{display:grid;grid-template-columns:1fr auto;align-items:center;gap:4px 8px}.brush-flyout output{color:var(--bv-muted-text-color)}.brush-flyout input[type=range]{grid-column:1 / -1;width:100%;padding:0}.brush-flyout select{grid-column:1 / -1}.fixed-inspector .inspector-tabs{display:none}.bv-ui-dock .flexlayout__float_window{border:1px solid rgba(var(--bv-ui-accent-rgb),.36);border-radius:var(--bv-ui-radius);background:var(--bv-ui-surface);box-shadow:0 18px 48px #00000094,0 0 0 1px #ffffff09}.bv-ui-dock .flexlayout__float_window_header{min-height:31px;padding:6px 8px;color:var(--bv-ui-text);font-family:system-ui,-apple-system,Segoe UI,sans-serif;font-size:calc(12px * var(--bv-ui-scale));line-height:1.35;background:var(--bv-ui-surface-raised);border-bottom:1px solid var(--bv-ui-border)}.bv-ui-dock .flexlayout__float_window_drag_handle{min-width:22px;min-height:22px;padding:0 5px;color:var(--bv-ui-muted);border-radius:var(--bv-ui-radius-sm)}.bv-ui-dock .flexlayout__float_window_drag_handle:hover{color:var(--bv-ui-text);background:rgba(var(--bv-ui-accent-rgb),.14)}.bv-ui-dock .flexlayout__float_window_content{margin:0;background:var(--bv-ui-surface);border-radius:0 0 var(--bv-ui-radius) var(--bv-ui-radius)}.bv-detector-card{display:grid;gap:12px}.bv-detector-card-title{display:grid;min-width:0;gap:2px;margin-right:auto}.bv-detector-card-title strong,.bv-detector-card-title small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bv-detector-card-title small,.bv-detector-impact{color:var(--bv-ui-muted)}.bv-detector-impact{display:block;padding:8px 10px;border-left:2px solid rgba(var(--bv-ui-accent-rgb),.55);background:rgba(var(--bv-ui-accent-rgb),.07)}.bv-ui-empty-state{display:grid;place-items:center;min-height:160px;padding:28px;color:var(--bv-ui-muted);text-align:center;border:1px dashed var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-ui-empty-state strong{color:var(--bv-ui-text)}.bv-ui-empty-state p{margin:4px 0 0}.bv-inspector-section{display:grid;align-content:start;gap:calc(12px * var(--bv-ui-scale));min-width:0;padding:calc(10px * var(--bv-ui-scale))}.bv-inspector-section>h3{margin:0;font-size:calc(13px * var(--bv-ui-scale))}.inspector-tab-panel>.bv-inspector-section+.bv-inspector-section{border-top:1px solid var(--bv-ui-border)}.bv-compact-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,125px),1fr));gap:calc(10px * var(--bv-ui-scale));min-width:0}.bv-inspector-section{container:bv-inspector-section / inline-size}.bv-layer-bounds-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--bv-ui-field-gap);min-width:0}@container bv-inspector-section (max-width:220px){.bv-layer-bounds-grid{grid-template-columns:1fr}}.bv-control-field,.bv-number-field{display:grid;gap:var(--bv-ui-field-gap);min-width:0;color:var(--bv-ui-muted);font-size:calc(11px * var(--bv-ui-scale))}.bv-control-label,.bv-number-field>label{color:var(--bv-ui-muted)}.bv-control-help{color:var(--bv-ui-muted);font-size:calc(10px * var(--bv-ui-scale));line-height:1.4}.bv-select-shell{position:relative;display:block;min-width:0}.bv-select-shell select{width:100%;height:var(--bv-ui-control-height);padding:0 calc(36px * var(--bv-ui-scale)) 0 calc(11px * var(--bv-ui-scale));appearance:none;color:var(--bv-ui-text);background:var(--bv-ui-input);border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius);outline:0}.bv-select-shell>svg{position:absolute;top:50%;right:calc(10px * var(--bv-ui-scale));width:calc(16px * var(--bv-ui-scale));height:calc(16px * var(--bv-ui-scale));translate:0 -50%;fill:none;stroke:var(--bv-ui-muted);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.bv-select-shell:hover{border-color:var(--bv-ui-border-hover)}.bv-number-field{grid-template-columns:minmax(0,1fr)}.bv-number-slider{position:relative;min-width:0;padding-top:calc(9px * var(--bv-ui-scale))}.bv-number-slider output{position:absolute;z-index:2;left:var(--bubble-left,50%);bottom:calc(100% + 4px);translate:-50% 2px;padding:3px 6px;color:var(--bv-ui-text);white-space:nowrap;background:#302c3a;border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius-sm);font-size:calc(10px * var(--bv-ui-scale));opacity:0;pointer-events:none}.bv-number-slider:hover output,.bv-number-slider:focus-within output{opacity:1;translate:-50% 0}.bv-number-track{width:100%;height:18px;margin:0;padding:0!important;appearance:none;background:transparent!important;border:0!important;cursor:pointer}.bv-number-track::-webkit-slider-runnable-track{height:4px;border-radius:999px;background:linear-gradient(90deg,var(--bv-ui-accent) 0 var(--range-fill),rgba(168,161,179,.18) var(--range-fill) 100%)}.bv-number-track::-webkit-slider-thumb{width:16px;height:16px;margin-top:-6px;appearance:none;border:2px solid var(--bv-ui-surface);border-radius:50%;background:var(--bv-ui-accent);box-shadow:0 0 0 1px rgba(var(--bv-ui-accent-rgb),.38)}.bv-number-box{display:flex;min-width:0;height:var(--bv-ui-control-height);overflow:hidden;background:var(--bv-ui-input);border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-number-box:focus-within{border-color:var(--bv-ui-accent);box-shadow:0 0 0 3px rgba(var(--bv-ui-accent-rgb),.18)}.bv-number-box input{min-width:0;width:100%;padding:0 calc(10px * var(--bv-ui-scale));color:var(--bv-ui-text);text-align:right;background:transparent;border:0;outline:0;font-variant-numeric:tabular-nums}.bv-number-box>span{display:grid;place-items:center;min-width:calc(34px * var(--bv-ui-scale));padding:0 7px;border-left:1px solid var(--bv-ui-border);background:#ffffff08}.bv-number-ticks{display:flex;justify-content:space-between;color:var(--bv-ui-muted);font-size:calc(9px * var(--bv-ui-scale))}.bv-textarea-shell{display:flex;min-width:0;max-width:100%;min-height:calc(100px * var(--bv-ui-scale));overflow:hidden;background:var(--bv-ui-input);border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-textarea-shell:hover{border-color:var(--bv-ui-border-hover)}.bv-textarea-shell:focus-within{border-color:var(--bv-ui-accent);box-shadow:0 0 0 3px rgba(var(--bv-ui-accent-rgb),.18)}.bv-textarea-shell textarea{width:100%;min-width:0;min-height:calc(98px * var(--bv-ui-scale));max-height:360px;padding:calc(9px * var(--bv-ui-scale)) calc(10px * var(--bv-ui-scale));color:var(--bv-ui-text);background:transparent;border:0;outline:0;resize:vertical;font:inherit;line-height:1.45}.bv-control-disclosure{margin:0;padding:0!important;overflow:hidden;border:1px solid var(--bv-ui-border)!important;border-radius:var(--bv-ui-radius)!important}.bv-control-disclosure>summary{position:relative;margin:0!important;padding:calc(9px * var(--bv-ui-scale)) calc(12px * var(--bv-ui-scale));list-style:none}.bv-control-disclosure>summary::-webkit-details-marker{display:none}.bv-control-disclosure>summary:after{content:"›";position:absolute;right:12px;font-size:18px;line-height:1}.bv-control-disclosure[open]>summary:after{transform:rotate(90deg)}.bv-control-disclosure-body{display:grid;gap:calc(10px * var(--bv-ui-scale));padding:calc(10px * var(--bv-ui-scale));border-top:1px solid var(--bv-ui-border)}.bv-control-field{container:bv-control-field / inline-size;display:grid;align-self:start;gap:var(--bv-ui-field-gap);min-width:0;color:var(--bv-ui-muted)}.bv-field-grid,.bv-choice-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,var(--bv-field-grid-min,165px)),1fr));gap:calc(9px * var(--bv-ui-scale));min-width:0}.bv-choice-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,var(--bv-choice-grid-min,145px)),1fr));gap:var(--bv-ui-field-gap)}.bv-editor-dialog,.bv-card-list,.bv-editor-item-summary{display:grid;gap:calc(10px * var(--bv-ui-scale));min-width:0}.bv-editor-item-compact-summary,.bv-detector-summary{display:flex;align-items:center;gap:calc(6px * var(--bv-ui-scale));min-width:0;color:var(--bv-ui-muted);font-size:calc(10px * var(--bv-ui-scale))}.bv-editor-item-compact-summary>span,.bv-detector-summary>span{max-width:220px;overflow:hidden;padding:2px 6px;text-overflow:ellipsis;white-space:nowrap;background:#ffffff09;border:1px solid var(--bv-ui-border);border-radius:999px}.bv-detector-summary{width:100%}.bv-detector-summary>strong{min-width:90px;color:var(--bv-ui-text)}.bv-detector-summary>span:nth-last-child(1){margin-left:auto}.bv-editor-item-details,.bv-detector-details{display:grid;gap:calc(10px * var(--bv-ui-scale))}.bv-editor-item-actions{display:flex;justify-content:flex-end;gap:var(--bv-ui-field-gap)}.bv-subtle-danger:hover:not(:disabled){color:#f19aa8;background:#d35d711a;border-color:#d35d7129}.bv-editor-impact{color:var(--bv-ui-muted)}.bv-control-label{display:flex;align-items:center;gap:6px;font-size:calc(11px * var(--bv-ui-scale))}.bv-control-help,.bv-control-message{color:var(--bv-ui-muted);font-size:calc(10px * var(--bv-ui-scale));line-height:1.4}.bv-control-message.is-error,.bv-control-field.is-error{color:#f19aa8}.bv-density-compact .bv-control-field,.bv-density-compact .bv-number-field{position:relative}.bv-density-compact .bv-control-help-overlay{position:absolute;z-index:30;top:calc(100% + 4px);left:0;width:max-content;max-width:min(280px,calc(100vw - 24px));padding:5px 7px;opacity:0;color:var(--bv-ui-text);background:#0d0c12;border:1px solid var(--bv-ui-border-hover);border-radius:var(--bv-ui-radius-sm);box-shadow:0 8px 20px #0009;pointer-events:none;transition:opacity .12s ease}.bv-density-compact .bv-control-field:hover>.bv-control-help-overlay,.bv-density-compact .bv-control-field:focus-within>.bv-control-help-overlay,.bv-density-compact .bv-number-field:hover>.bv-control-help-overlay,.bv-density-compact .bv-number-field:focus-within>.bv-control-help-overlay{opacity:1}.bv-input-shell,.bv-select-shell{position:relative;display:flex;align-items:stretch;min-width:0;min-height:var(--bv-ui-control-height);overflow:hidden;color:var(--bv-ui-text);background:var(--bv-ui-input);border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-input-shell:focus-within,.bv-select-shell:focus-within,.bv-number-box:focus-within,.bv-textarea-shell:focus-within{border-color:var(--bv-ui-accent);box-shadow:0 0 0 3px rgba(var(--bv-ui-accent-rgb),.18)}.bv-input-shell>input,.bv-select-shell>select{width:100%;min-width:0;min-height:0;padding:0 calc(11px * var(--bv-ui-scale));color:inherit;background:transparent;border:0;outline:0}.bv-select-shell>select{appearance:none;padding-right:36px}.bv-field-icon,.bv-field-suffix,.bv-number-unit{display:grid;place-items:center;flex:0 0 auto;min-width:calc(34px * var(--bv-ui-scale));padding:0 7px;color:var(--bv-ui-muted);background:#ffffff06}.bv-input-shell>.bv-field-icon{border-right:1px solid var(--bv-ui-border)}.bv-field-suffix,.bv-number-unit{border-left:1px solid var(--bv-ui-border)}.bv-chevron{display:inline-block;width:8px;height:8px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg) translateY(-2px)}.bv-select-shell>.bv-chevron{position:absolute;top:50%;right:13px;transform:translateY(-65%) rotate(45deg);pointer-events:none}.bv-select-popover{position:relative;min-width:0}.bv-select-trigger{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:var(--bv-ui-field-gap);width:100%;min-height:var(--bv-ui-control-height);padding:0 var(--bv-ui-content-padding);color:var(--bv-ui-text);text-align:left;background:var(--bv-ui-input);border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-select-trigger:hover:not(:disabled){border-color:var(--bv-ui-border-hover)}.bv-select-trigger:focus-visible,.bv-select-trigger[aria-expanded=true]{outline:0;border-color:var(--bv-ui-accent);box-shadow:0 0 0 3px rgba(var(--bv-ui-accent-rgb),.18)}.bv-select-trigger>.bv-chevron{justify-self:end}.bv-select-menu{z-index:120;display:grid;gap:2px;max-width:min(360px,calc(100vw - 24px));max-height:min(280px,50vh);padding:var(--bv-ui-field-gap);overflow:auto;color:var(--bv-ui-text);background:var(--bv-ui-surface-raised);border:1px solid var(--bv-ui-border-hover);border-radius:var(--bv-ui-radius);box-shadow:0 14px 42px #000b}.bv-select-menu>button{display:flex;align-items:center;gap:var(--bv-ui-field-gap);min-width:100%;min-height:var(--bv-ui-control-height);padding:0 var(--bv-ui-content-padding);color:var(--bv-ui-text);text-align:left;white-space:nowrap;background:transparent;border:1px solid transparent;border-radius:var(--bv-ui-radius)}.bv-select-menu>button:hover:not(:disabled),.bv-select-menu>button[aria-selected=true]{background:rgba(var(--bv-ui-accent-rgb),.14);border-color:rgba(var(--bv-ui-accent-rgb),.22)}.bv-select-menu>button:disabled{color:var(--bv-ui-muted);opacity:.45}.bv-input-shell>.bv-field-action{align-self:stretch;flex:0 0 auto;min-height:0;padding:0 var(--bv-ui-content-padding);color:var(--bv-ui-muted);background:#ffffff06;border:0;border-left:1px solid var(--bv-ui-border);border-radius:0}.bv-input-shell>.bv-field-action:hover:not(:disabled){color:var(--bv-ui-text);background:rgba(var(--bv-ui-accent-rgb),.12)}@container bv-control-field (max-width:220px){.bv-input-shell:has(.bv-field-action){flex-wrap:wrap;overflow:visible}.bv-input-shell:has(.bv-field-action)>input{flex-basis:100%;min-height:var(--bv-ui-control-height)}.bv-input-shell:has(.bv-field-action)>.bv-field-action{flex:1 1 auto;min-height:var(--bv-ui-control-height);border-top:1px solid var(--bv-ui-border)}.bv-input-shell:has(.bv-field-action)>.bv-field-action:first-of-type{border-left:0}.bv-keybinding{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.bv-keybinding>button:first-child{grid-column:1/-1}}.bv-number-field{container:bv-number-field / inline-size;display:grid;gap:var(--bv-ui-field-gap);min-width:0;color:var(--bv-ui-muted);font-size:calc(11px * var(--bv-ui-scale))}.bv-number-value-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(calc(148px * var(--bv-ui-scale)),38%);align-items:center;gap:calc(11px * var(--bv-ui-scale));min-width:0}.bv-number-field.direct-only .bv-number-value-row{grid-template-columns:1fr}.bv-number-box{display:flex;min-width:0;height:var(--bv-ui-control-height);overflow:hidden;color:var(--bv-ui-text);background:var(--bv-ui-input);border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-number-box>input{width:100%;min-width:0;min-height:0;padding:0 10px;text-align:right;background:transparent;border:0;outline:0;font-variant-numeric:tabular-nums}.bv-number-ticks{display:flex;justify-content:space-between;width:calc(62% - 6px);font-size:calc(9px * var(--bv-ui-scale))}@container bv-number-field (max-width:380px){.bv-number-field.has-slider .bv-number-value-row{grid-template-columns:1fr}.bv-number-field.has-slider .bv-number-box{grid-row:1;width:min(calc(292px * var(--bv-ui-scale)),100%);justify-self:center}.bv-number-field.has-slider .bv-number-slider{grid-row:2;width:100%}.bv-number-field.has-slider .bv-number-ticks{width:100%}}.bv-textarea-shell{display:flex;min-width:0;max-width:100%;min-height:var(--bv-ui-textarea-height);overflow:hidden;color:var(--bv-ui-text);background:var(--bv-ui-input);border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-textarea-shell>textarea{width:100%;min-width:0;min-height:calc(var(--bv-ui-textarea-height) - 2px);max-height:360px;padding:9px 10px;line-height:1.45;background:transparent;border:0;outline:0;resize:vertical;scrollbar-color:rgba(170,162,181,.55) transparent;scrollbar-width:thin}.bv-textarea-shell>textarea::-webkit-scrollbar{width:10px;height:10px}.bv-textarea-shell>textarea::-webkit-scrollbar-track{background:transparent}.bv-textarea-shell>textarea::-webkit-scrollbar-thumb{background:#aaa2b57a;border:2px solid var(--bv-ui-input);border-radius:999px}.bv-textarea-shell>textarea::-webkit-scrollbar-corner{background:var(--bv-ui-input)}.bv-textarea-shell>textarea::-webkit-resizer{background-color:var(--bv-ui-input);background-image:linear-gradient(135deg,transparent 0 48%,rgba(170,162,181,.3) 49% 56%,transparent 57% 65%,rgba(170,162,181,.55) 66% 73%,transparent 74%)}.bv-textarea-shell.resize-none>textarea{resize:none}.bv-textarea-shell.resize-both{max-width:100%;overflow:auto}.bv-textarea-shell.resize-both>textarea{resize:both;max-width:100%}.bv-button{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:var(--bv-ui-control-height);padding:0 calc(13px * var(--bv-ui-scale));color:var(--bv-ui-text);background:var(--bv-ui-surface-raised);border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius);cursor:pointer}.bv-button:hover:not(:disabled){border-color:var(--bv-ui-border-hover);background:#302d39}.bv-button.primary{background:var(--bv-ui-accent);border-color:var(--bv-ui-accent-hover)}.bv-button.ghost{color:var(--bv-ui-muted);background:transparent;border-color:transparent}.bv-button.danger{color:#f19aa8;background:#d35d7121}.bv-button.warning{color:#f0c275;background:#e9b65f1f}.bv-button.success{color:#83deb6;background:#55c9941f}.bv-button.icon-only{width:var(--bv-ui-control-height);padding:0}.bv-button:disabled{opacity:.42;cursor:not-allowed}.bv-menu-button,.bv-split-button,.bv-popover-host,.bv-rich-select,.bv-search-field,.bv-image-picker{position:relative}.bv-menu,.bv-rich-select-menu,.bv-search-results,.bv-image-picker-menu,.bv-popover{position:absolute;z-index:100;top:calc(100% + 6px);right:0;min-width:220px;padding:5px;color:var(--bv-ui-text);background:var(--bv-ui-surface-raised);border:1px solid var(--bv-ui-border-hover);border-radius:var(--bv-ui-radius);box-shadow:0 14px 42px #000b}.bv-menu-content>button,.bv-rich-select-menu>button,.bv-search-results>button,.bv-image-picker-menu>button{display:flex;align-items:center;gap:var(--bv-ui-field-gap);width:100%;padding:var(--bv-ui-field-gap) var(--bv-ui-content-padding);text-align:left;background:transparent;border:0;border-radius:var(--bv-ui-radius)}.bv-menu-content>button:hover,.bv-rich-select-menu>button:hover,.bv-search-results>button:hover,.bv-image-picker-menu>button:hover{background:rgba(var(--bv-ui-accent-rgb),.12)}.bv-menu-content kbd{margin-left:auto}.bv-split-button{display:inline-flex}.bv-split-button>.bv-button:first-child{border-radius:var(--bv-ui-radius) 0 0 var(--bv-ui-radius)}.bv-split-button>.bv-button:nth-child(2){border-radius:0 var(--bv-ui-radius) var(--bv-ui-radius) 0;border-left-color:#fff3}.bv-toggle{display:flex;align-items:center;gap:10px;padding:0;color:var(--bv-ui-text);background:transparent;border:0}.bv-toggle-track{width:42px;height:23px;padding:3px;background:#35313f;border:1px solid var(--bv-ui-border);border-radius:999px}.bv-toggle-track>span{display:block;width:15px;height:15px;background:var(--bv-ui-muted);border-radius:50%;transition:translate .15s}.bv-toggle[aria-checked=true] .bv-toggle-track{background:rgba(var(--bv-ui-accent-rgb),.35);border-color:var(--bv-ui-accent)}.bv-toggle[aria-checked=true] .bv-toggle-track>span{translate:19px;background:var(--bv-ui-accent-soft)}.bv-checkbox-field{display:flex;align-items:flex-start;gap:9px;color:var(--bv-ui-text)}.bv-checkbox-field>input{position:absolute;opacity:0}.bv-checkbox-mark{display:grid;width:var(--bv-ui-check-size);height:var(--bv-ui-check-size);flex:none;border:1px solid var(--bv-ui-muted);border-radius:var(--bv-ui-radius-sm)}.bv-checkbox-field>input:checked+.bv-checkbox-mark{border-color:var(--bv-ui-accent)}.bv-checkbox-field>input:checked+.bv-checkbox-mark:after{content:"";width:8px;height:4px;margin:4px 3px;border-left:2px solid var(--bv-ui-accent);border-bottom:2px solid var(--bv-ui-accent);transform:rotate(-45deg)}.bv-checkbox-field small{display:block;color:var(--bv-ui-muted)}.bv-option-set{display:flex}.bv-option-set>button{min-height:var(--bv-ui-control-height);padding:0 12px;color:var(--bv-ui-muted);background:var(--bv-ui-input);border:1px solid var(--bv-ui-border)}.bv-option-set>button+button{border-left:0}.bv-option-set>button:first-child{border-radius:var(--bv-ui-radius) 0 0 var(--bv-ui-radius)}.bv-option-set>button:last-child{border-radius:0 var(--bv-ui-radius) var(--bv-ui-radius) 0}.bv-option-set>button[aria-checked=true]{z-index:1;color:var(--bv-ui-text);background:rgba(var(--bv-ui-accent-rgb),.2);border-color:var(--bv-ui-accent);box-shadow:inset 0 0 0 1px var(--bv-ui-accent)}.bv-tag-input,.bv-multi-select{padding:var(--bv-ui-field-gap);color:var(--bv-ui-text);background:var(--bv-ui-input);border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-tag-values{display:flex;flex-wrap:wrap;gap:var(--bv-ui-field-gap)}.bv-tag{display:inline-flex;align-items:center;gap:4px;padding:var(--bv-ui-field-gap) var(--bv-ui-content-padding);background:rgba(var(--bv-ui-accent-rgb),.16);border:1px solid rgba(var(--bv-ui-accent-rgb),.28);border-radius:var(--bv-ui-radius)}.bv-tag>button{padding:0 2px;color:var(--bv-ui-muted);background:transparent;border:0}.bv-tag-input>input,.bv-multi-select>input{width:100%;min-height:var(--bv-ui-control-height);background:transparent;border:0;outline:0}.bv-tag-select{position:relative;min-width:0}.bv-tag-select-trigger{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:var(--bv-ui-field-gap);width:100%;min-height:var(--bv-ui-control-height);padding:3px var(--bv-ui-content-padding);color:var(--bv-ui-text);text-align:left;background:var(--bv-ui-input);border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-tag-select-trigger:hover{border-color:var(--bv-ui-border-hover)}.bv-tag-select-trigger:focus-visible,.bv-tag-select-trigger[aria-expanded=true]{outline:0;border-color:var(--bv-ui-accent);box-shadow:0 0 0 3px #8d70ff2e}.bv-tag-select-trigger>.bv-tag-values{min-width:0;overflow:hidden;flex-wrap:nowrap}.bv-tag-select-trigger .bv-tag{max-width:180px;padding:2px 6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bv-tag-select-trigger>.bv-chevron{justify-self:end}.bv-tag-select-menu>div>button{grid-template-columns:18px minmax(0,1fr)}.bv-tag-select-menu>div>button>span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bv-tag-select-check{display:grid;place-items:center;width:16px;height:16px;color:var(--bv-ui-accent-soft);border:1px solid var(--bv-ui-border-hover);border-radius:var(--bv-ui-radius-sm)}.bv-tag-select-menu button[aria-selected=true] .bv-tag-select-check{background:#8d70ff33;border-color:var(--bv-ui-accent)}.bv-tag-select-menu button:disabled{opacity:.7;cursor:not-allowed}.bv-color-field,.bv-keybinding{position:relative;display:flex;gap:7px}.bv-color-swatch{width:var(--bv-ui-control-height);flex:0 0 var(--bv-ui-control-height);border:1px solid var(--bv-ui-border-hover);border-radius:var(--bv-ui-radius)}.bv-color-field>input{flex:1;min-width:0;padding:0 10px;background:var(--bv-ui-input);border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-anchored-popover{position:fixed;right:auto;bottom:auto;min-width:0;z-index:var(--bv-layer-flyout)}.bv-color-popover{padding:10px;background:var(--bv-ui-surface-raised);border:1px solid var(--bv-ui-border-hover);border-radius:var(--bv-ui-radius);box-shadow:0 14px 34px #0000006b}.bv-color-popover .react-colorful{width:min(240px,calc(100vw - 36px))}.bv-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--bv-ui-field-gap);padding:var(--bv-ui-field-gap);background:var(--bv-ui-surface-raised);border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-toolbar.vertical{width:max-content;flex-direction:column}.bv-toolbar-divider{align-self:stretch;border-left:1px solid var(--bv-ui-border)}.bv-toolbar.vertical .bv-toolbar-divider{border-left:0;border-top:1px solid var(--bv-ui-border)}.bv-toolbar .active{color:var(--bv-ui-accent-soft);background:rgba(var(--bv-ui-accent-rgb),.18)}.bv-toolbar .bv-button>svg{width:calc(18px * var(--bv-ui-scale));height:calc(18px * var(--bv-ui-scale));fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.bv-section,.bv-card{min-width:0;color:var(--bv-ui-text)}.bv-section.outlined,.bv-card{border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-section.raised{background:var(--bv-ui-surface-raised);border-radius:var(--bv-ui-radius)}.bv-section>header,.bv-card>header{display:flex;align-items:center;gap:var(--bv-ui-field-gap);padding:var(--bv-ui-content-padding)}.bv-section>header>div,.bv-card>header>div{flex:1;min-width:0}.bv-section h3,.bv-section p{margin:0}.bv-section p,.bv-card small{color:var(--bv-ui-muted)}.bv-section-body,.bv-card>div{padding:var(--bv-ui-content-padding)}.bv-card.interactive{display:block;width:100%;text-align:left;background:transparent}.bv-callout{display:flex;gap:var(--bv-ui-field-gap);padding:var(--bv-ui-content-padding);color:var(--bv-ui-text);background:#ffffff09;border:1px solid var(--bv-ui-border);border-left:3px solid var(--bv-ui-muted);border-radius:var(--bv-ui-radius-sm)}.bv-callout.info{border-left-color:#72a7ff}.bv-callout.success{border-left-color:var(--bv-ui-success)}.bv-callout.warning{border-left-color:var(--bv-ui-warning)}.bv-callout.danger{border-left-color:var(--bv-ui-danger)}.bv-callout>div{flex:1}.bv-badge{display:inline-flex;align-items:center;padding:3px 7px;color:var(--bv-ui-muted);background:#ffffff0f;border-radius:999px;font-size:.85em}.bv-badge.success{color:#83deb6}.bv-badge.warning{color:#f0c275}.bv-badge.danger{color:#f19aa8}.bv-dialog-layer{position:fixed;z-index:var(--bv-layer-modal);inset:0;display:grid;place-items:center;padding:16px}.bv-dialog-layer.modal{background:#08070a9e}.bv-dialog-layer.modeless{place-items:start end;pointer-events:none}.bv-dialog{display:grid;grid-template-rows:auto minmax(0,1fr) auto;width:min(680px,calc(100vw - 32px));max-height:86vh;overflow:hidden;color:var(--bv-ui-text);background:var(--bv-ui-surface);border:1px solid var(--bv-ui-border-hover);border-radius:var(--bv-ui-radius-lg);box-shadow:0 28px 90px #000c;pointer-events:auto}.bv-dialog.small{width:min(480px,calc(100vw - 32px))}.bv-dialog.large{width:min(1040px,calc(100vw - 32px))}.bv-dialog>header,.bv-dialog>footer{display:flex;align-items:flex-start;gap:var(--bv-ui-field-gap);padding:var(--bv-ui-content-padding);background:var(--bv-ui-surface-raised)}.bv-dialog>header>div{flex:1}.bv-dialog h2,.bv-dialog p{margin:0}.bv-dialog-body{min-height:0;overflow:auto;padding:var(--bv-ui-content-padding)}.bv-tree{color:var(--bv-ui-text)}.bv-tree-row{display:grid;grid-template-columns:22px auto minmax(0,1fr) auto auto;align-items:center;gap:var(--bv-ui-field-gap);min-height:var(--bv-ui-row-height);padding:var(--bv-ui-field-gap);border:1px solid transparent;border-radius:var(--bv-ui-radius)}.bv-tree [role=treeitem][aria-selected=true]>.bv-tree-row{background:rgba(var(--bv-ui-accent-rgb),.15);border-color:rgba(var(--bv-ui-accent-rgb),.42)}.bv-tree [role=group]{margin-left:17px;padding-left:8px;border-left:1px solid rgba(var(--bv-ui-accent-rgb),.25)}.bv-tree-expander{display:grid;place-items:center;padding:0;color:var(--bv-ui-muted);background:transparent;border:0}.bv-tree [aria-expanded=false]>.bv-tree-row .bv-chevron{transform:rotate(-45deg)}.bv-tree-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bv-tree-meta{color:var(--bv-ui-muted);font-size:.85em}.bv-showcase{display:grid;grid-template-columns:240px minmax(0,1fr);min-height:100vh;color:var(--bv-ui-text);background:var(--bv-ui-bg)}.bv-showcase>aside{position:sticky;top:0;height:100vh;display:grid;align-content:start;gap:4px;padding:24px 16px;background:var(--bv-ui-surface);border-right:1px solid var(--bv-ui-border)}.bv-showcase>aside a{padding:8px 10px;color:var(--bv-ui-muted);text-decoration:none;border-radius:var(--bv-ui-radius)}.bv-showcase>aside a:hover{color:var(--bv-ui-text);background:#8d70ff1f}.bv-showcase>main{display:grid;gap:22px;width:min(1180px,100%);padding:32px}.bv-showcase>main>header{display:flex;align-items:end;justify-content:space-between;gap:18px}.bv-showcase>main>header>div{min-width:0}.bv-showcase>main>header>.bv-control-field{width:min(320px,100%)}.bv-showcase>main>header h1,.bv-showcase>main>header p{margin:0}.bv-demo-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:14px}.bv-showcase .bv-section-body{display:grid;gap:14px}.bv-window-contract-demo{container:bv-window-header / inline-size;display:grid;grid-template-rows:auto minmax(100px,1fr) auto;min-width:0;overflow:hidden;background:var(--bv-ui-surface);border:1px solid var(--bv-ui-border-hover);border-radius:var(--bv-ui-radius)}.bv-window-contract-demo>.bv-ui-window-header{position:relative}.bv-window-contract-body{display:grid;align-content:center;gap:4px;padding:var(--bv-ui-content-padding);color:var(--bv-ui-muted)}.bv-window-contract-body strong{color:var(--bv-ui-text)}.bv-demo-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.bv-panel-demo{overflow:hidden;background:var(--bv-ui-surface);border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-panel-demo>div{padding:var(--bv-ui-content-padding);color:var(--bv-ui-muted)}@media (max-width:760px){.bv-showcase{grid-template-columns:1fr}.bv-showcase>aside{position:relative;display:flex;height:auto;padding:10px;overflow-x:auto}.bv-showcase>aside h2{margin:0 8px 0 0}.bv-showcase>aside a{white-space:nowrap}.bv-showcase>main{padding:12px}.bv-showcase>main>header{align-items:stretch;flex-direction:column}.bv-showcase>main>header>.bv-control-field{width:100%}.bv-toast-stack{right:12px;bottom:12px;left:12px}.bv-toast{width:100%}}.bv-density-compact .bv-toggle-track{width:36px;height:20px;padding:2px}.bv-density-compact .bv-toggle-track>span{width:14px;height:14px}.bv-density-compact .bv-toggle[aria-checked=true] .bv-toggle-track>span{translate:16px}.bv-density-compact .bv-badge{padding:2px 6px}.bv-density-compact .bv-tooltip{padding:4px 7px}.bv-density-compact .bv-menu,.bv-density-compact .bv-rich-select-menu,.bv-density-compact .bv-search-results,.bv-density-compact .bv-image-picker-menu,.bv-density-compact .bv-popover{padding:var(--bv-ui-field-gap)}.bv-card>header>div,.bv-rich-select-trigger>span,.bv-rich-select-menu button>span,.bv-search-results button>span,.bv-image-picker button>span{display:grid;gap:2px}.bv-card>header>div small,.bv-rich-select small,.bv-search-results small,.bv-image-picker small{color:var(--bv-ui-muted);font-size:.84em}.bv-rich-select-trigger,.bv-image-picker-trigger{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:var(--bv-ui-field-gap);width:100%;min-height:var(--bv-ui-control-height);padding:var(--bv-ui-field-gap) var(--bv-ui-content-padding);color:var(--bv-ui-text);text-align:left;background:var(--bv-ui-input);border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-rich-select-trigger>.bv-chevron,.bv-image-picker-trigger>.bv-chevron{justify-self:end}.bv-image-picker-control{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:stretch;min-width:0;overflow:hidden;background:var(--bv-ui-input);border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-image-picker-control:focus-within{border-color:var(--bv-ui-accent);box-shadow:0 0 0 3px #8d70ff2e}.bv-image-picker-control .bv-image-picker-trigger{min-width:0;padding:var(--bv-ui-field-gap) var(--bv-ui-content-padding);background:transparent;border:0;border-radius:0}.bv-image-preview-action,.bv-image-picker-toggle{align-self:stretch;width:28px!important;min-height:0;padding:0;color:var(--bv-ui-muted);background:transparent;border:0;border-left:1px solid transparent;border-radius:0}.bv-image-preview-action:hover:not(:disabled),.bv-image-picker-toggle:hover:not(:disabled){color:var(--bv-ui-text);background:#8d70ff21;border-left-color:var(--bv-ui-border)}.bv-image-preview-action svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.bv-image-picker-toggle .bv-chevron{width:7px;height:7px}.bv-search-field .bv-input-shell>span:first-child{display:grid;place-items:center;width:34px;color:var(--bv-ui-muted)}.bv-search-results{left:0;right:auto;width:100%}.bv-keybinding{align-items:stretch}.bv-keybinding>button{min-height:var(--bv-ui-control-height);padding:0 10px;color:var(--bv-ui-text);background:var(--bv-ui-input);border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-keybinding>button:first-child{flex:1;text-align:left}.bv-compound-field{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,calc(132px * var(--bv-ui-scale))),1fr));align-self:start;gap:var(--bv-ui-field-gap);min-width:0;margin:0;padding:0;border:0}.bv-compound-field>legend{grid-column:1/-1;margin:0 0 1px;padding:0;color:var(--bv-ui-muted);font-size:calc(11px * var(--bv-ui-scale))}.bv-json-editor{overflow:hidden;color:var(--bv-ui-text);background:var(--bv-ui-input);border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-json-toolbar{display:flex;justify-content:flex-end;padding:var(--bv-ui-field-gap);background:var(--bv-ui-surface-raised);border-bottom:1px solid var(--bv-ui-border)}.bv-json-toolbar>button{min-height:28px;padding:0 9px;color:var(--bv-ui-text);background:transparent;border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-json-editor textarea,.bv-json-editor pre{outline:0!important;font:calc(11px * var(--bv-ui-scale))/1.45 var(--bv-ui-font-mono)!important}.bv-progress{display:grid;gap:var(--bv-ui-field-gap)}.bv-progress>div:first-child{display:flex;justify-content:space-between}.bv-progress [role=progressbar]{height:7px;overflow:hidden;background:var(--bv-ui-input);border-radius:999px}.bv-progress [role=progressbar]>span{display:block;height:100%;background:linear-gradient(90deg,var(--bv-ui-accent),var(--bv-ui-accent-light));border-radius:inherit}.bv-empty-state{display:grid;justify-items:center;gap:var(--bv-ui-field-gap);padding:calc(var(--bv-ui-content-padding) * 2);color:var(--bv-ui-muted);text-align:center;border:1px dashed var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-empty-state strong{color:var(--bv-ui-text)}.bv-empty-state p{margin:0}.bv-toast-stack{position:fixed;z-index:1000;right:18px;bottom:18px;display:grid;justify-items:end;gap:8px;max-width:calc(100vw - 24px)}.bv-toast{display:flex;align-items:flex-start;gap:10px;width:min(360px,calc(100vw - 24px));max-width:calc(100vw - 24px);min-width:0;padding:10px 10px 10px 12px;color:var(--bv-ui-text);background:var(--bv-ui-surface-raised);border:1px solid var(--bv-ui-border-hover);border-radius:var(--bv-ui-radius);box-shadow:0 12px 30px #0008}.bv-toast>div{flex:1 1 auto;min-width:0}.bv-toast strong{display:block;line-height:1.3}.bv-toast p{margin:4px 0 0;color:var(--bv-ui-muted);line-height:1.4;overflow-wrap:anywhere}.bv-toast>.bv-button{flex:0 0 auto;width:26px;min-width:26px;height:26px;padding:0;margin-top:-3px}.bv-breadcrumbs{display:flex;align-items:center;gap:var(--bv-ui-field-gap);color:var(--bv-ui-muted)}.bv-breadcrumbs button{padding:0;color:var(--bv-ui-accent-soft);background:transparent;border:0}.bv-tabs{container:bv-tabs / inline-size;min-width:0}.bv-tabs>div[role=tablist]{display:flex;align-items:end;min-height:var(--bv-ui-row-height);padding:var(--bv-ui-field-gap) var(--bv-ui-content-padding) 0;background:var(--bv-ui-surface-raised);border-bottom:1px solid var(--bv-ui-border)}.bv-tabs>div[role=tablist]>button{position:relative;min-height:var(--bv-ui-control-height);padding:0 var(--bv-ui-content-padding);color:var(--bv-ui-muted);background:transparent;border:0}.bv-tabs>div[role=tablist]>button[aria-selected=true]{color:var(--bv-ui-text)}.bv-tabs>div[role=tablist]>button[aria-selected=true]:after{content:"";position:absolute;right:0;bottom:0;left:0;height:2px;background:var(--bv-ui-accent)}.bv-tabs>[role=tabpanel]{padding:var(--bv-ui-content-padding)}.bv-tabs.vertical{display:grid;grid-template-columns:auto 1fr}.bv-tabs.vertical>div[role=tablist]{display:flex;flex-direction:column;align-items:stretch;padding:6px 0 6px 6px;border-right:1px solid var(--bv-ui-border);border-bottom:0}.bv-accordion{overflow:hidden;border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-accordion>section+section{border-top:1px solid var(--bv-ui-border)}.bv-accordion>section>button{display:flex;justify-content:space-between;align-items:center;width:100%;min-height:var(--bv-ui-row-height);padding:0 var(--bv-ui-content-padding);color:var(--bv-ui-text);text-align:left;background:var(--bv-ui-surface-raised);border:0}.bv-accordion>section>button .bv-chevron{flex:none;align-self:center;transform-origin:center}.bv-accordion>section>button[aria-expanded=true] .bv-chevron{transform:rotate(225deg)}.bv-accordion>section>div{padding:var(--bv-ui-content-padding)}.bv-pagination{display:flex;align-items:center;gap:3px}.bv-pagination button{min-width:var(--bv-ui-control-height);min-height:var(--bv-ui-control-height);padding:0 8px;color:var(--bv-ui-muted);background:transparent;border:1px solid transparent;border-radius:var(--bv-ui-radius)}.bv-pagination button[aria-current=page]{color:var(--bv-ui-text);background:var(--bv-ui-accent)}.bv-pagination button:hover{border-color:var(--bv-ui-border)}.bv-steps{display:flex;min-width:0;overflow-x:auto;counter-reset:steps;margin:0;padding:0;list-style:none}.bv-steps li{position:relative;display:grid;justify-items:center;gap:5px;flex:1;color:var(--bv-ui-muted)}.bv-steps li:not(:last-child):after{content:"";position:absolute;top:14px;left:calc(50% + 18px);width:calc(100% - 36px);border-top:1px solid var(--bv-ui-border)}.bv-steps li>span{z-index:1;display:grid;place-items:center;width:28px;height:28px;background:var(--bv-ui-surface-raised);border:1px solid var(--bv-ui-border);border-radius:50%}.bv-steps li.current,.bv-steps li.complete{color:var(--bv-ui-text)}.bv-steps li.current>span,.bv-steps li.complete>span{border-color:var(--bv-ui-accent)}.bv-tooltip-host{position:relative;display:inline-flex}.bv-tooltip-host>.bv-tooltip{position:absolute;z-index:110;bottom:calc(100% + 7px);left:50%;width:max-content;max-width:260px;padding:var(--bv-ui-field-gap) var(--bv-ui-content-padding);color:var(--bv-ui-text);background:#0d0c12;border:1px solid var(--bv-ui-border-hover);border-radius:var(--bv-ui-radius-sm);box-shadow:0 8px 20px #0009;translate:-50%;opacity:0;pointer-events:none}.bv-tooltip-host:hover>.bv-tooltip,.bv-tooltip-host:focus-within>.bv-tooltip{opacity:1}.bv-divider{display:flex;align-items:center;gap:9px;color:var(--bv-ui-muted)}.bv-divider:before,.bv-divider:after{content:"";flex:1;border-top:1px solid var(--bv-ui-border)}.bv-divider.vertical{flex-direction:column;align-self:stretch}.bv-divider.vertical:before,.bv-divider.vertical:after{border-top:0;border-left:1px solid var(--bv-ui-border)}.bv-code-block{overflow:hidden;background:#100f16;border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-code-block>header{display:flex;justify-content:space-between;align-items:center;min-height:var(--bv-ui-row-height);padding:0 var(--bv-ui-content-padding);color:var(--bv-ui-muted);background:var(--bv-ui-surface-raised);border-bottom:1px solid var(--bv-ui-border)}.bv-code-block pre{margin:0;padding:var(--bv-ui-content-padding);overflow:auto;font:calc(11px * var(--bv-ui-scale))/1.55 var(--bv-ui-font-mono)}.bv-code-line{display:block;min-height:1.55em}.bv-code-block.line-numbers pre{counter-reset:line}.bv-code-block.line-numbers .bv-code-line:before{counter-increment:line;content:counter(line);display:inline-block;width:2.5em;margin-right:1em;color:#6f6a7b;text-align:right}.bv-definition-list{container:bv-definition-list / inline-size;display:grid;gap:7px;margin:0}.bv-definition-row{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:18px}.bv-definition-list dt{color:var(--bv-ui-muted)}.bv-definition-list dd{margin:0}.bv-table-scroll{overflow:auto;border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-table-scroll table{width:100%;border-collapse:collapse}.bv-table-scroll th,.bv-table-scroll td{padding:var(--bv-ui-content-padding);text-align:left;border-bottom:1px solid var(--bv-ui-border)}.bv-table-scroll th{color:var(--bv-ui-muted);background:var(--bv-ui-surface-raised)}.bv-table-scroll tbody tr:last-child td{border-bottom:0}.bv-table-scroll .numeric{text-align:right}.bv-sortable-list{display:grid;gap:7px}.bv-sortable-list>article{container:bv-sortable-item / inline-size;overflow:hidden;background:var(--bv-ui-input);border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-sortable-list article>header{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:5px;min-height:var(--bv-ui-row-height);padding:var(--bv-ui-field-gap)}.bv-sortable-list>article>header>div{display:grid}.bv-sortable-list>article>header small{color:var(--bv-ui-muted)}.bv-drag-handle{width:30px;height:30px;color:var(--bv-ui-muted);background:transparent;border:0;cursor:grab}.bv-segmented-actions{display:inline-flex;align-items:stretch;overflow:hidden;border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-segmented-actions>.bv-button{width:30px;min-width:30px;border:0;border-radius:0}.bv-segmented-actions>.bv-button+.bv-button{border-left:1px solid var(--bv-ui-border)}.bv-segmented-actions .bv-chevron{transition:transform .15s}.bv-segmented-actions .bv-button[aria-expanded=true] .bv-chevron{transform:rotate(225deg)}.bv-sortable-summary,.bv-sortable-content{padding:var(--bv-ui-content-padding);border-top:1px solid var(--bv-ui-border)}.bv-sortable-content{background:#ffffff05}.bv-image-picker-trigger img,.bv-image-picker-menu img{width:42px;height:32px;object-fit:cover;border-radius:var(--bv-ui-radius-sm)}.bv-image-picker-menu{left:0;right:auto;width:100%}.bv-image-preview{position:fixed;z-index:var(--bv-layer-modal);inset:0;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 50% 42%,#221e2db3,#07060af0 70%);backdrop-filter:blur(3px)}.bv-image-preview-dialog{display:grid;grid-template-rows:auto minmax(0,1fr) auto;width:min(94vw,1600px);max-height:calc(100vh - 48px);overflow:hidden;color:var(--bv-ui-text);background:var(--bv-ui-surface);border:1px solid var(--bv-ui-border-hover);border-radius:var(--bv-ui-radius-lg);box-shadow:0 28px 90px #000d}.bv-image-preview-dialog>header{display:flex;align-items:center;gap:var(--bv-ui-content-padding);min-height:var(--bv-ui-row-height);padding:var(--bv-ui-field-gap) var(--bv-ui-content-padding);background:var(--bv-ui-surface-raised);border-bottom:1px solid var(--bv-ui-border)}.bv-image-preview-dialog>header>div{flex:1;min-width:0}.bv-image-preview-dialog h2{margin:0;overflow:hidden;font-size:calc(13px * var(--bv-ui-scale));text-overflow:ellipsis;white-space:nowrap}.bv-image-preview-dialog header small{color:var(--bv-ui-muted)}.bv-image-preview-icon{display:grid;place-items:center;width:26px;height:26px;color:#c7baff;background:#8d70ff21;border:1px solid rgba(141,112,255,.25);border-radius:var(--bv-ui-radius)}.bv-image-preview-icon svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.bv-image-preview-stage{display:grid;place-items:center;min-height:220px;max-height:calc(100vh - 140px);padding:18px;overflow:auto;background-color:#0d0c11;background-image:linear-gradient(45deg,rgba(255,255,255,.025) 25%,transparent 25%),linear-gradient(-45deg,rgba(255,255,255,.025) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,rgba(255,255,255,.025) 75%),linear-gradient(-45deg,transparent 75%,rgba(255,255,255,.025) 75%);background-position:0 0,0 8px,8px -8px,-8px 0;background-size:16px 16px}.bv-image-preview-stage>img{display:block;max-width:100%;max-height:calc(100vh - 176px);object-fit:contain;border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius);box-shadow:0 18px 50px #000a;transform-origin:center;user-select:none;will-change:transform}.bv-image-preview-stage.is-pannable{cursor:grab}.bv-image-preview-stage.is-dragging{cursor:grabbing}.bv-image-preview-stage:not(.is-dragging)>img{transition:transform .12s ease-out}.bv-image-preview-stage>span{color:var(--bv-ui-muted)}.bv-image-preview-dialog>footer{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:var(--bv-ui-content-padding);min-height:var(--bv-ui-row-height);padding:var(--bv-ui-field-gap) var(--bv-ui-content-padding);color:var(--bv-ui-muted);background:var(--bv-ui-surface-raised);border-top:1px solid var(--bv-ui-border);font-size:calc(10px * var(--bv-ui-scale))}.bv-image-preview-help{overflow:hidden;text-align:center;text-overflow:ellipsis;white-space:nowrap}.bv-image-preview-controls{display:flex;align-items:center;gap:2px}.bv-image-preview-controls .bv-button{min-height:24px}.bv-image-preview-controls .icon-only{width:24px}.bv-image-preview-controls output{width:48px;color:var(--bv-ui-text);text-align:center;font-variant-numeric:tabular-nums}@media (max-width:720px){.bv-image-preview-help{display:none}.bv-image-preview-dialog>footer{grid-template-columns:1fr auto}}.bv-command-palette{display:grid;gap:var(--bv-ui-field-gap)}.bv-command-input>span{display:grid;place-items:center;width:var(--bv-ui-control-height);color:var(--bv-ui-muted)}.bv-command-results{display:grid;gap:2px;max-height:min(420px,60vh);overflow:auto}.bv-command-option{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:var(--bv-ui-content-padding);width:100%;min-height:var(--bv-ui-row-height);padding:var(--bv-ui-field-gap) var(--bv-ui-content-padding);color:var(--bv-ui-text);text-align:left;background:transparent;border:1px solid transparent;border-radius:var(--bv-ui-radius)}.bv-command-option>span{display:grid;min-width:0}.bv-command-option small,.bv-command-option kbd{color:var(--bv-ui-muted)}.bv-command-option:hover,.bv-command-option[aria-selected=true]{background:rgba(var(--bv-ui-accent-rgb),.14);border-color:rgba(var(--bv-ui-accent-rgb),.25)}.bv-command-empty{margin:0;padding:calc(var(--bv-ui-content-padding) * 2);color:var(--bv-ui-muted);text-align:center}.bv-adaptive-field{container:bv-adaptive-field / inline-size;min-width:0}.bv-adaptive-inline{min-width:0}.bv-adaptive-trigger{display:none;width:100%;min-width:0;grid-template-columns:auto minmax(0,1fr) auto;text-align:left}.bv-adaptive-summary{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bv-adaptive-popover{width:min(calc(420px * var(--bv-ui-scale)),calc(100vw - 16px));padding:0;overflow:hidden;background:var(--bv-ui-surface-raised);border:1px solid var(--bv-ui-border-hover);border-radius:var(--bv-ui-radius);box-shadow:0 18px 48px #000c}.bv-adaptive-popover>header{display:flex;align-items:center;gap:var(--bv-ui-field-gap);min-height:var(--bv-ui-row-height);padding:var(--bv-ui-field-gap) var(--bv-ui-content-padding);border-bottom:1px solid var(--bv-ui-border)}.bv-adaptive-popover>header>strong{flex:1}.bv-adaptive-popover>div{display:grid;gap:var(--bv-ui-field-gap);padding:var(--bv-ui-content-padding)}.bv-number-popup{display:grid;gap:var(--bv-ui-field-gap)}.bv-number-popup .bv-number-ticks,.bv-number-popup .bv-number-slider{width:100%}.bv-number-popup .bv-number-box{width:min(calc(292px * var(--bv-ui-scale)),100%);justify-self:center}.bv-color-dot{width:14px;height:14px;border:1px solid var(--bv-ui-border-hover);border-radius:50%}.bv-color-expanded{display:grid;gap:var(--bv-ui-content-padding)}.bv-color-expanded>input{width:100%;min-height:var(--bv-ui-control-height);padding:0 var(--bv-ui-content-padding);color:var(--bv-ui-text);background:var(--bv-ui-input);border:1px solid var(--bv-ui-border);border-radius:var(--bv-ui-radius)}.bv-color-expanded .react-colorful{width:100%}@container bv-adaptive-field (max-width:220px){.bv-adaptive-inline{display:none}.bv-adaptive-trigger{display:grid}}.bv-select-menu>div,.bv-rich-select-menu>div,.bv-search-results>div,.bv-image-picker-menu>div{display:grid;gap:2px}.bv-select-menu>div>button,.bv-rich-select-menu>div>button,.bv-search-results>div>button,.bv-image-picker-menu>div>button{display:flex;align-items:center;gap:var(--bv-ui-field-gap);width:100%;min-height:var(--bv-ui-control-height);padding:var(--bv-ui-field-gap) var(--bv-ui-content-padding);color:var(--bv-ui-text);text-align:left;background:transparent;border:1px solid transparent;border-radius:var(--bv-ui-radius)}.bv-select-menu>div>button:hover:not(:disabled),.bv-rich-select-menu>div>button:hover:not(:disabled),.bv-search-results>div>button:hover:not(:disabled),.bv-image-picker-menu>div>button:hover:not(:disabled),.bv-select-menu>div>button[aria-selected=true],.bv-rich-select-menu>div>button[aria-selected=true],.bv-image-picker-menu>div>button[aria-selected=true]{background:rgba(var(--bv-ui-accent-rgb),.14);border-color:rgba(var(--bv-ui-accent-rgb),.24)}.bv-select-menu.bv-tag-select-menu>div>button{display:grid;grid-template-columns:18px minmax(0,1fr)}@container bv-tabs (max-width:280px){.bv-tabs:not(.vertical)>div[role=tablist]{align-items:stretch;overflow-x:auto}.bv-tabs:not(.vertical)>div[role=tablist]>button{flex:0 0 auto}.bv-tabs>[role=tabpanel]{min-width:0}}.bv-steps>li{min-width:88px}@container bv-definition-list (max-width:280px){.bv-definition-row{grid-template-columns:1fr;gap:2px}.bv-definition-row+.bv-definition-row{padding-top:var(--bv-ui-field-gap);border-top:1px solid var(--bv-ui-border)}}@container bv-sortable-item (max-width:280px){.bv-sortable-list>article>header{grid-template-columns:auto minmax(0,1fr) repeat(2,auto)}.bv-sortable-list>article>header>.bv-button{grid-row:2}.bv-sortable-list>article>header>div{grid-column:2/-1}}.bv-responsive-lab{display:grid;gap:18px}.bv-resizable-demo{width:min(100%,420px);min-width:150px;max-width:100%;resize:horizontal;overflow:auto;background:#12111680;border:1px dashed var(--bv-ui-border-hover);border-radius:var(--bv-ui-radius)}.bv-resizable-demo>header{display:flex;justify-content:space-between;gap:10px;padding:var(--bv-ui-field-gap) var(--bv-ui-content-padding);color:var(--bv-ui-muted);background:var(--bv-ui-surface-raised);border-bottom:1px solid var(--bv-ui-border)}.bv-resizable-demo>header strong{color:var(--bv-ui-text)}.bv-responsive-state:before{content:"Wide";color:var(--bv-ui-success)}@container (max-width:380px){.bv-responsive-state:before{content:"Medium";color:var(--bv-ui-warning)}}@container (max-width:220px){.bv-responsive-state:before{content:"Minimal";color:var(--bv-ui-accent-soft)}}.bv-resizable-demo>div{display:grid;gap:var(--bv-ui-content-padding);min-width:0;padding:var(--bv-ui-content-padding)}.bv-global-toast-stack{z-index:var(--bv-layer-toast);bottom:var(--bv-toast-bottom,18px)}.bv-window-header-utility{position:relative;display:inline-flex}.bv-window-visibility-menu-action{min-width:190px;padding:7px 9px;color:var(--bv-ui-text);background:transparent;border:0;text-align:left;cursor:pointer}.bv-window-visibility-menu-action:hover{background:var(--bv-ui-surface-hover)}.bv-toolbar-launcher-secondary{width:26px;height:26px;padding:0;color:var(--bv-ui-muted);background:transparent;border:0;border-radius:var(--bv-ui-radius-xs);cursor:pointer}.bv-toolbar-launcher-secondary:hover{color:var(--bv-ui-text);background:var(--bv-ui-surface-hover)}.bv-regional-action-control:before{mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M4 6h10v2H4V6Zm14-2h2v6h-2V4ZM4 16h4v2H4v-2Zm8-2h2v6h-2v-6Zm6 2h2v2h-2v-2ZM4 11h2v2H4v-2Zm6-2h2v6h-2V9Zm6 2h4v2h-4v-2Z'/%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M4 6h10v2H4V6Zm14-2h2v6h-2V4ZM4 16h4v2H4v-2Zm8-2h2v6h-2v-6Zm6 2h2v2h-2v-2ZM4 11h2v2H4v-2Zm6-2h2v6h-2V9Zm6 2h4v2h-4v-2Z'/%3E%3C/svg%3E")}.bv-toolbar-no-control .bv-regional-action-control,.bv-toolbar-no-editor .bv-regional-action-editor,.bv-toolbar-no-quick .bv-regional-action-quick,.bv-toolbar-no-overview .bv-regional-action-menu{display:none!important}.bv-tag-select-trigger:focus-visible,.bv-tag-select-trigger[aria-expanded=true],.bv-image-picker-control:focus-within{box-shadow:0 0 0 3px rgba(var(--bv-ui-accent-rgb),.18)}.bv-tag-select-menu button[aria-selected=true] .bv-tag-select-check{background:rgba(var(--bv-ui-accent-rgb),.2)}.bv-showcase>aside a:hover{background:rgba(var(--bv-ui-accent-rgb),.12)}.bv-image-preview-action:hover:not(:disabled),.bv-image-picker-toggle:hover:not(:disabled){background:rgba(var(--bv-ui-accent-rgb),.13)}.bv-image-preview-icon{color:var(--bv-ui-accent-soft);background:rgba(var(--bv-ui-accent-rgb),.13);border-color:rgba(var(--bv-ui-accent-rgb),.25)}.bv-m0-picker-host{position:relative;z-index:1;padding:6px}.bv-m0-picker-panel{display:grid;gap:7px}.bv-m0-picker-panel>.bv-control-field{grid-template-columns:1fr auto;align-items:center}.bv-m0-picker-panel>.bv-control-field>.bv-toggle{justify-self:end}.bv-resource-picker{display:grid;gap:5px}.bv-resource-picker.is-unresolved .bv-select-trigger{border-color:var(--bv-ui-danger)}.bv-resource-picker .bv-field-grid{align-items:end}.bv-resource-picker .bv-select-trigger{width:100%}.lg-node:has([node-type="BV M0 Fake Resource Collector"]) [node-type="BV M0 Fake Resource Collector"]:has(input[aria-label=collector_id]),.lg-node:has([node-type="BV M0 Fake Resource Collector"]) [node-type="BV M0 Fake Resource Collector"]:has(input[aria-label=resource_a_id]),.lg-node:has([node-type="BV M0 Fake Resource Collector"]) [node-type="BV M0 Fake Resource Collector"]:has(input[aria-label=resource_b_id]),.lg-node:has([node-type="BV M0 Fake Resource Consumer"]) [node-type="BV M0 Fake Resource Consumer"]:has(input[aria-label=collector_id]),.lg-node:has([node-type="BV M0 Fake Resource Consumer"]) [node-type="BV M0 Fake Resource Consumer"]:has(input[aria-label=resource_id]){display:none}.lg-slot:has(circle[fill*=BV_RUNTIME_RESOURCE_PROVIDER_M0],[style*=BV_RUNTIME_RESOURCE_PROVIDER_M0]){display:none!important}.lg-slot:has(circle[fill*=BV_RUNTIME_RESOURCE_PROVIDER],[style*=BV_RUNTIME_RESOURCE_PROVIDER]){display:none!important}.bv-lora-v3-picker-host{position:relative;z-index:1;padding:6px}.bv-lora-v3-picker-panel{display:grid;gap:10px}.bv-lora-v3-target{display:grid;gap:8px;padding:9px;border:1px solid var(--bv-ui-border);border-radius:4px}.bv-lora-v3-target>h3{margin:0}.bv-optional-lora-scope{display:grid;gap:7px}.bv-lora-v3-enable-row{display:grid;grid-template-columns:minmax(0,1fr);align-items:start;gap:8px}.bv-lora-v3-enable-row>.bv-control-field>.bv-control-label{display:none}.bv-lora-v3-enable-row>.bv-control-field .bv-toggle{white-space:nowrap}.bv-lora-v3-scope-picker{display:grid;gap:8px}.bv-lora-v3-stack-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 8px;align-items:end;padding:7px;border:1px solid var(--bv-ui-border);border-radius:4px}.bv-lora-v3-stack-row>strong,.bv-lora-v3-stack-row>.bv-resource-picker{grid-column:1}.bv-lora-v3-stack-row>.bv-button{grid-column:2;grid-row:2}.bv-trash-icon{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.bv-lora-v3-window{display:grid;gap:10px;padding:10px;overflow:auto}.lg-node:has([node-type="BV M0 Fake Multi Resource Consumer"]) [node-type="BV M0 Fake Multi Resource Consumer"]:has(input[aria-label=resource_bindings]){display:none}.bv-m0-multi-picker{max-height:520px;overflow:auto}.bv-m0-binding{display:grid;gap:5px;padding:6px;border:1px solid var(--bv-ui-border);border-radius:4px}.bv-m0-binding>header{display:flex;align-items:center;justify-content:space-between}.bv-m0-binding>header button,.bv-m0-add-binding{color:var(--bv-ui-text);background:var(--bv-ui-input);border:1px solid var(--bv-ui-border);border-radius:4px}.bv-m0-binding>header button{width:24px;height:24px}.bv-m0-add-binding{min-height:28px}`,Y1='.flexlayout__theme_light .flexlayout__layout{--color-text: var(--flexlayout-color-text, black);--color-background: var(--flexlayout-color-background, white);--color-base: var(--flexlayout-color-base, white);--color-1: var(--flexlayout-color-1, rgb(97%, 97%, 97%));--color-2: var(--flexlayout-color-2, rgb(94%, 94%, 94%));--color-3: var(--flexlayout-color-3, rgb(91%, 91%, 91%));--color-4: var(--flexlayout-color-4, rgb(88%, 88%, 88%));--color-5: var(--flexlayout-color-5, rgb(85%, 85%, 85%));--color-6: var(--flexlayout-color-6, rgb(82%, 82%, 82%));--color-drag1: var(--flexlayout-color-drag1, rgb(95, 134, 196));--color-drag2: var(--flexlayout-color-drag2, rgb(119, 166, 119));--color-drag1-background: var(--flexlayout-color-drag1-background, rgba(95, 134, 196, .1));--color-drag2-background: var(--flexlayout-color-drag2-background, rgba(119, 166, 119, .075));--font-size: var(--flexlayout-font-size, medium);--font-family: var(--flexlayout-font-family, Roboto, Arial, sans-serif);--font-weight: var(--flexlayout-font-weight, normal);--splitter-size: var(--flexlayout-splitter-size, 8px);--splitter-active-size: var(--flexlayout-splitter-active-size, 8px);--splitter-handle-visibility: var(--flexlayout-splitter-handle-visibility, hidden);--color-overflow: var(--flexlayout-color-overflow, gray);--color-icon: var(--flexlayout-color-icon, gray);--color-focus: var(--flexlayout-color-focus, #3b7de7);--color-tabset-background: var(--flexlayout-color-tabset-background, var(--color-background));--color-tabset-background-selected: var(--flexlayout-color-tabset-background-selected, var(--color-1));--color-tabset-background-maximized: var(--flexlayout-color-tabset-background-maximized, var(--color-2));--color-tabset-divider-line: var(--flexlayout-color-tabset-divider-line, var(--color-4));--color-border-tab-content: var(--flexlayout-color-border-tab-content, var(--color-background));--color-border-background: var(--flexlayout-color-border-background, var(--color-background));--color-border-divider-line: var(--flexlayout-color-border-divider-line, var(--color-4));--color-tab-content: var(--flexlayout-color-tab-content, var(--color-background));--color-tab-selected: var(--flexlayout-color-tab-selected, var(--color-text));--color-tab-selected-background: var(--flexlayout-color-tab-selected-background, var(--color-4));--color-tab-unselected: var(--flexlayout-color-tab-unselected, gray);--color-tab-unselected-background: var(--flexlayout-color-tab-unselected-background, transparent);--color-tab-textbox: var(--flexlayout-color-tab-textbox, var(--color-text));--color-tab-textbox-background: var(--flexlayout-color-tab-textbox-background, var(--color-3));--color-border-tab-selected: var(--flexlayout-color-border-tab-selected, var(--color-text));--color-border-tab-selected-background: var(--flexlayout-color-border-tab-selected-background, var(--color-4));--color-border-tab-unselected: var(--flexlayout-color-border-tab-unselected, gray);--color-border-tab-unselected-background: var(--flexlayout-color-border-tab-unselected-background, var(--color-2));--color-splitter: var(--flexlayout-color-splitter, var(--color-1));--color-splitter-hover: var(--flexlayout-color-splitter-hover, var(--color-4));--color-splitter-drag: var(--flexlayout-color-splitter-drag, var(--color-4));--color-splitter-handle: var(--flexlayout-color-splitter-handle, var(--color-3));--color-drag-rect-border: var(--flexlayout-color-drag-rect-border, #ccc);--color-drag-rect-background: var(--flexlayout-color-drag-rect-background, var(--color-5));--color-drag-rect: var(--flexlayout-color-drag-rect, var(--color-text));--color-popup-border: var(--flexlayout-color-popup-border, var(--color-6));--color-popup-unselected: var(--flexlayout-color-popup-unselected, var(--color-text));--color-popup-unselected-background: var(--flexlayout-color-popup-unselected-background, var(--color-background));--color-popup-selected: var(--flexlayout-color-popup-selected, var(--color-text));--color-popup-selected-background: var(--flexlayout-color-popup-selected-background, var(--color-3));--color-edge-marker: var(--flexlayout-color-edge-marker, #aaa);--color-edge-icon: var(--flexlayout-color-edge-icon, #555);--color-mini-scroll-indicator: var(--flexlayout-color-mini-scroll-indicator, rgba(128, 128, 128, .5));--color-mini-scroll-indicator-hovered: var(--flexlayout-color-mini-scroll-indicator-hovered, rgba(128, 128, 128, .7));--size-mini-scroll-indicator: var(--flexlayout-size-mini-scroll-indicator, 3px);--color-toolbar-button-hover: var(--flexlayout-color-toolbar-button-hover, var(--color-3));--color-float-window-header-background: var(--flexlayout-color-float-window-header-background, var(--color-tabset-background))}.flexlayout__theme_dark .flexlayout__layout{--color-text: var(--flexlayout-color-text, #eeeeee);--color-background: var(--flexlayout-color-background, black);--color-base: var(--flexlayout-color-base, black);--color-1: var(--flexlayout-color-1, rgb(7%, 7%, 7%));--color-2: var(--flexlayout-color-2, rgb(10%, 10%, 10%));--color-3: var(--flexlayout-color-3, rgb(15%, 15%, 15%));--color-4: var(--flexlayout-color-4, #333333);--color-5: var(--flexlayout-color-5, rgb(25%, 25%, 25%));--color-6: var(--flexlayout-color-6, rgb(30%, 30%, 30%));--color-drag1: var(--flexlayout-color-drag1, rgb(207, 232, 255));--color-drag2: var(--flexlayout-color-drag2, rgb(183, 209, 181));--color-drag1-background: var(--flexlayout-color-drag1-background, rgba(128, 128, 128, .15));--color-drag2-background: var(--flexlayout-color-drag2-background, rgba(128, 128, 128, .15));--font-size: var(--flexlayout-font-size, medium);--font-family: var(--flexlayout-font-family, Roboto, Arial, sans-serif);--font-weight: var(--flexlayout-font-weight, normal);--splitter-size: var(--flexlayout-splitter-size, 8px);--splitter-active-size: var(--flexlayout-splitter-active-size, 8px);--splitter-handle-visibility: var(--flexlayout-splitter-handle-visibility, hidden);--color-overflow: var(--flexlayout-color-overflow, gray);--color-icon: var(--flexlayout-color-icon, gray);--color-focus: var(--flexlayout-color-focus, #93c5fd);--color-tabset-background: var(--flexlayout-color-tabset-background, var(--color-1));--color-tabset-background-selected: var(--flexlayout-color-tabset-background-selected, var(--color-1));--color-tabset-background-maximized: var(--flexlayout-color-tabset-background-maximized, var(--color-6));--color-tabset-divider-line: var(--flexlayout-color-tabset-divider-line, var(--color-4));--color-border-tab-content: var(--flexlayout-color-border-tab-content, var(--color-background));--color-border-background: var(--flexlayout-color-border-background, var(--color-1));--color-border-divider-line: var(--flexlayout-color-border-divider-line, var(--color-4));--color-tab-content: var(--flexlayout-color-tab-content, var(--color-background));--color-tab-selected: var(--flexlayout-color-tab-selected, var(--color-text));--color-tab-selected-background: var(--flexlayout-color-tab-selected-background, var(--color-4));--color-tab-unselected: var(--flexlayout-color-tab-unselected, gray);--color-tab-unselected-background: var(--flexlayout-color-tab-unselected-background, transparent);--color-tab-textbox: var(--flexlayout-color-tab-textbox, var(--color-text));--color-tab-textbox-background: var(--flexlayout-color-tab-textbox-background, var(--color-3));--color-border-tab-selected: var(--flexlayout-color-border-tab-selected, var(--color-text));--color-border-tab-selected-background: var(--flexlayout-color-border-tab-selected-background, var(--color-4));--color-border-tab-unselected: var(--flexlayout-color-border-tab-unselected, gray);--color-border-tab-unselected-background: var(--flexlayout-color-border-tab-unselected-background, var(--color-2));--color-splitter: var(--flexlayout-color-splitter, var(--color-2));--color-splitter-hover: var(--flexlayout-color-splitter-hover, var(--color-4));--color-splitter-drag: var(--flexlayout-color-splitter-drag, var(--color-5));--color-splitter-handle: var(--flexlayout-color-splitter-handle, var(--color-3));--color-drag-rect-border: var(--flexlayout-color-drag-rect-border, var(--color-4));--color-drag-rect-background: var(--flexlayout-color-drag-rect-background, var(--color-1));--color-drag-rect: var(--flexlayout-color-drag-rect, var(--color-text));--color-popup-border: var(--flexlayout-color-popup-border, var(--color-6));--color-popup-unselected: var(--flexlayout-color-popup-unselected, var(--color-text));--color-popup-unselected-background: var(--flexlayout-color-popup-unselected-background, var(--color-background));--color-popup-selected: var(--flexlayout-color-popup-selected, var(--color-text));--color-popup-selected-background: var(--flexlayout-color-popup-selected-background, var(--color-4));--color-edge-marker: var(--flexlayout-color-edge-marker, gray);--color-edge-icon: var(--flexlayout-color-edge-icon, #eee);--color-mini-scroll-indicator: var(--flexlayout-color-mini-scroll-indicator, rgba(128, 128, 128, .5));--color-mini-scroll-indicator-hovered: var(--flexlayout-color-mini-scroll-indicator-hovered, rgba(128, 128, 128, .8));--size-mini-scroll-indicator: var(--flexlayout-size-mini-scroll-indicator, 3px);--color-toolbar-button-hover: var(--flexlayout-color-toolbar-button-hover, var(--color-4));--color-float-window-header-background: var(--flexlayout-color-float-window-header-background, var(--color-tabset-background))}.flexlayout__theme_gray .flexlayout__layout{--color-text: var(--flexlayout-color-text, black);--color-background: var(--flexlayout-color-background, white);--color-base: var(--flexlayout-color-base, white);--color-1: var(--flexlayout-color-1, rgb(97%, 97%, 97%));--color-2: var(--flexlayout-color-2, rgb(90%, 90%, 90%));--color-3: var(--flexlayout-color-3, rgb(85%, 85%, 85%));--color-4: var(--flexlayout-color-4, #cccccc);--color-5: var(--flexlayout-color-5, rgb(75%, 75%, 75%));--color-6: var(--flexlayout-color-6, rgb(70%, 70%, 70%));--color-drag1: var(--flexlayout-color-drag1, rgb(95, 134, 196));--color-drag2: var(--flexlayout-color-drag2, rgb(119, 166, 119));--color-drag1-background: var(--flexlayout-color-drag1-background, rgba(95, 134, 196, .1));--color-drag2-background: var(--flexlayout-color-drag2-background, rgba(119, 166, 119, .075));--font-size: var(--flexlayout-font-size, medium);--font-family: var(--flexlayout-font-family, Roboto, Arial, sans-serif);--font-weight: var(--flexlayout-font-weight, normal);--splitter-size: var(--flexlayout-splitter-size, 8px);--splitter-active-size: var(--flexlayout-splitter-active-size, 8px);--splitter-handle-visibility: var(--flexlayout-splitter-handle-visibility, hidden);--color-overflow: var(--flexlayout-color-overflow, gray);--color-icon: var(--flexlayout-color-icon, gray);--color-focus: var(--flexlayout-color-focus, #3b7de7);--color-tabset-background: var(--flexlayout-color-tabset-background, var(--color-1));--color-tabset-background-selected: var(--flexlayout-color-tabset-background-selected, var(--color-1));--color-tabset-background-maximized: var(--flexlayout-color-tabset-background-maximized, var(--color-6));--color-tabset-divider-line: var(--flexlayout-color-tabset-divider-line, var(--color-3));--color-border-tab-content: var(--flexlayout-color-border-tab-content, var(--color-background));--color-border-background: var(--flexlayout-color-border-background, var(--color-1));--color-border-divider-line: var(--flexlayout-color-border-divider-line, var(--color-3));--color-tab-content: var(--flexlayout-color-tab-content, var(--color-background));--color-tab-selected: var(--flexlayout-color-tab-selected, var(--color-text));--color-tab-selected-background: var(--flexlayout-color-tab-selected-background, var(--color-3));--color-tab-unselected: var(--flexlayout-color-tab-unselected, gray);--color-tab-unselected-background: var(--flexlayout-color-tab-unselected-background, transparent);--color-tab-textbox: var(--flexlayout-color-tab-textbox, var(--color-text));--color-tab-textbox-background: var(--flexlayout-color-tab-textbox-background, var(--color-3));--color-border-tab-selected: var(--flexlayout-color-border-tab-selected, var(--color-text));--color-border-tab-selected-background: var(--flexlayout-color-border-tab-selected-background, var(--color-3));--color-border-tab-unselected: var(--flexlayout-color-border-tab-unselected, gray);--color-border-tab-unselected-background: var(--flexlayout-color-border-tab-unselected-background, var(--color-2));--color-splitter: var(--flexlayout-color-splitter, var(--color-2));--color-splitter-hover: var(--flexlayout-color-splitter-hover, var(--color-4));--color-splitter-drag: var(--flexlayout-color-splitter-drag, var(--color-5));--color-splitter-handle: var(--flexlayout-color-splitter-handle, var(--color-3));--color-drag-rect-border: var(--flexlayout-color-drag-rect-border, var(--color-4));--color-drag-rect-background: var(--flexlayout-color-drag-rect-background, var(--color-3));--color-drag-rect: var(--flexlayout-color-drag-rect, var(--color-text));--color-popup-border: var(--flexlayout-color-popup-border, var(--color-6));--color-popup-unselected: var(--flexlayout-color-popup-unselected, var(--color-text));--color-popup-unselected-background: var(--flexlayout-color-popup-unselected-background, var(--color-background));--color-popup-selected: var(--flexlayout-color-popup-selected, var(--color-text));--color-popup-selected-background: var(--flexlayout-color-popup-selected-background, var(--color-3));--color-edge-marker: var(--flexlayout-color-edge-marker, #aaa);--color-edge-icon: var(--flexlayout-color-edge-icon, #555);--color-mini-scroll-indicator: var(--flexlayout-color-mini-scroll-indicator, rgba(128, 128, 128, .5));--color-mini-scroll-indicator-hovered: var(--flexlayout-color-mini-scroll-indicator-hovered, rgba(128, 128, 128, .7));--size-mini-scroll-indicator: var(--flexlayout-size-mini-scroll-indicator, 3px);--color-toolbar-button-hover: var(--flexlayout-color-toolbar-button-hover, var(--color-4));--color-float-window-header-background: var(--flexlayout-color-float-window-header-background, var(--color-tabset-background))}.flexlayout__theme_underline .flexlayout__layout{--color-text: var(--flexlayout-color-text, black);--color-background: var(--flexlayout-color-background, white);--color-base: var(--flexlayout-color-base, white);--color-1: var(--flexlayout-color-1, rgb(98%, 98%, 98%));--color-2: var(--flexlayout-color-2, rgb(96%, 96%, 96%));--color-3: var(--flexlayout-color-3, rgb(93%, 93%, 93%));--color-4: var(--flexlayout-color-4, rgb(90%, 90%, 90%));--color-5: var(--flexlayout-color-5, rgb(87%, 87%, 87%));--color-6: var(--flexlayout-color-6, rgb(84%, 84%, 84%));--color-drag1: var(--flexlayout-color-drag1, rgb(95, 134, 196));--color-drag2: var(--flexlayout-color-drag2, rgb(119, 166, 119));--color-drag1-background: var(--flexlayout-color-drag1-background, rgba(95, 134, 196, .1));--color-drag2-background: var(--flexlayout-color-drag2-background, rgba(119, 166, 119, .075));--font-size: var(--flexlayout-font-size, medium);--font-family: var(--flexlayout-font-family, Roboto, Arial, sans-serif);--font-weight: var(--flexlayout-font-weight, normal);--splitter-size: var(--flexlayout-splitter-size, 8px);--splitter-active-size: var(--flexlayout-splitter-active-size, 8px);--splitter-handle-visibility: var(--flexlayout-splitter-handle-visibility, hidden);--color-overflow: var(--flexlayout-color-overflow, gray);--color-icon: var(--flexlayout-color-icon, gray);--color-focus: var(--flexlayout-color-focus, #3b7de7);--color-tabset-background: var(--flexlayout-color-tabset-background, var(--color-background));--color-tabset-background-selected: var(--flexlayout-color-tabset-background-selected, var(--color-1));--color-tabset-background-maximized: var(--flexlayout-color-tabset-background-maximized, var(--color-6));--color-tabset-divider-line: var(--flexlayout-color-tabset-divider-line, var(--color-3));--color-border-tab-content: var(--flexlayout-color-border-tab-content, var(--color-background));--color-border-background: var(--flexlayout-color-border-background, var(--color-background));--color-border-divider-line: var(--flexlayout-color-border-divider-line, var(--color-3));--color-tab-content: var(--flexlayout-color-tab-content, var(--color-background));--color-tab-selected: var(--flexlayout-color-tab-selected, var(--color-text));--color-tab-selected-background: var(--flexlayout-color-tab-selected-background, transparent);--color-tab-unselected: var(--flexlayout-color-tab-unselected, gray);--color-tab-unselected-background: var(--flexlayout-color-tab-unselected-background, transparent);--color-tab-textbox: var(--flexlayout-color-tab-textbox, var(--color-text));--color-tab-textbox-background: var(--flexlayout-color-tab-textbox-background, var(--color-3));--color-border-tab-selected: var(--flexlayout-color-border-tab-selected, var(--color-text));--color-border-tab-selected-background: var(--flexlayout-color-border-tab-selected-background, transparent);--color-border-tab-unselected: var(--flexlayout-color-border-tab-unselected, gray);--color-border-tab-unselected-background: var(--flexlayout-color-border-tab-unselected-background, transparent);--color-splitter: var(--flexlayout-color-splitter, var(--color-1));--color-splitter-hover: var(--flexlayout-color-splitter-hover, var(--color-4));--color-splitter-drag: var(--flexlayout-color-splitter-drag, var(--color-4));--color-splitter-handle: var(--flexlayout-color-splitter-handle, var(--color-3));--color-drag-rect-border: var(--flexlayout-color-drag-rect-border, var(--color-6));--color-drag-rect-background: var(--flexlayout-color-drag-rect-background, var(--color-4));--color-drag-rect: var(--flexlayout-color-drag-rect, var(--color-text));--color-popup-border: var(--flexlayout-color-popup-border, var(--color-6));--color-popup-unselected: var(--flexlayout-color-popup-unselected, var(--color-text));--color-popup-unselected-background: var(--flexlayout-color-popup-unselected-background, var(--color-background));--color-popup-selected: var(--flexlayout-color-popup-selected, var(--color-text));--color-popup-selected-background: var(--flexlayout-color-popup-selected-background, var(--color-3));--color-edge-marker: var(--flexlayout-color-edge-marker, #aaa);--color-edge-icon: var(--flexlayout-color-edge-icon, #555);--color-underline: var(--flexlayout-color-underline, rgb(65, 105, 225));--color-underline-hover: var(--flexlayout-color-underline-hover, #aaa);--underline_height: 3px;--color-mini-scroll-indicator: var(--flexlayout-color-mini-scroll-indicator, rgba(128, 128, 128, .5));--color-mini-scroll-indicator-hovered: var(--flexlayout-color-mini-scroll-indicator-hovered, rgba(128, 128, 128, .7));--size-mini-scroll-indicator: var(--flexlayout-size-mini-scroll-indicator, 4px);--color-toolbar-button-hover: var(--flexlayout-color-toolbar-button-hover, var(--color-3));--color-float-window-header-background: var(--flexlayout-color-float-window-header-background, var(--color-tabset-background))}.flexlayout__theme_rounded .flexlayout__layout{--color-text: var(--flexlayout-color-text, black);--color-background: var(--flexlayout-color-background, #e9eef6);--color-base: var(--flexlayout-color-base, #f2f6fb);--color-1: var(--flexlayout-color-1, rgb(90.3137254902%, 93.2941176471%, 97.0196078431%));--color-2: var(--flexlayout-color-2, rgb(85.7254901961%, 90.1176470588%, 95.6078431373%));--color-3: var(--flexlayout-color-3, rgb(81.137254902%, 86.9411764706%, 94.1960784314%));--color-4: var(--flexlayout-color-4, rgb(76.5490196078%, 83.7647058824%, 92.7843137255%));--color-5: var(--flexlayout-color-5, rgb(71.9607843137%, 80.5882352941%, 91.3725490196%));--color-6: var(--flexlayout-color-6, rgb(67.3725490196%, 77.4117647059%, 89.9607843137%));--color-drag1: var(--flexlayout-color-drag1, rgb(95, 134, 196));--color-drag2: var(--flexlayout-color-drag2, var(--color-drag1));--color-drag1-background: var(--flexlayout-color-drag1-background, rgba(95, 134, 196, .1));--color-drag2-background: var(--flexlayout-color-drag2-background, var(--color-drag1-background));--font-size: var(--flexlayout-font-size, medium);--font-family: var(--flexlayout-font-family, Roboto, Arial, sans-serif);--font-weight: var(--flexlayout-font-weight, normal);--splitter-size: var(--flexlayout-splitter-size, 8px);--splitter-active-size: var(--flexlayout-splitter-active-size, 8px);--splitter-handle-visibility: var(--flexlayout-splitter-handle-visibility, hidden);--color-overflow: var(--flexlayout-color-overflow, #999db2);--color-icon: var(--flexlayout-color-icon, #999db2);--color-focus: var(--flexlayout-color-focus, #3b7de7);--color-tabset-background: var(--flexlayout-color-tabset-background, white);--color-tabset-background-selected: var(--flexlayout-color-tabset-background-selected, white);--color-tabset-background-maximized: var(--flexlayout-color-tabset-background-maximized, white);--color-tabset-divider-line: var(--flexlayout-color-tabset-divider-line, white);--color-border-tab-content: var(--flexlayout-color-border-tab-content, white);--color-border-background: var(--flexlayout-color-border-background, var(--color-background));--color-border-divider-line: var(--flexlayout-color-border-divider-line, var(--color-background));--color-tab-content: var(--flexlayout-color-tab-content, white);--color-tab-selected: var(--flexlayout-color-tab-selected, var(--color-text));--color-tab-selected-background: var(--flexlayout-color-tab-selected-background, var(--color-2));--color-tab-unselected: var(--flexlayout-color-tab-unselected, gray);--color-tab-unselected-background: var(--flexlayout-color-tab-unselected-background, #d3d4e745);--color-tab-textbox: var(--flexlayout-color-tab-textbox, var(--color-text));--color-tab-textbox-background: var(--flexlayout-color-tab-textbox-background, var(--color-3));--color-border-tab-selected: var(--flexlayout-color-border-tab-selected, var(--color-text));--color-border-tab-selected-background: var(--flexlayout-color-border-tab-selected-background, var(--color-2));--color-border-tab-unselected: var(--flexlayout-color-border-tab-unselected, gray);--color-border-tab-unselected-background: var(--flexlayout-color-border-tab-unselected-background, #d3d4e745);--color-splitter: var(--flexlayout-color-splitter, var(--color-background));--color-splitter-hover: var(--flexlayout-color-splitter-hover, var(--color-2));--color-splitter-drag: var(--flexlayout-color-splitter-drag, var(--color-2));--color-splitter-handle: var(--flexlayout-color-splitter-handle, var(--color-3));--color-drag-rect-border: var(--flexlayout-color-drag-rect-border, #ccc);--color-drag-rect-background: var(--flexlayout-color-drag-rect-background, var(--color-5));--color-drag-rect: var(--flexlayout-color-drag-rect, var(--color-text));--color-popup-border: var(--flexlayout-color-popup-border, var(--color-6));--color-popup-unselected: var(--flexlayout-color-popup-unselected, var(--color-text));--color-popup-unselected-background: var(--flexlayout-color-popup-unselected-background, var(--color-background));--color-popup-selected: var(--flexlayout-color-popup-selected, var(--color-text));--color-popup-selected-background: var(--flexlayout-color-popup-selected-background, var(--color-3));--color-edge-marker: var(--flexlayout-color-edge-marker, #a6bbdf);--color-edge-icon: var(--flexlayout-color-edge-icon, #555);--color-mini-scroll-indicator: var(--flexlayout-color-mini-scroll-indicator, rgba(180, 200, 230, .5));--color-mini-scroll-indicator-hovered: var(--flexlayout-color-mini-scroll-indicator-hovered, rgba(180, 200, 230, .7));--size-mini-scroll-indicator: var(--flexlayout-size-mini-scroll-indicator, 4px);--color-toolbar-button-hover: var(--flexlayout-color-toolbar-button-hover, var(--color-2));--tab-button-radius: var(--flexlayout-tab-button-radius, 10px);--border-button-radius: var(--flexlayout-border-button-radius, 10px);--color-float-window-header-background: var(--flexlayout-color-float-window-header-background, var(--color-tabset-background))}.flexlayout__theme_alpha_light .flexlayout__layout{--color-text: var(--flexlayout-color-text, black);--color-background: var(--flexlayout-color-background, #ffffff);--color-base: var(--flexlayout-color-base, #f9fafb);--color-1: var(--flexlayout-color-1, #ededee);--color-2: var(--flexlayout-color-2, #e5e7eb);--color-3: var(--flexlayout-color-3, #d1d5db);--color-4: var(--flexlayout-color-4, #9ca3af);--color-5: var(--flexlayout-color-5, #6b7280);--color-6: var(--flexlayout-color-6, #4b5563);--color-drag1: var(--flexlayout-color-drag1, rgb(95, 134, 196));--color-drag2: var(--flexlayout-color-drag2, rgb(119, 166, 119));--color-drag1-background: var(--flexlayout-color-drag1-background, rgba(59, 130, 246, .1));--color-drag2-background: var(--flexlayout-color-drag2-background, rgba(16, 185, 129, .075));--font-size: var(--flexlayout-font-size, medium);--font-family: var(--flexlayout-font-family, system-ui, -apple-system, Arial, sans-serif);--font-weight: var(--flexlayout-font-weight, 500);--splitter-size: var(--flexlayout-splitter-size, 8px);--splitter-active-size: var(--flexlayout-splitter-active-size, 8px);--splitter-handle-visibility: var(--flexlayout-splitter-handle-visibility, hidden);--color-overflow: var(--flexlayout-color-overflow, var(--color-5));--color-icon: var(--flexlayout-color-icon, var(--color-5));--color-focus: var(--flexlayout-color-focus, #3b7de7);--color-tabset-background: var(--flexlayout-color-tabset-background, var(--color-1));--color-tabset-background-selected: var(--flexlayout-color-tabset-background-selected, var(--color-1));--color-tabset-background-maximized: var(--flexlayout-color-tabset-background-maximized, var(--color-1));--color-tabset-divider-line: var(--flexlayout-color-tabset-divider-line, var(--color-2));--color-border-tab-content: var(--flexlayout-color-border-tab-content, var(--color-1));--color-border-background: var(--flexlayout-color-border-background, var(--color-1));--color-border-divider-line: var(--flexlayout-color-border-divider-line, var(--color-2));--color-tab-content: var(--flexlayout-color-tab-content, var(--color-background));--color-tab-selected: var(--flexlayout-color-tab-selected, #3b7de7);--color-tab-selected-background: var(--flexlayout-color-tab-selected-background, var(--color-background));--color-tab-unselected: var(--flexlayout-color-tab-unselected, var(--color-5));--color-tab-unselected-background: var(--flexlayout-color-tab-unselected-background, transparent);--color-tab-textbox: var(--flexlayout-color-tab-textbox, var(--color-text));--color-tab-textbox-background: var(--flexlayout-color-tab-textbox-background, var(--color-background));--color-border-tab-selected: var(--flexlayout-color-border-tab-selected, #3b7de7);--color-border-tab-selected-background: var(--flexlayout-color-border-tab-selected-background, var(--color-background));--color-border-tab-unselected: var(--flexlayout-color-border-tab-unselected, var(--color-5));--color-border-tab-unselected-background: var(--flexlayout-color-border-tab-unselected-background, var(--color-1));--color-splitter: var(--flexlayout-color-splitter, var(--color-1));--color-splitter-hover: var(--flexlayout-color-splitter-hover, var(--color-4));--color-splitter-drag: var(--flexlayout-color-splitter-drag, var(--color-4));--color-splitter-handle: var(--flexlayout-color-splitter-handle, var(--color-3));--color-drag-rect-border: var(--flexlayout-color-drag-rect-border, var(--color-3));--color-drag-rect-background: var(--flexlayout-color-drag-rect-background, var(--color-background));--color-drag-rect: var(--flexlayout-color-drag-rect, var(--color-text));--color-popup-border: var(--flexlayout-color-popup-border, var(--color-2));--color-popup-unselected: var(--flexlayout-color-popup-unselected, var(--color-text));--color-popup-unselected-background: var(--flexlayout-color-popup-unselected-background, var(--color-background));--color-popup-selected: var(--flexlayout-color-popup-selected, var(--color-drag1));--color-popup-selected-background: var(--flexlayout-color-popup-selected-background, var(--color-1));--color-edge-marker: var(--flexlayout-color-edge-marker, var(--color-3));--color-edge-icon: var(--flexlayout-color-edge-icon, var(--color-6));--color-mini-scroll-indicator: var(--flexlayout-color-mini-scroll-indicator, rgba(0, 0, 0, .1));--color-mini-scroll-indicator-hovered: var(--flexlayout-color-mini-scroll-indicator-hovered, rgba(0, 0, 0, .3));--size-mini-scroll-indicator: var(--flexlayout-size-mini-scroll-indicator, 4px);--color-toolbar-button-hover: var(--flexlayout-color-toolbar-button-hover, var(--color-2));--tab-button-radius: var(--flexlayout-tab-button-radius, 10px);--border-button-radius: var(--flexlayout-border-button-radius, 5px);--color-float-window-header-background: var(--flexlayout-color-float-window-header-background, var(--color-tabset-background))}.flexlayout__theme_alpha_dark .flexlayout__layout{--color-text: var(--flexlayout-color-text, white);--color-background: var(--flexlayout-color-background, black);--color-base: var(--flexlayout-color-base, #121212);--color-1: var(--flexlayout-color-1, #1c1c1c);--color-2: var(--flexlayout-color-2, #383838);--color-3: var(--flexlayout-color-3, #404040);--color-4: var(--flexlayout-color-4, #525252);--color-5: var(--flexlayout-color-5, #737373);--color-6: var(--flexlayout-color-6, #a3a3a3);--color-drag1: var(--flexlayout-color-drag1, #93c5fd);--color-drag2: var(--flexlayout-color-drag2, #6ee7b7);--color-drag1-background: var(--flexlayout-color-drag1-background, rgba(147, 197, 253, .15));--color-drag2-background: var(--flexlayout-color-drag2-background, rgba(110, 231, 183, .1));--font-size: var(--flexlayout-font-size, medium);--font-family: var(--flexlayout-font-family, system-ui, -apple-system, Arial, sans-serif);--font-weight: var(--flexlayout-font-weight, 500);--splitter-size: var(--flexlayout-splitter-size, 8px);--splitter-active-size: var(--flexlayout-splitter-active-size, 8px);--splitter-handle-visibility: var(--flexlayout-splitter-handle-visibility, hidden);--color-overflow: var(--flexlayout-color-overflow, gray);--color-icon: var(--flexlayout-color-icon, gray);--color-focus: var(--flexlayout-color-focus, #93c5fd);--color-tabset-background: var(--flexlayout-color-tabset-background, var(--color-1));--color-tabset-background-selected: var(--flexlayout-color-tabset-background-selected, var(--color-1));--color-tabset-background-maximized: var(--flexlayout-color-tabset-background-maximized, var(--color-1));--color-tabset-divider-line: var(--flexlayout-color-tabset-divider-line, var(--color-2));--color-border-tab-content: var(--flexlayout-color-border-tab-content, var(--color-1));--color-border-background: var(--flexlayout-color-border-background, var(--color-1));--color-border-divider-line: var(--flexlayout-color-border-divider-line, var(--color-2));--color-tab-content: var(--flexlayout-color-tab-content, var(--color-background));--color-tab-selected: var(--flexlayout-color-tab-selected, #e5e7eb);--color-tab-selected-background: var(--flexlayout-color-tab-selected-background, var(--color-background));--color-tab-unselected: var(--flexlayout-color-tab-unselected, var(--color-5));--color-tab-unselected-background: var(--flexlayout-color-tab-unselected-background, transparent);--color-tab-textbox: var(--flexlayout-color-tab-textbox, var(--color-text));--color-tab-textbox-background: var(--flexlayout-color-tab-textbox-background, var(--color-background));--color-border-tab-selected: var(--flexlayout-color-border-tab-selected, #e5e7eb);--color-border-tab-selected-background: var(--flexlayout-color-border-tab-selected-background, var(--color-background));--color-border-tab-unselected: var(--flexlayout-color-border-tab-unselected, var(--color-5));--color-border-tab-unselected-background: var(--flexlayout-color-border-tab-unselected-background, var(--color-1));--color-splitter: var(--flexlayout-color-splitter, var(--color-1));--color-splitter-hover: var(--flexlayout-color-splitter-hover, var(--color-3));--color-splitter-drag: var(--flexlayout-color-splitter-drag, var(--color-4));--color-splitter-handle: var(--flexlayout-color-splitter-handle, var(--color-3));--color-drag-rect-border: var(--flexlayout-color-drag-rect-border, var(--color-3));--color-drag-rect-background: var(--flexlayout-color-drag-rect-background, var(--color-background));--color-drag-rect: var(--flexlayout-color-drag-rect, var(--color-text));--color-popup-border: var(--flexlayout-color-popup-border, var(--color-2));--color-popup-unselected: var(--flexlayout-color-popup-unselected, var(--color-text));--color-popup-unselected-background: var(--flexlayout-color-popup-unselected-background, var(--color-background));--color-popup-selected: var(--flexlayout-color-popup-selected, #f9fafb);--color-popup-selected-background: var(--flexlayout-color-popup-selected-background, var(--color-1));--color-edge-marker: var(--flexlayout-color-edge-marker, var(--color-3));--color-edge-icon: var(--flexlayout-color-edge-icon, gray);--color-mini-scroll-indicator: var(--flexlayout-color-mini-scroll-indicator, rgba(255, 255, 255, .1));--color-mini-scroll-indicator-hovered: var(--flexlayout-color-mini-scroll-indicator-hovered, rgba(255, 255, 255, .3));--size-mini-scroll-indicator: var(--flexlayout-size-mini-scroll-indicator, 4px);--color-toolbar-button-hover: var(--flexlayout-color-toolbar-button-hover, var(--color-2));--tab-button-radius: var(--flexlayout-tab-button-radius, 10px);--border-button-radius: var(--flexlayout-border-button-radius, 5px);--color-float-window-header-background: var(--flexlayout-color-float-window-header-background, var(--color-tabset-background))}.flexlayout__theme_alpha_rounded .flexlayout__layout{--color-text: var(--flexlayout-color-text, black);--color-background: var(--flexlayout-color-background, #e9eef6);--color-base: var(--flexlayout-color-base, #ffffff);--color-1: var(--flexlayout-color-1, #f1f5f9);--color-2: var(--flexlayout-color-2, #e2e8f0);--color-3: var(--flexlayout-color-3, #cbd5e1);--color-4: var(--flexlayout-color-4, #94a3b8);--color-5: var(--flexlayout-color-5, #64748b);--color-6: var(--flexlayout-color-6, #475569);--color-drag1: var(--flexlayout-color-drag1, rgb(95, 134, 196));--color-drag2: var(--flexlayout-color-drag2, rgb(119, 166, 119));--color-drag1-background: var(--flexlayout-color-drag1-background, rgba(59, 130, 246, .1));--color-drag2-background: var(--flexlayout-color-drag2-background, rgba(16, 185, 129, .075));--font-size: var(--flexlayout-font-size, medium);--font-family: var(--flexlayout-font-family, system-ui, -apple-system, Arial, sans-serif);--font-weight: var(--flexlayout-font-weight, 500);--splitter-size: var(--flexlayout-splitter-size, 8px);--splitter-active-size: var(--flexlayout-splitter-active-size, 8px);--splitter-handle-visibility: var(--flexlayout-splitter-handle-visibility, hidden);--color-overflow: var(--flexlayout-color-overflow, var(--color-4));--color-icon: var(--flexlayout-color-icon, var(--color-4));--color-focus: var(--flexlayout-color-focus, #3b7de7);--color-tabset-background: var(--flexlayout-color-tabset-background, white);--color-tabset-background-selected: var(--flexlayout-color-tabset-background-selected, white);--color-tabset-background-maximized: var(--flexlayout-color-tabset-background-maximized, white);--color-tabset-divider-line: var(--flexlayout-color-tabset-divider-line, white);--color-border-tab-content: var(--flexlayout-color-border-tab-content, white);--color-border-background: var(--flexlayout-color-border-background, var(--color-background));--color-border-divider-line: var(--flexlayout-color-border-divider-line, var(--color-background));--color-tab-content: var(--flexlayout-color-tab-content, white);--color-tab-selected: var(--flexlayout-color-tab-selected, #3b7de7);--color-tab-selected-background: var(--flexlayout-color-tab-selected-background, var(--color-2));--color-tab-unselected: var(--flexlayout-color-tab-unselected, var(--color-4));--color-tab-unselected-background: var(--flexlayout-color-tab-unselected-background, var(--color-1));--color-tab-textbox: var(--flexlayout-color-tab-textbox, var(--color-text));--color-tab-textbox-background: var(--flexlayout-color-tab-textbox-background, var(--color-3));--color-border-tab-selected: var(--flexlayout-color-border-tab-selected, #3b7de7);--color-border-tab-selected-background: var(--flexlayout-color-border-tab-selected-background, var(--color-2));--color-border-tab-unselected: var(--flexlayout-color-border-tab-unselected, var(--color-4));--color-border-tab-unselected-background: var(--flexlayout-color-border-tab-unselected-background, var(--color-1));--color-splitter: var(--flexlayout-color-splitter, var(--color-background));--color-splitter-hover: var(--flexlayout-color-splitter-hover, var(--color-3));--color-splitter-drag: var(--flexlayout-color-splitter-drag, var(--color-3));--color-splitter-handle: var(--flexlayout-color-splitter-handle, var(--color-3));--color-drag-rect-border: var(--flexlayout-color-drag-rect-border, var(--color-3));--color-drag-rect-background: var(--flexlayout-color-drag-rect-background, var(--color-base));--color-drag-rect: var(--flexlayout-color-drag-rect, var(--color-text));--color-popup-border: var(--flexlayout-color-popup-border, var(--color-2));--color-popup-unselected: var(--flexlayout-color-popup-unselected, var(--color-text));--color-popup-unselected-background: var(--flexlayout-color-popup-unselected-background, var(--color-base));--color-popup-selected: var(--flexlayout-color-popup-selected, var(--color-drag1));--color-popup-selected-background: var(--flexlayout-color-popup-selected-background, var(--color-1));--color-edge-marker: var(--flexlayout-color-edge-marker, var(--color-3));--color-edge-icon: var(--flexlayout-color-edge-icon, var(--color-6));--color-mini-scroll-indicator: var(--flexlayout-color-mini-scroll-indicator, rgba(0, 0, 0, .1));--color-mini-scroll-indicator-hovered: var(--flexlayout-color-mini-scroll-indicator-hovered, rgba(0, 0, 0, .2));--size-mini-scroll-indicator: var(--flexlayout-size-mini-scroll-indicator, 4px);--color-toolbar-button-hover: var(--flexlayout-color-toolbar-button-hover, var(--color-1));--tab-button-radius: var(--flexlayout-tab-button-radius, 16px);--border-button-radius: var(--flexlayout-border-button-radius, 16px);--color-float-window-header-background: var(--flexlayout-color-float-window-header-background, var(--color-tabset-background))}.flexlayout__theme_aria .flexlayout__layout{--color-text: var(--flexlayout-color-text, black);--color-background: var(--flexlayout-color-background, #ffffff);--color-base: var(--flexlayout-color-base, #f9fafb);--color-1: var(--flexlayout-color-1, #ededee);--color-2: var(--flexlayout-color-2, #e5e7eb);--color-3: var(--flexlayout-color-3, #d1d5db);--color-4: var(--flexlayout-color-4, #9ca3af);--color-5: var(--flexlayout-color-5, #6b7280);--color-6: var(--flexlayout-color-6, #4b5563);--color-drag1: var(--flexlayout-color-drag1, rgb(95, 134, 196));--color-drag2: var(--flexlayout-color-drag2, rgb(119, 166, 119));--color-drag1-background: var(--flexlayout-color-drag1-background, rgba(59, 130, 246, .1));--color-drag2-background: var(--flexlayout-color-drag2-background, rgba(16, 185, 129, .075));--font-size: var(--flexlayout-font-size, medium);--font-family: var(--flexlayout-font-family, system-ui, -apple-system, Arial, sans-serif);--font-weight: var(--flexlayout-font-weight, 500);--splitter-size: var(--flexlayout-splitter-size, 8px);--splitter-active-size: var(--flexlayout-splitter-active-size, 8px);--splitter-handle-visibility: var(--flexlayout-splitter-handle-visibility, hidden);--color-overflow: var(--flexlayout-color-overflow, var(--color-5));--color-icon: var(--flexlayout-color-icon, var(--color-5));--color-focus: var(--flexlayout-color-focus, #3b7de7);--color-tabset-background: var(--flexlayout-color-tabset-background, var(--color-1));--color-tabset-background-selected: var(--flexlayout-color-tabset-background-selected, var(--color-1));--color-tabset-background-maximized: var(--flexlayout-color-tabset-background-maximized, var(--color-1));--color-tabset-divider-line: var(--flexlayout-color-tabset-divider-line, var(--color-2));--color-border-tab-content: var(--flexlayout-color-border-tab-content, var(--color-1));--color-border-background: var(--flexlayout-color-border-background, var(--color-1));--color-border-divider-line: var(--flexlayout-color-border-divider-line, var(--color-2));--color-tab-content: var(--flexlayout-color-tab-content, var(--color-background));--color-tab-selected: var(--flexlayout-color-tab-selected, #3b7de7);--color-tab-selected-background: var(--flexlayout-color-tab-selected-background, var(--color-background));--color-tab-unselected: var(--flexlayout-color-tab-unselected, var(--color-5));--color-tab-unselected-background: var(--flexlayout-color-tab-unselected-background, transparent);--color-tab-textbox: var(--flexlayout-color-tab-textbox, var(--color-text));--color-tab-textbox-background: var(--flexlayout-color-tab-textbox-background, var(--color-background));--color-border-tab-selected: var(--flexlayout-color-border-tab-selected, #3b7de7);--color-border-tab-selected-background: var(--flexlayout-color-border-tab-selected-background, var(--color-background));--color-border-tab-unselected: var(--flexlayout-color-border-tab-unselected, var(--color-5));--color-border-tab-unselected-background: var(--flexlayout-color-border-tab-unselected-background, var(--color-1));--color-splitter: var(--flexlayout-color-splitter, var(--color-1));--color-splitter-hover: var(--flexlayout-color-splitter-hover, var(--color-4));--color-splitter-drag: var(--flexlayout-color-splitter-drag, var(--color-4));--color-splitter-handle: var(--flexlayout-color-splitter-handle, var(--color-3));--color-drag-rect-border: var(--flexlayout-color-drag-rect-border, var(--color-3));--color-drag-rect-background: var(--flexlayout-color-drag-rect-background, var(--color-background));--color-drag-rect: var(--flexlayout-color-drag-rect, var(--color-text));--color-popup-border: var(--flexlayout-color-popup-border, var(--color-2));--color-popup-unselected: var(--flexlayout-color-popup-unselected, var(--color-text));--color-popup-unselected-background: var(--flexlayout-color-popup-unselected-background, var(--color-background));--color-popup-selected: var(--flexlayout-color-popup-selected, var(--color-drag1));--color-popup-selected-background: var(--flexlayout-color-popup-selected-background, var(--color-1));--color-edge-marker: var(--flexlayout-color-edge-marker, var(--color-3));--color-edge-icon: var(--flexlayout-color-edge-icon, var(--color-6));--color-mini-scroll-indicator: var(--flexlayout-color-mini-scroll-indicator, rgba(0, 0, 0, .1));--color-mini-scroll-indicator-hovered: var(--flexlayout-color-mini-scroll-indicator-hovered, rgba(0, 0, 0, .3));--size-mini-scroll-indicator: var(--flexlayout-size-mini-scroll-indicator, 4px);--color-toolbar-button-hover: var(--flexlayout-color-toolbar-button-hover, var(--color-2));--tab-button-radius: var(--flexlayout-tab-button-radius, 10px);--border-button-radius: var(--flexlayout-border-button-radius, 5px);--color-float-window-header-background: var(--flexlayout-color-float-window-header-background, var(--color-tabset-background))}.flexlayout__theme_aria .flexlayout__layout{--color-tab-selected: var(--flexlayout-color-tab-selected, #2563eb);--color-border-tab-selected: var(--flexlayout-color-border-tab-selected, #2563eb);--color-tab-unselected: var(--flexlayout-color-tab-unselected, var(--color-6));--color-border-tab-unselected: var(--flexlayout-color-border-tab-unselected, var(--color-6))}.flexlayout__layout{inset:0;position:absolute;display:flex;background-color:var(--color-background)}.flexlayout__layout_metrics{position:absolute;top:-30000px}.flexlayout__layout_overlay{inset:0;position:absolute;z-index:1000}.flexlayout__layout_tab_stamps{position:absolute;top:-10000px;z-index:100;display:flex;flex-direction:column;align-items:flex-start}.flexlayout__layout_moveables_home{visibility:hidden;position:absolute;width:100px;height:100px;top:-20000px}.flexlayout__layout_main{display:flex;flex-basis:0px;min-width:0;min-height:0;flex-grow:1;position:relative}.flexlayout__layout_border_container{display:flex;flex-basis:0px;min-width:0;min-height:0;flex-grow:1}.flexlayout__layout_border_container_inner{display:flex;flex-basis:0px;min-width:0;min-height:0;flex-grow:1;position:relative}.flexlayout__splitter{display:flex;align-items:center;justify-content:center;background-color:var(--color-splitter);touch-action:none;z-index:10;position:relative}.flexlayout__splitter:focus-visible{outline:2px solid var(--color-focus);outline-offset:-2px}.flexlayout__splitter_horz{width:var(--splitter-size);min-width:var(--splitter-size)}.flexlayout__splitter_horz:before{content:"";position:absolute;top:0;bottom:0;left:50%;width:var(--splitter-active-size);transform:translate(-50%);z-index:1}.flexlayout__splitter_vert{height:var(--splitter-size);min-height:var(--splitter-size)}.flexlayout__splitter_vert:before{content:"";position:absolute;left:0;right:0;top:50%;height:var(--splitter-active-size);transform:translateY(-50%);z-index:1}@media (hover: hover){.flexlayout__splitter:hover{background-color:var(--color-splitter-hover);transition:background-color ease-in .1s;transition-delay:.05s;border-radius:5px}}.flexlayout__splitter_drag{position:absolute;display:flex;align-items:center;justify-content:center;z-index:1000;border-radius:5px;background-color:var(--color-splitter-drag)}.flexlayout__splitter_handle{background-color:var(--color-splitter-handle);border-radius:3px;visibility:var(--splitter-handle-visibility)}.flexlayout__splitter_handle_horz{width:3px;height:30px}.flexlayout__splitter_handle_vert{width:30px;height:3px}.flexlayout__outline_rect{position:absolute;pointer-events:none;box-sizing:border-box;border:2px solid var(--color-drag1);background:var(--color-drag1-background);border-radius:5px;z-index:1000}.flexlayout__outline_rect_edge{pointer-events:none;border:2px solid var(--color-drag2);background:var(--color-drag2-background);border-radius:5px;z-index:1000;box-sizing:border-box}.flexlayout__edge_rect{position:absolute;z-index:1000;background-color:var(--color-edge-marker);pointer-events:none;display:flex;align-items:center;justify-content:center}.flexlayout__drag_rect{color:var(--color-drag-rect);background-color:var(--color-drag-rect-background);border:2px solid var(--color-drag-rect-border);border-radius:5px;box-sizing:border-box;display:flex;justify-content:center;flex-direction:column;overflow:hidden;padding:.3em .8em;word-wrap:break-word;font-size:var(--font-size);font-family:var(--font-family)}.flexlayout__row{display:flex;flex-basis:0px;min-width:0;min-height:0;position:relative;box-sizing:border-box;overflow:hidden}.flexlayout__tabset{display:flex;flex-direction:column;position:relative;background-color:var(--color-tabset-background);box-sizing:border-box;font-family:var(--font-family);overflow:hidden;flex-grow:1}.flexlayout__tabset_container{display:flex;flex-basis:0px;min-width:0;min-height:0;flex-direction:column;overflow:hidden;flex-grow:1}.flexlayout__tabset_tab_divider{width:4px}.flexlayout__tabset_content{display:flex;flex-basis:0px;min-width:0;min-height:0;flex-grow:1;box-sizing:border-box;position:relative}.flexlayout__tabset_leading{display:flex}.flexlayout__tabset_tabbar_outer{box-sizing:border-box;background-color:var(--color-tabset-background);overflow:hidden;display:flex;align-items:center;min-height:1.5em;font-size:var(--font-size);font-weight:var(--font-weight)}.flexlayout__tabset_tabbar_outer_top{padding:0 2px;border-bottom:1px solid var(--color-tabset-divider-line)}.flexlayout__tabset_tabbar_outer_bottom{padding:0 2px;border-top:1px solid var(--color-tabset-divider-line)}.flexlayout__tabset_tabbar_inner{position:relative;box-sizing:border-box;display:flex;flex-grow:1;scrollbar-width:none}.flexlayout__tabset_tabbar_inner::-webkit-scrollbar{display:none}.flexlayout__tabset_tabbar_inner_tab_container{position:relative;display:flex;padding-left:4px;padding-right:4px;box-sizing:border-box;white-space:nowrap;align-items:center}.flexlayout__tabset_tabbar_inner_tab_container_top{border-top:2px solid transparent}.flexlayout__tabset_tabbar_inner_tab_container_bottom{border-bottom:2px solid transparent}.flexlayout__tabset-selected{background-color:var(--color-tabset-background-selected)}.flexlayout__tabset-maximized{background-color:var(--color-tabset-background-maximized)}.flexlayout__tab_button_stamp{display:inline-flex;align-items:center;gap:.3em;white-space:nowrap;box-sizing:border-box}.flexlayout__tab{overflow:hidden;box-sizing:border-box;background-color:var(--color-tab-content);color:var(--color-text);position:absolute}.flexlayout__tab_moveable{position:relative;height:100%;min-width:1px;min-height:1px;overflow:auto;box-sizing:border-box}.flexlayout__tab_overlay{z-index:20;position:absolute;inset:0;background-color:#0000003d}.flexlayout__tab_border_overlay{z-index:1000}.flexlayout__tab_overlay_raised{z-index:1001}.flexlayout__tab_layout_container{position:relative;height:100%;box-sizing:border-box}.flexlayout__tab_layout_container_user{position:relative;flex-grow:1;box-sizing:border-box}.flexlayout__tab_button{display:flex;gap:.3em;align-items:center;box-sizing:border-box;padding:3px .5em;font-weight:var(--font-weight)}.flexlayout__tab_button:focus-visible{outline:2px solid var(--color-focus);outline-offset:-2px}.flexlayout__tab_button{cursor:pointer}.flexlayout__tab_button_stretch{background-color:transparent;color:var(--color-tab-selected);width:100%;padding:3px 0;text-wrap:nowrap;display:flex;gap:.3em;align-items:center;box-sizing:border-box;cursor:pointer}@media (hover: hover){.flexlayout__tab_button_stretch:hover{color:var(--color-tab-selected)}}.flexlayout__tab_button--selected{background-color:var(--color-tab-selected-background);color:var(--color-tab-selected)}@media (hover: hover){.flexlayout__tab_button:hover{color:var(--color-tab-selected)}}.flexlayout__tab_button--unselected{background-color:var(--color-tab-unselected-background);color:var(--color-tab-unselected)}.flexlayout__tab_button_leading,.flexlayout__tab_button_pin{display:flex}.flexlayout__tab_button_content{display:flex;text-wrap:nowrap}.flexlayout__tab_button_textbox{border:none;font-family:var(--font-family);font-size:var(--font-size);font-weight:var(--font-weight);color:var(--color-tab-textbox);background-color:var(--color-tab-textbox-background);border:1px inset var(--color-1);border-radius:3px;width:10em}.flexlayout__tab_button_textbox:focus{outline:2px solid var(--color-focus);outline-offset:-1px}.flexlayout__tab_button_trailing{display:flex;visibility:hidden;border-radius:4px}.flexlayout__tab_button_trailing:hover{background-color:var(--color-toolbar-button-hover)}@media (hover: hover){.flexlayout__tab_button:hover .flexlayout__tab_button_trailing{visibility:visible}}.flexlayout__tab_button--selected .flexlayout__tab_button_trailing{visibility:visible}.flexlayout__tab_button_overflow{display:flex;align-items:center;border:none;color:var(--color-overflow);font-size:inherit;background-color:transparent;width:2em;overflow:hidden}.flexlayout__tab_toolbar{display:flex;align-items:center;gap:.3em;padding-left:.5em;padding-right:.3em}.flexlayout__tab_toolbar_icon{border:none;outline:none;font-size:inherit;margin:0;background-color:transparent;padding:1px}.flexlayout__tab_toolbar_icon:focus-visible{outline:2px solid var(--color-focus);outline-offset:-2px}.flexlayout__tab_toolbar_button{border:none;outline:none;font-size:inherit;margin:0;background-color:transparent;border-radius:4px;padding:1px}.flexlayout__tab_toolbar_button:focus-visible{outline:2px solid var(--color-focus);outline-offset:-2px}@media (hover: hover){.flexlayout__tab_toolbar_button:hover{background-color:var(--color-toolbar-button-hover)}}.flexlayout__tab_toolbar_sticky_buttons_container{display:flex;gap:.3em;padding-left:5px;align-items:center}.flexlayout__border{box-sizing:border-box;overflow:hidden;display:flex;font-family:var(--font-family);font-size:var(--font-size);font-weight:var(--font-weight);color:var(--color-border);background-color:var(--color-border-background)}.flexlayout__border_tab_contents{box-sizing:border-box;overflow:hidden;background-color:var(--color-border-tab-content)}.flexlayout__border_tab_overlay{position:absolute;z-index:100}.flexlayout__border_tab_overlay_top{top:0;left:0;right:0;flex-direction:column}.flexlayout__border_tab_overlay_bottom{bottom:0;left:0;right:0;flex-direction:column}.flexlayout__border_tab_overlay_left{left:0;top:0;bottom:0;flex-direction:row}.flexlayout__border_tab_overlay_right{right:0;top:0;bottom:0;flex-direction:row}.flexlayout__border_leading{display:flex}.flexlayout__border_top{border-bottom:1px solid var(--color-border-divider-line);align-items:center}.flexlayout__border_bottom{border-top:1px solid var(--color-border-divider-line);align-items:center}.flexlayout__border_left{border-right:1px solid var(--color-border-divider-line);align-content:center;flex-direction:column}.flexlayout__border_right{border-left:1px solid var(--color-border-divider-line);align-content:center;flex-direction:column}.flexlayout__border_inner{position:relative;box-sizing:border-box;align-items:center;display:flex;flex-grow:1;scrollbar-width:none}.flexlayout__border_inner::-webkit-scrollbar{display:none}.flexlayout__border_inner_tab_container{white-space:nowrap;display:flex;align-items:center;padding-left:2px;padding-right:2px;box-sizing:border-box;position:absolute}.flexlayout__border_inner_tab_container_right{transform-origin:top left;transform:rotate(90deg)}.flexlayout__border_inner_tab_container_left{flex-direction:row-reverse;transform-origin:top right;transform:rotate(-90deg)}.flexlayout__border_inner_tab_container_left_down{flex-direction:row;transform-origin:top left;transform:rotate(90deg)}.flexlayout__border_tab_divider{width:4px}.flexlayout__border_button{display:flex;gap:.3em;align-items:center;cursor:pointer;padding:3px .5em;margin:2px 0;box-sizing:border-box;white-space:nowrap;font-weight:var(--font-weight)}.flexlayout__border_button:focus-visible{outline:2px solid var(--color-focus);outline-offset:-2px}.flexlayout__border_button--selected{background-color:var(--color-border-tab-selected-background);color:var(--color-border-tab-selected)}@media (hover: hover){.flexlayout__border_button:hover{color:var(--color-border-tab-selected)}}.flexlayout__border_button--unselected{background-color:var(--color-border-tab-unselected-background);color:var(--color-border-tab-unselected)}.flexlayout__border_button_leading,.flexlayout__border_button_content{display:flex}.flexlayout__border_button_trailing{display:flex;border-radius:4px;visibility:hidden}@media (hover: hover){.flexlayout__border_button:hover .flexlayout__border_button_trailing{visibility:visible}}.flexlayout__border_button--selected .flexlayout__border_button_trailing{visibility:visible}.flexlayout__border_toolbar{display:flex;gap:.3em;align-items:center}.flexlayout__border_toolbar_left,.flexlayout__border_toolbar_right{flex-direction:column;padding-top:.5em;padding-bottom:.3em}.flexlayout__border_toolbar_top,.flexlayout__border_toolbar_bottom{padding-left:.5em;padding-right:.3em}.flexlayout__border_toolbar_button{border:none;outline:none;font-size:inherit;background-color:transparent;border-radius:4px;padding:1px}.flexlayout__border_toolbar_button:focus-visible{outline:2px solid var(--color-focus);outline-offset:-2px}@media (hover: hover){.flexlayout__border_toolbar_button:hover{background-color:var(--color-toolbar-button-hover)}}.flexlayout__border_toolbar_button_overflow{display:flex;align-items:center;border:none;color:var(--color-overflow);font-size:inherit;background-color:transparent;width:1.5em}.flexlayout__popup_menu{font-size:var(--font-size);font-family:var(--font-family);font-weight:var(--font-weight)}.flexlayout__popup_menu_item{padding:2px .5em;white-space:nowrap;cursor:pointer;border-radius:2px}.flexlayout__popup_menu_item:focus-visible{outline:2px solid var(--color-focus);outline-offset:-2px}.flexlayout__popup_menu_item--selected{font-weight:500;background-color:var(--color-tab-selected-background);color:var(--color-tab-selected)}.flexlayout__popup_menu_item--disabled{opacity:.4;cursor:default;pointer-events:none}@media (hover: hover){.flexlayout__popup_menu_item:hover{background-color:var(--color-6)}}.flexlayout__popup_menu_divider{height:1px;margin:4px 2px;background-color:var(--color-popup-border)}.flexlayout__popup_menu_container{box-shadow:inset 0 0 5px #00000026;border:1px solid var(--color-popup-border);color:var(--color-popup-unselected);background:var(--color-popup-unselected-background);border-radius:3px;position:absolute;z-index:3000;max-height:50%;min-width:100px;overflow:auto;padding:2px}.flexlayout__float_window{box-sizing:border-box;background-color:var(--color-tabset-background);border-radius:5px;box-shadow:0 0 10px #00000080;display:flex;flex-direction:column;overflow:hidden;z-index:2000}.flexlayout__float_window_header{display:flex;align-items:center;padding:5px;background-color:var(--color-float-window-header-background);border-bottom:1px solid var(--color-tabset-divider-line);cursor:move;user-select:none;font-family:var(--font-family);font-size:.8em;min-height:15px}.flexlayout__float_window_header_title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.flexlayout__float_window_drag_handle{display:flex;align-items:center;padding:0 4px;opacity:.7;cursor:grab}.flexlayout__float_window_drag_handle:hover{opacity:1}.flexlayout__float_window_drag_handle:active{cursor:grabbing}.flexlayout__float_window_button{display:flex;align-items:center;padding:0 4px;margin:0;border:none;background:none;opacity:.7;cursor:pointer}.flexlayout__float_window_button:hover{opacity:1}.flexlayout__float_window_content{position:relative;overflow:auto;flex-grow:1;display:flex;flex-direction:column;min-height:0;min-width:0;margin:5px}.flexlayout__floating_window _body{height:100%}.flexlayout__floating_window_content{inset:0;position:absolute}.flexlayout__error_boundary_container{inset:0;position:absolute;display:flex;justify-content:center}.flexlayout__error_boundary_content{display:flex;align-items:center}.flexlayout__border_sizer{position:absolute;padding-top:6px;padding-bottom:5px;font-size:var(--font-size);font-family:var(--font-family);font-weight:var(--font-weight)}.flexlayout__mini_scrollbar{position:absolute;background-color:var(--color-mini-scroll-indicator);border-radius:5px;width:var(--size-mini-scroll-indicator);height:var(--size-mini-scroll-indicator);visibility:hidden;opacity:0;transition:opacity .3s ease-in-out,visibility .3s ease-in-out}.flexlayout__mini_scrollbar:hover{background-color:var(--color-mini-scroll-indicator-hovered);transition:background-color .3s ease-in-out}.flexlayout__mini_scrollbar_container{position:relative;display:flex;flex-grow:1;overflow:hidden}@media (hover: hover){.flexlayout__mini_scrollbar_container:hover .flexlayout__mini_scrollbar{opacity:1;visibility:visible}}.flexlayout__theme_dark .flexlayout__tabset-selected{background-image:linear-gradient(var(--color-background),var(--color-4))}.flexlayout__theme_dark .flexlayout__tabset-maximized{background-image:linear-gradient(var(--color-6),var(--color-2))}.flexlayout__theme_dark .flexlayout__tab_top{box-shadow:inset -2px 0 5px #0000001a;border-top-left-radius:3px;border-top-right-radius:3px}.flexlayout__theme_dark .flexlayout__tab_bottom{box-shadow:inset -2px 0 5px #0000001a;border-bottom-left-radius:3px;border-bottom-right-radius:3px}.flexlayout__theme_dark .flexlayout__border_button{box-shadow:inset 0 0 5px #00000026;border-radius:3px}.flexlayout__theme_gray .flexlayout__tabset-selected{background-image:linear-gradient(var(--color-background),var(--color-4))}.flexlayout__theme_gray .flexlayout__tabset-selected{background-image:linear-gradient(var(--color-background),var(--color-3))}.flexlayout__theme_gray .flexlayout__tabset-maximized{background-image:linear-gradient(var(--color-3),var(--color-1))}.flexlayout__theme_gray .flexlayout__tab_button_top{box-shadow:inset -2px 0 5px #0000001a;border-top-left-radius:3px;border-top-right-radius:3px}.flexlayout__theme_gray .flexlayout__tab_button_bottom{box-shadow:inset -2px 0 5px #0000001a;border-bottom-left-radius:3px;border-bottom-right-radius:3px}.flexlayout__theme_gray .flexlayout__border_button{box-shadow:inset 0 0 5px #00000026;border-radius:3px}.flexlayout__theme_underline .flexlayout__tab_button{padding:2px .5em calc(4px - var(--underline_height)) .5em}.flexlayout__theme_underline .flexlayout__tab_button--selected{border-bottom:var(--underline_height) solid var(--color-underline)}.flexlayout__theme_underline .flexlayout__tab_button--unselected{border-bottom:var(--underline_height) solid transparent}.flexlayout__theme_underline .flexlayout__border_button{padding:2px .5em calc(4px - var(--underline_height)) .5em}.flexlayout__theme_underline .flexlayout__border_button--selected{border-bottom:var(--underline_height) solid var(--color-underline)}.flexlayout__theme_underline .flexlayout__border_button--unselected{border-bottom:var(--underline_height) solid transparent}.flexlayout__theme_underline .flexlayout__tabset_tab_divider,.flexlayout__theme_underline .flexlayout__border_tab_divider{width:1px;height:.8em;margin:0 6px;background-color:#ddd}.flexlayout__theme_underline .flexlayout__tab_button_textbox{border:none}.flexlayout__theme_rounded .flexlayout__tabset{padding:3px;border-radius:10px}.flexlayout__theme_rounded .flexlayout__tabset_content{padding:1px 3px 3px;border-bottom-left-radius:10px;border-bottom-right-radius:10px}.flexlayout__theme_rounded .flexlayout__tab_border{border-radius:10px;padding:5px}.flexlayout__theme_rounded .flexlayout__border_tab_contents{border-radius:10px}.flexlayout__theme_rounded .flexlayout__tab_button{border-radius:var(--tab-button-radius);padding:2px .8em}.flexlayout__theme_rounded .flexlayout__border_button{border-radius:var(--border-button-radius);padding:2px .8em}.flexlayout__theme_rounded .flexlayout__tabset_tabbar_outer_top{border-bottom:unset;padding-bottom:1px}.flexlayout__theme_rounded .flexlayout__tabset_tabbar_inner_tab_container_top{border-bottom:2px solid transparent}.flexlayout__theme_rounded .flexlayout__border_bottom{border-top:2px solid var(--color-border-divider-line)}.flexlayout__theme_rounded .flexlayout__border_sizer{padding-bottom:6px}.flexlayout__theme_rounded .flexlayout__tab_button_trailing:hover,.flexlayout__theme_rounded .flexlayout__border_button_trailing:hover{background-color:var(--color-3)}.flexlayout__theme_alpha_light .flexlayout__tab{border:5px solid var(--color-background);border-radius:5px}.flexlayout__theme_alpha_light .flexlayout__splitter_border .flexlayout__splitter_handle{visibility:visible}.flexlayout__theme_alpha_light .flexlayout__tabset_tabbar_outer_top{border-bottom:unset}.flexlayout__theme_alpha_light .flexlayout__tabset_tabbar_outer_bottom{border-top:unset}.flexlayout__theme_alpha_light .flexlayout__tab_button{border-bottom:2px solid transparent;padding:4px 12px}.flexlayout__theme_alpha_light .flexlayout__tab_button--selected:hover{background-color:var(--color-background)}.flexlayout__theme_alpha_light .flexlayout__tabset_tabbar_outer_top .flexlayout__tab_button--selected{border-top-left-radius:var(--tab-button-radius);border-top-right-radius:var(--tab-button-radius)}.flexlayout__theme_alpha_light .flexlayout__tabset_tabbar_outer_bottom .flexlayout__tab_button--selected{border-bottom-left-radius:var(--tab-button-radius);border-bottom-right-radius:var(--tab-button-radius)}.flexlayout__theme_alpha_light .flexlayout__tabset_tab_spacer{width:12px}.flexlayout__theme_alpha_light .flexlayout__tabset_tab_divider,.flexlayout__theme_alpha_light .flexlayout__border_tab_divider{width:2px;border-radius:2px;height:.8em;margin:0 5px;background-color:#ddd}.flexlayout__theme_alpha_light .flexlayout__tabset_tab_divider_selected_before,.flexlayout__theme_alpha_light .flexlayout__tabset_tab_divider_selected_after{width:12px;height:100%;margin:unset;border-radius:unset;background-color:var(--color-tab-selected-background)}.flexlayout__theme_alpha_light .flexlayout__tabset_tab_divider_inner{height:100%}.flexlayout__theme_alpha_light .flexlayout__tabset-selected{--tab-divider-bg: var(--flexlayout-tab-divider-bg, var(--color-tabset-background-selected))}.flexlayout__theme_alpha_light .flexlayout__tabset-maximized{--tab-divider-bg: var(--flexlayout-tab-divider-bg, var(--color-tabset-background-maximized))}.flexlayout__theme_alpha_light .flexlayout__tabset_tabbar_outer_top .flexlayout__tabset_tab_divider_selected_before .flexlayout__tabset_tab_divider_inner{border-bottom-right-radius:var(--tab-button-radius);background-color:var(--tab-divider-bg, var(--color-tabset-background))}.flexlayout__theme_alpha_light .flexlayout__tabset_tabbar_outer_top .flexlayout__tabset_tab_divider_selected_after .flexlayout__tabset_tab_divider_inner{border-bottom-left-radius:var(--tab-button-radius);background-color:var(--tab-divider-bg, var(--color-tabset-background))}.flexlayout__theme_alpha_light .flexlayout__tabset_tabbar_outer_bottom .flexlayout__tabset_tab_divider_selected_before .flexlayout__tabset_tab_divider_inner{border-top-right-radius:var(--tab-button-radius);background-color:var(--tab-divider-bg, var(--color-tabset-background))}.flexlayout__theme_alpha_light .flexlayout__tabset_tabbar_outer_bottom .flexlayout__tabset_tab_divider_selected_after .flexlayout__tabset_tab_divider_inner{border-top-left-radius:var(--tab-button-radius);background-color:var(--tab-divider-bg, var(--color-tabset-background))}.flexlayout__theme_alpha_light .flexlayout__border_button{border-radius:var(--border-button-radius);margin:3px;padding:3px 8px}.flexlayout__theme_alpha_light .flexlayout__border_button--selected{box-shadow:0 1px 2px #0000000d}.flexlayout__theme_alpha_light .flexlayout__border_sizer{padding-bottom:8px}.flexlayout__theme_alpha_light .flexlayout__popup_menu_container{box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;border:1px solid var(--color-2);padding:4px}.flexlayout__theme_alpha_light .flexlayout__popup_menu_item{border-radius:4px;padding:6px 8px}.flexlayout__theme_alpha_light .flexlayout__popup_menu_item:hover{background-color:var(--color-1)}.flexlayout__theme_alpha_dark .flexlayout__tab{border:5px solid var(--color-background);border-radius:5px}.flexlayout__theme_alpha_dark .flexlayout__splitter_border .flexlayout__splitter_handle{visibility:visible}.flexlayout__theme_alpha_dark .flexlayout__tabset_tabbar_outer_top{border-bottom:unset}.flexlayout__theme_alpha_dark .flexlayout__tabset_tabbar_outer_bottom{border-top:unset}.flexlayout__theme_alpha_dark .flexlayout__tab_button{border-bottom:2px solid transparent;padding:4px 12px}.flexlayout__theme_alpha_dark .flexlayout__tab_button--selected:hover{background-color:var(--color-background)}.flexlayout__theme_alpha_dark .flexlayout__tabset_tabbar_outer_top .flexlayout__tab_button--selected{border-top-left-radius:var(--tab-button-radius);border-top-right-radius:var(--tab-button-radius)}.flexlayout__theme_alpha_dark .flexlayout__tabset_tabbar_outer_bottom .flexlayout__tab_button--selected{border-bottom-left-radius:var(--tab-button-radius);border-bottom-right-radius:var(--tab-button-radius)}.flexlayout__theme_alpha_dark .flexlayout__tabset_tab_spacer{width:12px}.flexlayout__theme_alpha_dark .flexlayout__tabset_tab_divider,.flexlayout__theme_alpha_dark .flexlayout__border_tab_divider{width:2px;border-radius:2px;height:.8em;margin:0 5px;background-color:#333}.flexlayout__theme_alpha_dark .flexlayout__tabset_tab_divider_selected_before,.flexlayout__theme_alpha_dark .flexlayout__tabset_tab_divider_selected_after{width:12px;height:100%;margin:unset;border-radius:unset;background-color:var(--color-tab-selected-background)}.flexlayout__theme_alpha_dark .flexlayout__tabset_tab_divider_inner{height:100%}.flexlayout__theme_alpha_dark .flexlayout__tabset-selected{--tab-divider-bg: var(--flexlayout-tab-divider-bg, var(--color-tabset-background-selected))}.flexlayout__theme_alpha_dark .flexlayout__tabset-maximized{--tab-divider-bg: var(--flexlayout-tab-divider-bg, var(--color-tabset-background-maximized))}.flexlayout__theme_alpha_dark .flexlayout__tabset_tabbar_outer_top .flexlayout__tabset_tab_divider_selected_before .flexlayout__tabset_tab_divider_inner{border-bottom-right-radius:var(--tab-button-radius);background-color:var(--tab-divider-bg, var(--color-tabset-background))}.flexlayout__theme_alpha_dark .flexlayout__tabset_tabbar_outer_top .flexlayout__tabset_tab_divider_selected_after .flexlayout__tabset_tab_divider_inner{border-bottom-left-radius:var(--tab-button-radius);background-color:var(--tab-divider-bg, var(--color-tabset-background))}.flexlayout__theme_alpha_dark .flexlayout__tabset_tabbar_outer_bottom .flexlayout__tabset_tab_divider_selected_before .flexlayout__tabset_tab_divider_inner{border-top-right-radius:var(--tab-button-radius);background-color:var(--tab-divider-bg, var(--color-tabset-background))}.flexlayout__theme_alpha_dark .flexlayout__tabset_tabbar_outer_bottom .flexlayout__tabset_tab_divider_selected_after .flexlayout__tabset_tab_divider_inner{border-top-left-radius:var(--tab-button-radius);background-color:var(--tab-divider-bg, var(--color-tabset-background))}.flexlayout__theme_alpha_dark .flexlayout__splitter{transition:background-color .2s}.flexlayout__theme_alpha_dark .flexlayout__splitter:hover{border-radius:0}.flexlayout__theme_alpha_dark .flexlayout__border_button{border-radius:var(--border-button-radius);margin:3px;padding:3px 8px}.flexlayout__theme_alpha_dark .flexlayout__border_button--selected{box-shadow:0 1px 2px #0003}.flexlayout__theme_alpha_dark .flexlayout__border_sizer{padding-bottom:8px}.flexlayout__theme_alpha_dark .flexlayout__popup_menu_container{box-shadow:0 10px 15px -3px #0006,0 4px 6px -2px #0003;border:1px solid var(--color-2);padding:4px}.flexlayout__theme_alpha_dark .flexlayout__popup_menu_item{border-radius:4px;padding:6px 8px}.flexlayout__theme_alpha_dark .flexlayout__popup_menu_item:hover{background-color:var(--color-1)}.flexlayout__theme_alpha_rounded .flexlayout__tabset{padding:2px;border-radius:12px}.flexlayout__theme_alpha_rounded .flexlayout__splitter_border .flexlayout__splitter_handle{visibility:visible}.flexlayout__theme_alpha_rounded .flexlayout__float_window{background-color:var(--color-2)}.flexlayout__theme_alpha_rounded .flexlayout__float_window_header{background-color:var(--color-2);border-bottom:none}.flexlayout__theme_alpha_rounded .flexlayout__tab_border{border-radius:12px}.flexlayout__theme_alpha_rounded .flexlayout__border_tab_contents{border-radius:var(--tab-button-radius)}.flexlayout__theme_alpha_rounded .flexlayout__tab_button{border-radius:var(--tab-button-radius);padding:4px 12px;margin:2px}.flexlayout__theme_alpha_rounded .flexlayout__border_button{border-radius:var(--border-button-radius);padding:4px 12px;margin:2px}.flexlayout__theme_alpha_rounded .flexlayout__border_sizer{padding-bottom:10px}.flexlayout__theme_alpha_rounded .flexlayout__popup_menu_container{border-radius:8px;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d;border:1px solid var(--color-2);padding:6px}.flexlayout__theme_alpha_rounded .flexlayout__popup_menu_item{border-radius:6px;padding:8px 12px}.flexlayout__theme_alpha_rounded .flexlayout__popup_menu_item:hover{background-color:var(--color-1)}.flexlayout__theme_aria .flexlayout__tab{border:5px solid var(--color-background);border-radius:5px}.flexlayout__theme_aria .flexlayout__splitter_border .flexlayout__splitter_handle{visibility:visible}.flexlayout__theme_aria .flexlayout__tabset_tabbar_outer_top{border-bottom:unset}.flexlayout__theme_aria .flexlayout__tabset_tabbar_outer_bottom{border-top:unset}.flexlayout__theme_aria .flexlayout__tab_button{border-bottom:2px solid transparent;padding:4px 12px}.flexlayout__theme_aria .flexlayout__tab_button--selected:hover{background-color:var(--color-background)}.flexlayout__theme_aria .flexlayout__tabset_tabbar_outer_top .flexlayout__tab_button--selected{border-top-left-radius:var(--tab-button-radius);border-top-right-radius:var(--tab-button-radius)}.flexlayout__theme_aria .flexlayout__tabset_tabbar_outer_bottom .flexlayout__tab_button--selected{border-bottom-left-radius:var(--tab-button-radius);border-bottom-right-radius:var(--tab-button-radius)}.flexlayout__theme_aria .flexlayout__tabset_tab_spacer{width:12px}.flexlayout__theme_aria .flexlayout__tabset_tab_divider,.flexlayout__theme_aria .flexlayout__border_tab_divider{width:2px;border-radius:2px;height:.8em;margin:0 5px;background-color:#ddd}.flexlayout__theme_aria .flexlayout__tabset_tab_divider_selected_before,.flexlayout__theme_aria .flexlayout__tabset_tab_divider_selected_after{width:12px;height:100%;margin:unset;border-radius:unset;background-color:var(--color-tab-selected-background)}.flexlayout__theme_aria .flexlayout__tabset_tab_divider_inner{height:100%}.flexlayout__theme_aria .flexlayout__tabset-selected{--tab-divider-bg: var(--flexlayout-tab-divider-bg, var(--color-tabset-background-selected))}.flexlayout__theme_aria .flexlayout__tabset-maximized{--tab-divider-bg: var(--flexlayout-tab-divider-bg, var(--color-tabset-background-maximized))}.flexlayout__theme_aria .flexlayout__tabset_tabbar_outer_top .flexlayout__tabset_tab_divider_selected_before .flexlayout__tabset_tab_divider_inner{border-bottom-right-radius:var(--tab-button-radius);background-color:var(--tab-divider-bg, var(--color-tabset-background))}.flexlayout__theme_aria .flexlayout__tabset_tabbar_outer_top .flexlayout__tabset_tab_divider_selected_after .flexlayout__tabset_tab_divider_inner{border-bottom-left-radius:var(--tab-button-radius);background-color:var(--tab-divider-bg, var(--color-tabset-background))}.flexlayout__theme_aria .flexlayout__tabset_tabbar_outer_bottom .flexlayout__tabset_tab_divider_selected_before .flexlayout__tabset_tab_divider_inner{border-top-right-radius:var(--tab-button-radius);background-color:var(--tab-divider-bg, var(--color-tabset-background))}.flexlayout__theme_aria .flexlayout__tabset_tabbar_outer_bottom .flexlayout__tabset_tab_divider_selected_after .flexlayout__tabset_tab_divider_inner{border-top-left-radius:var(--tab-button-radius);background-color:var(--tab-divider-bg, var(--color-tabset-background))}.flexlayout__theme_aria .flexlayout__border_button{border-radius:var(--border-button-radius);margin:3px;padding:3px 8px}.flexlayout__theme_aria .flexlayout__border_button--selected{box-shadow:0 1px 2px #0000000d}.flexlayout__theme_aria .flexlayout__border_sizer{padding-bottom:8px}.flexlayout__theme_aria .flexlayout__popup_menu_container{box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;border:1px solid var(--color-2);padding:4px}.flexlayout__theme_aria .flexlayout__popup_menu_item{border-radius:4px;padding:6px 8px}.flexlayout__theme_aria .flexlayout__popup_menu_item:hover{background-color:var(--color-1)}';function X1(e){return!e||!e.enabled||e.authoring.locked?null:e.id}function G1(e,t,r=3){return Math.hypot(t.x-e.x,t.y-e.y)>=r}function K1(e,t,r,o=12){return e>=3&&Math.hypot(r.x-t.x,r.y-t.y)<=o}function q1(e){return[...e].sort((t,r)=>r.priority-t.priority)}function J1(e){e.forEach((t,r)=>{t.priority=r})}function Z1(e){return e==="draw-brush"}function Nh(e){return[...e].sort((t,r)=>t.priority-r.priority)}const Q1=[{id:"nw",x:0,y:0},{id:"n",x:.5,y:0},{id:"ne",x:1,y:0},{id:"e",x:1,y:.5},{id:"se",x:1,y:1},{id:"s",x:.5,y:1},{id:"sw",x:0,y:1},{id:"w",x:0,y:.5}];function ek({geometry:e,canvas:t}){const r=e.operation==="add"?"white":"black";if(e.type==="rect")return s.jsx("rect",{x:e.x*t.width,y:e.y*t.height,width:e.width*t.width,height:e.height*t.height,fill:r});if(e.type==="ellipse")return s.jsx("ellipse",{cx:(e.x+e.width/2)*t.width,cy:(e.y+e.height/2)*t.height,rx:e.width*t.width/2,ry:e.height*t.height/2,fill:r});if(e.type==="polygon")return s.jsx("polygon",{points:e.points.map(c=>`${c.x*t.width},${c.y*t.height}`).join(" "),fill:r});if(e.type==="raster_mask"){const c=`raster-${e.id}`;return s.jsxs(s.Fragment,{children:[s.jsx("defs",{children:s.jsx("mask",{id:c,maskUnits:"userSpaceOnUse",x:"0",y:"0",width:t.width,height:t.height,children:s.jsx("image",{href:e.data_url,x:e.x*t.width,y:e.y*t.height,width:e.width*t.width,height:e.height*t.height,preserveAspectRatio:"none"})})}),s.jsx("rect",{width:t.width,height:t.height,fill:r,mask:`url(#${c})`})]})}const o=e.shape==="square"?"square":"round",n=e.size*Math.min(t.width,t.height),i=`bv-brush-soft-${e.id}`,a=(1-e.hardness)*n/6,l=a>.05?`url(#${i})`:void 0;if(e.points.length===1){const c=e.points[0],u=n*c.pressure,d=e.shape==="square"?s.jsx("rect",{x:c.x*t.width-u/2,y:c.y*t.height-u/2,width:u,height:u,fill:r,fillOpacity:e.opacity,filter:l}):s.jsx("circle",{cx:c.x*t.width,cy:c.y*t.height,r:u/2,fill:r,fillOpacity:e.opacity,filter:l}),f=u*e.hardness;return s.jsxs(s.Fragment,{children:[s.jsx("defs",{children:l&&s.jsx("filter",{id:i,filterUnits:"userSpaceOnUse",x:"0",y:"0",width:t.width,height:t.height,children:s.jsx("feGaussianBlur",{stdDeviation:a})})}),d,f>0&&(e.shape==="square"?s.jsx("rect",{x:c.x*t.width-f/2,y:c.y*t.height-f/2,width:f,height:f,fill:r,fillOpacity:e.opacity}):s.jsx("circle",{cx:c.x*t.width,cy:c.y*t.height,r:f/2,fill:r,fillOpacity:e.opacity}))]})}if((e.pressure_mode??"constant")==="constant"){const c=e.points.map((u,d)=>`${d?"L":"M"}${u.x*t.width},${u.y*t.height}`).join(" ");return s.jsxs(s.Fragment,{children:[s.jsx("defs",{children:l&&s.jsx("filter",{id:i,filterUnits:"userSpaceOnUse",x:"0",y:"0",width:t.width,height:t.height,children:s.jsx("feGaussianBlur",{stdDeviation:a})})}),s.jsx("path",{d:c,fill:"none",stroke:r,strokeOpacity:e.opacity,strokeWidth:n,strokeLinecap:o,strokeLinejoin:o==="round"?"round":"miter",filter:l}),e.hardness>0&&s.jsx("path",{d:c,fill:"none",stroke:r,strokeOpacity:e.opacity,strokeWidth:n*e.hardness,strokeLinecap:o,strokeLinejoin:o==="round"?"round":"miter"})]})}return s.jsx(s.Fragment,{children:e.points.slice(1).map((c,u)=>{const d=e.points[u],f=(d.pressure+c.pressure)/2;return s.jsx("line",{x1:d.x*t.width,y1:d.y*t.height,x2:c.x*t.width,y2:c.y*t.height,stroke:r,strokeOpacity:e.opacity,strokeWidth:n*f,strokeLinecap:o},u)})})}function tk({geometry:e,canvas:t,cursor:r,activePolygon:o}){const n=`tool-preview-shape ${e.operation}`;if(e.type==="rect"||e.type==="raster_mask")return s.jsx("rect",{className:n,x:e.x*t.width,y:e.y*t.height,width:e.width*t.width,height:e.height*t.height});if(e.type==="ellipse")return s.jsx("ellipse",{className:n,cx:(e.x+e.width/2)*t.width,cy:(e.y+e.height/2)*t.height,rx:e.width*t.width/2,ry:e.height*t.height/2});if(e.type==="polygon"){const a=[...e.points,...o&&r?[r]:[]],l=o?s.jsx("polyline",{className:n,points:a.map(c=>`${c.x*t.width},${c.y*t.height}`).join(" ")}):s.jsx("polygon",{className:n,points:a.map(c=>`${c.x*t.width},${c.y*t.height}`).join(" ")});return s.jsxs(s.Fragment,{children:[l,e.points.map((c,u)=>s.jsx("circle",{className:`tool-preview-vertex ${e.operation}`,cx:c.x*t.width,cy:c.y*t.height,r:"4"},u))]})}const i=e.points.map((a,l)=>`${l?"L":"M"}${a.x*t.width},${a.y*t.height}`).join(" ");return s.jsx("path",{className:n,d:i,strokeWidth:e.size*Math.min(t.width,t.height),strokeLinecap:e.shape==="square"?"square":"round"})}function rk({region:e,geometries:t,canvas:r,opacity:o,resolved:n}){const i=S0(t).filter(u=>u.enabled&&(n||u.geometries.some((d,f)=>sr(d,f).visible))),a=`bv-feather-${e.id}`,l=Math.min(64,Math.round(e.mask.feather*Math.min(r.width,r.height))),c=l/3;return s.jsxs("g",{opacity:o,children:[n&&l>0&&s.jsx("defs",{children:s.jsx("filter",{id:a,filterUnits:"userSpaceOnUse",x:"0",y:"0",width:r.width,height:r.height,children:s.jsx("feGaussianBlur",{stdDeviation:c})})}),s.jsx("g",{filter:n&&l>0?`url(#${a})`:void 0,children:i.map(u=>{const d=`bv-mask-${e.id}-${u.id}`;return s.jsxs("g",{children:[s.jsx("defs",{children:s.jsxs("mask",{id:d,maskUnits:"userSpaceOnUse",x:"0",y:"0",width:r.width,height:r.height,children:[s.jsx("rect",{width:r.width,height:r.height,fill:"black"}),u.geometries.filter((f,p)=>f.enabled!==!1&&(n||sr(f,p).visible)).map(f=>s.jsx(ek,{geometry:f,canvas:r},f.id))]})}),s.jsx("rect",{width:r.width,height:r.height,fill:e.authoring.color,mask:`url(#${d})`})]},u.id)})})]})}function ok(e){const{document:t,selectedLayerId:r,selectedRegionId:o}=e,n=m.useRef(null),i=m.useRef(null),[a,l]=m.useState({width:1,height:1}),[c,u]=m.useState(e.initialView.zoom),[d,f]=m.useState({x:e.initialView.panX,y:e.initialView.panY}),[p,g]=m.useState(e.initialView.fit),[x,w]=m.useState(!1),k=m.useCallback((M=a)=>Math.max(.02,Math.min(1,(M.width-40)/t.canvas.width,(M.height-40)/t.canvas.height)),[t.canvas.height,t.canvas.width,a]),b=m.useCallback(()=>{u(k()),f({x:0,y:0}),g(!0)},[k]);m.useEffect(()=>{const M=n.current;if(!M)return;const E=new ResizeObserver(z=>{const L=z[0].contentRect,R={width:L.width,height:L.height};l(R),p&&(u(Math.max(.02,Math.min(1,(R.width-40)/t.canvas.width,(R.height-40)/t.canvas.height))),f({x:0,y:0}))});return E.observe(M),()=>E.disconnect()},[t.canvas.height,t.canvas.width,p]),m.useEffect(()=>e.onView({zoom:c,panX:d.x,panY:d.y,fit:p}),[p,d.x,d.y,e.onView,c]),m.useEffect(()=>{const M=z=>{const L=z.target;z.code!=="Space"||L instanceof HTMLInputElement||L instanceof HTMLTextAreaElement||L instanceof HTMLSelectElement||L?.isContentEditable||(z.preventDefault(),z.stopImmediatePropagation(),w(!0))},E=z=>{z.code==="Space"&&(z.preventDefault(),z.stopImmediatePropagation(),w(!1),i.current=null)};return window.addEventListener("keydown",M,!0),window.addEventListener("keyup",E,!0),()=>{window.removeEventListener("keydown",M,!0),window.removeEventListener("keyup",E,!0)}},[]);const h=M=>{let E=[...M.geometry];if(e.draft&&M.id===o){const z=new Set(e.draft.map(L=>L.id));E=E.map(L=>z.has(L.id)?e.draft.find(R=>R.id===L.id):L);for(const L of e.draft)E.some(R=>R.id===L.id)||E.push(L)}return!e.binaryMaskPreview&&e.isolate&&r&&(E=E.filter(z=>zt(z)===r)),E},v=e.brush.size*Math.min(t.canvas.width,t.canvas.height)/t.canvas.width*100,_=M=>{M.preventDefault();const E=M.currentTarget.getBoundingClientRect(),z=M.clientX-E.left,L=M.clientY-E.top,R=Math.max(.02,Math.min(8,c*Math.exp(-M.deltaY*.0015))),N=R/c;f(A=>({x:z-E.width/2-(z-E.width/2-A.x)*N,y:L-E.height/2-(L-E.height/2-A.y)*N})),u(R),g(!1)},y=M=>{M.button!==1&&!(M.button===0&&x)||(M.preventDefault(),M.stopPropagation(),M.currentTarget.setPointerCapture(M.pointerId),i.current={x:M.clientX,y:M.clientY,panX:d.x,panY:d.y},g(!1))},T=M=>{i.current&&(M.preventDefault(),M.stopPropagation(),f({x:i.current.panX+M.clientX-i.current.x,y:i.current.panY+M.clientY-i.current.y}))},S=M=>{i.current&&(M.preventDefault(),M.stopPropagation(),i.current=null)},P=a.width/2-t.canvas.width*c/2+d.x,O=a.height/2-t.canvas.height*c/2+d.y,B=10/c,j=24/c;return s.jsx("section",{className:"bv-regional-work",children:s.jsxs("div",{ref:n,className:`artboard-viewport ${x?"pan-ready":""}`,onWheel:_,onPointerDownCapture:y,onPointerMoveCapture:T,onPointerUpCapture:S,onPointerCancelCapture:S,children:[s.jsx(C0,{tool:e.tool,brush:e.brush,canSubtract:e.canSubtract,canvas:t.canvas,onTool:e.onTool,onBrush:e.onBrush}),s.jsx("div",{className:"artboard-stage",style:{width:t.canvas.width,height:t.canvas.height,transform:`translate(${P}px, ${O}px) scale(${c})`},children:s.jsxs("div",{className:`bv-regional-canvas tool-${e.tool}`,style:{width:t.canvas.width,height:t.canvas.height},onPointerDown:e.binaryMaskPreview?void 0:e.onPointerDown,onPointerMove:e.binaryMaskPreview?void 0:e.onPointerMove,onPointerUp:e.binaryMaskPreview?void 0:e.onPointerUp,onPointerCancel:e.binaryMaskPreview?void 0:e.onPointerCancel,onPointerLeave:e.onPointerLeave,onDoubleClick:e.binaryMaskPreview?void 0:e.onDoubleClick,children:[e.background&&!e.binaryMaskPreview&&s.jsx("div",{className:"bv-background-image",style:{backgroundImage:`linear-gradient(#0002,#0002), url(${JSON.stringify(e.background)})`,opacity:e.backgroundOpacity}}),s.jsx("svg",{className:"bv-composition",style:e.binaryMaskPreview?{background:"black"}:void 0,viewBox:`0 0 ${t.canvas.width} ${t.canvas.height}`,preserveAspectRatio:"none",children:q1(t.regions.filter(M=>M.enabled&&(e.binaryMaskPreview||M.authoring.visible))).map(M=>s.jsx(rk,{region:e.binaryMaskPreview?{...M,authoring:{...M.authoring,color:"#FFFFFF"}}:M,geometries:h(M),canvas:t.canvas,opacity:e.binaryMaskPreview?1:e.displayOpacity,resolved:e.binaryMaskPreview},M.id))}),!e.binaryMaskPreview&&e.draft&&s.jsx("svg",{className:"bv-tool-preview",viewBox:`0 0 ${t.canvas.width} ${t.canvas.height}`,preserveAspectRatio:"none",children:e.draft.map(M=>s.jsx(tk,{geometry:M,canvas:t.canvas,cursor:e.cursor,activePolygon:e.tool.startsWith("polygon")},M.id))}),!e.binaryMaskPreview&&e.selectionBounds&&s.jsxs("svg",{className:"bv-selection-overlay",viewBox:`0 0 ${t.canvas.width} ${t.canvas.height}`,preserveAspectRatio:"none",children:[s.jsx("rect",{className:"brush-bounds",x:e.selectionBounds.x*t.canvas.width,y:e.selectionBounds.y*t.canvas.height,width:e.selectionBounds.width*t.canvas.width,height:e.selectionBounds.height*t.canvas.height}),Q1.map(M=>{const E=(e.selectionBounds.x+e.selectionBounds.width*M.x)*t.canvas.width,z=(e.selectionBounds.y+e.selectionBounds.height*M.y)*t.canvas.height;return s.jsxs("g",{"data-handle":M.id,className:`resize-handle resize-handle-${M.id}`,children:[s.jsx("rect",{className:"resize-handle-hit",x:E-j/2,y:z-j/2,width:j,height:j}),s.jsx("rect",{className:"resize-handle-visible",x:E-B/2,y:z-B/2,width:B,height:B,rx:2/c})]},M.id)}),e.draft&&s.jsxs("text",{className:"tool-preview-size",style:{fontSize:12/c},x:(e.selectionBounds.x+e.selectionBounds.width)*t.canvas.width-4/c,y:(e.selectionBounds.y+e.selectionBounds.height)*t.canvas.height-7/c,children:[Math.round(e.selectionBounds.width*t.canvas.width)," × ",Math.round(e.selectionBounds.height*t.canvas.height)," px"]})]}),!e.binaryMaskPreview&&e.cursor&&e.tool.startsWith("brush")&&s.jsx("div",{className:`brush-cursor ${e.brush.shape}`,style:{left:`${e.cursor.x*100}%`,top:`${e.cursor.y*100}%`,width:`${v}%`,aspectRatio:"1"},children:s.jsx("i",{style:{width:`${e.brush.hardness*100}%`,height:`${e.brush.hardness*100}%`}})})]})}),s.jsxs("div",{className:"zoom-controls",onWheel:M=>M.stopPropagation(),children:[s.jsx(oe,{intent:"ghost",title:"Zoom out",onClick:()=>{u(M=>Math.max(.02,M/1.25)),g(!1)},children:"−"}),s.jsxs(oe,{intent:"ghost",title:"100%",onClick:()=>{u(1),f({x:0,y:0}),g(!1)},children:[Math.round(c*100)," %"]}),s.jsx(oe,{intent:"ghost",title:"Zoom in",onClick:()=>{u(M=>Math.min(8,M*1.25)),g(!1)},children:"+"}),s.jsx(oe,{intent:"ghost",title:"Fit to view",onClick:b,children:"Fit"})]})]})})}const Bm="BV.NodePack.Completion.Enabled",Pm="BV.NodePack.Completion.Datasets",zm="BV.NodePack.Completion.Placement",Fm="bv-nodepack:completion-enabled",ka="bv-completion-enabled-changed",Ea="bv-completion-placement-changed",Of="bv-nodepack:completion-datasets",Um="bv-nodepack:completion-placement",ps="bv-completion-datasets-changed";let Vm=null,Wm=null,Hm=null;function od(){try{return localStorage.getItem(Um)==="field"?"field":"caret"}catch{return"caret"}}function nk(e){Hm=e}function $m(e,t=!1){const r=e==="field"?"field":"caret";try{localStorage.setItem(Um,r)}catch{}t&&Hm?.(r),window.dispatchEvent(new CustomEvent(Ea,{detail:{placement:r}}))}function Ym(){const[e,t]=m.useState(od);return m.useEffect(()=>{const r=o=>t(o.detail?.placement==="field"?"field":"caret");return window.addEventListener(Ea,r),()=>window.removeEventListener(Ea,r)},[]),e}function Mf(){try{return localStorage.getItem(Fm)!=="false"}catch{return!0}}function ik(e){Vm=e}function Xm(e,t=!1){try{localStorage.setItem(Fm,String(e))}catch{}t&&Vm?.(e),window.dispatchEvent(new CustomEvent(ka,{detail:{enabled:e}}))}function Gm(){const[e,t]=m.useState(Mf);return m.useEffect(()=>{const r=o=>t(!!o.detail?.enabled);return window.addEventListener(ka,r),()=>window.removeEventListener(ka,r)},[]),e}function Km(){try{const e=localStorage.getItem(Of);if(e==null)return null;const t=JSON.parse(e);return Array.isArray(t)?t.map(String):null}catch{return null}}function ak(e){Wm=e}function qm(e,t=!1){const r=[...new Set(e.map(String))];try{localStorage.setItem(Of,JSON.stringify(r))}catch{}t&&Wm?.(JSON.stringify(r)),window.dispatchEvent(new CustomEvent(ps,{detail:{datasets:r}}))}function Jm(e){if(e==null||e===""){try{localStorage.removeItem(Of)}catch{}window.dispatchEvent(new CustomEvent(ps,{detail:{datasets:null}}));return}try{const t=typeof e=="string"?JSON.parse(e):e;Array.isArray(t)&&qm(t.map(String))}catch{}}function lk(){const[e,t]=m.useState(Km);return m.useEffect(()=>{const r=o=>t(o.detail?.datasets??null);return window.addEventListener(ps,r),()=>window.removeEventListener(ps,r)},[]),e}function Zm({onSelectionChange:e}={}){const t=lk(),[r,o]=m.useState([]),[n,i]=m.useState(""),a=async()=>{try{const g=await fetch("/bv_nodepack/completion/status");if(!g.ok)throw new Error(`HTTP ${g.status}`);const x=await g.json();o(Array.isArray(x?.datasets)?x.datasets:[]),i("")}catch(g){i(g instanceof Error?g.message:String(g))}};m.useEffect(()=>{a()},[]);const l=t??r.map(g=>g.id),c=g=>{qm(g,!0),e?.(g)},u=g=>c(l.includes(g)?l.filter(x=>x!==g):[...l,g]),d=(g,x)=>{const w=l.indexOf(g),k=w+x;if(w<0||k<0||k>=l.length)return;const b=[...l];[b[w],b[k]]=[b[k],b[w]],c(b)},f=new Map(r.map(g=>[g.id,g])),p=[...l.map(g=>f.get(g)).filter(g=>!!g),...r.filter(g=>!l.includes(g.id))];return s.jsxs("div",{className:"completion-dataset-picker",children:[s.jsx("strong",{children:"Completion Data"}),s.jsx("small",{children:"Topmost enabled dataset wins when tags are duplicated."}),p.map(g=>{const x=l.indexOf(g.id),w=x>=0;return s.jsxs("div",{children:[s.jsx(eo,{label:g.name,help:`${(g.bytes/1048576).toFixed(1)} MiB`,checked:w,onValue:()=>u(g.id)}),s.jsxs("span",{className:"dataset-order",children:[s.jsx(oe,{intent:"ghost",iconOnly:!0,disabled:!w||x===0,title:"Move up",onClick:()=>d(g.id,-1),children:"↑"}),s.jsx(oe,{intent:"ghost",iconOnly:!0,disabled:!w||x===l.length-1,title:"Move down",onClick:()=>d(g.id,1),children:"↓"})]})]},g.id)}),!r.length&&!n&&s.jsx("small",{children:"No local CSV/TSV dataset found."}),n&&s.jsxs("small",{className:"dataset-error",children:["Could not load datasets: ",n]}),s.jsx(oe,{onClick:()=>void a(),children:"Reload List"})]})}function sk(e){const t=Gm(),r=Ym(),o=e.openMenu,n=m.useRef(null),{menuOverflow:i}=Mm(),a=m.useRef(null),l=m.useRef(null);m.useEffect(()=>{const d=f=>{n.current?.contains(f.target)||e.onOpenMenu(null)};return window.addEventListener("pointerdown",d),()=>window.removeEventListener("pointerdown",d)},[e.onOpenMenu]);const c=(d,f,p)=>s.jsx(ah,{open:o===d,onOpen:g=>e.onOpenMenu(g?d:null),trigger:({toggle:g})=>s.jsxs(oe,{intent:"ghost",density:"compact","aria-label":f,title:f,"aria-expanded":o===d,onClick:g,children:[s.jsx("span",{className:"editor-menu-label-full",children:f}),s.jsx("span",{className:"editor-menu-label-short","aria-hidden":"true",children:f==="?"?f:f[0]})]}),children:p}),u=s.jsxs(s.Fragment,{children:[c("file","File",s.jsxs("div",{className:"bv-menu-stack",children:[s.jsx(oe,{intent:"ghost",onClick:()=>{e.onExportDocument(),e.onOpenMenu(null)},children:"Export Document"}),s.jsx(oe,{intent:"ghost",onClick:()=>a.current?.click(),children:"Load and Replace Document"}),s.jsx("hr",{}),s.jsx(oe,{intent:"ghost",onClick:()=>{e.onExportRegions(),e.onOpenMenu(null)},children:"Export Regions"}),s.jsx(oe,{intent:"ghost",onClick:()=>l.current?.click(),children:"Add Regions"})]})),c("edit","Edit",s.jsxs("div",{className:"bv-menu-stack",children:[s.jsxs(oe,{intent:"ghost",disabled:!e.canUndo,onClick:e.onUndo,children:["Undo ",s.jsx("kbd",{children:"Ctrl Z"})]}),s.jsxs(oe,{intent:"ghost",disabled:!e.canRedo,onClick:e.onRedo,children:["Redo ",s.jsx("kbd",{children:"Ctrl Shift Z"})]}),s.jsx(eo,{label:"Prompt Autocomplete",help:"Optional. Disable it when using another completion extension.",checked:t,onValue:d=>Xm(d,!0)}),s.jsx(qe,{label:"Popup Position",value:r,onValue:d=>$m(d,!0),options:[{value:"caret",label:"At Caret"},{value:"field",label:"Below Text Field"}]}),s.jsx(Zm,{})]})),c("view","View",s.jsxs("div",{className:"bv-menu-stack",children:[s.jsx(Pt,{label:"Mask Display",value:e.displayOpacity,min:.05,max:1,step:.05,unit:"×",onValue:e.onDisplayOpacity}),s.jsx(Pt,{label:"Background Image",value:e.backgroundOpacity,min:0,max:1,step:.05,unit:"×",onValue:e.onBackgroundOpacity}),s.jsx(eo,{label:"Binary Mask Preview",checked:e.binaryMaskPreview,onValue:e.onToggleBinaryMaskPreview}),s.jsx(eo,{label:"Isolate Selection",checked:e.isolate,disabled:!e.hasSelection,onValue:e.onToggleIsolate}),s.jsx("small",{children:"Affects the editor display only."})]})),c("artboard","Artboard",s.jsxs("div",{className:"bv-menu-stack",children:[s.jsx(Pt,{label:"Width",value:e.canvas.width,min:1,max:32768,step:1,unit:"px",slider:!1,onValue:d=>e.onCanvas({...e.canvas,width:d})}),s.jsx(Pt,{label:"Height",value:e.canvas.height,min:1,max:32768,step:1,unit:"px",slider:!1,onValue:d=>e.onCanvas({...e.canvas,height:d})})]})),c("layers","Layers",s.jsxs("div",{className:"bv-menu-stack",children:[s.jsxs(oe,{intent:"ghost",disabled:!e.canMergeLayers,onClick:()=>{e.onMergeLayers(),e.onOpenMenu(null)},children:["Merge Selected Layers ",s.jsx("kbd",{children:"Ctrl E"})]}),s.jsx("small",{children:"Ctrl-click or Shift-click layers in one region to select them."})]})),c("help","?",s.jsxs("div",{className:"help-menu",children:[s.jsx(ih,{items:[{term:"Ctrl Z",description:"Undo"},{term:"Ctrl Shift Z",description:"Redo"},{term:"Ctrl E",description:"Merge selected layers"},{term:"Escape",description:"Cancel action"},{term:"Delete",description:"Delete layer"},{term:"Shift + Resize",description:"Scale proportionally"},{term:"Space + Drag",description:"Pan artboard"}]}),s.jsx(ih,{items:[{term:"Click",description:"Select layer"},{term:"Ctrl + Click",description:"Add/remove layer selection"},{term:"Shift + Click",description:"Select layer range"},{term:"Drag",description:"Draw or move"},{term:"Mouse wheel",description:"Zoom under cursor"}]})]}))]});return s.jsxs("div",{className:"editor-menus",ref:n,children:[i?s.jsx(ah,{trigger:({toggle:d})=>s.jsx(oe,{intent:"ghost",density:"compact","aria-label":"Editor menus",onClick:d,children:"•••"}),children:s.jsx("div",{className:"editor-menus-overflow-panel",children:u})}):u,s.jsx("input",{hidden:!0,ref:a,type:"file",accept:"application/json,.json",onChange:d=>{const f=d.target.files?.[0];f&&e.onImportDocument(f),d.target.value=""}}),s.jsx("input",{hidden:!0,ref:l,type:"file",accept:"application/json,.json",onChange:d=>{const f=d.target.files?.[0];f&&e.onImportRegions(f),d.target.value=""}})]})}function Qm(e,t,r,o=20){const n=Math.max(0,Math.min(e.length,t)),l=e.slice(0,n).match(/(?:^|[,\n;])\s*([^,\n;]*)$/)?.[1]??"",c=l.match(/^\s*/)?.[0].length??0,u=l.slice(c);if(u.trim().length<2)return null;const d=n-l.length+c;return{...r,text:e,caret:n,term:u,start:d,end:n,limit:o}}function ex(e,t,r){const o=e.slice(t.end).match(/^\s*[,;\n]/)?"":", ",n=`${r.insertText}${o}`;return{text:e.slice(0,t.start)+n+e.slice(t.end),caret:t.start+n.length}}async function tx(e,t,r){const o=await Promise.allSettled(t.map(i=>i.suggest(e,r)));if(r.aborted)return[];const n=new Map;return o.forEach(i=>{i.status==="fulfilled"&&i.value.forEach(a=>{n.has(a.id)||n.set(a.id,a)})}),[...n.values()].sort((i,a)=>(a.score??0)-(i.score??0)||i.label.localeCompare(a.label)).slice(0,e.limit)}const rx={id:"bv-local-tags",async suggest(e,t){const r=await fetch("/bv_nodepack/completion/search",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({term:e.term.trim(),limit:e.limit,datasets:Km()}),signal:t});if(!r.ok)return[];const o=await r.json();return(Array.isArray(o?.results)?o.results:[]).flatMap(i=>{const a=String(i?.insert_text??"").trim();return a?[{id:String(i?.id??`local:${a}`),insertText:a,label:String(i?.label??a),source:String(i?.source??"BV Local Tags"),detail:i?.detail||void 0,category:i?.category||void 0,score:Number(i?.score)||0,metadata:i?.metadata&&typeof i.metadata=="object"?i.metadata:{}}]:[]})}},ck=["fontFamily","fontSize","fontStyle","fontWeight","letterSpacing","lineHeight","textTransform","textIndent","textAlign","wordSpacing","paddingTop","paddingRight","paddingBottom","paddingLeft","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth"];function uk(e,t=e.selectionStart??e.value.length){const r=e.getBoundingClientRect(),o=window.getComputedStyle(e),n=e.offsetWidth||r.width,i=e.offsetHeight||r.height,a=r.width/n,l=r.height/i,c=document.createElement("div");c.setAttribute("aria-hidden","true"),Object.assign(c.style,{position:"fixed",visibility:"hidden",pointerEvents:"none",left:"0",top:"0",width:`${n}px`,height:`${i}px`,boxSizing:o.boxSizing,whiteSpace:"pre-wrap",overflowWrap:"break-word",overflow:"hidden"}),ck.forEach(w=>{c.style[w]=o[w]}),c.textContent=e.value.slice(0,t);const u=document.createElement("span");u.textContent=e.value.slice(t,t+1)||"​",c.append(u),document.body.append(c),c.scrollTop=e.scrollTop,c.scrollLeft=e.scrollLeft;const d=c.getBoundingClientRect(),f=u.getBoundingClientRect(),p=Number.parseFloat(o.lineHeight)||Number.parseFloat(o.fontSize)*1.2||16;c.remove();const g=r.left+(f.left-d.left)*a,x=r.top+(f.top-d.top)*l;return{left:g,top:x,bottom:x+p*l}}function hs(e,t,r=210){const i=e.getBoundingClientRect(),a=t==="caret"?uk(e):{left:i.left,top:i.top,bottom:i.bottom},l=t==="caret"?Math.min(460,Math.max(320,i.width*.8)):i.width,c=Math.max(180,Math.min(l,window.innerWidth-4*2)),u=Math.max(4,Math.min(a.left,window.innerWidth-c-4)),d=a.bottom+4,f=d+r<=window.innerHeight-4?d:Math.max(4,a.top-r-4);return{left:u,top:f,width:c}}function ox({suggestions:e,selected:t,position:r,onAccept:o,onHeight:n}){const i=m.useRef(null);return m.useLayoutEffect(()=>{i.current&&n?.(i.current.offsetHeight)}),s.jsx("div",{ref:i,className:"bv-completion-popup bv-global-completion-popup",style:r,role:"listbox",children:e.map((a,l)=>s.jsxs(oe,{density:"compact",intent:"ghost",className:l===t?"active":"",onPointerDown:c=>{c.preventDefault(),o(l)},children:[s.jsx("span",{children:a.label}),s.jsx("small",{children:[a.category,a.detail,a.source].filter(Boolean).join(" · ")})]},a.id))})}function gs({value:e,onValue:t,completionContext:r,onKeyDown:o,onBlur:n,onSelect:i,...a}){const l=Gm(),c=Ym(),u=m.useRef(null),[d,f]=m.useState([]),[p,g]=m.useState(0),[x,w]=m.useState(null),k=m.useRef(null),b=m.useRef(null),h=m.useRef(null),v=m.useRef(210),_=m.useRef(()=>{}),y=()=>{b.current?.abort(),f([]),w(null)},T=()=>{const O=u.current;O&&w(hs(O,c,v.current))},S=(O,B,j=B)=>{if(!l||B!==j)return y();h.current!=null&&window.clearTimeout(h.current),b.current?.abort();const M=Qm(O,B,r);if(k.current=M,!M)return y();const E=new AbortController;b.current=E,h.current=window.setTimeout(async()=>{const z=await tx(M,[rx],E.signal);if(E.signal.aborted)return;const L=u.current;f(z),g(0),w(z.length&&L?hs(L,c):null)},120)};_.current=S;const P=(O=p)=>{const B=k.current,j=d[O];if(!B||!j)return;const M=ex(e,B,j);t(M.text),y(),requestAnimationFrame(()=>{u.current?.focus(),u.current?.setSelectionRange(M.caret,M.caret)})};return m.useEffect(()=>{l||y()},[l]),m.useEffect(()=>{const O=()=>{const B=u.current;B&&document.activeElement===B&&_.current(B.value,B.selectionStart,B.selectionEnd)};return document.addEventListener("selectionchange",O),()=>document.removeEventListener("selectionchange",O)},[]),m.useEffect(()=>{x&&T()},[c]),m.useEffect(()=>{if(x)return window.addEventListener("scroll",T,!0),window.addEventListener("resize",T),()=>{window.removeEventListener("scroll",T,!0),window.removeEventListener("resize",T)}},[!!x,c]),m.useEffect(()=>()=>{b.current?.abort(),h.current!=null&&window.clearTimeout(h.current)},[]),s.jsxs(s.Fragment,{children:[s.jsx("span",{className:"bv-textarea-shell resize-vertical",children:s.jsx(y0,{...a,ref:u,value:e,onChange:O=>{t(O.target.value),S(O.target.value,O.target.selectionStart,O.target.selectionEnd)},onSelect:O=>{S(O.currentTarget.value,O.currentTarget.selectionStart,O.currentTarget.selectionEnd),i?.(O)},onKeyDown:O=>{if(d.length){if(O.key==="ArrowDown"||O.key==="ArrowUp"){O.preventDefault(),O.stopPropagation(),g(B=>(B+(O.key==="ArrowDown"?1:-1)+d.length)%d.length);return}if(O.key==="Enter"||O.key==="Tab"){O.preventDefault(),O.stopPropagation(),P();return}if(O.key==="Escape"){O.preventDefault(),O.stopPropagation(),y();return}}o?.(O)},onBlur:O=>{window.setTimeout(y,120),n?.(O)}})}),l&&x&&s.jsx(ox,{suggestions:d,selected:p,position:x,onAccept:P,onHeight:O=>{Math.abs(O-v.current)<1||(v.current=O,T())}})]})}function En({label:e,help:t,value:r,onChange:o,children:n,disabled:i,className:a=""}){const l=Re.Children.toArray(n).flatMap(c=>Re.isValidElement(c)?[{value:String(c.props.value??c.props.children??""),label:String(c.props.children??c.props.value??""),disabled:c.props.disabled}]:[]);return s.jsx("div",{className:a,children:s.jsx(qe,{label:e,help:t,value:r,onValue:o,options:l,disabled:i})})}function Rn({onChange:e,...t}){return s.jsx(Pt,{...t,onValue:e})}const Oh=({stacks:e})=>s.jsxs(s.Fragment,{children:[s.jsx("option",{value:"",children:"None"}),e.map(t=>s.jsx("option",{value:t.id,children:t.name},t.id))]}),Fc=({title:e,scope:t,value:r,open:o,onOpen:n,onChange:i})=>s.jsx(as,{value:o?[t]:[],onValue:a=>n(a.includes(t)),items:[{id:t,title:e,content:s.jsxs("div",{className:"bv-prompt-editor-fields",children:[s.jsx(Rr,{label:"Positive",children:s.jsx(gs,{value:r.positive_source,onValue:a=>i({...r,positive_source:a}),completionContext:{scope:t,polarity:"positive"}})}),s.jsx(Rr,{label:"Negative",children:s.jsx(gs,{value:r.negative_source,onValue:a=>i({...r,negative_source:a}),completionContext:{scope:t,polarity:"negative"}})})]})}]}),dk=({region:e,automaticColor:t,onRegion:r})=>s.jsxs("section",{className:"bv-inspector-section",children:[s.jsx("h3",{children:"Mask & appearance"}),s.jsx(Rn,{label:"Feather",value:e.mask.feather,min:0,max:.5,step:.005,onChange:o=>r(n=>{n.mask.feather=o})}),s.jsx("div",{className:"region-color-control",children:s.jsxs("div",{className:"region-color-split",children:[s.jsx(E0,{label:"Display color",help:"Editor display only. It does not change masks or sampling.",value:e.authoring.color,onValue:o=>r(n=>{n.authoring.color=o.toUpperCase()})}),s.jsx(oe,{density:"compact",intent:"ghost",iconOnly:!0,"aria-label":"Reset display color to automatic",title:"Reset to automatic",disabled:!t||e.authoring.color.toUpperCase()===t,onClick:()=>r(o=>{t&&(o.authoring.color=t)}),children:"↶"})]})})]});function fk(e){const t=e.layer?.geometries.find(n=>n.type==="brush_stroke"),[r,o]=m.useState(e.mode??(e.layer?"selection":e.region?"region":"document"));return m.useEffect(()=>o(e.mode??(e.layer?"selection":e.region?"region":"document")),[e.layer?.id,e.mode,e.region?.id]),s.jsx(pf,{density:"compact",className:"inspector-density",children:s.jsxs("aside",{className:`inspector bv-ui ${e.mode?"fixed-inspector":""}`,children:[s.jsxs("nav",{className:"inspector-tabs",role:"tablist","aria-label":"Inspector context",children:[s.jsx(oe,{intent:"ghost",role:"tab","aria-selected":r==="selection",disabled:!e.layer,onClick:()=>o("selection"),children:"Selection"}),s.jsx(oe,{intent:"ghost",role:"tab","aria-selected":r==="region",disabled:!e.region,onClick:()=>o("region"),children:"Region"}),s.jsx(oe,{intent:"ghost",role:"tab","aria-selected":r==="document",onClick:()=>o("document"),children:"Document"})]}),s.jsxs("div",{className:"inspector-tab-panel",role:"tabpanel",hidden:r!=="selection",children:[e.region&&s.jsx(dk,{region:e.region,automaticColor:e.automaticRegionColor,onRegion:e.onRegion}),e.layer&&e.bounds?s.jsxs("section",{className:"bv-inspector-section",children:[s.jsx("h3",{children:"Layer"}),s.jsx("div",{className:"bv-layer-bounds-grid",children:["x","y","width","height"].map(n=>{const i=n==="x"||n==="width"?e.canvas.width:e.canvas.height;return s.jsx(Rn,{label:n.toUpperCase(),value:Math.round(e.bounds[n]*i),min:0,max:i,step:1,unit:"px",onChange:a=>e.onLayerBounds({...e.bounds,[n]:a/i})},n)})}),t&&s.jsxs(s.Fragment,{children:[s.jsx(Rn,{label:"Stroke width",value:t.size,min:.001,max:1,step:.005,onChange:n=>e.onBrushSetting("size",n),unit:"×"}),s.jsxs("div",{className:"bv-compact-grid",children:[s.jsx(Rn,{label:"Hardness",value:t.hardness,min:0,max:1,step:.05,onChange:n=>e.onBrushSetting("hardness",n)}),s.jsx(Rn,{label:"Opacity",value:t.opacity,min:0,max:1,step:.05,onChange:n=>e.onBrushSetting("opacity",n)})]}),s.jsxs("div",{className:"bv-compact-grid",children:[s.jsxs(En,{label:"Shape",value:t.shape??"round",onChange:n=>e.onBrushSetting("shape",n),children:[s.jsx("option",{value:"round",children:"Round"}),s.jsx("option",{value:"square",children:"Square"})]}),s.jsxs(En,{label:"Pressure",value:t.pressure_mode??"constant",onChange:n=>e.onBrushSetting("pressure_mode",n),children:[s.jsx("option",{value:"constant",children:"Constant"}),s.jsx("option",{value:"stylus",children:"Stylus"})]})]})]})]}):s.jsx("p",{className:"option-hint",children:"Select a layer to edit its geometry."})]}),s.jsx("div",{className:"inspector-tab-panel",role:"tabpanel",hidden:r!=="region",children:e.region&&s.jsxs("section",{className:"bv-inspector-section",children:[s.jsx("h3",{children:"Region"}),s.jsxs(En,{label:"Usage",help:"Controls whether this region participates in the main render, Detailer output, or both.",value:e.region.usage,onChange:n=>e.onRegion(i=>{i.usage=n}),children:[s.jsx("option",{value:"generation",children:"Generation"}),s.jsx("option",{value:"detailer",children:"Detailer only"}),s.jsx("option",{value:"both",children:"Generation + Detailer"})]}),e.loraV3RegionEditor??s.jsx(En,{label:"Additional LoRA Stack",help:"Added to the global stack. Source activation and strengths remain unchanged.",value:e.loraBindings.regions[e.region.id]??"",onChange:n=>e.onRegionLoraStack(e.region.id,n||null),children:s.jsx(Oh,{stacks:e.loraStacks})}),s.jsx(Rn,{label:"Strength",value:e.region.strength,min:0,max:10,step:.05,onChange:n=>e.onRegion(i=>{i.strength=n})}),s.jsx(Fc,{title:"Region Prompt",scope:"region",value:e.region.prompts,open:e.promptSections.region,onOpen:n=>e.onPromptSection("region",n),onChange:n=>e.onRegion(i=>{i.prompts=n})})]})}),s.jsx("div",{className:"inspector-tab-panel",role:"tabpanel",hidden:r!=="document",children:s.jsxs("section",{className:"bv-inspector-section",children:[s.jsx("h3",{children:"Document Prompts"}),e.loraV3GlobalEditor??s.jsx(En,{label:"Global LoRA Stack",help:"Applied globally and inherited by every region.",value:e.loraBindings.global_stack_id??"",onChange:n=>e.onGlobalLoraStack(n||null),children:s.jsx(Oh,{stacks:e.loraStacks})}),s.jsxs(En,{label:"Negative Mode",value:e.negativeMode,onChange:n=>e.onNegativeMode(n),children:[s.jsx("option",{value:"auto",children:"Auto"}),s.jsx("option",{value:"prompt",children:"Prompt"}),s.jsx("option",{value:"zero_out",children:"Zero out"})]}),s.jsx(Fc,{title:"Global",scope:"global",value:e.globalPrompts,open:e.promptSections.global,onOpen:n=>e.onPromptSection("global",n),onChange:e.onGlobalPrompts}),s.jsx(Fc,{title:"Background",scope:"background",value:e.backgroundPrompts,open:e.promptSections.background,onOpen:n=>e.onPromptSection("background",n),onChange:e.onBackgroundPrompts})]})})]})})}const et=(e,t=0,r=1)=>Math.max(t,Math.min(r,e));function pk(e,t={width:1,height:1}){if(e.type==="rect"||e.type==="ellipse"||e.type==="raster_mask")return{x:e.x,y:e.y,width:e.width,height:e.height};const r=e.points.map(f=>f.x),o=e.points.map(f=>f.y);if(e.type==="polygon")return{x:Math.min(...r),y:Math.min(...o),width:Math.max(...r)-Math.min(...r),height:Math.max(...o)-Math.min(...o)};const n=Math.min(t.width,t.height),i=e.size*n/t.width/2,a=e.size*n/t.height/2,l=et(Math.min(...r)-i),c=et(Math.min(...o)-a),u=et(Math.max(...r)+i),d=et(Math.max(...o)+a);return{x:l,y:c,width:u-l,height:d-c}}function nx(e,t,r){const o=r.x-t.x,n=r.y-t.y;if(o===0&&n===0)return Math.hypot(e.x-t.x,e.y-t.y);const i=et(((e.x-t.x)*o+(e.y-t.y)*n)/(o*o+n*n));return Math.hypot(e.x-(t.x+i*o),e.y-(t.y+i*n))}function hk(e,t,r={width:1,height:1}){if(e.type==="rect"||e.type==="raster_mask")return t.x>=e.x&&t.x<=e.x+e.width&&t.y>=e.y&&t.y<=e.y+e.height;if(e.type==="ellipse"){const a=e.width/2,l=e.height/2;return((t.x-e.x-a)/a)**2+((t.y-e.y-l)/l)**2<=1}if(e.type==="polygon"){let a=!1;for(let l=0,c=e.points.length-1;lt.y!=d.y>t.y&&t.x<(d.x-u.x)*(t.y-u.y)/(d.y-u.y)+u.x&&(a=!a)}return a}const o=a=>({...a,x:a.x*r.width,y:a.y*r.height}),n=e.size*Math.min(r.width,r.height)/2,i=o(t);return e.points.length===1?Math.hypot(i.x-e.points[0].x*r.width,i.y-e.points[0].y*r.height)<=n:e.points.slice(1).some((a,l)=>nx(i,o(e.points[l]),o(a))<=n)}function tc(e,t){const r=e.map(l=>pk(l,t)),o=Math.min(...r.map(l=>l.x)),n=Math.min(...r.map(l=>l.y)),i=Math.max(...r.map(l=>l.x+l.width)),a=Math.max(...r.map(l=>l.y+l.height));return{x:o,y:n,width:i-o,height:a-n}}function Mh(e,t,r,o){const n=tc(e,o);return t=et(t,-n.x,1-n.x-n.width),r=et(r,-n.y,1-n.y-n.height),e.map(i=>{const a=Kt(i);return a.type==="rect"||a.type==="ellipse"||a.type==="raster_mask"?(a.x+=t,a.y+=r):a.points=a.points.map(l=>({...l,x:l.x+t,y:l.y+r})),a})}function ix(e,t,r){const o=tc(e,r);t={x:et(t.x,0,.998),y:et(t.y,0,.998),width:et(t.width,.002,1),height:et(t.height,.002,1)},t.width=Math.min(t.width,1-t.x),t.height=Math.min(t.height,1-t.y);const n=t.width/Math.max(o.width,1e-6),i=t.height/Math.max(o.height,1e-6);return e.map(a=>{const l=Kt(a);return l.type==="rect"||l.type==="ellipse"||l.type==="raster_mask"?(l.x=t.x+(l.x-o.x)*n,l.y=t.y+(l.y-o.y)*i,l.width*=n,l.height*=i):(l.points=l.points.map(c=>({...c,x:t.x+(c.x-o.x)*n,y:t.y+(c.y-o.y)*i})),l.type==="brush_stroke"&&(l.size=et(l.size*Math.sqrt(n*i),.001,1))),l})}function gk(e,t,r,o,n=!1,i){const a=tc(e,i);let l=a.x,c=a.y,u=l+a.width,d=c+a.height;if(t.includes("w")&&(l=et(l+r,0,u-.002)),t.includes("e")&&(u=et(u+r,l+.002,1)),t.includes("n")&&(c=et(c+o,0,d-.002)),t.includes("s")&&(d=et(d+o,c+.002,1)),n&&t.length===2){const f=a.width/Math.max(a.height,1e-4),p=u-l,g=d-c;if(p/g>f){const x=p/f;t.includes("n")?c=et(d-x):d=et(c+x)}else{const x=g*f;t.includes("w")?l=et(u-x):u=et(l+x)}}return ix(e,{x:l,y:c,width:u-l,height:d-c},i)}function bk(e,t,r){return nx(e,t,r)}function vk(e,t=.0015){if(e.length<=2)return e;const r=[e[0]];for(const n of e.slice(1,-1))Math.hypot(n.x-r[r.length-1].x,n.y-r[r.length-1].y)>=t&&r.push(n);r.push(e[e.length-1]);const o=n=>{if(n.length<=2)return n;let i=0,a=0;for(let l=1;li&&(i=c,a=l)}return i<=t?[n[0],n[n.length-1]]:[...o(n.slice(0,a+1)).slice(0,-1),...o(n.slice(a))]};return o(r)}const Ah=e=>e.layer_id??e.id,mk=e=>e.authoring??{name:"Layer",visible:!0,locked:!1};function xk(e,t,r,o){if(o==="replace")return{ids:[t],primary:t,anchor:t};if(o==="toggle"){const l=e.ids.includes(t)?e.ids.filter(c=>c!==t):[...e.ids,t];return{ids:l,primary:l.includes(t)?t:l[l.length-1]??null,anchor:t}}const n=e.anchor&&r.includes(e.anchor)?e.anchor:e.primary;if(!n)return{ids:[t],primary:t,anchor:t};const i=r.indexOf(n),a=r.indexOf(t);return i<0||a<0?{ids:[t],primary:t,anchor:t}:{ids:r.slice(Math.min(i,a),Math.max(i,a)+1),primary:t,anchor:n}}function yk(e,t,r){const o=new Set(t);if(o.size<2||!o.has(r))return!1;const n=e.geometry.find(l=>Ah(l)===r);if(!n)return!1;const i=mk(n);let a=!1;return e.geometry.forEach(l=>{const c=Ah(l);o.has(c)&&(l.mask_group_id??(l.mask_group_id=c),l.layer_id=r,l.authoring={...i},a||(a=c!==r))}),a}function ax(e,t){const r=new Map;e.forEach(o=>{o.mask_group_id&&(r.has(o.mask_group_id)||r.set(o.mask_group_id,t()),o.mask_group_id=r.get(o.mask_group_id))})}const _k="bv-regional-editor-state-v1:",Qe=(e,t)=>typeof e=="number"&&Number.isFinite(e)?e:t,Tt=(e,t,r)=>Math.max(t,Math.min(r,e)),wk=["select","rect-add","rect-subtract","ellipse-add","ellipse-subtract","polygon-add","polygon-subtract","brush-add","brush-subtract"];function lx(e){return`${_k}${e}`}function kk(e,t,r={width:520,height:560}){return{x:Tt(Qe(e.x,t.width-r.width-24),-r.width+52,t.width-52),y:Tt(Qe(e.y,84),72,Math.max(72,t.height-52))}}function bs(e,t){const r=Tt(Qe(e.width,520),Math.min(360,t.width),Math.max(360,t.width-32)),o=Tt(Qe(e.height,640),Math.min(320,t.height),Math.max(320,t.height-32));return{...kk({x:Qe(e.x,t.width-r-24),y:Qe(e.y,84)},t,{width:r}),width:r,height:o}}function Dh(e,t){return e.mode==="workspace"?dn({x:24,y:58,width:t.width-48,height:t.height-82},t,"workspace"):e.windows.floating}function dn(e,t,r){const o=Math.min(780,Math.max(320,t.width-16)),n=Math.min(520,Math.max(300,t.height-16)),i=Math.max(o,t.width),a=Math.max(n,t.height),l=Tt(Qe(e.width,o),o,i),c=Tt(Qe(e.height,n),n,a),u=r==="workspace"?8:0;return{x:Tt(Qe(e.x,u),u-l+80,t.width-u-80),y:Tt(Qe(e.y,58),0,t.height-42),width:l,height:c}}function Af(e={width:window.innerWidth,height:window.innerHeight}){const t=dn({x:24,y:58,width:e.width-48,height:e.height-82},e,"workspace"),r=Math.min(1100,e.width-32),o=Math.min(760,e.height-80),n=dn({x:Math.max(16,e.width-r-32),y:64,width:r,height:o},e,"floating");return{version:1,mode:"workspace",windows:{workspace:t,floating:n},panels:{left:290,right:340},artboard:{zoom:1,panX:0,panY:0,fit:!0},selectedRegionId:null,selectedLayerId:null,displayOpacity:.5,backgroundOpacity:1,isolate:!1,binaryMaskPreview:!1,tool:"select",brush:{size:.04,hardness:.75,opacity:1,shape:"round",pressureMode:"constant"},openMenu:null,promptSections:{region:!1,global:!1,background:!1},quickPromptTarget:"global",quickPromptWindow:bs({x:e.width-544,y:84,width:520,height:640},e)}}function Ek(e,t={width:window.innerWidth,height:window.innerHeight}){const r=Af(t),o=e&&typeof e=="object"?e:{},n=o.mode==="floating"?"floating":"workspace",i=o.windows&&typeof o.windows=="object"?o.windows:r.windows,a=o.panels&&typeof o.panels=="object"?o.panels:r.panels,l=o.artboard&&typeof o.artboard=="object"?o.artboard:r.artboard,c=o.brush&&typeof o.brush=="object"?o.brush:r.brush;return{version:1,mode:n,windows:{workspace:dn(i.workspace??r.windows.workspace,t,"workspace"),floating:dn(i.floating??r.windows.floating,t,"floating")},panels:{left:Tt(Qe(a.left,290),210,620),right:Tt(Qe(a.right,340),210,620)},artboard:{zoom:Tt(Qe(l.zoom,1),.02,8),panX:Qe(l.panX,0),panY:Qe(l.panY,0),fit:typeof l.fit=="boolean"?l.fit:!0},selectedRegionId:typeof o.selectedRegionId=="string"?o.selectedRegionId:null,selectedLayerId:typeof o.selectedLayerId=="string"?o.selectedLayerId:null,displayOpacity:Tt(Qe(o.displayOpacity,.5),.05,1),backgroundOpacity:Tt(Qe(o.backgroundOpacity,1),0,1),isolate:o.isolate===!0,tool:o.tool==="rect"?"rect-add":wk.includes(o.tool)?o.tool:"select",binaryMaskPreview:o.binaryMaskPreview===!0,brush:{size:Tt(Qe(c.size,.04),.001,1),hardness:Tt(Qe(c.hardness,.75),0,1),opacity:Tt(Qe(c.opacity,1),0,1),shape:c.shape==="square"?"square":"round",pressureMode:c.pressureMode==="stylus"?"stylus":"constant"},openMenu:["file","edit","view","artboard","layers","help"].includes(o.openMenu)?o.openMenu:null,promptSections:{region:o.promptSections?.region===!0,global:o.promptSections?.global===!0,background:o.promptSections?.background===!0},quickPromptTarget:typeof o.quickPromptTarget=="string"&&o.quickPromptTarget?o.quickPromptTarget:"global",quickPromptWindow:bs(o.quickPromptWindow??r.quickPromptWindow,t)}}function Ml(e,t=localStorage,r={width:window.innerWidth,height:window.innerHeight}){try{return Ek(JSON.parse(t.getItem(lx(e))||"null"),r)}catch{return Af(r)}}function nd(e,t,r=localStorage){try{return r.setItem(lx(e),JSON.stringify(t)),!0}catch{return!1}}function Tk(e,t,r,o=8){if(e.length!==t*r)throw new Error("Alpha buffer size does not match its dimensions");const n=new Int32Array(e.length),i=[];let a=0;const l=new Int32Array(e.length);for(let c=0;c=o&&(n[y]=a,l[d++]=y)}}i.push({label:a,x:f,y:p,width:g-f+1,height:x-p+1,pixels:w})}return{labels:n,areas:i}}const id=(e,t)=>{const r=document.createElement("canvas");return r.width=e,r.height=t,r},Rk=e=>new Promise((t,r)=>{const o=new Image;o.onload=()=>t(o),o.onerror=()=>r(new Error("Raster layer image could not be decoded")),o.src=e});async function Sk(e,t,r,o){if(e.save(),e.globalCompositeOperation=t.operation==="subtract"?"destination-out":"source-over",e.fillStyle="white",e.strokeStyle="white",t.type==="rect")e.fillRect(t.x*r,t.y*o,t.width*r,t.height*o);else if(t.type==="ellipse")e.beginPath(),e.ellipse((t.x+t.width/2)*r,(t.y+t.height/2)*o,t.width*r/2,t.height*o/2,0,0,Math.PI*2),e.fill();else if(t.type==="polygon")e.beginPath(),t.points.forEach((n,i)=>i?e.lineTo(n.x*r,n.y*o):e.moveTo(n.x*r,n.y*o)),e.closePath(),e.fill();else if(t.type==="raster_mask")e.drawImage(await Rk(t.data_url),t.x*r,t.y*o,t.width*r,t.height*o);else{const n=Math.min(r,o),i=t.points,a=t.size*n,l=t.shape==="square"?"square":"round",c=(f,p,g=0)=>{const x=a*f.pressure*p;e.filter=g>0?`blur(${g}px)`:"none",e.beginPath(),t.shape==="square"?e.rect(f.x*r-x/2,f.y*o-x/2,x,x):e.arc(f.x*r,f.y*o,x/2,0,Math.PI*2),e.fill()},u=(f,p=0)=>{e.filter=p>0?`blur(${p}px)`:"none",e.lineCap=l,e.lineJoin=l==="round"?"round":"miter";for(let g=1;g0&&c(i[0],t.hardness)):(u(1,d),t.hardness>0&&u(t.hardness))}e.restore()}async function Lk(e,t,r){const o=id(t,r),n=o.getContext("2d",{willReadFrequently:!0}),i=new Map;e.filter(a=>a.enabled!==!1).forEach(a=>{const l=Ba(a),c=i.get(l);c?c.push(a):i.set(l,[a])});for(const a of i.values()){const l=id(t,r),c=l.getContext("2d");for(const u of a)await Sk(c,u,t,r);n.drawImage(l,0,0)}return o}async function Ck(e,t,r){const i=(await Lk(e,t.width,t.height)).getContext("2d",{willReadFrequently:!0}).getImageData(0,0,t.width,t.height),a=new Uint8ClampedArray(t.width*t.height);for(let f=0;ff.pixels>1);if(u.length<2)return[];const d={...e[0].authoring??{name:"Layer",visible:!0,locked:!1}};return u.map((f,p)=>{const g=id(f.width,f.height),x=g.getContext("2d"),w=x.createImageData(f.width,f.height);for(let b=0;b({schema:"bv.regional.lora_bindings",version:1,document_id:e,global_stack_id:null,regions:{}});function Nk(e,t,r){if(!t)return!1;const o=r.filter(n=>n.id===t);return o.length>1&&o[0].nodeId!==e}function Df(e,t){if(e==null||e==="")return rc(t);const r=typeof e=="string"?JSON.parse(e):structuredClone(e);if(r?.schema!=="bv.regional.lora_bindings"||r?.version!==1||typeof r?.regions!="object"||Array.isArray(r.regions))throw new Error("Not a valid BV regional LoRA bindings v1 value");if(r.document_id&&r.document_id!==t)throw new Error("LoRA bindings target a different BV Regional document");const o={};for(const[n,i]of Object.entries(r.regions))typeof i=="string"&&i&&(o[n]=i);return{schema:"bv.regional.lora_bindings",version:1,document_id:t,global_stack_id:typeof r.global_stack_id=="string"&&r.global_stack_id?r.global_stack_id:null,regions:o}}function $n(e,t){const r=Object.fromEntries(Object.entries(e.regions).filter(([o])=>t.has(o)));return{...e,regions:r}}function Uc(e,t){const r=structuredClone(e);return{document:r,loraBindings:structuredClone($n(t,new Set(r.regions.map(o=>o.id))))}}function Ok(e,t,r){const o=t.find((c,u)=>t.findIndex(d=>d.id===c.id)!==u);if(o)return[`Duplicate LoRA stack ID: ${o.id}`];const n=t.find((c,u)=>t.findIndex(d=>d.name.localeCompare(c.name,void 0,{sensitivity:"accent"})===0)!==u);if(n)return[`Duplicate LoRA stack name: ${n.name}`];const i=r&&Object.keys(e.regions).find(c=>!r.has(c));if(i)return[`LoRA assignment targets a missing region: ${i}`];const a=new Set(t.map(c=>c.id)),l=[e.global_stack_id,...Object.values(e.regions)].filter(c=>!!c);return l.length?t.length?[...new Set(l.filter(c=>!a.has(c)))].map(c=>`Assigned LoRA stack is missing: ${c}`):["LoRA stacks are assigned, but no BV Named LoRA Stack sources exist in this workflow."]:[]}function Mk(e,t,r){const o=new Map(t.map(i=>[i.id,i.name])),n=[];e.global_stack_id&&n.push(`Global: ${o.get(e.global_stack_id)??"Missing stack"}`);for(const[i,a]of Object.entries(e.regions))n.push(`${r[i]??"Missing region"}: ${o.get(a)??"Missing stack"}`);return n.length?`${n.join(" · ")} · source values unchanged`:"No LoRA stacks assigned"}const vs=(e,t)=>e.regions.find(r=>r.id===t)??null,ad=(e,t)=>e?Ar(e).find(r=>r.id===t)??null:null,ld=e=>e.kind==="layer"||e.kind==="geometry"?e.layerId:null;function Ak(e,t){const r=vs(e,t.source.regionId),o=vs(e,t.target.regionId);if(!r||!o||r.authoring.locked||o.authoring.locked||t.source.kind!=="region"&&ad(r,t.source.layerId)?.authoring.locked)return!1;const n=ld(t.target);return!(n&&ad(o,n)?.authoring.locked)}function Dk(e,t,r,o){if(!r||o==="inside"){e.geometry.push(...t);return}const n=e.geometry.map((a,l)=>zt(a)===r?l:-1).filter(a=>a>=0);if(!n.length){e.geometry.push(...t);return}const i=o==="before"?n[n.length-1]+1:n[0];e.geometry.splice(i,0,...t)}function Ik(e,t,r){if(!Ak(e,t))return!1;const o=structuredClone(e.regions),n=()=>e.regions.every(f=>Pv(f.geometry))?!0:(e.regions=o,!1);if(t.source.kind==="region"){if(t.target.kind!=="region"||t.position==="inside"||t.source.regionId===t.target.regionId)return!1;const f=e.regions.findIndex(x=>x.id===t.source.regionId),[p]=e.regions.splice(f,1),g=e.regions.findIndex(x=>x.id===t.target.regionId);return e.regions.splice(t.position==="before"?g:g+1,0,p),e.regions.forEach((x,w)=>{x.priority=w}),n()}const i=vs(e,t.source.regionId),a=vs(e,t.target.regionId);if(t.source.kind==="layer"){const f=t.source;if(t.target.kind==="geometry"||f.layerId===ld(t.target))return!1;const p=i.geometry.filter(g=>zt(g)===f.layerId);return p.length?(i.geometry=i.geometry.filter(g=>zt(g)!==f.layerId),Dk(a,p,ld(t.target),t.position),n()):!1}const l=t.source,c=i.geometry.findIndex(f=>f.id===l.geometryId);if(c<0||t.target.kind==="region"&&t.position!=="inside")return!1;const[u]=i.geometry.splice(c,1);if(t.target.kind==="region")return u.layer_id=r(),delete u.mask_group_id,u.authoring={...sr(u)},a.geometry.push(u),n();const d=t.target.layerId;if((d!==l.layerId||a!==i)&&(u.mask_group_id??(u.mask_group_id=l.layerId),u.layer_id=d,u.authoring={...ad(a,d).authoring}),t.target.kind==="layer"||t.position==="inside"){const f=a.geometry.map((p,g)=>zt(p)===d?g:-1).filter(p=>p>=0);a.geometry.splice(f.length?f[f.length-1]+1:a.geometry.length,0,u)}else{const f=t.target,p=a.geometry.findIndex(g=>g.id===f.geometryId);a.geometry.splice(t.position==="before"?p:p+1,0,u)}return n()}const jk=e=>e.scope==="global"?"global":`region:${e.document_id}:${e.region_id}`;function sx(e,t){return e.scope===t.scope&&(t.scope==="global"||e.document_id===t.document_id&&e.region_id===t.region_id)}function cx(e,t,r){const o=e.entries.flatMap(n=>{if(r&&n.id!==r)return[n];const i=n.targets.filter(a=>!sx(a,t));return i.length?[{...n,targets:i}]:[]});return{...e,collector_id:o.some(n=>n.source.kind==="external")?e.collector_id:null,entries:o}}const ux=(e,t)=>e.entries.filter(r=>r.source.kind==="external"&&r.targets.some(o=>sx(o,t)));function Bk({collectors:e,config:t,target:r,resolved:o,onCollector:n,onResource:i,onAdd:a,onRemove:l}){const c=ux(t,r);return s.jsxs("div",{className:"bv-lora-v3-scope-picker",children:[c.map((u,d)=>s.jsxs("section",{className:"bv-lora-v3-stack-row",children:[s.jsxs("strong",{children:["LoRA Stack ",d+1]}),s.jsx(Gs,{collectors:e,collectorId:t.collector_id??"",resourceId:u.source.resource_id,resolved:o,onCollector:n,onResource:f=>i(u.id,f)}),s.jsx(oe,{density:"compact",intent:"ghost",iconOnly:!0,"aria-label":`Remove LoRA Stack ${d+1}`,title:"Remove LoRA stack",onClick:()=>l(u.id,r),children:s.jsx("svg",{className:"bv-trash-icon",viewBox:"0 0 24 24","aria-hidden":"true",children:s.jsx("path",{d:"M4 7h16M9 7V4h6v3M7 7l1 13h8l1-13M10 11v5M14 11v5"})})})]},u.id)),s.jsx(oe,{intent:"secondary",disabled:!e.some(u=>u.resources.length>0),onClick:()=>a(r),children:"Add LoRA stack"})]})}function Ih(e){const t=ux(e.config,e.target).length>0;return s.jsx("div",{className:"bv-optional-lora-scope",children:s.jsxs("div",{className:"bv-lora-v3-enable-row",children:[s.jsx(Xs,{label:"",value:t,trueLabel:"LoRA enabled",falseLabel:"LoRA disabled",onValue:r=>{r?e.onAdd(e.target):e.onClear(e.target)}}),t&&s.jsx(Bk,{...e})]})})}const Pk=()=>({version:1,collector_id:null,entries:[]});function zk(e){const t=typeof e=="string"?JSON.parse(e):e;if(!t||typeof t!="object"||![1,2].includes(t.version)||!Array.isArray(t.entries)||t.version===2&&!Array.isArray(t.steps))throw new Error("Invalid BV Regional LoRA v3 configuration");return structuredClone(t)}const Fk=e=>JSON.stringify(e),fn="BV_RUNTIME_RESOURCE_PROVIDER",ai="resource_provider",dx="BV LoRA Stack Collector",If=(e,t)=>t==null?null:e?._links?.get?.(t)??e?.links?.get?.(t)??e?.links?.[t]??null,ms=e=>e?.findIndex(t=>t?.name===ai||t?.type===fn)??-1;function fx(e){let t=ms(e.outputs);t<0&&e.addOutput&&(e.addOutput(ai,fn),t=ms(e.outputs));const r=e.outputs?.[t];return r&&(r.name=ai,r.type=fn,r.hidden=!0,r.__bvResourceSlot=!0),t}function px(e){let t=ms(e.inputs);t<0&&e.addInput&&(e.addInput(ai,fn),t=ms(e.inputs));const r=e.inputs?.[t];return r&&(r.name=ai,r.type=fn,r.hidden=!0,r.__bvResourceSlot=!0),t}function Ta(e){const t=e.inputs?.find(i=>i.name===ai||i.type===fn),r=If(e.graph,t?.link);if(!r||String(r.target_id)!==String(e.id))return null;const o=e.graph?.getNodeById?.(r.origin_id),n=o?.outputs?.[Number(r.origin_slot)];return o?.graph===e.graph&&(o?.type===dx||n?.type===fn)?o:null}function Uk(e,t){const r=px(e);if(r<0)return!1;if(e.inputs?.[r]?.link!=null&&e.disconnectInput?.(r),!t)return!0;if(t.graph!==e.graph)return!1;const o=fx(t);return o<0?!1:(t.connect?.(o,e,r),Ta(e)===t)}function Vk(e){return(e.graph?._nodes??[]).filter(t=>t!==e&&t.graph===e.graph&&String(t.comfyClass??t.type)===dx)}const Wk=new Set(["BV Regional Native Conditioning","BV Regional Krea 2 Attention","BV Regional Anima Conditioning"]);function Hk(e){const t=e.graph,r=[e],o=new Set([e]),n=[];for(;r.length;){const i=r.shift();for(const a of i?.outputs??[])if(a?.type==="BV_REGIONAL")for(const l of a.links??[]){const c=If(t,l),u=c&&t?.getNodeById?.(c.target_id);!u||u.graph!==t||o.has(u)||(o.add(u),Wk.has(u.type)&&n.push(u),(u.outputs??[]).some(d=>d.type==="BV_REGIONAL")&&r.push(u))}}return n}function hx(e,t){return[e,...Hk(e)].map(o=>Uk(o,t)).every(Boolean)}function $k(e){const t=e.graph,r=[e],o=new Set([e]);for(;r.length;){const n=r.shift();for(const i of n?.inputs??[]){if(i?.type!=="BV_REGIONAL")continue;const a=If(t,i.link),l=a&&t?.getNodeById?.(a.origin_id);if(!(!l||l.graph!==t||o.has(l))){if(["BV Regional LoRA","BV Regional Prompt"].includes(String(l.comfyClass??l.type)))return l;o.add(l),r.push(l)}}}return null}const Yk="BV_RUNTIME_RESOURCE_PROVIDER_M0",sd="BV_RUNTIME_RESOURCE_PROVIDER",cd=e=>e===Yk||e===sd;function jf(e){return(e?._nodes??[]).some(t=>t.__bvM0ResourceConsumer===!0&&!!t.properties?.bvM0DebugVisible)}function Xk(e,t){if(!t)return!1;const r=e.graph?.getNodeById?.(t.origin_id),o=e.graph?.getNodeById?.(t.target_id);return r?.outputs?.[t.origin_slot]?.type===sd||o?.inputs?.[t.target_slot]?.type===sd?!0:gx(e,t)?!jf(e.graph):!!(r?.outputs?.[t.origin_slot]?.__bvM0VisualHidden||o?.inputs?.[t.target_slot]?.__bvM0VisualHidden)}function gx(e,t){if(!t)return!1;const r=e.graph?.getNodeById?.(t.origin_id),o=e.graph?.getNodeById?.(t.target_id),n=r?.outputs?.[t.origin_slot],i=o?.inputs?.[t.target_slot];return!!((n?.__bvM0ResourceSlot||cd(n?.type))&&(i?.__bvM0ResourceSlot||cd(i?.type)))}function bx(e){if(!e||e.__bvM0DebugAnimation)return;e.__bvM0DebugAnimation=!0;const t=()=>{const r=jf(e.graph);if(document.documentElement.classList.toggle("bv-m0-debug-active",r),!r){e.__bvM0DebugAnimation=!1;return}e.setDirty?.(!1,!0),e.setDirtyCanvas?.(!1,!0),requestAnimationFrame(t)};requestAnimationFrame(t)}function vx(e){if(typeof document>"u")return;const t=jf(e);document.documentElement.classList.toggle("bv-m0-debug-active",t)}function Bf(e){if(!e||e.__bvM0VisibilityInstalled)return;e.__bvM0VisibilityInstalled=!0;const t=e.drawNode,r=e.renderLink;e.renderLink=function(...o){if(Xk(this,o[3]))return;if(!gx(this,o[3]))return r.apply(this,o);const n=this.graph?.getNodeById?.(o[3]?.target_id),i=n?.inputs?.map((c,u)=>({slot:c,index:u})).filter(({slot:c})=>c.__bvM0ResourceSlot)??[],a=n?.__bvM0FanInAnchorSlot??(i.length>1?i[0].index:void 0);a!=null&&n&&((o[3]?.target_slot===a||!n.__bvM0FanInPoint)&&(n.__bvM0FanInPoint=o[2]),o[2]=n.__bvM0FanInPoint);const l=o[0];l.save();try{return l.setLineDash([7,5]),l.lineDashOffset=-((typeof performance>"u"?0:performance.now())/45%12),o[5]=typeof performance>"u"?0:performance.now()/1e3,r.apply(this,o)}finally{l.restore()}},e.drawNode=function(o,n){const i=[];for(const a of[...o.inputs??[],...o.outputs??[]])if(cd(a.type)){for(const l of["name","label","localized_name"]){const c=Object.prototype.hasOwnProperty.call(a,l),u=a[l];Object.defineProperty(a,l,{configurable:!0,writable:!0,value:""}),i.push(()=>c?Object.defineProperty(a,l,{configurable:!0,writable:!0,value:u}):delete a[l])}for(const l of["draw","drawCollapsed"]){if(typeof a[l]!="function")continue;const c=Object.prototype.hasOwnProperty.call(a,l),u=a[l];Object.defineProperty(a,l,{configurable:!0,writable:!0,value:()=>{}}),i.push(()=>c?Object.defineProperty(a,l,{configurable:!0,writable:!0,value:u}):delete a[l])}}try{return t.call(this,o,n)}finally{for(let a=i.length-1;a>=0;a--)i[a]()}}}function Pf(e,t,r){let o=0;const n=(e.__bvM0ElementMarkRevision??0)+1;e.__bvM0ElementMarkRevision=n;const i=()=>{if(e.__bvM0ElementMarkRevision!==n)return;const a=CSS.escape(String(e.id)),l=document.querySelector(`.lg-node[data-node-id="${a}"]`);if(!l){o++<40&&setTimeout(i,50);return}l.classList.add(`bv-m0-${t}`),l.classList.toggle("bv-m0-debug",r);const c=l.querySelectorAll(".lg-slot--input"),u=e.inputs?.map((f,p)=>({slot:f,index:p})).filter(({slot:f})=>f.__bvM0ResourceSlot)??[],d=u.length>1?u[0].index:void 0;c.forEach((f,p)=>f.classList.toggle("bv-m0-port-hidden",!!e.inputs?.[p]?.__bvM0PortHidden||d!=null&&p!==d)),l.classList.toggle("bv-m0-fan-in",d!=null),o++<4&&setTimeout(i,75*o)};i()}const Ji="bv-open-regional-lora-editor",xs="bv-regional-lora-inventory-changed",Sr=(e,t)=>e.widgets?.find(r=>r.name===t),za=e=>String(e?.comfyClass??e?.type??""),mx=(e,t)=>t==null?null:e?._links?.get?.(t)??e?.links?.get?.(t)??e?.links?.[t]??null,Ra=e=>{e&&(e.type="converted-widget",e.hidden=!0,e.computeSize=()=>[0,-4],e.element&&(e.element.style.display="none"),e.serializeValue=e.serializeValue??function(){return this.value})},Gk=e=>{e&&!String(e.value??"").trim()&&(e.value=crypto.randomUUID())},xx=()=>{let e=0;const t=()=>{const r=ct().canvas;r?Bf(r):e++<40&&setTimeout(t,50)};t()};function yx(e){const t=[],r=new Set,o=[e];for(;o.length;){const n=o.shift();if(!(!n||r.has(n))){r.add(n);for(const i of n.inputs??[]){if(!["lora_registry","registry"].includes(i.name))continue;const a=mx(n.graph,i.link),l=a&&n.graph?.getNodeById?.(a.origin_id);if(!(!l||l.graph!==n.graph)){if(za(l)==="BV Named LoRA Stack"){const c=String(Sr(l,"stack_id")?.value??"").trim(),u=String(Sr(l,"name")?.value??"").trim();c&&u&&t.push({id:c,label:u,node:l})}o.push(l)}}}}return t.reverse()}function li(e){return Vk(e).map(t=>({id:String(Sr(t,"collector_id")?.value??"").trim(),label:String(t.title||"BV LoRA Stack Collector"),resources:yx(t),node:t})).filter(t=>t.id)}function ys(e,t=za(e)==="BV Regional Prompt"?"lora_v3_config_json":"config_json"){try{let r=zk(Sr(e,t)?.value),o=Ta(e);const n=o?.__bvLoraCollectorIdRemap?.[String(r.collector_id??"")],i=Object.assign({},...yx(o).map(l=>l.node?.__bvLoraResourceIdRemap??{})),a=l=>l.source.kind==="external"&&i[l.source.resource_id]?{...l,source:{...l.source,resource_id:i[l.source.resource_id]}}:l;return n&&(r={...r,collector_id:n,entries:r.entries.map(a),steps:r.steps?.map(l=>({...l,entries:l.entries.map(a)}))},_x(e,r,t)),r}catch{return Pk()}}function _x(e,t,r=za(e)==="BV Regional Prompt"?"lora_v3_config_json":"config_json"){const o=Sr(e,r);o&&(o.value=Fk(t),o.callback?.(o.value),e.setDirtyCanvas?.(!0,!0))}function Kk(e){const t=e?.graph,r=[e],o=new Set;let n=null;for(;r.length&&!n;){const i=r.shift();if(!(!i||o.has(i))){if(o.add(i),za(i)==="BV Regional Prompt"){try{const a=JSON.parse(String(Sr(i,"regional_json")?.value??"{}"));n=a.version===3?a.core:a}catch{}break}for(const a of i.inputs??[]){if(a.type!=="BV_REGIONAL")continue;const l=mx(t,a.link),c=l&&t?.getNodeById?.(l.origin_id);c?.graph===t&&r.push(c)}}}return n?.document_id?[{value:"global",label:"Global",target:{scope:"global"}},...(n.regions??[]).map(i=>({value:`region:${n.document_id}:${i.id}`,label:String(i.name||i.id),target:{scope:"region",document_id:String(n.document_id),region_id:String(i.id)}}))]:[{value:"global",label:"Global",target:{scope:"global"}}]}function ud(e,t){const r=Ta(e);return!!r&&String(Sr(r,"collector_id")?.value??"")===String(t.collector_id??"")}function bi(e,t){const r=li(e).find(o=>o.id===t.collector_id);return hx(e,r?.node??null),_x(e,t),t}function wx(e,t,r){const o=li(e).find(a=>a.id===r),n=o?.resources[0]?.id??"",i=a=>a.source.kind==="external"?{...a,source:{...a.source,resource_id:n}}:a;return bi(e,{...t,collector_id:r||null,entries:t.entries.map(i),steps:t.steps?.map(a=>({...a,entries:a.entries.map(i)}))})}function kx(e,t,r,o){const n=i=>i.id===r&&i.source.kind==="external"?{...i,source:{...i.source,resource_id:o}}:i;return bi(e,{...t,entries:t.entries.map(n),steps:t.steps?.map(i=>({...i,entries:i.entries.map(n)}))})}function qk(e,t,r){const o=li(e).find(i=>i.id===t.collector_id)??li(e)[0],n=o?.resources[0];return!o||!n?t:bi(e,{...t,collector_id:o.id,entries:[...t.entries,{id:crypto.randomUUID(),source:{kind:"external",resource_id:n.id},targets:[r]}]})}function Jk(e,t,r,o){return bi(e,cx(t,o,r))}function Zk(e,t,r){return bi(e,cx(t,r))}function Qk(e){xx();const t=Sr(e,"collector_id");Gk(t);const r=String(t?.value??"").trim(),o=(e.graph?._nodes??[]).find(n=>n!==e&&za(n)==="BV LoRA Stack Collector"&&String(Sr(n,"collector_id")?.value??"").trim()===r);if(t&&r&&o){const n=crypto.randomUUID();t.value=n,e.__bvLoraCollectorIdRemap={[r]:n}}Ra(t),fx(e),e.__bvRuntimeResourceProvider=!0}function _s(e){xx();const t=px(e),r=e.inputs?.[t];if(r&&(r.hidden=!0,r.__bvM0VisualHidden=!0,r.__bvM0PortHidden=!0,r.__bvM0ResourceSlot=!0),!Ta(e)){const o=$k(e),n=o&&Ta(o);n&&hx(o,n)}}function eE(e){if(_s(e),Ra(Sr(e,"operation")),Ra(Sr(e,"config_json")),!e.widgets?.find(t=>t.name==="open_lora_editor")){const t=e.addWidget?.("button","open_lora_editor",null,()=>window.dispatchEvent(new CustomEvent(Ji,{detail:{node:e}})),{serialize:!1});t&&(t.label="Open LoRA Editor",t.serialize=!1)}e.setSize?.([Math.max(e.size?.[0]??0,220),e.computeSize?.()[1]??60])}function tE(e,t){const r=t.name==="BV LoRA Stack Collector",o=t.name==="BV Regional LoRA",n=["BV Regional Native Conditioning","BV Regional Krea 2 Attention","BV Regional Anima Conditioning"].includes(t.name);if(!r&&!o&&!n)return!1;const i=e.prototype.onNodeCreated,a=e.prototype.onConfigure,l=e.prototype.onConnectionsChange,c=e.prototype.onRemoved,u=function(){r&&Qk(this),o&&eE(this),n&&_s(this),o&&window.dispatchEvent(new CustomEvent(xs))};return e.prototype.onNodeCreated=function(){const d=i?.apply(this,arguments);return queueMicrotask(()=>u.call(this)),d},e.prototype.onConfigure=function(){const d=a?.apply(this,arguments);return queueMicrotask(()=>u.call(this)),d},e.prototype.onConnectionsChange=function(){const d=l?.apply(this,arguments);return queueMicrotask(()=>u.call(this)),d},e.prototype.onRemoved=function(){const d=c?.apply(this,arguments);return o&&queueMicrotask(()=>window.dispatchEvent(new CustomEvent(xs))),d},!0}const zo=e=>ma(ct().rootGraph??ct().graph,e),jh=e=>e?.widgets?.find(t=>t.name==="regional_json"),cl=e=>e?.widgets?.find(t=>t.name==="lora_bindings_json"),Bh=(e,t)=>e&&t?e.geometry.filter(r=>zt(r)===t):[],Fo=J1,Vc=(e,t)=>{const r=e.currentTarget.getBoundingClientRect();return{x:Math.max(0,Math.min(1,(e.clientX-r.left)/r.width)),y:Math.max(0,Math.min(1,(e.clientY-r.top)/r.height)),pressure:t==="stylus"&&e.pointerType==="pen"?Math.max(.01,e.pressure):1}};function Ph(e,t){const r=URL.createObjectURL(new Blob([JSON.stringify(t,null,2)],{type:"application/json"})),o=document.createElement("a");o.href=r,o.download=e,o.click(),URL.revokeObjectURL(r)}function rE(e){const t=new Map(e.map(r=>[r.id,Mt()]));return Kt(e).map(r=>{r.id=t.get(r.id),r.parent_region_id=r.parent_region_id?t.get(r.parent_region_id)??null:null,ax(r.geometry,Mt);const o=new Map;return r.geometry.forEach(n=>{const i=zt(n);o.has(i)||o.set(i,Mt()),n.id=Mt(),n.layer_id=o.get(i)}),r})}function oE({open:e,activationToken:t=0,nodes:r,initialNode:o,backgrounds:n,loraStacks:i,onClose:a}){const[l,c]=m.useState(o),[u,d]=m.useState(null),[f,p]=m.useState(null),[g,x]=m.useState(null),[w,k]=m.useState([]),[b,h]=m.useState(null),[v,_]=m.useState(null),[y,T]=m.useState("select"),[S,P]=m.useState({size:.04,hardness:.75,opacity:1,shape:"round",pressureMode:"constant"}),[O,B]=m.useState(.5),[j,M]=m.useState(1),[E,z]=m.useState(!1),[L,R]=m.useState([]),[N,A]=m.useState([]),[W,F]=m.useState(null),[ie,X]=m.useState(null),[q,Z]=m.useState(""),[Y,Q]=m.useState(()=>Af()),[ne,le]=m.useState(0),[Ce,Ee]=m.useState([]),[ve,jt]=m.useState(()=>rc("")),[G,ue]=m.useState(()=>ys(o)),se=bf(),$=m.useRef(null),pe=m.useRef(!1),fe=m.useRef(t),he=m.useRef(null),ot=m.useCallback(C=>Q(I=>{const V=I.artboard;return V.zoom===C.zoom&&V.panX===C.panX&&V.panY===C.panY&&V.fit===C.fit?I:{...I,artboard:C}}),[]),nt=m.useCallback(C=>Q(I=>I.openMenu===C?I:{...I,openMenu:C}),[]);m.useEffect(()=>{const C=pe.current,I=fe.current!==t;if(pe.current=e,fe.current=t,!e||!I)return;const V=o??r[0]??null,H=zo(l),J=zo(V);C&&H&&J!==H&&ni()==="keep"?Ee(de=>[...new Set([...de,H])].filter(Se=>Se!==J)):J&&Ee(de=>de.filter(Se=>Se!==J)),he.current=C?{mode:Y.mode,geometry:Dh(Y,{width:window.innerWidth,height:window.innerHeight})}:null,c(V)},[t,o,r,e]),m.useEffect(()=>{h(null)},[l,e]),m.useEffect(()=>{if(!(!e||!l))try{const C=un(jh(l)?.value);C.regions=Nh(C.regions),Fo(C.regions);const I=Df(cl(l)?.value,C.document_id),V=$n(I,new Set(C.regions.map(br=>br.id))),H=cl(l);H&&JSON.stringify(I)!==JSON.stringify(V)&&(H.value=JSON.stringify(V),H.callback?.(H.value),l.graph?.setDirtyCanvas?.(!0,!0));const J=Ml(C.document_id),de=C.regions.some(br=>br.id===J.selectedRegionId)?J.selectedRegionId:C.regions[0]?.id??null,Se=he.current;he.current=null,Se&&(J.mode=Se.mode,J.windows[Se.mode]=Se.geometry);const ut=C.regions.find(br=>br.id===de),$t=ut&&Ar(ut).some(br=>br.id===J.selectedLayerId)?J.selectedLayerId:null;Q(J),d(C),jt(V),ue(ys(l)),p(de),x($t),k($t?[$t]:[]),_($t),T(J.tool),P(J.brush),B(J.displayOpacity),M(J.backgroundOpacity),z(J.isolate&&!!$t),R([]),A([]),Z("")}catch(C){Z(C instanceof Error?C.message:String(C))}},[l,e]),m.useEffect(()=>{u&&nd(u.document_id,{...Y,selectedRegionId:f,selectedLayerId:g,displayOpacity:O,backgroundOpacity:j,isolate:E,tool:y,brush:S})},[j,S,O,u,E,g,f,y,Y]),m.useEffect(()=>{if(!e)return;const C=()=>Q(I=>({...I,windows:{workspace:dn(I.windows.workspace,{width:window.innerWidth,height:window.innerHeight},"workspace"),floating:dn(I.windows.floating,{width:window.innerWidth,height:window.innerHeight},"floating")}}));return window.addEventListener("resize",C),()=>window.removeEventListener("resize",C)},[e]);const ye=u?.regions.find(C=>C.id===f)??null,We=Bh(ye,g),me=b?We.filter(C=>C.id===b):We,we=ye&&g?Ar(ye).find(C=>C.id===g)??null:null,Je=ye?Ar(ye).filter(C=>w.includes(C.id)):[],gt=Je.length>1&&Je.every(C=>!C.authoring.locked),Lr=!!we&&!we.authoring.locked,yt=C=>{x(C),k(C?[C]:[]),_(C),h(null)},yn=(C,I,V)=>{const H=u?.regions.find($t=>$t.id===C);if(!H)return;const J=C===f,de=[...Ar(H)].reverse().map($t=>$t.id),ut=xk(J?{ids:w,primary:g,anchor:v}:{ids:[],primary:null,anchor:null},I,de,V);p(C),k(ut.ids),x(ut.primary),_(ut.anchor),z(!1),h(null)},vi=W&&g&&W.every(C=>zt(C)===g)?$.current&&"commit"in $.current&&$.current.commit==="subtract"?[...me,...W]:W:me,rr=vi.length&&u?tc(vi,u.canvas):null,Ht=m.useCallback((C,I=!0,V=ve)=>{if(!l)return;I&&u&&(R(Se=>[...Se.slice(-99),Uc(u,ve)]),A([]));const H=$n(V,new Set(C.regions.map(Se=>Se.id)));d(C);const J=jh(l);J&&(J.value=JSON.stringify(C),J.callback?.(J.value)),jt(H);const de=cl(l);de&&(de.value=JSON.stringify(H),de.callback?.(de.value)),l.graph?.setDirtyCanvas?.(!0,!0)},[u,ve,l]),He=m.useCallback((C,I=!0)=>{if(!u)return;const V=Kt(u);C(V),Ht(V,I)},[u,Ht]),mi=m.useCallback(C=>{if(!l)return;const I=u?$n(C,new Set(u.regions.map(H=>H.id))):C;jt(I);const V=cl(l);V&&(V.value=JSON.stringify(I),V.callback?.(V.value)),l.graph?.setDirtyCanvas?.(!0,!0)},[u,l]),Ua=C=>mi({...ve,global_stack_id:C}),Fx=(C,I)=>{const V={...ve.regions};I?V[C]=I:delete V[C],mi({...ve,regions:V})},Ux=C=>He(I=>{const V=I.regions.find(H=>H.id===f);V&&C(V)}),Bo=(C,I)=>He(V=>{const H=V.regions.find(J=>J.id===f);H&&I(Bh(H,C),H)}),gr=m.useCallback(()=>{$.current=null,F(null)},[]),Va=m.useCallback(()=>{if($.current?.mode!=="draw-polygon"||!W?.length)return;const C=W.map(I=>I.type==="polygon"?{...I,points:I.points.filter((V,H,J)=>H===0||Math.hypot(V.x-J[H-1].x,V.y-J[H-1].y)>.001)}:I);if(C.some(I=>I.type!=="polygon"||I.points.length<3))return gr();He(I=>{const V=I.regions.find(H=>H.id===f);V&&V.geometry.push(...C)}),gr()},[gr,W,He,f]),lc=m.useCallback(()=>{if(!u||!L.length)return;const C=L[L.length-1];R(L.slice(0,-1)),A([Uc(u,ve),...N]),Ht(Kt(C.document),!1,Kt(C.loraBindings))},[u,N,L,ve,Ht]),sc=m.useCallback(()=>{if(!u||!N.length)return;const C=N[0];A(N.slice(1)),R([...L,Uc(u,ve)]),Ht(Kt(C.document),!1,Kt(C.loraBindings))},[u,N,L,ve,Ht]),cc=C=>{Bo(C,(I,V)=>{V.geometry=V.geometry.filter(H=>zt(H)!==C)}),w.includes(C)&&yt(null)},Vx=C=>He(I=>{const V=I.regions.find(J=>J.id===f),H=V?.geometry.find(J=>J.id===C);H&&(H.enabled=H.enabled===!1)}),Wx=C=>{const I=u?.regions.find(V=>V.id===f);if(!I||!qu(I.geometry,C)){jr({title:"Operation cannot be removed",message:"This operation is the additive base for later subtract operations. Delete or move those operations first.",tone:"warning",duration:5e3});return}He(V=>{const H=V.regions.find(J=>J.id===f);H&&(H.geometry=H.geometry.filter(J=>J.id!==C))}),b===C&&h(null)},Wf=()=>{if(!f||!g||!gt)return;const C=g;He(I=>{const V=I.regions.find(H=>H.id===f);V&&yk(V,w,C)}),yt(C)},Hx=async()=>{if(!(!u||!f||!g||!we||!Lr))try{const C=await Ck(we.geometries,u.canvas,Mt);if(C.length<2){jr({title:"Layer was not split",message:"The selected layer contains fewer than two disconnected visible areas.",tone:"info",duration:4500});return}He(V=>{const H=V.regions.find(de=>de.id===f);if(!H)return;const J=H.geometry.findIndex(de=>zt(de)===g);H.geometry=H.geometry.filter(de=>zt(de)!==g),H.geometry.splice(Math.max(0,J),0,...C)});const I=C.map(V=>zt(V));k(I),x(I[0]),_(I[0])}catch(C){jr({title:"Split failed",message:String(C),tone:"danger",duration:6e3})}};m.useEffect(()=>{if(!e)return;const C=I=>{if(I.key==="Escape"&&$.current){I.preventDefault(),I.stopImmediatePropagation(),gr();return}if(I.key==="Enter"&&$.current?.mode==="draw-polygon"){I.preventDefault(),I.stopImmediatePropagation(),Va();return}if((I.ctrlKey||I.metaKey)&&I.key.toLowerCase()==="e"&>){I.preventDefault(),I.stopImmediatePropagation(),Wf();return}if((I.key==="Delete"||I.key==="Backspace")&&g&&!(I.target instanceof HTMLInputElement||I.target instanceof HTMLTextAreaElement)){I.preventDefault(),I.stopImmediatePropagation(),cc(g);return}!(I.ctrlKey||I.metaKey)||I.key.toLowerCase()!=="z"||(I.preventDefault(),I.stopImmediatePropagation(),I.shiftKey?sc():lc())};return window.addEventListener("keydown",C,!0),()=>window.removeEventListener("keydown",C,!0)},[gr,gt,cc,Va,e,sc,g,w,lc]);const $x=C=>{if(!u||!ye||ye.authoring.locked)return;const I=Vc(C,S.pressureMode),V=C.target.closest?.("[data-handle]")?.getAttribute("data-handle");if(y==="select"){if(C.currentTarget.setPointerCapture(C.pointerId),F(null),V&&we&&!we.authoring.locked){$.current={mode:"resize",start:I,original:Kt(me),handle:V};return}const or=[...Ar(ye)].reverse().find(Yt=>Yt.enabled&&Yt.authoring.visible&&Yt.geometries.filter(Cr=>Cr.operation==="add").some(Cr=>hk(Cr,I,u.canvas)));yt(or?.id??null),or&&!or.authoring.locked&&($.current={mode:"move",start:I,startScreen:{x:C.clientX,y:C.clientY},original:Kt(or.geometries),started:!1});return}const H=y.endsWith("subtract");if(H&&(!g||we?.authoring.locked))return;if(y.startsWith("polygon")&&$.current?.mode==="draw-polygon"){const or=W?.find(Yt=>Yt.type==="polygon")?.points.length??0;if(K1(or,$.current.startScreen,{x:C.clientX,y:C.clientY})){Va();return}F(Yt=>Yt?.map(Cr=>Cr.type==="polygon"?{...Cr,points:[...Cr.points,I]}:Cr)??null);return}const J=Mt(),de=H?null:X1(we),Se=H?g:de??J,ut=y.startsWith("rect")?"Rectangle":y.startsWith("ellipse")?"Ellipse":y.startsWith("polygon")?"Polygon":"Brush",$t=H||de?we?.authoring:{name:`${ut} ${Ar(ye).length+1}`,visible:!0,locked:!1},br=H?[...new Set(me.map(Ba))]:[void 0];if(y.startsWith("rect")||y.startsWith("ellipse")){C.currentTarget.setPointerCapture(C.pointerId);const or=y.startsWith("rect")?"rect":"ellipse";F(br.map((Yt,Cr)=>({id:Cr?Mt():J,layer_id:Se,mask_group_id:Yt,type:or,operation:H?"subtract":"add",enabled:!0,authoring:$t,x:I.x,y:I.y,width:.001,height:.001}))),$.current={mode:"draw-box",start:I,commit:H?"subtract":"add"},H||yt(Se)}else y.startsWith("polygon")?(F(br.map((or,Yt)=>({id:Yt?Mt():J,layer_id:Se,mask_group_id:or,type:"polygon",operation:H?"subtract":"add",enabled:!0,authoring:$t,points:[I]}))),$.current={mode:"draw-polygon",start:I,startScreen:{x:C.clientX,y:C.clientY},commit:H?"subtract":"add"},H||yt(Se)):(C.currentTarget.setPointerCapture(C.pointerId),F(br.map((or,Yt)=>({id:Yt?Mt():J,layer_id:Se,mask_group_id:or,type:"brush_stroke",operation:y==="brush-add"?"add":"subtract",enabled:!0,authoring:$t,size:S.size,hardness:S.hardness,opacity:S.opacity,shape:S.shape,pressure_mode:S.pressureMode,points:[I]}))),$.current={mode:"draw-brush",start:I,commit:y==="brush-add"?"add":"subtract"},y==="brush-add"&&yt(Se))},Yx=C=>{if(!u)return;const I=Vc(C,S.pressureMode);X(I);const V=$.current;if(V)if(V.mode==="draw-box"&&(W?.[0]?.type==="rect"||W?.[0]?.type==="ellipse"))F(W.map(H=>H.type==="rect"||H.type==="ellipse"?{...H,x:Math.min(V.start.x,I.x),y:Math.min(V.start.y,I.y),width:Math.max(.001,Math.abs(I.x-V.start.x)),height:Math.max(.001,Math.abs(I.y-V.start.y))}:H));else if(V.mode==="draw-brush"&&W?.[0]?.type==="brush_stroke")F(W.map(H=>H.type==="brush_stroke"?{...H,points:[...H.points,I]}:H));else if(V.mode==="move"){if(!V.started&&!G1(V.startScreen,{x:C.clientX,y:C.clientY}))return;V.started=!0,F(Mh(V.original,I.x-V.start.x,I.y-V.start.y,u.canvas))}else V.mode==="resize"&&F(gk(V.original,V.handle,I.x-V.start.x,I.y-V.start.y,C.shiftKey,u.canvas))},Xx=C=>{if(!u||!$.current||!W)return gr();const I=$.current,V=Vc(C,S.pressureMode);if(I.mode==="draw-polygon")return;let H=Z1(I.mode)?W.map(J=>J.type==="brush_stroke"?{...J,points:vk([...J.points,V])}:J):W;if(I.mode==="draw-box"&&(H[0].type==="rect"||H[0].type==="ellipse")&&(H[0].width<=.002||H[0].height<=.002))return gr();He(J=>{const de=J.regions.find(Se=>Se.id===f);if(de)if(I.mode.startsWith("draw"))de.geometry.push(...H);else{const Se=new Map(H.map(ut=>[ut.id,ut]));de.geometry=de.geometry.map(ut=>Se.get(ut.id)??ut)}}),gr()},Gx=C=>{$.current?.mode==="draw-polygon"&&(C.preventDefault(),Va())},Kx=(C,I)=>He(V=>{const H=V.regions.findIndex(de=>de.id===C),J=H+I;J<0||J>=V.regions.length||([V.regions[H],V.regions[J]]=[V.regions[J],V.regions[H]],Fo(V.regions))}),qx=(C,I)=>Bo(C,(V,H)=>{const J=Ar(H),de=J.findIndex(ut=>ut.id===C),Se=de+I;Se<0||Se>=J.length||([J[de],J[Se]]=[J[Se],J[de]],H.geometry=J.flatMap(ut=>ut.geometries))}),Jx=C=>{let I=!1,V=null;if(He(J=>{I=Ik(J,C,()=>V=Mt()),Fo(J.regions)}),!I)return;if(p(C.target.regionId),C.source.kind==="region"){yt(null);return}const H=C.source.kind==="layer"?C.source.layerId:C.target.kind==="region"?V:C.target.layerId;x(H),k(H?[H]:[]),_(H),h(C.source.kind==="geometry"?C.source.geometryId:null),z(!1)},Zx=(C,I)=>Bo(C,V=>{if(V.length)if(I==="enabled"){const H=!V.some(J=>J.enabled!==!1);V.forEach(J=>{J.enabled=H})}else{const H=!sr(V[0])[I];V.forEach(J=>{J.authoring={...sr(J),[I]:H}})}}),Qx=C=>Bo(C,(I,V)=>{const H=Mt(),J=Mh(Kt(I),.02,.02,u.canvas);ax(J,Mt),J.forEach((de,Se)=>{de.id=Mt(),de.layer_id=H,de.authoring={...sr(de),name:`${sr(de).name} Copy`,visible:!0,locked:!1},Se&&(de.authoring=J[0].authoring)}),V.geometry.push(...J),yt(H)}),ey=C=>{const I=u?.regions.find(V=>V.id===C);I&&se.confirm({title:`Delete region “${I.name}”?`,message:`This removes ${Ar(I).length} layer(s) and clears child-region parent references.`,confirmLabel:"Delete region",danger:!0,action:()=>{He(V=>{V.regions=V.regions.filter(H=>H.id!==C),V.regions.forEach(H=>{H.parent_region_id===C&&(H.parent_region_id=null)}),Fo(V.regions)}),p(u?.regions.find(V=>V.id!==C)?.id??null),yt(null)}})},ty=async C=>{try{if(!u)return;const I=R0(un(await C.text()),u.document_id);I.regions=Nh(I.regions),Fo(I.regions),Ht(I),p(I.regions[0]?.id??null),yt(null)}catch(I){jr({title:"Document import failed",message:String(I),tone:"danger",duration:6e3})}},ry=async C=>{try{const I=JSON.parse(await C.text());if(I?.schema!=="bv.regions"||![1,2].includes(I?.version)||!Array.isArray(I.regions))throw new Error("Not a BV Regions v1/v2 export");const V=I.version===1?I.regions.map(H=>({...H,usage:"generation"})):I.regions;He(H=>{H.regions.push(...rE(V)),Fo(H.regions)})}catch(I){jr({title:"Region import failed",message:String(I),tone:"danger",duration:6e3})}},oy=hi(l);if(!e)return null;const Hf=Dh(Y,{width:window.innerWidth,height:window.innerHeight}),$f=(C,I,V=!0)=>{const H=zo(l);_r("regional",C),C!==H&&(Ee(J=>I?J.filter(de=>de!==C):[...new Set([...J,H])].filter(de=>de&&de!==C)),V&&(he.current={mode:Y.mode,geometry:Hf}),c(r.find(J=>zo(J)===C)??null))},ny=u?Ok(ve,i,new Set(u.regions.map(C=>C.id))):[],Yf=G.entries.length&&(!l||!ud(l,G))?["V3 LoRA collector link is unresolved"]:ny,iy=G.entries.length?`${G.entries.length} V3 LoRA assignment${G.entries.length===1?"":"s"}`:u?Mk(ve,i,Object.fromEntries(u.regions.map(C=>[C.id,C.name]))):"",ay=l?li(l).filter(C=>C.resources.length>0):[],ly=l?ud(l,G):!1,Xf={collectors:ay,config:G,resolved:ly,onCollector:C=>l&&ue(wx(l,G,C)),onResource:(C,I)=>l&&ue(kx(l,G,C,I)),onAdd:C=>l&&ue(qk(l,G,C)),onRemove:(C,I)=>l&&ue(Jk(l,G,C,I)),onClear:C=>l&&ue(Zk(l,G,C))},uc=C=>u?s.jsx(fk,{mode:C,region:ye,layer:we,bounds:rr,canvas:u.canvas,automaticRegionColor:ye?jv(u.regions.indexOf(ye)):null,globalPrompts:u.prompts.global,backgroundPrompts:u.prompts.background,negativeMode:u.negative_mode,promptSections:Y.promptSections,loraBindings:ve,loraStacks:i,loraV3GlobalEditor:s.jsx(Ih,{...Xf,target:{scope:"global"}}),loraV3RegionEditor:ye?s.jsx(Ih,{...Xf,target:{scope:"region",document_id:u.document_id,region_id:ye.id}},ye.id):null,onGlobalLoraStack:Ua,onRegionLoraStack:Fx,onPromptSection:(I,V)=>Q(H=>({...H,promptSections:{...H.promptSections,[I]:V}})),onNegativeMode:I=>He(V=>{V.negative_mode=I}),onGlobalPrompts:I=>He(V=>{V.prompts.global=I}),onBackgroundPrompts:I=>He(V=>{V.prompts.background=I}),onRegion:Ux,onLayerBounds:I=>g&&Bo(g,(V,H)=>{const J=new Map(ix(V,I,u.canvas).map(de=>[de.id,de]));H.geometry=H.geometry.map(de=>J.get(de.id)??de)}),onBrushSetting:(I,V)=>g&&Bo(g,H=>H.forEach(J=>{J.type==="brush_stroke"&&Object.assign(J,{[I]:V})}))}):null;return s.jsxs(s.Fragment,{children:[Ce.map(C=>{const I=r.find(V=>zo(V)===C);return I?s.jsx(ec,{title:`Regional Editor · ${I.title||"BV Regional Prompt"} · #${I.id}`,onRestore:()=>$f(C,!1,!1),onClose:()=>Ee(V=>V.filter(H=>H!==C))},C):null}),s.jsx(xn,{open:e,activationToken:t,title:"BV Regional Editor",menuVisible:oy,onMenuVisible:C=>mn(l,C),context:s.jsx(Pa,{label:"Regional prompt document",value:zo(l),onNavigate:$f,options:r.filter(C=>vn(C)).map(C=>({value:zo(C),label:`${C.title||"BV Regional Prompt"} · #${C.id}`}))}),center:s.jsx(sk,{openMenu:Y.openMenu,onOpenMenu:nt,displayOpacity:O,backgroundOpacity:j,isolate:E,binaryMaskPreview:Y.binaryMaskPreview,hasSelection:!!g,onDisplayOpacity:B,onBackgroundOpacity:M,onToggleIsolate:()=>z(C=>!C),onToggleBinaryMaskPreview:()=>{gr(),Q(C=>({...C,binaryMaskPreview:!C.binaryMaskPreview}))},onExportDocument:()=>u&&Ph(`${u.title||"bv-regional"}.json`,u),onExportRegions:()=>u&&Ph(`${u.title||"bv-regions"}.regions.json`,{schema:"bv.regions",version:2,canvas:u.canvas,regions:u.regions}),onImportDocument:ty,onImportRegions:ry,onUndo:lc,onRedo:sc,canUndo:!!L.length,canRedo:!!N.length,canMergeLayers:gt,onMergeLayers:Wf,canvas:u?.canvas??{width:1024,height:1024},onCanvas:C=>He(I=>{I.canvas=C})}),mode:Y.mode,initialGeometry:Hf,minSize:{width:780,height:520},className:"bv-regional-shell",bodyClassName:"bv-regional-window-body",onModeChange:C=>Q(I=>({...I,mode:C})),onGeometry:C=>Q(I=>({...I,windows:{...I.windows,floating:C}})),onClose:a,status:u?s.jsxs(s.Fragment,{children:[s.jsx("span",{children:Yf[0]?`⚠ ${Yf[0]}`:`✓ ${iy}`}),s.jsxs("span",{children:[u.regions.length," regions · layout adjusted for this session"]})]}):null,actions:u?s.jsx(Am,{storageId:`regional-editor:${u.document_id}`,editorType:"regional",onClick:()=>le(C=>C+1)}):null,children:q?s.jsx("div",{className:"bv-regional-error",children:q}):u&&s.jsx(s.Fragment,{children:s.jsx("main",{className:"bv-regional-dock-host",children:s.jsx(Lm,{storageId:`regional-editor:${u.document_id}`,resetSignal:ne,defaultModel:{global:{tabEnableClose:!1,tabEnablePopout:!1,tabEnablePopoutIcon:!1,tabEnablePopoutFloatIcon:!0,tabSetMinWidth:180,tabSetMinHeight:120},borders:[],layout:{type:"row",children:[{type:"row",weight:22,minWidth:220,children:[{type:"tabset",weight:55,children:[{type:"tab",id:"regions",name:"Regions",component:"regions",enablePopoutFloatIcon:!0}]},{type:"tabset",weight:45,children:[{type:"tab",id:"selection",name:"Selection",component:"selection",enablePopoutFloatIcon:!0}]}]},{type:"tabset",weight:54,minWidth:320,children:[{type:"tab",id:"canvas",name:"Canvas",component:"canvas",enablePopoutFloatIcon:!0}]},{type:"row",weight:24,minWidth:260,children:[{type:"tabset",weight:65,children:[{type:"tab",id:"global",name:"Global",component:"global",enablePopoutFloatIcon:!0}]},{type:"tabset",weight:35,children:[{type:"tab",id:"region",name:"Region",component:"region",enablePopoutFloatIcon:!0}]}]}]}},panels:[{id:"regions",title:"Regions",weight:22,minWidth:220,content:s.jsx(L0,{regions:u.regions,selectedRegionId:f,selectedLayerId:g,selectedLayerIds:w,selectedGeometryId:b,onSelectRegion:C=>{p(C),yt(null),z(!1)},onSelectLayer:yn,onSelectGeometry:(C,I,V)=>{p(C),x(I),k([I]),_(I),h(V),z(!1)},onToggleGeometry:Vx,onDeleteGeometry:Wx,onAddRegion:()=>He(C=>{const I=T0(C.regions.length);C.regions.unshift(I),Fo(C.regions),p(I.id),yt(null)}),onRenameRegion:(C,I)=>He(V=>{V.regions.find(H=>H.id===C).name=I}),onRenameLayer:(C,I)=>Bo(C,V=>V.forEach(H=>{H.authoring={...sr(H),name:I}})),onToggleRegion:(C,I)=>He(V=>{const H=V.regions.find(J=>J.id===C);I==="enabled"?H.enabled=!H.enabled:I==="visible"?H.authoring.visible=!H.authoring.visible:H.authoring.locked=!H.authoring.locked}),onToggleLayer:Zx,onMoveRegion:Kx,onMoveLayer:qx,onTreeMove:Jx,onDeleteRegion:ey,onDeleteLayer:cc,onDuplicateLayer:Qx,canSplitDisconnectedAreas:Lr,onSplitDisconnectedAreas:Hx})},{id:"canvas",title:"Canvas",weight:54,minWidth:320,content:s.jsx(ok,{document:u,background:n[u.document_id],selectedRegionId:f,selectedLayerId:g,draft:W,selectionBounds:rr,cursor:ie,tool:y,brush:S,canSubtract:!!we&&!we.authoring.locked,displayOpacity:O,backgroundOpacity:j,isolate:E,binaryMaskPreview:Y.binaryMaskPreview,initialView:Y.artboard,onView:ot,onTool:C=>{T(C),gr()},onBrush:P,onPointerDown:$x,onPointerMove:Yx,onPointerUp:Xx,onPointerCancel:gr,onPointerLeave:()=>{$.current||X(null)},onDoubleClick:Gx},u.document_id)},{id:"global",title:"Global",weight:12,minWidth:240,content:uc("document")},{id:"selection",title:"Selection",weight:12,minWidth:240,content:uc("selection")},{id:"region",title:"Region",weight:12,minWidth:240,content:uc("region")}]})})})}),se.dialog]})}const Uo=e=>ma(ct().rootGraph??ct().graph,e),zh=e=>e?.widgets?.find(t=>t.name==="regional_json"),Wc=e=>e?.widgets?.find(t=>t.name==="lora_bindings_json"),nE=(e,t)=>t==="global"||t==="background"||e.regions.some(r=>r.id===t),iE=(e,t)=>t==="global"?e.prompts.global:t==="background"?e.prompts.background:e.regions.find(r=>r.id===t)?.prompts??e.prompts.global;function aE({open:e,activationToken:t=0,nodes:r,initialNode:o,loraStacks:n,onClose:i,onOpenEditor:a}){const[l,c]=m.useState(o),[u,d]=m.useState(null),[f,p]=m.useState(()=>rc("")),[g,x]=m.useState("global"),[w,k]=m.useState(()=>bs({x:window.innerWidth-544,y:84,width:520,height:640},{width:window.innerWidth,height:window.innerHeight})),[b,h]=m.useState(""),[v,_]=m.useState([]),y=m.useRef(null),T=m.useRef(!1),S=m.useRef(t);m.useEffect(()=>{const R=T.current,N=S.current!==t;if(T.current=e,S.current=t,!e||!N)return;const A=o??r[0]??null,W=Uo(l),F=Uo(A);R&&W&&F!==W&&ni()==="keep"?_(ie=>[...new Set([...ie,W])].filter(X=>X!==F)):F&&_(ie=>ie.filter(X=>X!==F)),y.current=R?w:null,c(A)},[t,o,r,e]),m.useEffect(()=>{if(l)try{const R=un(zh(l)?.value),N=Df(Wc(l)?.value,R.document_id),A=$n(N,new Set(R.regions.map(X=>X.id))),W=Wc(l);W&&JSON.stringify(N)!==JSON.stringify(A)&&(W.value=JSON.stringify(A),W.callback?.(W.value),l.graph?.setDirtyCanvas?.(!0,!0));const F=Ml(R.document_id),ie=nE(R,F.quickPromptTarget)?F.quickPromptTarget:"global";d(R),p(A),x(ie),k(y.current??F.quickPromptWindow),y.current=null,h("")}catch(R){d(null),h(R instanceof Error?R.message:String(R))}},[l,e]);const P=m.useMemo(()=>u?iE(u,g):null,[u,g]),O=R=>{if(x(R),!u)return;const N=Ml(u.document_id);nd(u.document_id,{...N,quickPromptTarget:R})},B=R=>{if(!u)return;const N=Ml(u.document_id);nd(u.document_id,{...N,quickPromptWindow:R})},j=R=>{if(!u||!l)return;const N=Kt(u);if(g==="global")N.prompts.global=R;else if(g==="background")N.prompts.background=R;else{const W=N.regions.find(F=>F.id===g);if(!W)return;W.prompts=R}d(N);const A=zh(l);A&&(A.value=JSON.stringify(N),A.callback?.(A.value)),l.graph?.setDirtyCanvas?.(!0,!0)},M=R=>{if(!u||!l)return;let N;if(g==="global"||g==="background")N={...f,global_stack_id:R};else{const W={...f.regions};R?W[g]=R:delete W[g],N={...f,regions:W}}p(N);const A=Wc(l);A&&(A.value=JSON.stringify(N),A.callback?.(A.value)),l.graph?.setDirtyCanvas?.(!0,!0)},E=g==="global"||g==="background"?f.global_stack_id??"":f.regions[g]??"",z=(R,N,A=!0)=>{const W=Uo(l);_r("quick",R),R!==W&&(_(F=>N?F.filter(ie=>ie!==R):[...new Set([...F,W])].filter(ie=>ie&&ie!==R)),y.current=A?w:null,c(r.find(F=>Uo(F)===R)??null))},L=hi(l);return s.jsxs(s.Fragment,{children:[v.map(R=>{const N=r.find(A=>Uo(A)===R);return N?s.jsx(ec,{title:`Quick Edit · ${N.title||"BV Regional Prompt"} · #${N.id}`,onRestore:()=>z(R,!1,!1),onClose:()=>_(A=>A.filter(W=>W!==R))},R):null}),s.jsx(xn,{open:e,activationToken:t,title:"Regional Quick Edit",menuVisible:L,onMenuVisible:R=>mn(l,R),context:s.jsx(Pa,{label:"Regional Prompt Node",value:Uo(l),options:r.filter(R=>vn(R)).map(R=>({value:Uo(R),label:`${R.title||"BV Regional Prompt"} · #${R.id}`})),onNavigate:z}),allowWorkspace:!1,initialGeometry:w,minSize:{width:360,height:320},className:"bv-quick-prompt-window bv-density-compact",onClose:i,onGeometry:R=>{const N=bs(R,{width:window.innerWidth,height:window.innerHeight});k(N),B(N)},status:s.jsx(Ev,{tone:"success",dot:!0,children:"Autosaved"}),actions:s.jsx(oe,{intent:"primary",disabled:!l||!u,onClick:()=>l&&a(l),children:"Open Full Editor"}),children:s.jsx("div",{className:"bv-quick-prompt-body",children:b?s.jsx(Fr,{tone:"danger",title:"Prompt document unavailable",children:b}):u&&P&&s.jsxs(s.Fragment,{children:[s.jsx(qe,{label:"Prompt Target",value:g,onValue:O,options:[{value:"global",label:"Global"},{value:"background",label:"Background"},...u.regions.map(R=>({value:R.id,label:R.name}))]}),s.jsx(qe,{label:g==="global"||g==="background"?"Global LoRA Stack":"Additional LoRA Stack",help:g==="global"||g==="background"?"Applied globally and inherited by every region.":"Added to the global stack for this region.",value:E,onValue:R=>M(R||null),options:[{value:"",label:"None"},...n.map(R=>({value:R.id,label:R.name}))]}),s.jsxs("div",{className:"bv-prompt-editor-fields",children:[s.jsx(Rr,{label:"Positive",children:s.jsx(gs,{autoFocus:!0,value:P.positive_source,onValue:R=>j({...P,positive_source:R}),completionContext:{scope:g==="global"||g==="background"?g:"region",polarity:"positive"}})}),s.jsx(Rr,{label:"Negative",children:s.jsx(gs,{value:P.negative_source,onValue:R=>j({...P,negative_source:R}),completionContext:{scope:g==="global"||g==="background"?g:"region",polarity:"negative"}})})]})]})})})]})}function Ex(e,t){const r=t?e.filter(n=>n.enabled!==!1&&(n.usage===t||n.usage==="both"||!n.usage&&t==="generation")):e,o=new Map;for(const n of r)o.set(n.name,(o.get(n.name)??0)+1);return r.map(n=>({...n,label:o.get(n.name)===1?n.name:`${n.name} · ${n.id.slice(0,8)}`}))}function lE(e){const t=new Map;return e.forEach(r=>t.set(r.title,(t.get(r.title)??0)+1)),e.map(r=>({...r,label:t.get(r.title)>1?`${r.title} · #${r.nodeId}`:`${r.title} · #${r.nodeId}`}))}function sE(e,t,r){const o=typeof e=="string"?e:"";return t.some(n=>n.documentId===o)?o:r?t[0]?.documentId??"":""}function cE(e,t,r){Jm(r);const o=document.createElement("div");o.className="bv-ui bv-settings-datasets";const n=fi(o),i=Zm;return n.render(m.createElement(i,{onSelectionChange:a=>t(JSON.stringify(a))})),o}const xo=new Map;let Ci=null;function uE(e){return e.disabled||e.readOnly||e.closest("#bv-root")||e.dataset.bvAutocomplete==="off"||e.closest('[data-bv-autocomplete="off"]')?!1:e.matches("textarea.comfy-multiline-input")||!!e.closest("[data-node-id]")}function Fh(e){if(xo.has(e)||!uE(e))return;let t=[],r=0,o=null,n=null,i=null,a=null,l=null,c=210;const u=()=>{n?.abort(),n=null,t=[],o=null,l?.unmount(),l=null,a?.remove(),a=null},d=()=>{if(!a)return;const h=hs(e,od(),c);f(h)},f=(h=hs(e,od(),c))=>{a||(a=document.createElement("div"),a.className="bv-ui bv-ui-portal",document.body.append(a),l=fi(a)),l.render(m.createElement(ox,{suggestions:t,selected:r,position:h,onAccept:g,onHeight:v=>{Math.abs(v-c)<1||(c=v,d())}}))},p=()=>f(),g=(h=r)=>{const v=t[h];if(!o||!v)return;const _=ex(e.value,o,v);e.value=_.text,e.dispatchEvent(new InputEvent("input",{bubbles:!0,inputType:"insertText",data:v.insertText})),e.dispatchEvent(new Event("change",{bubbles:!0})),u(),requestAnimationFrame(()=>{e.focus(),e.setSelectionRange(_.caret,_.caret)})},x=()=>{if(!Mf()||e.selectionStart!==e.selectionEnd||(i!=null&&window.clearTimeout(i),n?.abort(),o=Qm(e.value,e.selectionStart??e.value.length,{scope:"generic",polarity:"positive"}),!o))return u();const h=o;n=new AbortController;const v=n;i=window.setTimeout(async()=>{const _=await tx(h,[rx],v.signal);v.signal.aborted||document.activeElement!==e||(t=_,r=0,_.length?p():u())},120)},w=h=>{t.length&&(h.key==="ArrowDown"||h.key==="ArrowUp"?(h.preventDefault(),h.stopPropagation(),h.stopImmediatePropagation(),r=(r+(h.key==="ArrowDown"?1:-1)+t.length)%t.length,p()):h.key==="Enter"||h.key==="Tab"?(h.preventDefault(),h.stopPropagation(),h.stopImmediatePropagation(),g()):h.key==="Escape"&&(h.preventDefault(),h.stopPropagation(),h.stopImmediatePropagation(),u()))},k=()=>window.setTimeout(()=>{a?.contains(document.activeElement)||u()},120),b=()=>{document.activeElement===e&&x()};e.addEventListener("input",x),e.addEventListener("select",x),document.addEventListener("selectionchange",b),e.addEventListener("keydown",w,!0),e.addEventListener("blur",k),window.addEventListener("resize",d),window.addEventListener("scroll",d,!0),xo.set(e,{close:u,destroy:()=>{u(),e.removeEventListener("input",x),e.removeEventListener("select",x),document.removeEventListener("selectionchange",b),e.removeEventListener("keydown",w,!0),e.removeEventListener("blur",k),window.removeEventListener("resize",d),window.removeEventListener("scroll",d,!0)}})}function Uh(e){e instanceof HTMLTextAreaElement&&Fh(e),e.querySelectorAll?.("textarea").forEach(t=>Fh(t))}function dE(e){(e instanceof HTMLTextAreaElement?[e]:[...e.querySelectorAll?.("textarea")??[]]).forEach(r=>{xo.get(r)?.destroy(),xo.delete(r)})}function fE(){if(Ci)return Ci;Uh(document);const e=new MutationObserver(o=>o.forEach(n=>{n.addedNodes.forEach(i=>{i instanceof Element&&Uh(i)}),n.removedNodes.forEach(i=>{i instanceof Element&&dE(i)})}));e.observe(document.body,{childList:!0,subtree:!0});const t=()=>{Mf()||xo.forEach(o=>o.close())},r=()=>xo.forEach(o=>o.close());return window.addEventListener(ka,t),window.addEventListener(Ea,r),Ci=()=>{e.disconnect(),window.removeEventListener(ka,t),window.removeEventListener(Ea,r),xo.forEach(o=>o.destroy()),xo.clear(),Ci=null},Ci}function Vh(e){return e?.extensionManager?.workflow?.activeWorkflow??e?.workflowManager?.activeWorkflow??e?.graph??null}function pE(e,t,r,o=(i,a)=>globalThis.setInterval(i,a),n=i=>globalThis.clearInterval(i)){const i=Vh(e);let a=!1;const l=()=>{a||Vh(e)===i||(a=!0,r())};t.addEventListener("graphChanged",l);const c=o(l,250);return()=>{t.removeEventListener("graphChanged",l),n(c)}}const Tx=["region","global_influence","background_influence","primary_region_influence","context_regions_json"],hE=e=>Tx.map(t=>e?.find(r=>r.name===t)?.value),gE=e=>Array.isArray(e)&&e.length===Tx.length+1&&e[3]==null&&typeof e[4]=="number"&&typeof e[5]=="string"?[...e.slice(0,3),...e.slice(4)]:e,Hr=(e,t,r,o)=>{const n=Number(e);return Number.isFinite(n)?Math.max(r,Math.min(o,n)):t},Rx=()=>({global_influence:1,background_influence:.35,primary_region_influence:1,context_region_influence:1}),Sx=()=>({roi_padding:.15,threshold:.5,dilation:0,crop_factor:1.5,drop_size:10}),zf=e=>e.filter(t=>t.enabled!==!1&&(t.usage==="detailer"||t.usage==="both")).sort((t,r)=>(t.priority??0)-(r.priority??0)),dd=e=>({schema:"bv.detailer_plan",version:1,jobs:zf(e).map(t=>({region_ids:[t.id],primary_region_id:t.id,mask_composition:"union",prompt_composition:"context",conditioning:Rx(),detector:Sx()}))}),Al=(e,t)=>{const r=new Set(zf(t).map(i=>i.id));let o;try{o=String(e??"").trim()?JSON.parse(String(e)):dd(t)}catch{o=dd(t)}return{schema:"bv.detailer_plan",version:1,jobs:Array.isArray(o?.jobs)?o.jobs.flatMap(i=>{const a=Array.isArray(i?.region_ids)?[...new Set(i.region_ids.map(String).filter(u=>r.has(u)))]:[];if(!a.length)return[];const l=i.conditioning??{},c=i.detector??{};return[{region_ids:a,primary_region_id:a.includes(String(i.primary_region_id))?String(i.primary_region_id):a[0],mask_composition:["union","intersection","subtract"].includes(i.mask_composition)?i.mask_composition:"union",prompt_composition:i.prompt_composition==="primary"?"primary":"context",...String(i.detector_id??"").trim()?{detector_id:String(i.detector_id).trim()}:{},conditioning:{global_influence:Hr(l.global_influence,1,0,2),background_influence:Hr(l.background_influence,.35,0,2),primary_region_influence:Hr(l.primary_region_influence,1,0,2),context_region_influence:Hr(l.context_region_influence,1,0,2)},detector:{roi_padding:Hr(c.roi_padding,.15,0,2),threshold:Hr(c.threshold,.5,0,1),dilation:Math.round(Hr(c.dilation,0,-512,512)),crop_factor:Hr(c.crop_factor,1.5,1,20),drop_size:Math.round(Hr(c.drop_size,10,1,8192)),...String(c.query??"").trim()?{query:String(c.query).trim()}:{},...Array.isArray(c.labels)?{labels:c.labels.map(String).map(u=>u.trim()).filter(Boolean)}:{}}}]}):[]}},Hc=e=>JSON.stringify(e),bE=e=>structuredClone(e);function vE({regions:e,detectorIds:t,stored:r,save:o,close:n,nodeId:i="",nodes:a=[],onNavigate:l=()=>{},currentNode:c}){const u=zf(e),d=m.useMemo(()=>Al(r,e),[e,r]),f=Ks(d),p=f.value,[g,x]=m.useState(()=>Hc(d));qs(f);const w=Hc(p)!==g,[k,b]=m.useState(null),h=()=>{const E=Hc(p);o(E),x(E),f.clear()},v=E=>w?b(()=>E):E(),_=()=>v(n),y=hi(c),T=m.useMemo(()=>E=>s.jsx(xn,{...E,title:`${E.title} · #${i}`,shortTitle:"Detailer Plan",menuVisible:y,onMenuVisible:z=>mn(c,z),onClose:_,context:s.jsx(Pa,{label:"Detailer Plan Node",value:i,options:a.map(z=>({value:z.id,label:z.label})),onNavigate:(z,L)=>L?v(()=>l(z,!0)):l(z,!1)})}),[c,w,y,i,a,l]),[S,P]=m.useState([]),O=E=>f.commit(z=>{const L=bE(z);return E(L),L}),B=()=>O(E=>{const z=u[0];z&&E.jobs.push({region_ids:[z.id],primary_region_id:z.id,mask_composition:"union",prompt_composition:"context",conditioning:Rx(),detector:Sx()})}),j=E=>[{value:"",label:"No detector · use composed region mask"},...[...new Set([...E&&!t.includes(E)?[E]:[],...t])].map(z=>({value:z,label:t.includes(z)?z:`Missing · ${z}`}))],M=p.jobs.map((E,z)=>({id:`job-${z}`,title:`Job ${z+1}`,description:E.region_ids.map(L=>u.find(R=>R.id===L)?.name??L).join(" + ")||"No region",summary:s.jsxs("div",{className:"bv-editor-item-compact-summary",children:[s.jsxs("span",{children:[E.region_ids.length," region",E.region_ids.length===1?"":"s"]}),s.jsx("span",{children:E.detector_id||"Composed mask"}),s.jsx("span",{children:E.region_ids.length?"Ready":"Needs region"})]}),content:s.jsxs("div",{className:"bv-editor-item-details",children:[s.jsxs("div",{className:"bv-editor-item-summary",children:[s.jsx(w0,{label:"Regions",value:E.region_ids,minSelected:1,options:u.map(L=>({value:L.id,label:L.name})),onValue:L=>O(R=>{const N=R.jobs[z];N.region_ids=L,L.includes(N.primary_region_id)||(N.primary_region_id=L[0]??"")})}),s.jsxs(Go,{children:[s.jsx(qe,{label:"Detector assignment",value:E.detector_id??"",options:j(E.detector_id),onValue:L=>O(R=>{R.jobs[z].detector_id=L||void 0})}),E.region_ids.length>1&&s.jsx(qe,{label:"Primary region",value:E.primary_region_id,options:E.region_ids.map(L=>({value:L,label:u.find(R=>R.id===L)?.name??L})),onValue:L=>O(R=>{R.jobs[z].primary_region_id=L})})]})]}),s.jsx(as,{value:S,onValue:P,items:[{id:`composition-${z}`,title:"Mask and prompt composition",content:s.jsxs(Go,{children:[s.jsx(qe,{label:"Mask composition",value:E.mask_composition,options:[{value:"union",label:"Union"},{value:"intersection",label:"Intersection"},{value:"subtract",label:"Subtract in listed order"}],onValue:L=>O(R=>{R.jobs[z].mask_composition=L})}),s.jsx(qe,{label:"Prompt composition",value:E.prompt_composition,options:[{value:"context",label:"Primary and context regions"},{value:"primary",label:"Primary region only"}],onValue:L=>O(R=>{R.jobs[z].prompt_composition=L})})]})},{id:`conditioning-${z}`,title:"Conditioning strengths",content:s.jsx(Go,{minimum:150,children:[["Global influence","global_influence"],["Background influence","background_influence"],["Primary region influence","primary_region_influence"],["Context region influence","context_region_influence"]].map(([L,R])=>s.jsx(Pt,{label:L,value:E.conditioning[R],min:0,max:2,step:.05,onValue:N=>O(A=>{A.jobs[z].conditioning[R]=N})},R))})},{id:`detection-${z}`,title:"Detector and ROI settings",content:s.jsxs(Go,{minimum:150,children:[s.jsx(Pt,{label:"ROI padding",value:E.detector.roi_padding,min:0,max:2,step:.01,onValue:L=>O(R=>{R.jobs[z].detector.roi_padding=L})}),s.jsx(Pt,{label:"Threshold",value:E.detector.threshold,min:0,max:1,step:.01,onValue:L=>O(R=>{R.jobs[z].detector.threshold=L})}),s.jsx(Pt,{label:"Dilation",value:E.detector.dilation,min:-512,max:512,step:1,slider:!1,onValue:L=>O(R=>{R.jobs[z].detector.dilation=L})}),s.jsx(Pt,{label:"Crop factor",value:E.detector.crop_factor,min:1,max:20,step:.1,onValue:L=>O(R=>{R.jobs[z].detector.crop_factor=L})}),s.jsx(Pt,{label:"Drop size",value:E.detector.drop_size,min:1,max:8192,step:1,slider:!1,onValue:L=>O(R=>{R.jobs[z].detector.drop_size=L})}),s.jsx(cn,{label:"Detector query",value:E.detector.query??"",onValue:L=>O(R=>{R.jobs[z].detector.query=L.trim()||void 0})}),s.jsx(cn,{label:"Accepted labels",value:(E.detector.labels??[]).join(", "),onValue:L=>O(R=>{R.jobs[z].detector.labels=L.split(",").map(N=>N.trim()).filter(Boolean)})})]})}]})]})}));return s.jsxs(s.Fragment,{children:[s.jsx(T,{open:!0,title:"Regional Detailer Plan",initialGeometry:{width:1040,height:720},minSize:{width:420,height:360},onClose:n,status:w?"Unsaved plan changes":"Plan saved",actions:s.jsx(Cf,{primary:s.jsx(oe,{intent:"primary",disabled:p.jobs.some(E=>!E.region_ids.length),onClick:h,children:"Save plan"}),secondary:s.jsxs(s.Fragment,{children:[s.jsx(oe,{onClick:B,disabled:!u.length,children:"Add job"}),s.jsx(ds,{label:"Detailer Plan",value:{schema:"bv.editor-draft",version:1,type:"detailer-plan",data:p},onImport:E=>{if(E?.schema!=="bv.editor-draft"||E?.version!==1||E?.type!=="detailer-plan"||!E?.data)throw new Error("Draft type or version does not match this editor.");f.replace(Al(E.data,e))}})]}),overflow:[{id:"undo",label:"Undo",disabled:!f.canUndo,onSelect:f.undo},{id:"redo",label:"Redo",disabled:!f.canRedo,onSelect:f.redo},{id:"discard",label:"Discard changes",disabled:!w,onSelect:()=>f.replace(Al(g,e),!0)},{id:"restore",label:"Restore defaults",onSelect:()=>f.commit(dd(e))}]}),children:s.jsxs(pf,{density:"compact",className:"bv-editor-dialog",children:[!t.length&&p.jobs.length>0&&s.jsx(Fr,{tone:"warning",title:"No registered detectors",children:"Jobs can still use their composed region masks. Add detectors in Detector Registry when object detection is required."}),u.length?s.jsx(Ia,{items:M,onReorder:E=>O(z=>{z.jobs=E.map(L=>z.jobs[Number(L.id.slice(4))])}),onRemove:E=>O(z=>{z.jobs.splice(Number(E.slice(4)),1)})}):s.jsx(Ys,{title:"No eligible regions",description:"Enable a region with Detailer or Both usage first."})]})}),s.jsx(gf,{open:!!k,editorName:"Detailer Plan",onKeep:()=>b(null),onDiscard:()=>{const E=k;b(null),E?.()},onSave:()=>{h();const E=k;b(null),E?.()}})]})}const mE=(e,t,r,o,n,i,a,l)=>{yf((c,u)=>m.createElement(vE,{regions:e,detectorIds:t,stored:r,save:o,close:c,activationToken:u,nodeId:n.split(":").slice(1).join(":"),nodes:i,onNavigate:a,currentNode:l}),{key:n})},ws=()=>({schema:"bv.detector_registry_config",version:1,detectors:[]}),Zi=e=>{try{const t=String(e??"").trim()?JSON.parse(String(e)):ws();return{schema:"bv.detector_registry_config",version:1,detectors:Array.isArray(t?.detectors)?t.detectors.flatMap(o=>{const n=String(o?.id??"").trim(),i=String(o?.model_name??"").trim();if(!n||!i)return[];const a=o.provider==="onnx"?"onnx":"ultralytics",l=String(o.sam_model_name??"").trim();return[{id:n,provider:a,model_name:i,...l?{sam_model_name:l,sam_device_mode:["Prefer GPU","CPU"].includes(o.sam_device_mode)?o.sam_device_mode:"AUTO"}:{}}]}):[]}}catch{return ws()}},$c=e=>JSON.stringify(e);function xE({catalog:e,stored:t,save:r,close:o,nodeId:n="",nodes:i=[],onNavigate:a=()=>{},currentNode:l}){const c=m.useMemo(()=>Zi(t),[t]),u=m.useMemo(()=>new Set(c.detectors.map(R=>R.id)),[c]),d=Ks(c),f=d.value,[p,g]=m.useState(()=>$c(c));qs(d);const x=$c(f)!==p,w=bf(),[k,b]=m.useState(null),h=()=>{const R=$c(f);r(R),g(R),d.clear()},v=R=>x?b(()=>R):R(),_=()=>v(o),y=hi(l),T=m.useMemo(()=>R=>s.jsx(xn,{...R,title:`${R.title} · #${n}`,shortTitle:"Registry",menuVisible:y,onMenuVisible:N=>mn(l,N),onClose:_,context:s.jsx(Pa,{label:"Detector Registry Node",value:n,options:i.map(N=>({value:N.id,label:N.label})),onNavigate:(N,A)=>A?v(()=>a(N,!0)):a(N,!1)})}),[l,x,y,n,i,a]),[S,P]=m.useState([]),O=R=>d.commit(N=>{const A=structuredClone(N);return R(A),A}),B=()=>{let R=f.detectors.length+1,N=`detector-${R}`;for(;f.detectors.some(A=>A.id===N);)N=`detector-${++R}`;return N},j=f.detectors.map(R=>R.id.trim()),M=j.find((R,N)=>R&&j.indexOf(R)!==N),E=f.detectors.some(R=>!R.id.trim()||!R.model_name),z=()=>O(R=>{const N=e.ultralytics.length?"ultralytics":"onnx";R.detectors.push({id:B(),provider:N,model_name:e[N][0]??""})}),L=()=>{f.detectors.length?w.confirm({title:"Clear Detector Registry?",message:"Existing Detailer jobs will keep missing references until reassigned.",confirmLabel:"Clear registry",danger:!0,action:()=>d.commit(ws())}):d.commit(ws())};return s.jsxs(s.Fragment,{children:[s.jsx(T,{open:!0,title:"Detector Registry",initialGeometry:{width:1040,height:720},minSize:{width:420,height:360},onClose:o,status:x?"Unsaved registry changes":"Registry saved",actions:s.jsx(Cf,{primary:s.jsx(oe,{intent:"primary",disabled:!!(M||E),onClick:h,children:"Save registry"}),secondary:s.jsxs(s.Fragment,{children:[s.jsx(oe,{onClick:z,children:"Add detector"}),s.jsx(ds,{label:"Detector Registry",value:{schema:"bv.editor-draft",version:1,type:"detector-registry",data:f},onImport:R=>{if(R?.schema!=="bv.editor-draft"||R?.version!==1||R?.type!=="detector-registry"||!R?.data)throw new Error("Draft type or version does not match this editor.");d.replace(Zi(R.data))}})]}),overflow:[{id:"undo",label:"Undo",disabled:!d.canUndo,onSelect:d.undo},{id:"redo",label:"Redo",disabled:!d.canRedo,onSelect:d.redo},{id:"discard",label:"Discard changes",disabled:!x,onSelect:()=>d.replace(Zi(p),!0)},{id:"clear",label:"Clear registry…",onSelect:L}]}),children:s.jsxs(pf,{density:"compact",className:"bv-editor-dialog",children:[M||E?s.jsx(Fr,{tone:"danger",title:"Registry needs attention",children:M?`Detector ID “${M}” is used more than once.`:"Every detector needs a unique ID and a detection model."}):s.jsxs(Fr,{tone:"success",title:"Registry valid",children:[f.detectors.length," detector",f.detectors.length===1?"":"s"," ready to save."]}),s.jsxs("div",{className:"bv-card-list",children:[!f.detectors.length&&s.jsx(Ys,{title:"No detectors configured",description:"Add a detector to make it selectable in Regional Detailer jobs."}),s.jsx(as,{value:S,onValue:P,items:f.detectors.map((R,N)=>({id:`detector-${N}`,title:s.jsxs("span",{className:"bv-detector-summary",children:[s.jsx("strong",{children:R.id||"New detector"}),s.jsx("span",{children:R.provider==="onnx"?"ONNX":"Ultralytics"}),s.jsx("span",{children:R.model_name||"No model selected"}),s.jsx("span",{children:R.id.trim()&&R.model_name?"Ready":"Needs attention"})]}),content:s.jsxs("div",{className:"bv-detector-details",children:[s.jsxs("div",{className:"bv-editor-item-actions",children:[s.jsx(oe,{intent:"ghost",onClick:()=>O(A=>{A.detectors.splice(N+1,0,{...A.detectors[N],id:B()})}),children:"Duplicate"}),s.jsx(oe,{intent:"ghost",className:"bv-subtle-danger",onClick:()=>{const A=()=>O(W=>{W.detectors.splice(N,1)});u.has(R.id)?w.confirm({title:`Remove detector “${R.id}”?`,message:"Existing Detailer jobs will show it as missing until reassigned.",confirmLabel:"Remove detector",danger:!0,action:A}):A()},children:"Remove"})]}),s.jsxs(Go,{children:[s.jsx(cn,{label:"Detector ID",value:R.id,readOnly:u.has(R.id),help:u.has(R.id)?"Stable job reference. Create a new detector instead of renaming it.":"Choose once; the ID becomes immutable after saving.",onValue:A=>O(W=>{W.detectors[N].id=A.trim()})}),s.jsx(qe,{label:"Provider",value:R.provider,options:[{value:"ultralytics",label:"Ultralytics"},{value:"onnx",label:"ONNX"}],onValue:A=>O(W=>{const F=W.detectors[N];F.provider=A,F.model_name=e[F.provider][0]??""})}),s.jsx(qe,{label:"Detection model",value:R.model_name,options:e[R.provider].map(A=>({value:A,label:A})),onValue:A=>O(W=>{W.detectors[N].model_name=A})})]}),s.jsx(as,{value:S,onValue:P,items:[{id:`sam-${N}`,title:R.sam_model_name?"SAM refinement enabled":"Optional SAM refinement",content:s.jsxs(Go,{children:[s.jsx(qe,{label:"SAM model",value:R.sam_model_name??"",options:[{value:"",label:"No SAM refinement"},...e.sam.map(A=>({value:A,label:A}))],onValue:A=>O(W=>{const F=W.detectors[N];F.sam_model_name=A||void 0,A||delete F.sam_device_mode})}),R.sam_model_name&&s.jsx(qe,{label:"Execution device",value:R.sam_device_mode??"AUTO",options:["AUTO","Prefer GPU","CPU"].map(A=>({value:A,label:A})),onValue:A=>O(W=>{W.detectors[N].sam_device_mode=A})})]})}]})]})}))})]})]})}),w.dialog,s.jsx(gf,{open:!!k,editorName:"Detector Registry",onKeep:()=>b(null),onDiscard:()=>{const R=k;b(null),R?.()},onSave:()=>{h();const R=k;b(null),R?.()}})]})}const yE=async(e,t,r,o,n,i,a)=>{const l=await fetch(e.apiURL("/bv_nodepack/detectors/models"));if(!l.ok)throw new Error(`Detector model catalog failed: ${l.status}`);const c=await l.json();yf((u,d)=>m.createElement(xE,{catalog:c,stored:t,save:r,close:u,activationToken:d,nodeId:o.split(":").slice(1).join(":"),nodes:n,onNavigate:i,currentNode:a}),{key:o})},_E=10,wE=(e,t=_E)=>{const r=[...new Set(e.filter(i=>Number.isInteger(i)&&i>=1&&i<=t))],o=r.length?Math.max(...r):0,n=Math.min(t,o+1);return Array.from({length:Math.max(1,n)},(i,a)=>a+1)},kE=new Set(["BV Regional Detailer Mask","BV Regional Detailer Plan","BV Detailer Loop Job Resolver","BV Detector Binding","BV Detector Registry","BV Detailer Loop Detect to SEGS (Impact)","BV Detailer Loop Start","BV Detailer Loop End"]),EE={regional:"regional prompt",detailer_plan:"detailer plan",job_index:"job index",job:"detailer job",job_id:"job ID",job_name:"job name",job_count:"job count",detector_id:"detector ID",detector_count:"detector count",detector_registry:"detector registry",detector_query:"detector query",detector_labels:"detector labels",bbox_detector:"BBOX detector",segm_detector:"segmentation detector",sam_model:"SAM model",has_bbox:"has BBOX",has_segmentation:"has segmentation",has_sam:"has SAM",basic_pipe:"basic pipe",positive:"positive conditioning",negative:"negative conditioning",positive_text:"positive text",negative_text:"negative text",positive_weighted_text:"positive weighted text",negative_weighted_text:"negative weighted text",global_influence:"global influence",background_influence:"background influence",primary_region_influence:"primary region influence",context_regions_json:"context regions",roi_padding:"ROI padding",roi_x:"ROI x",roi_y:"ROI y",roi_width:"ROI width",roi_height:"ROI height",crop_factor:"crop factor",drop_size:"drop size",effective_mask:"effective mask",flow_to_loop_end:"flow to loop end",last_job_index:"last job index",final_image:"final image",current_image:"current image",processed_image:"processed image"},TE={"BV Regional Detailer Mask":{image:"source image",mask:"region mask",summary:"detailer summary"},"BV Regional Detailer Plan":{plan_summary:"plan summary"},"BV Detailer Loop Detect to SEGS (Impact)":{segs:"SEGS"}},Yc=(e,t)=>TE[e]?.[t]??EE[t]??t.split("_").join(" ");function RE({label:e,configured:t,close:r,onSave:o,onDelete:n}){const[i,a]=m.useState(""),[l,c]=m.useState(""),[u,d]=m.useState(!1),f=async p=>{d(!0),c("");try{const g=await p();g?c(g):r()}finally{d(!1)}};return s.jsxs(Da,{open:!0,title:`${e} API Key`,description:"Credentials are stored by the local BV Nodepack backend and are never written into the workflow.",size:"small",onClose:r,footer:s.jsxs(s.Fragment,{children:[s.jsx(oe,{intent:"danger",disabled:!t||u,onClick:()=>f(n),children:"Delete key"}),s.jsx(oe,{intent:"ghost",disabled:u,onClick:r,children:"Cancel"}),s.jsx(oe,{intent:"primary",loading:u,disabled:!i.trim(),onClick:()=>f(()=>o(i)),children:"Save key"})]}),children:[s.jsx(Fr,{tone:t?"info":"warning",children:t?"A key is configured. Enter a new key to replace it.":"No key is configured."}),s.jsx(k0,{label:"API key",value:i,onValue:a}),l&&s.jsx(Fr,{tone:"danger",children:l})]})}let Xc=null;const fd=(e,t=!1)=>((t||!Xc)&&(Xc=fetch(e.apiURL("/bv_nodepack/remote_llm/providers")).then(async r=>{if(!r.ok)throw new Error(await r.text());const o=await r.json();return Array.isArray(o.profiles)?o.profiles:[]})),Xc),Gr=(e,t)=>e.widgets?.find(r=>r.name===t),ks=(e,t,r)=>{const o=t.find(l=>l.label===String(Gr(e,"provider_profile")?.value??""));if(!o)return;const n=Gr(e,"custom_endpoint"),i=Gr(e,"model");if(n&&((!o.allow_custom_endpoint||!String(n.value??"").trim())&&(n.value=o.endpoint),n.disabled=!1,n.element&&(n.element.readOnly=!o.allow_custom_endpoint),n.label=o.allow_custom_endpoint?"custom endpoint":"endpoint (managed)",!n.__bvRemoteEndpointHooked)){n.__bvRemoteEndpointHooked=!0;const l=n.callback;n.callback=function(){const c=l?.apply(this,arguments),u=t.find(d=>d.label===String(Gr(e,"provider_profile")?.value??""));return u&&!u.allow_custom_endpoint&&(n.value=u.endpoint),c}}if(i&&r&&r!==o.label){const l=t.find(u=>u.label===r),c=String(i.value??"").trim();(!c||c===l?.default_model)&&(i.value=o.default_model)}const a=Gr(e,"configure_api_key");a&&(a.disabled=o.auth_mode==="none",a.label=o.auth_mode==="none"?"✓ No API key required":`${o.configured?"✓":"⚠"} Configure ${o.label} API Key`),e.setDirtyCanvas?.(!0,!0)},SE=(e,t,r)=>{const o=r.find(n=>n.label===String(Gr(t,"provider_profile")?.value??""))??r[0];o&&o.auth_mode!=="none"&&yf(n=>m.createElement(RE,{label:o.label,configured:o.configured,close:n,onSave:async i=>{const a=await fetch(e.apiURL("/bv_nodepack/remote_llm/api_key"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({profile_id:o.id,api_key:i})});if(!a.ok)return(await a.json().catch(()=>null))?.error??"Could not save API key.";o.configured=!0,ks(t,r),fd(e,!0)},onDelete:async()=>{if(!(await fetch(e.apiURL(`/bv_nodepack/remote_llm/api_key/${encodeURIComponent(o.id)}`),{method:"DELETE"})).ok)return"Could not delete API key.";o.configured=!1,ks(t,r),fd(e,!0)}}))},Wh=(e,t)=>{fd(t).then(r=>{let o=String(Gr(e,"provider_profile")?.value??"");const n=Gr(e,"provider_profile");if(n&&!n.__bvRemoteLLMHooked){n.__bvRemoteLLMHooked=!0;const a=n.callback;n.callback=function(l){const c=a?.apply(this,arguments);return ks(e,r,o),o=l,c}}let i=Gr(e,"configure_api_key");i||(i=e.addWidget("button","configure_api_key",null,()=>SE(t,e,r),{serialize:!1}),i.serialize=!1),ks(e,r)}).catch(r=>console.error("BV Remote LLM settings unavailable",r))};function LE({collectors:e,collectorId:t,resourceId:r,resolved:o,debugVisible:n,onCollector:i,onResource:a,onDebug:l}){return s.jsxs("div",{className:"bv-m0-picker-panel",children:[s.jsx(Xs,{label:"Hidden link debug",value:n,trueLabel:"Visible",falseLabel:"Hidden",onValue:l}),s.jsx(Gs,{collectors:e,collectorId:t,resourceId:r,resolved:o,onCollector:i,onResource:a})]})}function CE({collectors:e,bindings:t,debugVisible:r,onBinding:o,onAdd:n,onRemove:i,onDebug:a}){return s.jsxs("div",{className:"bv-m0-picker-panel bv-m0-multi-picker",children:[s.jsx(Xs,{label:"Native fan-in debug",value:r,trueLabel:"Dashed links",falseLabel:"Hidden",onValue:a}),t.map((l,c)=>s.jsxs("section",{className:"bv-m0-binding",children:[s.jsxs("header",{children:[s.jsxs("strong",{children:["Binding ",c+1]}),s.jsx(oe,{type:"button",iconOnly:!0,icon:"×",onClick:()=>i(c),"aria-label":`Remove binding ${c+1}`})]}),s.jsx(Gs,{collectors:e,collectorId:l.collector_id,resourceId:l.resource_id,resolved:l.resolved,onCollector:u=>{const d=e.find(f=>f.id===u)?.resources[0];o(c,u,d?.id??"")},onResource:u=>o(c,l.collector_id,u)})]},l.binding_id)),s.jsx(oe,{type:"button",className:"bv-m0-add-binding",disabled:t.length>=20,onClick:n,children:"Add collector binding"})]})}const Ur="BV_RUNTIME_RESOURCE_PROVIDER_M0",si="resource_provider",oc=20;function Es(e){return e?.findIndex(t=>t?.name===si||t?.type===Ur)??-1}function Ff(e){let t=Es(e.outputs);t<0&&e.addOutput&&(e.addOutput(si,Ur),t=Es(e.outputs));const r=e.outputs?.[t];return r&&(r.name=si,r.type=Ur),t}function Lx(e){let t=Es(e.inputs);t<0&&e.addInput&&(e.addInput(si,Ur),t=Es(e.inputs));const r=e.inputs?.[t];return r&&(r.name=si,r.type=Ur),t}function NE(e){return`${si}_${e}`}function nc(e,t=oc){const r=[];for(let o=1;o<=t;o++){const n=NE(o);let i=e.inputs?.findIndex(l=>l?.name===n)??-1;i<0&&e.addInput&&(e.addInput(n,Ur),i=e.inputs?.findIndex(l=>l?.name===n)??-1);const a=e.inputs?.[i];a&&(a.name=n,a.type=Ur,a.__bvM0ProviderOrdinal=o),r.push(i)}return r}const OE=(e,t)=>t==null?null:e?._links?.get?.(t)??e?.links?.get?.(t)??e?.links?.[t]??null,ME=e=>[...e?._links?.values?.()??[],...e?.links?.values?.()??Object.values(e?.links??{})],Hh=(e,t)=>{if(!t||String(t.target_id)!==String(e.id))return null;const r=e.graph?.getNodeById?.(t.origin_id),o=r?.outputs?.[Number(t.origin_slot)];return r?.graph===e.graph&&(r.__bvM0ResourceProvider===!0||t.type===Ur||o?.type===Ur)?r:null};function AE(e,t,r){const o=e.inputs?.find(a=>a.name===t),n=OE(e.graph,o?.link),i=Hh(e,n);if(i&&(!r||r(i)))return i;if(!r)return null;for(const a of ME(e.graph)){const l=Hh(e,a);if(l&&r(l))return l}return null}const DE="BV M0 Fake Resource Collector",IE="BV M0 Fake Resource Consumer",Cx="BV M0 Fake Multi Resource Consumer",Nx=Ur,jE="a1bdeceb-76ae-4e45-ae36-e5c2664819ce",BE="d97a4268-c02c-42a3-8793-8e578e12e12c",De=(e,t)=>e?.widgets?.find(r=>r.name===t),Gc=e=>{e&&(e.type="converted-widget",e.hidden=!0,e.computeSize=()=>[0,-4],e.serializeValue=()=>e.value)},Kc=(e,t)=>(e&&!String(e.value??"").trim()&&(e.value=t??crypto.randomUUID()),String(e?.value??"")),qc=()=>{let e=0;const t=()=>{const r=ct().canvas;r?Bf(r):e++<40&&setTimeout(t,50)};t()};function PE(e){const t=De(e,"collector_id"),r=De(e,"resource_a_id"),o=De(e,"resource_b_id");if(!t||!r||!o||!e.graph||!(e.graph._nodes??[]).find(a=>a!==e&&a.__bvM0ResourceProvider===!0&&String(De(a,"collector_id")?.value??"")===String(t.value??"")))return;const i={collector:{[String(t.value)]:crypto.randomUUID()},resources:{[String(r.value)]:crypto.randomUUID(),[String(o.value)]:crypto.randomUUID()}};t.value=i.collector[String(t.value)],r.value=i.resources[String(r.value)],o.value=i.resources[String(o.value)],e.__bvM0IdRemap=i}function ic(e,t,r=""){return AE(e,t,r?o=>String(De(o,"collector_id")?.value??"")===r:void 0)}function pn(e){return ic(e,"resource_provider",String(De(e,"collector_id")?.value??""))}function Fa(e,t){const r=hn(e)[t];return ic(e,`resource_provider_${t+1}`,r?.collector_id??"")}function $h(e){const t=pn(e),r=t?.__bvM0IdRemap;if(!r)return;const o=De(e,"collector_id"),n=De(e,"resource_id");o&&r.collector[String(o.value)]&&(o.value=r.collector[String(o.value)]),n&&r.resources[String(n.value)]&&(n.value=r.resources[String(n.value)])}function Sa(e){return(e.graph?._nodes??[]).filter(t=>t.__bvM0ResourceProvider===!0&&t.graph===e.graph).map(t=>({id:String(De(t,"collector_id")?.value??""),label:String(t.title||`Collector #${t.id}`),resources:[{id:String(De(t,"resource_a_id")?.value??""),label:"Alpha"},{id:String(De(t,"resource_b_id")?.value??""),label:"Beta"}],node:t})).filter((t,r,o)=>t.id&&o.findIndex(n=>n.id===t.id)===r)}function yo(e){if(!e?.__bvM0ResourceProvider)return;const t=e.graph?._nodes??[],r=e.outputs?.find(n=>n.type===Nx),o=t.some(n=>!!n.properties?.bvM0DebugVisible&&(pn(n)===e||n.inputs?.some((i,a)=>Fa(n,a)===e)));r&&(r.hidden=!0,r.__bvM0VisualHidden=!o,r.__bvM0PortHidden=!0,r.__bvM0ResourceSlot=!0),Pf(e,"collector",o)}function hn(e){const t=De(e,"resource_bindings");if(!t)return[];try{const r=JSON.parse(String(t.value??"[]"));return Array.isArray(r)?r.slice(0,oc).map(o=>({binding_id:String(o.binding_id||crypto.randomUUID()),collector_id:String(o.collector_id||""),resource_id:String(o.resource_id||""),resolved:!1})):[]}catch{return[]}}function Yn(e,t){const r=De(e,"resource_bindings");r&&(r.value=JSON.stringify(t.map(({binding_id:o,collector_id:n,resource_id:i})=>({binding_id:o,collector_id:n,resource_id:i}))))}function zE(e){const t=hn(e),r=new Set(t.map(n=>n.binding_id));if((e.graph?._nodes??[]).some(n=>n!==e&&n.type===Cx&&hn(n).some(i=>r.has(i.binding_id)))){for(const n of t)n.binding_id=crypto.randomUUID();Yn(e,t)}}function ul(e){const t=hn(e);let r=!1;t.forEach((o,n)=>{const i=Fa(e,n)?.__bvM0IdRemap;if(!i)return;const a=i.collector[o.collector_id],l=i.resources[o.resource_id];a&&(o.collector_id=a,r=!0),l&&(o.resource_id=l,r=!0)}),r&&Yn(e,t)}function Ox(e,t){return["resource_a_id","resource_b_id"].some(r=>String(De(e,r)?.value??"")===t)}function Yh(e){const t=De(e,"collector_id"),r=De(e,"resource_id");if(!t||!r)return;const o=ic(e,"resource_provider",String(t.value??""));if(!!o&&String(t.value??"")===String(De(o,"collector_id")?.value??"")&&Ox(o,String(r.value??"")))return;t.value="",r.value="";const i=e.inputs?.findIndex(a=>a.name==="resource_provider")??-1;i>=0&&e.inputs?.[i]?.link!=null&&e.disconnectInput?.(i)}function Jc(e){const t=hn(e),r=nc(e);let o=!1;t.forEach((n,i)=>{const a=ic(e,`resource_provider_${i+1}`,n.collector_id);if(!!a&&Ox(a,n.resource_id))return;n.collector_id="",n.resource_id="",o=!0;const c=r[i];c>=0&&e.inputs?.[c]?.link!=null&&e.disconnectInput?.(c)}),o&&Yn(e,t)}function Ts(e,t,r=!0){e.properties??(e.properties={}),e.properties.bvM0DebugVisible=t;const o=(e.inputs??[]).map((n,i)=>({input:n,index:i})).filter(({input:n})=>String(n.name??"").startsWith("resource_provider_"));e.__bvM0FanInAnchorSlot=t?o[0]?.index:void 0;for(const{input:n}of o)n.hidden=!0,n.__bvM0ResourceSlot=!0,n.__bvM0VisualHidden=!t,n.__bvM0PortHidden=!0,n.label="";Pf(e,"consumer",t);for(let n=0;n=0&&e.inputs?.[n]?.link!=null&&e.disconnectInput?.(n);const a=Sa(e).find(c=>c.id===r)?.node,l=a?Ff(a):-1;a&&n>=0&&l>=0&&a.connect(l,e,n),Ts(e,!!e.properties?.bvM0DebugVisible),yo(i)}function La(e,t){if(!(t.parentElement?.style.position==="fixed")){t.style.transform="",t.style.maxHeight="",t.style.overflowY="";return}const o=(e.inputs??[]).filter(n=>n.__bvM0ResourceSlot||n.type===Nx).length;t.style.transform=`translateY(-${o*20}px)`,t.style.maxHeight=`${Math.max(120,Number(e.size?.[1]??200)-40)}px`,t.style.overflowY="auto"}function Mx(e,t){[0,50,150,300].forEach(r=>setTimeout(()=>La(e,t),r))}function dl(e){if(!De(e,"resource_bindings"))return;let r=e.__bvM0PickerHost;if(!r){r=document.createElement("div"),r.className="bv-ui bv-m0-picker-host",r.style.position="relative",r.style.zIndex="1",e.__bvM0PickerHost=r;const n=e.addDOMWidget?.("bv_multi_resource_picker","div",r,{serialize:!1,getMinHeight:()=>Math.max(150,78+hn(e).length*124),onDraw:()=>La(e,r),afterResize:()=>La(e,r)});n&&(n.serialize=!1)}e.__bvM0PickerRoot??(e.__bvM0PickerRoot=ea.createRoot(r));const o=()=>{const n=Sa(e),i=hn(e).map((a,l)=>{const c=Fa(e,l);return{...a,resolved:!!c&&String(De(c,"collector_id")?.value??"")===a.collector_id}});e.__bvM0PickerRoot.render(s.jsx(CE,{collectors:n,bindings:i,debugVisible:!!e.properties?.bvM0DebugVisible,onDebug:a=>{Ts(e,a),o()},onBinding:(a,l,c)=>{i[a]={...i[a],collector_id:l,resource_id:c},Yn(e,i),Xh(e,a,l),o()},onAdd:()=>{i.length>=oc||(i.push({binding_id:crypto.randomUUID(),collector_id:"",resource_id:"",resolved:!1}),Yn(e,i),o())},onRemove:a=>{const l=nc(e),c=l[a];c>=0&&e.inputs?.[c]?.link!=null&&e.disconnectInput?.(c),i.splice(a,1),Yn(e,i);for(let d=a;d=0&&e.inputs?.[u]?.link!=null&&e.disconnectInput?.(u),o()}}))};o(),Ts(e,!!e.properties?.bvM0DebugVisible,!1),Mx(e,r)}function Zc(e,t){if(e.__bvM0DomRefresh)return;const r=()=>{setTimeout(t,0),setTimeout(t,100)};e.__bvM0DomRefresh=r,Jr().addEventListener("executed",r),Jr().addEventListener("graphChanged",r);const o=e.onRemoved;e.onRemoved=function(){return Jr().removeEventListener("executed",r),Jr().removeEventListener("graphChanged",r),o?.apply(this,arguments)}}function pd(e,t,r=!0){e.properties??(e.properties={}),e.properties.bvM0DebugVisible=t;const o=e.inputs?.find(n=>n.name==="resource_provider");o&&(o.hidden=!0,o.__bvM0VisualHidden=!t,o.__bvM0PortHidden=!0,o.__bvM0ResourceSlot=!0,o.label=""),Pf(e,"consumer",t),yo(pn(e)),vx(e.graph),t&&bx(e.graph?.list_of_graphcanvas?.[0]??ct().canvas),r&&e.setDirtyCanvas?.(!0,!0)}function FE(e,t){const r=pn(e),o=Lx(e);o>=0&&e.inputs?.[o]?.link!=null&&e.disconnectInput?.(o);const n=Sa(e).find(a=>a.id===t)?.node,i=n?Ff(n):-1;n&&o>=0&&i>=0&&n.connect(i,e,o),pd(e,!!e.properties?.bvM0DebugVisible),yo(r)}function fl(e){const t=De(e,"collector_id"),r=De(e,"resource_id");if(!t||!r)return;let o=e.__bvM0PickerHost;if(!o){o=document.createElement("div"),o.className="bv-ui bv-m0-picker-host",o.style.position="relative",o.style.zIndex="1",e.__bvM0PickerHost=o;const i=e.addDOMWidget?.("bv_resource_picker","div",o,{serialize:!1,getMinHeight:()=>150,onDraw:()=>La(e,o),afterResize:()=>La(e,o)});i&&(i.serialize=!1)}e.__bvM0PickerRoot??(e.__bvM0PickerRoot=ea.createRoot(o));const n=()=>{const i=pn(e),a=String(De(i,"collector_id")?.value??"");e.__bvM0PickerRoot.render(s.jsx(LE,{collectors:Sa(e),collectorId:String(t.value??""),resourceId:String(r.value??""),resolved:!!i&&a===String(t.value??""),debugVisible:!!e.properties?.bvM0DebugVisible,onDebug:l=>{pd(e,l),n()},onCollector:l=>{t.value=l;const c=Sa(e).find(u=>u.id===l)?.resources[0];r.value=c?.id??"",FE(e,l),n()},onResource:l=>{r.value=l,n()}}))};n(),pd(e,!!e.properties?.bvM0DebugVisible,!1),Mx(e,o)}function UE(e,t){if(t.name===DE){const r=e.prototype.onNodeCreated,o=e.prototype.onConfigure,n=function(){qc(),this.__bvM0ResourceProvider=!0,Ff(this),Kc(De(this,"collector_id")),Kc(De(this,"resource_a_id"),jE),Kc(De(this,"resource_b_id"),BE),PE(this),["collector_id","resource_a_id","resource_b_id"].forEach(i=>Gc(De(this,i))),Zc(this,()=>yo(this)),yo(this)};return e.prototype.onNodeCreated=function(){const i=r?.apply(this,arguments);return queueMicrotask(()=>n.call(this)),i},e.prototype.onConfigure=function(){const i=o?.apply(this,arguments);return queueMicrotask(()=>n.call(this)),i},!0}if(t.name===IE){const r=e.prototype.onNodeCreated,o=e.prototype.onConfigure,n=e.prototype.onConnectionsChange,i=function(){qc(),this.__bvM0ResourceConsumer=!0,Lx(this),$h(this),Yh(this),["collector_id","resource_id"].forEach(a=>Gc(De(this,a))),Zc(this,()=>fl(this)),fl(this),setTimeout(()=>fl(this),0)};return e.prototype.onNodeCreated=function(){const a=r?.apply(this,arguments);return queueMicrotask(()=>i.call(this)),a},e.prototype.onConfigure=function(){const a=o?.apply(this,arguments);return queueMicrotask(()=>i.call(this)),a},e.prototype.onConnectionsChange=function(){const a=pn(this),l=n?.apply(this,arguments);return queueMicrotask(()=>{$h(this),Yh(this),fl(this),yo(a),yo(pn(this))}),l},!0}if(t.name===Cx){const r=e.prototype.onNodeCreated,o=e.prototype.onConfigure,n=e.prototype.onConnectionsChange,i=function(){qc(),this.__bvM0ResourceConsumer=!0,nc(this),zE(this),ul(this),Jc(this),Gc(De(this,"resource_bindings")),Zc(this,()=>{ul(this),dl(this)}),dl(this),[0,50,150].forEach(a=>setTimeout(()=>{ul(this),Jc(this),dl(this)},a))};return e.prototype.onNodeCreated=function(){const a=r?.apply(this,arguments);return queueMicrotask(()=>i.call(this)),a},e.prototype.onConfigure=function(){const a=o?.apply(this,arguments);return queueMicrotask(()=>i.call(this)),a},e.prototype.onConnectionsChange=function(){const a=n?.apply(this,arguments);return queueMicrotask(()=>{ul(this),Jc(this),Ts(this,!!this.properties?.bvM0DebugVisible,!1),dl(this)}),a},!0}return!1}const VE=(e,t)=>e?.widgets?.find(r=>r.name===t),WE=["replace","merge","subtract","clear"].map(e=>({value:e,label:e[0].toUpperCase()+e.slice(1)}));function HE({open:e,node:t,onClose:r}){const[o,n]=m.useState(()=>ys(t)),i=hi(t);if(m.useEffect(()=>{e&&t&&n(ys(t))},[t,e]),!t)return null;const a=li(t).filter(g=>g.resources.length>0),l=Kk(t),c=ud(t,o),u=String(VE(t,"operation")?.value??"replace"),d=o.version===2?o.steps??[]:o.entries.flatMap(g=>g.targets.map(x=>({id:crypto.randomUUID(),operation:u,target:x,entries:[{...g,targets:[x]}]}))),f=(g,x=o.collector_id)=>{n(bi(t,{version:2,collector_id:x,entries:[],steps:g}))},p=d.map((g,x)=>{const w=jk(g.target),k=l.find(b=>b.value===w)?.label??"Missing region";return{id:g.id,title:`Step ${x+1}: ${k}`,description:g.operation,content:s.jsxs("div",{className:"bv-ui-stack",children:[s.jsx(qe,{label:"Target",value:w,options:l,onValue:b=>{const h=l.find(v=>v.value===b)?.target;h&&f(d.map(v=>v.id===g.id?{...v,target:h,entries:v.entries.map(_=>({..._,targets:[h]}))}:v))}}),s.jsx(qe,{label:"Operation",value:g.operation,options:WE,onValue:b=>f(d.map(h=>h.id===g.id?{...h,operation:b}:h))}),g.operation!=="clear"&&g.entries.map((b,h)=>b.source.kind==="external"?s.jsxs("section",{className:"bv-lora-v3-stack-row",children:[s.jsxs("strong",{children:["LoRA Stack ",h+1]}),s.jsx(Gs,{collectors:a,collectorId:o.collector_id??"",resourceId:b.source.resource_id,resolved:c,onCollector:v=>n(wx(t,o,v)),onResource:v=>n(kx(t,o,b.id,v))}),s.jsx(oe,{intent:"ghost",iconOnly:!0,"aria-label":`Remove LoRA Stack ${h+1}`,onClick:()=>f(d.map(v=>v.id===g.id?{...v,entries:v.entries.filter(_=>_.id!==b.id)}:v)),children:"×"})]},b.id):null),g.operation!=="clear"&&s.jsx(oe,{intent:"secondary",disabled:!a.length,onClick:()=>{const b=a.find(v=>v.id===o.collector_id)??a[0],h=b?.resources[0];h&&f(d.map(v=>v.id===g.id?{...v,entries:[...v.entries,{id:crypto.randomUUID(),source:{kind:"external",resource_id:h.id},targets:[v.target]}]}:v),b.id)},children:"Add LoRA stack"})]})}});return s.jsx(xn,{open:e,title:"BV Regional LoRA Editor",shortTitle:"Regional LoRA",menuVisible:i,onMenuVisible:g=>mn(t,g),initialGeometry:{width:620,height:520},minSize:{width:420,height:320},onClose:r,children:s.jsxs("div",{className:"bv-ui bv-lora-v3-window",children:[s.jsx(oe,{intent:"secondary",disabled:!l.length,onClick:()=>f([...d,{id:crypto.randomUUID(),operation:"merge",target:l[0].target,entries:[]}]),children:"Add step"}),s.jsx(Ia,{items:p,initialExpanded:p.map(g=>g.id),onReorder:g=>{const x=new Map(d.map(w=>[w.id,w]));f(g.map(w=>x.get(w.id)).filter(Boolean))},onRemove:g=>f(d.filter(x=>x.id!==g))})]})})}const Uf="BV Control Center",Rs=0,$E=2,YE=4,Pi="bvControlBaseMode",XE="bv-open-control-rack",Ax=320,GE=48,Gh="bv_control_conflict_status",Qc=new Set;function KE(e){return e==="activate"?{mode:Rs,priority:3}:e==="mute"?{mode:$E,priority:2}:{mode:YE,priority:1}}function Kh(e){const t=new Set(is(ct()).map(r=>r.id));return{...e,controls:e.controls.map(r=>({...r,assignments:r.assignments.map(o=>({...o,unresolved:!t.has(o.groupId)}))}))}}function qE(e){return Hw(e,t=>_v(t,Uf))}function JE(e){for(const o of Qc){const n=o.properties?.[Pi];o.mode=e.forceActive?Rs:typeof n=="number"?n:o.mode,o.properties&&delete o.properties[Pi],o.setDirtyCanvas?.(!0,!0)}Qc.clear();const t=new Map(is(ct()).map(o=>[o.id,o])),r=new Map;for(const o of e.controls)if(o.enabled)for(const n of o.assignments){const i=t.get(n.groupId);if(i)for(const a of qE(i)){const l=KE(n.action),c=r.get(a);(!c||l.priority>c.priority)&&r.set(a,l)}}for(const[o,n]of r)o.properties??(o.properties={}),typeof o.properties[Pi]!="number"&&(o.properties[Pi]=typeof o.mode=="number"?o.mode:Rs),o.mode=n.mode,Qc.add(o),o.setDirtyCanvas?.(!0,!0)}function ZE(e,t){const r=e.inputs[t],o=e.widgets?.find(n=>n.name===r.name);o&&e.removeWidget?.(o),r.link!=null&&e.disconnectInput(t),e.removeInput(t)}function QE(e,t){const r=wv(t),o=$w(r);let n=e.widgets?.find(i=>i.name===Gh);n||(n=e.addCustomWidget({name:Gh,type:"custom",value:o,y:0,options:{},serialize:!1,computeSize:()=>[0,24],computeLayoutSize:()=>({minHeight:24,maxHeight:24,minWidth:Ax}),mouse:()=>!1,draw(i,a,l,c,u){i.save(),i.beginPath(),i.rect(10,c,Math.max(0,l-20),u),i.clip(),i.fillStyle=this.__bvHasConflict?"#ffbd66":"#8fc9a3",i.font="12px sans-serif",i.textBaseline="middle",i.fillText(String(this.value??""),14,c+u/2),i.restore()}})),n.value=o,n.__bvHasConflict=r.length>0,n.tooltip=r.map(i=>`${i.groupPath}: ${i.winnerAction} wins`).join(` +`)}function Dx(e,t){e.mode=Rs,e.properties&&delete e.properties[Pi];let r=e.widgets?.find(c=>c.name==="configure_control_center");r||(r=e.addWidget("button","configure_control_center",null,()=>window.dispatchEvent(new Event(XE)),{serialize:!1})),r.label="Configure Control Center",r.serialize=!1;const o=new Set(t.controls.map(c=>`bvcc_${c.id}`));for(let c=e.inputs.length-1;c>=0;c--){const u=e.inputs[c];u.name.startsWith("bvcc_")&&!o.has(u.name)&&ZE(e,c)}for(const c of t.controls){const u=`bvcc_${c.id}`,d=g=>{const x=sn(),w={...x,controls:x.controls.map(k=>k.id===c.id?{...k,enabled:!!g}:k)};ff(w)};let f=e.inputs.find(g=>g.name===u);f||(f=e.addInput(u,"BOOLEAN",{label:c.name,nameLocked:!0,widget:{name:u}})),f.label=c.name;let p=e.widgets?.find(g=>g.name===u);p&&!p.__bvControlCallbackBound&&(e.removeWidget?.(p),p=null),p||(p=e.addWidget("toggle",u,c.enabled,d,{on:"ACTIVE",off:"INACTIVE"})),p.__bvControlCallbackBound=!0,p.label=c.name,p.value=c.enabled,p.serialize=!0,p.options??(p.options={}),p.options.on="ACTIVE",p.options.off="INACTIVE",p.callback=d,f.widget={name:u}}QE(e,t);const n=e.widgets?.find(c=>c.name==="bv_control_config_json");n&&(n.value=JSON.stringify(Kh(t)),n.type="converted-widget",n.draw=()=>{},n.hidden=!0,n.options??(n.options={}),n.options.hidden=!0,n.element&&(n.element.style.display="none"),n.computeSize=()=>[0,-4],n.serializeValue=()=>JSON.stringify(Kh(sn()))),e.serialize_widgets=!0;const i=e.size??[0,0],a=e.computeSize?.()??i,l=Math.max(Ax,(a[0]??0)+GE);e.setSize?.([Math.max(i[0]??0,l),a[1]??i[1]??0]),e.setDirtyCanvas?.(!0,!0)}function Ix(e=sn()){for(const{node:t}of Vw(ct(),Uf))Dx(t,e);JE(e)}window.addEventListener(ri,e=>Ix(e.detail));ct().registerExtension({name:"bv_nodepack.control_center",async beforeRegisterNodeDef(e,t){if(t.name!==Uf)return;const r=e.prototype.onNodeCreated;e.prototype.onNodeCreated=function(){const o=r?.apply(this,arguments);return Dx(this,sn()),o}},afterConfigureGraph(){Ix()}});const rt=ct(),wr=Jr();ik(e=>rt.ui?.settings?.setSettingValue?.(Bm,e));ak(e=>rt.ui?.settings?.setSettingValue?.(Pm,e));nk(e=>rt.ui?.settings?.setSettingValue?.(zm,e));j0(e=>rt.ui?.settings?.setSettingValue?.(wf,e));const hd="bv-open-control-rack",Xn="bv-open-regional-editor",Qi="bv-open-regional-quick-edit",_o="bv-regional-document-changed",qh="bv-nodepack-styles",jx="BV.DebugBridge.Enabled";let en=!1,pl=null;const eT=()=>{const e=rt.extensionManager?.workflow?.activeWorkflow??rt.workflowManager?.activeWorkflow;return String(e?.filename??e?.path??"Current workflow")},Bx=async e=>{en=!!e;const t=await fetch(wr.apiURL("/bv_nodepack/debug/session"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({enabled:en})});if(!t.ok)throw new Error(`BV Debug Bridge session failed: ${t.status} ${await t.text()}`)},Px=async()=>{if(!en)return!1;const e=await rt.graphToPrompt(),t=await fetch(wr.apiURL("/bv_nodepack/debug/snapshot"),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({prompt:e.output,workflow_name:eT()})});if(!t.ok)throw new Error(`BV Debug Bridge snapshot failed: ${t.status} ${await t.text()}`);return!0},Ss=()=>{en&&(pl!=null&&window.clearTimeout(pl),pl=window.setTimeout(()=>{pl=null,Px().catch(e=>console.error(e))},600))},Br=e=>{e.type="converted-widget",e.hidden=!0,e.computeSize=()=>[0,-4],e.element&&(e.element.style.display="none")},tT=(e,t,r)=>{if(!t||!r||t===r)return;const o=e.widgets?.indexOf(t)??-1;if(o<0)return;e.widgets.splice(o,1);const n=e.widgets.indexOf(r);e.widgets.splice(n<0?e.widgets.length:n,0,t)},rT=e=>{const t=[e.widgets?.find(r=>r.name==="region_selector"),...e.__bvDetailerContextWidgets??[]].filter(Boolean);for(const r of t){const o=e.widgets?.indexOf(r)??-1;o>=0&&e.widgets.splice(o,1),r.onRemove?.()}e.__bvDetailerContextWidgets=[]},ac=e=>{const t=e.inputs?.find(a=>a.name==="regional"||a.name==="regional_prompt"),r=e.graph??rt.graph,o=t?.link==null?null:r?.links?.[t.link]??r?._links?.get?.(t.link),n=o?r?.getNodeById?.(o.origin_id):null;if(n?.type!=="BV Regional Prompt")return null;const i=n.widgets?.find(a=>a.name==="regional_json")?.value;try{return un(i)}catch{return null}},oT=e=>{const t=e.graph??rt.graph,r=e.inputs?.find(l=>l.name==="detector_registry"),o=r?.link==null?null:t?.links?.[r.link]??t?._links?.get?.(r.link),n=o?t?.getNodeById?.(o.origin_id):null;if(n?.type!=="BV Detector Registry")return[];const i=n.widgets?.find(l=>l.name==="config_json")?.value,a=Zi(i).detectors.map(l=>l.id);for(const l of n.inputs??[]){if(!String(l.name).startsWith("external_detector_")||l.link==null)continue;const c=t?.links?.[l.link]??t?._links?.get?.(l.link),u=c?t?.getNodeById?.(c.origin_id):null,d=String(u?.widgets?.find(f=>f.name==="detector_id")?.value??"").trim();d&&a.push(d)}return[...new Set(a)].sort((l,c)=>l.localeCompare(c))},eu=e=>{const t=/^external_detector_(\d+)$/,r=(e.inputs??[]).flatMap(n=>{const i=t.exec(String(n.name));return i&&n.link!=null?[Number(i[1])]:[]}),o=new Set(wE(r));for(let n=(e.inputs?.length??0)-1;n>=0;n--){const i=e.inputs[n],a=t.exec(String(i.name));a&&i.link==null&&!o.has(Number(a[1]))&&e.removeInput(n)}for(const n of[...o].sort((i,a)=>i-a)){const i=`external_detector_${n}`;e.inputs?.some(a=>a.name===i)||e.addInput(i,"BV_DETECTOR_BINDING",{label:`external detector ${n}`,nameLocked:!0})}e.setDirtyCanvas?.(!0,!0)},Jh=(e,t)=>{for(const r of e.inputs??[])r.label=Yc(t,String(r.name));for(const r of e.outputs??[])r.label=Yc(t,String(r.name));for(const r of e.widgets??[])String(r.name).startsWith("configure_")||(r.label=Yc(t,String(r.name)));e.setDirtyCanvas?.(!0,!0)},gd=e=>{const t=e.widgets?.find(i=>i.name==="config_json"),r=e.widgets?.find(i=>i.name==="configure_detailer_plan");if(!t||!r)return;Br(t);const o=ac(e),n=o?Al(t.value,o.regions).jobs.length:0;r.label=o?`Configure Detailer Plan · ${n} Job${n===1?"":"s"}`:"Connect a BV Regional Prompt",r.disabled=!o,e.setDirtyCanvas?.(!0,!0)},Zh=e=>{const t=e.widgets?.find(o=>o.name==="config_json");if(!t)return;Br(t);let r=e.widgets?.find(o=>o.name==="configure_detailer_plan");r||(r=e.addWidget("button","configure_detailer_plan",null,()=>{const o=ac(e);o&&(_r("detailer",Ne(e)),mE(o.regions,oT(e),t.value,n=>{t.value=n,gd(e),e.graph?.setDirtyCanvas?.(!0,!0)},`detailer-plan:${Ne(e)}`,Ct("BV Regional Detailer Plan").filter(vn).map(n=>({id:Ne(n),label:`${n.title||"BV Regional Detailer Plan"} · #${n.id}`})),(n,i)=>{const a=Ct("BV Regional Detailer Plan").find(c=>Ne(c)===n),l=a?.widgets?.find(c=>c.name==="configure_detailer_plan");l&&_f(`detailer-plan:${Ne(e)}`,`detailer-plan:${Ne(a)}`,()=>l.callback?.(),i)},e))},{serialize:!1}),r.serialize=!1),gd(e)},Qh=e=>{try{const t=JSON.parse(String(e??"[]"));return Array.isArray(t)?t.filter(r=>r&&typeof r.region_id=="string").map(r=>({region_id:r.region_id,influence:Math.max(0,Math.min(2,Number.isFinite(+r.influence)?+r.influence:1))})):[]}catch{return[]}},Vf=e=>{if(e.comfyClass!=="BV Regional Detailer Mask"&&e.type!=="BV Regional Detailer Mask")return;const t=e.widgets?.find(d=>d.name==="context_regions_json");if(!t)return;Br(t);const r=ac(e);if(!r)return;for(const d of e.__bvDetailerContextWidgets??[]){const f=e.widgets?.indexOf(d)??-1;f>=0&&e.widgets.splice(f,1),d.onRemove?.()}const o=String(e.widgets?.find(d=>d.name==="region")?.value??""),n=(r?.regions??[]).filter(d=>d.enabled!==!1&&d.id!==o),i=new Set,a=Qh(t.value).filter(d=>d.region_id!==o&&!i.has(d.region_id)&&!!i.add(d.region_id));t.value=JSON.stringify(a);const l=[],c=d=>{t.value=JSON.stringify(d),queueMicrotask(()=>Vf(e))};for(let d=0;d<=a.length;d++){const f=a[d],p=new Set(a.filter((k,b)=>b!==d).map(k=>k.region_id)),g=Ex(n.filter(k=>!p.has(k.id))),x=f&&!g.some(k=>k.id===f.region_id)?`Missing region · ${f.region_id.slice(0,8)}`:null,w=e.addWidget("combo",`context_region_${d+1}`,f?g.find(k=>k.id===f.region_id)?.label??x??"None":"None",k=>{if(k==="None")return c(a.slice(0,d));const b=g.find(v=>v.label===k);if(!b)return;const h=a.slice();h[d]={region_id:b.id,influence:f?.influence??1},c(h)},{values:["None",...x?[x]:[],...g.map(k=>k.label)],serialize:!1});if(w.label=`context region ${d+1}`,w.serialize=!1,l.push(w),f){const k=e.addWidget("number",`context_influence_${d+1}`,f.influence,b=>{const h=Qh(t.value);h[d]&&(h[d].influence=Math.max(0,Math.min(2,+b))),t.value=JSON.stringify(h)},{min:0,max:2,step:.05,precision:2,serialize:!1});k.label=`context influence ${d+1}`,k.serialize=!1,l.push(k)}}e.__bvDetailerContextWidgets=l;const u=e.computeSize?.();u&&e.setSize&&e.setSize([Math.max(e.size?.[0]??0,u[0]),u[1]]),e.setDirtyCanvas?.(!0,!0),e.graph?.setDirtyCanvas?.(!0,!0)},Dl=e=>{const t=e.widgets?.find(d=>d.name==="region"),r=e.widgets?.find(d=>d.name==="region_selector");if(!t||!r)return;const o=ac(e);if(!o){r.options??(r.options={}),r.options.values=["Connect a BV Regional Prompt"],r.value=r.options.values[0],r.disabled=!0,e.setDirtyCanvas?.(!0,!0);return}const n=e.comfyClass==="BV Regional Detailer Mask"||e.type==="BV Regional Detailer Mask"?"detailer":void 0,i=Ex(o.regions,n),a=String(t.value??""),l=i.some(d=>d.id===a)?a:a||i[0]?.id||"";t.value=l,e.__bvRegionChoices=i,r.options??(r.options={});const c=l&&!i.some(d=>d.id===l)?`Missing region · ${l.slice(0,8)}`:null;r.options.values=i.length||c?[...c?[c]:[],...i.map(d=>d.label)]:["Connect a BV Regional Prompt"],r.value=i.find(d=>d.id===l)?.label??c??r.options.values[0];const u=e.widgets?.find(d=>d.name==="scope");r.disabled=u&&u.value!=="region"||!i.length,Vf(e),e.setDirtyCanvas?.(!0,!0)},eg=e=>{const t=e.widgets?.find(n=>n.name==="region");if(!t)return;Br(t);let r=e.widgets?.find(n=>n.name==="region_selector");r||(r=e.addWidget("combo","region_selector","Connect a BV Regional Prompt",n=>{const i=e.__bvRegionChoices?.find(a=>a.label===n);i&&(t.value=i.id,Vf(e))},{values:["Connect a BV Regional Prompt"],serialize:!1}),r.label="region",r.serialize=!1),(e.comfyClass==="BV Regional Detailer Mask"||e.type==="BV Regional Detailer Mask")&&tT(e,r,e.widgets?.find(n=>n.name==="primary_region_influence"));const o=e.widgets?.find(n=>n.name==="scope");if(o&&!o.__bvRegionSelectorHooked){o.__bvRegionSelectorHooked=!0;const n=o.callback;o.callback=function(){const i=n?.apply(this,arguments);return Dl(e),i}}if(!e.__bvRegionDocumentListener){e.__bvRegionDocumentListener=()=>Dl(e),window.addEventListener(_o,e.__bvRegionDocumentListener);const n=e.onRemoved;e.onRemoved=function(){return window.removeEventListener(_o,e.__bvRegionDocumentListener),n?.apply(this,arguments)}}Dl(e)},Ct=e=>{const t=[],r=o=>{for(const n of o?._nodes??[])n.type===e&&t.push(n),n.subgraph&&r(n.subgraph)};return r(rt.graph),t},tn=()=>{const e=rt.graph,t=[],r=o=>{for(const n of o?._nodes??[])n.type==="BV Regional Prompt"&&t.push(n),n.subgraph&&r(n.subgraph)};return r(e),t},Gn=()=>{const e=Ct("BV Control Center").length>0,t=tn().length>0,r=t||["BV Regional LoRA","BV Regional Detailer Plan","BV Detector Registry","BV Smart Pipe","BV Smart Pipe Merge"].some(n=>Ct(n).length>0),o=r||t;document.body.classList.toggle("bv-toolbar-no-control",!e),document.body.classList.toggle("bv-toolbar-no-editor",!r),document.body.classList.toggle("bv-toolbar-no-quick",!t),document.body.classList.toggle("bv-toolbar-no-overview",!o),window.dispatchEvent(new CustomEvent("bv-toolbar-capabilities-changed",{detail:{control:e,quick:t,full:r,overview:o}}))},zx=e=>Ef(rt.rootGraph??rt.graph,t=>t===e)[0],Ne=e=>zx(e)?.key??String(e.id),Ni=(e,t)=>{const r=zx(e);return{label:String(e.title||t),meta:`${r?.breadcrumb?`${r.breadcrumb} · `:""}#${e.id}`}},Ls=(e,t,r,o)=>{const n=o.widgets?.find(c=>c.name===r);if(!n||n.disabled)return;const i=Ne(o),a=po(e),l=()=>n.callback?.();a&&a!==i?_f(`${t}:${a}`,`${t}:${i}`,l,ni()==="replace"):l(),_r(e,i)},tg=(e,t)=>{e==="regional"?window.dispatchEvent(new CustomEvent(Xn,{detail:{node:t}})):e==="lora"?window.dispatchEvent(new CustomEvent(Ji,{detail:{node:t}})):e==="detailer"?Ls("detailer","detailer-plan","configure_detailer_plan",t):e==="detector"?Ls("detector","detector-registry","configure_detector_registry",t):window.dispatchEvent(new CustomEvent("bv-open-smart-pipe-editor",{detail:{node:t,kind:e}}))},nT=()=>{const e=[{type:"regional",nodes:tn()},{type:"lora",nodes:Ct("BV Regional LoRA")},{type:"detailer",nodes:Ct("BV Regional Detailer Plan")},{type:"detector",nodes:Ct("BV Detector Registry")},{type:"pipe",nodes:Ct("BV Smart Pipe")},{type:"merge",nodes:Ct("BV Smart Pipe Merge")}],t=P1(),r=t&&po(t),o=e.find(i=>i.type===t)?.nodes.find(i=>Ne(i)===r);if(o){tg(t,o);return}const n=e.flatMap(i=>i.nodes.map(a=>({type:i.type,node:a}))).sort((i,a)=>(Number(i.node.id)||Number.MAX_SAFE_INTEGER)-(Number(a.node.id)||Number.MAX_SAFE_INTEGER))[0];n&&(tg(n.type,n.node),t&&jr({title:"Previous editor unavailable",message:"Opened the first available BV editor instead.",tone:"warning",duration:4e3}))},bd=()=>{const e=rt.graph,t=[],r=o=>{for(const n of o?._nodes??[]){if(n.type==="BV Named LoRA Stack"){const i=String(n.widgets?.find(l=>l.name==="stack_id")?.value??"").trim(),a=String(n.widgets?.find(l=>l.name==="name")?.value??"").trim();i&&a&&t.push({id:i,name:a,nodeId:String(n.id)})}n.subgraph&&r(n.subgraph)}};return r(e),t.sort((o,n)=>o.name.localeCompare(n.name))},iT=()=>lE(tn().flatMap(e=>{try{const t=un(e.widgets?.find(r=>r.name==="regional_json")?.value);return[{documentId:t.document_id,nodeId:String(e.id),title:e.title||t.title||"BV Regional Prompt"}]}catch{return[]}})),rg=(e,t=!1)=>{const r=e.widgets?.find(a=>a.name==="document_id"),o=e.widgets?.find(a=>a.name==="target_editor");if(!r||!o)return;const n=iT(),i=sE(r.value,n,t);r.value=i,e.__bvDocumentTargets=n,o.options??(o.options={}),o.options.values=n.length?n.map(a=>a.label):["No BV Regional Prompt available"],o.value=n.find(a=>a.documentId===i)?.label??(i?`Missing target · ${i.slice(0,8)}`:o.options.values[0]),o.disabled=!n.length,e.setDirtyCanvas?.(!0,!0)},og=(e,t=!1)=>{const r=e.widgets?.find(n=>n.name==="document_id");if(!r)return;Br(r);let o=e.widgets?.find(n=>n.name==="target_editor");if(o||(o=e.addWidget("combo","target_editor","No BV Regional Prompt available",n=>{const i=e.__bvDocumentTargets?.find(a=>a.label===n);i&&(r.value=i.documentId)},{values:["No BV Regional Prompt available"],serialize:!1}),o.label="target_editor",o.serialize=!1),!e.__bvDocumentTargetListener){e.__bvDocumentTargetListener=()=>rg(e,!1),window.addEventListener(_o,e.__bvDocumentTargetListener);const n=e.onRemoved;e.onRemoved=function(){return window.removeEventListener(_o,e.__bvDocumentTargetListener),n?.apply(this,arguments)}}rg(e,t)},ng=(e,t=!1)=>{const r=e.widgets?.find(o=>o.name==="regional_json");if(r)try{const o=t?bh():un(r.value);!t&&tn().some(a=>{if(a===e)return!1;try{return un(a.widgets?.find(l=>l.name==="regional_json")?.value).document_id===o.document_id}catch{return!1}})&&(o.document_id=crypto.randomUUID()),r.value=JSON.stringify(o);const i=e.widgets?.find(a=>a.name==="lora_bindings_json");if(i)try{const a={...Df(i.value,t?"":o.document_id),document_id:o.document_id};i.value=JSON.stringify($n(a,new Set(o.regions.map(l=>l.id))))}catch{i.value=JSON.stringify(rc(o.document_id))}}catch{r.value=JSON.stringify(bh())}};function aT(){const[e,t]=m.useState(!1),[r,o]=m.useState(!1),[n,i]=m.useState(!1),[a,l]=m.useState(0),[c,u]=m.useState(!1),[d,f]=m.useState(0),[p,g]=m.useState(null),[x,w]=m.useState([]),[k,b]=m.useState({}),[h,v]=m.useState([]),[_,y]=m.useState(null),T=m.useCallback((S=!1)=>{const P=tn(),O=Ct("BV Regional LoRA"),B=Ct("BV Regional Detailer Plan"),j=Ct("BV Detector Registry"),M=[...Ct("BV Smart Pipe"),...Ct("BV Smart Pipe Merge")],E=(L,R)=>{const N=!vn(L);return N&&!S?null:{...R,hidden:N,onReveal:N?()=>mn(L,!0):void 0}};return[{id:"regional",label:"Regional Prompts",items:P.map(L=>{const R=Ni(L,"BV Regional Prompt"),N=po("regional")===Ne(L);return E(L,{id:Ne(L),...R,meta:`${R.meta}${N?" · Last active":""}`,onSelect:()=>window.dispatchEvent(new CustomEvent(Xn,{detail:{node:L}})),secondary:{label:`Quick edit ${R.label}`,onSelect:()=>window.dispatchEvent(new CustomEvent(Qi,{detail:{node:L}}))}})}).filter(Boolean)},{id:"lora",label:"Regional LoRA",items:O.map(L=>{const R=Ni(L,"BV Regional LoRA"),N=po("lora")===Ne(L);return E(L,{id:Ne(L),...R,meta:`${R.meta}${N?" · Last active":""}`,onSelect:()=>{_r("lora",Ne(L)),window.dispatchEvent(new CustomEvent(Ji,{detail:{node:L}}))}})}).filter(Boolean)},{id:"detailer",label:"Detailer Plan",items:B.map(L=>{const R=Ni(L,"BV Regional Detailer Plan"),N=L.widgets?.find(W=>W.name==="configure_detailer_plan"),A=po("detailer")===Ne(L);return E(L,{id:Ne(L),...R,disabled:!N||N.disabled,meta:`${R.meta}${N?.disabled?" · Connect Regional Prompt":A?" · Last active":""}`,onSelect:()=>Ls("detailer","detailer-plan","configure_detailer_plan",L)})}).filter(Boolean)},{id:"detector",label:"Detector Registry",items:j.map(L=>{const R=Ni(L,"BV Detector Registry"),N=po("detector")===Ne(L);return E(L,{id:Ne(L),...R,meta:`${R.meta}${N?" · Last active":""}`,onSelect:()=>Ls("detector","detector-registry","configure_detector_registry",L)})}).filter(Boolean)},{id:"smart-pipe",label:"Smart Pipes",items:M.map(L=>{const R=String(L.type??L.comfyClass)==="BV Smart Pipe Merge"?"merge":"pipe",N=Ni(L,R==="merge"?"Smart Pipe Merge":"Smart Pipe");return E(L,{id:Ne(L),...N,meta:`${N.meta} · ${R==="merge"?"Merge":"Pipe"}`,onSelect:()=>window.dispatchEvent(new CustomEvent("bv-open-smart-pipe-editor",{detail:{node:L,kind:R}}))})}).filter(Boolean)}]},[]);return m.useEffect(()=>{if(!(!n&&!c))return pE(rt,wr,()=>{i(!1),u(!1)})},[c,n]),m.useEffect(()=>{const S=()=>t(!0);return window.addEventListener(hd,S),()=>window.removeEventListener(hd,S)},[]),m.useEffect(()=>{const S=P=>{const O=P.detail?.node??null;O&&_r("lora",Ne(O)),y(O)};return window.addEventListener(Ji,S),()=>window.removeEventListener(Ji,S)},[]),m.useEffect(()=>{const S=P=>o(!!P.detail?.control);return window.addEventListener("bv-toolbar-capabilities-changed",S),Gn(),()=>window.removeEventListener("bv-toolbar-capabilities-changed",S)},[]),m.useEffect(()=>{const S=()=>Gn();return window.addEventListener(xs,S),()=>window.removeEventListener(xs,S)},[]),m.useEffect(()=>{const S=P=>{const O=P.detail?.node??null,B=tn();v(bd()),w(B);const j=O??B.find(M=>Ne(M)===po("quick"))??B[0]??null;j&&_r("quick",Ne(j)),g(j),i(!1),u(!0),f(M=>M+1)};return window.addEventListener(Qi,S),()=>window.removeEventListener(Qi,S)},[]),m.useEffect(()=>{const S=P=>{const O=P.detail?.output,B=O?.bv_regional_background?.[0]?.document_id,j=O?.images?.[O.images.length-1];if(!B||!j)return;const M=new URLSearchParams({filename:j.filename,type:j.type,subfolder:j.subfolder||""});b(E=>({...E,[B]:wr.apiURL(`/view?${M}`)}))};return wr.addEventListener("executed",S),()=>wr.removeEventListener("executed",S)},[]),m.useEffect(()=>{const S=P=>{const O=P.detail?.node??null,B=tn();v(bd()),w(B);const j=O??B.find(M=>Ne(M)===po("regional"))??B[0]??null;j&&_r("regional",Ne(j)),g(j),j&&c&&String(p?.id)===String(j.id)&&u(!1),i(!0),l(M=>M+1)};return window.addEventListener(Xn,S),()=>window.removeEventListener(Xn,S)},[c,p]),s.jsxs(s.Fragment,{children:[s.jsx(I1,{}),s.jsx(J0,{getColumns:T}),s.jsx(U1,{}),s.jsx(F1,{open:e,hasControlNodes:r,onClose:()=>t(!1)}),s.jsx(HE,{open:!!_,node:_,onClose:()=>y(null)}),s.jsx(oE,{open:n,activationToken:a,nodes:x,initialNode:p,backgrounds:k,loraStacks:h,onClose:()=>i(!1)}),s.jsx(aE,{open:c,activationToken:d,nodes:x,initialNode:p,loraStacks:h,onClose:()=>u(!1),onOpenEditor:S=>{_r("regional",Ne(S)),g(S),u(!1),i(!0),l(P=>P+1)}})]})}const ig="bv-root";function lT(){if(!document.getElementById(qh)){const t=document.createElement("style");t.id=qh,t.textContent=`${Y1} +${$1}`,document.head.appendChild(t)}let e=document.getElementById(ig);e||(e=document.createElement("div"),e.id=ig,document.body.appendChild(e),ea.createRoot(e).render(s.jsx(Re.StrictMode,{children:s.jsx(aT,{})})))}rt.registerExtension({name:"bv_nodepack.control_rack_portal",setup(){lT(),Bf(rt.canvas),F0(rt.ui?.settings),fE(),en=!!rt.ui?.settings?.getSettingValue?.(jx,!1),Bx(en).then(()=>{en&&Ss()}).catch(e=>console.error(e)),wr.addEventListener("graphChanged",Ss),wr.addEventListener("graphChanged",Gn)}});rt.registerExtension({name:"bv_nodepack.regional_editor",settings:[{id:zv,name:"BV Interface Size",type:"combo",defaultValue:"default",options:[{text:"Compact",value:"compact"},{text:"Default",value:"default"},{text:"Large",value:"large"}],category:["BV Node Pack","Appearance","Interface size"],tooltip:"Scale every BV-owned interface consistently. Default is the comfortable size; Compact matches the former standard.",onChange:e=>Vv(e)},{id:Fv,name:"Reduce BV Interface Effects",type:"boolean",defaultValue:!1,category:["BV Node Pack","Appearance","Reduced effects"],tooltip:"Disable BV animations, transitions, blur and visual filters without changing ComfyUI's canvas.",onChange:e=>Wv(e)},{id:wf,name:"BV Window Switch Mode",type:"combo",defaultValue:"keep",options:[{text:"Keep current window",value:"keep"},{text:"Replace current window",value:"replace"}],category:["BV Node Pack","Appearance","Window switching"],tooltip:"Choose whether changing the node in a BV editor minimizes or closes the current window. Hold Shift to invert the mode once.",onChange:e=>kf(e,!1)},{id:jx,name:"Enable BV Debug Bridge",type:"boolean",defaultValue:!1,category:["BV Node Pack","Developer","Enable Debug Bridge"],tooltip:"Expose the current API-format workflow as an in-memory snapshot to loopback clients only.",onChange:e=>{Bx(!!e).then(()=>{e&&Ss()}).catch(t=>console.error(t))}},{id:Bm,name:"Enable BV Prompt Autocomplete",type:"boolean",defaultValue:!0,category:["BV Node Pack","Prompting","Enable autocomplete"],tooltip:"Enable BV-owned prompt completion. Disable this when another autocomplete extension should control prompt fields.",onChange:e=>Xm(!!e)},{id:zm,name:"Autocomplete Popup Position",type:"combo",defaultValue:"caret",options:[{text:"At Caret",value:"caret"},{text:"Below Text Field",value:"field"}],category:["BV Node Pack","Prompting","Popup position"],tooltip:"Open suggestions at the active caret or below the complete text field.",onChange:e=>$m(e)},{id:Pm,name:"Completion Datasets",type:cE,defaultValue:"",category:["BV Node Pack","Prompting","Completion datasets"],tooltip:"Choose one or more local CSV/TSV datasets for BV Prompt Autocomplete.",onChange:e=>Jm(e)}],commands:[{id:"bv.regional.openEditor",label:"Open BV Regional Editor",icon:"icon-[lucide--layers]",function:()=>{window.dispatchEvent(new CustomEvent(Xn))}},{id:"bv.debugBridge.publishSnapshot",label:"Refresh BV Debug Bridge Snapshot",icon:"icon-[lucide--radio-tower]",function:()=>Px().catch(e=>console.error(e))}],actionBarButtons:[{icon:"icon-[lucide--sliders-horizontal]",class:"bv-regional-action bv-regional-action-control",tooltip:"Open BV Control Center",onClick:()=>window.dispatchEvent(new Event(hd))},{icon:"icon-[lucide--scan-search]",class:"bv-regional-action bv-regional-action-editor",tooltip:"Open last BV editor",onClick:nT},{icon:"icon-[lucide--layers]",class:"bv-regional-action bv-regional-action-quick",tooltip:"Quick edit BV Regional prompts",onClick:()=>window.dispatchEvent(new CustomEvent(Qi))},{icon:"icon-[lucide--chevron-down]",class:"bv-regional-action bv-regional-action-menu",tooltip:"Choose BV window",onClick:()=>window.dispatchEvent(new CustomEvent(ss))}],beforeRegisterNodeDef(e,t){if(UE(e,t)||tE(e,t))return;if(["BV Control Center","BV Regional Prompt","BV Regional Detailer Plan","BV Detector Registry","BV Smart Pipe","BV Smart Pipe Merge"].includes(t.name)){const i=e.prototype.onNodeCreated,a=e.prototype.onRemoved;e.prototype.onNodeCreated=function(){const l=i?.apply(this,arguments);return t.name!=="BV Control Center"&&(this.properties??(this.properties={}),typeof this.properties.bvWindowMenuVisible!="boolean"&&(this.properties.bvWindowMenuVisible=!["BV Smart Pipe","BV Smart Pipe Merge"].includes(t.name))),queueMicrotask(Gn),l},e.prototype.onRemoved=function(){const l=a?.apply(this,arguments);return queueMicrotask(Gn),l}}if(kE.has(t.name)){const i=e.prototype.onNodeCreated,a=e.prototype.onConfigure;e.prototype.onNodeCreated=function(){const l=i?.apply(this,arguments);return queueMicrotask(()=>Jh(this,t.name)),l},e.prototype.onConfigure=function(l){const c=a?.call(this,l);return queueMicrotask(()=>Jh(this,t.name)),c}}if(t.name==="BV Detector Registry"){const i=u=>{const d=u.widgets?.find(g=>g.name==="config_json");if(!d)return;Br(d);let f=u.widgets?.find(g=>g.name==="configure_detector_registry");f||(f=u.addWidget("button","configure_detector_registry",null,()=>{_r("detector",Ne(u)),yE(wr,d.value,g=>{d.value=g,i(u),u.graph?.setDirtyCanvas?.(!0,!0)},`detector-registry:${Ne(u)}`,Ct("BV Detector Registry").filter(vn).map(g=>({id:Ne(g),label:`${g.title||"BV Detector Registry"} · #${g.id}`})),(g,x)=>{const w=Ct("BV Detector Registry").find(b=>Ne(b)===g),k=w?.widgets?.find(b=>b.name==="configure_detector_registry");k&&_f(`detector-registry:${Ne(u)}`,`detector-registry:${Ne(w)}`,()=>k.callback?.(),x)},u).catch(g=>console.error(g))},{serialize:!1}),f.serialize=!1);const p=Zi(d.value).detectors.length;f.label=`Configure Detector Registry · ${p} Detector${p===1?"":"s"}`,u.setDirtyCanvas?.(!0,!0)},a=e.prototype.onNodeCreated,l=e.prototype.onConfigure,c=e.prototype.onConnectionsChange;e.prototype.onNodeCreated=function(){const u=a?.apply(this,arguments);return queueMicrotask(()=>{i(this),eu(this)}),u},e.prototype.onConfigure=function(){const u=l?.apply(this,arguments);return queueMicrotask(()=>{i(this),eu(this)}),u},e.prototype.onConnectionsChange=function(){const u=c?.apply(this,arguments);return queueMicrotask(()=>eu(this)),u};return}if(t.name==="BV Regional Detailer Plan"){const i=e.prototype.onNodeCreated,a=e.prototype.onConfigure,l=e.prototype.onConnectionsChange;e.prototype.onNodeCreated=function(){const c=i?.apply(this,arguments);return queueMicrotask(()=>Zh(this)),c},e.prototype.onConfigure=function(){const c=a?.apply(this,arguments);return queueMicrotask(()=>Zh(this)),c},e.prototype.onConnectionsChange=function(){const c=l?.apply(this,arguments);return queueMicrotask(()=>gd(this)),c};return}if(t.name==="BV Remote LLM Provider"){const i=e.prototype.onNodeCreated,a=e.prototype.onConfigure;e.prototype.onNodeCreated=function(){const l=i?.apply(this,arguments);return queueMicrotask(()=>Wh(this,wr)),l},e.prototype.onConfigure=function(l){Array.isArray(l?.widgets_values)&&l.widgets_values.length>=6&&/^[A-Za-z_][A-Za-z0-9_]*$/.test(String(l.widgets_values[3]??""))&&(l={...l,widgets_values:[...l.widgets_values.slice(0,3),...l.widgets_values.slice(4)]});const c=a?.call(this,l);return queueMicrotask(()=>Wh(this,wr)),c};return}if(t.name==="BV Named LoRA Stack"){const i=c=>{const u=c.widgets?.find(f=>f.name==="stack_id");if(!u)return;const d=String(u.value??"").trim();if(!d||Nk(String(c.id),d,bd())){const f=crypto.randomUUID();d&&(c.__bvLoraResourceIdRemap={[d]:f}),u.value=f,c.setDirtyCanvas?.(!0,!0)}Br(u)},a=e.prototype.onNodeCreated,l=e.prototype.onConfigure;e.prototype.onNodeCreated=function(){const c=a?.apply(this,arguments);return i(this),c},e.prototype.onConfigure=function(){const c=l?.apply(this,arguments);return queueMicrotask(()=>i(this)),c};return}if(t.name==="BV Regional Image Send"||t.name==="BV Regional Image Save"){const i=e.prototype.onNodeCreated,a=e.prototype.onConfigure;e.prototype.onNodeCreated=function(){const l=i?.apply(this,arguments);return queueMicrotask(()=>og(this,!0)),l},e.prototype.onConfigure=function(){const l=a?.apply(this,arguments);return queueMicrotask(()=>og(this,!1)),l};return}if(["BV Regional Select","BV Regional Deconstructor","BV Regional Detailer Mask"].includes(t.name)){const i=e.prototype.onNodeCreated,a=e.prototype.onConfigure,l=e.prototype.onConnectionsChange;e.prototype.onNodeCreated=function(){const u=i?.apply(this,arguments);return eg(this),u};const c=e.prototype.onSerialize;e.prototype.onConfigure=function(u){t.name==="BV Regional Detailer Mask"&&(rT(this),u?.widgets_values&&(u={...u,widgets_values:gE(u.widgets_values)}));const d=a?.call(this,u);return queueMicrotask(()=>eg(this)),d},e.prototype.onSerialize=function(u){const d=c?.apply(this,arguments);return t.name==="BV Regional Detailer Mask"&&(u.widgets_values=hE(this.widgets)),d},e.prototype.onConnectionsChange=function(){const u=l?.apply(this,arguments);return queueMicrotask(()=>Dl(this)),u};return}if(t.name!=="BV Regional Prompt")return;const r=e.prototype.onNodeCreated,o=e.prototype.onConfigure;e.prototype.onNodeCreated=function(){const i=r?.apply(this,arguments);ng(this,!0);const a=this.widgets?.find(u=>u.name==="regional_json"),l=this.widgets?.find(u=>u.name==="lora_bindings_json"),c=this.widgets?.find(u=>u.name==="lora_v3_config_json");if(l&&Br(l),c&&Ra(c),_s(this),a&&(Br(a),!a.__bvRegionalDocumentHooked)){a.__bvRegionalDocumentHooked=!0;const u=a.callback;a.callback=function(){const d=u?.apply(this,arguments);return window.dispatchEvent(new CustomEvent(_o)),d}}if(!this.widgets?.find(u=>u.name==="open_regional_editor")){const u=this.addWidget("button","open_regional_editor",null,()=>window.dispatchEvent(new CustomEvent(Xn,{detail:{node:this}})),{serialize:!1});u.label="Open Regional Editor",u.serialize=!1}if(!this.widgets?.find(u=>u.name==="quick_edit_regional_prompts")){const u=this.addWidget("button","quick_edit_regional_prompts",null,()=>window.dispatchEvent(new CustomEvent(Qi,{detail:{node:this}})),{serialize:!1});u.label="Quick Edit Prompts",u.serialize=!1}return this.setSize?.([Math.max(this.size?.[0]??0,220),this.computeSize?.()[1]??60]),window.dispatchEvent(new CustomEvent(_o)),i},e.prototype.onConfigure=function(){const i=o?.apply(this,arguments);ng(this,!1);const a=this.widgets?.find(c=>c.name==="lora_bindings_json"),l=this.widgets?.find(c=>c.name==="lora_v3_config_json");return a&&Br(a),l&&Ra(l),_s(this),window.dispatchEvent(new CustomEvent(_o)),i};const n=e.prototype.onRemoved;e.prototype.onRemoved=function(){const i=n?.apply(this,arguments);return window.dispatchEvent(new CustomEvent(_o)),i}},afterConfigureGraph(){Ss(),queueMicrotask(Gn)}}); diff --git a/tests/regional_lora_v3_picker.test.mjs b/tests/regional_lora_v3_picker.test.mjs index d58ead9..cdc65a2 100644 --- a/tests/regional_lora_v3_picker.test.mjs +++ b/tests/regional_lora_v3_picker.test.mjs @@ -8,6 +8,8 @@ import {emptyLoraV3Config,parseLoraV3Config,serializeLoraV3Config} from "../ui/s const collectors=[{id:"collector",label:"Styles",resources:[{id:"skin",label:"Skin"}]}]; const editorSource=readFileSync(new URL("../ui/src/regional/LoraV3EditorWindow.tsx",import.meta.url),"utf8"); +const pickerSource=readFileSync(new URL("../ui/src/regional/LoraV3ResourcePickerPanel.tsx",import.meta.url),"utf8"); +const regionalEditorSource=readFileSync(new URL("../ui/src/regional/RegionalEditor.tsx",import.meta.url),"utf8"); const styles=readFileSync(new URL("../ui/src/index.css",import.meta.url),"utf8"); test("the production picker renders Collector / Resource from persisted ids",()=>{ const config={version:1,collector_id:"collector",entries:[{id:"entry",source:{kind:"external",resource_id:"skin"},targets:[{scope:"global"}]}]}; @@ -41,6 +43,13 @@ test("Regional Prompt easy mode renders every stack assigned to its scope",()=>{ assert.match(html,/LoRA enabled/);assert.match(html,/LoRA Stack 1/);assert.match(html,/LoRA Stack 2/);assert.match(html,/Add LoRA stack/); assert.match(html,/aria-label="Remove LoRA Stack 1"/);assert.doesNotMatch(html,/>Remove{ + assert.doesNotMatch(pickerSource,/\[enabled,setEnabled\]=useState/); + assert.match(regionalEditorSource,/OptionalLoraV3ScopePicker key=\{selectedRegion\.id\}/); + const config={version:1,collector_id:"collector",entries:[{id:"left-entry",source:{kind:"external",resource_id:"skin"},targets:[{scope:"region",document_id:"doc",region_id:"left"}]}]}; + const right=renderToStaticMarkup(React.createElement(OptionalLoraV3ScopePicker,{collectors,config,target:{scope:"region",document_id:"doc",region_id:"right"},resolved:true,onCollector(){},onResource(){},onAdd(){},onRemove(){},onClear(){}})); + assert.match(right,/LoRA disabled/);assert.doesNotMatch(right,/LoRA Stack 1/); +}); test("Regional Prompt keeps the LoRA toggle above the stack card without overlap",()=>{ assert.match(styles,/\.bv-lora-v3-enable-row\{[^}]*grid-template-columns:minmax\(0,1fr\)/); assert.doesNotMatch(styles,/\.bv-lora-v3-enable-row>\.bv-control-field\{[^}]*padding-top/); diff --git a/ui/src/regional/LoraV3ResourcePickerPanel.tsx b/ui/src/regional/LoraV3ResourcePickerPanel.tsx index eddb2c1..1248698 100644 --- a/ui/src/regional/LoraV3ResourcePickerPanel.tsx +++ b/ui/src/regional/LoraV3ResourcePickerPanel.tsx @@ -1,4 +1,4 @@ -import React, { useEffect, useState } from "react"; +import React from "react"; import { Button, ResourcePicker, ResourcePickerCollector, ToggleField, type SelectOption } from "../ui/components"; export type LoraV3Entry={id:string;source:{kind:"external";resource_id:string}|{kind:"native";lora_name:string;model_strength:number;clip_strength:number};targets:Record[]}; @@ -23,9 +23,8 @@ export function LoraV3ScopePicker({collectors,config,target,resolved,onCollector } export function OptionalLoraV3ScopePicker(props:ScopeProps&{onClear:(target:LoraV3Target)=>void}){ - const targetKey=loraV3TargetValue(props.target),assigned=externalFor(props.config,props.target).length>0,[enabled,setEnabled]=useState(assigned); - useEffect(()=>setEnabled(assigned),[assigned,targetKey]); - return
{setEnabled(next);if(next&&!assigned)props.onAdd(props.target);if(!next)props.onClear(props.target);}}/>{enabled&&}
; + const enabled=externalFor(props.config,props.target).length>0; + return
{if(next)props.onAdd(props.target);else props.onClear(props.target);}}/>{enabled&&}
; } export function LoraV3ResourcePickerPanel({collectors,config,resolved,targetOptions=[],onCollector,onResource,onAddExternal,onRemove}:{collectors:ResourcePickerCollector[];config:LoraV3Config;resolved:boolean;targetOptions?:LoraV3TargetOption[];onCollector:(id:string)=>void;onResource:(entryId:string,resourceId:string)=>void;onAddExternal:(target:LoraV3Target)=>void;onRemove:(entryId:string,target:LoraV3Target)=>void}){ diff --git a/ui/src/regional/RegionalEditor.tsx b/ui/src/regional/RegionalEditor.tsx index 09d1169..253ea23 100644 --- a/ui/src/regional/RegionalEditor.tsx +++ b/ui/src/regional/RegionalEditor.tsx @@ -331,7 +331,7 @@ export default function RegionalEditor({ open, activationToken=0, nodes, initial const loraSummary = loraV3Config.entries.length?`${loraV3Config.entries.length} V3 LoRA assignment${loraV3Config.entries.length===1?"":"s"}`:documentValue ? bindingSummary(loraBindings, loraStacks, Object.fromEntries(documentValue.regions.map(region => [region.id, region.name]))) : ""; const loraV3Collectors=node?loraV3Catalog(node).filter(item=>item.resources.length>0):[],loraV3IsResolved=node?loraV3Resolved(node,loraV3Config):false; const v3ScopeProps={collectors:loraV3Collectors,config:loraV3Config,resolved:loraV3IsResolved,onCollector:(id:string)=>node&&setLoraV3Config(setLoraV3Collector(node,loraV3Config,id)),onResource:(entryId:string,id:string)=>node&&setLoraV3Config(setLoraV3EntryResource(node,loraV3Config,entryId,id)),onAdd:(target:LoraV3Target)=>node&&setLoraV3Config(addLoraV3TargetEntry(node,loraV3Config,target)),onRemove:(entryId:string,target:LoraV3Target)=>node&&setLoraV3Config(removeLoraV3TargetEntry(node,loraV3Config,entryId,target)),onClear:(target:LoraV3Target)=>node&&setLoraV3Config(clearLoraV3Target(node,loraV3Config,target))}; - const optionsPanel = (mode: "selection" | "region" | "document") => documentValue ? } loraV3RegionEditor={selectedRegion?:null} onGlobalLoraStack={setGlobalLoraStack} onRegionLoraStack={setRegionLoraStack} onPromptSection={(section, open) => setViewState(current => ({ ...current, promptSections: { ...current.promptSections, [section]: open } }))} onNegativeMode={negativeMode => mutate(value => { value.negative_mode = negativeMode; })} onGlobalPrompts={prompts => mutate(value => { value.prompts.global = prompts; })} onBackgroundPrompts={prompts => mutate(value => { value.prompts.background = prompts; })} onRegion={updateRegion} onLayerBounds={bounds => selectedLayerId && updateLayer(selectedLayerId, (operations, region) => { const replacements = new Map(setLayerBounds(operations, bounds, documentValue.canvas).map(item => [item.id, item])); region.geometry = region.geometry.map(item => replacements.get(item.id) ?? item); })} onBrushSetting={(field, setting) => selectedLayerId && updateLayer(selectedLayerId, operations => operations.forEach(item => { if (item.type === "brush_stroke") Object.assign(item, { [field]: setting }); }))}/> : null; + const optionsPanel = (mode: "selection" | "region" | "document") => documentValue ? } loraV3RegionEditor={selectedRegion?:null} onGlobalLoraStack={setGlobalLoraStack} onRegionLoraStack={setRegionLoraStack} onPromptSection={(section, open) => setViewState(current => ({ ...current, promptSections: { ...current.promptSections, [section]: open } }))} onNegativeMode={negativeMode => mutate(value => { value.negative_mode = negativeMode; })} onGlobalPrompts={prompts => mutate(value => { value.prompts.global = prompts; })} onBackgroundPrompts={prompts => mutate(value => { value.prompts.background = prompts; })} onRegion={updateRegion} onLayerBounds={bounds => selectedLayerId && updateLayer(selectedLayerId, (operations, region) => { const replacements = new Map(setLayerBounds(operations, bounds, documentValue.canvas).map(item => [item.id, item])); region.geometry = region.geometry.map(item => replacements.get(item.id) ?? item); })} onBrushSetting={(field, setting) => selectedLayerId && updateLayer(selectedLayerId, operations => operations.forEach(item => { if (item.type === "brush_stroke") Object.assign(item, { [field]: setting }); }))}/> : null; return <>{keptNodeIds.map(id=>{const kept=nodes.find(item=>keyFor(item)===id);return kept?navigateNode(id,false,false)} onClose={()=>setKeptNodeIds(ids=>ids.filter(value=>value!==id))}/>:null})}setWindowMenuVisible(node,visible)} context={windowMenuVisible(item)).map(item => ({ value:keyFor(item), label: `${item.title || "BV Regional Prompt"} · #${item.id}` }))}/>} center={ setIsolate(value => !value)} onToggleBinaryMaskPreview={() => { cancelGesture(); setViewState(current => ({ ...current, binaryMaskPreview: !current.binaryMaskPreview })); }} onExportDocument={() => documentValue && downloadJson(`${documentValue.title || "bv-regional"}.json`, documentValue)} onExportRegions={() => documentValue && downloadJson(`${documentValue.title || "bv-regions"}.regions.json`, { schema: "bv.regions", version: 2, canvas: documentValue.canvas, regions: documentValue.regions })} onImportDocument={importDocument} onImportRegions={importRegions} onUndo={undo} onRedo={redo} canUndo={!!history.length} canRedo={!!future.length} canMergeLayers={canMergeLayers} onMergeLayers={mergeLayers} canvas={documentValue?.canvas ?? { width: 1024, height: 1024 }} onCanvas={canvas => mutate(value => { value.canvas = canvas; })}/>} mode={viewState.mode} initialGeometry={windowGeometry} minSize={{width:780,height:520}} className="bv-regional-shell" bodyClassName="bv-regional-window-body" onModeChange={mode=>setViewState(current=>({...current,mode}))} onGeometry={geometry=>setViewState(current=>({...current,windows:{...current.windows,floating:geometry}}))} onClose={onClose} status={documentValue?<>{loraWarnings[0] ? `⚠ ${loraWarnings[0]}` : `✓ ${loraSummary}`}{documentValue.regions.length} regions · layout adjusted for this session:null} actions={documentValue? setDockResetSignal(value => value + 1)}/>:null}> {error ?
{error}
: documentValue && <>