@vgai/editor 0.4.0-canary.20260715.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/dist/assets/{axe-C7YBtOuM.js → axe-BJjvBeOZ.js} +1 -1
  2. package/dist/assets/{browserAll-DDtGGE48.js → browserAll-Dn0pgD87.js} +1 -1
  3. package/dist/assets/{create-runtime-DbTlBlKG.js → create-runtime-BF9OD-U8.js} +1 -1
  4. package/dist/assets/{game-Dch9sAPc.js → game-B346oj_f.js} +1 -1
  5. package/dist/assets/{game-BE0r7DMI.js → game-BCNN63uV.js} +1 -1
  6. package/dist/assets/{game-SAFn90pA.js → game-BR0GBNgF.js} +1 -1
  7. package/dist/assets/{game-Cqzj_lpD.js → game-CLNm2g0y.js} +1 -1
  8. package/dist/assets/{game-CcHfYxjP.js → game-DQxhCYsZ.js} +1 -1
  9. package/dist/assets/{game-BdTHR2_X.js → game-DeTGdgYt.js} +1 -1
  10. package/dist/assets/{game-loop-DMIgSMV-.js → game-loop-t5W_oqxz.js} +1 -1
  11. package/dist/assets/{game-source-Dk83w26t.js → game-source-DzE9taML.js} +1 -1
  12. package/dist/assets/{game-DSZdeCHu.js → game-u6c2Patu.js} +1 -1
  13. package/dist/assets/{game-C3iQGSqo.js → game-umrHIqFB.js} +1 -1
  14. package/dist/assets/{index-C-LhOTBN.js → index-CgcH1RpF.js} +1 -1
  15. package/dist/assets/{index-CDkxceqE.js → index-D3tcNB2T.js} +1 -1
  16. package/dist/assets/{index-CQEfi217.js → index-DbQzGLxv.js} +771 -771
  17. package/dist/assets/{index-4idIsHHJ.js → index-Fc8Ezr20.js} +1 -1
  18. package/dist/assets/index-bAGhEnnO.css +1 -0
  19. package/dist/assets/{ingest-siblings-s0P5I1Ub.js → ingest-siblings-CW_xbvrF.js} +1 -1
  20. package/dist/assets/{mount-manifest-DXMOlF79.js → mount-manifest-DgUscyaD.js} +1 -1
  21. package/dist/assets/{react-18-C9eHn8x1.js → react-18-C4tVCii_.js} +1 -1
  22. package/dist/assets/webworkerAll-BA4aq7xq.js +1 -0
  23. package/dist/assets/{world-documents-GM0a9Kv7.js → world-documents-BSaA5YIF.js} +1 -1
  24. package/dist/index.html +2 -2
  25. package/dist-server/packaged.mjs +21 -1
  26. package/package.json +3 -3
  27. package/server/packaged.ts +20 -0
  28. package/src/asset-editor-context.tsx +130 -0
  29. package/src/asset-preview.ts +4 -0
  30. package/src/asset-selection.ts +9 -4
  31. package/src/asset-workflow/thumbnail-system.ts +16 -7
  32. package/src/components/AssetBrowser.tsx +330 -539
  33. package/src/components/AssetEditorShell.tsx +42 -112
  34. package/src/components/AssetImportDetails.tsx +24 -6
  35. package/src/components/GameHierarchy.tsx +26 -1
  36. package/src/components/Inspector.tsx +38 -2
  37. package/src/components/OnlineAssetBrowser.tsx +295 -343
  38. package/src/components/WorkspaceDock.tsx +6 -12
  39. package/src/components/asset-documents.tsx +41 -12
  40. package/src/components/asset-selection-section.tsx +34 -1
  41. package/src/components/asset-viewers/ModelViewer.tsx +7 -4
  42. package/src/components/asset-viewers/OnlineAssetDetail.tsx +233 -205
  43. package/src/components/asset-workflow.css +197 -264
  44. package/src/editor-api.ts +1 -1
  45. package/template/vgai.game.json +1 -1
  46. package/dist/assets/index-Dvi-V0NE.css +0 -1
  47. package/dist/assets/webworkerAll-Fn0e-ouF.js +0 -1
@@ -1,4 +1,4 @@
1
- import{bs as y,_ as g,$ as V,a2 as b,a0 as O,Z as S,bt as ct,bu as C,bv as Mt,bm as lt,bw as at,bx as Et,by as Ft}from"./index-CQEfi217.js";var nt={},L={},pt;function G(){if(pt)return L;pt=1,Object.defineProperty(L,"__esModule",{value:!0}),L.Collector=void 0;let s=class{constructor(i){this.emit=(...e)=>{i.emitCollecting(this,e)}}};return L.Collector=s,L}var R={},ft;function Bt(){if(ft)return R;ft=1,Object.defineProperty(R,"__esModule",{value:!0}),R.CollectorArray=void 0;const s=G();let t=class extends s.Collector{constructor(){super(...arguments),this.result=[]}handleResult(e){return this.result.push(e),!0}getResult(){return this.result}reset(){this.result.length=0}};return R.CollectorArray=t,R}var H={},gt;function Dt(){if(gt)return H;gt=1,Object.defineProperty(H,"__esModule",{value:!0}),H.CollectorLast=void 0;const s=G();let t=class extends s.Collector{handleResult(e){return this.result=e,!0}getResult(){return this.result}reset(){delete this.result}};return H.CollectorLast=t,H}var N={},_t;function Ut(){if(_t)return N;_t=1,Object.defineProperty(N,"__esModule",{value:!0}),N.CollectorUntil0=void 0;const s=G();let t=class extends s.Collector{constructor(){super(...arguments),this.result=!1}handleResult(e){return this.result=e,this.result}getResult(){return this.result}reset(){this.result=!1}};return N.CollectorUntil0=t,N}var W={},wt;function Lt(){if(wt)return W;wt=1,Object.defineProperty(W,"__esModule",{value:!0}),W.CollectorWhile0=void 0;const s=G();let t=class extends s.Collector{constructor(){super(...arguments),this.result=!1}handleResult(e){return this.result=e,!this.result}getResult(){return this.result}reset(){this.result=!1}};return W.CollectorWhile0=t,W}var $={},z={},mt;function Rt(){if(mt)return z;mt=1,Object.defineProperty(z,"__esModule",{value:!0}),z.SignalConnectionImpl=void 0;class s{constructor(i,e){this.link=i,this.parentCleanup=e}disconnect(){return this.link!==null?(this.link.unlink(),this.link=null,this.parentCleanup(),this.parentCleanup=null,!0):!1}set enabled(i){this.link&&this.link.setEnabled(i)}get enabled(){return this.link!==null&&this.link.isEnabled()}}return z.SignalConnectionImpl=s,z}var j={},vt;function Ht(){if(vt)return j;vt=1,Object.defineProperty(j,"__esModule",{value:!0}),j.SignalLink=void 0;let s=class Vt{constructor(i=null,e=null,h=0){this.enabled=!0,this.newLink=!1,this.callback=null,this.prev=i??this,this.next=e??this,this.order=h}isEnabled(){return this.enabled&&!this.newLink}setEnabled(i){this.enabled=i}unlink(){this.callback=null,this.next.prev=this.prev,this.prev.next=this.next}insert(i,e){let h=this.prev;for(;h!==this&&!(h.order<=e);)h=h.prev;const n=new Vt(h,h.next,e);return n.callback=i,h.next=n,n.next.prev=n,n}};return j.SignalLink=s,j}var bt;function Nt(){if(bt)return $;bt=1,Object.defineProperty($,"__esModule",{value:!0}),$.Signal=void 0;const s=Rt(),t=Ht();let i=class{constructor(){this.head=new t.SignalLink,this.hasNewLinks=!1,this.emitDepth=0,this.connectionsCount=0}getConnectionsCount(){return this.connectionsCount}hasConnections(){return this.connectionsCount>0}connect(h,n=0){this.connectionsCount++;const r=this.head.insert(h,n);return this.emitDepth>0&&(this.hasNewLinks=!0,r.newLink=!0),new s.SignalConnectionImpl(r,()=>this.decrementConnectionCount())}decrementConnectionCount(){this.connectionsCount--}disconnect(h){for(let n=this.head.next;n!==this.head;n=n.next)if(n.callback===h)return this.decrementConnectionCount(),n.unlink(),!0;return!1}disconnectAll(){for(;this.head.next!==this.head;)this.head.next.unlink();this.connectionsCount=0}emit(...h){this.emitDepth++;for(let n=this.head.next;n!==this.head;n=n.next)n.isEnabled()&&n.callback&&n.callback.apply(null,h);this.emitDepth--,this.unsetNewLink()}emitCollecting(h,n){this.emitDepth++;for(let r=this.head.next;r!==this.head;r=r.next)if(r.isEnabled()&&r.callback){const o=r.callback.apply(null,n);if(!h.handleResult(o))break}this.emitDepth--,this.unsetNewLink()}unsetNewLink(){if(this.hasNewLinks&&this.emitDepth===0){for(let h=this.head.next;h!==this.head;h=h.next)h.newLink=!1;this.hasNewLinks=!1}}};return $.Signal=i,$}var X={},xt;function Wt(){if(xt)return X;xt=1,Object.defineProperty(X,"__esModule",{value:!0}),X.SignalConnections=void 0;let s=class{constructor(){this.list=[]}add(i){this.list.push(i)}disconnectAll(){for(const i of this.list)i.disconnect();this.list=[]}getCount(){return this.list.length}isEmpty(){return this.list.length===0}};return X.SignalConnections=s,X}var yt;function $t(){return yt||(yt=1,(function(s){Object.defineProperty(s,"__esModule",{value:!0}),s.SignalConnections=s.Signal=s.CollectorWhile0=s.CollectorUntil0=s.CollectorLast=s.CollectorArray=s.Collector=void 0;var t=G();Object.defineProperty(s,"Collector",{enumerable:!0,get:function(){return t.Collector}});var i=Bt();Object.defineProperty(s,"CollectorArray",{enumerable:!0,get:function(){return i.CollectorArray}});var e=Dt();Object.defineProperty(s,"CollectorLast",{enumerable:!0,get:function(){return e.CollectorLast}});var h=Ut();Object.defineProperty(s,"CollectorUntil0",{enumerable:!0,get:function(){return h.CollectorUntil0}});var n=Lt();Object.defineProperty(s,"CollectorWhile0",{enumerable:!0,get:function(){return n.CollectorWhile0}});var r=Nt();Object.defineProperty(s,"Signal",{enumerable:!0,get:function(){return r.Signal}});var o=Wt();Object.defineProperty(s,"SignalConnections",{enumerable:!0,get:function(){return o.SignalConnections}})})(nt)),nt}var f=$t(),zt=Object.defineProperty,jt=(s,t,i)=>t in s?zt(s,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):s[t]=i,P=(s,t,i)=>jt(s,typeof t!="symbol"?t+"":t,i);class Xt{constructor(){P(this,"_isMouseIn"),P(this,"_isDown"),P(this,"onDown"),P(this,"onUp"),P(this,"onUpOut"),P(this,"onOut"),P(this,"onPress"),P(this,"onHover"),this.onPress=new f.Signal,this.onDown=new f.Signal,this.onUp=new f.Signal,this.onHover=new f.Signal,this.onOut=new f.Signal,this.onUpOut=new f.Signal}connectEvents(t){y.any?(t.on("pointerdown",this.processDown,this),t.on("pointerup",this.processUp,this),t.on("pointerupoutside",this.processUpOut,this),t.on("pointerout",this.processOut,this),t.on("pointertap",this.processPress,this),t.on("pointerover",this.processOver,this)):(t.on("mousedown",this.processDown,this),t.on("mouseup",this.processUp,this),t.on("mouseupoutside",this.processUpOut,this),t.on("mouseout",this.processOut,this),t.on("click",this.processPress,this),t.on("mouseover",this.processOver,this))}disconnectEvents(t){y.any?(t.off("pointerdown",this.processDown,this),t.off("pointerup",this.processUp,this),t.off("pointerupoutside",this.processUpOut,this),t.off("pointerout",this.processOut,this),t.off("pointertap",this.processPress,this),t.off("pointerover",this.processOver,this)):(t.off("mousedown",this.processDown,this),t.off("mouseup",this.processUp,this),t.off("mouseupoutside",this.processUpOut,this),t.off("mouseout",this.processOut,this),t.off("click",this.processPress,this),t.off("mouseover",this.processOver,this))}processDown(t){this._isDown=!0,this.onDown.emit(this,t),this.down(t)}processUp(t){this._isDown&&(this.onUp.emit(this,t),this.up(t)),this._isDown=!1}processUpOut(t){this._isDown&&(this.onUp.emit(this,t),this.onUpOut.emit(this,t),this.up(t),this.upOut(t)),this._isDown=!1}processOut(t){this._isMouseIn&&(this._isMouseIn=!1,this.onOut.emit(this,t),this.out(t))}processPress(t){this._isDown=!1,this.onPress.emit(this,t),this.press(t)}processOver(t){y.any||(this._isMouseIn=!0,this.onHover.emit(this,t),this.hover(t))}down(t){}up(t){}upOut(t){}out(t){}press(t){}hover(t){}get isDown(){return this._isDown}}var Yt=Object.defineProperty,qt=(s,t,i)=>t in s?Yt(s,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):s[t]=i,T=(s,t,i)=>qt(s,typeof t!="symbol"?t+"":t,i);class Jt extends Xt{constructor(t){super(),T(this,"_view"),t&&(this.view=t,this.enabled=!0)}set view(t){!!this._view&&this.disconnectEvents(this._view),this._view=t,this.connectEvents(this._view)}get view(){return this._view}set enabled(t){if(!this.view){console.error("Button view is not set. Please set it before enabling the button.");return}this.view.eventMode=t?"static":"auto",this.view.cursor=t?"pointer":"default",!t&&this.isDown&&this.processUp()}get enabled(){return this.view.eventMode==="static"}}class Kt extends g{constructor(t){super(),T(this,"button"),T(this,"onDown"),T(this,"onUp"),T(this,"onUpOut"),T(this,"onOut"),T(this,"onPress"),T(this,"onHover"),this.button=new Jt(this),this.button.enabled=!0,t&&this.addChild(t),this.onPress=this.button.onPress,this.onDown=this.button.onDown,this.onUp=this.button.onUp,this.onHover=this.button.onHover,this.onOut=this.button.onOut,this.onUpOut=this.button.onUpOut}set enabled(t){this.button.enabled=t}get enabled(){return this.button.enabled}}function w(s){return typeof s=="string"?V.from(s):s instanceof b?new V(s):s}var Gt=Object.defineProperty,Zt=(s,t,i)=>t in s?Gt(s,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):s[t]=i,Z=(s,t,i)=>Zt(s,typeof t!="symbol"?t+"":t,i);class Qt extends g{constructor(t,i,e){super(),Z(this,"_triggerEvents",new Set(["onPress"])),Z(this,"innerView"),Z(this,"_active"),Z(this,"onChange"),this.innerView=new g,this.addChild(this.innerView),this.onChange=new f.Signal,t&&(this.views=t),i&&(this.triggerEvents=i),e&&this.views.length>0&&(this.active=e),this.setInteractionEvents()}setInteractionEvents(){this.innerView.eventMode="static",this.innerView.on("pointerdown",()=>this.handleEvents("onDown")),this.innerView.on("pointerup",()=>this.handleEvents("onUp")),this.innerView.on("pointerupoutside",()=>this.handleEvents("onUpOut")),this.innerView.on("pointerout",()=>this.handleEvents("onOut")),this.innerView.on("pointertap",()=>this.handleEvents("onPress")),this.innerView.on("pointerover",()=>this.handleEvents("onHover"))}handleEvents(t){this._triggerEvents.has(t)&&this.switch()}get activeView(){if(this.views&&this.views[this.active])return this.views[this.active]}set views(t){this.innerView.removeChildren(),t.forEach(i=>this.add(i))}get views(){return this.innerView.children}add(t){const i=w(t);this.innerView.addChild(i),i.visible=!1,this.views.length===1&&(this.active=0)}remove(t){this.views[t]&&this.innerView.removeChild(this.views[t])}set triggerEvents(t){this._triggerEvents=new Set(Array.isArray(t)?t:[t])}get triggerEvents(){return Array.from(this._triggerEvents)}switch(t){if(t!==void 0&&t===this.active)return;const i=this.active;if(this.forceSwitch(t),i!==this.active){const e=this.views.length>2?this.active:this.active===1;this.onChange.emit(e)}}forceSwitch(t){if(!(t!==void 0&&t===this.active)){if(this.activeView&&(this.activeView.visible=!1),t!==void 0&&!this.views[t])throw new Error(`View with id ${t} does not exist.`);this._active=t!==void 0?t:this.nextActive,this._active!==void 0&&(this.views[this.active].visible=!0)}}get nextActive(){if(this.views.length!==0)return this.active<this.views.length-1?this.active+1:0}set active(t){this.switch(t)}get active(){return this._active}}function ti(s){s&&(s.parent&&s.parent.removeChild(s),s.destroy(),s=null)}var ii=Object.defineProperty,ei=(s,t,i)=>t in s?ii(s,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):s[t]=i,Q=(s,t,i)=>ei(s,typeof t!="symbol"?t+"":t,i);class Zi extends Qt{constructor(t){super(),Q(this,"labelText"),Q(this,"onCheck"),Q(this,"_style"),Q(this,"_textClass"),this._textClass=t.TextClass??O,this.text=t.text,this.style=t.style,this.checked=t.checked,this.triggerEvents=["onPress"],this.innerView.cursor="pointer",this.onCheck=new f.Signal,this.onChange.connect(()=>this.onCheck.emit(this.checked))}addLabel(t,i){t&&(this.labelText=new this._textClass({text:t??"",style:i??this._style?.text}),this.addChild(this.labelText),this.labelText.cursor="pointer",this.labelText.eventMode="static",this.labelText.on("pointertap",()=>this.checked=!this.checked),this.alignText())}set text(t){if(!t){ti(this.labelText),this.labelText=void 0;return}this.labelText?this.labelText.text=t:this.addLabel(t),this.alignText()}get text(){return this.labelText?.text??""}set style(t){const i=this.checked;this._style=t;const{unchecked:e,checked:h}=t,n=w(e),r=w(h);this.views=[n,r],i?(r.visible=!0,this.active=1):n.visible=!0,this.labelText?(r.visible=!0,this.active=1,t.text&&(this.labelText.style=t.text),this.alignText()):n.visible=!0}get style(){return this._style}alignText(){if(!this.style||!this.labelText||!this.views)return;const t=this.views[0];t&&(this.labelText.x=t.width+10+(this._style?.textOffset?.x??0),this.labelText.y=(t.height-this.labelText.height)/2+(this._style?.textOffset?.y??0))}get checked(){return this.active===1}set checked(t){this.switch(t?1:0)}forceCheck(t){this.forceSwitch(t?1:0)}}var si=Object.defineProperty,hi=(s,t,i)=>t in s?si(s,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):s[t]=i,Y=(s,t,i)=>hi(s,typeof t!="symbol"?t+"":t,i);class Qi extends g{constructor(t){super(),Y(this,"_progress",0),Y(this,"options"),Y(this,"bgCircle",new S),Y(this,"fillCircle",new S),Y(this,"innerView",new g),this.options=t,this.addChild(this.innerView),this.innerView.addChild(this.bgCircle,this.fillCircle),this.addBackground(),t.value&&(this.progress=t.value)}addBackground(){const{backgroundColor:t,lineWidth:i,radius:e,backgroundAlpha:h}=this.options;let n=1;h>0&&(n=h),t===void 0&&(n=1e-6),this.bgCircle.circle(0,0,e).stroke({width:i,color:t,alpha:n})}set progress(t){t>100&&(t=100),t<0&&(t=0),this._progress=t;const{lineWidth:i,radius:e,fillColor:h,fillAlpha:n,cap:r}=this.options;if(t===0&&n===0){this.fillCircle.clear();return}const o=0,a=360/100*t;this.fillCircle.clear().arc(0,0,e,(-90+o)*ct,(-90+o+a)*ct).stroke({width:i,color:h,cap:r,alpha:n})}get progress(){return this._progress}}var ni=Object.defineProperty,ri=(s,t,i)=>t in s?ni(s,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):s[t]=i,k=(s,t,i)=>ri(s,typeof t!="symbol"?t+"":t,i);class oi extends g{constructor(t){super(),k(this,"bg"),k(this,"fill"),k(this,"fillMask"),k(this,"progressStart",0),k(this,"_progress",0),k(this,"options"),k(this,"innerView"),k(this,"_view"),this.options=t,this.innerView=new g,this.addChild(this.innerView),t?.bg&&t?.fill&&this.init(t)}init({bg:t,fill:i,fillPaddings:e,progress:h}){this.setBackground(t),this.setFill(i,e),this.progress=h}setBackground(t){this.bg&&this.bg.destroy(),this.options?.nineSliceSprite&&(typeof t=="string"?this.bg=new C({texture:b.from(t),leftWidth:this.options.nineSliceSprite.bg[0],topHeight:this.options.nineSliceSprite.bg[1],rightWidth:this.options.nineSliceSprite.bg[2],bottomHeight:this.options.nineSliceSprite.bg[3]}):t instanceof b?this.bg=new C({texture:t,leftWidth:this.options.nineSliceSprite.bg[0],topHeight:this.options.nineSliceSprite.bg[1],rightWidth:this.options.nineSliceSprite.bg[2],bottomHeight:this.options.nineSliceSprite.bg[3]}):console.warn(`NineSliceSprite can not be used with views set as Container.
1
+ import{bs as y,_ as g,$ as V,a2 as b,a0 as O,Z as S,bt as ct,bu as C,bv as Mt,bm as lt,bw as at,bx as Et,by as Ft}from"./index-DbQzGLxv.js";var nt={},L={},pt;function G(){if(pt)return L;pt=1,Object.defineProperty(L,"__esModule",{value:!0}),L.Collector=void 0;let s=class{constructor(i){this.emit=(...e)=>{i.emitCollecting(this,e)}}};return L.Collector=s,L}var R={},ft;function Bt(){if(ft)return R;ft=1,Object.defineProperty(R,"__esModule",{value:!0}),R.CollectorArray=void 0;const s=G();let t=class extends s.Collector{constructor(){super(...arguments),this.result=[]}handleResult(e){return this.result.push(e),!0}getResult(){return this.result}reset(){this.result.length=0}};return R.CollectorArray=t,R}var H={},gt;function Dt(){if(gt)return H;gt=1,Object.defineProperty(H,"__esModule",{value:!0}),H.CollectorLast=void 0;const s=G();let t=class extends s.Collector{handleResult(e){return this.result=e,!0}getResult(){return this.result}reset(){delete this.result}};return H.CollectorLast=t,H}var N={},_t;function Ut(){if(_t)return N;_t=1,Object.defineProperty(N,"__esModule",{value:!0}),N.CollectorUntil0=void 0;const s=G();let t=class extends s.Collector{constructor(){super(...arguments),this.result=!1}handleResult(e){return this.result=e,this.result}getResult(){return this.result}reset(){this.result=!1}};return N.CollectorUntil0=t,N}var W={},wt;function Lt(){if(wt)return W;wt=1,Object.defineProperty(W,"__esModule",{value:!0}),W.CollectorWhile0=void 0;const s=G();let t=class extends s.Collector{constructor(){super(...arguments),this.result=!1}handleResult(e){return this.result=e,!this.result}getResult(){return this.result}reset(){this.result=!1}};return W.CollectorWhile0=t,W}var $={},z={},mt;function Rt(){if(mt)return z;mt=1,Object.defineProperty(z,"__esModule",{value:!0}),z.SignalConnectionImpl=void 0;class s{constructor(i,e){this.link=i,this.parentCleanup=e}disconnect(){return this.link!==null?(this.link.unlink(),this.link=null,this.parentCleanup(),this.parentCleanup=null,!0):!1}set enabled(i){this.link&&this.link.setEnabled(i)}get enabled(){return this.link!==null&&this.link.isEnabled()}}return z.SignalConnectionImpl=s,z}var j={},vt;function Ht(){if(vt)return j;vt=1,Object.defineProperty(j,"__esModule",{value:!0}),j.SignalLink=void 0;let s=class Vt{constructor(i=null,e=null,h=0){this.enabled=!0,this.newLink=!1,this.callback=null,this.prev=i??this,this.next=e??this,this.order=h}isEnabled(){return this.enabled&&!this.newLink}setEnabled(i){this.enabled=i}unlink(){this.callback=null,this.next.prev=this.prev,this.prev.next=this.next}insert(i,e){let h=this.prev;for(;h!==this&&!(h.order<=e);)h=h.prev;const n=new Vt(h,h.next,e);return n.callback=i,h.next=n,n.next.prev=n,n}};return j.SignalLink=s,j}var bt;function Nt(){if(bt)return $;bt=1,Object.defineProperty($,"__esModule",{value:!0}),$.Signal=void 0;const s=Rt(),t=Ht();let i=class{constructor(){this.head=new t.SignalLink,this.hasNewLinks=!1,this.emitDepth=0,this.connectionsCount=0}getConnectionsCount(){return this.connectionsCount}hasConnections(){return this.connectionsCount>0}connect(h,n=0){this.connectionsCount++;const r=this.head.insert(h,n);return this.emitDepth>0&&(this.hasNewLinks=!0,r.newLink=!0),new s.SignalConnectionImpl(r,()=>this.decrementConnectionCount())}decrementConnectionCount(){this.connectionsCount--}disconnect(h){for(let n=this.head.next;n!==this.head;n=n.next)if(n.callback===h)return this.decrementConnectionCount(),n.unlink(),!0;return!1}disconnectAll(){for(;this.head.next!==this.head;)this.head.next.unlink();this.connectionsCount=0}emit(...h){this.emitDepth++;for(let n=this.head.next;n!==this.head;n=n.next)n.isEnabled()&&n.callback&&n.callback.apply(null,h);this.emitDepth--,this.unsetNewLink()}emitCollecting(h,n){this.emitDepth++;for(let r=this.head.next;r!==this.head;r=r.next)if(r.isEnabled()&&r.callback){const o=r.callback.apply(null,n);if(!h.handleResult(o))break}this.emitDepth--,this.unsetNewLink()}unsetNewLink(){if(this.hasNewLinks&&this.emitDepth===0){for(let h=this.head.next;h!==this.head;h=h.next)h.newLink=!1;this.hasNewLinks=!1}}};return $.Signal=i,$}var X={},xt;function Wt(){if(xt)return X;xt=1,Object.defineProperty(X,"__esModule",{value:!0}),X.SignalConnections=void 0;let s=class{constructor(){this.list=[]}add(i){this.list.push(i)}disconnectAll(){for(const i of this.list)i.disconnect();this.list=[]}getCount(){return this.list.length}isEmpty(){return this.list.length===0}};return X.SignalConnections=s,X}var yt;function $t(){return yt||(yt=1,(function(s){Object.defineProperty(s,"__esModule",{value:!0}),s.SignalConnections=s.Signal=s.CollectorWhile0=s.CollectorUntil0=s.CollectorLast=s.CollectorArray=s.Collector=void 0;var t=G();Object.defineProperty(s,"Collector",{enumerable:!0,get:function(){return t.Collector}});var i=Bt();Object.defineProperty(s,"CollectorArray",{enumerable:!0,get:function(){return i.CollectorArray}});var e=Dt();Object.defineProperty(s,"CollectorLast",{enumerable:!0,get:function(){return e.CollectorLast}});var h=Ut();Object.defineProperty(s,"CollectorUntil0",{enumerable:!0,get:function(){return h.CollectorUntil0}});var n=Lt();Object.defineProperty(s,"CollectorWhile0",{enumerable:!0,get:function(){return n.CollectorWhile0}});var r=Nt();Object.defineProperty(s,"Signal",{enumerable:!0,get:function(){return r.Signal}});var o=Wt();Object.defineProperty(s,"SignalConnections",{enumerable:!0,get:function(){return o.SignalConnections}})})(nt)),nt}var f=$t(),zt=Object.defineProperty,jt=(s,t,i)=>t in s?zt(s,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):s[t]=i,P=(s,t,i)=>jt(s,typeof t!="symbol"?t+"":t,i);class Xt{constructor(){P(this,"_isMouseIn"),P(this,"_isDown"),P(this,"onDown"),P(this,"onUp"),P(this,"onUpOut"),P(this,"onOut"),P(this,"onPress"),P(this,"onHover"),this.onPress=new f.Signal,this.onDown=new f.Signal,this.onUp=new f.Signal,this.onHover=new f.Signal,this.onOut=new f.Signal,this.onUpOut=new f.Signal}connectEvents(t){y.any?(t.on("pointerdown",this.processDown,this),t.on("pointerup",this.processUp,this),t.on("pointerupoutside",this.processUpOut,this),t.on("pointerout",this.processOut,this),t.on("pointertap",this.processPress,this),t.on("pointerover",this.processOver,this)):(t.on("mousedown",this.processDown,this),t.on("mouseup",this.processUp,this),t.on("mouseupoutside",this.processUpOut,this),t.on("mouseout",this.processOut,this),t.on("click",this.processPress,this),t.on("mouseover",this.processOver,this))}disconnectEvents(t){y.any?(t.off("pointerdown",this.processDown,this),t.off("pointerup",this.processUp,this),t.off("pointerupoutside",this.processUpOut,this),t.off("pointerout",this.processOut,this),t.off("pointertap",this.processPress,this),t.off("pointerover",this.processOver,this)):(t.off("mousedown",this.processDown,this),t.off("mouseup",this.processUp,this),t.off("mouseupoutside",this.processUpOut,this),t.off("mouseout",this.processOut,this),t.off("click",this.processPress,this),t.off("mouseover",this.processOver,this))}processDown(t){this._isDown=!0,this.onDown.emit(this,t),this.down(t)}processUp(t){this._isDown&&(this.onUp.emit(this,t),this.up(t)),this._isDown=!1}processUpOut(t){this._isDown&&(this.onUp.emit(this,t),this.onUpOut.emit(this,t),this.up(t),this.upOut(t)),this._isDown=!1}processOut(t){this._isMouseIn&&(this._isMouseIn=!1,this.onOut.emit(this,t),this.out(t))}processPress(t){this._isDown=!1,this.onPress.emit(this,t),this.press(t)}processOver(t){y.any||(this._isMouseIn=!0,this.onHover.emit(this,t),this.hover(t))}down(t){}up(t){}upOut(t){}out(t){}press(t){}hover(t){}get isDown(){return this._isDown}}var Yt=Object.defineProperty,qt=(s,t,i)=>t in s?Yt(s,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):s[t]=i,T=(s,t,i)=>qt(s,typeof t!="symbol"?t+"":t,i);class Jt extends Xt{constructor(t){super(),T(this,"_view"),t&&(this.view=t,this.enabled=!0)}set view(t){!!this._view&&this.disconnectEvents(this._view),this._view=t,this.connectEvents(this._view)}get view(){return this._view}set enabled(t){if(!this.view){console.error("Button view is not set. Please set it before enabling the button.");return}this.view.eventMode=t?"static":"auto",this.view.cursor=t?"pointer":"default",!t&&this.isDown&&this.processUp()}get enabled(){return this.view.eventMode==="static"}}class Kt extends g{constructor(t){super(),T(this,"button"),T(this,"onDown"),T(this,"onUp"),T(this,"onUpOut"),T(this,"onOut"),T(this,"onPress"),T(this,"onHover"),this.button=new Jt(this),this.button.enabled=!0,t&&this.addChild(t),this.onPress=this.button.onPress,this.onDown=this.button.onDown,this.onUp=this.button.onUp,this.onHover=this.button.onHover,this.onOut=this.button.onOut,this.onUpOut=this.button.onUpOut}set enabled(t){this.button.enabled=t}get enabled(){return this.button.enabled}}function w(s){return typeof s=="string"?V.from(s):s instanceof b?new V(s):s}var Gt=Object.defineProperty,Zt=(s,t,i)=>t in s?Gt(s,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):s[t]=i,Z=(s,t,i)=>Zt(s,typeof t!="symbol"?t+"":t,i);class Qt extends g{constructor(t,i,e){super(),Z(this,"_triggerEvents",new Set(["onPress"])),Z(this,"innerView"),Z(this,"_active"),Z(this,"onChange"),this.innerView=new g,this.addChild(this.innerView),this.onChange=new f.Signal,t&&(this.views=t),i&&(this.triggerEvents=i),e&&this.views.length>0&&(this.active=e),this.setInteractionEvents()}setInteractionEvents(){this.innerView.eventMode="static",this.innerView.on("pointerdown",()=>this.handleEvents("onDown")),this.innerView.on("pointerup",()=>this.handleEvents("onUp")),this.innerView.on("pointerupoutside",()=>this.handleEvents("onUpOut")),this.innerView.on("pointerout",()=>this.handleEvents("onOut")),this.innerView.on("pointertap",()=>this.handleEvents("onPress")),this.innerView.on("pointerover",()=>this.handleEvents("onHover"))}handleEvents(t){this._triggerEvents.has(t)&&this.switch()}get activeView(){if(this.views&&this.views[this.active])return this.views[this.active]}set views(t){this.innerView.removeChildren(),t.forEach(i=>this.add(i))}get views(){return this.innerView.children}add(t){const i=w(t);this.innerView.addChild(i),i.visible=!1,this.views.length===1&&(this.active=0)}remove(t){this.views[t]&&this.innerView.removeChild(this.views[t])}set triggerEvents(t){this._triggerEvents=new Set(Array.isArray(t)?t:[t])}get triggerEvents(){return Array.from(this._triggerEvents)}switch(t){if(t!==void 0&&t===this.active)return;const i=this.active;if(this.forceSwitch(t),i!==this.active){const e=this.views.length>2?this.active:this.active===1;this.onChange.emit(e)}}forceSwitch(t){if(!(t!==void 0&&t===this.active)){if(this.activeView&&(this.activeView.visible=!1),t!==void 0&&!this.views[t])throw new Error(`View with id ${t} does not exist.`);this._active=t!==void 0?t:this.nextActive,this._active!==void 0&&(this.views[this.active].visible=!0)}}get nextActive(){if(this.views.length!==0)return this.active<this.views.length-1?this.active+1:0}set active(t){this.switch(t)}get active(){return this._active}}function ti(s){s&&(s.parent&&s.parent.removeChild(s),s.destroy(),s=null)}var ii=Object.defineProperty,ei=(s,t,i)=>t in s?ii(s,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):s[t]=i,Q=(s,t,i)=>ei(s,typeof t!="symbol"?t+"":t,i);class Zi extends Qt{constructor(t){super(),Q(this,"labelText"),Q(this,"onCheck"),Q(this,"_style"),Q(this,"_textClass"),this._textClass=t.TextClass??O,this.text=t.text,this.style=t.style,this.checked=t.checked,this.triggerEvents=["onPress"],this.innerView.cursor="pointer",this.onCheck=new f.Signal,this.onChange.connect(()=>this.onCheck.emit(this.checked))}addLabel(t,i){t&&(this.labelText=new this._textClass({text:t??"",style:i??this._style?.text}),this.addChild(this.labelText),this.labelText.cursor="pointer",this.labelText.eventMode="static",this.labelText.on("pointertap",()=>this.checked=!this.checked),this.alignText())}set text(t){if(!t){ti(this.labelText),this.labelText=void 0;return}this.labelText?this.labelText.text=t:this.addLabel(t),this.alignText()}get text(){return this.labelText?.text??""}set style(t){const i=this.checked;this._style=t;const{unchecked:e,checked:h}=t,n=w(e),r=w(h);this.views=[n,r],i?(r.visible=!0,this.active=1):n.visible=!0,this.labelText?(r.visible=!0,this.active=1,t.text&&(this.labelText.style=t.text),this.alignText()):n.visible=!0}get style(){return this._style}alignText(){if(!this.style||!this.labelText||!this.views)return;const t=this.views[0];t&&(this.labelText.x=t.width+10+(this._style?.textOffset?.x??0),this.labelText.y=(t.height-this.labelText.height)/2+(this._style?.textOffset?.y??0))}get checked(){return this.active===1}set checked(t){this.switch(t?1:0)}forceCheck(t){this.forceSwitch(t?1:0)}}var si=Object.defineProperty,hi=(s,t,i)=>t in s?si(s,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):s[t]=i,Y=(s,t,i)=>hi(s,typeof t!="symbol"?t+"":t,i);class Qi extends g{constructor(t){super(),Y(this,"_progress",0),Y(this,"options"),Y(this,"bgCircle",new S),Y(this,"fillCircle",new S),Y(this,"innerView",new g),this.options=t,this.addChild(this.innerView),this.innerView.addChild(this.bgCircle,this.fillCircle),this.addBackground(),t.value&&(this.progress=t.value)}addBackground(){const{backgroundColor:t,lineWidth:i,radius:e,backgroundAlpha:h}=this.options;let n=1;h>0&&(n=h),t===void 0&&(n=1e-6),this.bgCircle.circle(0,0,e).stroke({width:i,color:t,alpha:n})}set progress(t){t>100&&(t=100),t<0&&(t=0),this._progress=t;const{lineWidth:i,radius:e,fillColor:h,fillAlpha:n,cap:r}=this.options;if(t===0&&n===0){this.fillCircle.clear();return}const o=0,a=360/100*t;this.fillCircle.clear().arc(0,0,e,(-90+o)*ct,(-90+o+a)*ct).stroke({width:i,color:h,cap:r,alpha:n})}get progress(){return this._progress}}var ni=Object.defineProperty,ri=(s,t,i)=>t in s?ni(s,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):s[t]=i,k=(s,t,i)=>ri(s,typeof t!="symbol"?t+"":t,i);class oi extends g{constructor(t){super(),k(this,"bg"),k(this,"fill"),k(this,"fillMask"),k(this,"progressStart",0),k(this,"_progress",0),k(this,"options"),k(this,"innerView"),k(this,"_view"),this.options=t,this.innerView=new g,this.addChild(this.innerView),t?.bg&&t?.fill&&this.init(t)}init({bg:t,fill:i,fillPaddings:e,progress:h}){this.setBackground(t),this.setFill(i,e),this.progress=h}setBackground(t){this.bg&&this.bg.destroy(),this.options?.nineSliceSprite&&(typeof t=="string"?this.bg=new C({texture:b.from(t),leftWidth:this.options.nineSliceSprite.bg[0],topHeight:this.options.nineSliceSprite.bg[1],rightWidth:this.options.nineSliceSprite.bg[2],bottomHeight:this.options.nineSliceSprite.bg[3]}):t instanceof b?this.bg=new C({texture:t,leftWidth:this.options.nineSliceSprite.bg[0],topHeight:this.options.nineSliceSprite.bg[1],rightWidth:this.options.nineSliceSprite.bg[2],bottomHeight:this.options.nineSliceSprite.bg[3]}):console.warn(`NineSliceSprite can not be used with views set as Container.
2
2
  Pass the texture or texture name as instead of the Container extended instance.`)),this.bg||(this.bg=w(t)),this.innerView.addChildAt(this.bg,0)}setFill(t,i){if(this.fill&&this.fill.destroy(),this.bg instanceof V&&t===this.bg){console.warn("Can not use same Sprite instance for bg and fill.");return}this.options?.nineSliceSprite?typeof t=="string"||t instanceof b?this.fill=new C({texture:typeof t=="string"?b.from(t):t,leftWidth:this.options.nineSliceSprite.fill[0],topHeight:this.options.nineSliceSprite.fill[1],rightWidth:this.options.nineSliceSprite.fill[2],bottomHeight:this.options.nineSliceSprite.fill[3]}):(console.warn(`NineSliceSprite can not be used with views set as Container.
3
3
  Pass the texture or texture name as instead of the Container extended instance.`),this.fill=w(t)):this.fill=w(t),this.innerView.addChildAt(this.fill,1);const e=i?.left??0,h=i?.top??0;this.fill.x=e,this.fill.y=h,this.fillMask&&(this.fill.mask=null,this.fillMask.destroy());const n=this.fill.width/2,r=this.fill.width/2,o=this.fill.height/2,a=this.fill.height/2;let l=b.WHITE;this.fill instanceof V&&this.fill.texture&&(l=this.fill.texture),this.fillMask=new C({texture:l,leftWidth:n,topHeight:o,rightWidth:r,bottomHeight:a}),this.fillMask.position.copyFrom(this.fill),this.addChild(this.fillMask),this.fill.mask=this.fillMask}validate(t){return t=Math.round(t),t<0?0:t>100?100:t}set progress(t){this._progress=this.validate(t),this.fill&&this.fillMask&&(this.fill.mask=null,this.fillMask.width=this.fill.width/100*(this._progress-this.progressStart),this.fillMask.x=this.progressStart/100*this.fill.width+this.fill.x,this.fillMask.height=this.fill.height,this.fill.mask=this.fillMask)}get progress(){return this._progress}set width(t){if(this.options?.nineSliceSprite){if(this.bg&&(this.bg.width=t),this.fill){const i=this.options.fillPaddings?.left??0,e=this.options.fillPaddings?.right??0;this.fill.width=t-i-e,this.fillMask.width=t-i-e}this.progress=this._progress}else super.width=t}get width(){return super.width}set height(t){if(this.options?.nineSliceSprite){if(this.bg&&(this.bg.height=t),this.fill){const i=this.options.fillPaddings?.top??0,e=this.options.fillPaddings?.bottom??0;this.fill.height=t-i-e,this.fillMask.height=t-i-e}this.progress=this._progress}else super.height=t}get height(){return super.height}setSize(t,i){if(this.options?.nineSliceSprite){if(this.bg&&this.bg.setSize(t,i),this.fill){typeof t=="object"?(i=t.height??t.width,t=t.width):i=i??t;const e=this.options.fillPaddings?.top??0,h=this.options.fillPaddings?.bottom??0,n=this.options.fillPaddings?.left??0,r=this.options.fillPaddings?.right??0;this.fill.setSize(t-n-r,i-e-h),this.fillMask.setSize(t-n-r,i-e-h)}this.progress=this._progress}else super.setSize(t,i)}}var ai=Object.defineProperty,li=(s,t,i)=>t in s?ai(s,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):s[t]=i,m=(s,t,i)=>li(s,typeof t!="symbol"?t+"":t,i);class Pt extends oi{constructor(t){super(t),m(this,"_slider1"),m(this,"_slider2"),m(this,"value1Text"),m(this,"value2Text"),m(this,"_value1"),m(this,"_value2"),m(this,"dragging",0),m(this,"_min",0),m(this,"_max",100),m(this,"_step",1),m(this,"startX"),m(this,"startUpdateValue1"),m(this,"startUpdateValue2"),m(this,"settings"),this.settings=t,this.slider1=t.slider1,this.slider2=t.slider2,this.min=t.min??0,this.max=t.max??100}init(t){super.init(t),this.fill&&(this.fill.eventMode="none")}set slider1(t){if(t&&(this._slider1&&(this.slider1.removeAllListeners(),this.slider1.destroy()),this._slider1=this.createSlider(t),this.settings.showValue&&!this.value1Text)){const i=this.settings.valueTextClass??O;this.value1Text=new i({text:"",style:this.settings.valueTextStyle||{fill:16777215}}),this.value1Text.anchor.set(.5),this.addChild(this.value1Text)}}get slider1(){return this._slider1}set slider2(t){if(t&&(this._slider2&&(this.slider2.removeAllListeners(),this.slider2.destroy()),this._slider2=this.createSlider(t),this.settings.showValue&&!this.value2Text)){const i=this.settings.valueTextClass??O;this.value2Text=new i({text:"",style:this.settings.valueTextStyle||{fill:16777215}}),this.value2Text.anchor.set(.5),this.addChild(this.value2Text)}}get slider2(){return this._slider2}setBackground(t){this.bg&&this.bg.removeAllListeners(),super.setBackground(t),this.activateBG()}activateBG(){this.bg.eventMode="static",this.bg.on("pointerdown",this.startUpdate,this).on("globalpointermove",this.update,this).on("pointerup",this.endUpdate,this).on("pointerupoutside",this.endUpdate,this)}createSlider(t){const i=w(t),e=n=>{this.bg&&(n.currentTarget=this.bg),this.startUpdate(n)};i.eventMode="static",i.on("pointerdown",e).on("pointerup",this.endUpdate,this).on("pointerupoutside",this.endUpdate,this),i.x=i.width/2;const h=new g;return h.addChild(i),i instanceof V&&i.anchor.set(.5),h.y=this.bg?.height?this.bg?.height/2:0,this.addChild(h),h}startUpdate(t){this.dragging=1;const i=t.currentTarget;this.startX=i.parent.worldTransform.applyInverse(t.global).x,this.startUpdateValue1=this._value1,this.startUpdateValue2=this._value2,this.update(t)}endUpdate(){this.dragging&&(this.dragging=0,(this.startX||this.startUpdateValue1!==this._value1||this.startUpdateValue2!==this._value2)&&this.change(),this.startUpdateValue1=null,this.startUpdateValue2=null)}onClick(){this.change()}update(t){const i=t.currentTarget,{x:e}=i.parent.worldTransform.applyInverse(t.global);e!==this.startX&&(this.startX=null)}change(){}set max(t){this._max=t}get max(){return this._max}set min(t){this._min=t}get min(){return this._min}set step(t){this._step=t}get step(){return this._step}}var di=Object.defineProperty,ui=(s,t,i)=>t in s?di(s,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):s[t]=i,tt=(s,t,i)=>ui(s,typeof t!="symbol"?t+"":t,i);class te extends Pt{constructor(t){super(t),tt(this,"sliderOptions"),tt(this,"activeValue"),tt(this,"onChange",new f.Signal),tt(this,"onUpdate",new f.Signal),this.sliderOptions=t,this.setInitialState()}setInitialState(){this.validateValues();const{value1:t,value2:i}=this.sliderOptions;this.updateProgress(t,i),this.value2=i,this.value1=t}updateProgress(t=this.value1,i=this.value2){this.progressStart=(t-this.min)/(this.max-this.min)*100,this.progress=(i-this.min)/(this.max-this.min)*100}validateValues(){this.sliderOptions.value1||(this.sliderOptions.value1=this.min),this.sliderOptions.value2||(this.sliderOptions.value2=this.sliderOptions.max),this.sliderOptions.value2<this.sliderOptions.value1&&(this.sliderOptions.value2=this.sliderOptions.value1),this.sliderOptions.value1<this.sliderOptions.min&&(this.sliderOptions.value1=this.sliderOptions.min),this.sliderOptions.value1>this.sliderOptions.max&&(this.sliderOptions.value1=this.sliderOptions.max),this.sliderOptions.value2>this.sliderOptions.max&&(this.sliderOptions.value2=this.sliderOptions.max)}get value1(){return this._value1}set value1(t){t!==this._value1&&(t<this.min&&(t=this.min),t>this._value2&&(t=this._value2),this._value1=t,this.updateSlider1(),this.onUpdate?.emit(this.value1,this.value2))}get value2(){return this._value2}set value2(t){t!==this._value2&&(t<this._value1&&(t=this._value1),t>this.max&&(t=this.max),this._value2=t,this.updateSlider2(),this.onUpdate?.emit(this.value1,this.value2))}update(t){if(super.update(t),!this.dragging)return;const i=t.currentTarget,{x:e}=i.parent.worldTransform.applyInverse(t.global),h=Math.abs(e-this._slider1.x-this._slider1.width),n=Math.abs(e-this._slider2.x);this.activeValue||(this.slider1&&e<this.slider1.x?this.activeValue="value1":this.slider2&&e>this.slider2.x?this.activeValue="value2":this.activeValue=h<n?"value1":"value2");const r=this.validate(e/this.bg?.width*100);this.activeValue==="value1"?(this.progressStart=r,this.value1=this.min+(this.max-this.min)/100*r,this.updateProgress(this.value1,this.value2)):(this.progress=r,this.value2=this.min+(this.max-this.min)/100*r,this.updateProgress(this.value1,this.value2))}endUpdate(){super.endUpdate(),this.activeValue=null}change(){this.onChange?.emit(this.value1,this.value2)}set slider1(t){super.slider1=t,this.updateSlider1()}get slider1(){return this._slider1}set slider2(t){super.slider2=t,this.updateSlider2()}get slider2(){return this._slider2}updateSlider1(){if(this.updateProgress(this.value1,this.value2),this._slider1.x=this.bg?.width/100*this.progressStart-this._slider1.width/2,this._slider1.y=this.bg?.height/2,this._slider2&&this._slider1.x>this._slider2.x&&(this._slider1.x=this._slider2.x),this.sliderOptions?.showValue){this.value1Text.text=`${Math.round(this.value1)}`;const t=this._slider1.x+this._slider1.width/2,i=this._slider1.y;this.value1Text.x=t+(this.sliderOptions.valueTextOffset?.x??0),this.value1Text.y=i+(this.sliderOptions.valueTextOffset?.y??0)}}updateSlider2(){if(this.updateProgress(this.value1,this.value2),this._slider2.x=this.bg?.width/100*this.progress-this._slider2.width/2,this._slider2.y=this.bg?.height/2,this._slider2.x<this._slider1.x&&(this._slider2.x=this._slider1.x),this.sliderOptions?.showValue){this.value2Text.text=`${Math.round(this.value2)}`;const t=this._slider2.x+this._slider2.width/2,i=this._slider2.y;this.value2Text.x=t+(this.sliderOptions.valueTextOffset?.x??0),this.value2Text.y=i+(this.sliderOptions.valueTextOffset?.y??0)}}set width(t){super.width=t,this.updateSlider1(),this.updateSlider2()}get width(){return super.width}set height(t){super.height=t,this.updateSlider1(),this.updateSlider2()}get height(){return super.height}setSize(t,i){super.setSize(t,i),this.updateSlider1(),this.updateSlider2()}}/*!
4
4
  * tweedle.js - v2.1.0
@@ -0,0 +1 @@
1
+ .vgai-asset-library-panel{width:100%;height:100%;min-width:0;min-height:0;overflow:hidden}.vgai-asset-library-navigator{display:flex;flex-direction:column;width:100%;height:100%;min-width:0;min-height:0;color:var(--vgai-text-1);background:var(--vgai-bg-1)}.vgai-asset-library-navigator__controls{display:flex;flex-direction:column;gap:5px;padding:6px;border-bottom:1px solid var(--vgai-border-1);background:var(--vgai-bg-2)}.vgai-asset-library-navigator__search-row{display:flex;gap:4px}.vgai-asset-library-navigator__search-row>.vgai-input{width:100%;min-width:0;box-sizing:border-box}.vgai-asset-library-navigator__filters{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px}.vgai-asset-library-navigator__filters .vgai-select{width:100%;min-width:0}.vgai-asset-library-navigator__status{color:var(--vgai-text-3);font-size:10px}.vgai-asset-library-navigator__results{flex:1;min-height:0;overflow:auto;padding:4px}.vgai-asset-library-navigator__result-space{position:relative}.vgai-asset-library-navigator__filter-drawer{min-height:0;max-height:58%;overflow:auto;border-bottom:1px solid var(--vgai-border-1);background:var(--vgai-bg-2)}.vgai-asset-library-navigator__filter-heading{position:sticky;z-index:1;top:0;display:flex;align-items:center;justify-content:space-between;padding:5px 7px;border-bottom:1px solid var(--vgai-border-1);background:var(--vgai-bg-2);color:var(--vgai-text-2);font-size:10px;font-weight:650}.vgai-asset-library-navigator__source-filters{display:block;overflow:visible;padding:10px;border:0;background:var(--vgai-bg-2)}.vgai-asset-library-navigator__save-search{width:calc(100% - 12px);margin:6px 6px 0}.vgai-asset-library-row{position:absolute;right:0;left:0;width:100%;min-width:0;min-height:52px;display:flex;align-items:center;gap:8px;padding:5px;border:1px solid transparent;border-radius:var(--vgai-radius-sm, 3px);background:transparent;color:var(--vgai-text-1);text-align:left}.vgai-asset-library-row:hover,.vgai-asset-library-row[aria-selected=true]{background:var(--vgai-accent-muted)}.vgai-asset-library-row[aria-selected=true]{border-color:var(--vgai-accent)}.vgai-asset-library-row .vgai-asset-card__preview{width:44px;height:40px;flex:0 0 44px;aspect-ratio:auto}.vgai-asset-library-row__copy{min-width:0;display:flex;flex:1;flex-direction:column;gap:2px}.vgai-asset-library-row__name,.vgai-asset-library-row__meta{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vgai-asset-library-row__name{font-size:11px;font-weight:550}.vgai-asset-library-row__meta{color:var(--vgai-text-3);font-size:10px}.vgai-asset-library-navigator__loading{position:absolute;right:8px;bottom:8px;color:var(--vgai-text-2);font-size:10px}.vgai-project-assets-toolbar{flex:0 0 auto;border-bottom:1px solid var(--vgai-border-1);background:var(--vgai-bg-2)}.vgai-project-assets-toolbar__row{width:100%;min-width:0;min-height:28px;box-sizing:border-box;gap:4px;padding:2px 4px;border:0;background:transparent}.vgai-project-assets-toolbar__row+.vgai-project-assets-toolbar__row{border-top:1px solid var(--vgai-border-1)}.vgai-project-assets-toolbar__select{min-width:0;flex:1 1 64px;width:64px}.vgai-project-assets-toolbar__more{position:relative;flex:0 0 auto}.vgai-project-assets-toolbar__menu{position:absolute;z-index:1000;top:calc(100% + 3px);right:0;min-width:170px}.vgai-project-assets-results{background:var(--vgai-bg-0);box-shadow:inset 0 1px 0 var(--vgai-border-1)}.vgai-project-asset-entry{box-sizing:border-box;border:1px solid var(--vgai-border-1);background:var(--vgai-bg-1);transition:border-color 90ms ease,background-color 90ms ease}.vgai-project-asset-entry:hover{border-color:var(--vgai-border-2);background:var(--vgai-bg-2)}.vgai-project-asset-entry[data-selected=true]{border-color:var(--vgai-accent);background:var(--vgai-accent-muted);box-shadow:inset 0 0 0 1px var(--vgai-accent)}.vgai-project-asset-entry__preview{box-sizing:border-box;border:1px solid var(--vgai-border-1);background:linear-gradient(45deg,rgb(255 255 255 / 2%) 25%,transparent 25%) 0 0 / 12px 12px,linear-gradient(-45deg,rgb(255 255 255 / 2%) 25%,transparent 25%) 0 6px / 12px 12px,var(--vgai-bg-inset)}.vgai-project-asset-entry[data-view=list]{border-color:transparent;background:transparent}.vgai-project-asset-entry[data-view=list] .vgai-project-asset-entry__preview{border:0;background:transparent}.vgai-asset-editor button:focus-visible,.vgai-asset-browser button:focus-visible,.vgai-asset-editor input:focus-visible{outline:0;box-shadow:0 0 0 2px var(--vgai-accent)}.vgai-asset-card__preview{position:relative;width:100%;aspect-ratio:4 / 3;display:flex;align-items:center;justify-content:center;overflow:hidden;border-radius:var(--vgai-radius-sm, 3px);background:var(--vgai-bg-0)}.vgai-asset-card__fallback{position:absolute;right:4px;bottom:4px;padding:2px 4px;border-radius:3px;background:color-mix(in srgb,var(--vgai-bg-0) 88%,transparent);color:var(--vgai-text-2);font-size:9px}.vgai-asset-card__preview img{width:100%;height:100%;object-fit:contain}.vgai-asset-card__name{margin-top:7px;min-height:34px;display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2;font-size:12px;line-height:17px;font-weight:550}.vgai-asset-card__meta,.vgai-asset-card__badges{display:flex;gap:5px;align-items:center;margin-top:4px;color:var(--vgai-text-3);font-size:10px}.vgai-asset-badge{padding:1px 5px;border-radius:999px;background:var(--vgai-bg-3);color:var(--vgai-text-2);white-space:nowrap}.vgai-asset-facet-title{margin:12px 0 5px;color:var(--vgai-text-3);font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.vgai-asset-facet-button{width:100%;min-height:28px;padding:4px 7px;border:0;border-radius:4px;background:transparent;color:var(--vgai-text-2);text-align:left;cursor:pointer}.vgai-asset-facet-button:hover,.vgai-asset-facet-button[aria-pressed=true]{background:var(--vgai-accent-muted);color:var(--vgai-text-1)}.vgai-asset-facet-check{display:flex;align-items:center;gap:6px;min-height:28px;color:var(--vgai-text-2);font-size:11px}.vgai-asset-facet-check .vgai-select{min-width:0;flex:1}.vgai-asset-context-menu{position:fixed;z-index:10000;min-width:190px;padding:4px;border:1px solid var(--vgai-border-2);border-radius:5px;background:var(--vgai-bg-2);box-shadow:0 8px 28px #00000059}.vgai-asset-context-menu button{width:100%;min-height:28px;display:flex;justify-content:space-between;border:0;border-radius:3px;background:transparent;color:var(--vgai-text-1);text-align:left}.vgai-asset-context-menu button:hover:not(:disabled){background:var(--vgai-accent-muted)}.vgai-asset-context-menu kbd{color:var(--vgai-text-3);font:inherit}@media(max-width:900px){.vgai-asset-tree{display:none}}.vgai-asset-editor{width:100%;height:100%;min-width:0;min-height:0;display:flex;flex-direction:column;background:var(--vgai-bg-1)}.vgai-asset-editor__toolbar{min-height:40px;display:flex;align-items:center;gap:7px;padding:6px 10px;border-bottom:1px solid var(--vgai-border-1);background:var(--vgai-bg-2)}.vgai-asset-editor__commands{flex:1;display:flex;flex-wrap:wrap;align-items:center;gap:5px}.vgai-asset-editor__toolbar button,.vgai-asset-editor__toolbar select{min-height:26px;border:1px solid var(--vgai-border-2);border-radius:3px;background:var(--vgai-bg-3);color:var(--vgai-text-1)}.vgai-asset-editor__viewport{flex:1;min-width:0;min-height:0;overflow:auto;position:relative}.vgai-console{display:flex;height:100%;flex-direction:column}.vgai-console .vgai-toolbar{flex:0 0 auto}.vgai-console-filter{width:140px;margin-left:auto}.vgai-console-list{min-height:0;flex:1;overflow-y:auto;font-family:var(--vgai-font-mono);font-size:var(--vgai-font-base);line-height:18px}.vgai-console-empty{padding:var(--vgai-space-6) var(--vgai-space-4);color:var(--vgai-content-dim);font-style:italic}.vgai-console-row{display:flex;align-items:flex-start;padding:1px var(--vgai-space-4);border-bottom:var(--vgai-stroke-resting) solid var(--vgai-boundary-default)}.vgai-console-row[data-level=error]{background:var(--vgai-danger-faint)}.vgai-console-row:hover{background:var(--vgai-neutral-hover)}.vgai-console-count{flex:0 0 auto;margin-left:var(--vgai-space-3);padding:0 var(--vgai-space-2);color:var(--vgai-content-muted);background:var(--vgai-surface-raised);border-radius:var(--vgai-radius-lg);font-size:var(--vgai-font-sm)}.vgai-console [data-console-level=info][aria-pressed=true]{color:var(--vgai-content-primary)}.vgai-console [data-console-level=warn][aria-pressed=true]{color:var(--vgai-warn)}.vgai-console [data-console-level=error][aria-pressed=true]{color:var(--vgai-danger)}.vgai-theme-manager-content{min-height:0;flex:1;align-items:stretch}.vgai-theme-list{width:220px;flex:0 0 auto;padding:var(--vgai-space-4);overflow-y:auto;background:var(--vgai-surface-panel);border-right:var(--vgai-stroke-resting) solid var(--vgai-boundary-default);box-sizing:border-box}.vgai-theme-choice{width:100%;height:auto;min-height:var(--vgai-control-comfortable-height);flex-direction:column;align-items:flex-start;margin-bottom:var(--vgai-space-2);text-align:left}.vgai-theme-choice[aria-pressed=true]{color:var(--vgai-content-primary);background:var(--vgai-accent-muted)}.vgai-theme-list-action{width:100%;margin-top:var(--vgai-space-2)}.vgai-theme-tokens{min-width:0;flex:1;padding:var(--vgai-space-8);overflow-y:auto}.vgai-theme-name-row{margin-bottom:var(--vgai-space-8)}.vgai-theme-name-field{min-width:0;flex:1}.vgai-theme-readonly-note{margin-bottom:var(--vgai-space-8)}.vgai-theme-group{margin-bottom:var(--vgai-space-10)}.vgai-theme-field-grid{display:grid;grid-template-columns:repeat(2,minmax(220px,1fr));gap:var(--vgai-space-4) var(--vgai-space-8)}.vgai-theme-value>.vgai-input{min-width:0;flex:1}.vgai-theme-swatch-input,.vgai-theme-swatch-preview{width:24px;height:24px;flex:0 0 auto;padding:1px;border:var(--vgai-stroke-resting) solid var(--vgai-boundary-default);border-radius:var(--vgai-radius-sm);box-sizing:border-box}.vgai-theme-swatch-input{background:transparent;cursor:pointer}.vgai-theme-message{margin-right:auto}@media(max-width:760px){.vgai-theme-list{width:180px}.vgai-theme-field-grid{grid-template-columns:minmax(0,1fr)}}.vgai-project-header{position:relative;display:flex;height:var(--vgai-command-bar-height);flex:0 0 auto;align-items:center;padding:0 var(--vgai-space-4);color:var(--vgai-content-primary);background:var(--vgai-surface-chrome);border-bottom:var(--vgai-stroke-resting) solid var(--vgai-boundary-default);font-size:var(--vgai-font-base);pointer-events:auto;user-select:none;box-sizing:border-box}.vgai-project-header-left{position:relative;display:flex;min-width:0;flex:1}.vgai-project-trigger{display:flex;min-width:0;align-items:center;gap:var(--vgai-space-3);overflow:hidden;white-space:nowrap}.vgai-project-app-menus,.vgai-project-transport{flex:0 0 auto}.vgai-project-menu{position:absolute;top:100%;left:0;min-width:190px;margin-top:var(--vgai-space-1)}.vgai-project-path{display:block;max-width:320px;padding:var(--vgai-space-2) var(--vgai-space-4)}.vgai-project-versions{display:grid;grid-template-columns:1fr auto;gap:var(--vgai-space-2) var(--vgai-space-6);padding:var(--vgai-space-3) var(--vgai-space-4) var(--vgai-space-4);color:var(--vgai-content-dim);font-size:var(--vgai-font-sm)}.vgai-project-header-right{min-width:0;flex:1}.vgai-project-header-right>.vgai-btn{padding-inline:var(--vgai-space-4)}.dv-scrollable{position:relative;overflow:hidden}.dv-scrollable .dv-scrollbar{position:absolute;border-radius:2px;background-color:transparent;will-change:background-color,transform;transform:translateZ(0);backface-visibility:hidden;transition-property:background-color;transition-timing-function:ease-in-out;transition-duration:1s;transition-delay:0s}.dv-scrollable .dv-scrollbar-horizontal{bottom:0;left:0;height:4px}.dv-scrollable .dv-scrollbar-vertical{right:0;top:0;width:4px}.dv-scrollable:hover .dv-scrollbar,.dv-scrollable.dv-scrollable-resizing .dv-scrollbar,.dv-scrollable.dv-scrollable-scrolling .dv-scrollbar{background-color:var(--dv-scrollbar-background-color, rgba(255, 255, 255, .25))}.dv-svg{display:inline-block;fill:currentcolor;line-height:1;stroke:currentcolor;stroke-width:0}.dockview-theme-dark{--dv-paneview-active-outline-color: dodgerblue;--dv-tabs-and-actions-container-font-size: 13px;--dv-tabs-and-actions-container-height: 35px;--dv-drag-over-background-color: rgba(83, 89, 93, .5);--dv-drag-over-border-color: transparent;--dv-tabs-container-scrollbar-color: #888;--dv-icon-hover-background-color: rgba(90, 93, 94, .31);--dv-floating-box-shadow: 0 8px 32px rgba(0, 0, 0, .4), 0 2px 8px rgba(0, 0, 0, .25);--dv-floating-border: 1px solid rgba(255, 255, 255, .1);--dv-overlay-z-index: 999;--dv-tab-font-size: inherit;--dv-border-radius: 0px;--dv-tab-margin: 0;--dv-sash-color: transparent;--dv-active-sash-color: transparent;--dv-active-sash-transition-duration: .1s;--dv-active-sash-transition-delay: .5s;--dv-spacing-padding: 0px;--dv-tab-border-radius: 0px;--dv-sash-border-radius: 0px;--dv-dropdown-border-radius: 0px;--dv-tab-close-icon-size: inherit;--dv-floating-group-border: none;--dv-drag-over-border: none;--dv-floating-group-dragging-opacity: .5;--dv-floating-titlebar-height: 22px;--dv-floating-titlebar-background-color: var( --dv-tabs-and-actions-container-background-color );--dv-floating-titlebar-border-bottom: var(--dv-floating-border);--dv-tab-group-color-grey: #5f6368;--dv-tab-group-color-blue: #1a73e8;--dv-tab-group-color-red: #d93025;--dv-tab-group-color-yellow: #f9ab00;--dv-tab-group-color-green: #188038;--dv-tab-group-color-pink: #d01884;--dv-tab-group-color-purple: #a142f4;--dv-tab-group-color-cyan: #007b83;--dv-tab-group-color-orange: #e8710a;--dv-tab-group-chip-padding: 4px 8px;--dv-tab-group-chip-border-radius: 6px;--dv-tab-group-chip-font-size: 11px;--dv-tab-group-line-height: 2px;--dv-tab-group-line-opacity: .6}.dockview-theme-dark .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed{opacity:0;transition:none}.dockview-theme-dark{--dv-group-view-background-color: #1e1e1e;--dv-tabs-and-actions-container-background-color: #252526;--dv-activegroup-visiblepanel-tab-background-color: #1e1e1e;--dv-activegroup-hiddenpanel-tab-background-color: #2d2d2d;--dv-inactivegroup-visiblepanel-tab-background-color: #1e1e1e;--dv-inactivegroup-hiddenpanel-tab-background-color: #2d2d2d;--dv-tab-divider-color: #1e1e1e;--dv-activegroup-visiblepanel-tab-color: white;--dv-activegroup-hiddenpanel-tab-color: #969696;--dv-inactivegroup-visiblepanel-tab-color: #8f8f8f;--dv-inactivegroup-hiddenpanel-tab-color: #626262;--dv-separator-border: rgb(68, 68, 68);--dv-paneview-header-border-color: rgba(204, 204, 204, .2)}.dockview-theme-light{--dv-paneview-active-outline-color: dodgerblue;--dv-tabs-and-actions-container-font-size: 13px;--dv-tabs-and-actions-container-height: 35px;--dv-drag-over-background-color: rgba(83, 89, 93, .5);--dv-drag-over-border-color: transparent;--dv-tabs-container-scrollbar-color: #888;--dv-icon-hover-background-color: rgba(90, 93, 94, .31);--dv-floating-box-shadow: 0 8px 32px rgba(0, 0, 0, .4), 0 2px 8px rgba(0, 0, 0, .25);--dv-floating-border: 1px solid rgba(255, 255, 255, .1);--dv-overlay-z-index: 999;--dv-tab-font-size: inherit;--dv-border-radius: 0px;--dv-tab-margin: 0;--dv-sash-color: transparent;--dv-active-sash-color: transparent;--dv-active-sash-transition-duration: .1s;--dv-active-sash-transition-delay: .5s;--dv-spacing-padding: 0px;--dv-tab-border-radius: 0px;--dv-sash-border-radius: 0px;--dv-dropdown-border-radius: 0px;--dv-tab-close-icon-size: inherit;--dv-floating-group-border: none;--dv-drag-over-border: none;--dv-floating-group-dragging-opacity: .5;--dv-floating-titlebar-height: 22px;--dv-floating-titlebar-background-color: var( --dv-tabs-and-actions-container-background-color );--dv-floating-titlebar-border-bottom: var(--dv-floating-border);--dv-tab-group-color-grey: #5f6368;--dv-tab-group-color-blue: #1a73e8;--dv-tab-group-color-red: #d93025;--dv-tab-group-color-yellow: #f9ab00;--dv-tab-group-color-green: #188038;--dv-tab-group-color-pink: #d01884;--dv-tab-group-color-purple: #a142f4;--dv-tab-group-color-cyan: #007b83;--dv-tab-group-color-orange: #e8710a;--dv-tab-group-chip-padding: 4px 8px;--dv-tab-group-chip-border-radius: 6px;--dv-tab-group-chip-font-size: 11px;--dv-tab-group-line-height: 2px;--dv-tab-group-line-opacity: .6}.dockview-theme-light .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed{opacity:0;transition:none}.dockview-theme-light{--dv-group-view-background-color: white;--dv-tabs-and-actions-container-background-color: #f3f3f3;--dv-activegroup-visiblepanel-tab-background-color: white;--dv-activegroup-hiddenpanel-tab-background-color: #ececec;--dv-inactivegroup-visiblepanel-tab-background-color: white;--dv-inactivegroup-hiddenpanel-tab-background-color: #ececec;--dv-tab-divider-color: white;--dv-activegroup-visiblepanel-tab-color: rgb(51, 51, 51);--dv-activegroup-hiddenpanel-tab-color: rgba(51, 51, 51, .7);--dv-inactivegroup-visiblepanel-tab-color: rgba(51, 51, 51, .7);--dv-inactivegroup-hiddenpanel-tab-color: rgba(51, 51, 51, .35);--dv-separator-border: rgba(128, 128, 128, .35);--dv-paneview-header-border-color: rgb(51, 51, 51);--dv-scrollbar-background-color: rgba(0, 0, 0, .25);--dv-floating-box-shadow: 0 8px 32px rgba(0, 0, 0, .12), 0 2px 8px rgba(0, 0, 0, .08);--dv-floating-border: 1px solid rgba(0, 0, 0, .1)}.dockview-theme-vs{--dv-paneview-active-outline-color: dodgerblue;--dv-tabs-and-actions-container-font-size: 13px;--dv-tabs-and-actions-container-height: 35px;--dv-drag-over-background-color: rgba(83, 89, 93, .5);--dv-drag-over-border-color: transparent;--dv-tabs-container-scrollbar-color: #888;--dv-icon-hover-background-color: rgba(90, 93, 94, .31);--dv-floating-box-shadow: 0 8px 32px rgba(0, 0, 0, .4), 0 2px 8px rgba(0, 0, 0, .25);--dv-floating-border: 1px solid rgba(255, 255, 255, .1);--dv-overlay-z-index: 999;--dv-tab-font-size: inherit;--dv-border-radius: 0px;--dv-tab-margin: 0;--dv-sash-color: transparent;--dv-active-sash-color: transparent;--dv-active-sash-transition-duration: .1s;--dv-active-sash-transition-delay: .5s;--dv-spacing-padding: 0px;--dv-tab-border-radius: 0px;--dv-sash-border-radius: 0px;--dv-dropdown-border-radius: 0px;--dv-tab-close-icon-size: inherit;--dv-floating-group-border: none;--dv-drag-over-border: none;--dv-floating-group-dragging-opacity: .5;--dv-floating-titlebar-height: 22px;--dv-floating-titlebar-background-color: var( --dv-tabs-and-actions-container-background-color );--dv-floating-titlebar-border-bottom: var(--dv-floating-border);--dv-tab-group-color-grey: #5f6368;--dv-tab-group-color-blue: #1a73e8;--dv-tab-group-color-red: #d93025;--dv-tab-group-color-yellow: #f9ab00;--dv-tab-group-color-green: #188038;--dv-tab-group-color-pink: #d01884;--dv-tab-group-color-purple: #a142f4;--dv-tab-group-color-cyan: #007b83;--dv-tab-group-color-orange: #e8710a;--dv-tab-group-chip-padding: 4px 8px;--dv-tab-group-chip-border-radius: 6px;--dv-tab-group-chip-font-size: 11px;--dv-tab-group-line-height: 2px;--dv-tab-group-line-opacity: .6}.dockview-theme-vs .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed{opacity:0;transition:none}.dockview-theme-vs{--dv-group-view-background-color: #1e1e1e;--dv-tabs-and-actions-container-background-color: #252526;--dv-activegroup-visiblepanel-tab-background-color: #1e1e1e;--dv-activegroup-hiddenpanel-tab-background-color: #2d2d2d;--dv-inactivegroup-visiblepanel-tab-background-color: #1e1e1e;--dv-inactivegroup-hiddenpanel-tab-background-color: #2d2d2d;--dv-tab-divider-color: #1e1e1e;--dv-activegroup-hiddenpanel-tab-color: #969696;--dv-inactivegroup-visiblepanel-tab-color: #8f8f8f;--dv-inactivegroup-hiddenpanel-tab-color: #626262;--dv-separator-border: rgb(68, 68, 68);--dv-paneview-header-border-color: rgba(204, 204, 204, .2);--dv-tabs-and-actions-container-background-color: #2d2d30;--dv-tabs-and-actions-container-height: 20px;--dv-tabs-and-actions-container-font-size: 11px;--dv-activegroup-visiblepanel-tab-background-color: #007acc;--dv-inactivegroup-visiblepanel-tab-background-color: #3f3f46;--dv-activegroup-visiblepanel-tab-color: white;--dv-activegroup-hiddenpanel-tab-color: white;--dv-inactivegroup-visiblepanel-tab-color: white;--dv-inactivegroup-hiddenpanel-tab-color: white}.dockview-theme-vs .dv-groupview.dv-active-group>.dv-tabs-and-actions-container{box-sizing:content-box;border-bottom:2px solid var(--dv-activegroup-visiblepanel-tab-background-color)}.dockview-theme-vs .dv-groupview.dv-active-group>.dv-tabs-and-actions-container .dv-tab.dv-active-tab{border-top:2px solid var(--dv-activegroup-visiblepanel-tab-background-color)}.dockview-theme-vs .dv-groupview.dv-active-group>.dv-tabs-and-actions-container .dv-tab.dv-inactive-tab{border-top:2px solid var(--dv-activegroup-hiddenpanel-tab-background-color)}.dockview-theme-vs .dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container{box-sizing:content-box;border-bottom:2px solid var(--dv-inactivegroup-visiblepanel-tab-background-color)}.dockview-theme-vs .dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container .dv-tab.dv-active-tab{border-top:2px solid var(--dv-inactivegroup-visiblepanel-tab-background-color)}.dockview-theme-vs .dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container .dv-tab.dv-inactive-tab{border-top:2px solid var(--dv-inactivegroup-hiddenpanel-tab-background-color)}.dockview-theme-abyss{--dv-paneview-active-outline-color: dodgerblue;--dv-tabs-and-actions-container-font-size: 13px;--dv-tabs-and-actions-container-height: 35px;--dv-drag-over-background-color: rgba(83, 89, 93, .5);--dv-drag-over-border-color: transparent;--dv-tabs-container-scrollbar-color: #888;--dv-icon-hover-background-color: rgba(90, 93, 94, .31);--dv-floating-box-shadow: 0 8px 32px rgba(0, 0, 0, .4), 0 2px 8px rgba(0, 0, 0, .25);--dv-floating-border: 1px solid rgba(255, 255, 255, .1);--dv-overlay-z-index: 999;--dv-tab-font-size: inherit;--dv-border-radius: 0px;--dv-tab-margin: 0;--dv-sash-color: transparent;--dv-active-sash-color: transparent;--dv-active-sash-transition-duration: .1s;--dv-active-sash-transition-delay: .5s;--dv-spacing-padding: 0px;--dv-tab-border-radius: 0px;--dv-sash-border-radius: 0px;--dv-dropdown-border-radius: 0px;--dv-tab-close-icon-size: inherit;--dv-floating-group-border: none;--dv-drag-over-border: none;--dv-floating-group-dragging-opacity: .5;--dv-floating-titlebar-height: 22px;--dv-floating-titlebar-background-color: var( --dv-tabs-and-actions-container-background-color );--dv-floating-titlebar-border-bottom: var(--dv-floating-border);--dv-tab-group-color-grey: #5f6368;--dv-tab-group-color-blue: #1a73e8;--dv-tab-group-color-red: #d93025;--dv-tab-group-color-yellow: #f9ab00;--dv-tab-group-color-green: #188038;--dv-tab-group-color-pink: #d01884;--dv-tab-group-color-purple: #a142f4;--dv-tab-group-color-cyan: #007b83;--dv-tab-group-color-orange: #e8710a;--dv-tab-group-chip-padding: 4px 8px;--dv-tab-group-chip-border-radius: 6px;--dv-tab-group-chip-font-size: 11px;--dv-tab-group-line-height: 2px;--dv-tab-group-line-opacity: .6}.dockview-theme-abyss .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed{opacity:0;transition:none}.dockview-theme-abyss{--dv-color-abyss-dark: #000c18;--dv-color-abyss: #10192c;--dv-color-abyss-light: #1c1c2a;--dv-color-abyss-lighter: #2b2b4a;--dv-color-abyss-accent: rgb(91, 30, 207);--dv-color-abyss-primary-text: white;--dv-color-abyss-secondary-text: rgb(148, 151, 169);--dv-group-view-background-color: var(--dv-color-abyss-dark);--dv-tabs-and-actions-container-background-color: var( --dv-color-abyss-light );--dv-activegroup-visiblepanel-tab-background-color: var( --dv-color-abyss-dark );--dv-activegroup-hiddenpanel-tab-background-color: var(--dv-color-abyss);--dv-inactivegroup-visiblepanel-tab-background-color: var( --dv-color-abyss-dark );--dv-inactivegroup-hiddenpanel-tab-background-color: var(--dv-color-abyss);--dv-tab-divider-color: var(--dv-color-abyss-lighter);--dv-activegroup-visiblepanel-tab-color: white;--dv-activegroup-hiddenpanel-tab-color: rgba(255, 255, 255, .5);--dv-inactivegroup-visiblepanel-tab-color: rgba(255, 255, 255, .5);--dv-inactivegroup-hiddenpanel-tab-color: rgba(255, 255, 255, .25);--dv-separator-border: var(--dv-color-abyss-lighter);--dv-paneview-header-border-color: var(--dv-color-abyss-lighter);--dv-paneview-active-outline-color: #596f99}.dockview-theme-dracula{--dv-paneview-active-outline-color: dodgerblue;--dv-tabs-and-actions-container-font-size: 13px;--dv-tabs-and-actions-container-height: 35px;--dv-drag-over-background-color: rgba(83, 89, 93, .5);--dv-drag-over-border-color: transparent;--dv-tabs-container-scrollbar-color: #888;--dv-icon-hover-background-color: rgba(90, 93, 94, .31);--dv-floating-box-shadow: 0 8px 32px rgba(0, 0, 0, .4), 0 2px 8px rgba(0, 0, 0, .25);--dv-floating-border: 1px solid rgba(255, 255, 255, .1);--dv-overlay-z-index: 999;--dv-tab-font-size: inherit;--dv-border-radius: 0px;--dv-tab-margin: 0;--dv-sash-color: transparent;--dv-active-sash-color: transparent;--dv-active-sash-transition-duration: .1s;--dv-active-sash-transition-delay: .5s;--dv-spacing-padding: 0px;--dv-tab-border-radius: 0px;--dv-sash-border-radius: 0px;--dv-dropdown-border-radius: 0px;--dv-tab-close-icon-size: inherit;--dv-floating-group-border: none;--dv-drag-over-border: none;--dv-floating-group-dragging-opacity: .5;--dv-floating-titlebar-height: 22px;--dv-floating-titlebar-background-color: var( --dv-tabs-and-actions-container-background-color );--dv-floating-titlebar-border-bottom: var(--dv-floating-border);--dv-tab-group-color-grey: #5f6368;--dv-tab-group-color-blue: #1a73e8;--dv-tab-group-color-red: #d93025;--dv-tab-group-color-yellow: #f9ab00;--dv-tab-group-color-green: #188038;--dv-tab-group-color-pink: #d01884;--dv-tab-group-color-purple: #a142f4;--dv-tab-group-color-cyan: #007b83;--dv-tab-group-color-orange: #e8710a;--dv-tab-group-chip-padding: 4px 8px;--dv-tab-group-chip-border-radius: 6px;--dv-tab-group-chip-font-size: 11px;--dv-tab-group-line-height: 2px;--dv-tab-group-line-opacity: .6}.dockview-theme-dracula .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed{opacity:0;transition:none}.dockview-theme-dracula{--dv-group-view-background-color: #282a36;--dv-tabs-and-actions-container-background-color: #191a21;--dv-activegroup-visiblepanel-tab-background-color: #282a36;--dv-activegroup-hiddenpanel-tab-background-color: #21222c;--dv-inactivegroup-visiblepanel-tab-background-color: #282a36;--dv-inactivegroup-hiddenpanel-tab-background-color: #21222c;--dv-tab-divider-color: #191a21;--dv-activegroup-visiblepanel-tab-color: rgb(248, 248, 242);--dv-activegroup-hiddenpanel-tab-color: rgb(98, 114, 164);--dv-inactivegroup-visiblepanel-tab-color: rgba(248, 248, 242, .5);--dv-inactivegroup-hiddenpanel-tab-color: rgba(98, 114, 164, .5);--dv-separator-border: #bd93f9;--dv-paneview-header-border-color: #bd93f9;--dv-paneview-active-outline-color: #6272a4}.dockview-theme-dracula .dv-groupview.dv-active-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab{position:relative}.dockview-theme-dracula .dv-groupview.dv-active-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab:after{position:absolute;left:0;bottom:0;content:"";width:100%;height:1px;background-color:#94527e;z-index:999}.dockview-theme-dracula .dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab{position:relative}.dockview-theme-dracula .dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab:after{position:absolute;left:0;bottom:0;content:"";width:100%;height:1px;background-color:#5e3d5a;z-index:999}.dockview-theme-nord{--dv-paneview-active-outline-color: dodgerblue;--dv-tabs-and-actions-container-font-size: 13px;--dv-tabs-and-actions-container-height: 35px;--dv-drag-over-background-color: rgba(83, 89, 93, .5);--dv-drag-over-border-color: transparent;--dv-tabs-container-scrollbar-color: #888;--dv-icon-hover-background-color: rgba(90, 93, 94, .31);--dv-floating-box-shadow: 0 8px 32px rgba(0, 0, 0, .4), 0 2px 8px rgba(0, 0, 0, .25);--dv-floating-border: 1px solid rgba(255, 255, 255, .1);--dv-overlay-z-index: 999;--dv-tab-font-size: inherit;--dv-border-radius: 0px;--dv-tab-margin: 0;--dv-sash-color: transparent;--dv-active-sash-color: transparent;--dv-active-sash-transition-duration: .1s;--dv-active-sash-transition-delay: .5s;--dv-spacing-padding: 0px;--dv-tab-border-radius: 0px;--dv-sash-border-radius: 0px;--dv-dropdown-border-radius: 0px;--dv-tab-close-icon-size: inherit;--dv-floating-group-border: none;--dv-drag-over-border: none;--dv-floating-group-dragging-opacity: .5;--dv-floating-titlebar-height: 22px;--dv-floating-titlebar-background-color: var( --dv-tabs-and-actions-container-background-color );--dv-floating-titlebar-border-bottom: var(--dv-floating-border);--dv-tab-group-color-grey: #5f6368;--dv-tab-group-color-blue: #1a73e8;--dv-tab-group-color-red: #d93025;--dv-tab-group-color-yellow: #f9ab00;--dv-tab-group-color-green: #188038;--dv-tab-group-color-pink: #d01884;--dv-tab-group-color-purple: #a142f4;--dv-tab-group-color-cyan: #007b83;--dv-tab-group-color-orange: #e8710a;--dv-tab-group-chip-padding: 4px 8px;--dv-tab-group-chip-border-radius: 6px;--dv-tab-group-chip-font-size: 11px;--dv-tab-group-line-height: 2px;--dv-tab-group-line-opacity: .6}.dockview-theme-nord .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed{opacity:0;transition:none}.dockview-theme-nord{--dv-color-nord-polar-0: #2e3440;--dv-color-nord-polar-1: #3b4252;--dv-color-nord-polar-2: #434c5e;--dv-color-nord-polar-3: #4c566a;--dv-color-nord-frost: #88c0d0;--dv-color-nord-frost-2: #81a1c1;--dv-color-nord-snow-0: #eceff4;--dv-color-nord-snow-1: #d8dee9;--dv-group-view-background-color: var(--dv-color-nord-polar-0);--dv-tabs-and-actions-container-background-color: var( --dv-color-nord-polar-1 );--dv-activegroup-visiblepanel-tab-background-color: var( --dv-color-nord-polar-0 );--dv-activegroup-hiddenpanel-tab-background-color: var( --dv-color-nord-polar-2 );--dv-inactivegroup-visiblepanel-tab-background-color: var( --dv-color-nord-polar-1 );--dv-inactivegroup-hiddenpanel-tab-background-color: var( --dv-color-nord-polar-2 );--dv-activegroup-visiblepanel-tab-color: var(--dv-color-nord-snow-0);--dv-activegroup-hiddenpanel-tab-color: var(--dv-color-nord-snow-1);--dv-inactivegroup-visiblepanel-tab-color: #8a9bbf;--dv-inactivegroup-hiddenpanel-tab-color: #5e6f8e;--dv-separator-border: var(--dv-color-nord-polar-3);--dv-paneview-active-outline-color: var(--dv-color-nord-frost);--dv-active-sash-color: var(--dv-color-nord-frost);--dv-scrollbar-background-color: rgba(76, 86, 106, .5)}.dockview-theme-nord .dv-groupview.dv-active-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab{position:relative}.dockview-theme-nord .dv-groupview.dv-active-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab:after{position:absolute;left:0;bottom:0;content:"";width:100%;height:2px;background-color:var(--dv-color-nord-frost);z-index:999}.dockview-theme-nord .dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab{position:relative}.dockview-theme-nord .dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab:after{position:absolute;left:0;bottom:0;content:"";width:100%;height:2px;background-color:var(--dv-color-nord-frost-2);z-index:999}.dockview-theme-nord-spaced{--dv-paneview-active-outline-color: dodgerblue;--dv-tabs-and-actions-container-font-size: 13px;--dv-tabs-and-actions-container-height: 35px;--dv-drag-over-background-color: rgba(83, 89, 93, .5);--dv-drag-over-border-color: transparent;--dv-tabs-container-scrollbar-color: #888;--dv-icon-hover-background-color: rgba(90, 93, 94, .31);--dv-floating-box-shadow: 0 8px 32px rgba(0, 0, 0, .4), 0 2px 8px rgba(0, 0, 0, .25);--dv-floating-border: 1px solid rgba(255, 255, 255, .1);--dv-overlay-z-index: 999;--dv-tab-font-size: inherit;--dv-border-radius: 0px;--dv-tab-margin: 0;--dv-sash-color: transparent;--dv-active-sash-color: transparent;--dv-active-sash-transition-duration: .1s;--dv-active-sash-transition-delay: .5s;--dv-spacing-padding: 0px;--dv-tab-border-radius: 0px;--dv-sash-border-radius: 0px;--dv-dropdown-border-radius: 0px;--dv-tab-close-icon-size: inherit;--dv-floating-group-border: none;--dv-drag-over-border: none;--dv-floating-group-dragging-opacity: .5;--dv-floating-titlebar-height: 22px;--dv-floating-titlebar-background-color: var( --dv-tabs-and-actions-container-background-color );--dv-floating-titlebar-border-bottom: var(--dv-floating-border);--dv-tab-group-color-grey: #5f6368;--dv-tab-group-color-blue: #1a73e8;--dv-tab-group-color-red: #d93025;--dv-tab-group-color-yellow: #f9ab00;--dv-tab-group-color-green: #188038;--dv-tab-group-color-pink: #d01884;--dv-tab-group-color-purple: #a142f4;--dv-tab-group-color-cyan: #007b83;--dv-tab-group-color-orange: #e8710a;--dv-tab-group-chip-padding: 4px 8px;--dv-tab-group-chip-border-radius: 6px;--dv-tab-group-chip-font-size: 11px;--dv-tab-group-line-height: 2px;--dv-tab-group-line-opacity: .6;--dv-spacing-padding: 10px;--dv-tab-font-size: 12px;--dv-border-radius: 12px;--dv-tab-margin: .5rem .25rem;--dv-tabs-and-actions-container-height: 44px;--dv-tab-border-radius: 8px;--dv-sash-border-radius: 4px;--dv-dropdown-border-radius: 8px;--dv-tab-close-icon-size: 8px;--dv-floating-group-border: 2px solid var(--dv-group-view-background-color);--dv-floating-titlebar-background-color: var( --dv-group-view-background-color );--dv-floating-titlebar-border-bottom: none;box-sizing:border-box;padding:var(--dv-spacing-padding);background-color:var(--dv-group-view-background-color)}.dv-shell .dockview-theme-nord-spaced{padding:0}.dockview-theme-nord-spaced .dv-resize-container:has(>.dv-groupview){border-radius:8px}.dockview-theme-nord-spaced .dv-sash{border-radius:var(--dv-sash-border-radius)}.dockview-theme-nord-spaced .dv-drop-target-anchor{border-radius:calc(var(--dv-border-radius) / 4)}.dockview-theme-nord-spaced .dv-drop-target-anchor.dv-drop-target-content{border-radius:var(--dv-border-radius)}.dockview-theme-nord-spaced .dv-resize-container{border-radius:var(--dv-border-radius)!important;border:none}.dockview-theme-nord-spaced .dv-resize-container .dv-groupview{border:var(--dv-floating-group-border)}.dockview-theme-nord-spaced .dv-resize-container>.dv-grid-view{box-sizing:border-box;padding:var(--dv-spacing-padding)}.dockview-theme-nord-spaced .dv-resize-container-with-titlebar>.dv-grid-view{padding-top:0}.dockview-theme-nord-spaced .dv-resize-container-with-titlebar>.dv-floating-titlebar{border-top-left-radius:var(--dv-border-radius);border-top-right-radius:var(--dv-border-radius)}.dockview-theme-nord-spaced .dv-tabs-overflow-container,.dockview-theme-nord-spaced .dv-tabs-overflow-dropdown-default{border-radius:var(--dv-dropdown-border-radius);height:unset!important}.dockview-theme-nord-spaced .dv-render-overlay{border-bottom-left-radius:var(--dv-border-radius);border-bottom-right-radius:var(--dv-border-radius)}.dockview-theme-nord-spaced .dv-tab{border-radius:var(--dv-tab-border-radius)}.dockview-theme-nord-spaced .dv-tab .dv-svg{height:var(--dv-tab-close-icon-size);width:var(--dv-tab-close-icon-size)}.dockview-theme-nord-spaced .dv-tabs-container-vertical .dv-tab{margin:.25rem .5rem}.dockview-theme-nord-spaced .dv-groupview{border-radius:var(--dv-border-radius)}.dockview-theme-nord-spaced .dv-groupview .dv-tabs-and-actions-container{padding:0px calc(var(--dv-border-radius) / 2);border-top-left-radius:var(--dv-border-radius);border-top-right-radius:var(--dv-border-radius)}.dockview-theme-nord-spaced .dv-groupview .dv-tabs-and-actions-container.dv-groupview-header-vertical{padding:calc(var(--dv-border-radius) / 2) 0}.dockview-theme-nord-spaced .dv-groupview .dv-content-container{background-color:var(--dv-tabs-and-actions-container-background-color);border-bottom-left-radius:var(--dv-border-radius);border-bottom-right-radius:var(--dv-border-radius)}.dockview-theme-nord-spaced{--dv-color-nord-polar-0: #2e3440;--dv-color-nord-polar-1: #3b4252;--dv-color-nord-polar-2: #434c5e;--dv-color-nord-polar-3: #4c566a;--dv-color-nord-frost: #88c0d0;--dv-color-nord-frost-2: #81a1c1;--dv-color-nord-snow-0: #eceff4;--dv-color-nord-snow-1: #d8dee9;--dv-group-view-background-color: var(--dv-color-nord-polar-0);--dv-tabs-and-actions-container-background-color: var( --dv-color-nord-polar-1 );--dv-activegroup-visiblepanel-tab-background-color: var( --dv-color-nord-polar-2 );--dv-activegroup-hiddenpanel-tab-background-color: var( --dv-color-nord-polar-1 );--dv-inactivegroup-visiblepanel-tab-background-color: var( --dv-color-nord-polar-2 );--dv-inactivegroup-hiddenpanel-tab-background-color: var( --dv-color-nord-polar-1 );--dv-activegroup-visiblepanel-tab-color: var(--dv-color-nord-snow-0);--dv-activegroup-hiddenpanel-tab-color: var(--dv-color-nord-snow-1);--dv-inactivegroup-visiblepanel-tab-color: #8a9bbf;--dv-inactivegroup-hiddenpanel-tab-color: #5e6f8e;--dv-separator-border: transparent;--dv-paneview-active-outline-color: var(--dv-color-nord-frost);--dv-active-sash-color: var(--dv-color-nord-frost);--dv-scrollbar-background-color: rgba(76, 86, 106, .5);--dv-floating-group-border: 2px solid var(--dv-color-nord-polar-0)}.dockview-theme-catppuccin-mocha{--dv-paneview-active-outline-color: dodgerblue;--dv-tabs-and-actions-container-font-size: 13px;--dv-tabs-and-actions-container-height: 35px;--dv-drag-over-background-color: rgba(83, 89, 93, .5);--dv-drag-over-border-color: transparent;--dv-tabs-container-scrollbar-color: #888;--dv-icon-hover-background-color: rgba(90, 93, 94, .31);--dv-floating-box-shadow: 0 8px 32px rgba(0, 0, 0, .4), 0 2px 8px rgba(0, 0, 0, .25);--dv-floating-border: 1px solid rgba(255, 255, 255, .1);--dv-overlay-z-index: 999;--dv-tab-font-size: inherit;--dv-border-radius: 0px;--dv-tab-margin: 0;--dv-sash-color: transparent;--dv-active-sash-color: transparent;--dv-active-sash-transition-duration: .1s;--dv-active-sash-transition-delay: .5s;--dv-spacing-padding: 0px;--dv-tab-border-radius: 0px;--dv-sash-border-radius: 0px;--dv-dropdown-border-radius: 0px;--dv-tab-close-icon-size: inherit;--dv-floating-group-border: none;--dv-drag-over-border: none;--dv-floating-group-dragging-opacity: .5;--dv-floating-titlebar-height: 22px;--dv-floating-titlebar-background-color: var( --dv-tabs-and-actions-container-background-color );--dv-floating-titlebar-border-bottom: var(--dv-floating-border);--dv-tab-group-color-grey: #5f6368;--dv-tab-group-color-blue: #1a73e8;--dv-tab-group-color-red: #d93025;--dv-tab-group-color-yellow: #f9ab00;--dv-tab-group-color-green: #188038;--dv-tab-group-color-pink: #d01884;--dv-tab-group-color-purple: #a142f4;--dv-tab-group-color-cyan: #007b83;--dv-tab-group-color-orange: #e8710a;--dv-tab-group-chip-padding: 4px 8px;--dv-tab-group-chip-border-radius: 6px;--dv-tab-group-chip-font-size: 11px;--dv-tab-group-line-height: 2px;--dv-tab-group-line-opacity: .6}.dockview-theme-catppuccin-mocha .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed{opacity:0;transition:none}.dockview-theme-catppuccin-mocha{--dv-color-mocha-crust: #11111b;--dv-color-mocha-mantle: #181825;--dv-color-mocha-base: #1e1e2e;--dv-color-mocha-surface0: #313244;--dv-color-mocha-surface1: #45475a;--dv-color-mocha-text: #cdd6f4;--dv-color-mocha-subtext1: #bac2de;--dv-color-mocha-subtext0: #a6adc8;--dv-color-mocha-mauve: #cba6f7;--dv-color-mocha-lavender: #b4befe;--dv-group-view-background-color: var(--dv-color-mocha-base);--dv-tabs-and-actions-container-background-color: var( --dv-color-mocha-mantle );--dv-activegroup-visiblepanel-tab-background-color: var( --dv-color-mocha-base );--dv-activegroup-hiddenpanel-tab-background-color: var( --dv-color-mocha-surface0 );--dv-inactivegroup-visiblepanel-tab-background-color: var( --dv-color-mocha-mantle );--dv-inactivegroup-hiddenpanel-tab-background-color: var( --dv-color-mocha-crust );--dv-activegroup-visiblepanel-tab-color: var(--dv-color-mocha-text);--dv-activegroup-hiddenpanel-tab-color: var(--dv-color-mocha-subtext1);--dv-inactivegroup-visiblepanel-tab-color: var(--dv-color-mocha-subtext0);--dv-inactivegroup-hiddenpanel-tab-color: rgba(166, 173, 200, .5);--dv-separator-border: var(--dv-color-mocha-surface1);--dv-paneview-active-outline-color: var(--dv-color-mocha-mauve);--dv-active-sash-color: var(--dv-color-mocha-mauve);--dv-scrollbar-background-color: rgba(49, 50, 68, .8)}.dockview-theme-catppuccin-mocha .dv-groupview.dv-active-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab{position:relative}.dockview-theme-catppuccin-mocha .dv-groupview.dv-active-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab:after{position:absolute;left:0;bottom:0;content:"";width:100%;height:2px;background-color:var(--dv-color-mocha-mauve);z-index:999}.dockview-theme-catppuccin-mocha .dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab{position:relative}.dockview-theme-catppuccin-mocha .dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab:after{position:absolute;left:0;bottom:0;content:"";width:100%;height:2px;background-color:#b4befe66;z-index:999}.dockview-theme-catppuccin-mocha-spaced{--dv-paneview-active-outline-color: dodgerblue;--dv-tabs-and-actions-container-font-size: 13px;--dv-tabs-and-actions-container-height: 35px;--dv-drag-over-background-color: rgba(83, 89, 93, .5);--dv-drag-over-border-color: transparent;--dv-tabs-container-scrollbar-color: #888;--dv-icon-hover-background-color: rgba(90, 93, 94, .31);--dv-floating-box-shadow: 0 8px 32px rgba(0, 0, 0, .4), 0 2px 8px rgba(0, 0, 0, .25);--dv-floating-border: 1px solid rgba(255, 255, 255, .1);--dv-overlay-z-index: 999;--dv-tab-font-size: inherit;--dv-border-radius: 0px;--dv-tab-margin: 0;--dv-sash-color: transparent;--dv-active-sash-color: transparent;--dv-active-sash-transition-duration: .1s;--dv-active-sash-transition-delay: .5s;--dv-spacing-padding: 0px;--dv-tab-border-radius: 0px;--dv-sash-border-radius: 0px;--dv-dropdown-border-radius: 0px;--dv-tab-close-icon-size: inherit;--dv-floating-group-border: none;--dv-drag-over-border: none;--dv-floating-group-dragging-opacity: .5;--dv-floating-titlebar-height: 22px;--dv-floating-titlebar-background-color: var( --dv-tabs-and-actions-container-background-color );--dv-floating-titlebar-border-bottom: var(--dv-floating-border);--dv-tab-group-color-grey: #5f6368;--dv-tab-group-color-blue: #1a73e8;--dv-tab-group-color-red: #d93025;--dv-tab-group-color-yellow: #f9ab00;--dv-tab-group-color-green: #188038;--dv-tab-group-color-pink: #d01884;--dv-tab-group-color-purple: #a142f4;--dv-tab-group-color-cyan: #007b83;--dv-tab-group-color-orange: #e8710a;--dv-tab-group-chip-padding: 4px 8px;--dv-tab-group-chip-border-radius: 6px;--dv-tab-group-chip-font-size: 11px;--dv-tab-group-line-height: 2px;--dv-tab-group-line-opacity: .6;--dv-spacing-padding: 10px;--dv-tab-font-size: 12px;--dv-border-radius: 12px;--dv-tab-margin: .5rem .25rem;--dv-tabs-and-actions-container-height: 44px;--dv-tab-border-radius: 8px;--dv-sash-border-radius: 4px;--dv-dropdown-border-radius: 8px;--dv-tab-close-icon-size: 8px;--dv-floating-group-border: 2px solid var(--dv-group-view-background-color);--dv-floating-titlebar-background-color: var( --dv-group-view-background-color );--dv-floating-titlebar-border-bottom: none;box-sizing:border-box;padding:var(--dv-spacing-padding);background-color:var(--dv-group-view-background-color)}.dv-shell .dockview-theme-catppuccin-mocha-spaced{padding:0}.dockview-theme-catppuccin-mocha-spaced .dv-resize-container:has(>.dv-groupview){border-radius:8px}.dockview-theme-catppuccin-mocha-spaced .dv-sash{border-radius:var(--dv-sash-border-radius)}.dockview-theme-catppuccin-mocha-spaced .dv-drop-target-anchor{border-radius:calc(var(--dv-border-radius) / 4)}.dockview-theme-catppuccin-mocha-spaced .dv-drop-target-anchor.dv-drop-target-content{border-radius:var(--dv-border-radius)}.dockview-theme-catppuccin-mocha-spaced .dv-resize-container{border-radius:var(--dv-border-radius)!important;border:none}.dockview-theme-catppuccin-mocha-spaced .dv-resize-container .dv-groupview{border:var(--dv-floating-group-border)}.dockview-theme-catppuccin-mocha-spaced .dv-resize-container>.dv-grid-view{box-sizing:border-box;padding:var(--dv-spacing-padding)}.dockview-theme-catppuccin-mocha-spaced .dv-resize-container-with-titlebar>.dv-grid-view{padding-top:0}.dockview-theme-catppuccin-mocha-spaced .dv-resize-container-with-titlebar>.dv-floating-titlebar{border-top-left-radius:var(--dv-border-radius);border-top-right-radius:var(--dv-border-radius)}.dockview-theme-catppuccin-mocha-spaced .dv-tabs-overflow-container,.dockview-theme-catppuccin-mocha-spaced .dv-tabs-overflow-dropdown-default{border-radius:var(--dv-dropdown-border-radius);height:unset!important}.dockview-theme-catppuccin-mocha-spaced .dv-render-overlay{border-bottom-left-radius:var(--dv-border-radius);border-bottom-right-radius:var(--dv-border-radius)}.dockview-theme-catppuccin-mocha-spaced .dv-tab{border-radius:var(--dv-tab-border-radius)}.dockview-theme-catppuccin-mocha-spaced .dv-tab .dv-svg{height:var(--dv-tab-close-icon-size);width:var(--dv-tab-close-icon-size)}.dockview-theme-catppuccin-mocha-spaced .dv-tabs-container-vertical .dv-tab{margin:.25rem .5rem}.dockview-theme-catppuccin-mocha-spaced .dv-groupview{border-radius:var(--dv-border-radius)}.dockview-theme-catppuccin-mocha-spaced .dv-groupview .dv-tabs-and-actions-container{padding:0px calc(var(--dv-border-radius) / 2);border-top-left-radius:var(--dv-border-radius);border-top-right-radius:var(--dv-border-radius)}.dockview-theme-catppuccin-mocha-spaced .dv-groupview .dv-tabs-and-actions-container.dv-groupview-header-vertical{padding:calc(var(--dv-border-radius) / 2) 0}.dockview-theme-catppuccin-mocha-spaced .dv-groupview .dv-content-container{background-color:var(--dv-tabs-and-actions-container-background-color);border-bottom-left-radius:var(--dv-border-radius);border-bottom-right-radius:var(--dv-border-radius)}.dockview-theme-catppuccin-mocha-spaced{--dv-color-mocha-crust: #11111b;--dv-color-mocha-mantle: #181825;--dv-color-mocha-base: #1e1e2e;--dv-color-mocha-surface0: #313244;--dv-color-mocha-surface1: #45475a;--dv-color-mocha-text: #cdd6f4;--dv-color-mocha-subtext1: #bac2de;--dv-color-mocha-subtext0: #a6adc8;--dv-color-mocha-mauve: #cba6f7;--dv-color-mocha-lavender: #b4befe;--dv-group-view-background-color: var(--dv-color-mocha-crust);--dv-tabs-and-actions-container-background-color: var( --dv-color-mocha-mantle );--dv-activegroup-visiblepanel-tab-background-color: var( --dv-color-mocha-surface0 );--dv-activegroup-hiddenpanel-tab-background-color: var( --dv-color-mocha-mantle );--dv-inactivegroup-visiblepanel-tab-background-color: var( --dv-color-mocha-surface0 );--dv-inactivegroup-hiddenpanel-tab-background-color: var( --dv-color-mocha-mantle );--dv-activegroup-visiblepanel-tab-color: var(--dv-color-mocha-text);--dv-activegroup-hiddenpanel-tab-color: var(--dv-color-mocha-subtext1);--dv-inactivegroup-visiblepanel-tab-color: var(--dv-color-mocha-subtext0);--dv-inactivegroup-hiddenpanel-tab-color: rgba(166, 173, 200, .5);--dv-separator-border: transparent;--dv-paneview-active-outline-color: var(--dv-color-mocha-mauve);--dv-active-sash-color: var(--dv-color-mocha-mauve);--dv-scrollbar-background-color: rgba(49, 50, 68, .8);--dv-floating-group-border: 2px solid var(--dv-color-mocha-crust)}.dockview-theme-monokai{--dv-paneview-active-outline-color: dodgerblue;--dv-tabs-and-actions-container-font-size: 13px;--dv-tabs-and-actions-container-height: 35px;--dv-drag-over-background-color: rgba(83, 89, 93, .5);--dv-drag-over-border-color: transparent;--dv-tabs-container-scrollbar-color: #888;--dv-icon-hover-background-color: rgba(90, 93, 94, .31);--dv-floating-box-shadow: 0 8px 32px rgba(0, 0, 0, .4), 0 2px 8px rgba(0, 0, 0, .25);--dv-floating-border: 1px solid rgba(255, 255, 255, .1);--dv-overlay-z-index: 999;--dv-tab-font-size: inherit;--dv-border-radius: 0px;--dv-tab-margin: 0;--dv-sash-color: transparent;--dv-active-sash-color: transparent;--dv-active-sash-transition-duration: .1s;--dv-active-sash-transition-delay: .5s;--dv-spacing-padding: 0px;--dv-tab-border-radius: 0px;--dv-sash-border-radius: 0px;--dv-dropdown-border-radius: 0px;--dv-tab-close-icon-size: inherit;--dv-floating-group-border: none;--dv-drag-over-border: none;--dv-floating-group-dragging-opacity: .5;--dv-floating-titlebar-height: 22px;--dv-floating-titlebar-background-color: var( --dv-tabs-and-actions-container-background-color );--dv-floating-titlebar-border-bottom: var(--dv-floating-border);--dv-tab-group-color-grey: #5f6368;--dv-tab-group-color-blue: #1a73e8;--dv-tab-group-color-red: #d93025;--dv-tab-group-color-yellow: #f9ab00;--dv-tab-group-color-green: #188038;--dv-tab-group-color-pink: #d01884;--dv-tab-group-color-purple: #a142f4;--dv-tab-group-color-cyan: #007b83;--dv-tab-group-color-orange: #e8710a;--dv-tab-group-chip-padding: 4px 8px;--dv-tab-group-chip-border-radius: 6px;--dv-tab-group-chip-font-size: 11px;--dv-tab-group-line-height: 2px;--dv-tab-group-line-opacity: .6}.dockview-theme-monokai .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed{opacity:0;transition:none}.dockview-theme-monokai{--dv-color-monokai-bg: #272822;--dv-color-monokai-bg-light: #3e3d32;--dv-color-monokai-comment: #75715e;--dv-color-monokai-fg: #f8f8f2;--dv-color-monokai-green: #a6e22e;--dv-group-view-background-color: var(--dv-color-monokai-bg);--dv-tabs-and-actions-container-background-color: var( --dv-color-monokai-bg-light );--dv-activegroup-visiblepanel-tab-background-color: var( --dv-color-monokai-bg );--dv-activegroup-hiddenpanel-tab-background-color: #2d2c25;--dv-inactivegroup-visiblepanel-tab-background-color: var( --dv-color-monokai-bg );--dv-inactivegroup-hiddenpanel-tab-background-color: #2d2c25;--dv-activegroup-visiblepanel-tab-color: var(--dv-color-monokai-fg);--dv-activegroup-hiddenpanel-tab-color: var(--dv-color-monokai-comment);--dv-inactivegroup-visiblepanel-tab-color: rgba(248, 248, 242, .5);--dv-inactivegroup-hiddenpanel-tab-color: rgba(117, 113, 94, .5);--dv-separator-border: var(--dv-color-monokai-bg-light);--dv-paneview-active-outline-color: var(--dv-color-monokai-green);--dv-active-sash-color: var(--dv-color-monokai-green);--dv-scrollbar-background-color: rgba(117, 113, 94, .5)}.dockview-theme-monokai .dv-groupview.dv-active-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab{position:relative}.dockview-theme-monokai .dv-groupview.dv-active-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab:after{position:absolute;left:0;bottom:0;content:"";width:100%;height:2px;background-color:var(--dv-color-monokai-green);z-index:999}.dockview-theme-monokai .dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab{position:relative}.dockview-theme-monokai .dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab:after{position:absolute;left:0;bottom:0;content:"";width:100%;height:2px;background-color:#a6e22e59;z-index:999}.dockview-theme-solarized-light{--dv-paneview-active-outline-color: dodgerblue;--dv-tabs-and-actions-container-font-size: 13px;--dv-tabs-and-actions-container-height: 35px;--dv-drag-over-background-color: rgba(83, 89, 93, .5);--dv-drag-over-border-color: transparent;--dv-tabs-container-scrollbar-color: #888;--dv-icon-hover-background-color: rgba(90, 93, 94, .31);--dv-floating-box-shadow: 0 8px 32px rgba(0, 0, 0, .4), 0 2px 8px rgba(0, 0, 0, .25);--dv-floating-border: 1px solid rgba(255, 255, 255, .1);--dv-overlay-z-index: 999;--dv-tab-font-size: inherit;--dv-border-radius: 0px;--dv-tab-margin: 0;--dv-sash-color: transparent;--dv-active-sash-color: transparent;--dv-active-sash-transition-duration: .1s;--dv-active-sash-transition-delay: .5s;--dv-spacing-padding: 0px;--dv-tab-border-radius: 0px;--dv-sash-border-radius: 0px;--dv-dropdown-border-radius: 0px;--dv-tab-close-icon-size: inherit;--dv-floating-group-border: none;--dv-drag-over-border: none;--dv-floating-group-dragging-opacity: .5;--dv-floating-titlebar-height: 22px;--dv-floating-titlebar-background-color: var( --dv-tabs-and-actions-container-background-color );--dv-floating-titlebar-border-bottom: var(--dv-floating-border);--dv-tab-group-color-grey: #5f6368;--dv-tab-group-color-blue: #1a73e8;--dv-tab-group-color-red: #d93025;--dv-tab-group-color-yellow: #f9ab00;--dv-tab-group-color-green: #188038;--dv-tab-group-color-pink: #d01884;--dv-tab-group-color-purple: #a142f4;--dv-tab-group-color-cyan: #007b83;--dv-tab-group-color-orange: #e8710a;--dv-tab-group-chip-padding: 4px 8px;--dv-tab-group-chip-border-radius: 6px;--dv-tab-group-chip-font-size: 11px;--dv-tab-group-line-height: 2px;--dv-tab-group-line-opacity: .6}.dockview-theme-solarized-light .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed{opacity:0;transition:none}.dockview-theme-solarized-light{--dv-color-sol-base3: #fdf6e3;--dv-color-sol-base2: #eee8d5;--dv-color-sol-base1: #93a1a1;--dv-color-sol-base00: #657b83;--dv-color-sol-base01: #586e75;--dv-color-sol-blue: #268bd2;--dv-group-view-background-color: var(--dv-color-sol-base3);--dv-tabs-and-actions-container-background-color: var(--dv-color-sol-base2);--dv-activegroup-visiblepanel-tab-background-color: var( --dv-color-sol-base3 );--dv-activegroup-hiddenpanel-tab-background-color: #e8e2d0;--dv-inactivegroup-visiblepanel-tab-background-color: var( --dv-color-sol-base3 );--dv-inactivegroup-hiddenpanel-tab-background-color: #e8e2d0;--dv-activegroup-visiblepanel-tab-color: var(--dv-color-sol-base01);--dv-activegroup-hiddenpanel-tab-color: var(--dv-color-sol-base00);--dv-inactivegroup-visiblepanel-tab-color: var(--dv-color-sol-base1);--dv-inactivegroup-hiddenpanel-tab-color: rgba(147, 161, 161, .6);--dv-separator-border: var(--dv-color-sol-base2);--dv-paneview-active-outline-color: var(--dv-color-sol-blue);--dv-active-sash-color: var(--dv-color-sol-blue);--dv-scrollbar-background-color: rgba(101, 123, 131, .25);--dv-drag-over-background-color: rgba(38, 139, 210, .15);--dv-floating-box-shadow: 0 8px 32px rgba(0, 0, 0, .12), 0 2px 8px rgba(0, 0, 0, .08);--dv-floating-border: 1px solid rgba(0, 0, 0, .1)}.dockview-theme-solarized-light-spaced{--dv-paneview-active-outline-color: dodgerblue;--dv-tabs-and-actions-container-font-size: 13px;--dv-tabs-and-actions-container-height: 35px;--dv-drag-over-background-color: rgba(83, 89, 93, .5);--dv-drag-over-border-color: transparent;--dv-tabs-container-scrollbar-color: #888;--dv-icon-hover-background-color: rgba(90, 93, 94, .31);--dv-floating-box-shadow: 0 8px 32px rgba(0, 0, 0, .4), 0 2px 8px rgba(0, 0, 0, .25);--dv-floating-border: 1px solid rgba(255, 255, 255, .1);--dv-overlay-z-index: 999;--dv-tab-font-size: inherit;--dv-border-radius: 0px;--dv-tab-margin: 0;--dv-sash-color: transparent;--dv-active-sash-color: transparent;--dv-active-sash-transition-duration: .1s;--dv-active-sash-transition-delay: .5s;--dv-spacing-padding: 0px;--dv-tab-border-radius: 0px;--dv-sash-border-radius: 0px;--dv-dropdown-border-radius: 0px;--dv-tab-close-icon-size: inherit;--dv-floating-group-border: none;--dv-drag-over-border: none;--dv-floating-group-dragging-opacity: .5;--dv-floating-titlebar-height: 22px;--dv-floating-titlebar-background-color: var( --dv-tabs-and-actions-container-background-color );--dv-floating-titlebar-border-bottom: var(--dv-floating-border);--dv-tab-group-color-grey: #5f6368;--dv-tab-group-color-blue: #1a73e8;--dv-tab-group-color-red: #d93025;--dv-tab-group-color-yellow: #f9ab00;--dv-tab-group-color-green: #188038;--dv-tab-group-color-pink: #d01884;--dv-tab-group-color-purple: #a142f4;--dv-tab-group-color-cyan: #007b83;--dv-tab-group-color-orange: #e8710a;--dv-tab-group-chip-padding: 4px 8px;--dv-tab-group-chip-border-radius: 6px;--dv-tab-group-chip-font-size: 11px;--dv-tab-group-line-height: 2px;--dv-tab-group-line-opacity: .6;--dv-spacing-padding: 10px;--dv-tab-font-size: 12px;--dv-border-radius: 12px;--dv-tab-margin: .5rem .25rem;--dv-tabs-and-actions-container-height: 44px;--dv-tab-border-radius: 8px;--dv-sash-border-radius: 4px;--dv-dropdown-border-radius: 8px;--dv-tab-close-icon-size: 8px;--dv-floating-group-border: 2px solid var(--dv-group-view-background-color);--dv-floating-titlebar-background-color: var( --dv-group-view-background-color );--dv-floating-titlebar-border-bottom: none;box-sizing:border-box;padding:var(--dv-spacing-padding);background-color:var(--dv-group-view-background-color)}.dv-shell .dockview-theme-solarized-light-spaced{padding:0}.dockview-theme-solarized-light-spaced .dv-resize-container:has(>.dv-groupview){border-radius:8px}.dockview-theme-solarized-light-spaced .dv-sash{border-radius:var(--dv-sash-border-radius)}.dockview-theme-solarized-light-spaced .dv-drop-target-anchor{border-radius:calc(var(--dv-border-radius) / 4)}.dockview-theme-solarized-light-spaced .dv-drop-target-anchor.dv-drop-target-content{border-radius:var(--dv-border-radius)}.dockview-theme-solarized-light-spaced .dv-resize-container{border-radius:var(--dv-border-radius)!important;border:none}.dockview-theme-solarized-light-spaced .dv-resize-container .dv-groupview{border:var(--dv-floating-group-border)}.dockview-theme-solarized-light-spaced .dv-resize-container>.dv-grid-view{box-sizing:border-box;padding:var(--dv-spacing-padding)}.dockview-theme-solarized-light-spaced .dv-resize-container-with-titlebar>.dv-grid-view{padding-top:0}.dockview-theme-solarized-light-spaced .dv-resize-container-with-titlebar>.dv-floating-titlebar{border-top-left-radius:var(--dv-border-radius);border-top-right-radius:var(--dv-border-radius)}.dockview-theme-solarized-light-spaced .dv-tabs-overflow-container,.dockview-theme-solarized-light-spaced .dv-tabs-overflow-dropdown-default{border-radius:var(--dv-dropdown-border-radius);height:unset!important}.dockview-theme-solarized-light-spaced .dv-render-overlay{border-bottom-left-radius:var(--dv-border-radius);border-bottom-right-radius:var(--dv-border-radius)}.dockview-theme-solarized-light-spaced .dv-tab{border-radius:var(--dv-tab-border-radius)}.dockview-theme-solarized-light-spaced .dv-tab .dv-svg{height:var(--dv-tab-close-icon-size);width:var(--dv-tab-close-icon-size)}.dockview-theme-solarized-light-spaced .dv-tabs-container-vertical .dv-tab{margin:.25rem .5rem}.dockview-theme-solarized-light-spaced .dv-groupview{border-radius:var(--dv-border-radius)}.dockview-theme-solarized-light-spaced .dv-groupview .dv-tabs-and-actions-container{padding:0px calc(var(--dv-border-radius) / 2);border-top-left-radius:var(--dv-border-radius);border-top-right-radius:var(--dv-border-radius)}.dockview-theme-solarized-light-spaced .dv-groupview .dv-tabs-and-actions-container.dv-groupview-header-vertical{padding:calc(var(--dv-border-radius) / 2) 0}.dockview-theme-solarized-light-spaced .dv-groupview .dv-content-container{background-color:var(--dv-tabs-and-actions-container-background-color);border-bottom-left-radius:var(--dv-border-radius);border-bottom-right-radius:var(--dv-border-radius)}.dockview-theme-solarized-light-spaced{--dv-color-sol-base3: #fdf6e3;--dv-color-sol-base2: #eee8d5;--dv-color-sol-base1: #93a1a1;--dv-color-sol-base00: #657b83;--dv-color-sol-base01: #586e75;--dv-color-sol-blue: #268bd2;--dv-drag-over-background-color: rgba(38, 139, 210, .1);--dv-group-view-background-color: var(--dv-color-sol-base2);--dv-tabs-and-actions-container-background-color: var(--dv-color-sol-base3);--dv-activegroup-visiblepanel-tab-background-color: #e8e2d0;--dv-activegroup-hiddenpanel-tab-background-color: var( --dv-color-sol-base3 );--dv-inactivegroup-visiblepanel-tab-background-color: #e8e2d0;--dv-inactivegroup-hiddenpanel-tab-background-color: var( --dv-color-sol-base3 );--dv-activegroup-visiblepanel-tab-color: var(--dv-color-sol-base01);--dv-activegroup-hiddenpanel-tab-color: var(--dv-color-sol-base00);--dv-inactivegroup-visiblepanel-tab-color: var(--dv-color-sol-base1);--dv-inactivegroup-hiddenpanel-tab-color: rgba(147, 161, 161, .6);--dv-separator-border: transparent;--dv-paneview-active-outline-color: var(--dv-color-sol-blue);--dv-active-sash-color: var(--dv-color-sol-blue);--dv-floating-box-shadow: 0 8px 32px rgba(0, 0, 0, .12), 0 2px 8px rgba(0, 0, 0, .08);--dv-floating-border: 1px solid rgba(0, 0, 0, .1);--dv-scrollbar-background-color: rgba(101, 123, 131, .25);--dv-floating-group-border: 2px solid rgba(238, 232, 213, .5)}.dockview-theme-github-dark{--dv-paneview-active-outline-color: dodgerblue;--dv-tabs-and-actions-container-font-size: 13px;--dv-tabs-and-actions-container-height: 35px;--dv-drag-over-background-color: rgba(83, 89, 93, .5);--dv-drag-over-border-color: transparent;--dv-tabs-container-scrollbar-color: #888;--dv-icon-hover-background-color: rgba(90, 93, 94, .31);--dv-floating-box-shadow: 0 8px 32px rgba(0, 0, 0, .4), 0 2px 8px rgba(0, 0, 0, .25);--dv-floating-border: 1px solid rgba(255, 255, 255, .1);--dv-overlay-z-index: 999;--dv-tab-font-size: inherit;--dv-border-radius: 0px;--dv-tab-margin: 0;--dv-sash-color: transparent;--dv-active-sash-color: transparent;--dv-active-sash-transition-duration: .1s;--dv-active-sash-transition-delay: .5s;--dv-spacing-padding: 0px;--dv-tab-border-radius: 0px;--dv-sash-border-radius: 0px;--dv-dropdown-border-radius: 0px;--dv-tab-close-icon-size: inherit;--dv-floating-group-border: none;--dv-drag-over-border: none;--dv-floating-group-dragging-opacity: .5;--dv-floating-titlebar-height: 22px;--dv-floating-titlebar-background-color: var( --dv-tabs-and-actions-container-background-color );--dv-floating-titlebar-border-bottom: var(--dv-floating-border);--dv-tab-group-color-grey: #5f6368;--dv-tab-group-color-blue: #1a73e8;--dv-tab-group-color-red: #d93025;--dv-tab-group-color-yellow: #f9ab00;--dv-tab-group-color-green: #188038;--dv-tab-group-color-pink: #d01884;--dv-tab-group-color-purple: #a142f4;--dv-tab-group-color-cyan: #007b83;--dv-tab-group-color-orange: #e8710a;--dv-tab-group-chip-padding: 4px 8px;--dv-tab-group-chip-border-radius: 6px;--dv-tab-group-chip-font-size: 11px;--dv-tab-group-line-height: 2px;--dv-tab-group-line-opacity: .6}.dockview-theme-github-dark .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed{opacity:0;transition:none}.dockview-theme-github-dark{--dv-color-gh-canvas-default: #0d1117;--dv-color-gh-canvas-subtle: #161b22;--dv-color-gh-canvas-inset: #010409;--dv-color-gh-border: #30363d;--dv-color-gh-border-muted: #21262d;--dv-color-gh-fg-default: #e6edf3;--dv-color-gh-fg-muted: #8b949e;--dv-color-gh-fg-subtle: #6e7681;--dv-color-gh-accent: #58a6ff;--dv-group-view-background-color: var(--dv-color-gh-canvas-default);--dv-tabs-and-actions-container-background-color: var( --dv-color-gh-canvas-subtle );--dv-activegroup-visiblepanel-tab-background-color: var( --dv-color-gh-canvas-default );--dv-activegroup-hiddenpanel-tab-background-color: var( --dv-color-gh-canvas-subtle );--dv-inactivegroup-visiblepanel-tab-background-color: var( --dv-color-gh-canvas-default );--dv-inactivegroup-hiddenpanel-tab-background-color: var( --dv-color-gh-canvas-subtle );--dv-activegroup-visiblepanel-tab-color: var(--dv-color-gh-fg-default);--dv-activegroup-hiddenpanel-tab-color: var(--dv-color-gh-fg-muted);--dv-inactivegroup-visiblepanel-tab-color: var(--dv-color-gh-fg-subtle);--dv-inactivegroup-hiddenpanel-tab-color: rgba(110, 118, 129, .5);--dv-separator-border: var(--dv-color-gh-border);--dv-paneview-active-outline-color: var(--dv-color-gh-accent);--dv-active-sash-color: var(--dv-color-gh-accent);--dv-scrollbar-background-color: rgba(48, 54, 61, .7);--dv-drag-over-background-color: rgba(88, 166, 255, .15)}.dockview-theme-github-dark-spaced{--dv-paneview-active-outline-color: dodgerblue;--dv-tabs-and-actions-container-font-size: 13px;--dv-tabs-and-actions-container-height: 35px;--dv-drag-over-background-color: rgba(83, 89, 93, .5);--dv-drag-over-border-color: transparent;--dv-tabs-container-scrollbar-color: #888;--dv-icon-hover-background-color: rgba(90, 93, 94, .31);--dv-floating-box-shadow: 0 8px 32px rgba(0, 0, 0, .4), 0 2px 8px rgba(0, 0, 0, .25);--dv-floating-border: 1px solid rgba(255, 255, 255, .1);--dv-overlay-z-index: 999;--dv-tab-font-size: inherit;--dv-border-radius: 0px;--dv-tab-margin: 0;--dv-sash-color: transparent;--dv-active-sash-color: transparent;--dv-active-sash-transition-duration: .1s;--dv-active-sash-transition-delay: .5s;--dv-spacing-padding: 0px;--dv-tab-border-radius: 0px;--dv-sash-border-radius: 0px;--dv-dropdown-border-radius: 0px;--dv-tab-close-icon-size: inherit;--dv-floating-group-border: none;--dv-drag-over-border: none;--dv-floating-group-dragging-opacity: .5;--dv-floating-titlebar-height: 22px;--dv-floating-titlebar-background-color: var( --dv-tabs-and-actions-container-background-color );--dv-floating-titlebar-border-bottom: var(--dv-floating-border);--dv-tab-group-color-grey: #5f6368;--dv-tab-group-color-blue: #1a73e8;--dv-tab-group-color-red: #d93025;--dv-tab-group-color-yellow: #f9ab00;--dv-tab-group-color-green: #188038;--dv-tab-group-color-pink: #d01884;--dv-tab-group-color-purple: #a142f4;--dv-tab-group-color-cyan: #007b83;--dv-tab-group-color-orange: #e8710a;--dv-tab-group-chip-padding: 4px 8px;--dv-tab-group-chip-border-radius: 6px;--dv-tab-group-chip-font-size: 11px;--dv-tab-group-line-height: 2px;--dv-tab-group-line-opacity: .6;--dv-spacing-padding: 10px;--dv-tab-font-size: 12px;--dv-border-radius: 12px;--dv-tab-margin: .5rem .25rem;--dv-tabs-and-actions-container-height: 44px;--dv-tab-border-radius: 8px;--dv-sash-border-radius: 4px;--dv-dropdown-border-radius: 8px;--dv-tab-close-icon-size: 8px;--dv-floating-group-border: 2px solid var(--dv-group-view-background-color);--dv-floating-titlebar-background-color: var( --dv-group-view-background-color );--dv-floating-titlebar-border-bottom: none;box-sizing:border-box;padding:var(--dv-spacing-padding);background-color:var(--dv-group-view-background-color)}.dv-shell .dockview-theme-github-dark-spaced{padding:0}.dockview-theme-github-dark-spaced .dv-resize-container:has(>.dv-groupview){border-radius:8px}.dockview-theme-github-dark-spaced .dv-sash{border-radius:var(--dv-sash-border-radius)}.dockview-theme-github-dark-spaced .dv-drop-target-anchor{border-radius:calc(var(--dv-border-radius) / 4)}.dockview-theme-github-dark-spaced .dv-drop-target-anchor.dv-drop-target-content{border-radius:var(--dv-border-radius)}.dockview-theme-github-dark-spaced .dv-resize-container{border-radius:var(--dv-border-radius)!important;border:none}.dockview-theme-github-dark-spaced .dv-resize-container .dv-groupview{border:var(--dv-floating-group-border)}.dockview-theme-github-dark-spaced .dv-resize-container>.dv-grid-view{box-sizing:border-box;padding:var(--dv-spacing-padding)}.dockview-theme-github-dark-spaced .dv-resize-container-with-titlebar>.dv-grid-view{padding-top:0}.dockview-theme-github-dark-spaced .dv-resize-container-with-titlebar>.dv-floating-titlebar{border-top-left-radius:var(--dv-border-radius);border-top-right-radius:var(--dv-border-radius)}.dockview-theme-github-dark-spaced .dv-tabs-overflow-container,.dockview-theme-github-dark-spaced .dv-tabs-overflow-dropdown-default{border-radius:var(--dv-dropdown-border-radius);height:unset!important}.dockview-theme-github-dark-spaced .dv-render-overlay{border-bottom-left-radius:var(--dv-border-radius);border-bottom-right-radius:var(--dv-border-radius)}.dockview-theme-github-dark-spaced .dv-tab{border-radius:var(--dv-tab-border-radius)}.dockview-theme-github-dark-spaced .dv-tab .dv-svg{height:var(--dv-tab-close-icon-size);width:var(--dv-tab-close-icon-size)}.dockview-theme-github-dark-spaced .dv-tabs-container-vertical .dv-tab{margin:.25rem .5rem}.dockview-theme-github-dark-spaced .dv-groupview{border-radius:var(--dv-border-radius)}.dockview-theme-github-dark-spaced .dv-groupview .dv-tabs-and-actions-container{padding:0px calc(var(--dv-border-radius) / 2);border-top-left-radius:var(--dv-border-radius);border-top-right-radius:var(--dv-border-radius)}.dockview-theme-github-dark-spaced .dv-groupview .dv-tabs-and-actions-container.dv-groupview-header-vertical{padding:calc(var(--dv-border-radius) / 2) 0}.dockview-theme-github-dark-spaced .dv-groupview .dv-content-container{background-color:var(--dv-tabs-and-actions-container-background-color);border-bottom-left-radius:var(--dv-border-radius);border-bottom-right-radius:var(--dv-border-radius)}.dockview-theme-github-dark-spaced{--dv-color-gh-canvas-default: #0d1117;--dv-color-gh-canvas-subtle: #161b22;--dv-color-gh-canvas-inset: #010409;--dv-color-gh-border: #30363d;--dv-color-gh-border-muted: #21262d;--dv-color-gh-fg-default: #e6edf3;--dv-color-gh-fg-muted: #8b949e;--dv-color-gh-fg-subtle: #6e7681;--dv-color-gh-accent: #58a6ff;--dv-drag-over-background-color: rgba(88, 166, 255, .1);--dv-group-view-background-color: var(--dv-color-gh-canvas-inset);--dv-tabs-and-actions-container-background-color: var( --dv-color-gh-canvas-subtle );--dv-activegroup-visiblepanel-tab-background-color: var( --dv-color-gh-border );--dv-activegroup-hiddenpanel-tab-background-color: var( --dv-color-gh-canvas-subtle );--dv-inactivegroup-visiblepanel-tab-background-color: var( --dv-color-gh-border );--dv-inactivegroup-hiddenpanel-tab-background-color: var( --dv-color-gh-canvas-subtle );--dv-activegroup-visiblepanel-tab-color: var(--dv-color-gh-fg-default);--dv-activegroup-hiddenpanel-tab-color: var(--dv-color-gh-fg-muted);--dv-inactivegroup-visiblepanel-tab-color: var(--dv-color-gh-fg-subtle);--dv-inactivegroup-hiddenpanel-tab-color: rgba(110, 118, 129, .5);--dv-separator-border: transparent;--dv-paneview-active-outline-color: var(--dv-color-gh-accent);--dv-active-sash-color: var(--dv-color-gh-accent);--dv-scrollbar-background-color: rgba(48, 54, 61, .7);--dv-floating-group-border: 2px solid var(--dv-color-gh-canvas-inset)}.dockview-theme-github-light{--dv-paneview-active-outline-color: dodgerblue;--dv-tabs-and-actions-container-font-size: 13px;--dv-tabs-and-actions-container-height: 35px;--dv-drag-over-background-color: rgba(83, 89, 93, .5);--dv-drag-over-border-color: transparent;--dv-tabs-container-scrollbar-color: #888;--dv-icon-hover-background-color: rgba(90, 93, 94, .31);--dv-floating-box-shadow: 0 8px 32px rgba(0, 0, 0, .4), 0 2px 8px rgba(0, 0, 0, .25);--dv-floating-border: 1px solid rgba(255, 255, 255, .1);--dv-overlay-z-index: 999;--dv-tab-font-size: inherit;--dv-border-radius: 0px;--dv-tab-margin: 0;--dv-sash-color: transparent;--dv-active-sash-color: transparent;--dv-active-sash-transition-duration: .1s;--dv-active-sash-transition-delay: .5s;--dv-spacing-padding: 0px;--dv-tab-border-radius: 0px;--dv-sash-border-radius: 0px;--dv-dropdown-border-radius: 0px;--dv-tab-close-icon-size: inherit;--dv-floating-group-border: none;--dv-drag-over-border: none;--dv-floating-group-dragging-opacity: .5;--dv-floating-titlebar-height: 22px;--dv-floating-titlebar-background-color: var( --dv-tabs-and-actions-container-background-color );--dv-floating-titlebar-border-bottom: var(--dv-floating-border);--dv-tab-group-color-grey: #5f6368;--dv-tab-group-color-blue: #1a73e8;--dv-tab-group-color-red: #d93025;--dv-tab-group-color-yellow: #f9ab00;--dv-tab-group-color-green: #188038;--dv-tab-group-color-pink: #d01884;--dv-tab-group-color-purple: #a142f4;--dv-tab-group-color-cyan: #007b83;--dv-tab-group-color-orange: #e8710a;--dv-tab-group-chip-padding: 4px 8px;--dv-tab-group-chip-border-radius: 6px;--dv-tab-group-chip-font-size: 11px;--dv-tab-group-line-height: 2px;--dv-tab-group-line-opacity: .6}.dockview-theme-github-light .dv-drop-target-container .dv-drop-target-anchor.dv-drop-target-anchor-container-changed{opacity:0;transition:none}.dockview-theme-github-light{--dv-color-gh-light-canvas-default: #ffffff;--dv-color-gh-light-canvas-subtle: #f6f8fa;--dv-color-gh-light-canvas-inset: #f0f6ff;--dv-color-gh-light-border: #d0d7de;--dv-color-gh-light-fg-default: #1f2328;--dv-color-gh-light-fg-muted: #656d76;--dv-color-gh-light-fg-subtle: #6e7781;--dv-color-gh-light-accent: #0969da;--dv-group-view-background-color: var(--dv-color-gh-light-canvas-default);--dv-tabs-and-actions-container-background-color: var( --dv-color-gh-light-canvas-subtle );--dv-activegroup-visiblepanel-tab-background-color: var( --dv-color-gh-light-canvas-default );--dv-activegroup-hiddenpanel-tab-background-color: var( --dv-color-gh-light-canvas-subtle );--dv-inactivegroup-visiblepanel-tab-background-color: var( --dv-color-gh-light-canvas-default );--dv-inactivegroup-hiddenpanel-tab-background-color: var( --dv-color-gh-light-canvas-subtle );--dv-activegroup-visiblepanel-tab-color: var( --dv-color-gh-light-fg-default );--dv-activegroup-hiddenpanel-tab-color: var(--dv-color-gh-light-fg-muted);--dv-inactivegroup-visiblepanel-tab-color: var( --dv-color-gh-light-fg-subtle );--dv-inactivegroup-hiddenpanel-tab-color: rgba(110, 118, 129, .4);--dv-separator-border: var(--dv-color-gh-light-border);--dv-paneview-active-outline-color: var(--dv-color-gh-light-accent);--dv-active-sash-color: var(--dv-color-gh-light-accent);--dv-scrollbar-background-color: rgba(208, 215, 222, .5);--dv-drag-over-background-color: rgba(9, 105, 218, .1);--dv-floating-box-shadow: 0 8px 32px rgba(0, 0, 0, .12), 0 2px 8px rgba(0, 0, 0, .08);--dv-floating-border: 1px solid rgba(0, 0, 0, .1)}.dockview-theme-github-light-spaced{--dv-paneview-active-outline-color: dodgerblue;--dv-tabs-and-actions-container-font-size: 13px;--dv-tabs-and-actions-container-height: 35px;--dv-drag-over-background-color: rgba(83, 89, 93, .5);--dv-drag-over-border-color: transparent;--dv-tabs-container-scrollbar-color: #888;--dv-icon-hover-background-color: rgba(90, 93, 94, .31);--dv-floating-box-shadow: 0 8px 32px rgba(0, 0, 0, .4), 0 2px 8px rgba(0, 0, 0, .25);--dv-floating-border: 1px solid rgba(255, 255, 255, .1);--dv-overlay-z-index: 999;--dv-tab-font-size: inherit;--dv-border-radius: 0px;--dv-tab-margin: 0;--dv-sash-color: transparent;--dv-active-sash-color: transparent;--dv-active-sash-transition-duration: .1s;--dv-active-sash-transition-delay: .5s;--dv-spacing-padding: 0px;--dv-tab-border-radius: 0px;--dv-sash-border-radius: 0px;--dv-dropdown-border-radius: 0px;--dv-tab-close-icon-size: inherit;--dv-floating-group-border: none;--dv-drag-over-border: none;--dv-floating-group-dragging-opacity: .5;--dv-floating-titlebar-height: 22px;--dv-floating-titlebar-background-color: var( --dv-tabs-and-actions-container-background-color );--dv-floating-titlebar-border-bottom: var(--dv-floating-border);--dv-tab-group-color-grey: #5f6368;--dv-tab-group-color-blue: #1a73e8;--dv-tab-group-color-red: #d93025;--dv-tab-group-color-yellow: #f9ab00;--dv-tab-group-color-green: #188038;--dv-tab-group-color-pink: #d01884;--dv-tab-group-color-purple: #a142f4;--dv-tab-group-color-cyan: #007b83;--dv-tab-group-color-orange: #e8710a;--dv-tab-group-chip-padding: 4px 8px;--dv-tab-group-chip-border-radius: 6px;--dv-tab-group-chip-font-size: 11px;--dv-tab-group-line-height: 2px;--dv-tab-group-line-opacity: .6;--dv-spacing-padding: 10px;--dv-tab-font-size: 12px;--dv-border-radius: 12px;--dv-tab-margin: .5rem .25rem;--dv-tabs-and-actions-container-height: 44px;--dv-tab-border-radius: 8px;--dv-sash-border-radius: 4px;--dv-dropdown-border-radius: 8px;--dv-tab-close-icon-size: 8px;--dv-floating-group-border: 2px solid var(--dv-group-view-background-color);--dv-floating-titlebar-background-color: var( --dv-group-view-background-color );--dv-floating-titlebar-border-bottom: none;box-sizing:border-box;padding:var(--dv-spacing-padding);background-color:var(--dv-group-view-background-color)}.dv-shell .dockview-theme-github-light-spaced{padding:0}.dockview-theme-github-light-spaced .dv-resize-container:has(>.dv-groupview){border-radius:8px}.dockview-theme-github-light-spaced .dv-sash{border-radius:var(--dv-sash-border-radius)}.dockview-theme-github-light-spaced .dv-drop-target-anchor{border-radius:calc(var(--dv-border-radius) / 4)}.dockview-theme-github-light-spaced .dv-drop-target-anchor.dv-drop-target-content{border-radius:var(--dv-border-radius)}.dockview-theme-github-light-spaced .dv-resize-container{border-radius:var(--dv-border-radius)!important;border:none}.dockview-theme-github-light-spaced .dv-resize-container .dv-groupview{border:var(--dv-floating-group-border)}.dockview-theme-github-light-spaced .dv-resize-container>.dv-grid-view{box-sizing:border-box;padding:var(--dv-spacing-padding)}.dockview-theme-github-light-spaced .dv-resize-container-with-titlebar>.dv-grid-view{padding-top:0}.dockview-theme-github-light-spaced .dv-resize-container-with-titlebar>.dv-floating-titlebar{border-top-left-radius:var(--dv-border-radius);border-top-right-radius:var(--dv-border-radius)}.dockview-theme-github-light-spaced .dv-tabs-overflow-container,.dockview-theme-github-light-spaced .dv-tabs-overflow-dropdown-default{border-radius:var(--dv-dropdown-border-radius);height:unset!important}.dockview-theme-github-light-spaced .dv-render-overlay{border-bottom-left-radius:var(--dv-border-radius);border-bottom-right-radius:var(--dv-border-radius)}.dockview-theme-github-light-spaced .dv-tab{border-radius:var(--dv-tab-border-radius)}.dockview-theme-github-light-spaced .dv-tab .dv-svg{height:var(--dv-tab-close-icon-size);width:var(--dv-tab-close-icon-size)}.dockview-theme-github-light-spaced .dv-tabs-container-vertical .dv-tab{margin:.25rem .5rem}.dockview-theme-github-light-spaced .dv-groupview{border-radius:var(--dv-border-radius)}.dockview-theme-github-light-spaced .dv-groupview .dv-tabs-and-actions-container{padding:0px calc(var(--dv-border-radius) / 2);border-top-left-radius:var(--dv-border-radius);border-top-right-radius:var(--dv-border-radius)}.dockview-theme-github-light-spaced .dv-groupview .dv-tabs-and-actions-container.dv-groupview-header-vertical{padding:calc(var(--dv-border-radius) / 2) 0}.dockview-theme-github-light-spaced .dv-groupview .dv-content-container{background-color:var(--dv-tabs-and-actions-container-background-color);border-bottom-left-radius:var(--dv-border-radius);border-bottom-right-radius:var(--dv-border-radius)}.dockview-theme-github-light-spaced{--dv-color-gh-light-canvas-default: #ffffff;--dv-color-gh-light-canvas-subtle: #f6f8fa;--dv-color-gh-light-border: #d0d7de;--dv-color-gh-light-fg-default: #1f2328;--dv-color-gh-light-fg-muted: #656d76;--dv-color-gh-light-fg-subtle: #6e7781;--dv-color-gh-light-accent: #0969da;--dv-drag-over-background-color: rgba(9, 105, 218, .08);--dv-group-view-background-color: var(--dv-color-gh-light-canvas-subtle);--dv-tabs-and-actions-container-background-color: var( --dv-color-gh-light-canvas-default );--dv-activegroup-visiblepanel-tab-background-color: var( --dv-color-gh-light-border );--dv-activegroup-hiddenpanel-tab-background-color: var( --dv-color-gh-light-canvas-default );--dv-inactivegroup-visiblepanel-tab-background-color: var( --dv-color-gh-light-border );--dv-inactivegroup-hiddenpanel-tab-background-color: var( --dv-color-gh-light-canvas-default );--dv-activegroup-visiblepanel-tab-color: var( --dv-color-gh-light-fg-default );--dv-activegroup-hiddenpanel-tab-color: var(--dv-color-gh-light-fg-muted);--dv-inactivegroup-visiblepanel-tab-color: var( --dv-color-gh-light-fg-subtle );--dv-inactivegroup-hiddenpanel-tab-color: rgba(110, 118, 129, .4);--dv-separator-border: transparent;--dv-paneview-active-outline-color: var(--dv-color-gh-light-accent);--dv-active-sash-color: var(--dv-color-gh-light-accent);--dv-floating-box-shadow: 0 8px 32px rgba(0, 0, 0, .12), 0 2px 8px rgba(0, 0, 0, .08);--dv-floating-border: 1px solid rgba(0, 0, 0, .1);--dv-scrollbar-background-color: rgba(208, 215, 222, .5);--dv-floating-group-border: 2px solid rgba(208, 215, 222, .5)}.dockview-theme-abyss-spaced{--dv-paneview-active-outline-color: dodgerblue;--dv-tabs-and-actions-container-font-size: 13px;--dv-tabs-and-actions-container-height: 35px;--dv-drag-over-background-color: rgba(83, 89, 93, .5);--dv-drag-over-border-color: transparent;--dv-tabs-container-scrollbar-color: #888;--dv-icon-hover-background-color: rgba(90, 93, 94, .31);--dv-floating-box-shadow: 0 8px 32px rgba(0, 0, 0, .4), 0 2px 8px rgba(0, 0, 0, .25);--dv-floating-border: 1px solid rgba(255, 255, 255, .1);--dv-overlay-z-index: 999;--dv-tab-font-size: inherit;--dv-border-radius: 0px;--dv-tab-margin: 0;--dv-sash-color: transparent;--dv-active-sash-color: transparent;--dv-active-sash-transition-duration: .1s;--dv-active-sash-transition-delay: .5s;--dv-spacing-padding: 0px;--dv-tab-border-radius: 0px;--dv-sash-border-radius: 0px;--dv-dropdown-border-radius: 0px;--dv-tab-close-icon-size: inherit;--dv-floating-group-border: none;--dv-drag-over-border: none;--dv-floating-group-dragging-opacity: .5;--dv-floating-titlebar-height: 22px;--dv-floating-titlebar-background-color: var( --dv-tabs-and-actions-container-background-color );--dv-floating-titlebar-border-bottom: var(--dv-floating-border);--dv-tab-group-color-grey: #5f6368;--dv-tab-group-color-blue: #1a73e8;--dv-tab-group-color-red: #d93025;--dv-tab-group-color-yellow: #f9ab00;--dv-tab-group-color-green: #188038;--dv-tab-group-color-pink: #d01884;--dv-tab-group-color-purple: #a142f4;--dv-tab-group-color-cyan: #007b83;--dv-tab-group-color-orange: #e8710a;--dv-tab-group-chip-padding: 4px 8px;--dv-tab-group-chip-border-radius: 6px;--dv-tab-group-chip-font-size: 11px;--dv-tab-group-line-height: 2px;--dv-tab-group-line-opacity: .6;--dv-spacing-padding: 10px;--dv-tab-font-size: 12px;--dv-border-radius: 12px;--dv-tab-margin: .5rem .25rem;--dv-tabs-and-actions-container-height: 44px;--dv-tab-border-radius: 8px;--dv-sash-border-radius: 4px;--dv-dropdown-border-radius: 8px;--dv-tab-close-icon-size: 8px;--dv-floating-group-border: 2px solid var(--dv-group-view-background-color);--dv-floating-titlebar-background-color: var( --dv-group-view-background-color );--dv-floating-titlebar-border-bottom: none;box-sizing:border-box;padding:var(--dv-spacing-padding);background-color:var(--dv-group-view-background-color)}.dv-shell .dockview-theme-abyss-spaced{padding:0}.dockview-theme-abyss-spaced .dv-resize-container:has(>.dv-groupview){border-radius:8px}.dockview-theme-abyss-spaced .dv-sash{border-radius:var(--dv-sash-border-radius)}.dockview-theme-abyss-spaced .dv-drop-target-anchor{border-radius:calc(var(--dv-border-radius) / 4)}.dockview-theme-abyss-spaced .dv-drop-target-anchor.dv-drop-target-content{border-radius:var(--dv-border-radius)}.dockview-theme-abyss-spaced .dv-resize-container{border-radius:var(--dv-border-radius)!important;border:none}.dockview-theme-abyss-spaced .dv-resize-container .dv-groupview{border:var(--dv-floating-group-border)}.dockview-theme-abyss-spaced .dv-resize-container>.dv-grid-view{box-sizing:border-box;padding:var(--dv-spacing-padding)}.dockview-theme-abyss-spaced .dv-resize-container-with-titlebar>.dv-grid-view{padding-top:0}.dockview-theme-abyss-spaced .dv-resize-container-with-titlebar>.dv-floating-titlebar{border-top-left-radius:var(--dv-border-radius);border-top-right-radius:var(--dv-border-radius)}.dockview-theme-abyss-spaced .dv-tabs-overflow-container,.dockview-theme-abyss-spaced .dv-tabs-overflow-dropdown-default{border-radius:var(--dv-dropdown-border-radius);height:unset!important}.dockview-theme-abyss-spaced .dv-render-overlay{border-bottom-left-radius:var(--dv-border-radius);border-bottom-right-radius:var(--dv-border-radius)}.dockview-theme-abyss-spaced .dv-tab{border-radius:var(--dv-tab-border-radius)}.dockview-theme-abyss-spaced .dv-tab .dv-svg{height:var(--dv-tab-close-icon-size);width:var(--dv-tab-close-icon-size)}.dockview-theme-abyss-spaced .dv-tabs-container-vertical .dv-tab{margin:.25rem .5rem}.dockview-theme-abyss-spaced .dv-groupview{border-radius:var(--dv-border-radius)}.dockview-theme-abyss-spaced .dv-groupview .dv-tabs-and-actions-container{padding:0px calc(var(--dv-border-radius) / 2);border-top-left-radius:var(--dv-border-radius);border-top-right-radius:var(--dv-border-radius)}.dockview-theme-abyss-spaced .dv-groupview .dv-tabs-and-actions-container.dv-groupview-header-vertical{padding:calc(var(--dv-border-radius) / 2) 0}.dockview-theme-abyss-spaced .dv-groupview .dv-content-container{background-color:var(--dv-tabs-and-actions-container-background-color);border-bottom-left-radius:var(--dv-border-radius);border-bottom-right-radius:var(--dv-border-radius)}.dockview-theme-abyss-spaced{--dv-color-abyss-dark: rgb(11, 6, 17);--dv-color-abyss: #16121f;--dv-color-abyss-light: #201d2b;--dv-color-abyss-lighter: #2a2837;--dv-color-abyss-accent: rgb(91, 30, 207);--dv-color-abyss-primary-text: white;--dv-color-abyss-secondary-text: rgb(148, 151, 169);--dv-drag-over-background-color: "";--dv-group-view-background-color: var(--dv-color-abyss-dark);--dv-tabs-and-actions-container-background-color: var(--dv-color-abyss);--dv-activegroup-visiblepanel-tab-background-color: var( --dv-color-abyss-lighter );--dv-activegroup-hiddenpanel-tab-background-color: var( --dv-color-abyss-light );--dv-inactivegroup-visiblepanel-tab-background-color: var( --dv-color-abyss-lighter );--dv-inactivegroup-hiddenpanel-tab-background-color: var( --dv-color-abyss-light );--dv-tab-divider-color: transparent;--dv-activegroup-visiblepanel-tab-color: var(--dv-color-abyss-primary-text);--dv-activegroup-hiddenpanel-tab-color: var( --dv-color-abyss-secondary-text );--dv-inactivegroup-visiblepanel-tab-color: var( --dv-color-abyss-primary-text );--dv-inactivegroup-hiddenpanel-tab-color: var( --dv-color-abyss-secondary-text );--dv-separator-border: transparent;--dv-paneview-header-border-color: rgb(51, 51, 51);--dv-active-sash-color: var(--dv-color-abyss-accent);--dv-floating-group-border: 2px solid var(--dv-color-abyss-dark)}.dockview-theme-light-spaced{--dv-paneview-active-outline-color: dodgerblue;--dv-tabs-and-actions-container-font-size: 13px;--dv-tabs-and-actions-container-height: 35px;--dv-drag-over-background-color: rgba(83, 89, 93, .5);--dv-drag-over-border-color: transparent;--dv-tabs-container-scrollbar-color: #888;--dv-icon-hover-background-color: rgba(90, 93, 94, .31);--dv-floating-box-shadow: 0 8px 32px rgba(0, 0, 0, .4), 0 2px 8px rgba(0, 0, 0, .25);--dv-floating-border: 1px solid rgba(255, 255, 255, .1);--dv-overlay-z-index: 999;--dv-tab-font-size: inherit;--dv-border-radius: 0px;--dv-tab-margin: 0;--dv-sash-color: transparent;--dv-active-sash-color: transparent;--dv-active-sash-transition-duration: .1s;--dv-active-sash-transition-delay: .5s;--dv-spacing-padding: 0px;--dv-tab-border-radius: 0px;--dv-sash-border-radius: 0px;--dv-dropdown-border-radius: 0px;--dv-tab-close-icon-size: inherit;--dv-floating-group-border: none;--dv-drag-over-border: none;--dv-floating-group-dragging-opacity: .5;--dv-floating-titlebar-height: 22px;--dv-floating-titlebar-background-color: var( --dv-tabs-and-actions-container-background-color );--dv-floating-titlebar-border-bottom: var(--dv-floating-border);--dv-tab-group-color-grey: #5f6368;--dv-tab-group-color-blue: #1a73e8;--dv-tab-group-color-red: #d93025;--dv-tab-group-color-yellow: #f9ab00;--dv-tab-group-color-green: #188038;--dv-tab-group-color-pink: #d01884;--dv-tab-group-color-purple: #a142f4;--dv-tab-group-color-cyan: #007b83;--dv-tab-group-color-orange: #e8710a;--dv-tab-group-chip-padding: 4px 8px;--dv-tab-group-chip-border-radius: 6px;--dv-tab-group-chip-font-size: 11px;--dv-tab-group-line-height: 2px;--dv-tab-group-line-opacity: .6;--dv-spacing-padding: 10px;--dv-tab-font-size: 12px;--dv-border-radius: 12px;--dv-tab-margin: .5rem .25rem;--dv-tabs-and-actions-container-height: 44px;--dv-tab-border-radius: 8px;--dv-sash-border-radius: 4px;--dv-dropdown-border-radius: 8px;--dv-tab-close-icon-size: 8px;--dv-floating-group-border: 2px solid var(--dv-group-view-background-color);--dv-floating-titlebar-background-color: var( --dv-group-view-background-color );--dv-floating-titlebar-border-bottom: none;box-sizing:border-box;padding:var(--dv-spacing-padding);background-color:var(--dv-group-view-background-color)}.dv-shell .dockview-theme-light-spaced{padding:0}.dockview-theme-light-spaced .dv-resize-container:has(>.dv-groupview){border-radius:8px}.dockview-theme-light-spaced .dv-sash{border-radius:var(--dv-sash-border-radius)}.dockview-theme-light-spaced .dv-drop-target-anchor{border-radius:calc(var(--dv-border-radius) / 4)}.dockview-theme-light-spaced .dv-drop-target-anchor.dv-drop-target-content{border-radius:var(--dv-border-radius)}.dockview-theme-light-spaced .dv-resize-container{border-radius:var(--dv-border-radius)!important;border:none}.dockview-theme-light-spaced .dv-resize-container .dv-groupview{border:var(--dv-floating-group-border)}.dockview-theme-light-spaced .dv-resize-container>.dv-grid-view{box-sizing:border-box;padding:var(--dv-spacing-padding)}.dockview-theme-light-spaced .dv-resize-container-with-titlebar>.dv-grid-view{padding-top:0}.dockview-theme-light-spaced .dv-resize-container-with-titlebar>.dv-floating-titlebar{border-top-left-radius:var(--dv-border-radius);border-top-right-radius:var(--dv-border-radius)}.dockview-theme-light-spaced .dv-tabs-overflow-container,.dockview-theme-light-spaced .dv-tabs-overflow-dropdown-default{border-radius:var(--dv-dropdown-border-radius);height:unset!important}.dockview-theme-light-spaced .dv-render-overlay{border-bottom-left-radius:var(--dv-border-radius);border-bottom-right-radius:var(--dv-border-radius)}.dockview-theme-light-spaced .dv-tab{border-radius:var(--dv-tab-border-radius)}.dockview-theme-light-spaced .dv-tab .dv-svg{height:var(--dv-tab-close-icon-size);width:var(--dv-tab-close-icon-size)}.dockview-theme-light-spaced .dv-tabs-container-vertical .dv-tab{margin:.25rem .5rem}.dockview-theme-light-spaced .dv-groupview{border-radius:var(--dv-border-radius)}.dockview-theme-light-spaced .dv-groupview .dv-tabs-and-actions-container{padding:0px calc(var(--dv-border-radius) / 2);border-top-left-radius:var(--dv-border-radius);border-top-right-radius:var(--dv-border-radius)}.dockview-theme-light-spaced .dv-groupview .dv-tabs-and-actions-container.dv-groupview-header-vertical{padding:calc(var(--dv-border-radius) / 2) 0}.dockview-theme-light-spaced .dv-groupview .dv-content-container{background-color:var(--dv-tabs-and-actions-container-background-color);border-bottom-left-radius:var(--dv-border-radius);border-bottom-right-radius:var(--dv-border-radius)}.dockview-theme-light-spaced{--dv-drag-over-background-color: "";--dv-group-view-background-color: #f6f5f9;--dv-tabs-and-actions-container-background-color: white;--dv-activegroup-visiblepanel-tab-background-color: #ededf0;--dv-activegroup-hiddenpanel-tab-background-color: #f9f9fa;--dv-inactivegroup-visiblepanel-tab-background-color: #ededf0;--dv-inactivegroup-hiddenpanel-tab-background-color: #f9f9fa;--dv-tab-divider-color: transparent;--dv-activegroup-visiblepanel-tab-color: rgb(104, 107, 130);--dv-activegroup-hiddenpanel-tab-color: rgb(148, 151, 169);--dv-inactivegroup-visiblepanel-tab-color: rgb(104, 107, 130);--dv-inactivegroup-hiddenpanel-tab-color: rgb(148, 151, 169);--dv-separator-border: transparent;--dv-paneview-header-border-color: rgb(51, 51, 51);--dv-active-sash-color: rgb(91, 30, 207);--dv-floating-box-shadow: 0 8px 32px rgba(0, 0, 0, .12), 0 2px 8px rgba(0, 0, 0, .08);--dv-floating-border: 1px solid rgba(0, 0, 0, .1);--dv-scrollbar-background-color: rgba(0, 0, 0, .25);--dv-floating-group-border: 2px solid rgba(255, 255, 255, .1)}.dockview-spaced{--dv-spacing-padding: 10px;--dv-tab-font-size: 12px;--dv-border-radius: 12px;--dv-tab-margin: .5rem .25rem;--dv-tabs-and-actions-container-height: 44px;--dv-tab-border-radius: 8px;--dv-sash-border-radius: 4px;--dv-dropdown-border-radius: 8px;--dv-tab-close-icon-size: 8px;--dv-floating-group-border: 2px solid var(--dv-group-view-background-color);--dv-floating-titlebar-background-color: var( --dv-group-view-background-color );--dv-floating-titlebar-border-bottom: none;box-sizing:border-box;padding:var(--dv-spacing-padding);background-color:var(--dv-group-view-background-color)}.dv-shell .dockview-spaced{padding:0}.dockview-spaced .dv-resize-container:has(>.dv-groupview){border-radius:8px}.dockview-spaced .dv-sash{border-radius:var(--dv-sash-border-radius)}.dockview-spaced .dv-drop-target-anchor{border-radius:calc(var(--dv-border-radius) / 4)}.dockview-spaced .dv-drop-target-anchor.dv-drop-target-content{border-radius:var(--dv-border-radius)}.dockview-spaced .dv-resize-container{border-radius:var(--dv-border-radius)!important;border:none}.dockview-spaced .dv-resize-container .dv-groupview{border:var(--dv-floating-group-border)}.dockview-spaced .dv-resize-container>.dv-grid-view{box-sizing:border-box;padding:var(--dv-spacing-padding)}.dockview-spaced .dv-resize-container-with-titlebar>.dv-grid-view{padding-top:0}.dockview-spaced .dv-resize-container-with-titlebar>.dv-floating-titlebar{border-top-left-radius:var(--dv-border-radius);border-top-right-radius:var(--dv-border-radius)}.dockview-spaced .dv-tabs-overflow-container,.dockview-spaced .dv-tabs-overflow-dropdown-default{border-radius:var(--dv-dropdown-border-radius);height:unset!important}.dockview-spaced .dv-render-overlay{border-bottom-left-radius:var(--dv-border-radius);border-bottom-right-radius:var(--dv-border-radius)}.dockview-spaced .dv-tab{border-radius:var(--dv-tab-border-radius)}.dockview-spaced .dv-tab .dv-svg{height:var(--dv-tab-close-icon-size);width:var(--dv-tab-close-icon-size)}.dockview-spaced .dv-tabs-container-vertical .dv-tab{margin:.25rem .5rem}.dockview-spaced .dv-groupview{border-radius:var(--dv-border-radius)}.dockview-spaced .dv-groupview .dv-tabs-and-actions-container{padding:0px calc(var(--dv-border-radius) / 2);border-top-left-radius:var(--dv-border-radius);border-top-right-radius:var(--dv-border-radius)}.dockview-spaced .dv-groupview .dv-tabs-and-actions-container.dv-groupview-header-vertical{padding:calc(var(--dv-border-radius) / 2) 0}.dockview-spaced .dv-groupview .dv-content-container{background-color:var(--dv-tabs-and-actions-container-background-color);border-bottom-left-radius:var(--dv-border-radius);border-bottom-right-radius:var(--dv-border-radius)}.dv-context-menu{min-width:160px;overflow:hidden;background:var(--dv-context-menu-background-color, var(--dv-activegroup-hiddenpanel-tab-background-color));color:var(--dv-context-menu-color, var(--dv-activegroup-hiddenpanel-tab-color));border:1px solid var(--dv-tab-divider-color);border-radius:var(--dv-border-radius);box-shadow:var(--dv-floating-box-shadow);padding:4px 0}.dv-context-menu-item{height:25px;padding:0 12px;display:flex;align-items:center;cursor:pointer;font-size:var(--dv-tabs-and-actions-container-font-size);white-space:nowrap;user-select:none}.dv-context-menu-item:hover{background:var(--dv-icon-hover-background-color)}.dv-context-menu-item.dv-context-menu-item--disabled{opacity:.4;cursor:default;pointer-events:none}.dv-context-menu-separator{height:1px;background:var(--dv-tab-divider-color);margin:4px 0}.dv-context-menu-rename{padding:8px 12px 4px}.dv-context-menu-rename-input{width:100%;box-sizing:border-box;padding:8px 10px;border:1px solid var(--dv-tab-divider-color);border-radius:var(--dv-border-radius);background:inherit;color:var(--dv-activegroup-visiblepanel-tab-color);font-size:var(--dv-tabs-and-actions-container-font-size);outline:none}.dv-context-menu-rename-input:focus{border-color:var(--dv-activegroup-visiblepanel-tab-color)}.dv-context-menu-rename-input::placeholder{color:var(--dv-activegroup-hiddenpanel-tab-color)}.dv-context-menu-color-picker{display:flex;flex-direction:row;gap:6px;padding:8px 12px;align-items:center}.dv-context-menu-color-swatch{width:20px;height:20px;border-radius:50%;cursor:pointer;border:2px solid transparent;flex-shrink:0;background-color:var(--dv-tab-group-color)}.dv-context-menu-color-swatch:hover{opacity:.85}.dv-context-menu-color-swatch.dv-context-menu-color-swatch--selected{outline:2px solid var(--dv-tab-divider-color);outline-offset:2px}.dv-tab-group-indicator-none .dv-groupview-header-bottom .dv-tab-group-underline{top:auto;bottom:0}.dv-groupview.dv-groupview-header-bottom.dv-active-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab:after,.dv-groupview.dv-groupview-header-bottom.dv-inactive-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab:after{top:0;bottom:auto}.dv-drop-target-container{position:absolute;z-index:9999;top:0;left:0;height:100%;width:100%;pointer-events:none;overflow:hidden;--dv-transition-duration: .3s}.dv-drop-target-container .dv-drop-target-anchor{position:relative;border:var(--dv-drag-over-border);background-color:var(--dv-drag-over-background-color);opacity:1;will-change:transform,opacity;transform:translateZ(0);backface-visibility:hidden;contain:layout paint;transition:opacity var(--dv-transition-duration) ease-in,top var(--dv-transition-duration) ease-out,left var(--dv-transition-duration) ease-out,width var(--dv-transition-duration) ease-out,height var(--dv-transition-duration) ease-out}.dv-drop-target{position:relative;--dv-transition-duration: 70ms}.dv-drop-target>.dv-drop-target-dropzone{position:absolute;left:0;top:0;height:100%;width:100%;z-index:1000;pointer-events:none}.dv-drop-target>.dv-drop-target-dropzone>.dv-drop-target-selection{position:relative;box-sizing:border-box;height:100%;width:100%;border:var(--dv-drag-over-border);background-color:var(--dv-drag-over-background-color);transition:top var(--dv-transition-duration) ease-out,left var(--dv-transition-duration) ease-out,width var(--dv-transition-duration) ease-out,height var(--dv-transition-duration) ease-out,opacity var(--dv-transition-duration) ease-out;will-change:transform;pointer-events:none}.dv-drop-target>.dv-drop-target-dropzone>.dv-drop-target-selection.dv-drop-target-top.dv-drop-target-small-vertical{border-top:1px solid var(--dv-drag-over-border-color)}.dv-drop-target>.dv-drop-target-dropzone>.dv-drop-target-selection.dv-drop-target-bottom.dv-drop-target-small-vertical{border-bottom:1px solid var(--dv-drag-over-border-color)}.dv-drop-target>.dv-drop-target-dropzone>.dv-drop-target-selection.dv-drop-target-left.dv-drop-target-small-horizontal{border-left:1px solid var(--dv-drag-over-border-color)}.dv-drop-target>.dv-drop-target-dropzone>.dv-drop-target-selection.dv-drop-target-right.dv-drop-target-small-horizontal{border-right:1px solid var(--dv-drag-over-border-color)}.dv-dockview{position:relative;background-color:var(--dv-group-view-background-color)}.dv-dockview .dv-watermark-container{position:absolute;top:0;left:0;height:100%;width:100%;z-index:1}.dv-dockview .dv-overlay-render-container{position:relative}.dv-groupview.dv-active-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab{background-color:var(--dv-activegroup-visiblepanel-tab-background-color);color:var(--dv-activegroup-visiblepanel-tab-color)}.dv-groupview.dv-active-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-inactive-tab{background-color:var(--dv-activegroup-hiddenpanel-tab-background-color);color:var(--dv-activegroup-hiddenpanel-tab-color)}.dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-active-tab{background-color:var(--dv-inactivegroup-visiblepanel-tab-background-color);color:var(--dv-inactivegroup-visiblepanel-tab-color)}.dv-groupview.dv-inactive-group>.dv-tabs-and-actions-container .dv-tabs-container>.dv-tab.dv-inactive-tab{background-color:var(--dv-inactivegroup-hiddenpanel-tab-background-color);color:var(--dv-inactivegroup-hiddenpanel-tab-color)}.dv-tab.dv-tab-dragging{background-color:var(--dv-activegroup-visiblepanel-tab-background-color);color:var(--dv-activegroup-visiblepanel-tab-color)}.dv-groupview{display:flex;height:100%;background-color:var(--dv-group-view-background-color);overflow:hidden;flex-direction:column}.dv-groupview:focus{outline:none}.dv-groupview>.dv-content-container{flex-grow:1;min-height:0;outline:none}.dv-groupview.dv-groupview-header-bottom{flex-direction:column-reverse}.dv-groupview.dv-groupview-header-left{flex-direction:row}.dv-groupview.dv-groupview-header-right{flex-direction:row-reverse}.dv-groupview.dv-groupview-edge.dv-edge-collapsed>.dv-content-container{display:none}.dv-root-wrapper,.dv-grid-view,.dv-branch-node{height:100%;width:100%}.dv-debug .dv-resize-container .dv-resize-handle-top{background-color:red}.dv-debug .dv-resize-container .dv-resize-handle-bottom{background-color:green}.dv-debug .dv-resize-container .dv-resize-handle-left{background-color:#ff0}.dv-debug .dv-resize-container .dv-resize-handle-right{background-color:#00f}.dv-debug .dv-resize-container .dv-resize-handle-topleft,.dv-debug .dv-resize-container .dv-resize-handle-topright,.dv-debug .dv-resize-container .dv-resize-handle-bottomleft,.dv-debug .dv-resize-container .dv-resize-handle-bottomright{background-color:#0ff}.dv-floating-overlay-host{position:absolute;pointer-events:none}.dv-floating-overlay-host>.dv-resize-container{pointer-events:auto}.dv-resize-container>.dv-grid-view{width:100%;height:100%}.dv-resize-container-with-titlebar{display:flex;flex-direction:column}.dv-resize-container-with-titlebar>.dv-floating-titlebar{flex:0 0 auto}.dv-resize-container-with-titlebar>.dv-grid-view{height:auto;flex:1 1 0;min-height:0}.dv-floating-titlebar{box-sizing:border-box;flex-shrink:0;height:var(--dv-floating-titlebar-height, 22px);background-color:var(--dv-floating-titlebar-background-color);border-bottom:var(--dv-floating-titlebar-border-bottom, none);user-select:none;touch-action:none}.dv-floating-titlebar.dv-draggable{cursor:grab}.dv-resize-container{--dv-overlay-z-index: var(--dv-overlay-z-index, 999);position:absolute;z-index:calc(var(--dv-overlay-z-index) - 2);background-color:var(--dv-group-view-background-color);border:var(--dv-floating-border);box-shadow:var(--dv-floating-box-shadow);will-change:transform,opacity;transform:translateZ(0);backface-visibility:hidden}.dv-resize-container.dv-hidden{display:none}.dv-resize-container.dv-resize-container-dragging{opacity:var(--dv-floating-group-dragging-opacity);will-change:transform,opacity}.dv-resize-container .dv-resize-handle-top,.dv-resize-container .dv-resize-handle-bottom,.dv-resize-container .dv-resize-handle-left,.dv-resize-container .dv-resize-handle-right,.dv-resize-container .dv-resize-handle-topleft,.dv-resize-container .dv-resize-handle-topright,.dv-resize-container .dv-resize-handle-bottomleft,.dv-resize-container .dv-resize-handle-bottomright{touch-action:none}.dv-resize-container .dv-resize-handle-top{height:4px;width:calc(100% - 8px);left:4px;top:-2px;z-index:var(--dv-overlay-z-index);position:absolute;cursor:ns-resize}.dv-resize-container .dv-resize-handle-bottom{height:4px;width:calc(100% - 8px);left:4px;bottom:-2px;z-index:var(--dv-overlay-z-index);position:absolute;cursor:ns-resize}.dv-resize-container .dv-resize-handle-left{height:calc(100% - 8px);width:4px;left:-2px;top:4px;z-index:var(--dv-overlay-z-index);position:absolute;cursor:ew-resize}.dv-resize-container .dv-resize-handle-right{height:calc(100% - 8px);width:4px;right:-2px;top:4px;z-index:var(--dv-overlay-z-index);position:absolute;cursor:ew-resize}.dv-resize-container .dv-resize-handle-topleft{height:4px;width:4px;top:-2px;left:-2px;z-index:var(--dv-overlay-z-index);position:absolute;cursor:nw-resize}.dv-resize-container .dv-resize-handle-topright{height:4px;width:4px;right:-2px;top:-2px;z-index:var(--dv-overlay-z-index);position:absolute;cursor:ne-resize}.dv-resize-container .dv-resize-handle-bottomleft{height:4px;width:4px;left:-2px;bottom:-2px;z-index:var(--dv-overlay-z-index);position:absolute;cursor:sw-resize}.dv-resize-container .dv-resize-handle-bottomright{height:4px;width:4px;right:-2px;bottom:-2px;z-index:var(--dv-overlay-z-index);position:absolute;cursor:se-resize}@media(pointer:coarse){.dv-resize-container .dv-resize-handle-top,.dv-resize-container .dv-resize-handle-bottom{height:16px;width:calc(100% - 48px);left:24px}.dv-resize-container .dv-resize-handle-top{top:-10px}.dv-resize-container .dv-resize-handle-bottom{bottom:-10px}.dv-resize-container .dv-resize-handle-left,.dv-resize-container .dv-resize-handle-right{width:16px;height:calc(100% - 48px);top:24px}.dv-resize-container .dv-resize-handle-left{left:-10px}.dv-resize-container .dv-resize-handle-right{right:-10px}.dv-resize-container .dv-resize-handle-topleft,.dv-resize-container .dv-resize-handle-topright,.dv-resize-container .dv-resize-handle-bottomleft,.dv-resize-container .dv-resize-handle-bottomright{height:24px;width:24px}.dv-resize-container .dv-resize-handle-topleft{top:-12px;left:-12px}.dv-resize-container .dv-resize-handle-topright{top:-12px;right:-12px}.dv-resize-container .dv-resize-handle-bottomleft{bottom:-12px;left:-12px}.dv-resize-container .dv-resize-handle-bottomright{bottom:-12px;right:-12px}}.dv-render-overlay{--dv-overlay-z-index: var(--dv-overlay-z-index, 999);position:absolute;z-index:1;width:100%;height:100%;contain:layout paint;isolation:isolate;will-change:transform;transform:translateZ(0);backface-visibility:hidden}.dv-render-overlay.dv-render-overlay-float{z-index:calc(var(--dv-overlay-z-index) - 1)}.dv-debug .dv-render-overlay{outline:1px solid red;outline-offset:-1}.dv-pane-container{height:100%;width:100%}.dv-pane-container.dv-animated .dv-view{will-change:transform;transform:translateZ(0);backface-visibility:hidden;transition:transform .15s ease-out}.dv-pane-container .dv-view{overflow:hidden;display:flex;flex-direction:column;padding:0!important}.dv-pane-container .dv-view:not(:first-child):before{background-color:transparent!important}.dv-pane-container .dv-view:not(:first-child) .dv-pane>.dv-pane-header{border-top:1px solid var(--dv-paneview-header-border-color)}.dv-pane-container .dv-view .dv-default-header{background-color:var(--dv-group-view-background-color);color:var(--dv-activegroup-visiblepanel-tab-color);display:flex;padding:0 8px;cursor:pointer}.dv-pane-container .dv-view .dv-default-header .dv-pane-header-icon{display:flex;justify-content:center;align-items:center}.dv-pane-container .dv-view .dv-default-header>span{padding-left:8px;flex-grow:1}.dv-pane-container:first-of-type>.dv-pane>.dv-pane-header{border-top:none!important}.dv-pane-container .dv-pane{display:flex;flex-direction:column;overflow:hidden;height:100%}.dv-pane-container .dv-pane .dv-pane-header{box-sizing:border-box;user-select:none;position:relative;outline:none}.dv-pane-container .dv-pane .dv-pane-header.dv-pane-draggable{cursor:pointer}.dv-pane-container .dv-pane .dv-pane-header:focus:before,.dv-pane-container .dv-pane .dv-pane-header:focus-within:before{position:absolute;top:0;left:0;width:100%;height:100%;z-index:5;content:"";pointer-events:none;outline:1px solid;outline-width:-1px;outline-style:solid;outline-offset:-1px;outline-color:var(--dv-paneview-active-outline-color)}.dv-pane-container .dv-pane .dv-pane-body{overflow-y:auto;overflow-x:hidden;flex-grow:1;position:relative;outline:none}.dv-pane-container .dv-pane .dv-pane-body:focus:before,.dv-pane-container .dv-pane .dv-pane-body:focus-within:before{position:absolute;top:0;left:0;width:100%;height:100%;z-index:5;content:"";pointer-events:none;outline:1px solid;outline-width:-1px;outline-style:solid;outline-offset:-1px;outline-color:var(--dv-paneview-active-outline-color)}.dv-debug .dv-split-view-container .dv-sash-container .dv-sash.dv-enabled{background-color:#000}.dv-debug .dv-split-view-container .dv-sash-container .dv-sash.dv-disabled{background-color:orange}.dv-debug .dv-split-view-container .dv-sash-container .dv-sash.dv-maximum{background-color:green}.dv-debug .dv-split-view-container .dv-sash-container .dv-sash.dv-minimum{background-color:red}.dv-split-view-container{position:relative;overflow:hidden;height:100%;width:100%}.dv-split-view-container.dv-splitview-disabled>.dv-sash-container>.dv-sash{pointer-events:none}.dv-split-view-container.dv-animation .dv-view,.dv-split-view-container.dv-animation .dv-sash{will-change:transform;transform:translateZ(0);backface-visibility:hidden;transition:transform .15s ease-out}.dv-split-view-container.dv-horizontal{height:100%}.dv-split-view-container.dv-horizontal>.dv-sash-container>.dv-sash{height:100%;width:4px}.dv-split-view-container.dv-horizontal>.dv-sash-container>.dv-sash.dv-enabled{cursor:ew-resize}.dv-split-view-container.dv-horizontal>.dv-sash-container>.dv-sash.dv-disabled{cursor:default}.dv-split-view-container.dv-horizontal>.dv-sash-container>.dv-sash.dv-maximum{cursor:w-resize}.dv-split-view-container.dv-horizontal>.dv-sash-container>.dv-sash.dv-minimum{cursor:e-resize}.dv-split-view-container.dv-horizontal>.dv-view-container>.dv-view:not(:first-child):before{height:100%;width:1px}.dv-split-view-container.dv-vertical{width:100%}.dv-split-view-container.dv-vertical>.dv-sash-container>.dv-sash{width:100%;height:4px}.dv-split-view-container.dv-vertical>.dv-sash-container>.dv-sash.dv-enabled{cursor:ns-resize}.dv-split-view-container.dv-vertical>.dv-sash-container>.dv-sash.dv-disabled{cursor:default}.dv-split-view-container.dv-vertical>.dv-sash-container>.dv-sash.dv-maximum{cursor:n-resize}.dv-split-view-container.dv-vertical>.dv-sash-container>.dv-sash.dv-minimum{cursor:s-resize}.dv-split-view-container.dv-vertical>.dv-view-container>.dv-view{width:100%}.dv-split-view-container.dv-vertical>.dv-view-container>.dv-view:not(:first-child):before{height:1px;width:100%}.dv-split-view-container .dv-sash-container{height:100%;width:100%;position:absolute}.dv-split-view-container .dv-sash-container .dv-sash{position:absolute;z-index:99;outline:none;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;touch-action:none;background-color:var(--dv-sash-color, transparent)}.dv-split-view-container .dv-sash-container .dv-sash:not(.disabled):active,.dv-split-view-container .dv-sash-container .dv-sash:not(.disabled):hover{background-color:var(--dv-active-sash-color, transparent);transition-property:background-color;transition-timing-function:ease-in-out;transition-duration:var(--dv-active-sash-transition-duration, .1s);transition-delay:var(--dv-active-sash-transition-delay, .5s)}@media(pointer:coarse){.dv-split-view-container .dv-sash-container>.dv-sash:not(.dv-disabled):before{content:"";position:absolute;background:transparent}.dv-split-view-container.dv-horizontal>.dv-sash-container>.dv-sash:not(.dv-disabled):before{inset:0 -10px}.dv-split-view-container.dv-vertical>.dv-sash-container>.dv-sash:not(.dv-disabled):before{inset:-10px 0}}.dv-split-view-container .dv-view-container{position:relative;height:100%;width:100%}.dv-split-view-container .dv-view-container .dv-view{height:100%;box-sizing:border-box;overflow:auto;position:absolute}.dv-split-view-container.dv-separator-border .dv-view:not(:first-child):before{content:" ";position:absolute;top:0;left:0;z-index:5;pointer-events:none;background-color:var(--dv-separator-border)}.dv-dragged{transform:translateZ(0)}.dv-tab-ghost-drag{position:relative}.dv-tab-ghost-drag:after{position:absolute;content:"";height:100%;width:100%;top:0;left:0;pointer-events:none;outline:1px solid var(--dv-tab-divider-color)!important;outline-offset:-1px;z-index:5}.dv-tab{flex-shrink:0}.dv-tab:focus-within,.dv-tab:focus{position:relative}.dv-tab:focus-within:after,.dv-tab:focus:after{position:absolute;content:"";height:100%;width:100%;top:0;left:0;pointer-events:none;outline:1px solid var(--dv-tab-divider-color)!important;outline-offset:-1px;z-index:5}.dv-tab.dv-tab-dragging .dv-default-tab-action{background-color:var(--dv-activegroup-visiblepanel-tab-color)}.dv-tab.dv-active-tab .dv-default-tab .dv-default-tab-action{visibility:visible}.dv-tab.dv-inactive-tab .dv-default-tab .dv-default-tab-action{visibility:hidden}.dv-tab.dv-inactive-tab .dv-default-tab:hover .dv-default-tab-action{visibility:visible}@media(hover:none){.dv-tab.dv-inactive-tab .dv-default-tab .dv-default-tab-action{visibility:visible}}.dv-tab .dv-default-tab{position:relative;height:100%;width:100%;display:flex;align-items:center;white-space:nowrap;text-overflow:ellipsis}.dv-tab .dv-default-tab .dv-default-tab-content{flex-grow:1;margin-right:4px}.dv-tab .dv-default-tab .dv-default-tab-action{padding:4px;display:flex;align-items:center;justify-content:center;box-sizing:border-box}.dv-tab .dv-default-tab .dv-default-tab-action:hover{border-radius:2px;background-color:var(--dv-icon-hover-background-color)}@media(pointer:coarse){.dv-tab .dv-default-tab .dv-default-tab-action{padding:8px}}.dv-tabs-overflow-dropdown-default{height:100%;color:var(--dv-activegroup-hiddenpanel-tab-color);margin:var(--dv-tab-margin);display:flex;align-items:center;flex-shrink:0;padding:.25rem .5rem;cursor:pointer}.dv-tabs-overflow-dropdown-default>span{padding-left:.25rem}.dv-tabs-overflow-dropdown-default>svg{transform:rotate(90deg)}.dv-tabs-overflow-dropdown-default:hover{border-radius:2px;background-color:var(--dv-icon-hover-background-color)}.dv-tabs-container{display:flex;position:relative;height:100%;overflow:auto;scrollbar-width:thin;will-change:scroll-position;transform:translateZ(0);overscroll-behavior:contain;touch-action:pan-x}.dv-tabs-container.dv-tabs-container-vertical{width:100%;height:fit-content;max-height:100%;writing-mode:vertical-rl;touch-action:pan-y}.dv-tabs-container.dv-horizontal .dv-tab:not(:first-child):before,.dv-tabs-container.dv-vertical .dv-tab:not(:first-child):before{content:" ";position:absolute;top:0;left:0;z-index:5;pointer-events:none;background-color:var(--dv-tab-divider-color)}.dv-tabs-container.dv-horizontal .dv-tab:not(:first-child):before{width:1px;height:100%}.dv-tabs-container.dv-vertical .dv-tab:not(:first-child):before{width:100%;height:1px}.dv-tabs-container::-webkit-scrollbar{height:3px}.dv-tabs-container::-webkit-scrollbar-track{background:transparent}.dv-tabs-container::-webkit-scrollbar-thumb{background:var(--dv-tabs-container-scrollbar-color)}.dv-scrollable>.dv-tabs-container{overflow:hidden}.dv-tab{user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;outline:none;padding:.25rem .5rem;cursor:pointer;position:relative;box-sizing:border-box;font-size:var(--dv-tab-font-size);margin:var(--dv-tab-margin);touch-action:none}.dv-tab.dv-tab--shifting{will-change:transform,margin-left,margin-right,margin-top,margin-bottom;transition:transform var(--dv-transition-duration, .2s) ease-out,margin-left var(--dv-transition-duration, .2s) ease-out,margin-right var(--dv-transition-duration, .2s) ease-out,margin-top var(--dv-transition-duration, .2s) ease-out,margin-bottom var(--dv-transition-duration, .2s) ease-out}.dv-tab.dv-tab--dragging,.dv-tab.dv-tab--group-collapsed{width:0!important;min-width:0!important;padding:0!important;margin:0!important;overflow:hidden;opacity:0;pointer-events:none;transition:width var(--dv-transition-duration, .2s) ease-out,padding var(--dv-transition-duration, .2s) ease-out,margin var(--dv-transition-duration, .2s) ease-out,opacity var(--dv-transition-duration, .2s) ease-out}.dv-tab.dv-tab--group-expanding{transition:width var(--dv-transition-duration, .2s) ease-out,padding var(--dv-transition-duration, .2s) ease-out,margin var(--dv-transition-duration, .2s) ease-out,opacity var(--dv-transition-duration, .2s) ease-out}@media(prefers-reduced-motion:reduce){.dv-tab,.dv-tab-group-chip{transition:none!important}}.dv-tab-group-chip{display:inline-flex;align-items:center;align-self:center;padding:var(--dv-tab-group-chip-padding);margin:0 8px;border-radius:var(--dv-tab-group-chip-border-radius);font-size:var(--dv-tab-group-chip-font-size);cursor:pointer;user-select:none;white-space:nowrap;box-sizing:border-box;line-height:1;touch-action:none;background-color:var(--dv-tab-group-color);color:#fff}.dv-tab-group-chip.dv-tab-group-chip--accent-off{background-color:transparent;color:inherit}.dv-tab-group-chip.dv-tab-group-chip--shifting{will-change:margin-left;transition:margin-left var(--dv-transition-duration, .2s) ease-out}.dv-tab-group-chip.dv-tab-group-chip--dragging{width:0!important;min-width:0!important;padding:0!important;margin:0!important;overflow:hidden;opacity:0;pointer-events:none;transition:width var(--dv-transition-duration, .2s) ease-out,padding var(--dv-transition-duration, .2s) ease-out,margin var(--dv-transition-duration, .2s) ease-out,opacity var(--dv-transition-duration, .2s) ease-out}.dv-tab-group-chip .dv-tab-group-chip-label--empty{display:none}.dv-tab-group-chip:has(.dv-tab-group-chip-label--empty){position:relative;width:12px;height:12px;padding:0;border-radius:50%}.dv-tab-group-chip:has(.dv-tab-group-chip-label--empty):before{content:"";position:absolute;inset:-8px}.dv-tab-group-underline{position:absolute;bottom:0;opacity:var(--dv-tab-group-line-opacity);pointer-events:none;z-index:10}.dv-groupview-header-bottom .dv-tab-group-underline{bottom:auto;top:0}.dv-tabs-container-vertical .dv-tab-group-underline{bottom:auto;left:0}.dv-tabs-container-vertical .dv-tab-group-chip{margin:8px 0}.dv-tabs-container-vertical .dv-tab{padding:.5rem .25rem}.dv-tabs-container-vertical .dv-tab.dv-tab--group-collapsed{height:0!important;min-height:0!important;width:auto!important;min-width:initial!important;transition:height var(--dv-transition-duration, .2s) ease-out,padding var(--dv-transition-duration, .2s) ease-out,margin var(--dv-transition-duration, .2s) ease-out,opacity var(--dv-transition-duration, .2s) ease-out}.dv-tabs-container-vertical .dv-tab.dv-tab--group-expanding{transition:height var(--dv-transition-duration, .2s) ease-out,padding var(--dv-transition-duration, .2s) ease-out,margin var(--dv-transition-duration, .2s) ease-out,opacity var(--dv-transition-duration, .2s) ease-out}.dv-tabs-container-vertical .dv-tab.dv-tab--dragging{height:0!important;min-height:0!important;width:auto!important;min-width:initial!important;transition:height var(--dv-transition-duration, .2s) ease-out,padding var(--dv-transition-duration, .2s) ease-out,margin var(--dv-transition-duration, .2s) ease-out,opacity var(--dv-transition-duration, .2s) ease-out}.dv-tabs-overflow-container{flex-direction:column;height:unset;font-size:var(--dv-tabs-and-actions-container-font-size);max-height:min(50vh,400px);overflow-y:auto;border:1px solid var(--dv-tab-divider-color);background-color:var(--dv-group-view-background-color)}.dv-tabs-overflow-container::-webkit-scrollbar{width:6px}.dv-tabs-overflow-container::-webkit-scrollbar-track{background:transparent}.dv-tabs-overflow-container::-webkit-scrollbar-thumb{background:var(--dv-tabs-container-scrollbar-color);border-radius:3px}.dv-tabs-overflow-container{scrollbar-width:thin}.dv-tabs-overflow-container .dv-tab:not(:last-child){border-bottom:1px solid var(--dv-tab-divider-color)}.dv-tabs-overflow-container .dv-active-tab{background-color:var(--dv-activegroup-visiblepanel-tab-background-color);color:var(--dv-activegroup-visiblepanel-tab-color)}.dv-tabs-overflow-container .dv-inactive-tab{background-color:var(--dv-activegroup-hiddenpanel-tab-background-color);color:var(--dv-activegroup-hiddenpanel-tab-color)}.dv-tabs-overflow-container .dv-tabs-overflow-group-header{display:flex;align-items:center;gap:6px;padding:4px 8px;font-size:.8em;font-weight:600;color:var(--dv-activegroup-hiddenpanel-tab-color);cursor:pointer;border-bottom:1px solid var(--dv-tab-divider-color)}.dv-tabs-overflow-container .dv-tabs-overflow-group-header:hover{background-color:var(--dv-icon-hover-background-color)}.dv-tabs-overflow-container .dv-tabs-overflow-group-color{display:inline-block;width:8px;height:8px;border-radius:50%;flex-shrink:0;background-color:var(--dv-tab-group-color)}.dv-tabs-overflow-container .dv-tabs-overflow-group-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dv-tabs-overflow-container .dv-tabs-overflow-group-collapsed-badge{font-size:.75em;font-weight:400;opacity:.7;padding:1px 4px;border-radius:3px;background-color:var(--dv-tab-divider-color)}.dv-tabs-overflow-container .dv-tab.dv-tab--grouped{padding-left:16px}.dv-tabs-and-actions-container{display:flex;background-color:var(--dv-tabs-and-actions-container-background-color);flex-shrink:0;box-sizing:border-box;height:var(--dv-tabs-and-actions-container-height);font-size:var(--dv-tabs-and-actions-container-font-size)}.dv-tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .dv-scrollable,.dv-tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .dv-tabs-container{flex-grow:1}.dv-tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .dv-tabs-container .dv-tab{flex-grow:1;padding:0}.dv-tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .dv-void-container{flex-grow:0}.dv-tabs-and-actions-container .dv-void-container{display:flex;flex-grow:1;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;touch-action:none}.dv-tabs-and-actions-container .dv-void-container.dv-draggable{cursor:grab}.dv-tabs-and-actions-container .dv-right-actions-container{display:flex}.dv-tabs-and-actions-container .dv-right-actions-container.dv-right-actions-container-vertical{flex-direction:column}.dv-tabs-and-actions-container.dv-groupview-header-vertical{flex-direction:column;height:auto;width:var(--dv-tabs-and-actions-container-height)}.dv-watermark{display:flex;height:100%}.dockview-theme-vgai{--dv-group-view-background-color: var(--vgai-bg-1);--dv-tabs-and-actions-container-background-color: var(--vgai-bg-2);--dv-activegroup-visiblepanel-tab-background-color: transparent;--dv-activegroup-hiddenpanel-tab-background-color: transparent;--dv-inactivegroup-visiblepanel-tab-background-color: transparent;--dv-inactivegroup-hiddenpanel-tab-background-color: transparent;--dv-activegroup-visiblepanel-tab-color: var(--vgai-text-1);--dv-activegroup-hiddenpanel-tab-color: var(--vgai-text-2);--dv-inactivegroup-visiblepanel-tab-color: var(--vgai-text-2);--dv-inactivegroup-hiddenpanel-tab-color: var(--vgai-text-3);--dv-tab-divider-color: var(--vgai-border-1);--dv-separator-border: transparent;--dv-paneview-header-border-color: var(--vgai-border-1);--dv-paneview-active-outline-color: var(--vgai-accent);--dv-tabs-and-actions-container-height: var(--vgai-panel-header-height);--dv-tabs-and-actions-container-font-size: var(--vgai-font-md);--dv-tab-font-size: var(--vgai-font-md);--dv-icon-hover-background-color: var(--vgai-bg-3);--dv-drag-over-background-color: var(--vgai-accent-muted);--dv-drag-over-border-color: var(--vgai-accent);--dv-sash-color: transparent;--dv-active-sash-color: transparent;--dv-active-sash-transition-delay: 0s;--dv-active-sash-transition-duration: .1s;--dv-floating-border: var(--vgai-stroke-resting) solid var(--vgai-border-2);--dv-floating-box-shadow: var(--vgai-shadow-lg);--dv-floating-titlebar-height: 20px;--dv-border-radius: 0;--dv-tab-border-radius: 0;--dv-tab-margin: 0;--dv-spacing-padding: 0;--dv-scrollbar-background-color: color-mix(in srgb, var(--vgai-content-primary) 28%, transparent);font-family:var(--vgai-font-sans)}.vgai-workspace-dock{position:relative;flex:1;min-width:0;min-height:0;pointer-events:auto;overflow:hidden;background:var(--vgai-bg-1)}.vgai-workspace-dock>.dockview-theme-vgai{width:100%;height:100%}.vgai-dock-panel,.vgai-dock-document,.vgai-dock-document-content{min-width:0;min-height:0;width:100%;height:100%}.vgai-dock-panel,.vgai-dock-document,.vgai-dock-document-content{display:flex;flex-direction:column;overflow:hidden;background:var(--vgai-bg-1);pointer-events:auto}.vgai-dock-document-toolbar{flex:0 0 auto;min-height:var(--vgai-local-toolbar-height);border-bottom:var(--vgai-stroke-resting) solid var(--vgai-border-1);background:var(--vgai-bg-1);pointer-events:auto}.vgai-dock-empty{padding:var(--vgai-space-6);color:var(--vgai-text-3);background:var(--vgai-bg-1)}.vgai-dock-tab{display:flex;align-items:center;height:100%;min-width:0}.vgai-dock-tab>.dv-default-tab{min-width:0}.dockview-theme-vgai .dv-tab:has(.vgai-dock-tab[data-document-family=world])+.dv-tab:has(.vgai-dock-tab[data-document-family=resource]) .vgai-dock-tab{position:relative;margin-left:var(--vgai-space-4)}.dockview-theme-vgai .dv-tab:has(.vgai-dock-tab[data-document-family=world])+.dv-tab:has(.vgai-dock-tab[data-document-family=resource]) .vgai-dock-tab:before{position:absolute;top:50%;left:calc(-1 * var(--vgai-space-3));width:var(--vgai-stroke-resting);height:16px;background:var(--vgai-border-2);content:"";transform:translateY(-50%);pointer-events:none}.dockview-theme-vgai .dv-tab{padding:0 10px;border-radius:0;font-weight:400;transition:background-color 80ms ease,color 80ms ease}.dockview-theme-vgai .dv-tabs-and-actions-container{border-bottom:var(--vgai-stroke-resting) solid var(--vgai-border-1)}.dockview-theme-vgai .dv-tab.dv-inactive-tab:hover{color:var(--vgai-text-1);background:var(--vgai-bg-3)}.dockview-theme-vgai .dv-tabs-and-actions-container:not(.dv-single-tab) .dv-tabs-container{gap:2px;padding:0 3px}.dockview-theme-vgai .dv-tabs-container.dv-horizontal .dv-tab:not(:first-child):before{display:none}.dockview-theme-vgai .dv-tabs-and-actions-container.dv-single-tab.dv-full-width-single-tab .dv-tabs-container .dv-tab{margin:0;padding:0 12px;border-radius:0;font-weight:600;letter-spacing:.01em}.vgai-dock-tab-dirty{width:6px;height:6px;margin-right:6px;flex:0 0 auto;border-radius:50%;background:var(--vgai-warn)}.vgai-dock-tab-unsaved{gap:4px;padding:0 5px 0 8px;color:var(--vgai-text-1);background:var(--vgai-warn-muted)}.vgai-dock-tab-unsaved-label{margin-right:2px;color:var(--vgai-warn);font-weight:600}.vgai-dock-tab-unsaved button{height:20px;padding:0 5px;border:var(--vgai-stroke-resting) solid var(--vgai-border-2);border-radius:3px;color:var(--vgai-text-1);background:var(--vgai-bg-2);font:inherit;cursor:pointer}.vgai-dock-tab-unsaved button:hover:not(:disabled),.vgai-dock-tab-unsaved button:focus-visible{border-color:var(--vgai-accent);color:var(--vgai-content-primary)}.vgai-dock-tab-unsaved button:disabled{opacity:.6;cursor:default}.vgai-dock-tab-badge{min-width:14px;height:14px;margin-right:5px;padding:0 3px;border-radius:7px;font-size:9px;line-height:14px;text-align:center;color:var(--vgai-bg-0);background:var(--vgai-text-2)}.vgai-dock-tab-badge-warn{background:var(--vgai-warn)}.vgai-dock-tab-badge-error{background:var(--vgai-danger)}.dockview-theme-vgai .dv-tabs-container .dv-tab.dv-active-tab{box-shadow:none;font-weight:500}.dockview-theme-vgai .dv-tabs-and-actions-container:not(.dv-single-tab) .dv-tabs-container .dv-tab.dv-active-tab:before{position:absolute;right:10px;bottom:0;left:10px;display:block;width:auto;height:var(--vgai-stroke-active);border-radius:2px 2px 0 0;background:var(--vgai-accent);content:""}.dockview-theme-vgai .dv-split-view-container.dv-horizontal>.dv-sash-container>.dv-sash{background:linear-gradient(to right,transparent 1.5px,var(--vgai-border-1) 1.5px 2.5px,transparent 2.5px)}.dockview-theme-vgai .dv-split-view-container.dv-vertical>.dv-sash-container>.dv-sash{background:linear-gradient(to bottom,transparent 1.5px,var(--vgai-border-1) 1.5px 2.5px,transparent 2.5px)}.dockview-theme-vgai .dv-split-view-container.dv-horizontal>.dv-sash-container>.dv-sash:hover,.dockview-theme-vgai .dv-split-view-container.dv-horizontal>.dv-sash-container>.dv-sash.dv-active{background:linear-gradient(to right,transparent 1px,var(--vgai-accent) 1px 3px,transparent 3px)}.dockview-theme-vgai .dv-split-view-container.dv-vertical>.dv-sash-container>.dv-sash:hover,.dockview-theme-vgai .dv-split-view-container.dv-vertical>.dv-sash-container>.dv-sash.dv-active{background:linear-gradient(to bottom,transparent 1px,var(--vgai-accent) 1px 3px,transparent 3px)}
@@ -1 +1 @@
1
- import{k as f,n as b,o as S,p as A,w as D,I,q as h,r as m,t as y,u as R,v as w,W as x,x as O,y as W,z as k,A as C,B as g,C as $,D as G,E as M}from"./index-CQEfi217.js";class j extends g.Component{constructor(){super(...arguments),this.state={crashed:!1}}static getDerivedStateFromError(){return{crashed:!0}}componentDidCatch(t){this.props.onCaught(t)}render(){return this.state.crashed?null:this.props.children}}function v(e,t,a){e.style.position="absolute",e.style.top="0",e.style.left="0",e.style.width="100%",e.style.height="100%",e.style.zIndex=String(t.zOrder??0),e.style.pointerEvents=a}async function z(e,t,a,o){const r=await W(e,a),n=document.createElement("div");v(n,e,"none"),t.appendChild(n),f.log(`react sibling "${e.id}": no native Game beside an ingest world — useGameState unavailable`,"ingest");const s=k.createRoot(n);let d=null;if(C.flushSync(()=>{s.render(g.createElement(j,{onCaught:i=>{d=i},children:g.createElement(r)}))}),d!==null)throw s.unmount(),n.remove(),d instanceof Error?d:new Error(String(d));let u;return o&&(u=$(n).nodes.size>0?new G(n,o,{}):new M(n,o,{overlay:await y(e.id),persist:p=>m(e.id,p),destination:h(e.id)})),{worldId:e.id,...u?{authoring:u}:{},dispose(){s.unmount(),n.remove()}}}async function P(e,t,a,o,r){const n=document.createElement("div");v(n,t,"auto"),a.appendChild(n);try{const s=a.clientWidth||800,d=a.clientHeight||600,{session:u}=await A(e,t,o,n,s,d),i=u.game.roots[0],p=i.mounted.authoring;let c;if(r)if(p)c=D(p,r);else if(i.kind==="threejs")c=new I(r,i.threeRoot(),{overlay:await y(i.id),persist:l=>m(i.id,l),destination:h(i.id)});else if(i.kind==="pixijs"){const l=R(i.physics2d??w());c=new x(i.pixiRoot(),l,r,{overlay:await y(i.id),persist:E=>m(i.id,E),destination:h(i.id)})}else c=O(r,`${t.id} (no authoring surface)`);return{worldId:t.id,...c?{authoring:c}:{},setPaused(l){l?u.pause():u.resume()},dispose(){u.stop(),n.remove()}}}catch(s){throw n.remove(),s}}function T(e){throw new Error(`sibling world "${e.id}" (kind: ${e.surface}, adapter identity: "${e.adapter.identity}") has no known composite-sibling mount path — every currently-resolvable identity (default-three/default-pixi/default-react/module) is routed above; this is reached only for a genuinely unroutable shape (docs/WAVE5-MULTIWORLD-INGEST-DESIGN.md D-V7, updated by docs/WAVE6-DOCTOR-DESIGN.md D-B3).`)}async function B(e,t,a,o,r){if(t.adapter.type==="module"||t.adapter.identity==="threejs"||t.adapter.identity==="pixijs")return P(e,t,a,o,r);if(t.adapter.identity==="react")return z(t,a,o,r);T(t)}async function L(e,t,a,o,r){const n=[];for(const s of e.roots)if(s.id!==t)try{n.push(await B(e,s,a,o,r))}catch(d){f.error(`Composite sibling "${s.id}" failed to mount: ${d}`,"ingest"),b({worldId:s.id,kind:s.surface,identity:s.adapter.identity,message:S(d)})}return n}export{L as mountIngestSiblings};
1
+ import{k as f,n as b,o as S,p as A,w as D,I,q as h,r as m,t as y,u as R,v as w,W as x,x as O,y as W,z as k,A as C,B as g,C as $,D as G,E as M}from"./index-DbQzGLxv.js";class j extends g.Component{constructor(){super(...arguments),this.state={crashed:!1}}static getDerivedStateFromError(){return{crashed:!0}}componentDidCatch(t){this.props.onCaught(t)}render(){return this.state.crashed?null:this.props.children}}function v(e,t,a){e.style.position="absolute",e.style.top="0",e.style.left="0",e.style.width="100%",e.style.height="100%",e.style.zIndex=String(t.zOrder??0),e.style.pointerEvents=a}async function z(e,t,a,o){const r=await W(e,a),n=document.createElement("div");v(n,e,"none"),t.appendChild(n),f.log(`react sibling "${e.id}": no native Game beside an ingest world — useGameState unavailable`,"ingest");const s=k.createRoot(n);let d=null;if(C.flushSync(()=>{s.render(g.createElement(j,{onCaught:i=>{d=i},children:g.createElement(r)}))}),d!==null)throw s.unmount(),n.remove(),d instanceof Error?d:new Error(String(d));let u;return o&&(u=$(n).nodes.size>0?new G(n,o,{}):new M(n,o,{overlay:await y(e.id),persist:p=>m(e.id,p),destination:h(e.id)})),{worldId:e.id,...u?{authoring:u}:{},dispose(){s.unmount(),n.remove()}}}async function P(e,t,a,o,r){const n=document.createElement("div");v(n,t,"auto"),a.appendChild(n);try{const s=a.clientWidth||800,d=a.clientHeight||600,{session:u}=await A(e,t,o,n,s,d),i=u.game.roots[0],p=i.mounted.authoring;let c;if(r)if(p)c=D(p,r);else if(i.kind==="threejs")c=new I(r,i.threeRoot(),{overlay:await y(i.id),persist:l=>m(i.id,l),destination:h(i.id)});else if(i.kind==="pixijs"){const l=R(i.physics2d??w());c=new x(i.pixiRoot(),l,r,{overlay:await y(i.id),persist:E=>m(i.id,E),destination:h(i.id)})}else c=O(r,`${t.id} (no authoring surface)`);return{worldId:t.id,...c?{authoring:c}:{},setPaused(l){l?u.pause():u.resume()},dispose(){u.stop(),n.remove()}}}catch(s){throw n.remove(),s}}function T(e){throw new Error(`sibling world "${e.id}" (kind: ${e.surface}, adapter identity: "${e.adapter.identity}") has no known composite-sibling mount path — every currently-resolvable identity (default-three/default-pixi/default-react/module) is routed above; this is reached only for a genuinely unroutable shape (docs/WAVE5-MULTIWORLD-INGEST-DESIGN.md D-V7, updated by docs/WAVE6-DOCTOR-DESIGN.md D-B3).`)}async function B(e,t,a,o,r){if(t.adapter.type==="module"||t.adapter.identity==="threejs"||t.adapter.identity==="pixijs")return P(e,t,a,o,r);if(t.adapter.identity==="react")return z(t,a,o,r);T(t)}async function L(e,t,a,o,r){const n=[];for(const s of e.roots)if(s.id!==t)try{n.push(await B(e,s,a,o,r))}catch(d){f.error(`Composite sibling "${s.id}" failed to mount: ${d}`,"ingest"),b({worldId:s.id,kind:s.surface,identity:s.adapter.identity,message:S(d)})}return n}export{L as mountIngestSiblings};
@@ -1 +1 @@
1
- import{a as c,m as l,l as f,b as m,R as p,f as h,V as g}from"./index-CQEfi217.js";import{createGameRuntime as y}from"./create-runtime-DbTlBlKG.js";import"./game-loop-DMIgSMV-.js";function v(e){if(e.determinism?.seededRandom!==!0)return;const t=e.url?E(e.url):void 0;return e.explicitSeed??t??e.determinism.defaultSeed}function E(e){const t=new URLSearchParams(e.search).get(p);if(t===null||t==="")return;const r=Number(t);return Number.isFinite(r)?r:void 0}function b(){return typeof window<"u"}function R(e){if(typeof e!="object"||e===null)return!1;const t=e.roots;return!Array.isArray(t)||t.length===0?!1:t.every(r=>{if(typeof r!="object"||r===null)return!1;const n=r.adapter;if(typeof n!="object"||n===null)return!1;const i=n.type;return i==="builtin"||i==="module"||i==="ingest"})}function M(e){return R(e)?e:f(e)}function $(e,t){if(t?.adapter)return t.adapter;if(e.adapter.type==="module")throw new Error(`mountManifestWorlds: world "${e.id}" (threejs) declares a { module } adapter ("${e.adapter.module}") — mountManifestWorlds never imports an arbitrary module path itself (no \`/@fs/\`, no dev server). Import the module yourself and supply the constructed adapter via entries["${e.id}"] = { kind: 'threejs', adapter }.`);if(e.adapter.type==="ingest")throw new Error(`mountManifestWorlds: world "${e.id}" (threejs) declares an { ingest } adapter — ingest roots require the editor's dev-server-backed mount machinery (an EditorStore plus iframe/DOM capture, see adapter-resolver.ts's resolveIngestThreeAdapter) and are not supported by mountManifestWorlds (docs/WAVE3-ADAPTER-PLUMBING-DESIGN.md D-Z7 — no porting aids, no hosted ingest routes).`);if(e.entry!==void 0){if(!t?.setup)throw new Error(`mountManifestWorlds: world "${e.id}" (threejs) declares \`entry\` "${e.entry}" — supply entries["${e.id}"] = { kind: 'threejs', setup } (the entry module's exported \`setup\` function) or { kind: 'threejs', adapter } for full control. Got ${t===void 0?"no entry at all":"an entry with neither `setup` nor `adapter`"}.`);return h(e.id,t.setup)}if(e.scene!==void 0)return new g({id:e.id,scenePath:e.scene,componentRegistry:t?.componentRegistry});throw new Error(`mountManifestWorlds: world "${e.id}" is default-three with neither \`scene\` nor \`entry\` — this should have been rejected by manifest validation.`)}function j(e,t){if(t?.adapter)return t.adapter;throw new Error(`mountManifestWorlds: world "${e.id}" (pixijs) has no entries["${e.id}"] — a pixijs world always needs a caller-supplied, already-constructed adapter (entries["${e.id}"] = { kind: 'pixijs', adapter }, e.g. \`new PixiSceneGameAdapter(...)\` built from your own already-imported '@engine/world2d') — mountManifestWorlds never value-imports pixi.js (mirrors create-runtime.ts's own pixi-free-core discipline).`)}function A(e,t){if(t?.adapter)return t.adapter;throw new Error(`mountManifestWorlds: world "${e.id}" (react) has no entries["${e.id}"] — a react world always needs a caller-supplied, already-constructed \`ReactRootAdapter\` (entries["${e.id}"] = { kind: 'react', adapter }, mounting via your own already-imported react-dom \`createRoot\` + your own \`<GameProvider>\`) — mountManifestWorlds never value-imports react/react-dom (mirrors create-runtime.ts's own react-free-core discipline; see docs/REACT-STATE-BRIDGE.md §2-3).`)}function S(e,t){if(t!==void 0&&t.kind!==e.surface)throw new Error(`mountManifestWorlds: entries["${e.id}"] declares kind "${t.kind}" but the manifest's root "${e.id}" uses surface "${e.surface}" — fix the entries key (or the manifest) so the two agree.`);const r={id:e.id,zOrder:e.zOrder,pausable:e.pausable,loop:e.loop};return e.surface==="threejs"?{...r,kind:"threejs",adapter:$(e,t)}:e.surface==="pixijs"?{...r,kind:"pixijs",adapter:j(e,t)}:e.surface==="react"?{...r,kind:"react",adapter:A(e,t)}:m(e.surface,"mountManifestWorlds")}async function D(e){const t=M(e.manifest);if(t.roots.length===0)throw new Error("mountManifestWorlds: manifest declares no roots — nothing to mount.");const r=e.entries??{},n=t.roots.map(s=>S(s,r[s.id])),i=e.seedUrl??(b()?window.location:void 0),d=v({determinism:t.determinism,explicitSeed:e.seed,url:i}),a=await y({container:e.container,roots:n,width:e.width??t.resolution?.width,height:e.height??t.resolution?.height,headless:e.headless,seed:d});t.determinism?.seededRandom;const o=c(a.game);if(o){t.server&&o.setRoomDeclared(!0);const s=l({registry:o,manifest:t,url:e.debugBridge?.url,window:e.debugBridge?.window});if(s){const u=a.stop;a.stop=()=>{s.uninstall(),u()}}}return a}export{D as mountManifestWorlds,v as resolveDeterminismSeed,M as resolveManifest};
1
+ import{a as c,m as l,l as f,b as m,R as p,f as h,V as g}from"./index-DbQzGLxv.js";import{createGameRuntime as y}from"./create-runtime-BF9OD-U8.js";import"./game-loop-t5W_oqxz.js";function v(e){if(e.determinism?.seededRandom!==!0)return;const t=e.url?E(e.url):void 0;return e.explicitSeed??t??e.determinism.defaultSeed}function E(e){const t=new URLSearchParams(e.search).get(p);if(t===null||t==="")return;const r=Number(t);return Number.isFinite(r)?r:void 0}function b(){return typeof window<"u"}function R(e){if(typeof e!="object"||e===null)return!1;const t=e.roots;return!Array.isArray(t)||t.length===0?!1:t.every(r=>{if(typeof r!="object"||r===null)return!1;const n=r.adapter;if(typeof n!="object"||n===null)return!1;const i=n.type;return i==="builtin"||i==="module"||i==="ingest"})}function M(e){return R(e)?e:f(e)}function $(e,t){if(t?.adapter)return t.adapter;if(e.adapter.type==="module")throw new Error(`mountManifestWorlds: world "${e.id}" (threejs) declares a { module } adapter ("${e.adapter.module}") — mountManifestWorlds never imports an arbitrary module path itself (no \`/@fs/\`, no dev server). Import the module yourself and supply the constructed adapter via entries["${e.id}"] = { kind: 'threejs', adapter }.`);if(e.adapter.type==="ingest")throw new Error(`mountManifestWorlds: world "${e.id}" (threejs) declares an { ingest } adapter — ingest roots require the editor's dev-server-backed mount machinery (an EditorStore plus iframe/DOM capture, see adapter-resolver.ts's resolveIngestThreeAdapter) and are not supported by mountManifestWorlds (docs/WAVE3-ADAPTER-PLUMBING-DESIGN.md D-Z7 — no porting aids, no hosted ingest routes).`);if(e.entry!==void 0){if(!t?.setup)throw new Error(`mountManifestWorlds: world "${e.id}" (threejs) declares \`entry\` "${e.entry}" — supply entries["${e.id}"] = { kind: 'threejs', setup } (the entry module's exported \`setup\` function) or { kind: 'threejs', adapter } for full control. Got ${t===void 0?"no entry at all":"an entry with neither `setup` nor `adapter`"}.`);return h(e.id,t.setup)}if(e.scene!==void 0)return new g({id:e.id,scenePath:e.scene,componentRegistry:t?.componentRegistry});throw new Error(`mountManifestWorlds: world "${e.id}" is default-three with neither \`scene\` nor \`entry\` — this should have been rejected by manifest validation.`)}function j(e,t){if(t?.adapter)return t.adapter;throw new Error(`mountManifestWorlds: world "${e.id}" (pixijs) has no entries["${e.id}"] — a pixijs world always needs a caller-supplied, already-constructed adapter (entries["${e.id}"] = { kind: 'pixijs', adapter }, e.g. \`new PixiSceneGameAdapter(...)\` built from your own already-imported '@engine/world2d') — mountManifestWorlds never value-imports pixi.js (mirrors create-runtime.ts's own pixi-free-core discipline).`)}function A(e,t){if(t?.adapter)return t.adapter;throw new Error(`mountManifestWorlds: world "${e.id}" (react) has no entries["${e.id}"] — a react world always needs a caller-supplied, already-constructed \`ReactRootAdapter\` (entries["${e.id}"] = { kind: 'react', adapter }, mounting via your own already-imported react-dom \`createRoot\` + your own \`<GameProvider>\`) — mountManifestWorlds never value-imports react/react-dom (mirrors create-runtime.ts's own react-free-core discipline; see docs/REACT-STATE-BRIDGE.md §2-3).`)}function S(e,t){if(t!==void 0&&t.kind!==e.surface)throw new Error(`mountManifestWorlds: entries["${e.id}"] declares kind "${t.kind}" but the manifest's root "${e.id}" uses surface "${e.surface}" — fix the entries key (or the manifest) so the two agree.`);const r={id:e.id,zOrder:e.zOrder,pausable:e.pausable,loop:e.loop};return e.surface==="threejs"?{...r,kind:"threejs",adapter:$(e,t)}:e.surface==="pixijs"?{...r,kind:"pixijs",adapter:j(e,t)}:e.surface==="react"?{...r,kind:"react",adapter:A(e,t)}:m(e.surface,"mountManifestWorlds")}async function D(e){const t=M(e.manifest);if(t.roots.length===0)throw new Error("mountManifestWorlds: manifest declares no roots — nothing to mount.");const r=e.entries??{},n=t.roots.map(s=>S(s,r[s.id])),i=e.seedUrl??(b()?window.location:void 0),d=v({determinism:t.determinism,explicitSeed:e.seed,url:i}),a=await y({container:e.container,roots:n,width:e.width??t.resolution?.width,height:e.height??t.resolution?.height,headless:e.headless,seed:d});t.determinism?.seededRandom;const o=c(a.game);if(o){t.server&&o.setRoomDeclared(!0);const s=l({registry:o,manifest:t,url:e.debugBridge?.url,window:e.debugBridge?.window});if(s){const u=a.stop;a.stop=()=>{s.uninstall(),u()}}}return a}export{D as mountManifestWorlds,v as resolveDeterminismSeed,M as resolveManifest};
@@ -1 +1 @@
1
- import{B as s,z as l}from"./index-CQEfi217.js";var n=new Map;function a(){return globalThis.IS_REACT_ACT_ENVIRONMENT}var m=({callback:e,children:r})=>{let t=s.useRef();return s.useLayoutEffect(()=>{t.current!==e&&(t.current=e,e())},[e]),r};typeof Promise.withResolvers>"u"&&(Promise.withResolvers=()=>{let e=null,r=null;return{promise:new Promise((t,o)=>{e=t,r=o}),resolve:e,reject:r}});var E=async(e,r,t)=>{let o=await c(r,t);if(a()){o.render(e);return}let{promise:u,resolve:i}=Promise.withResolvers();return o.render(s.createElement(m,{callback:i},e)),u},p=(e,r)=>{let t=n.get(e);t&&(t.unmount(),n.delete(e))},c=async(e,r)=>{let t=n.get(e);return t||(t=l.createRoot(e,r),n.set(e,t)),t};export{E as renderElement,p as unmountElement};
1
+ import{B as s,z as l}from"./index-DbQzGLxv.js";var n=new Map;function a(){return globalThis.IS_REACT_ACT_ENVIRONMENT}var m=({callback:e,children:r})=>{let t=s.useRef();return s.useLayoutEffect(()=>{t.current!==e&&(t.current=e,e())},[e]),r};typeof Promise.withResolvers>"u"&&(Promise.withResolvers=()=>{let e=null,r=null;return{promise:new Promise((t,o)=>{e=t,r=o}),resolve:e,reject:r}});var E=async(e,r,t)=>{let o=await c(r,t);if(a()){o.render(e);return}let{promise:u,resolve:i}=Promise.withResolvers();return o.render(s.createElement(m,{callback:i},e)),u},p=(e,r)=>{let t=n.get(e);t&&(t.unmount(),n.delete(e))},c=async(e,r)=>{let t=n.get(e);return t||(t=l.createRoot(e,r),n.set(e,t)),t};export{E as renderElement,p as unmountElement};
@@ -0,0 +1 @@
1
+ import{ag as a,bV as s,bW as e,bX as t}from"./index-DbQzGLxv.js";a.add(s,e);a.add(t);
@@ -1 +1 @@
1
- import{am as O,an as ie,ao as le,s as de,o as W,k as R,n as ce,ap as J,D as G,aq as ue,ar as pe,as as he,at as fe,y as me,au as we,av as ge,aw as ye,ax as be,ay as ve,az as Ie,aA as ee,aB as te,aC as xe,aD as Se,aE as Ee,c as Ce,B as I,aF as ke,aG as j,aH as h,aI as Pe,aJ as Me,aK as V,aL as F,aM as $e,aN as Re,aO as ze,aP as We,aQ as K,aR as De,aS as q,aT as X,aU as Ae,aV as je,aW as Oe,aX as Te,aY as z,aZ as Be}from"./index-CQEfi217.js";import{c as Ve,a as Fe}from"./game-loop-DMIgSMV-.js";const _e={width:null,height:null};let T=_e;const H=new Set;function oe(){return T}function L(e,o){const n=e===null?null:Math.max(1,Math.round(e)),r=o===null?null:Math.max(1,Math.round(o));if(!(T.width===n&&T.height===r)){T={width:n,height:r};for(const a of H)a()}}function Ge(){L(null,null)}function re(e){return H.add(e),()=>H.delete(e)}const U=new Map;function He(e,o){return`${e}\0${o}`}function Le(e){const o=e.title?.split("/").filter(Boolean).at(-1)?.trim();if(o)return o;const n=e.modulePath.split("/").pop()??e.modulePath;return n.replace(/\.stories\.[^.]+$/i,"").replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[-_]+/g," ").trim()||n}const Ne=1;function ne(e){const o=[];for(const{worldId:n,adapter:r}of e.childAdapters()){if(!(r instanceof O))continue;const a=r.inspector.get(n,"kind");a!=="react"&&a!=="pixijs"||r.inspector.get(n,"reason")!==void 0||o.push({worldId:n,kind:a,path:r.inspector.get(n,"path"),zOrder:Number(r.inspector.get(n,"zOrder")??0),pausable:r.inspector.get(n,"pausable")!==!1})}return o}function Ze(e){return ne(e)}function Ke(){const e=Ve({fixedTimestep:.016666666666666666,maxSubSteps:8,update:()=>{}});return Ce({loop:e,assets:Fe()})}class qe extends I.Component{constructor(){super(...arguments),this.state={crashed:!1}}static getDerivedStateFromError(){return{crashed:!0}}componentDidCatch(o){this.props.onCaught(o)}render(){return this.state.crashed?null:this.props.children}}function Xe(e,o){return{id:e,surface:"react",description:void 0,adapter:{type:"builtin",identity:"react",surface:"react"},scene:void 0,entry:o,zOrder:0,pausable:!0,loop:"gated",capabilities:{local:"first-party",hosted:"first-party"}}}function se(e,o){e.style.display=xe(o)?"none":"block",e.style.pointerEvents=Se(o)?"auto":"none"}function Ue(e,o,n){const r=document.createElement("div");return r.dataset.worldId=o,r.style.position="absolute",r.style.top="0",r.style.left="0",r.style.width="100%",r.style.height="100%",r.style.zIndex=String(n),r.style.contain="layout paint",se(r,o),N(r),e.appendChild(r),r}function N(e){e.style.transform=ee(te())??"",e.style.transformOrigin="0 0";const o=oe();e.style.width=o.width===null?"100%":`${o.width}px`,e.style.height=o.height===null?"100%":`${o.height}px`}async function Ye(e,o,n,r){if(!e.path)throw new Error(`design-time react layer "${e.worldId}": no \`entry\` declared — nothing to mount.`);await pe({rootPath:n});const a=he(e.worldId),s=fe(e.worldId);if(s){const t=He(n,e.worldId),d=U.get(t),u=a.find(c=>c.id===d)??s;let P=!1,y=null;const S=async(c,b=c.args)=>{const E=await Ee(o,c.modulePath,c.name,c.Component,b);if(E){if(P){E.unmount();return}y=E,r.notifyIngestEdit()}};if(await S(u),!y)throw new Error(`design-time react root "${e.worldId}": default CSF story "${u.name}" was superseded before it mounted.`);const A=new Map(a.map(c=>[c.id,c])),B=new Map;for(const c of a){const b=B.get(c.modulePath);b?b.push(c):B.set(c.modulePath,[c])}const Z=new G(o,r,{worldId:e.worldId,portableStories:a.map(c=>({id:c.id,label:c.label,args:c.args})),portableDocuments:[...B.entries()].map(([c,b])=>({id:`portable-document:${c}`,label:Le(b[0]),path:c,storyIds:b.map(E=>E.id)})),activePortableStoryId:u.id,onPortableStoryApplied:c=>{const b=(c?A.get(c):null)??s;U.set(t,b.id),S(b).catch(E=>{R.error(`[design-time-layers] React root "${e.worldId}" failed applying portable story "${b.name}": ${W(E)}`,"authoring")})},onPortableStoryArgsChanged:(c,b)=>{const E=A.get(c);E&&S(E,b).catch(ae=>{R.error(`[design-time-layers] React root "${e.worldId}" failed updating portable story "${E.name}" args: ${W(ae)}`,"authoring")})}});return{adapter:Z,dispose:()=>{P=!0,Z.disposeReactRootAdapter(),y?.unmount()}}}R.warn(`[design-time-layers] React root "${e.worldId}" has no portable CSF preview. Add a *.stories.tsx module with parameters.vgai.root set to this root id. Falling back to the deprecated inert-Game preview for compatibility.`,"authoring");const f=Xe(e.worldId,e.path),v=await me(f,n),C=await we(n,e.worldId),{createElement:l,createRoot:p,flushSync:i}=await ge(),m=Ke(),g=[ye(e.worldId)??{}],w={},x=p(o),M={entryStory:null,isolation:null},$=t=>{const{entryStory:d,isolation:u}=M,P=u?u.story:d,y=u?w?.[u.componentKey]:void 0,S=u?y?l(y,{...P?.props??{}}):null:l(v,{...P?.props??{}});x.render(l(qe,{key:u?`isolate:${u.componentKey}:${u.story?.id??""}`:P?`story:${P.id}`:"__none__",onCaught:t,children:l(C,{game:m},S)}))};let k=null;if(i(()=>{$(t=>{k=t})}),k!==null)throw x.unmount(),k instanceof Error?k:new Error(String(k));const D=new G(o,r,{storySources:g,worldId:e.worldId,onStoryApplied:t=>{M.entryStory=t,$(d=>{R.error(`[design-time-layers] world "${e.worldId}" crashed applying story "${t?.id??"(cleared)"}": ${W(d)}`,"authoring")})},onIsolate:t=>{M.isolation=t,$(d=>{R.error(`[design-time-layers] world "${e.worldId}" crashed isolating "${t?.componentKey??"(cleared)"}": ${W(d)}`,"authoring")})}});return{adapter:D,dispose:()=>{D.disposeReactRootAdapter(),x.unmount()}}}function Qe(e){const o=e.getBoundingClientRect();return{width:Math.max(1,Math.round(o.width)||e.clientWidth||300),height:Math.max(1,Math.round(o.height)||e.clientHeight||200)}}async function Je(e,o,n,r){if(!e.path)throw new Error(`design-time pixi layer "${e.worldId}": no \`scene\` declared — nothing to mount (B1 display-only mount supports scene-based pixi roots only, not \`entry\`).`);const a=await be(e.path),s=await ve(r),f=document.createElement("canvas");f.style.width="100%",f.style.height="100%",f.style.display="block",o.appendChild(f);const{width:v,height:C}=Qe(n),p=await new Ie({id:e.worldId,sceneData:a,registry:s}).mount({canvas:f,width:v,height:C,transparent:!0});return p.update?.(0),{dispose:()=>p.dispose(),pick:(m,g)=>{const w=f.getBoundingClientRect();if(w.width===0||w.height===0)return null;const x=p.ctx.app.renderer.screen,M=(m-w.left)/w.width*x.width,$=(g-w.top)/w.height*x.height;for(const k of p.stage.children)if(k.getBounds().containsPoint(M,$))return e.worldId;return null}}}let _=!1;function Y(){_||(_=!0,queueMicrotask(()=>{_=!1,window.dispatchEvent(new CustomEvent(ue))}))}function et(e,o,n,r){if(ie(),Ge(),n.playState!=="stopped"){let t=!1,d=!1;const u=n.subscribe(()=>{t||d||n.playState!=="stopped"||(d=!0,t||Y())});return()=>{t=!0,u()}}const a=le()?.rootPath,s=r?[...r]:ne(o);if(s.length===0||!a)return()=>{};const v=de(s.map(t=>({id:t.worldId,zOrder:t.zOrder}))).map(t=>s.find(d=>d.worldId===t.id)),C=new Map(v.map(t=>[t.worldId,t])),l=new Map,p=[],i=new Set;let m=!1,g=!1,w=!1;function x(){for(const t of p.splice(0))try{t()}catch(d){R.error(`[design-time-layers] dispose failed: ${d}`,"authoring")}for(const t of l.values())t.remove();l.clear()}function M(){x();for(const t of i){const d=C.get(t);if(!d)continue;const u={id:d.worldId,kind:d.kind,entryOrScenePath:d.path,zOrder:d.zOrder,pausable:d.pausable};o.replaceChild(t,new O(n,u,"Design-time layer suspended by play mode — Stop restores it."))}i.clear(),n.notifyIngestEdit()}v.forEach((t,d)=>{const u=Ue(e,t.worldId,Ne+d);l.set(t.worldId,u),(t.kind==="react"?Ye(t,u,a,n):Je(t,u,e,a)).then(y=>{if(m||g){y.dispose();return}if(y.adapter)o.replaceChild(t.worldId,y.adapter),i.add(t.worldId);else if(y.pick){const S={id:t.worldId,kind:t.kind,entryOrScenePath:t.path,zOrder:t.zOrder,pausable:t.pausable};o.replaceChild(t.worldId,new O(n,S,void 0,y.pick)),i.add(t.worldId)}p.push(y.dispose),n.notifyIngestEdit()}).catch(y=>{if(u.remove(),l.delete(t.worldId),m||g)return;const S=W(y);R.error(`[design-time-layers] world "${t.worldId}" (${t.kind}) failed to mount: ${S}`,"authoring");const A={id:t.worldId,kind:t.kind,entryOrScenePath:t.path,zOrder:t.zOrder,pausable:t.pausable};o.replaceChild(t.worldId,new O(n,A,S)),ce({worldId:t.worldId,kind:t.kind,identity:t.kind==="react"?"default-react":"default-pixi",message:S}),n.notifyIngestEdit()})});const $=J(()=>{for(const t of l.values())N(t)}),k=re(()=>{for(const t of l.values())N(t)}),D=n.subscribe(()=>{if(!g&&n.playState!=="stopped"){g=!0,M();return}if(g&&!w&&n.playState==="stopped"&&!m){w=!0,m||Y();return}if(!g){for(const[t,d]of l)se(d,t);for(const{worldId:t,adapter:d}of o.childAdapters()){if(!i.has(t)||!(d instanceof G))continue;const u=d.isolatedNodeId;u&&!n.selectedEntityIds.has(u)&&d.stories.isolate?.(null)}}});return()=>{m=!0,D(),$(),k(),x()}}const Q={fill:null,desktop:{width:1440,height:900},tablet:{width:768,height:1024},mobile:{width:390,height:844}};function tt({containerRef:e,context:o}){const n=ke();I.useSyncExternalStore(n.subscribe,n.getSnapshot);const r=I.useSyncExternalStore(J,te),a=I.useSyncExternalStore(re,oe),s=I.useCallback(l=>{const p=e.current;if(!p)return;const i=Math.min(4,Math.max(.1,l)),m=p.clientWidth/2,g=p.clientHeight/2,w=(m-r.x)/r.zoom,x=(g-r.y)/r.zoom;j(m-w*i,g-x*i,i)},[e,r]),f=I.useCallback(()=>{const l=e.current,p=[...n.selectedEntityIds].at(-1);if(!l||!p)return;const i=o?.adapter.rects?.rect(p);if(!i||i.width<=0||i.height<=0)return;const m=Math.max(1,l.clientWidth-96),g=Math.max(1,l.clientHeight-96),w=Math.min(4,Math.max(.1,Math.min(m/i.width,g/i.height)));j(l.clientWidth/2-(i.x+i.width/2)*w,l.clientHeight/2-(i.y+i.height/2)*w,w)},[e,o,n]),v=I.useCallback(l=>{const p=e.current,i=Q[l];if(!p||i===null){L(null,null),j(0,0,1);return}L(i.width,i.height);const m=Math.min(1,Math.max(.1,Math.min((p.clientWidth-96)/i.width,(p.clientHeight-96)/i.height)));j((p.clientWidth-i.width*m)/2,(p.clientHeight-i.height*m)/2,m)},[e]);if(o?.kind!=="react"||!o.adapter.rects)return null;const C=Object.entries(Q).find(([,l])=>l===null?a.width===null:l.width===a.width&&l.height===a.height)?.[0]??"fill";return h.jsxs(h.Fragment,{children:[a.width!==null&&a.height!==null&&h.jsx("div",{"data-testid":"react-canvas-device-frame",style:{position:"absolute",left:0,top:0,zIndex:0,width:a.width,height:a.height,transform:ee(r),transformOrigin:"0 0",pointerEvents:"none",background:"#fff",boxShadow:"0 0 0 1px #ffffff40, 0 8px 30px #0009"}}),h.jsxs(Pe,{label:"React canvas view","data-testid":"react-canvas-zoom-controls",className:"vgai-react-canvas-controls",children:[h.jsxs(Me,{"aria-label":"Responsive viewport",title:"Responsive viewport",value:C,onChange:l=>v(l.target.value),className:"vgai-react-viewport-select",children:[h.jsx("option",{value:"fill",children:"Fill"}),h.jsx("option",{value:"desktop",children:"Desktop · 1440×900"}),h.jsx("option",{value:"tablet",children:"Tablet · 768×1024"}),h.jsx("option",{value:"mobile",children:"Mobile · 390×844"})]}),h.jsx(V,{"aria-label":"Zoom out",title:"Zoom out",size:"comfortable",onClick:()=>s(r.zoom/1.2),children:h.jsx(F,{icon:$e,size:"md"})}),h.jsxs(Re,{variant:"ghost","aria-label":"Reset zoom to 100%",title:"Reset zoom to 100%",size:"comfortable",onClick:()=>s(1),children:[Math.round(r.zoom*100),"%"]}),h.jsx(V,{"aria-label":"Zoom in",title:"Zoom in",size:"comfortable",onClick:()=>s(r.zoom*1.2),children:h.jsx(F,{icon:ze,size:"md"})}),h.jsx(V,{"aria-label":"Zoom to selection",title:"Zoom to selection",size:"comfortable",onClick:f,children:h.jsx(F,{icon:We,size:"md"})})]})]})}function ot(e){return`workspace:world:${e}`}function rt({active:e,composite:o,descriptor:n,store:r}){const a=I.useRef(null),s=I.useRef(null);I.useSyncExternalStore(r.subscribe,r.getSnapshot),I.useEffect(()=>{!e||s.current||!a.current||(s.current=et(a.current,o,r,[n]))},[e,o,n,r]),I.useEffect(()=>()=>{s.current?.(),s.current=null},[]);const f=Oe(Te(r),r.selectedEntityIds),v=f?.worldId===n.worldId?f:null;return h.jsxs("div",{ref:a,"data-testid":`world-document:${n.worldId}`,style:{position:"absolute",inset:0,overflow:"hidden",pointerEvents:"auto",backgroundColor:z.surface.raised,backgroundImage:`linear-gradient(45deg, ${z.surface.chrome} 25%, transparent 25%, transparent 75%, ${z.surface.chrome} 75%), linear-gradient(45deg, ${z.surface.chrome} 25%, transparent 25%, transparent 75%, ${z.surface.chrome} 75%)`,backgroundPosition:"0 0, 8px 8px",backgroundSize:"16px 16px"},children:[h.jsx(Be,{}),h.jsx(tt,{containerRef:a,context:v})]})}function at(e,o){const n=je(),r=[],a=[];for(const s of o.childAdapters())s.role==="world"&&s.kind==="threejs"&&a.push(K(s.worldId,X));for(const s of Ze(o)){const f=ot(s.worldId);a.push(K(s.worldId,f)),r.push(f);const v=C=>h.jsx(rt,{...C,composite:o,descriptor:s,store:e});De({id:f,title:s.worldId,kind:"world",provenance:{rootId:s.worldId,...s.path?{sourcePath:s.path}:{}},Content:v,closeable:!1,onActivate:()=>e.setActiveViewportTab("scene")})}return n?q(n):q(X),()=>{for(const s of a)s();for(const s of r)Ae(s,{discardDirty:!0})}}export{at as installWorldDocuments,ot as worldDocumentId};
1
+ import{am as O,an as ie,ao as le,s as de,o as W,k as R,n as ce,ap as J,D as G,aq as ue,ar as pe,as as he,at as fe,y as me,au as we,av as ge,aw as ye,ax as be,ay as ve,az as Ie,aA as ee,aB as te,aC as xe,aD as Se,aE as Ee,c as Ce,B as I,aF as ke,aG as j,aH as h,aI as Pe,aJ as Me,aK as V,aL as F,aM as $e,aN as Re,aO as ze,aP as We,aQ as K,aR as De,aS as q,aT as X,aU as Ae,aV as je,aW as Oe,aX as Te,aY as z,aZ as Be}from"./index-DbQzGLxv.js";import{c as Ve,a as Fe}from"./game-loop-t5W_oqxz.js";const _e={width:null,height:null};let T=_e;const H=new Set;function oe(){return T}function L(e,o){const n=e===null?null:Math.max(1,Math.round(e)),r=o===null?null:Math.max(1,Math.round(o));if(!(T.width===n&&T.height===r)){T={width:n,height:r};for(const a of H)a()}}function Ge(){L(null,null)}function re(e){return H.add(e),()=>H.delete(e)}const U=new Map;function He(e,o){return`${e}\0${o}`}function Le(e){const o=e.title?.split("/").filter(Boolean).at(-1)?.trim();if(o)return o;const n=e.modulePath.split("/").pop()??e.modulePath;return n.replace(/\.stories\.[^.]+$/i,"").replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[-_]+/g," ").trim()||n}const Ne=1;function ne(e){const o=[];for(const{worldId:n,adapter:r}of e.childAdapters()){if(!(r instanceof O))continue;const a=r.inspector.get(n,"kind");a!=="react"&&a!=="pixijs"||r.inspector.get(n,"reason")!==void 0||o.push({worldId:n,kind:a,path:r.inspector.get(n,"path"),zOrder:Number(r.inspector.get(n,"zOrder")??0),pausable:r.inspector.get(n,"pausable")!==!1})}return o}function Ze(e){return ne(e)}function Ke(){const e=Ve({fixedTimestep:.016666666666666666,maxSubSteps:8,update:()=>{}});return Ce({loop:e,assets:Fe()})}class qe extends I.Component{constructor(){super(...arguments),this.state={crashed:!1}}static getDerivedStateFromError(){return{crashed:!0}}componentDidCatch(o){this.props.onCaught(o)}render(){return this.state.crashed?null:this.props.children}}function Xe(e,o){return{id:e,surface:"react",description:void 0,adapter:{type:"builtin",identity:"react",surface:"react"},scene:void 0,entry:o,zOrder:0,pausable:!0,loop:"gated",capabilities:{local:"first-party",hosted:"first-party"}}}function se(e,o){e.style.display=xe(o)?"none":"block",e.style.pointerEvents=Se(o)?"auto":"none"}function Ue(e,o,n){const r=document.createElement("div");return r.dataset.worldId=o,r.style.position="absolute",r.style.top="0",r.style.left="0",r.style.width="100%",r.style.height="100%",r.style.zIndex=String(n),r.style.contain="layout paint",se(r,o),N(r),e.appendChild(r),r}function N(e){e.style.transform=ee(te())??"",e.style.transformOrigin="0 0";const o=oe();e.style.width=o.width===null?"100%":`${o.width}px`,e.style.height=o.height===null?"100%":`${o.height}px`}async function Ye(e,o,n,r){if(!e.path)throw new Error(`design-time react layer "${e.worldId}": no \`entry\` declared — nothing to mount.`);await pe({rootPath:n});const a=he(e.worldId),s=fe(e.worldId);if(s){const t=He(n,e.worldId),d=U.get(t),u=a.find(c=>c.id===d)??s;let P=!1,y=null;const S=async(c,b=c.args)=>{const E=await Ee(o,c.modulePath,c.name,c.Component,b);if(E){if(P){E.unmount();return}y=E,r.notifyIngestEdit()}};if(await S(u),!y)throw new Error(`design-time react root "${e.worldId}": default CSF story "${u.name}" was superseded before it mounted.`);const A=new Map(a.map(c=>[c.id,c])),B=new Map;for(const c of a){const b=B.get(c.modulePath);b?b.push(c):B.set(c.modulePath,[c])}const Z=new G(o,r,{worldId:e.worldId,portableStories:a.map(c=>({id:c.id,label:c.label,args:c.args})),portableDocuments:[...B.entries()].map(([c,b])=>({id:`portable-document:${c}`,label:Le(b[0]),path:c,storyIds:b.map(E=>E.id)})),activePortableStoryId:u.id,onPortableStoryApplied:c=>{const b=(c?A.get(c):null)??s;U.set(t,b.id),S(b).catch(E=>{R.error(`[design-time-layers] React root "${e.worldId}" failed applying portable story "${b.name}": ${W(E)}`,"authoring")})},onPortableStoryArgsChanged:(c,b)=>{const E=A.get(c);E&&S(E,b).catch(ae=>{R.error(`[design-time-layers] React root "${e.worldId}" failed updating portable story "${E.name}" args: ${W(ae)}`,"authoring")})}});return{adapter:Z,dispose:()=>{P=!0,Z.disposeReactRootAdapter(),y?.unmount()}}}R.warn(`[design-time-layers] React root "${e.worldId}" has no portable CSF preview. Add a *.stories.tsx module with parameters.vgai.root set to this root id. Falling back to the deprecated inert-Game preview for compatibility.`,"authoring");const f=Xe(e.worldId,e.path),v=await me(f,n),C=await we(n,e.worldId),{createElement:l,createRoot:p,flushSync:i}=await ge(),m=Ke(),g=[ye(e.worldId)??{}],w={},x=p(o),M={entryStory:null,isolation:null},$=t=>{const{entryStory:d,isolation:u}=M,P=u?u.story:d,y=u?w?.[u.componentKey]:void 0,S=u?y?l(y,{...P?.props??{}}):null:l(v,{...P?.props??{}});x.render(l(qe,{key:u?`isolate:${u.componentKey}:${u.story?.id??""}`:P?`story:${P.id}`:"__none__",onCaught:t,children:l(C,{game:m},S)}))};let k=null;if(i(()=>{$(t=>{k=t})}),k!==null)throw x.unmount(),k instanceof Error?k:new Error(String(k));const D=new G(o,r,{storySources:g,worldId:e.worldId,onStoryApplied:t=>{M.entryStory=t,$(d=>{R.error(`[design-time-layers] world "${e.worldId}" crashed applying story "${t?.id??"(cleared)"}": ${W(d)}`,"authoring")})},onIsolate:t=>{M.isolation=t,$(d=>{R.error(`[design-time-layers] world "${e.worldId}" crashed isolating "${t?.componentKey??"(cleared)"}": ${W(d)}`,"authoring")})}});return{adapter:D,dispose:()=>{D.disposeReactRootAdapter(),x.unmount()}}}function Qe(e){const o=e.getBoundingClientRect();return{width:Math.max(1,Math.round(o.width)||e.clientWidth||300),height:Math.max(1,Math.round(o.height)||e.clientHeight||200)}}async function Je(e,o,n,r){if(!e.path)throw new Error(`design-time pixi layer "${e.worldId}": no \`scene\` declared — nothing to mount (B1 display-only mount supports scene-based pixi roots only, not \`entry\`).`);const a=await be(e.path),s=await ve(r),f=document.createElement("canvas");f.style.width="100%",f.style.height="100%",f.style.display="block",o.appendChild(f);const{width:v,height:C}=Qe(n),p=await new Ie({id:e.worldId,sceneData:a,registry:s}).mount({canvas:f,width:v,height:C,transparent:!0});return p.update?.(0),{dispose:()=>p.dispose(),pick:(m,g)=>{const w=f.getBoundingClientRect();if(w.width===0||w.height===0)return null;const x=p.ctx.app.renderer.screen,M=(m-w.left)/w.width*x.width,$=(g-w.top)/w.height*x.height;for(const k of p.stage.children)if(k.getBounds().containsPoint(M,$))return e.worldId;return null}}}let _=!1;function Y(){_||(_=!0,queueMicrotask(()=>{_=!1,window.dispatchEvent(new CustomEvent(ue))}))}function et(e,o,n,r){if(ie(),Ge(),n.playState!=="stopped"){let t=!1,d=!1;const u=n.subscribe(()=>{t||d||n.playState!=="stopped"||(d=!0,t||Y())});return()=>{t=!0,u()}}const a=le()?.rootPath,s=r?[...r]:ne(o);if(s.length===0||!a)return()=>{};const v=de(s.map(t=>({id:t.worldId,zOrder:t.zOrder}))).map(t=>s.find(d=>d.worldId===t.id)),C=new Map(v.map(t=>[t.worldId,t])),l=new Map,p=[],i=new Set;let m=!1,g=!1,w=!1;function x(){for(const t of p.splice(0))try{t()}catch(d){R.error(`[design-time-layers] dispose failed: ${d}`,"authoring")}for(const t of l.values())t.remove();l.clear()}function M(){x();for(const t of i){const d=C.get(t);if(!d)continue;const u={id:d.worldId,kind:d.kind,entryOrScenePath:d.path,zOrder:d.zOrder,pausable:d.pausable};o.replaceChild(t,new O(n,u,"Design-time layer suspended by play mode — Stop restores it."))}i.clear(),n.notifyIngestEdit()}v.forEach((t,d)=>{const u=Ue(e,t.worldId,Ne+d);l.set(t.worldId,u),(t.kind==="react"?Ye(t,u,a,n):Je(t,u,e,a)).then(y=>{if(m||g){y.dispose();return}if(y.adapter)o.replaceChild(t.worldId,y.adapter),i.add(t.worldId);else if(y.pick){const S={id:t.worldId,kind:t.kind,entryOrScenePath:t.path,zOrder:t.zOrder,pausable:t.pausable};o.replaceChild(t.worldId,new O(n,S,void 0,y.pick)),i.add(t.worldId)}p.push(y.dispose),n.notifyIngestEdit()}).catch(y=>{if(u.remove(),l.delete(t.worldId),m||g)return;const S=W(y);R.error(`[design-time-layers] world "${t.worldId}" (${t.kind}) failed to mount: ${S}`,"authoring");const A={id:t.worldId,kind:t.kind,entryOrScenePath:t.path,zOrder:t.zOrder,pausable:t.pausable};o.replaceChild(t.worldId,new O(n,A,S)),ce({worldId:t.worldId,kind:t.kind,identity:t.kind==="react"?"default-react":"default-pixi",message:S}),n.notifyIngestEdit()})});const $=J(()=>{for(const t of l.values())N(t)}),k=re(()=>{for(const t of l.values())N(t)}),D=n.subscribe(()=>{if(!g&&n.playState!=="stopped"){g=!0,M();return}if(g&&!w&&n.playState==="stopped"&&!m){w=!0,m||Y();return}if(!g){for(const[t,d]of l)se(d,t);for(const{worldId:t,adapter:d}of o.childAdapters()){if(!i.has(t)||!(d instanceof G))continue;const u=d.isolatedNodeId;u&&!n.selectedEntityIds.has(u)&&d.stories.isolate?.(null)}}});return()=>{m=!0,D(),$(),k(),x()}}const Q={fill:null,desktop:{width:1440,height:900},tablet:{width:768,height:1024},mobile:{width:390,height:844}};function tt({containerRef:e,context:o}){const n=ke();I.useSyncExternalStore(n.subscribe,n.getSnapshot);const r=I.useSyncExternalStore(J,te),a=I.useSyncExternalStore(re,oe),s=I.useCallback(l=>{const p=e.current;if(!p)return;const i=Math.min(4,Math.max(.1,l)),m=p.clientWidth/2,g=p.clientHeight/2,w=(m-r.x)/r.zoom,x=(g-r.y)/r.zoom;j(m-w*i,g-x*i,i)},[e,r]),f=I.useCallback(()=>{const l=e.current,p=[...n.selectedEntityIds].at(-1);if(!l||!p)return;const i=o?.adapter.rects?.rect(p);if(!i||i.width<=0||i.height<=0)return;const m=Math.max(1,l.clientWidth-96),g=Math.max(1,l.clientHeight-96),w=Math.min(4,Math.max(.1,Math.min(m/i.width,g/i.height)));j(l.clientWidth/2-(i.x+i.width/2)*w,l.clientHeight/2-(i.y+i.height/2)*w,w)},[e,o,n]),v=I.useCallback(l=>{const p=e.current,i=Q[l];if(!p||i===null){L(null,null),j(0,0,1);return}L(i.width,i.height);const m=Math.min(1,Math.max(.1,Math.min((p.clientWidth-96)/i.width,(p.clientHeight-96)/i.height)));j((p.clientWidth-i.width*m)/2,(p.clientHeight-i.height*m)/2,m)},[e]);if(o?.kind!=="react"||!o.adapter.rects)return null;const C=Object.entries(Q).find(([,l])=>l===null?a.width===null:l.width===a.width&&l.height===a.height)?.[0]??"fill";return h.jsxs(h.Fragment,{children:[a.width!==null&&a.height!==null&&h.jsx("div",{"data-testid":"react-canvas-device-frame",style:{position:"absolute",left:0,top:0,zIndex:0,width:a.width,height:a.height,transform:ee(r),transformOrigin:"0 0",pointerEvents:"none",background:"#fff",boxShadow:"0 0 0 1px #ffffff40, 0 8px 30px #0009"}}),h.jsxs(Pe,{label:"React canvas view","data-testid":"react-canvas-zoom-controls",className:"vgai-react-canvas-controls",children:[h.jsxs(Me,{"aria-label":"Responsive viewport",title:"Responsive viewport",value:C,onChange:l=>v(l.target.value),className:"vgai-react-viewport-select",children:[h.jsx("option",{value:"fill",children:"Fill"}),h.jsx("option",{value:"desktop",children:"Desktop · 1440×900"}),h.jsx("option",{value:"tablet",children:"Tablet · 768×1024"}),h.jsx("option",{value:"mobile",children:"Mobile · 390×844"})]}),h.jsx(V,{"aria-label":"Zoom out",title:"Zoom out",size:"comfortable",onClick:()=>s(r.zoom/1.2),children:h.jsx(F,{icon:$e,size:"md"})}),h.jsxs(Re,{variant:"ghost","aria-label":"Reset zoom to 100%",title:"Reset zoom to 100%",size:"comfortable",onClick:()=>s(1),children:[Math.round(r.zoom*100),"%"]}),h.jsx(V,{"aria-label":"Zoom in",title:"Zoom in",size:"comfortable",onClick:()=>s(r.zoom*1.2),children:h.jsx(F,{icon:ze,size:"md"})}),h.jsx(V,{"aria-label":"Zoom to selection",title:"Zoom to selection",size:"comfortable",onClick:f,children:h.jsx(F,{icon:We,size:"md"})})]})]})}function ot(e){return`workspace:world:${e}`}function rt({active:e,composite:o,descriptor:n,store:r}){const a=I.useRef(null),s=I.useRef(null);I.useSyncExternalStore(r.subscribe,r.getSnapshot),I.useEffect(()=>{!e||s.current||!a.current||(s.current=et(a.current,o,r,[n]))},[e,o,n,r]),I.useEffect(()=>()=>{s.current?.(),s.current=null},[]);const f=Oe(Te(r),r.selectedEntityIds),v=f?.worldId===n.worldId?f:null;return h.jsxs("div",{ref:a,"data-testid":`world-document:${n.worldId}`,style:{position:"absolute",inset:0,overflow:"hidden",pointerEvents:"auto",backgroundColor:z.surface.raised,backgroundImage:`linear-gradient(45deg, ${z.surface.chrome} 25%, transparent 25%, transparent 75%, ${z.surface.chrome} 75%), linear-gradient(45deg, ${z.surface.chrome} 25%, transparent 25%, transparent 75%, ${z.surface.chrome} 75%)`,backgroundPosition:"0 0, 8px 8px",backgroundSize:"16px 16px"},children:[h.jsx(Be,{}),h.jsx(tt,{containerRef:a,context:v})]})}function at(e,o){const n=je(),r=[],a=[];for(const s of o.childAdapters())s.role==="world"&&s.kind==="threejs"&&a.push(K(s.worldId,X));for(const s of Ze(o)){const f=ot(s.worldId);a.push(K(s.worldId,f)),r.push(f);const v=C=>h.jsx(rt,{...C,composite:o,descriptor:s,store:e});De({id:f,title:s.worldId,kind:"world",provenance:{rootId:s.worldId,...s.path?{sourcePath:s.path}:{}},Content:v,closeable:!1,onActivate:()=>e.setActiveViewportTab("scene")})}return n?q(n):q(X),()=>{for(const s of a)s();for(const s of r)Ae(s,{discardDirty:!0})}}export{at as installWorldDocuments,ot as worldDocumentId};
package/dist/index.html CHANGED
@@ -25,8 +25,8 @@
25
25
  static <style> block keeps only the pre-paint shell layout that must
26
26
  be present before any script runs. */
27
27
  </style>
28
- <script type="module" crossorigin src="/assets/index-CQEfi217.js"></script>
29
- <link rel="stylesheet" crossorigin href="/assets/index-Dvi-V0NE.css">
28
+ <script type="module" crossorigin src="/assets/index-DbQzGLxv.js"></script>
29
+ <link rel="stylesheet" crossorigin href="/assets/index-bAGhEnnO.css">
30
30
  </head>
31
31
  <body>
32
32
  <div id="editor-chrome-root">
@@ -22307,7 +22307,27 @@ async function main() {
22307
22307
  "react-dom",
22308
22308
  "react-dom/client",
22309
22309
  "react/jsx-runtime",
22310
- "react/jsx-dev-runtime"
22310
+ "react/jsx-dev-runtime",
22311
+ // A scaffold's project-authored client modules are loaded lazily by
22312
+ // the prebuilt editor. They are outside the manifest-world entry
22313
+ // crawl above, so a cold install otherwise discovers these aliases in
22314
+ // waves (project tools during editor boot, GameComponent on first
22315
+ // Play) and Vite hard-reloads the controlling tab each time. Keep the
22316
+ // starter's runtime imports in the initial prebundle so the first SDK
22317
+ // command is not disconnected by dependency optimization.
22318
+ "@editor/widgets",
22319
+ "@engine/data/data-asset",
22320
+ "@engine/ecs/game-component",
22321
+ "@engine/input/input-manager",
22322
+ "@engine/input/rebind-controller",
22323
+ "@engine/loader",
22324
+ "@engine/react/use-data",
22325
+ "@engine/runtime/mount-game",
22326
+ "@engine/scene/component-registry",
22327
+ "@engine/scene/parse",
22328
+ "@engine/tools/define-tool",
22329
+ "@engine/world2d",
22330
+ "zod"
22311
22331
  ],
22312
22332
  entries: projectOptimizeDepsEntries,
22313
22333
  // C3 hardening: belt to the entries-scoping suspenders. Entries-scoping
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@vgai/editor",
3
3
  "author": "Volter AI, Inc.",
4
4
  "license": "AGPL-3.0-only",
5
- "version": "0.4.0-canary.20260715.0",
5
+ "version": "0.4.0",
6
6
  "type": "module",
7
7
  "repository": {
8
8
  "type": "git",
@@ -38,7 +38,7 @@
38
38
  "@fortawesome/free-solid-svg-icons": "^7.2.0",
39
39
  "@fortawesome/react-fontawesome": "^3.2.0",
40
40
  "@pixi/tilemap": "^5.0.0",
41
- "@vgai/engine": "0.4.0-canary.20260715.0",
41
+ "@vgai/engine": "0.4.0",
42
42
  "axe-core": "^4.12.1",
43
43
  "chokidar": "^5.0.0",
44
44
  "dockview-react": "^7.0.2",
@@ -51,7 +51,7 @@
51
51
  },
52
52
  "optionalDependencies": {
53
53
  "@volter-ai-dev/supercode": "^0.2.1",
54
- "@volter-ai-dev/supercode-client": "^0.3.0",
54
+ "@volter-ai-dev/supercode-client": "^0.3.1",
55
55
  "@volter-ai-dev/supercode-harness-sdk": "^0.2.0"
56
56
  },
57
57
  "devDependencies": {