dsh-code-server-app 0.1.2 → 0.1.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -10
- package/lib/client.js +5 -944
- package/lib/index.js +14 -5
- package/package.json +8 -3
- package/scripts/setup-code-server.mjs +1 -3
package/lib/client.js
CHANGED
|
@@ -1,945 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
// 格式:window.__ModuleLoader__.load({ id, factory });factory(require) 的
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
// GET /code-server/status → { ok, running, status, port, host, pid, cwd, url, version, error, logTail, adopted }
|
|
7
|
-
// POST /code-server/start → { cwd? } → status
|
|
8
|
-
// POST /code-server/stop → status
|
|
9
|
-
//
|
|
10
|
-
// UI 结构(参照 dsh-univer-office 的 WorktreeWindow):
|
|
11
|
-
// - sidebar.footer.action(id code-server-panel):"Code Server"按钮;点击打开窗口
|
|
12
|
-
// - shell.overlay(id code-server):内部浮动窗口——固定定位 + 空转根容器,
|
|
13
|
-
// 窗口自身接管 pointer-events,可拖动/8 向缩放/最大化/折叠/关闭
|
|
14
|
-
//
|
|
15
|
-
// 窗口几何与手势完全复刻 univer-office 模式:
|
|
16
|
-
// - 根容器 position:fixed inset:0 pointer-events:none(点击穿透到底层)
|
|
17
|
-
// - 窗口 pointer-events:auto,标题栏 pointerdown 拖动(setPointerCapture),
|
|
18
|
-
// 双击最大化,8 个 resize handle 缩放,min 尺寸约束,viewport 边缘 clamp。
|
|
19
|
-
window.__ModuleLoader__.load({
|
|
20
|
-
id: 'dsh-code-server-app',
|
|
21
|
-
factory: (require) => {
|
|
22
|
-
var module = { exports: {} }
|
|
23
|
-
var exports = module.exports
|
|
24
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' })
|
|
25
|
-
let React = require('react')
|
|
26
|
-
// ReactDOM 为必需:窗口经 createPortal 挂到 document.body(跨越 shell.overlay 的
|
|
27
|
-
// stacking context)。react-dom 在冻结模块表内(官方 feedback bundle 同款),
|
|
28
|
-
// 缺失时在此显式失败(而非静默降级导致窗口被输入框遮挡)。
|
|
29
|
-
let ReactDOM = require('react-dom')
|
|
1
|
+
window.__ModuleLoader__.load({id:'dsh-code-server-app',factory:function(require){var module={exports:{}};var exports=module.exports;
|
|
2
|
+
var yn=Object.defineProperty;var hc=Object.getOwnPropertyDescriptor;var gc=Object.getOwnPropertyNames;var xc=Object.prototype.hasOwnProperty;var yc=(e,t)=>{for(var r in t)yn(e,r,{get:t[r],enumerable:!0})},vc=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of gc(t))!xc.call(e,n)&&n!==r&&yn(e,n,{get:()=>t[n],enumerable:!(o=hc(t,n))||o.enumerable});return e};var bc=e=>vc(yn({},"__esModule",{value:!0}),e);var Em={};yc(Em,{apply:()=>Sm,inject:()=>Pm,name:()=>Cm});module.exports=bc(Em);var Ui=require("react"),zr=(0,Ui.createContext)({});var Hi=require("react");function Ki(e){let t=(0,Hi.useRef)(null);return t.current===null&&(t.current=e()),t.current}var Gr=require("react");var _i=typeof window!="undefined";var $i=_i?Gr.useLayoutEffect:Gr.useEffect;var Yi=require("react"),vt=(0,Yi.createContext)(null);function et(e,t){e.indexOf(t)===-1&&e.push(t)}function Ne(e,t){let r=e.indexOf(t);r>-1&&e.splice(r,1)}var Y=(e,t,r)=>r>t?t:r<e?e:r;var Me=()=>{},ie=()=>{};var te={};var Kt=e=>/^-?(?:\d+(?:\.\d+)?|\.\d+)$/u.test(e);var _t=e=>typeof e=="object"&&e!==null;var $t=e=>/^0[^.\s]+$/u.test(e);function Yt(e){let t;return()=>(t===void 0&&(t=e()),t)}var j=e=>e;var ve=(...e)=>e.reduce((t,r)=>o=>r(t(o)));var we=(e,t,r)=>{let o=t-e;return o?(r-e)/o:1};var De=class{constructor(){this.subscriptions=[]}add(t){return et(this.subscriptions,t),()=>Ne(this.subscriptions,t)}notify(t,r,o){let n=this.subscriptions.length;if(n)if(n===1)this.subscriptions[0](t,r,o);else for(let s=0;s<n;s++){let i=this.subscriptions[s];i&&i(t,r,o)}}getSize(){return this.subscriptions.length}clear(){this.subscriptions.length=0}};var H=e=>e*1e3,Z=e=>e/1e3;var Xt=(e,t)=>t?e*(1e3/t):0;var Xi=(e,t,r)=>(((1-3*r+3*t)*e+(3*r-6*t))*e+3*t)*e,wc=1e-7,Tc=12;function Sc(e,t,r,o,n){let s,i,a=0;do i=t+(r-t)/2,s=Xi(i,o,n)-e,s>0?r=i:t=i;while(Math.abs(s)>wc&&++a<Tc);return i}function je(e,t,r,o){if(e===t&&r===o)return j;let n=s=>Sc(s,0,1,e,r);return s=>s===0||s===1?s:Xi(n(s),t,o)}var Wr=e=>t=>t<=.5?e(2*t)/2:(2-e(2*(1-t)))/2;var Ur=e=>t=>1-e(1-t);var Hr=je(.33,1.53,.69,.99),bt=Ur(Hr),qt=Wr(bt);var Zt=e=>e>=1?1:(e*=2)<1?.5*bt(e):.5*(2-Math.pow(2,-10*(e-1)));var Jt=e=>1-Math.sin(Math.acos(e)),Qt=Ur(Jt),er=Wr(Jt);var vn=je(.42,0,1,1),bn=je(0,0,.58,1),tr=je(.42,0,.58,1);var wn=e=>Array.isArray(e)&&typeof e[0]!="number";var rr=e=>Array.isArray(e)&&typeof e[0]=="number";var qi={linear:j,easeIn:vn,easeInOut:tr,easeOut:bn,circIn:Jt,circInOut:er,circOut:Qt,backIn:bt,backInOut:qt,backOut:Hr,anticipate:Zt},Vc=e=>typeof e=="string",Kr=e=>{if(rr(e)){ie(e.length===4,"Cubic bezier arrays must contain four numerical values.","cubic-bezier-length");let[t,r,o,n]=e;return je(t,r,o,n)}else if(Vc(e))return ie(qi[e]!==void 0,`Invalid easing type '${e}'`,"invalid-easing-type"),qi[e];return e};var or=["setup","read","resolveKeyframes","preUpdate","update","preRender","render","postRender"];function Zi(e){let t=new Set,r=new Set,o=!1,n=!1,s=new WeakSet,i={delta:0,timestamp:0,isProcessing:!1};function a(u){s.has(u)&&(c.schedule(u),e()),u(i)}let c={schedule:(u,l=!1,f=!1)=>{let p=f&&o?t:r;return l&&s.add(u),p.add(u),u},cancel:u=>{r.delete(u),s.delete(u)},process:u=>{if(i=u,o){n=!0;return}o=!0;let l=t;t=r,r=l,t.forEach(a),t.clear(),o=!1,n&&(n=!1,c.process(u))}};return c}var Pc=40;function _r(e,t){let r=!1,o=!0,n={delta:0,timestamp:0,isProcessing:!1},s=()=>r=!0,i=or.reduce((w,y)=>(w[y]=Zi(s),w),{}),{setup:a,read:c,resolveKeyframes:u,preUpdate:l,update:f,preRender:m,render:p,postRender:d}=i,h=()=>{let w=te.useManualTiming,y=w?n.timestamp:performance.now();r=!1,w||(n.delta=o?1e3/60:Math.max(Math.min(y-n.timestamp,Pc),1)),n.timestamp=y,n.isProcessing=!0,a.process(n),c.process(n),u.process(n),l.process(n),f.process(n),m.process(n),p.process(n),d.process(n),n.isProcessing=!1,r&&t&&(o=!1,e(h))},x=()=>{r=!0,o=!0,n.isProcessing||e(h)};return{schedule:or.reduce((w,y)=>{let T=i[y];return w[y]=(C,E=!1,P=!1)=>(r||x(),T.schedule(C,E,P)),w},{}),cancel:w=>{for(let y=0;y<or.length;y++)i[or[y]].cancel(w)},state:n,steps:i}}var{schedule:A,cancel:se,state:W,steps:nr}=_r(typeof requestAnimationFrame!="undefined"?requestAnimationFrame:j,!0);var $r;function Cc(){$r=void 0}var z={now:()=>($r===void 0&&z.set(W.isProcessing||te.useManualTiming?W.timestamp:performance.now()),$r),set:e=>{$r=e,queueMicrotask(Cc)}};var Ji=e=>t=>typeof t=="string"&&t.startsWith(e),Yr=Ji("--"),Ec=Ji("var(--"),wt=e=>Ec(e)?Ac.test(e.split("/*")[0].trim()):!1,Ac=/var\(--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)$/iu;function Tn(e){return typeof e!="string"?!1:e.split("/*")[0].includes("var(--")}var Te={test:e=>typeof e=="number",parse:parseFloat,transform:e=>e},Re={...Te,transform:e=>Y(0,1,e)},ir={...Te,default:1};var ze=e=>Math.round(e*1e5)/1e5;var Tt=/-?(?:\d+(?:\.\d+)?|\.\d+)/gu;function Qi(e){return e==null}var es=/^(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))$/iu;var St=(e,t)=>r=>!!(typeof r=="string"&&es.test(r)&&r.startsWith(e)||t&&!Qi(r)&&Object.prototype.hasOwnProperty.call(r,t)),Xr=(e,t,r)=>o=>{if(typeof o!="string")return o;let[n,s,i,a]=o.match(Tt);return{[e]:parseFloat(n),[t]:parseFloat(s),[r]:parseFloat(i),alpha:a!==void 0?parseFloat(a):1}};var Mc=e=>Y(0,255,e),Sn={...Te,transform:e=>Math.round(Mc(e))},Se={test:St("rgb","red"),parse:Xr("red","green","blue"),transform:({red:e,green:t,blue:r,alpha:o=1})=>"rgba("+Sn.transform(e)+", "+Sn.transform(t)+", "+Sn.transform(r)+", "+ze(Re.transform(o))+")"};function Dc(e){let t="",r="",o="",n="";return e.length>5?(t=e.substring(1,3),r=e.substring(3,5),o=e.substring(5,7),n=e.substring(7,9)):(t=e.substring(1,2),r=e.substring(2,3),o=e.substring(3,4),n=e.substring(4,5),t+=t,r+=r,o+=o,n+=n),{red:parseInt(t,16),green:parseInt(r,16),blue:parseInt(o,16),alpha:n?parseInt(n,16)/255:1}}var sr={test:St("#"),parse:Dc,transform:Se.transform};var ar=e=>({test:t=>typeof t=="string"&&t.endsWith(e)&&t.split(" ").length===1,parse:parseFloat,transform:t=>`${t}${e}`}),de=ar("deg"),ee=ar("%"),S=ar("px"),Vn=ar("vh"),Pn=ar("vw"),qr={...ee,parse:e=>ee.parse(e)/100,transform:e=>ee.transform(e*100)};var Ge={test:St("hsl","hue"),parse:Xr("hue","saturation","lightness"),transform:({hue:e,saturation:t,lightness:r,alpha:o=1})=>"hsla("+Math.round(e)+", "+ee.transform(ze(t))+", "+ee.transform(ze(r))+", "+ze(Re.transform(o))+")"};var O={test:e=>Se.test(e)||sr.test(e)||Ge.test(e),parse:e=>Se.test(e)?Se.parse(e):Ge.test(e)?Ge.parse(e):sr.parse(e),transform:e=>typeof e=="string"?e:e.hasOwnProperty("red")?Se.transform(e):Ge.transform(e),getAnimatableNone:e=>{let t=O.parse(e);return t.alpha=0,O.transform(t)}};var ts=/(?:#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\))/giu;function Rc(e){var t,r;return isNaN(e)&&typeof e=="string"&&(((t=e.match(Tt))==null?void 0:t.length)||0)+(((r=e.match(ts))==null?void 0:r.length)||0)>0}var os="number",ns="color",kc="var",Lc="var(",rs="${}",Ic=/var\s*\(\s*--(?:[\w-]+\s*|[\w-]+\s*,(?:\s*[^)(\s]|\s*\((?:[^)(]|\([^)(]*\))*\))+\s*)\)|#[\da-f]{3,8}|(?:rgb|hsl)a?\((?:-?[\d.]+%?[,\s]+){2}-?[\d.]+%?\s*(?:[,/]\s*)?(?:\b\d+(?:\.\d+)?|\.\d+)?%?\)|-?(?:\d+(?:\.\d+)?|\.\d+)/giu;function We(e){let t=e.toString(),r=[],o={color:[],number:[],var:[]},n=[],s=0,a=t.replace(Ic,c=>(O.test(c)?(o.color.push(s),n.push(ns),r.push(O.parse(c))):c.startsWith(Lc)?(o.var.push(s),n.push(kc),r.push(c)):(o.number.push(s),n.push(os),r.push(parseFloat(c))),++s,rs)).split(rs);return{values:r,split:a,indexes:o,types:n}}function Oc(e){return We(e).values}function is({split:e,types:t}){let r=e.length;return o=>{let n="";for(let s=0;s<r;s++)if(n+=e[s],o[s]!==void 0){let i=t[s];i===os?n+=ze(o[s]):i===ns?n+=O.transform(o[s]):n+=o[s]}return n}}function Bc(e){return is(We(e))}var Fc=e=>typeof e=="number"?0:O.test(e)?O.getAnimatableNone(e):e,Nc=(e,t)=>typeof e=="number"?t!=null&&t.trim().endsWith("/")?e:0:Fc(e);function jc(e){let t=We(e);return is(t)(t.values.map((o,n)=>Nc(o,t.split[n])))}var X={test:Rc,parse:Oc,createTransformer:Bc,getAnimatableNone:jc};function Cn(e,t,r){return r<0&&(r+=1),r>1&&(r-=1),r<1/6?e+(t-e)*6*r:r<1/2?t:r<2/3?e+(t-e)*(2/3-r)*6:e}function ss({hue:e,saturation:t,lightness:r,alpha:o}){e/=360,t/=100,r/=100;let n=0,s=0,i=0;if(!t)n=s=i=r;else{let a=r<.5?r*(1+t):r+t-r*t,c=2*r-a;n=Cn(c,a,e+1/3),s=Cn(c,a,e),i=Cn(c,a,e-1/3)}return{red:Math.round(n*255),green:Math.round(s*255),blue:Math.round(i*255),alpha:o}}function Vt(e,t){return r=>r>0?t:e}var D=(e,t,r)=>e+(t-e)*r;var En=(e,t,r)=>{let o=e*e,n=r*(t*t-o)+o;return n<0?0:Math.sqrt(n)},zc=[sr,Se,Ge],Gc=e=>zc.find(t=>t.test(e));function as(e){let t=Gc(e);if(Me(!!t,`'${e}' is not an animatable color. Use the equivalent color code instead.`,"color-not-animatable"),!t)return!1;let r=t.parse(e);return t===Ge&&(r=ss(r)),r}var An=(e,t)=>{let r=as(e),o=as(t);if(!r||!o)return Vt(e,t);let n={...r};return s=>(n.red=En(r.red,o.red,s),n.green=En(r.green,o.green,s),n.blue=En(r.blue,o.blue,s),n.alpha=D(r.alpha,o.alpha,s),Se.transform(n))};var Zr=new Set(["none","hidden"]);function ls(e,t){return Zr.has(e)?r=>r<=0?e:t:r=>r>=1?t:e}function Wc(e,t){return r=>D(e,t,r)}function Jr(e){return typeof e=="number"?Wc:typeof e=="string"?wt(e)?Vt:O.test(e)?An:Kc:Array.isArray(e)?cs:typeof e=="object"?O.test(e)?An:Uc:Vt}function cs(e,t){let r=[...e],o=r.length,n=e.map((s,i)=>Jr(s)(s,t[i]));return s=>{for(let i=0;i<o;i++)r[i]=n[i](s);return r}}function Uc(e,t){let r={...e,...t},o={};for(let n in r)e[n]!==void 0&&t[n]!==void 0&&(o[n]=Jr(e[n])(e[n],t[n]));return n=>{for(let s in o)r[s]=o[s](n);return r}}function Hc(e,t){var n;let r=[],o={color:0,var:0,number:0};for(let s=0;s<t.values.length;s++){let i=t.types[s],a=e.indexes[i][o[i]],c=(n=e.values[a])!=null?n:0;r[s]=c,o[i]++}return r}var Kc=(e,t)=>{let r=X.createTransformer(t),o=We(e),n=We(t);return o.indexes.var.length===n.indexes.var.length&&o.indexes.color.length===n.indexes.color.length&&o.indexes.number.length>=n.indexes.number.length?Zr.has(e)&&!n.values.length||Zr.has(t)&&!o.values.length?ls(e,t):ve(cs(Hc(o,n),n.values),r):(Me(!0,`Complex values '${e}' and '${t}' too different to mix. Ensure all colors are of the same type, and that each contains the same quantity of number and color values. Falling back to instant transition.`,"complex-values-different"),Vt(e,t))};function Qr(e,t,r){return typeof e=="number"&&typeof t=="number"&&typeof r=="number"?D(e,t,r):Jr(e)(e,t)}var us=e=>{let t=({timestamp:r})=>e(r);return{start:(r=!0)=>A.update(t,r),stop:()=>se(t),now:()=>W.isProcessing?W.timestamp:z.now()}};var eo=(e,t,r=10)=>{let o="",n=Math.max(Math.round(t/r),2);for(let s=0;s<n;s++)o+=Math.round(e(s/(n-1))*1e4)/1e4+", ";return`linear(${o.substring(0,o.length-2)})`};function Pt(e){let t=0,r=50,o=e.next(t);for(;!o.done&&t<2e4;)t+=r,o=e.next(t);return t>=2e4?1/0:t}function fs(e,t=100,r){let o=r({...e,keyframes:[0,t]}),n=Math.min(Pt(o),2e4);return{type:"keyframes",ease:s=>o.next(n*s).value/t,duration:Z(n)}}var G={stiffness:100,damping:10,mass:1,velocity:0,duration:800,bounce:.3,visualDuration:.3,restSpeed:{granular:.01,default:2},restDelta:{granular:.005,default:.5},minDuration:.01,maxDuration:10,minDamping:.05,maxDamping:1};function Rn(e,t){return e*Math.sqrt(1-t*t)}var _c=12;function $c(e,t,r){let o=r;for(let n=1;n<_c;n++)o=o-e(o)/t(o);return o}var Dn=.001;function Yc({duration:e=G.duration,bounce:t=G.bounce,velocity:r=G.velocity,mass:o=G.mass}){let n,s;Me(e<=H(G.maxDuration),"Spring duration must be 10 seconds or less","spring-duration-limit");let i=1-t;i=Y(G.minDamping,G.maxDamping,i),e=Y(G.minDuration,G.maxDuration,Z(e)),i<1?(n=u=>{let l=u*i,f=l*e,m=l-r,p=Rn(u,i),d=Math.exp(-f);return Dn-m/p*d},s=u=>{let f=u*i*e,m=f*r+r,p=Math.pow(i,2)*Math.pow(u,2)*e,d=Math.exp(-f),h=Rn(Math.pow(u,2),i);return(-n(u)+Dn>0?-1:1)*((m-p)*d)/h}):(n=u=>{let l=Math.exp(-u*e),f=(u-r)*e+1;return-Dn+l*f},s=u=>{let l=Math.exp(-u*e),f=(r-u)*(e*e);return l*f});let a=5/e,c=$c(n,s,a);if(e=H(e),isNaN(c))return{stiffness:G.stiffness,damping:G.damping,duration:e};{let u=Math.pow(c,2)*o;return{stiffness:u,damping:i*2*Math.sqrt(o*u),duration:e}}}var Xc=["duration","bounce"],qc=["stiffness","damping","mass"];function ms(e,t){return t.some(r=>e[r]!==void 0)}function Zc(e){let t={velocity:G.velocity,stiffness:G.stiffness,damping:G.damping,mass:G.mass,isResolvedFromDuration:!1,...e};if(!ms(e,qc)&&ms(e,Xc))if(t.velocity=0,e.visualDuration){let r=e.visualDuration,o=2*Math.PI/(r*1.2),n=o*o,s=2*Y(.05,1,1-(e.bounce||0))*Math.sqrt(n);t={...t,mass:G.mass,stiffness:n,damping:s}}else{let r=Yc({...e,velocity:0});t={...t,...r,mass:G.mass},t.isResolvedFromDuration=!0}return t}function Ct(e=G.visualDuration,t=G.bounce){let r=typeof e!="object"?{visualDuration:e,keyframes:[0,1],bounce:t}:e,{restSpeed:o,restDelta:n}=r,s=r.keyframes[0],i=r.keyframes[r.keyframes.length-1],a={done:!1,value:s},{stiffness:c,damping:u,mass:l,duration:f,velocity:m,isResolvedFromDuration:p}=Zc({...r,velocity:-Z(r.velocity||0)}),d=m||0,h=u/(2*Math.sqrt(c*l)),x=i-s,v=Z(Math.sqrt(c/l)),b=Math.abs(x)<5;o||(o=b?G.restSpeed.granular:G.restSpeed.default),n||(n=b?G.restDelta.granular:G.restDelta.default);let w,y,T,C,E,P;if(h<1)T=Rn(v,h),C=(d+h*v*x)/T,w=V=>{let I=Math.exp(-h*v*V);return i-I*(C*Math.sin(T*V)+x*Math.cos(T*V))},E=h*v*C+x*T,P=h*v*x-C*T,y=V=>Math.exp(-h*v*V)*(E*Math.sin(T*V)+P*Math.cos(T*V));else if(h===1){w=I=>i-Math.exp(-v*I)*(x+(d+v*x)*I);let V=d+v*x;y=I=>Math.exp(-v*I)*(v*V*I-d)}else{let V=v*Math.sqrt(h*h-1);w=M=>{let L=Math.exp(-h*v*M),F=Math.min(V*M,300);return i-L*((d+h*v*x)*Math.sinh(F)+V*x*Math.cosh(F))/V};let I=(d+h*v*x)/V,K=h*v*I-x*V,fe=h*v*x-I*V;y=M=>{let L=Math.exp(-h*v*M),F=Math.min(V*M,300);return L*(K*Math.sinh(F)+fe*Math.cosh(F))}}let U={calculatedDuration:p&&f||null,velocity:V=>H(y(V)),next:V=>{if(!p&&h<1){let K=Math.exp(-h*v*V),fe=Math.sin(T*V),M=Math.cos(T*V),L=i-K*(C*fe+x*M),F=H(K*(E*fe+P*M));return a.done=Math.abs(F)<=o&&Math.abs(i-L)<=n,a.value=a.done?i:L,a}let I=w(V);if(p)a.done=V>=f;else{let K=H(y(V));a.done=Math.abs(K)<=o&&Math.abs(i-I)<=n}return a.value=a.done?i:I,a},toString:()=>{let V=Math.min(Pt(U),2e4),I=eo(K=>U.next(V*K).value,V,30);return V+"ms "+I},toTransition:()=>{}};return U}Ct.applyToOptions=e=>{let t=fs(e,100,Ct);return e.ease=t.ease,e.duration=H(t.duration),e.type="keyframes",e};var Jc=5;function to(e,t,r){let o=Math.max(t-Jc,0);return Xt(r-e(o),t-o)}function lr({keyframes:e,velocity:t=0,power:r=.8,timeConstant:o=325,bounceDamping:n=10,bounceStiffness:s=500,modifyTarget:i,min:a,max:c,restDelta:u=.5,restSpeed:l}){let f=e[0],m={done:!1,value:f},p=P=>a!==void 0&&P<a||c!==void 0&&P>c,d=P=>a===void 0?c:c===void 0||Math.abs(a-P)<Math.abs(c-P)?a:c,h=r*t,x=f+h,v=i===void 0?x:i(x);v!==x&&(h=v-f);let b=P=>-h*Math.exp(-P/o),w=P=>v+b(P),y=P=>{let U=b(P),V=w(P);m.done=Math.abs(U)<=u,m.value=m.done?v:V},T,C,E=P=>{p(m.value)&&(T=P,C=Ct({keyframes:[m.value,d(m.value)],velocity:to(w,P,m.value),damping:n,stiffness:s,restDelta:u,restSpeed:l}))};return E(0),{calculatedDuration:null,next:P=>{let U=!1;return!C&&T===void 0&&(U=!0,y(P),E(P)),T!==void 0&&P>=T?C.next(P-T):(!U&&y(P),m)}}}function Qc(e,t,r){let o=[],n=r||te.mix||Qr,s=e.length-1;for(let i=0;i<s;i++){let a=n(e[i],e[i+1]);if(t){let c=Array.isArray(t)?t[i]||j:t;a=ve(c,a)}o.push(a)}return o}function ps(e,t,{clamp:r=!0,ease:o,mixer:n}={}){let s=e.length;if(ie(s===t.length,"Both input and output ranges must be the same length","range-length"),s===1)return()=>t[0];if(s===2&&t[0]===t[1])return()=>t[1];let i=e[0]===e[1];e[0]>e[s-1]&&(e=[...e].reverse(),t=[...t].reverse());let a=Qc(t,o,n),c=a.length,u=l=>{if(i&&l<e[0])return t[0];let f=0;if(c>1)for(;f<e.length-2&&!(l<e[f+1]);f++);let m=we(e[f],e[f+1],l);return a[f](m)};return r?l=>u(Y(e[0],e[s-1],l)):u}function ds(e,t){let r=e[e.length-1];for(let o=1;o<=t;o++){let n=we(0,t,o);e.push(D(r,1,n))}}function hs(e){let t=[0];return ds(t,e.length-1),t}function gs(e,t){return e.map(r=>r*t)}function eu(e,t){return e.map(()=>t||tr).splice(0,e.length-1)}function tt({duration:e=300,keyframes:t,times:r,ease:o="easeInOut"}){let n=wn(o)?o.map(Kr):Kr(o),s={done:!1,value:t[0]},i=gs(r&&r.length===t.length?r:hs(t),e),a=ps(i,t,{ease:Array.isArray(n)?n:eu(t,n)});return{calculatedDuration:e,next:c=>(s.value=a(c),s.done=c>=e,s)}}var tu=e=>e!==null;function Ue(e,{repeat:t,repeatType:r="loop"},o,n=1){let s=e.filter(tu),a=n<0||t&&r!=="loop"&&t%2===1?0:s.length-1;return!a||o===void 0?s[a]:o}var ru={decay:lr,inertia:lr,tween:tt,keyframes:tt,spring:Ct};function ro(e){typeof e.type=="string"&&(e.type=ru[e.type])}var He=class{constructor(){this.updateFinished()}get finished(){return this._finished}updateFinished(){this._finished=new Promise(t=>{this.resolve=t})}notifyFinished(){this.resolve()}then(t,r){return this.finished.then(t,r)}};var ou=e=>e/100,ke=class extends He{constructor(t){super(),this.state="idle",this.startTime=null,this.isStopped=!1,this.currentTime=0,this.holdTime=null,this.playbackSpeed=1,this.delayState={done:!1,value:void 0},this.stop=()=>{var o,n;let{motionValue:r}=this.options;r&&r.updatedAt!==z.now()&&this.tick(z.now()),this.isStopped=!0,this.state!=="idle"&&(this.teardown(),(n=(o=this.options).onStop)==null||n.call(o))},this.options=t,this.initAnimation(),this.play(),t.autoplay===!1&&this.pause()}initAnimation(){let{options:t}=this;ro(t);let{type:r=tt,repeat:o=0,repeatDelay:n=0,repeatType:s,velocity:i=0}=t,{keyframes:a}=t,c=r||tt;c!==tt&&typeof a[0]!="number"&&(this.mixKeyframes=ve(ou,Qr(a[0],a[1])),a=[0,100]);let u=c({...t,keyframes:a});s==="mirror"&&(this.mirroredGenerator=c({...t,keyframes:[...a].reverse(),velocity:-i})),u.calculatedDuration===null&&(u.calculatedDuration=Pt(u));let{calculatedDuration:l}=u;this.calculatedDuration=l,this.resolvedDuration=l+n,this.totalDuration=this.resolvedDuration*(o+1)-n,this.generator=u}updateTime(t){let r=Math.round(t-this.startTime)*this.playbackSpeed;this.holdTime!==null?this.currentTime=this.holdTime:this.currentTime=r}tick(t,r=!1){let{generator:o,totalDuration:n,mixKeyframes:s,mirroredGenerator:i,resolvedDuration:a,calculatedDuration:c}=this;if(this.startTime===null)return o.next(0);let{delay:u=0,keyframes:l,repeat:f,repeatType:m,repeatDelay:p,type:d,onUpdate:h,finalKeyframe:x}=this.options;this.speed>0?this.startTime=Math.min(this.startTime,t):this.speed<0&&(this.startTime=Math.min(t-n/this.speed,this.startTime)),r?this.currentTime=t:this.updateTime(t);let v=this.currentTime-u*(this.playbackSpeed>=0?1:-1),b=this.playbackSpeed>=0?v<0:v>n;this.currentTime=Math.max(v,0),this.state==="finished"&&this.holdTime===null&&(this.currentTime=n);let w=this.currentTime,y=o;if(f){let P=Math.min(this.currentTime,n)/a,U=Math.floor(P),V=P%1;!V&&P>=1&&(V=1),V===1&&U--,U=Math.min(U,f+1),!!(U%2)&&(m==="reverse"?(V=1-V,p&&(V-=p/a)):m==="mirror"&&(y=i)),w=Y(0,1,V)*a}let T;b?(this.delayState.value=l[0],T=this.delayState):T=y.next(w),s&&!b&&(T.value=s(T.value));let{done:C}=T;!b&&c!==null&&(C=this.playbackSpeed>=0?this.currentTime>=n:this.currentTime<=0);let E=this.holdTime===null&&(this.state==="finished"||this.state==="running"&&C);return E&&d!==lr&&(T.value=Ue(l,this.options,x,this.speed)),h&&h(T.value),E&&this.finish(),T}then(t,r){return this.finished.then(t,r)}get duration(){return Z(this.calculatedDuration)}get iterationDuration(){let{delay:t=0}=this.options||{};return this.duration+Z(t)}get time(){return Z(this.currentTime)}set time(t){t=H(t),this.currentTime=t,this.startTime===null||this.holdTime!==null||this.playbackSpeed===0?this.holdTime=t:this.driver&&(this.startTime=this.driver.now()-t/this.playbackSpeed),this.driver?this.driver.start(!1):(this.startTime=0,this.state="paused",this.holdTime=t,this.tick(t))}getGeneratorVelocity(){let t=this.currentTime;if(t<=0)return this.options.velocity||0;if(this.generator.velocity)return this.generator.velocity(t);let r=this.generator.next(t).value;return to(o=>this.generator.next(o).value,t,r)}get speed(){return this.playbackSpeed}set speed(t){let r=this.playbackSpeed!==t;r&&this.driver&&this.updateTime(z.now()),this.playbackSpeed=t,r&&this.driver&&(this.time=Z(this.currentTime))}play(){var n,s;if(this.isStopped)return;let{driver:t=us,startTime:r}=this.options;this.driver||(this.driver=t(i=>this.tick(i))),(s=(n=this.options).onPlay)==null||s.call(n);let o=this.driver.now();this.state==="finished"?(this.updateFinished(),this.startTime=o):this.holdTime!==null?this.startTime=o-this.holdTime:this.startTime||(this.startTime=r!=null?r:o),this.state==="finished"&&this.speed<0&&(this.startTime+=this.calculatedDuration),this.holdTime=null,this.state="running",this.driver.start()}pause(){this.state="paused",this.updateTime(z.now()),this.holdTime=this.currentTime}complete(){this.state!=="running"&&this.play(),this.state="finished",this.holdTime=null}finish(){var t,r;this.notifyFinished(),this.teardown(),this.state="finished",(r=(t=this.options).onComplete)==null||r.call(t)}cancel(){var t,r;this.holdTime=null,this.startTime=0,this.tick(0),this.teardown(),(r=(t=this.options).onCancel)==null||r.call(t)}teardown(){this.state="idle",this.stopDriver(),this.startTime=this.holdTime=null}stopDriver(){this.driver&&(this.driver.stop(),this.driver=void 0)}sample(t){return this.startTime=0,this.tick(t,!0)}attachTimeline(t){var r;return this.options.allowFlatten&&(this.options.type="keyframes",this.options.ease="linear",this.initAnimation()),(r=this.driver)==null||r.stop(),t.observe(this)}};function xs(e){var t;for(let r=1;r<e.length;r++)(t=e[r])!=null||(e[r]=e[r-1])}var rt=e=>e*180/Math.PI,kn=e=>{let t=rt(Math.atan2(e[1],e[0]));return Ln(t)},nu={x:4,y:5,translateX:4,translateY:5,scaleX:0,scaleY:3,scale:e=>(Math.abs(e[0])+Math.abs(e[3]))/2,rotate:kn,rotateZ:kn,skewX:e=>rt(Math.atan(e[1])),skewY:e=>rt(Math.atan(e[2])),skew:e=>(Math.abs(e[1])+Math.abs(e[2]))/2},Ln=e=>(e=e%360,e<0&&(e+=360),e),ys=kn,vs=e=>Math.sqrt(e[0]*e[0]+e[1]*e[1]),bs=e=>Math.sqrt(e[4]*e[4]+e[5]*e[5]),iu={x:12,y:13,z:14,translateX:12,translateY:13,translateZ:14,scaleX:vs,scaleY:bs,scale:e=>(vs(e)+bs(e))/2,rotateX:e=>Ln(rt(Math.atan2(e[6],e[5]))),rotateY:e=>Ln(rt(Math.atan2(-e[2],e[0]))),rotateZ:ys,rotate:ys,skewX:e=>rt(Math.atan(e[4])),skewY:e=>rt(Math.atan(e[1])),skew:e=>(Math.abs(e[1])+Math.abs(e[4]))/2};function oo(e){return e.includes("scale")?1:0}function no(e,t){if(!e||e==="none")return oo(t);let r=e.match(/^matrix3d\(([-\d.e\s,]+)\)$/u),o,n;if(r)o=iu,n=r;else{let a=e.match(/^matrix\(([-\d.e\s,]+)\)$/u);o=nu,n=a}if(!n)return oo(t);let s=o[t],i=n[1].split(",").map(su);return typeof s=="function"?s(i):i[s]}var ws=(e,t)=>{let{transform:r="none"}=getComputedStyle(e);return no(r,t)};function su(e){return parseFloat(e.trim())}var Ve=["transformPerspective","x","y","z","translateX","translateY","translateZ","scale","scaleX","scaleY","rotate","rotateX","rotateY","rotateZ","skew","skewX","skewY"],he=new Set([...Ve,"pathRotation"]);var In=e=>e===Te||e===S,au=new Set(["x","y","z"]),lu=Ve.filter(e=>!au.has(e));function Ts(e){let t=[];return lu.forEach(r=>{let o=e.getValue(r);o!==void 0&&(t.push([r,o.get()]),o.set(r.startsWith("scale")?1:0))}),t}var Le={width:({x:e},{paddingLeft:t="0",paddingRight:r="0",boxSizing:o})=>{let n=e.max-e.min;return o==="border-box"?n:n-parseFloat(t)-parseFloat(r)},height:({y:e},{paddingTop:t="0",paddingBottom:r="0",boxSizing:o})=>{let n=e.max-e.min;return o==="border-box"?n:n-parseFloat(t)-parseFloat(r)},top:(e,{top:t})=>parseFloat(t),left:(e,{left:t})=>parseFloat(t),bottom:({y:e},{top:t})=>parseFloat(t)+(e.max-e.min),right:({x:e},{left:t})=>parseFloat(t)+(e.max-e.min),x:(e,{transform:t})=>no(t,"x"),y:(e,{transform:t})=>no(t,"y")};Le.translateX=Le.x;Le.translateY=Le.y;var ot=new Set,On=!1,Bn=!1,Fn=!1;function Ss(){if(Bn){let e=Array.from(ot).filter(o=>o.needsMeasurement),t=new Set(e.map(o=>o.element)),r=new Map;t.forEach(o=>{let n=Ts(o);n.length&&(r.set(o,n),o.render())}),e.forEach(o=>o.measureInitialState()),t.forEach(o=>{o.render();let n=r.get(o);n&&n.forEach(([s,i])=>{var a;(a=o.getValue(s))==null||a.set(i)})}),e.forEach(o=>o.measureEndState()),e.forEach(o=>{o.suspendedScrollY!==void 0&&window.scrollTo(0,o.suspendedScrollY)})}Bn=!1,On=!1,ot.forEach(e=>e.complete(Fn)),ot.clear()}function Vs(){ot.forEach(e=>{e.readKeyframes(),e.needsMeasurement&&(Bn=!0)})}function Ps(){Fn=!0,Vs(),Ss(),Fn=!1}var Ke=class{constructor(t,r,o,n,s,i=!1){this.state="pending",this.isAsync=!1,this.needsMeasurement=!1,this.unresolvedKeyframes=[...t],this.onComplete=r,this.name=o,this.motionValue=n,this.element=s,this.isAsync=i}scheduleResolve(){this.state="scheduled",this.isAsync?(ot.add(this),On||(On=!0,A.read(Vs),A.resolveKeyframes(Ss))):(this.readKeyframes(),this.complete())}readKeyframes(){let{unresolvedKeyframes:t,name:r,element:o,motionValue:n}=this;if(t[0]===null){let s=n==null?void 0:n.get(),i=t[t.length-1];if(s!==void 0)t[0]=s;else if(o&&r){let a=o.readValue(r,i);a!=null&&(t[0]=a)}t[0]===void 0&&(t[0]=i),n&&s===void 0&&n.set(t[0])}xs(t)}setFinalKeyframe(){}measureInitialState(){}renderEndStyles(){}measureEndState(){}complete(t=!1){this.state="complete",this.onComplete(this.unresolvedKeyframes,this.finalKeyframe,t),ot.delete(this)}cancel(){this.state==="scheduled"&&(ot.delete(this),this.state="pending")}resume(){this.state==="pending"&&this.scheduleResolve()}};var Cs=e=>e.startsWith("--");function io(e,t,r){Cs(t)?e.style.setProperty(t,r):e.style[t]=r}var Es={};function so(e,t){let r=Yt(e);return()=>{var o;return(o=Es[t])!=null?o:r()}}var As=so(()=>window.ScrollTimeline!==void 0,"scrollTimeline");var ao=so(()=>{try{document.createElement("div").animate({opacity:0},{easing:"linear(0, 1)"})}catch(e){return!1}return!0},"linearEasing");var nt=([e,t,r,o])=>`cubic-bezier(${e}, ${t}, ${r}, ${o})`;var Nn={linear:"linear",ease:"ease",easeIn:"ease-in",easeOut:"ease-out",easeInOut:"ease-in-out",circIn:nt([0,.65,.55,1]),circOut:nt([.55,0,1,.45]),backIn:nt([.31,.01,.66,-.59]),backOut:nt([.33,1.53,.69,.99])};function jn(e,t){if(e)return typeof e=="function"?ao()?eo(e,t):"ease-out":rr(e)?nt(e):Array.isArray(e)?e.map(r=>jn(r,t)||Nn.easeOut):Nn[e]}function Ms(e,t,r,{delay:o=0,duration:n=300,repeat:s=0,repeatType:i="loop",ease:a="easeOut",times:c}={},u=void 0){let l={[t]:r};c&&(l.offset=c);let f=jn(a,n);Array.isArray(f)&&(l.easing=f);let m={delay:o,duration:n,easing:Array.isArray(f)?"linear":f,fill:"both",iterations:s+1,direction:i==="reverse"?"alternate":"normal"};return u&&(m.pseudoElement=u),e.animate(l,m)}function lo(e){return typeof e=="function"&&"applyToOptions"in e}function Ds({type:e,...t}){var r,o;return lo(e)&&ao()?e.applyToOptions(t):((r=t.duration)!=null||(t.duration=300),(o=t.ease)!=null||(t.ease="easeOut"),t)}var Et=class extends He{constructor(t){if(super(),this.finishedTime=null,this.isStopped=!1,this.manualStartTime=null,!t)return;let{element:r,name:o,keyframes:n,pseudoElement:s,allowFlatten:i=!1,finalKeyframe:a,onComplete:c}=t;this.isPseudoElement=!!s,this.allowFlatten=i,this.options=t,ie(typeof t.type!="string",`Mini animate() doesn't support "type" as a string.`,"mini-spring");let u=Ds(t);this.animation=Ms(r,o,n,u,s),u.autoplay===!1&&this.animation.pause(),this.animation.onfinish=()=>{if(this.finishedTime=this.time,!s){let l=Ue(n,this.options,a,this.speed);this.updateMotionValue&&this.updateMotionValue(l),io(r,o,l),this.animation.cancel()}c==null||c(),this.notifyFinished()}}play(){this.isStopped||(this.manualStartTime=null,this.animation.play(),this.state==="finished"&&this.updateFinished())}pause(){this.animation.pause()}complete(){var t,r;(r=(t=this.animation).finish)==null||r.call(t)}cancel(){try{this.animation.cancel()}catch(t){}}stop(){if(this.isStopped)return;this.isStopped=!0;let{state:t}=this;t==="idle"||t==="finished"||(this.updateMotionValue?this.updateMotionValue():this.commitStyles(),this.isPseudoElement||this.cancel())}commitStyles(){var r,o,n;let t=(r=this.options)==null?void 0:r.element;!this.isPseudoElement&&(t!=null&&t.isConnected)&&((n=(o=this.animation).commitStyles)==null||n.call(o))}get duration(){var r,o;let t=((o=(r=this.animation.effect)==null?void 0:r.getComputedTiming)==null?void 0:o.call(r).duration)||0;return Z(Number(t))}get iterationDuration(){let{delay:t=0}=this.options||{};return this.duration+Z(t)}get time(){return Z(Number(this.animation.currentTime)||0)}set time(t){let r=this.finishedTime!==null;this.manualStartTime=null,this.finishedTime=null,this.animation.currentTime=H(t),r&&this.animation.pause()}get speed(){return this.animation.playbackRate}set speed(t){t<0&&(this.finishedTime=null),this.animation.playbackRate=t}get state(){return this.finishedTime!==null?"finished":this.animation.playState}get startTime(){var t;return(t=this.manualStartTime)!=null?t:Number(this.animation.startTime)}set startTime(t){this.manualStartTime=this.animation.startTime=t}attachTimeline({timeline:t,rangeStart:r,rangeEnd:o,observe:n}){var s;return this.allowFlatten&&((s=this.animation.effect)==null||s.updateTiming({easing:"linear"})),this.animation.onfinish=null,t&&As()?(this.animation.timeline=t,r&&(this.animation.rangeStart=r),o&&(this.animation.rangeEnd=o),j):n(this)}};var Rs={anticipate:Zt,backInOut:qt,circInOut:er};function cu(e){return e in Rs}function ks(e){typeof e.ease=="string"&&cu(e.ease)&&(e.ease=Rs[e.ease])}var zn=10,co=class extends Et{constructor(t){ks(t),ro(t),super(t),t.startTime!==void 0&&t.autoplay!==!1&&(this.startTime=t.startTime),this.options=t}updateMotionValue(t){let{motionValue:r,onUpdate:o,onComplete:n,element:s,...i}=this.options;if(!r)return;if(t!==void 0){r.set(t);return}let a=new ke({...i,autoplay:!1}),c=Math.max(zn,z.now()-this.startTime),u=Y(0,zn,c-zn),l=a.sample(c).value,{name:f}=this.options;s&&f&&io(s,f,l),r.setWithVelocity(a.sample(Math.max(0,c-u)).value,l,u),a.stop()}};var Gn=(e,t)=>t==="zIndex"?!1:!!(typeof e=="number"||Array.isArray(e)||typeof e=="string"&&(X.test(e)||e==="0")&&!e.startsWith("url("));function uu(e){let t=e[0];if(e.length===1)return!0;for(let r=0;r<e.length;r++)if(e[r]!==t)return!0}function Ls(e,t,r,o){let n=e[0];if(n===null)return!1;if(t==="display"||t==="visibility")return!0;let s=e[e.length-1],i=Gn(n,t),a=Gn(s,t);return Me(i===a,`You are trying to animate ${t} from "${n}" to "${s}". "${i?s:n}" is not an animatable value.`,"value-not-animatable"),!i||!a?!1:uu(e)||(r==="spring"||lo(r))&&o}function cr(e){e.duration=0,e.type="keyframes"}var uo=new Set(["opacity","clipPath","filter","transform","backgroundColor"]);var fu=/^(?:oklch|oklab|lab|lch|color|color-mix|light-dark)\(/;function Is(e){for(let t=0;t<e.length;t++)if(typeof e[t]=="string"&&fu.test(e[t]))return!0;return!1}var mu=new Set(["color","backgroundColor","outlineColor","fill","stroke","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor"]),pu=Yt(()=>Object.hasOwnProperty.call(Element.prototype,"animate"));function Os(e){var f;let{motionValue:t,name:r,repeatDelay:o,repeatType:n,damping:s,type:i,keyframes:a}=e,c=(f=t==null?void 0:t.owner)==null?void 0:f.current;if(!(c instanceof HTMLElement)&&!(c instanceof SVGElement))return!1;let{onUpdate:u,transformTemplate:l}=t.owner.getProps();return pu()&&r&&(uo.has(r)||mu.has(r)&&Is(a))&&(r!=="transform"||!l)&&!u&&!o&&n!=="mirror"&&s!==0&&i!=="inertia"}var du=40,fo=class extends He{constructor({autoplay:t=!0,delay:r=0,type:o="keyframes",repeat:n=0,repeatDelay:s=0,repeatType:i="loop",keyframes:a,name:c,motionValue:u,element:l,...f}){var d;super(),this.stop=()=>{var h,x;this._animation&&(this._animation.stop(),(h=this.stopTimeline)==null||h.call(this)),(x=this.keyframeResolver)==null||x.cancel()},this.createdAt=z.now();let m={autoplay:t,delay:r,type:o,repeat:n,repeatDelay:s,repeatType:i,name:c,motionValue:u,element:l,...f},p=(l==null?void 0:l.KeyframeResolver)||Ke;this.keyframeResolver=new p(a,(h,x,v)=>this.onKeyframesResolved(h,x,m,!v),c,u,l),(d=this.keyframeResolver)==null||d.scheduleResolve()}onKeyframesResolved(t,r,o,n){var v,b;this.keyframeResolver=void 0;let{name:s,type:i,velocity:a,delay:c,isHandoff:u,onUpdate:l}=o;this.resolvedAt=z.now();let f=!0;Ls(t,s,i,a)||(f=!1,(te.instantAnimations||!c)&&(l==null||l(Ue(t,o,r))),t[0]=t[t.length-1],cr(o),o.repeat=0);let p={startTime:n?this.resolvedAt?this.resolvedAt-this.createdAt>du?this.resolvedAt:this.createdAt:this.createdAt:void 0,finalKeyframe:r,...o,keyframes:t},d=f&&!u&&Os(p),h=(b=(v=p.motionValue)==null?void 0:v.owner)==null?void 0:b.current,x;if(d)try{x=new co({...p,element:h})}catch(w){x=new ke(p)}else x=new ke(p);x.finished.then(()=>{this.notifyFinished()}).catch(j),this.pendingTimeline&&(this.stopTimeline=x.attachTimeline(this.pendingTimeline),this.pendingTimeline=void 0),this._animation=x}get finished(){return this._animation?this.animation.finished:this._finished}then(t,r){return this.finished.finally(t).then(()=>{})}get animation(){var t;return this._animation||((t=this.keyframeResolver)==null||t.resume(),Ps()),this._animation}get duration(){return this.animation.duration}get iterationDuration(){return this.animation.iterationDuration}get time(){return this.animation.time}set time(t){this.animation.time=t}get speed(){return this.animation.speed}get state(){return this.animation.state}set speed(t){this.animation.speed=t}get startTime(){return this.animation.startTime}attachTimeline(t){return this._animation?this.stopTimeline=this.animation.attachTimeline(t):this.pendingTimeline=t,()=>this.stop()}play(){this.animation.play()}pause(){this.animation.pause()}complete(){this.animation.complete()}cancel(){var t;this._animation&&this.animation.cancel(),(t=this.keyframeResolver)==null||t.cancel()}};function mo(e,t,r,o=0,n=1){let s=Array.from(e).sort((u,l)=>u.sortNodePosition(l)).indexOf(t),i=e.size,a=(i-1)*o;return typeof r=="function"?r(s,i):n===1?s*o:a-s*o}var Bs=30,hu=e=>!isNaN(parseFloat(e)),Fs={current:void 0},Wn=class{constructor(t,r={}){this.canTrackVelocity=null,this.events={},this.updateAndNotify=o=>{var s;let n=z.now();if(this.updatedAt!==n&&this.setPrevFrameValue(),this.prev=this.current,this.setCurrent(o),this.current!==this.prev&&((s=this.events.change)==null||s.notify(this.current),this.dependents))for(let i of this.dependents)i.dirty()},this.hasAnimated=!1,this.setCurrent(t),this.owner=r.owner}setCurrent(t){this.current=t,this.updatedAt=z.now(),this.canTrackVelocity===null&&t!==void 0&&(this.canTrackVelocity=hu(this.current))}setPrevFrameValue(t=this.current){this.prevFrameValue=t,this.prevUpdatedAt=this.updatedAt}onChange(t){return this.on("change",t)}on(t,r){this.events[t]||(this.events[t]=new De);let o=this.events[t].add(r);return t==="change"?()=>{o(),A.read(()=>{this.events.change.getSize()||this.stop()})}:o}clearListeners(){for(let t in this.events)this.events[t].clear()}attach(t,r){this.passiveEffect=t,this.stopPassiveEffect=r}set(t){this.passiveEffect?this.passiveEffect(t,this.updateAndNotify):this.updateAndNotify(t)}setWithVelocity(t,r,o){this.set(r),this.prev=void 0,this.prevFrameValue=t,this.prevUpdatedAt=this.updatedAt-o}jump(t,r=!0){this.updateAndNotify(t),this.prev=t,this.prevUpdatedAt=this.prevFrameValue=void 0,r&&this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}dirty(){var t;(t=this.events.change)==null||t.notify(this.current)}addDependent(t){this.dependents||(this.dependents=new Set),this.dependents.add(t)}removeDependent(t){this.dependents&&this.dependents.delete(t)}get(){return Fs.current&&Fs.current.push(this),this.current}getPrevious(){return this.prev}getVelocity(){let t=z.now();if(!this.canTrackVelocity||this.prevFrameValue===void 0||t-this.updatedAt>Bs)return 0;let r=Math.min(this.updatedAt-this.prevUpdatedAt,Bs);return Xt(parseFloat(this.current)-parseFloat(this.prevFrameValue),r)}start(t){return this.stop(),new Promise(r=>{this.hasAnimated=!0,this.animation=t(r),this.events.animationStart&&this.events.animationStart.notify()}).then(()=>{this.events.animationComplete&&this.events.animationComplete.notify(),this.clearAnimation()})}stop(){this.animation&&(this.animation.stop(),this.events.animationCancel&&this.events.animationCancel.notify()),this.clearAnimation()}isAnimating(){return!!this.animation}clearAnimation(){delete this.animation}destroy(){var t,r;(t=this.dependents)==null||t.clear(),(r=this.events.destroy)==null||r.notify(),this.clearListeners(),this.stop(),this.stopPassiveEffect&&this.stopPassiveEffect()}};function be(e,t){return new Wn(e,t)}function po(e,t){if(e!=null&&e.inherit&&t){let{inherit:r,...o}=e;return{...t,...o}}return e}function At(e,t){var o,n;let r=(n=(o=e==null?void 0:e[t])!=null?o:e==null?void 0:e.default)!=null?n:e;return r!==e?po(r,e):r}var gu={type:"spring",stiffness:500,damping:25,restSpeed:10},xu=e=>({type:"spring",stiffness:550,damping:e===0?2*Math.sqrt(550):30,restSpeed:10}),yu={type:"keyframes",duration:.8},vu={type:"keyframes",ease:[.25,.1,.35,1],duration:.3},Ns=(e,{keyframes:t})=>t.length>2?yu:he.has(e)?e.startsWith("scale")?xu(t[1]):gu:vu;var bu=new Set(["when","delay","delayChildren","staggerChildren","staggerDirection","repeat","repeatType","repeatDelay","from","elapsed"]);function js(e){for(let t in e)if(!bu.has(t))return!0;return!1}var it=(e,t,r,o={},n,s)=>i=>{let a=At(o,e)||{},c=a.delay||o.delay||0,{elapsed:u=0}=o;u=u-H(c);let l={keyframes:Array.isArray(r)?r:[null,r],ease:"easeOut",velocity:t.getVelocity(),...a,delay:-u,onUpdate:m=>{t.set(m),a.onUpdate&&a.onUpdate(m)},onComplete:()=>{i(),a.onComplete&&a.onComplete()},name:e,motionValue:t,element:s?void 0:n};js(a)||Object.assign(l,Ns(e,l)),l.duration&&(l.duration=H(l.duration)),l.repeatDelay&&(l.repeatDelay=H(l.repeatDelay)),l.from!==void 0&&(l.keyframes[0]=l.from);let f=!1;if((l.type===!1||l.duration===0&&!l.repeatDelay)&&(cr(l),l.delay===0&&(f=!0)),(te.instantAnimations||te.skipAnimations||n!=null&&n.shouldSkipAnimations||a.skipAnimations)&&(f=!0,cr(l),l.delay=0),l.allowFlatten=!a.type&&!a.ease,f&&!s&&t.get()!==void 0){let m=Ue(l.keyframes,a);if(m!==void 0){A.update(()=>{l.onUpdate(m),l.onComplete()});return}}return a.isSync?new ke(l):new fo(l)};var wu=/^var\(--(?:([\w-]+)|([\w-]+), ?([a-zA-Z\d ()%#.,-]+))\)/u;function Tu(e){let t=wu.exec(e);if(!t)return[,];let[,r,o,n]=t;return[`--${r!=null?r:o}`,n]}var Su=4;function Un(e,t,r=1){ie(r<=Su,`Max CSS variable fallback depth detected in property "${e}". This may indicate a circular fallback dependency.`,"max-css-var-depth");let[o,n]=Tu(e);if(!o)return;let s=window.getComputedStyle(t).getPropertyValue(o);if(s){let i=s.trim();return Kt(i)?parseFloat(i):i}return wt(n)?Un(n,t,r+1):n}function zs(e){let t=[{},{}];return e==null||e.values.forEach((r,o)=>{t[0][o]=r.get(),t[1][o]=r.getVelocity()}),t}function st(e,t,r,o){if(typeof t=="function"){let[n,s]=zs(o);t=t(r!==void 0?r:e.custom,n,s)}if(typeof t=="string"&&(t=e.variants&&e.variants[t]),typeof t=="function"){let[n,s]=zs(o);t=t(r!==void 0?r:e.custom,n,s)}return t}function le(e,t,r){let o=e.getProps();return st(o,t,r!==void 0?r:o.custom,e)}var ho=new Set(["width","height","top","left","right","bottom",...Ve]);var ur=e=>Array.isArray(e);function Vu(e,t,r){e.hasValue(t)?e.getValue(t).set(r):e.addValue(t,be(r))}function Pu(e){return ur(e)?e[e.length-1]||0:e}function Gs(e,t){let r=le(e,t),{transitionEnd:o={},transition:n={},...s}=r||{};s={...s,...o};for(let i in s){let a=Pu(s[i]);Vu(e,i,a)}}var k=e=>!!(e&&e.getVelocity);function Ws(e){return!!(k(e)&&e.add)}function Mt(e,t){let r=e.getValue("willChange");if(Ws(r))return r.add(t);if(!r&&te.WillChange){let o=new te.WillChange("auto");e.addValue("willChange",o),o.add(t)}}function Dt(e){return e.replace(/([A-Z])/g,t=>`-${t.toLowerCase()}`)}var Us="framerAppearId",fr="data-"+Dt(Us);function go(e){return e.props[fr]}function Cu({protectedKeys:e,needsAnimating:t},r){let o=e.hasOwnProperty(r)&&t[r]!==!0;return t[r]=!1,o}function xo(e,t,{delay:r=0,transitionOverride:o,type:n}={}){var d;let{transition:s,transitionEnd:i,...a}=t,c=e.getDefaultTransition();s=s?po(s,c):c;let u=s==null?void 0:s.reduceMotion,l=s==null?void 0:s.skipAnimations;o&&(s=o);let f=[],m=n&&e.animationState&&e.animationState.getState()[n],p=s==null?void 0:s.path;p&&p.animateVisualElement(e,a,s,r,f);for(let h in a){let x=e.getValue(h,(d=e.latestValues[h])!=null?d:null),v=a[h];if(v===void 0||m&&Cu(m,h))continue;let b={delay:r,...At(s||{},h)};l&&(b.skipAnimations=!0);let w=x.get();if(w!==void 0&&!x.isAnimating()&&!Array.isArray(v)&&v===w&&!b.velocity){A.update(()=>x.set(v));continue}let y=!1;if(window.MotionHandoffAnimation){let E=go(e);if(E){let P=window.MotionHandoffAnimation(E,h,A);P!==null&&(b.startTime=P,y=!0)}}Mt(e,h);let T=u!=null?u:e.shouldReduceMotion;x.start(it(h,x,v,T&&ho.has(h)?{type:!1}:b,e,y));let C=x.animation;C&&f.push(C)}if(i){let h=()=>A.update(()=>{i&&Gs(e,i)});f.length?Promise.all(f).then(h):h()}return f}function yo(e,t,r={}){var c;let o=le(e,t,r.type==="exit"?(c=e.presenceContext)==null?void 0:c.custom:void 0),{transition:n=e.getDefaultTransition()||{}}=o||{};r.transitionOverride&&(n=r.transitionOverride);let s=o?()=>Promise.all(xo(e,o,r)):()=>Promise.resolve(),i=e.variantChildren&&e.variantChildren.size?(u=0)=>{let{delayChildren:l=0,staggerChildren:f,staggerDirection:m}=n;return Eu(e,t,u,l,f,m,r)}:()=>Promise.resolve(),{when:a}=n;if(a){let[u,l]=a==="beforeChildren"?[s,i]:[i,s];return u().then(()=>l())}else return Promise.all([s(),i(r.delay)])}function Eu(e,t,r=0,o=0,n=0,s=1,i){let a=[];for(let c of e.variantChildren)c.notify("AnimationStart",t),a.push(yo(c,t,{...i,delay:r+(typeof o=="function"?0:o)+mo(e.variantChildren,c,o,n,s)}).then(()=>c.notify("AnimationComplete",t)));return Promise.all(a)}function Hs(e,t,r={}){e.notify("AnimationStart",t);let o;if(Array.isArray(t)){let n=t.map(s=>yo(e,s,r));o=Promise.all(n)}else if(typeof t=="string")o=yo(e,t,r);else{let n=typeof t=="function"?le(e,t,r.custom):t;o=Promise.all(xo(e,n,r))}return o.then(()=>{e.notify("AnimationComplete",t)})}var Ks={test:e=>e==="auto",parse:e=>e};var vo=e=>t=>t.test(e);var Hn=[Te,S,ee,de,Pn,Vn,Ks],Kn=e=>Hn.find(vo(e));function _s(e){return typeof e=="number"?e===0:e!==null?e==="none"||e==="0"||$t(e):!0}var Au=new Set(["brightness","contrast","saturate","opacity"]);function Mu(e){let[t,r]=e.slice(0,-1).split("(");if(t==="drop-shadow")return e;let[o]=r.match(Tt)||[];if(!o)return e;let n=r.replace(o,""),s=Au.has(t)?1:0;return o!==r&&(s*=100),t+"("+s+n+")"}var Du=/\b([a-z-]*)\(.*?\)/gu,mr={...X,getAnimatableNone:e=>{let t=e.match(Du);return t?t.map(Mu).join(" "):e}};var pr={...X,getAnimatableNone:e=>{let t=X.parse(e);return X.createTransformer(e)(t.map(o=>typeof o=="number"?0:typeof o=="object"?{...o,alpha:1}:o))}};var _n={...Te,transform:Math.round};var $s={rotate:de,pathRotation:de,rotateX:de,rotateY:de,rotateZ:de,scale:ir,scaleX:ir,scaleY:ir,scaleZ:ir,skew:de,skewX:de,skewY:de,distance:S,translateX:S,translateY:S,translateZ:S,x:S,y:S,z:S,perspective:S,transformPerspective:S,opacity:Re,originX:qr,originY:qr,originZ:S};var at={borderWidth:S,borderTopWidth:S,borderRightWidth:S,borderBottomWidth:S,borderLeftWidth:S,borderRadius:S,borderTopLeftRadius:S,borderTopRightRadius:S,borderBottomRightRadius:S,borderBottomLeftRadius:S,width:S,maxWidth:S,height:S,maxHeight:S,top:S,right:S,bottom:S,left:S,inset:S,insetBlock:S,insetBlockStart:S,insetBlockEnd:S,insetInline:S,insetInlineStart:S,insetInlineEnd:S,padding:S,paddingTop:S,paddingRight:S,paddingBottom:S,paddingLeft:S,paddingBlock:S,paddingBlockStart:S,paddingBlockEnd:S,paddingInline:S,paddingInlineStart:S,paddingInlineEnd:S,margin:S,marginTop:S,marginRight:S,marginBottom:S,marginLeft:S,marginBlock:S,marginBlockStart:S,marginBlockEnd:S,marginInline:S,marginInlineStart:S,marginInlineEnd:S,fontSize:S,backgroundPositionX:S,backgroundPositionY:S,...$s,zIndex:_n,fillOpacity:Re,strokeOpacity:Re,numOctaves:_n};var Ru={...at,color:O,backgroundColor:O,outlineColor:O,fill:O,stroke:O,borderColor:O,borderTopColor:O,borderRightColor:O,borderBottomColor:O,borderLeftColor:O,filter:mr,WebkitFilter:mr,mask:pr,WebkitMask:pr},bo=e=>Ru[e];var ku=new Set([mr,pr]);function wo(e,t){let r=bo(e);return ku.has(r)||(r=X),r.getAnimatableNone?r.getAnimatableNone(t):void 0}var Lu=new Set(["auto","none","0"]);function Ys(e,t,r){let o=0,n;for(;o<e.length&&!n;){let s=e[o];typeof s=="string"&&!Lu.has(s)&&We(s).values.length&&(n=e[o]),o++}if(n&&r)for(let s of t)e[s]=wo(r,n)}var To=class extends Ke{constructor(t,r,o,n,s){super(t,r,o,n,s,!0)}readKeyframes(){let{unresolvedKeyframes:t,element:r,name:o}=this;if(!r||!r.current)return;super.readKeyframes();for(let l=0;l<t.length;l++){let f=t[l];if(typeof f=="string"&&(f=f.trim(),wt(f))){let m=Un(f,r.current);m!==void 0&&(t[l]=m),l===t.length-1&&(this.finalKeyframe=f)}}if(this.resolveNoneKeyframes(),!ho.has(o)||t.length!==2)return;let[n,s]=t,i=Kn(n),a=Kn(s),c=Tn(n),u=Tn(s);if(c!==u&&Le[o]){this.needsMeasurement=!0;return}if(i!==a)if(In(i)&&In(a))for(let l=0;l<t.length;l++){let f=t[l];typeof f=="string"&&(t[l]=parseFloat(f))}else Le[o]&&(this.needsMeasurement=!0)}resolveNoneKeyframes(){let{unresolvedKeyframes:t,name:r}=this,o=[];for(let n=0;n<t.length;n++)(t[n]===null||_s(t[n]))&&o.push(n);o.length&&Ys(t,o,r)}measureInitialState(){let{element:t,unresolvedKeyframes:r,name:o}=this;if(!t||!t.current)return;o==="height"&&(this.suspendedScrollY=window.pageYOffset),this.measuredOrigin=Le[o](t.measureViewportBox(),window.getComputedStyle(t.current)),r[0]=this.measuredOrigin;let n=r[r.length-1];n!==void 0&&t.getValue(o,n).jump(n,!1)}measureEndState(){var a;let{element:t,name:r,unresolvedKeyframes:o}=this;if(!t||!t.current)return;let n=t.getValue(r);n&&n.jump(this.measuredOrigin,!1);let s=o.length-1,i=o[s];o[s]=Le[r](t.measureViewportBox(),window.getComputedStyle(t.current)),i!==null&&this.finalKeyframe===void 0&&(this.finalKeyframe=i),(a=this.removedTransforms)!=null&&a.length&&this.removedTransforms.forEach(([c,u])=>{t.getValue(c).set(u)}),this.resolveNoneKeyframes()}};var dr=["borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius"];function So(e,t,r){var o;if(e==null)return[];if(e instanceof EventTarget)return[e];if(typeof e=="string"){let n=document;t&&(n=t.current);let s=(o=r==null?void 0:r[e])!=null?o:n.querySelectorAll(e);return s?Array.from(s):[]}return Array.from(e).filter(n=>n!=null)}var hr=(e,t)=>t&&typeof e=="number"?t.transform(e):e;function Xs(e){return _t(e)&&"offsetHeight"in e&&!("ownerSVGElement"in e)}var{schedule:lt,cancel:Iu}=_r(queueMicrotask,!1);var ge={x:!1,y:!1};function Vo(){return ge.x||ge.y}function $n(e){return e==="x"||e==="y"?ge[e]?null:(ge[e]=!0,()=>{ge[e]=!1}):ge.x||ge.y?null:(ge.x=ge.y=!0,()=>{ge.x=ge.y=!1})}function Po(e,t){let r=So(e),o=new AbortController,n={passive:!0,...t,signal:o.signal};return[r,n,()=>o.abort()]}function Ou(e){return!(e.pointerType==="touch"||Vo())}function Yn(e,t,r={}){let[o,n,s]=Po(e,r);return o.forEach(i=>{let a=!1,c=!1,u,l=()=>{i.removeEventListener("pointerleave",d)},f=x=>{u&&(u(x),u=void 0),l()},m=x=>{a=!1,window.removeEventListener("pointerup",m),window.removeEventListener("pointercancel",m),c&&(c=!1,f(x))},p=()=>{a=!0,window.addEventListener("pointerup",m,n),window.addEventListener("pointercancel",m,n)},d=x=>{if(x.pointerType!=="touch"){if(a){c=!0;return}f(x)}},h=x=>{if(!Ou(x))return;c=!1;let v=t(i,x);typeof v=="function"&&(u=v,i.addEventListener("pointerleave",d,n))};i.addEventListener("pointerenter",h,n),i.addEventListener("pointerdown",p,n)}),s}var Xn=(e,t)=>t?e===t?!0:Xn(e,t.parentElement):!1;var ct=e=>e.pointerType==="mouse"?typeof e.button!="number"||e.button<=0:e.isPrimary!==!1;var Bu=new Set(["BUTTON","INPUT","SELECT","TEXTAREA","A"]);function qn(e){return Bu.has(e.tagName)||e.isContentEditable===!0}var Fu=new Set(["INPUT","SELECT","TEXTAREA"]);function Zn(e){return Fu.has(e.tagName)||e.isContentEditable===!0}var Rt=new WeakSet;function qs(e){return t=>{t.key==="Enter"&&e(t)}}function Jn(e,t){e.dispatchEvent(new PointerEvent("pointer"+t,{isPrimary:!0,bubbles:!0}))}var Zs=(e,t)=>{let r=e.currentTarget;if(!r)return;let o=qs(()=>{if(Rt.has(r))return;Jn(r,"down");let n=qs(()=>{Jn(r,"up")}),s=()=>Jn(r,"cancel");r.addEventListener("keyup",n,t),r.addEventListener("blur",s,t)});r.addEventListener("keydown",o,t),r.addEventListener("blur",()=>r.removeEventListener("keydown",o),t)};function Js(e){return ct(e)&&!Vo()}var Qs=new WeakSet;function Qn(e,t,r={}){let[o,n,s]=Po(e,r),i=a=>{let c=a.currentTarget;if(!Js(a)||Qs.has(a))return;Rt.add(c),r.stopPropagation&&Qs.add(a);let u=t(c,a),l={...n,capture:!0},f=(d,h)=>{window.removeEventListener("pointerup",m,l),window.removeEventListener("pointercancel",p,l),Rt.has(c)&&Rt.delete(c),Js(d)&&typeof u=="function"&&u(d,{success:h})},m=d=>{f(d,c===window||c===document||r.useGlobalTarget||Xn(c,d.target))},p=d=>{f(d,!1)};window.addEventListener("pointerup",m,l),window.addEventListener("pointercancel",p,l)};return o.forEach(a=>{(r.useGlobalTarget?window:a).addEventListener("pointerdown",i,n),Xs(a)&&(a.addEventListener("focus",u=>Zs(u,n)),!qn(a)&&!a.hasAttribute("tabindex")&&(a.tabIndex=0))}),s}function kt(e){return _t(e)&&"ownerSVGElement"in e}var Co=new WeakMap,_e,ea=(e,t,r)=>(o,n)=>n&&n[0]?n[0][e+"Size"]:kt(o)&&"getBBox"in o?o.getBBox()[t]:o[r],Nu=ea("inline","width","offsetWidth"),ju=ea("block","height","offsetHeight");function zu({target:e,borderBoxSize:t}){var r;(r=Co.get(e))==null||r.forEach(o=>{o(e,{get width(){return Nu(e,t)},get height(){return ju(e,t)}})})}function Gu(e){e.forEach(zu)}function Wu(){typeof ResizeObserver!="undefined"&&(_e=new ResizeObserver(Gu))}function ta(e,t){_e||Wu();let r=So(e);return r.forEach(o=>{let n=Co.get(o);n||(n=new Set,Co.set(o,n)),n.add(t),_e==null||_e.observe(o)}),()=>{r.forEach(o=>{let n=Co.get(o);n==null||n.delete(t),n!=null&&n.size||_e==null||_e.unobserve(o)})}}var Eo=new Set,Lt;function Uu(){Lt=()=>{let e={get width(){return window.innerWidth},get height(){return window.innerHeight}};Eo.forEach(t=>t(e))},window.addEventListener("resize",Lt)}function ra(e){return Eo.add(e),Lt||Uu(),()=>{Eo.delete(e),!Eo.size&&typeof Lt=="function"&&(window.removeEventListener("resize",Lt),Lt=void 0)}}function Ao(e,t){return typeof e=="function"?ra(e):ta(e,t)}var ut={value:null,addProjectionMetrics:null};function oa(e){return kt(e)&&e.tagName==="svg"}var Hu=[...Hn,O,X],na=e=>Hu.find(vo(e));var ei=()=>({translate:0,scale:1,origin:0,originPoint:0}),$e=()=>({x:ei(),y:ei()}),ti=()=>({min:0,max:0}),B=()=>({x:ti(),y:ti()});var ia=new WeakMap;function Ie(e){return e!==null&&typeof e=="object"&&typeof e.start=="function"}function Pe(e){return typeof e=="string"||Array.isArray(e)}var Mo=["animate","whileInView","whileFocus","whileHover","whileTap","whileDrag","exit"],gr=["initial",...Mo];function Ye(e){return Ie(e.animate)||gr.some(t=>Pe(e[t]))}function xr(e){return!!(Ye(e)||e.variants)}function sa(e,t,r){for(let o in t){let n=t[o],s=r[o];if(k(n))e.addValue(o,n);else if(k(s))e.addValue(o,be(n,{owner:e}));else if(s!==n)if(e.hasValue(o)){let i=e.getValue(o);i.liveStyle===!0?i.jump(n):i.hasAnimated||i.set(n)}else{let i=e.getStaticValue(o);e.addValue(o,be(i!==void 0?i:n,{owner:e}))}}for(let o in r)t[o]===void 0&&e.removeValue(o);return t}var yr={current:null},Do={current:!1};var Ku=typeof window!="undefined";function aa(){if(Do.current=!0,!!Ku)if(window.matchMedia){let e=window.matchMedia("(prefers-reduced-motion)"),t=()=>yr.current=e.matches;e.addEventListener("change",t),t()}else yr.current=!1}var la=["AnimationStart","AnimationComplete","Update","BeforeLayoutMeasure","LayoutMeasure","LayoutAnimationStart","LayoutAnimationComplete"],Ro={};function br(e){Ro=e}function ri(){return Ro}var vr=class{scrapeMotionValuesFromProps(t,r,o){return{}}constructor({parent:t,props:r,presenceContext:o,reducedMotionConfig:n,skipAnimations:s,blockInitialAnimation:i,visualState:a},c={}){this.current=null,this.children=new Set,this.isVariantNode=!1,this.isControllingVariants=!1,this.shouldReduceMotion=null,this.shouldSkipAnimations=!1,this.values=new Map,this.KeyframeResolver=Ke,this.features={},this.valueSubscriptions=new Map,this.prevMotionValues={},this.hasBeenMounted=!1,this.events={},this.propEventSubscriptions={},this.notifyUpdate=()=>this.notify("Update",this.latestValues),this.render=()=>{this.current&&(this.triggerBuild(),this.renderInstance(this.current,this.renderState,this.props.style,this.projection))},this.renderScheduledAt=0,this.scheduleRender=()=>{let p=z.now();this.renderScheduledAt<p&&(this.renderScheduledAt=p,A.render(this.render,!1,!0))};let{latestValues:u,renderState:l}=a;this.latestValues=u,this.baseTarget={...u},this.initialValues=r.initial?{...u}:{},this.renderState=l,this.parent=t,this.props=r,this.presenceContext=o,this.depth=t?t.depth+1:0,this.reducedMotionConfig=n,this.skipAnimationsConfig=s,this.options=c,this.blockInitialAnimation=!!i,this.isControllingVariants=Ye(r),this.isVariantNode=xr(r),this.isVariantNode&&(this.variantChildren=new Set),this.manuallyAnimateOnMount=!!(t&&t.current);let{willChange:f,...m}=this.scrapeMotionValuesFromProps(r,{},this);for(let p in m){let d=m[p];u[p]!==void 0&&k(d)&&d.set(u[p])}}mount(t){var r,o,n;if(this.hasBeenMounted)for(let s in this.initialValues)(r=this.values.get(s))==null||r.jump(this.initialValues[s]),this.latestValues[s]=this.initialValues[s];this.current=t,ia.set(t,this),this.projection&&!this.projection.instance&&this.projection.mount(t),this.parent&&this.isVariantNode&&!this.isControllingVariants&&(this.removeFromVariantTree=this.parent.addVariantChild(this)),this.values.forEach((s,i)=>this.bindToMotionValue(i,s)),this.reducedMotionConfig==="never"?this.shouldReduceMotion=!1:this.reducedMotionConfig==="always"?this.shouldReduceMotion=!0:(Do.current||aa(),this.shouldReduceMotion=yr.current),this.shouldSkipAnimations=(o=this.skipAnimationsConfig)!=null?o:!1,(n=this.parent)==null||n.addChild(this),this.update(this.props,this.presenceContext),this.hasBeenMounted=!0}unmount(){var t;this.projection&&this.projection.unmount(),se(this.notifyUpdate),se(this.render),this.valueSubscriptions.forEach(r=>r()),this.valueSubscriptions.clear(),this.removeFromVariantTree&&this.removeFromVariantTree(),(t=this.parent)==null||t.removeChild(this);for(let r in this.events)this.events[r].clear();for(let r in this.features){let o=this.features[r];o&&(o.unmount(),o.isMounted=!1)}this.current=null}addChild(t){var r;this.children.add(t),(r=this.enteringChildren)!=null||(this.enteringChildren=new Set),this.enteringChildren.add(t)}removeChild(t){this.children.delete(t),this.enteringChildren&&this.enteringChildren.delete(t)}bindToMotionValue(t,r){if(this.valueSubscriptions.has(t)&&this.valueSubscriptions.get(t)(),r.accelerate&&uo.has(t)&&this.current instanceof HTMLElement){let{factory:i,keyframes:a,times:c,ease:u,duration:l}=r.accelerate,f=new Et({element:this.current,name:t,keyframes:a,times:c,ease:u,duration:H(l)}),m=i(f);this.valueSubscriptions.set(t,()=>{m(),f.cancel()});return}let o=he.has(t);o&&this.onBindTransform&&this.onBindTransform();let n=r.on("change",i=>{this.latestValues[t]=i,this.props.onUpdate&&A.preRender(this.notifyUpdate),o&&this.projection&&(this.projection.isTransformDirty=!0),this.scheduleRender()}),s;typeof window!="undefined"&&window.MotionCheckAppearSync&&(s=window.MotionCheckAppearSync(this,t,r)),this.valueSubscriptions.set(t,()=>{n(),s&&s()})}sortNodePosition(t){return!this.current||!this.sortInstanceNodePosition||this.type!==t.type?0:this.sortInstanceNodePosition(this.current,t.current)}updateFeatures(){let t="animation";for(t in Ro){let r=Ro[t];if(!r)continue;let{isEnabled:o,Feature:n}=r;if(!this.features[t]&&n&&o(this.props)&&(this.features[t]=new n(this)),this.features[t]){let s=this.features[t];s.isMounted?s.update():(s.mount(),s.isMounted=!0)}}}triggerBuild(){this.build(this.renderState,this.latestValues,this.props)}measureViewportBox(){return this.current?this.measureInstanceViewportBox(this.current,this.props):B()}getStaticValue(t){return this.latestValues[t]}setStaticValue(t,r){this.latestValues[t]=r}update(t,r){(t.transformTemplate||this.props.transformTemplate)&&this.scheduleRender(),this.prevProps=this.props,this.props=t,this.prevPresenceContext=this.presenceContext,this.presenceContext=r;for(let o=0;o<la.length;o++){let n=la[o];this.propEventSubscriptions[n]&&(this.propEventSubscriptions[n](),delete this.propEventSubscriptions[n]);let s="on"+n,i=t[s];i&&(this.propEventSubscriptions[n]=this.on(n,i))}this.prevMotionValues=sa(this,this.scrapeMotionValuesFromProps(t,this.prevProps||{},this),this.prevMotionValues),this.handleChildMotionValue&&this.handleChildMotionValue()}getProps(){return this.props}getVariant(t){return this.props.variants?this.props.variants[t]:void 0}getDefaultTransition(){return this.props.transition}getTransformPagePoint(){return this.props.transformPagePoint}getClosestVariantNode(){return this.isVariantNode?this:this.parent?this.parent.getClosestVariantNode():void 0}addVariantChild(t){let r=this.getClosestVariantNode();if(r)return r.variantChildren&&r.variantChildren.add(t),()=>r.variantChildren.delete(t)}addValue(t,r){let o=this.values.get(t);r!==o&&(o&&this.removeValue(t),this.bindToMotionValue(t,r),this.values.set(t,r),this.latestValues[t]=r.get())}removeValue(t){this.values.delete(t);let r=this.valueSubscriptions.get(t);r&&(r(),this.valueSubscriptions.delete(t)),delete this.latestValues[t],this.removeValueFromRenderState(t,this.renderState)}hasValue(t){return this.values.has(t)}getValue(t,r){if(this.props.values&&this.props.values[t])return this.props.values[t];let o=this.values.get(t);return o===void 0&&r!==void 0&&(o=be(r===null?void 0:r,{owner:this}),this.addValue(t,o)),o}readValue(t,r){var n;let o=this.latestValues[t]!==void 0||!this.current?this.latestValues[t]:(n=this.getBaseTargetFromProps(this.props,t))!=null?n:this.readValueFromInstance(this.current,t,this.options);return o!=null&&(typeof o=="string"&&(Kt(o)||$t(o))?o=parseFloat(o):!na(o)&&X.test(r)&&(o=wo(t,r)),this.setBaseTarget(t,k(o)?o.get():o)),k(o)?o.get():o}setBaseTarget(t,r){this.baseTarget[t]=r}getBaseTarget(t){var s;let{initial:r}=this.props,o;if(typeof r=="string"||typeof r=="object"){let i=st(this.props,r,(s=this.presenceContext)==null?void 0:s.custom);i&&(o=i[t])}if(r&&o!==void 0)return o;let n=this.getBaseTargetFromProps(this.props,t);return n!==void 0&&!k(n)?n:this.initialValues[t]!==void 0&&o===void 0?void 0:this.baseTarget[t]}on(t,r){return this.events[t]||(this.events[t]=new De),this.events[t].add(r)}notify(t,...r){this.events[t]&&this.events[t].notify(...r)}scheduleRenderMicrotask(){lt.render(this.render)}};var It=class extends vr{constructor(){super(...arguments),this.KeyframeResolver=To}sortInstanceNodePosition(t,r){return t.compareDocumentPosition(r)&2?1:-1}getBaseTargetFromProps(t,r){let o=t.style;return o?o[r]:void 0}removeValueFromRenderState(t,{vars:r,style:o}){delete r[t],delete o[t]}handleChildMotionValue(){this.childSubscription&&(this.childSubscription(),delete this.childSubscription);let{children:t}=this.props;k(t)&&(this.childSubscription=t.on("change",r=>{this.current&&(this.current.textContent=`${r}`)}))}};var q=class{constructor(t){this.isMounted=!1,this.node=t}update(){}};function wr({top:e,left:t,right:r,bottom:o}){return{x:{min:t,max:r},y:{min:e,max:o}}}function oi({x:e,y:t}){return{top:t.min,right:e.max,bottom:t.max,left:e.min}}function ni(e,t){if(!t)return e;let r=t({x:e.left,y:e.top}),o=t({x:e.right,y:e.bottom});return{top:r.y,left:r.x,bottom:o.y,right:o.x}}function ii(e){return e===void 0||e===1}function ko({scale:e,scaleX:t,scaleY:r}){return!ii(e)||!ii(t)||!ii(r)}function Oe(e){return ko(e)||si(e)||e.z||e.rotate||e.rotateX||e.rotateY||e.skewX||e.skewY}function si(e){return ca(e.x)||ca(e.y)}function ca(e){return e&&e!=="0%"}function Tr(e,t,r){let o=e-r,n=t*o;return r+n}function ua(e,t,r,o,n){return n!==void 0&&(e=Tr(e,n,o)),Tr(e,r,o)+t}function ai(e,t=0,r=1,o,n){e.min=ua(e.min,t,r,o,n),e.max=ua(e.max,t,r,o,n)}function li(e,{x:t,y:r}){ai(e.x,t.translate,t.scale,t.originPoint),ai(e.y,r.translate,r.scale,r.originPoint)}var fa=.999999999999,ma=1.0000000000001;function ha(e,t,r,o=!1){var a;let n=r.length;if(!n)return;t.x=t.y=1;let s,i;for(let c=0;c<n;c++){s=r[c],i=s.projectionDelta;let{visualElement:u}=s.options;u&&u.props.style&&u.props.style.display==="contents"||(o&&s.options.layoutScroll&&s.scroll&&s!==s.root&&(xe(e.x,-s.scroll.offset.x),xe(e.y,-s.scroll.offset.y)),i&&(t.x*=i.x.scale,t.y*=i.y.scale,li(e,i)),o&&Oe(s.latestValues)&&Sr(e,s.latestValues,(a=s.layout)==null?void 0:a.layoutBox))}t.x<ma&&t.x>fa&&(t.x=1),t.y<ma&&t.y>fa&&(t.y=1)}function xe(e,t){e.min+=t,e.max+=t}function pa(e,t,r,o,n=.5){let s=D(e.min,e.max,n);ai(e,t,r,s,o)}function da(e,t){return typeof e=="string"?parseFloat(e)/100*(t.max-t.min):e}function Sr(e,t,r){let o=r!=null?r:e;pa(e.x,da(t.x,o.x),t.scaleX,t.scale,t.originX),pa(e.y,da(t.y,o.y),t.scaleY,t.scale,t.originY)}function Lo(e,t){return wr(ni(e.getBoundingClientRect(),t))}function ci(e,t,r){let o=Lo(e,r),{scroll:n}=t;return n&&(xe(o.x,n.offset.x),xe(o.y,n.offset.y)),o}var _u={x:"translateX",y:"translateY",z:"translateZ",transformPerspective:"perspective"},$u=Ve.length;function ga(e,t,r){let o="",n=!0;for(let i=0;i<$u;i++){let a=Ve[i],c=e[a];if(c===void 0)continue;let u=!0;if(typeof c=="number")u=c===(a.startsWith("scale")?1:0);else{let l=parseFloat(c);u=a.startsWith("scale")?l===1:l===0}if(!u||r){let l=hr(c,at[a]);if(!u){n=!1;let f=_u[a]||a;o+=`${f}(${l}) `}r&&(t[a]=l)}}let s=e.pathRotation;return s&&(n=!1,o+=`rotate(${hr(s,at.pathRotation)}) `),o=o.trim(),r?o=r(t,n?"":o):n&&(o="none"),o}function ft(e,t,r){let{style:o,vars:n,transformOrigin:s}=e,i=!1,a=!1;for(let c in t){let u=t[c];if(he.has(c)){i=!0;continue}else if(Yr(c)){n[c]=u;continue}else{let l=hr(u,at[c]);c.startsWith("origin")?(a=!0,s[c]=l):o[c]=l}}if(t.transform||(i||r?o.transform=ga(t,e.transform,r):o.transform&&(o.transform="none")),a){let{originX:c="50%",originY:u="50%",originZ:l=0}=s;o.transformOrigin=`${c} ${u} ${l}`}}function Io(e,{style:t,vars:r},o,n){let s=e.style,i;for(i in t)s[i]=t[i];n==null||n.applyProjectionStyles(s,o);for(i in r)s.setProperty(i,r[i])}function xa(e,t){return t.max===t.min?0:e/(t.max-t.min)*100}var Ot={correct:(e,t)=>{if(!t.target)return e;if(typeof e=="string")if(S.test(e))e=parseFloat(e);else return e;let r=xa(e,t.target.x),o=xa(e,t.target.y);return`${r}% ${o}%`}};var ya={correct:(e,{treeScale:t,projectionDelta:r})=>{let o=e,n=X.parse(e);if(n.length>5)return o;let s=X.createTransformer(e),i=typeof n[0]!="number"?1:0,a=r.x.scale*t.x,c=r.y.scale*t.y;n[0+i]/=a,n[1+i]/=c;let u=D(a,c,.5);return typeof n[2+i]=="number"&&(n[2+i]/=u),typeof n[3+i]=="number"&&(n[3+i]/=u),s(n)}};var Vr={borderRadius:{...Ot,applyTo:[...dr]},borderTopLeftRadius:Ot,borderTopRightRadius:Ot,borderBottomLeftRadius:Ot,borderBottomRightRadius:Ot,boxShadow:ya};function Pr(e,{layout:t,layoutId:r}){return he.has(e)||e.startsWith("origin")||(t||r!==void 0)&&(!!Vr[e]||e==="opacity")}function mt(e,t,r){var i;let o=e.style,n=t==null?void 0:t.style,s={};if(!o)return s;for(let a in o)(k(o[a])||n&&k(n[a])||Pr(a,e)||((i=r==null?void 0:r.getValue(a))==null?void 0:i.liveStyle)!==void 0)&&(s[a]=o[a]);return s}function Yu(e){return window.getComputedStyle(e)}var Cr=class extends It{constructor(){super(...arguments),this.type="html",this.renderInstance=Io}mount(t){ie(!!t.style,"motion.create() components must forward their ref to a HTML or SVG element","custom-component-ref"),super.mount(t)}readValueFromInstance(t,r){var o;if(he.has(r))return(o=this.projection)!=null&&o.isProjecting?oo(r):ws(t,r);{let n=Yu(t),s=(Yr(r)?n.getPropertyValue(r):n[r])||0;return typeof s=="string"?s.trim():s}}measureInstanceViewportBox(t,{transformPagePoint:r}){return Lo(t,r)}build(t,r,o){ft(t,r,o.transformTemplate)}scrapeMotionValuesFromProps(t,r,o){return mt(t,r,o)}};var Xu={offset:"stroke-dashoffset",array:"stroke-dasharray"},qu={offset:"strokeDashoffset",array:"strokeDasharray"};function va(e,t,r=1,o=0,n=!0){e.pathLength=1;let s=n?Xu:qu;e[s.offset]=`${-o}`,e[s.array]=`${t} ${r}`}var Zu=["offsetDistance","offsetPath","offsetRotate","offsetAnchor"];function Er(e,{attrX:t,attrY:r,attrScale:o,pathLength:n,pathSpacing:s=1,pathOffset:i=0,...a},c,u,l){var p,d;if(ft(e,a,u),c){e.style.viewBox&&(e.attrs.viewBox=e.style.viewBox);return}e.attrs=e.style,e.style={};let{attrs:f,style:m}=e;f.transform&&(m.transform=f.transform,delete f.transform),(m.transform||f.transformOrigin)&&(m.transformOrigin=(p=f.transformOrigin)!=null?p:"50% 50%",delete f.transformOrigin),m.transform&&(m.transformBox=(d=l==null?void 0:l.transformBox)!=null?d:"fill-box",delete f.transformBox);for(let h of Zu)f[h]!==void 0&&(m[h]=f[h],delete f[h]);t!==void 0&&(f.x=t),r!==void 0&&(f.y=r),o!==void 0&&(f.scale=o),n!==void 0&&va(f,n,s,i,!1)}var Oo=new Set(["baseFrequency","diffuseConstant","kernelMatrix","kernelUnitLength","keySplines","keyTimes","limitingConeAngle","markerHeight","markerWidth","numOctaves","targetX","targetY","surfaceScale","specularConstant","specularExponent","stdDeviation","tableValues","viewBox","gradientTransform","pathLength","startOffset","textLength","lengthAdjust"]);var Ar=e=>typeof e=="string"&&e.toLowerCase()==="svg";function ba(e,t,r,o){Io(e,t,void 0,o);for(let n in t.attrs)e.setAttribute(Oo.has(n)?n:Dt(n),t.attrs[n])}function Mr(e,t,r){let o=mt(e,t,r);for(let n in e)if(k(e[n])||k(t[n])){let s=Ve.indexOf(n)!==-1?"attr"+n.charAt(0).toUpperCase()+n.substring(1):n;o[s]=e[n]}return o}var Dr=class extends It{constructor(){super(...arguments),this.type="svg",this.isSVGTag=!1,this.measureInstanceViewportBox=B}getBaseTargetFromProps(t,r){return t[r]}readValueFromInstance(t,r){if(he.has(r)){let o=bo(r);return o&&o.default||0}return r=Oo.has(r)?r:Dt(r),t.getAttribute(r)}scrapeMotionValuesFromProps(t,r,o){return Mr(t,r,o)}build(t,r,o){Er(t,r,this.isSVGTag,o.transformTemplate,o.style)}renderInstance(t,r,o,n){ba(t,r,o,n)}mount(t){this.isSVGTag=Ar(t.tagName),super.mount(t)}};var Ju=gr.length;function ui(e){if(!e)return;if(!e.isControllingVariants){let r=e.parent?ui(e.parent)||{}:{};return e.props.initial!==void 0&&(r.initial=e.props.initial),r}let t={};for(let r=0;r<Ju;r++){let o=gr[r],n=e.props[o];(Pe(n)||n===!1)&&(t[o]=n)}return t}function fi(e,t){if(!Array.isArray(t))return!1;let r=t.length;if(r!==e.length)return!1;for(let o=0;o<r;o++)if(t[o]!==e[o])return!1;return!0}var Qu=[...Mo].reverse(),ef=Mo.length;function tf(e){return t=>Promise.all(t.map(({animation:r,options:o})=>Hs(e,r,o)))}function mi(e){let t=tf(e),r=wa(),o=!0,n=!1,s=u=>(l,f)=>{var p;let m=le(e,f,u==="exit"?(p=e.presenceContext)==null?void 0:p.custom:void 0);if(m){let{transition:d,transitionEnd:h,...x}=m;l={...l,...x,...h}}return l};function i(u){t=u(e)}function a(u){let{props:l}=e,f=ui(e.parent)||{},m=[],p=new Set,d={},h=1/0;for(let v=0;v<ef;v++){let b=Qu[v],w=r[b],y=l[b]!==void 0?l[b]:f[b],T=Pe(y),C=b===u?w.isActive:null;C===!1&&(h=v);let E=y===f[b]&&y!==l[b]&&T;if(E&&(o||n)&&e.manuallyAnimateOnMount&&(E=!1),w.protectedKeys={...d},!w.isActive&&C===null||!y&&!w.prevProp||Ie(y)||typeof y=="boolean")continue;if(b==="exit"&&w.isActive&&C!==!0){w.prevResolvedValues&&(d={...d,...w.prevResolvedValues});continue}let P=Ta(w.prevProp,y),U=P||b===u&&w.isActive&&!E&&T||v>h&&T,V=!1,I=Array.isArray(y)?y:[y],K=I.reduce(s(b),{});C===!1&&(K={});let{prevResolvedValues:fe={}}=w,M={...fe,...K},L=$=>{U=!0,p.has($)&&(V=!0,p.delete($)),w.needsAnimating[$]=!0;let oe=e.getValue($);oe&&(oe.liveStyle=!1)};for(let $ in M){let oe=K[$],me=fe[$];if(d.hasOwnProperty($))continue;let Fe=!1;ur(oe)&&ur(me)?Fe=!fi(oe,me)||P:Fe=oe!==me,Fe?oe!=null?L($):p.add($):oe!==void 0&&p.has($)?L($):w.protectedKeys[$]=!0}w.prevProp=y,w.prevResolvedValues=K,w.isActive&&(d={...d,...K}),(o||n)&&e.blockInitialAnimation&&(U=!1);let F=E&&P;U&&(!F||V)&&m.push(...I.map($=>{let oe={type:b};if(typeof $=="string"&&(o||n)&&!F&&e.manuallyAnimateOnMount&&e.parent){let{parent:me}=e,Fe=le(me,$);if(me.enteringChildren&&Fe){let{delayChildren:hn}=Fe.transition||{};oe.delay=mo(me.enteringChildren,e,hn)}}return{animation:$,options:oe}}))}if(p.size){let v={};if(typeof l.initial!="boolean"){let b=le(e,Array.isArray(l.initial)?l.initial[0]:l.initial);b&&b.transition&&(v.transition=b.transition)}p.forEach(b=>{let w=e.getBaseTarget(b),y=e.getValue(b);y&&(y.liveStyle=!0),v[b]=w!=null?w:null}),m.push({animation:v})}let x=!!m.length;return o&&(l.initial===!1||l.initial===l.animate)&&!e.manuallyAnimateOnMount&&(x=!1),o=!1,n=!1,x?t(m):Promise.resolve()}function c(u,l){var m;if(r[u].isActive===l)return Promise.resolve();(m=e.variantChildren)==null||m.forEach(p=>{var d;return(d=p.animationState)==null?void 0:d.setActive(u,l)}),r[u].isActive=l;let f=a(u);for(let p in r)r[p].protectedKeys={};return f}return{animateChanges:a,setActive:c,setAnimateFunction:i,getState:()=>r,reset:()=>{r=wa(),n=!0}}}function Ta(e,t){return typeof t=="string"?t!==e:Array.isArray(t)?!fi(t,e):!1}function pt(e=!1){return{isActive:e,protectedKeys:{},needsAnimating:{},prevResolvedValues:{}}}function wa(){return{animate:pt(!0),whileInView:pt(),whileHover:pt(),whileTap:pt(),whileDrag:pt(),whileFocus:pt(),exit:pt()}}function Bo(e,t){e.min=t.min,e.max=t.max}function ye(e,t){Bo(e.x,t.x),Bo(e.y,t.y)}function pi(e,t){e.translate=t.translate,e.scale=t.scale,e.originPoint=t.originPoint,e.origin=t.origin}var Sa=1e-4,rf=1-Sa,of=1+Sa,Va=.01,nf=0-Va,sf=0+Va;function _(e){return e.max-e.min}function xi(e,t,r){return Math.abs(e-t)<=r}function di(e,t,r,o=.5){e.origin=o,e.originPoint=D(t.min,t.max,e.origin),e.scale=_(r)/_(t),e.translate=D(r.min,r.max,e.origin)-e.originPoint,(e.scale>=rf&&e.scale<=of||isNaN(e.scale))&&(e.scale=1),(e.translate>=nf&&e.translate<=sf||isNaN(e.translate))&&(e.translate=0)}function dt(e,t,r,o){di(e.x,t.x,r.x,o?o.originX:void 0),di(e.y,t.y,r.y,o?o.originY:void 0)}function hi(e,t,r,o=0){let n=o?D(r.min,r.max,o):r.min;e.min=n+t.min,e.max=e.min+_(t)}function yi(e,t,r,o){hi(e.x,t.x,r.x,o==null?void 0:o.x),hi(e.y,t.y,r.y,o==null?void 0:o.y)}function gi(e,t,r,o=0){let n=o?D(r.min,r.max,o):r.min;e.min=t.min-n,e.max=e.min+_(t)}function Bt(e,t,r,o){gi(e.x,t.x,r.x,o==null?void 0:o.x),gi(e.y,t.y,r.y,o==null?void 0:o.y)}function Pa(e,t,r,o,n){return e-=t,e=Tr(e,1/r,o),n!==void 0&&(e=Tr(e,1/n,o)),e}function af(e,t=0,r=1,o=.5,n,s=e,i=e){if(ee.test(t)&&(t=parseFloat(t),t=D(i.min,i.max,t/100)-i.min),typeof t!="number")return;let a=D(s.min,s.max,o);e===s&&(a-=t),e.min=Pa(e.min,t,r,a,n),e.max=Pa(e.max,t,r,a,n)}function Ca(e,t,[r,o,n],s,i){af(e,t[r],t[o],t[n],t.scale,s,i)}var lf=["x","scaleX","originX"],cf=["y","scaleY","originY"];function vi(e,t,r,o){Ca(e.x,t,lf,r?r.x:void 0,o?o.x:void 0),Ca(e.y,t,cf,r?r.y:void 0,o?o.y:void 0)}function Ea(e){return e.translate===0&&e.scale===1}function bi(e){return Ea(e.x)&&Ea(e.y)}function Aa(e,t){return e.min===t.min&&e.max===t.max}function Da(e,t){return Aa(e.x,t.x)&&Aa(e.y,t.y)}function Ma(e,t){return Math.round(e.min)===Math.round(t.min)&&Math.round(e.max)===Math.round(t.max)}function wi(e,t){return Ma(e.x,t.x)&&Ma(e.y,t.y)}function Ti(e){return _(e.x)/_(e.y)}function Si(e,t){return e.translate===t.translate&&e.scale===t.scale&&e.originPoint===t.originPoint}function ce(e){return[e("x"),e("y")]}function Ra(e,t,r){let o="",n=e.x.translate/t.x,s=e.y.translate/t.y,i=(r==null?void 0:r.z)||0;if((n||s||i)&&(o=`translate3d(${n}px, ${s}px, ${i}px) `),(t.x!==1||t.y!==1)&&(o+=`scale(${1/t.x}, ${1/t.y}) `),r){let{transformPerspective:u,rotate:l,pathRotation:f,rotateX:m,rotateY:p,skewX:d,skewY:h}=r;u&&(o=`perspective(${u}px) ${o}`),l&&(o+=`rotate(${l}deg) `),f&&(o+=`rotate(${f}deg) `),m&&(o+=`rotateX(${m}deg) `),p&&(o+=`rotateY(${p}deg) `),d&&(o+=`skewX(${d}deg) `),h&&(o+=`skewY(${h}deg) `)}let a=e.x.scale*t.x,c=e.y.scale*t.y;return(a!==1||c!==1)&&(o+=`scale(${a}, ${c})`),o||"none"}var uf=dr.length,ka=e=>typeof e=="string"?parseFloat(e):e,La=e=>typeof e=="number"||S.test(e);function Oa(e,t,r,o,n,s){var i,a,c,u;n?(e.opacity=D(0,(i=r.opacity)!=null?i:1,ff(o)),e.opacityExit=D((a=t.opacity)!=null?a:1,0,mf(o))):s&&(e.opacity=D((c=t.opacity)!=null?c:1,(u=r.opacity)!=null?u:1,o));for(let l=0;l<uf;l++){let f=dr[l],m=Ia(t,f),p=Ia(r,f);if(m===void 0&&p===void 0)continue;m||(m=0),p||(p=0),m===0||p===0||La(m)===La(p)?(e[f]=Math.max(D(ka(m),ka(p),o),0),(ee.test(p)||ee.test(m))&&(e[f]+="%")):e[f]=p}(t.rotate||r.rotate)&&(e.rotate=D(t.rotate||0,r.rotate||0,o))}function Ia(e,t){return e[t]!==void 0?e[t]:e.borderRadius}var ff=Ba(0,.5,Qt),mf=Ba(.5,.95,j);function Ba(e,t,r){return o=>o<e?0:o>t?1:r(we(e,t,o))}function Fa(e,t,r){let o=k(e)?e:be(e);return o.start(it("",o,t,r)),o.animation}function Ce(e,t,r,o={passive:!0}){return e.addEventListener(t,r,o),()=>e.removeEventListener(t,r,o)}var Na=(e,t)=>e.depth-t.depth;var Fo=class{constructor(){this.children=[],this.isDirty=!1}add(t){et(this.children,t),this.isDirty=!0}remove(t){Ne(this.children,t),this.isDirty=!0}forEach(t){this.isDirty&&this.children.sort(Na),this.isDirty=!1,this.children.forEach(t)}};function ja(e,t){let r=z.now(),o=({timestamp:n})=>{let s=n-r;s>=t&&(se(o),e(s-t))};return A.setup(o,!0),()=>se(o)}function ht(e){return k(e)?e.get():e}var No=class{constructor(){this.members=[]}add(t){et(this.members,t);for(let r=this.members.length-1;r>=0;r--){let o=this.members[r];if(o===t||o===this.lead||o===this.prevLead)continue;let n=o.instance;(!n||n.isConnected===!1)&&!o.snapshot&&(Ne(this.members,o),o.unmount())}t.scheduleRender()}remove(t){if(Ne(this.members,t),t===this.prevLead&&(this.prevLead=void 0),t===this.lead){let r=this.members[this.members.length-1];r&&this.promote(r)}}relegate(t){var r;for(let o=this.members.indexOf(t)-1;o>=0;o--){let n=this.members[o];if(n.isPresent!==!1&&((r=n.instance)==null?void 0:r.isConnected)!==!1)return this.promote(n),!0}return!1}promote(t,r){var n;let o=this.lead;if(t!==o&&(this.prevLead=o,this.lead=t,t.show(),o)){o.updateSnapshot(),t.scheduleRender();let{layoutDependency:s}=o.options,{layoutDependency:i}=t.options;(s===void 0||s!==i)&&(t.resumeFrom=o,r&&(o.preserveOpacity=!0),o.snapshot&&(t.snapshot=o.snapshot,t.snapshot.latestValues=o.animationValues||o.latestValues),(n=t.root)!=null&&n.isUpdating&&(t.isLayoutDirty=!0)),t.options.crossfade===!1&&o.hide()}}exitAnimationComplete(){this.members.forEach(t=>{var r,o,n,s,i;(o=(r=t.options).onExitComplete)==null||o.call(r),(i=(n=t.resumingFrom)==null?void 0:(s=n.options).onExitComplete)==null||i.call(s)})}scheduleRender(){this.members.forEach(t=>t.instance&&t.scheduleRender(!1))}removeLeadSnapshot(){var t;(t=this.lead)!=null&&t.snapshot&&(this.lead.snapshot=void 0)}};var gt={hasAnimatedSinceResize:!0,hasEverUpdated:!1};var xt={nodes:0,calculatedTargetDeltas:0,calculatedProjections:0},Vi=["","X","Y","Z"],pf=1e3,df=0;function Pi(e,t,r,o){let{latestValues:n}=t;n[e]&&(r[e]=n[e],t.setStaticValue(e,0),o&&(o[e]=0))}function Ya(e){if(e.hasCheckedOptimisedAppear=!0,e.root===e)return;let{visualElement:t}=e.options;if(!t)return;let r=go(t);if(window.MotionHasOptimisedAnimation(r,"transform")){let{layout:n,layoutId:s}=e.options;window.MotionCancelOptimisedAnimation(r,"transform",A,!(n||s))}let{parent:o}=e;o&&!o.hasCheckedOptimisedAppear&&Ya(o)}function jo({attachResizeListener:e,defaultParent:t,measureScroll:r,checkIsScrollRoot:o,resetTransform:n}){return class{constructor(i={},a=t==null?void 0:t()){this.id=df++,this.animationId=0,this.animationCommitId=0,this.children=new Set,this.options={},this.isTreeAnimating=!1,this.isAnimationBlocked=!1,this.isLayoutDirty=!1,this.isProjectionDirty=!1,this.isSharedProjectionDirty=!1,this.isTransformDirty=!1,this.updateManuallyBlocked=!1,this.updateBlockedByResize=!1,this.isUpdating=!1,this.isSVG=!1,this.needsReset=!1,this.shouldResetTransform=!1,this.hasCheckedOptimisedAppear=!1,this.treeScale={x:1,y:1},this.eventHandlers=new Map,this.hasTreeAnimated=!1,this.layoutVersion=0,this.updateScheduled=!1,this.scheduleUpdate=()=>this.update(),this.projectionUpdateScheduled=!1,this.checkUpdateFailed=()=>{this.isUpdating&&(this.isUpdating=!1,this.clearAllSnapshots())},this.updateProjection=()=>{this.projectionUpdateScheduled=!1,ut.value&&(xt.nodes=xt.calculatedTargetDeltas=xt.calculatedProjections=0),this.nodes.forEach(xf),this.nodes.forEach(Sf),this.nodes.forEach(Vf),this.nodes.forEach(yf),ut.addProjectionMetrics&&ut.addProjectionMetrics(xt)},this.resolvedRelativeTargetAt=0,this.linkedParentVersion=0,this.hasProjected=!1,this.isVisible=!0,this.animationProgress=0,this.sharedNodes=new Map,this.latestValues=i,this.root=a?a.root||a:this,this.path=a?[...a.path,a]:[],this.parent=a,this.depth=a?a.depth+1:0;for(let c=0;c<this.path.length;c++)this.path[c].shouldResetTransform=!0;this.root===this&&(this.nodes=new Fo)}addEventListener(i,a){return this.eventHandlers.has(i)||this.eventHandlers.set(i,new De),this.eventHandlers.get(i).add(a)}notifyListeners(i,...a){let c=this.eventHandlers.get(i);c&&c.notify(...a)}hasListeners(i){return this.eventHandlers.has(i)}mount(i){if(this.instance)return;this.isSVG=kt(i)&&!oa(i),this.instance=i;let{layoutId:a,layout:c,visualElement:u}=this.options;if(u&&!u.current&&u.mount(i),this.root.nodes.add(this),this.parent&&this.parent.children.add(this),this.root.hasTreeAnimated&&(c||a)&&(this.isLayoutDirty=!0),e){let l,f=0,m=()=>this.root.updateBlockedByResize=!1;A.read(()=>{f=window.innerWidth}),e(i,()=>{let p=window.innerWidth;p!==f&&(f=p,this.root.updateBlockedByResize=!0,l&&l(),l=ja(m,250),gt.hasAnimatedSinceResize&&(gt.hasAnimatedSinceResize=!1,this.nodes.forEach(Wa)))})}a&&this.root.registerSharedNode(a,this),this.options.animate!==!1&&u&&(a||c)&&this.addEventListener("didUpdate",({delta:l,hasLayoutChanged:f,hasRelativeLayoutChanged:m,layout:p})=>{if(this.isTreeAnimationBlocked()){this.target=void 0,this.relativeTarget=void 0;return}let d=this.options.transition||u.getDefaultTransition()||Mf,{onLayoutAnimationStart:h,onLayoutAnimationComplete:x}=u.getProps(),v=!this.targetLayout||!wi(this.targetLayout,p),b=!f&&m;if(this.options.layoutRoot||this.resumeFrom||b||f&&(v||!this.currentAnimation)){this.resumeFrom&&(this.resumingFrom=this.resumeFrom,this.resumingFrom.resumingFrom=void 0);let w={...At(d,"layout"),onPlay:h,onComplete:x};(u.shouldReduceMotion||this.options.layoutRoot)&&(w.delay=0,w.type=!1),this.startAnimation(w),this.setAnimationOrigin(l,b,w.path)}else f||Wa(this),this.isLead()&&this.options.onExitComplete&&this.options.onExitComplete();this.targetLayout=p})}unmount(){this.options.layoutId&&this.willUpdate(),this.root.nodes.remove(this);let i=this.getStack();i&&i.remove(this),this.parent&&this.parent.children.delete(this),this.instance=void 0,this.eventHandlers.clear(),se(this.updateProjection)}blockUpdate(){this.updateManuallyBlocked=!0}unblockUpdate(){this.updateManuallyBlocked=!1}isUpdateBlocked(){return this.updateManuallyBlocked||this.updateBlockedByResize}isTreeAnimationBlocked(){return this.isAnimationBlocked||this.parent&&this.parent.isTreeAnimationBlocked()||!1}startUpdate(){this.isUpdateBlocked()||(this.isUpdating=!0,this.nodes&&this.nodes.forEach(Pf),this.animationId++)}getTransformTemplate(){let{visualElement:i}=this.options;return i&&i.getProps().transformTemplate}willUpdate(i=!0){if(this.root.hasTreeAnimated=!0,this.root.isUpdateBlocked()){this.options.onExitComplete&&this.options.onExitComplete();return}if(window.MotionCancelOptimisedAnimation&&!this.hasCheckedOptimisedAppear&&Ya(this),!this.root.isUpdating&&this.root.startUpdate(),this.isLayoutDirty)return;this.isLayoutDirty=!0;for(let l=0;l<this.path.length;l++){let f=this.path[l];f.shouldResetTransform=!0,(typeof f.latestValues.x=="string"||typeof f.latestValues.y=="string")&&(f.isLayoutDirty=!0),f.updateScroll("snapshot"),f.options.layoutRoot&&f.willUpdate(!1)}let{layoutId:a,layout:c}=this.options;if(a===void 0&&!c)return;let u=this.getTransformTemplate();this.prevTransformTemplateValue=u?u(this.latestValues,""):void 0,this.updateSnapshot(),i&&this.notifyListeners("willUpdate")}update(){if(this.updateScheduled=!1,this.isUpdateBlocked()){let c=this.updateBlockedByResize;this.unblockUpdate(),this.updateBlockedByResize=!1,this.clearAllSnapshots(),c&&this.nodes.forEach(bf),this.nodes.forEach(za);return}if(this.animationId<=this.animationCommitId){this.nodes.forEach(Ga);return}this.animationCommitId=this.animationId,this.isUpdating?(this.isUpdating=!1,this.nodes.forEach(wf),this.nodes.forEach(Tf),this.nodes.forEach(hf),this.nodes.forEach(gf)):this.nodes.forEach(Ga),this.clearAllSnapshots();let a=z.now();W.delta=Y(0,1e3/60,a-W.timestamp),W.timestamp=a,W.isProcessing=!0,nr.update.process(W),nr.preRender.process(W),nr.render.process(W),W.isProcessing=!1}didUpdate(){this.updateScheduled||(this.updateScheduled=!0,lt.read(this.scheduleUpdate))}clearAllSnapshots(){this.nodes.forEach(vf),this.sharedNodes.forEach(Cf)}scheduleUpdateProjection(){this.projectionUpdateScheduled||(this.projectionUpdateScheduled=!0,A.preRender(this.updateProjection,!1,!0))}scheduleCheckAfterUnmount(){A.postRender(()=>{this.isLayoutDirty?this.root.didUpdate():this.root.checkUpdateFailed()})}updateSnapshot(){this.snapshot||!this.instance||(this.snapshot=this.measure(),this.snapshot&&!_(this.snapshot.measuredBox.x)&&!_(this.snapshot.measuredBox.y)&&(this.snapshot=void 0))}updateLayout(){if(!this.instance||(this.updateScroll(),!(this.options.alwaysMeasureLayout&&this.isLead())&&!this.isLayoutDirty))return;if(this.resumeFrom&&!this.resumeFrom.instance)for(let c=0;c<this.path.length;c++)this.path[c].updateScroll();let i=this.layout;this.layout=this.measure(!1),this.layoutVersion++,this.layoutCorrected||(this.layoutCorrected=B()),this.isLayoutDirty=!1,this.projectionDelta=void 0,this.notifyListeners("measure",this.layout.layoutBox);let{visualElement:a}=this.options;a&&a.notify("LayoutMeasure",this.layout.layoutBox,i?i.layoutBox:void 0)}updateScroll(i="measure"){let a=!!(this.options.layoutScroll&&this.instance);if(this.scroll&&this.scroll.animationId===this.root.animationId&&this.scroll.phase===i&&(a=!1),a&&this.instance){let c=o(this.instance);this.scroll={animationId:this.root.animationId,phase:i,isRoot:c,offset:r(this.instance),wasRoot:this.scroll?this.scroll.isRoot:c}}}resetTransform(){if(!n)return;let i=this.isLayoutDirty||this.shouldResetTransform||this.options.alwaysMeasureLayout,a=this.projectionDelta&&!bi(this.projectionDelta),c=this.getTransformTemplate(),u=c?c(this.latestValues,""):void 0,l=u!==this.prevTransformTemplateValue;i&&this.instance&&(a||Oe(this.latestValues)||l)&&(n(this.instance,u),this.shouldResetTransform=!1,this.scheduleRender())}measure(i=!0){let a=this.measurePageBox(),c=this.removeElementScroll(a);return i&&(c=this.removeTransform(c)),Df(c),{animationId:this.root.animationId,measuredBox:a,layoutBox:c,latestValues:{},source:this.id}}measurePageBox(){var u;let{visualElement:i}=this.options;if(!i)return B();let a=i.measureViewportBox();if(!(((u=this.scroll)==null?void 0:u.wasRoot)||this.path.some(Rf))){let{scroll:l}=this.root;l&&(xe(a.x,l.offset.x),xe(a.y,l.offset.y))}return a}removeElementScroll(i){var c;let a=B();if(ye(a,i),(c=this.scroll)!=null&&c.wasRoot)return a;for(let u=0;u<this.path.length;u++){let l=this.path[u],{scroll:f,options:m}=l;l!==this.root&&f&&m.layoutScroll&&(f.wasRoot&&ye(a,i),xe(a.x,f.offset.x),xe(a.y,f.offset.y))}return a}applyTransform(i,a=!1,c){var l,f;let u=c||B();ye(u,i);for(let m=0;m<this.path.length;m++){let p=this.path[m];!a&&p.options.layoutScroll&&p.scroll&&p!==p.root&&(xe(u.x,-p.scroll.offset.x),xe(u.y,-p.scroll.offset.y)),Oe(p.latestValues)&&Sr(u,p.latestValues,(l=p.layout)==null?void 0:l.layoutBox)}return Oe(this.latestValues)&&Sr(u,this.latestValues,(f=this.layout)==null?void 0:f.layoutBox),u}removeTransform(i){var c;let a=B();ye(a,i);for(let u=0;u<this.path.length;u++){let l=this.path[u];if(!Oe(l.latestValues))continue;let f;l.instance&&(ko(l.latestValues)&&l.updateSnapshot(),f=B(),ye(f,l.measurePageBox())),vi(a,l.latestValues,(c=l.snapshot)==null?void 0:c.layoutBox,f)}return Oe(this.latestValues)&&vi(a,this.latestValues),a}setTargetDelta(i){this.targetDelta=i,this.root.scheduleUpdateProjection(),this.isProjectionDirty=!0}setOptions(i){this.options={...this.options,...i,crossfade:i.crossfade!==void 0?i.crossfade:!0}}clearMeasurements(){this.scroll=void 0,this.layout=void 0,this.snapshot=void 0,this.prevTransformTemplateValue=void 0,this.targetDelta=void 0,this.target=void 0,this.isLayoutDirty=!1}forceRelativeParentToResolveTarget(){this.relativeParent&&this.relativeParent.resolvedRelativeTargetAt!==W.timestamp&&this.relativeParent.resolveTargetDelta(!0)}resolveTargetDelta(i=!1){var p;let a=this.getLead();this.isProjectionDirty||(this.isProjectionDirty=a.isProjectionDirty),this.isTransformDirty||(this.isTransformDirty=a.isTransformDirty),this.isSharedProjectionDirty||(this.isSharedProjectionDirty=a.isSharedProjectionDirty);let c=!!this.resumingFrom||this!==a;if(!(i||c&&this.isSharedProjectionDirty||this.isProjectionDirty||(p=this.parent)!=null&&p.isProjectionDirty||this.attemptToResolveRelativeTarget||this.root.updateBlockedByResize))return;let{layout:l,layoutId:f}=this.options;if(!this.layout||!(l||f))return;this.resolvedRelativeTargetAt=W.timestamp;let m=this.getClosestProjectingParent();m&&this.linkedParentVersion!==m.layoutVersion&&!m.options.layoutRoot&&this.removeRelativeTarget(),!this.targetDelta&&!this.relativeTarget&&(this.options.layoutAnchor!==!1&&m&&m.layout?this.createRelativeTarget(m,this.layout.layoutBox,m.layout.layoutBox):this.removeRelativeTarget()),!(!this.relativeTarget&&!this.targetDelta)&&(this.target||(this.target=B(),this.targetWithTransforms=B()),this.relativeTarget&&this.relativeTargetOrigin&&this.relativeParent&&this.relativeParent.target?(this.forceRelativeParentToResolveTarget(),yi(this.target,this.relativeTarget,this.relativeParent.target,this.options.layoutAnchor||void 0)):this.targetDelta?(this.resumingFrom?this.applyTransform(this.layout.layoutBox,!1,this.target):ye(this.target,this.layout.layoutBox),li(this.target,this.targetDelta)):ye(this.target,this.layout.layoutBox),this.attemptToResolveRelativeTarget&&(this.attemptToResolveRelativeTarget=!1,this.options.layoutAnchor!==!1&&m&&!!m.resumingFrom==!!this.resumingFrom&&!m.options.layoutScroll&&m.target&&this.animationProgress!==1?this.createRelativeTarget(m,this.target,m.target):this.relativeParent=this.relativeTarget=void 0),ut.value&&xt.calculatedTargetDeltas++)}getClosestProjectingParent(){if(!(!this.parent||ko(this.parent.latestValues)||si(this.parent.latestValues)))return this.parent.isProjecting()?this.parent:this.parent.getClosestProjectingParent()}isProjecting(){return!!((this.relativeTarget||this.targetDelta||this.options.layoutRoot)&&this.layout)}createRelativeTarget(i,a,c){this.relativeParent=i,this.linkedParentVersion=i.layoutVersion,this.forceRelativeParentToResolveTarget(),this.relativeTarget=B(),this.relativeTargetOrigin=B(),Bt(this.relativeTargetOrigin,a,c,this.options.layoutAnchor||void 0),ye(this.relativeTarget,this.relativeTargetOrigin)}removeRelativeTarget(){this.relativeParent=this.relativeTarget=void 0}calcProjection(){var d;let i=this.getLead(),a=!!this.resumingFrom||this!==i,c=!0;if((this.isProjectionDirty||(d=this.parent)!=null&&d.isProjectionDirty)&&(c=!1),a&&(this.isSharedProjectionDirty||this.isTransformDirty)&&(c=!1),this.resolvedRelativeTargetAt===W.timestamp&&(c=!1),c)return;let{layout:u,layoutId:l}=this.options;if(this.isTreeAnimating=!!(this.parent&&this.parent.isTreeAnimating||this.currentAnimation||this.pendingAnimation),this.isTreeAnimating||(this.targetDelta=this.relativeTarget=void 0),!this.layout||!(u||l))return;ye(this.layoutCorrected,this.layout.layoutBox);let f=this.treeScale.x,m=this.treeScale.y;ha(this.layoutCorrected,this.treeScale,this.path,a),i.layout&&!i.target&&(this.treeScale.x!==1||this.treeScale.y!==1)&&(i.target=i.layout.layoutBox,i.targetWithTransforms=B());let{target:p}=i;if(!p){this.prevProjectionDelta&&(this.createProjectionDeltas(),this.scheduleRender());return}!this.projectionDelta||!this.prevProjectionDelta?this.createProjectionDeltas():(pi(this.prevProjectionDelta.x,this.projectionDelta.x),pi(this.prevProjectionDelta.y,this.projectionDelta.y)),dt(this.projectionDelta,this.layoutCorrected,p,this.latestValues),(this.treeScale.x!==f||this.treeScale.y!==m||!Si(this.projectionDelta.x,this.prevProjectionDelta.x)||!Si(this.projectionDelta.y,this.prevProjectionDelta.y))&&(this.hasProjected=!0,this.scheduleRender(),this.notifyListeners("projectionUpdate",p)),ut.value&&xt.calculatedProjections++}hide(){this.isVisible=!1}show(){this.isVisible=!0}scheduleRender(i=!0){var a;if((a=this.options.visualElement)==null||a.scheduleRender(),i){let c=this.getStack();c&&c.scheduleRender()}this.resumingFrom&&!this.resumingFrom.instance&&(this.resumingFrom=void 0)}createProjectionDeltas(){this.prevProjectionDelta=$e(),this.projectionDelta=$e(),this.projectionDeltaWithTransform=$e()}setAnimationOrigin(i,a=!1,c){let u=this.snapshot,l=u?u.latestValues:{},f={...this.latestValues},m=$e();(!this.relativeParent||!this.relativeParent.options.layoutRoot)&&(this.relativeTarget=this.relativeTargetOrigin=void 0),this.attemptToResolveRelativeTarget=!a;let p=B(),d=u?u.source:void 0,h=this.layout?this.layout.source:void 0,x=d!==h,v=this.getStack(),b=!v||v.members.length<=1,w=!!(x&&!b&&this.options.crossfade===!0&&!this.path.some(Af));this.animationProgress=0;let y,T=c==null?void 0:c.interpolateProjection(i);this.mixTargetDelta=C=>{let E=C/1e3,P=T==null?void 0:T(E);P?(m.x.translate=P.x,m.x.scale=D(i.x.scale,1,E),m.x.origin=i.x.origin,m.x.originPoint=i.x.originPoint,m.y.translate=P.y,m.y.scale=D(i.y.scale,1,E),m.y.origin=i.y.origin,m.y.originPoint=i.y.originPoint):(Ua(m.x,i.x,E),Ua(m.y,i.y,E)),this.setTargetDelta(m),this.relativeTarget&&this.relativeTargetOrigin&&this.layout&&this.relativeParent&&this.relativeParent.layout&&(Bt(p,this.layout.layoutBox,this.relativeParent.layout.layoutBox,this.options.layoutAnchor||void 0),Ef(this.relativeTarget,this.relativeTargetOrigin,p,E),y&&Da(this.relativeTarget,y)&&(this.isProjectionDirty=!1),y||(y=B()),ye(y,this.relativeTarget)),x&&(this.animationValues=f,Oa(f,l,this.latestValues,E,w,b)),P&&P.rotate!==void 0&&(this.animationValues||(this.animationValues=f),this.animationValues.pathRotation=P.rotate),this.root.scheduleUpdateProjection(),this.scheduleRender(),this.animationProgress=E},this.mixTargetDelta(this.options.layoutRoot?1e3:0)}startAnimation(i){var a,c,u;this.notifyListeners("animationStart"),(a=this.currentAnimation)==null||a.stop(),(u=(c=this.resumingFrom)==null?void 0:c.currentAnimation)==null||u.stop(),this.pendingAnimation&&(se(this.pendingAnimation),this.pendingAnimation=void 0),this.pendingAnimation=A.update(()=>{gt.hasAnimatedSinceResize=!0,this.motionValue||(this.motionValue=be(0)),this.motionValue.jump(0,!1),this.currentAnimation=Fa(this.motionValue,[0,1e3],{...i,velocity:0,isSync:!0,onUpdate:l=>{this.mixTargetDelta(l),i.onUpdate&&i.onUpdate(l)},onComplete:()=>{i.onComplete&&i.onComplete(),this.completeAnimation()}}),this.resumingFrom&&(this.resumingFrom.currentAnimation=this.currentAnimation),this.pendingAnimation=void 0})}completeAnimation(){this.resumingFrom&&(this.resumingFrom.currentAnimation=void 0,this.resumingFrom.preserveOpacity=void 0);let i=this.getStack();i&&i.exitAnimationComplete(),this.resumingFrom=this.currentAnimation=this.animationValues=void 0,this.notifyListeners("animationComplete")}finishAnimation(){this.currentAnimation&&(this.mixTargetDelta&&this.mixTargetDelta(pf),this.currentAnimation.stop()),this.completeAnimation()}applyTransformsToTarget(){let i=this.getLead(),{targetWithTransforms:a,target:c,layout:u,latestValues:l}=i;if(!(!a||!c||!u)){if(this!==i&&this.layout&&u&&Xa(this.options.animationType,this.layout.layoutBox,u.layoutBox)){c=this.target||B();let f=_(this.layout.layoutBox.x);c.x.min=i.target.x.min,c.x.max=c.x.min+f;let m=_(this.layout.layoutBox.y);c.y.min=i.target.y.min,c.y.max=c.y.min+m}ye(a,c),Sr(a,l),dt(this.projectionDeltaWithTransform,this.layoutCorrected,a,l)}}registerSharedNode(i,a){this.sharedNodes.has(i)||this.sharedNodes.set(i,new No),this.sharedNodes.get(i).add(a);let u=a.options.initialPromotionConfig;a.promote({transition:u?u.transition:void 0,preserveFollowOpacity:u&&u.shouldPreserveFollowOpacity?u.shouldPreserveFollowOpacity(a):void 0})}isLead(){let i=this.getStack();return i?i.lead===this:!0}getLead(){var a;let{layoutId:i}=this.options;return i?((a=this.getStack())==null?void 0:a.lead)||this:this}getPrevLead(){var a;let{layoutId:i}=this.options;return i?(a=this.getStack())==null?void 0:a.prevLead:void 0}getStack(){let{layoutId:i}=this.options;if(i)return this.root.sharedNodes.get(i)}promote({needsReset:i,transition:a,preserveFollowOpacity:c}={}){let u=this.getStack();u&&u.promote(this,c),i&&(this.projectionDelta=void 0,this.needsReset=!0),a&&this.setOptions({transition:a})}relegate(){let i=this.getStack();return i?i.relegate(this):!1}resetSkewAndRotation(){let{visualElement:i}=this.options;if(!i)return;let a=!1,{latestValues:c}=i;if((c.z||c.rotate||c.rotateX||c.rotateY||c.rotateZ||c.skewX||c.skewY)&&(a=!0),!a)return;let u={};c.z&&Pi("z",i,u,this.animationValues);for(let l=0;l<Vi.length;l++)Pi(`rotate${Vi[l]}`,i,u,this.animationValues),Pi(`skew${Vi[l]}`,i,u,this.animationValues);i.render();for(let l in u)i.setStaticValue(l,u[l]),this.animationValues&&(this.animationValues[l]=u[l]);i.scheduleRender()}applyProjectionStyles(i,a){var d,h;if(!this.instance||this.isSVG)return;if(!this.isVisible){i.visibility="hidden";return}let c=this.getTransformTemplate();if(this.needsReset){this.needsReset=!1,i.visibility="",i.opacity="",i.pointerEvents=ht(a==null?void 0:a.pointerEvents)||"",i.transform=c?c(this.latestValues,""):"none";return}let u=this.getLead();if(!this.projectionDelta||!this.layout||!u.target){this.options.layoutId&&(i.opacity=this.latestValues.opacity!==void 0?this.latestValues.opacity:1,i.pointerEvents=ht(a==null?void 0:a.pointerEvents)||""),this.hasProjected&&!Oe(this.latestValues)&&(i.transform=c?c({},""):"none",this.hasProjected=!1);return}i.visibility="";let l=u.animationValues||u.latestValues;this.applyTransformsToTarget();let f=Ra(this.projectionDeltaWithTransform,this.treeScale,l);c&&(f=c(l,f)),i.transform=f;let{x:m,y:p}=this.projectionDelta;i.transformOrigin=`${m.origin*100}% ${p.origin*100}% 0`,u.animationValues?i.opacity=u===this?(h=(d=l.opacity)!=null?d:this.latestValues.opacity)!=null?h:1:this.preserveOpacity?this.latestValues.opacity:l.opacityExit:i.opacity=u===this?l.opacity!==void 0?l.opacity:"":l.opacityExit!==void 0?l.opacityExit:0;for(let x in Vr){if(l[x]===void 0)continue;let{correct:v,applyTo:b,isCSSVariable:w}=Vr[x],y=f==="none"?l[x]:v(l[x],u);if(b){let T=b.length;for(let C=0;C<T;C++)i[b[C]]=y}else w?this.options.visualElement.renderState.vars[x]=y:i[x]=y}this.options.layoutId&&(i.pointerEvents=u===this?ht(a==null?void 0:a.pointerEvents)||"":"none")}clearSnapshot(){this.resumeFrom=this.snapshot=void 0}resetTree(){this.root.nodes.forEach(i=>{var a;return(a=i.currentAnimation)==null?void 0:a.stop()}),this.root.nodes.forEach(za),this.root.sharedNodes.clear()}}}function hf(e){e.updateLayout()}function gf(e){var r;let t=((r=e.resumeFrom)==null?void 0:r.snapshot)||e.snapshot;if(e.isLead()&&e.layout&&t&&e.hasListeners("didUpdate")){let{layoutBox:o,measuredBox:n}=e.layout,{animationType:s}=e.options,i=t.source!==e.layout.source;if(s==="size")ce(f=>{let m=i?t.measuredBox[f]:t.layoutBox[f],p=_(m);m.min=o[f].min,m.max=m.min+p});else if(s==="x"||s==="y"){let f=s==="x"?"y":"x";Bo(i?t.measuredBox[f]:t.layoutBox[f],o[f])}else Xa(s,t.layoutBox,o)&&ce(f=>{let m=i?t.measuredBox[f]:t.layoutBox[f],p=_(o[f]);m.max=m.min+p,e.relativeTarget&&!e.currentAnimation&&(e.isProjectionDirty=!0,e.relativeTarget[f].max=e.relativeTarget[f].min+p)});let a=$e();dt(a,o,t.layoutBox);let c=$e();i?dt(c,e.applyTransform(n,!0),t.measuredBox):dt(c,o,t.layoutBox);let u=!bi(a),l=!1;if(!e.resumeFrom){let f=e.getClosestProjectingParent();if(f&&!f.resumeFrom){let{snapshot:m,layout:p}=f;if(m&&p){let d=e.options.layoutAnchor||void 0,h=B();Bt(h,t.layoutBox,m.layoutBox,d);let x=B();Bt(x,o,p.layoutBox,d),wi(h,x)||(l=!0),f.options.layoutRoot&&(e.relativeTarget=x,e.relativeTargetOrigin=h,e.relativeParent=f)}}}e.notifyListeners("didUpdate",{layout:o,snapshot:t,delta:c,layoutDelta:a,hasLayoutChanged:u,hasRelativeLayoutChanged:l})}else if(e.isLead()){let{onExitComplete:o}=e.options;o&&o()}e.options.transition=void 0}function xf(e){ut.value&&xt.nodes++,e.parent&&(e.isProjecting()||(e.isProjectionDirty=e.parent.isProjectionDirty),e.isSharedProjectionDirty||(e.isSharedProjectionDirty=!!(e.isProjectionDirty||e.parent.isProjectionDirty||e.parent.isSharedProjectionDirty)),e.isTransformDirty||(e.isTransformDirty=e.parent.isTransformDirty))}function yf(e){e.isProjectionDirty=e.isSharedProjectionDirty=e.isTransformDirty=!1}function vf(e){e.clearSnapshot()}function za(e){e.clearMeasurements()}function bf(e){e.isLayoutDirty=!0,e.updateLayout()}function Ga(e){e.isLayoutDirty=!1}function wf(e){e.isAnimationBlocked&&e.layout&&!e.isLayoutDirty&&(e.snapshot=e.layout,e.isLayoutDirty=!0)}function Tf(e){let{visualElement:t}=e.options;t&&t.getProps().onBeforeLayoutMeasure&&t.notify("BeforeLayoutMeasure"),e.resetTransform()}function Wa(e){e.finishAnimation(),e.targetDelta=e.relativeTarget=e.target=void 0,e.isProjectionDirty=!0}function Sf(e){e.resolveTargetDelta()}function Vf(e){e.calcProjection()}function Pf(e){e.resetSkewAndRotation()}function Cf(e){e.removeLeadSnapshot()}function Ua(e,t,r){e.translate=D(t.translate,0,r),e.scale=D(t.scale,1,r),e.origin=t.origin,e.originPoint=t.originPoint}function Ha(e,t,r,o){e.min=D(t.min,r.min,o),e.max=D(t.max,r.max,o)}function Ef(e,t,r,o){Ha(e.x,t.x,r.x,o),Ha(e.y,t.y,r.y,o)}function Af(e){return e.animationValues&&e.animationValues.opacityExit!==void 0}var Mf={duration:.45,ease:[.4,0,.1,1]},Ka=e=>typeof navigator!="undefined"&&navigator.userAgent&&navigator.userAgent.toLowerCase().includes(e),_a=Ka("applewebkit/")&&!Ka("chrome/")?Math.round:j;function $a(e){e.min=_a(e.min),e.max=_a(e.max)}function Df(e){$a(e.x),$a(e.y)}function Xa(e,t,r){return e==="position"||e==="preserve-aspect"&&!xi(Ti(t),Ti(r),.2)}function Rf(e){var t;return e!==e.root&&((t=e.scroll)==null?void 0:t.wasRoot)}var qa=jo({attachResizeListener:(e,t)=>Ce(e,"resize",t),measureScroll:()=>{var e,t;return{x:document.documentElement.scrollLeft||((e=document.body)==null?void 0:e.scrollLeft)||0,y:document.documentElement.scrollTop||((t=document.body)==null?void 0:t.scrollTop)||0}},checkIsScrollRoot:()=>!0});var zo={current:void 0},Rr=jo({measureScroll:e=>({x:e.scrollLeft,y:e.scrollTop}),defaultParent:()=>{if(!zo.current){let e=new qa({});e.mount(window),e.setOptions({layoutScroll:!0}),zo.current=e}return zo.current},resetTransform:(e,t)=>{e.style.transform=t!==void 0?t:"none"},checkIsScrollRoot:e=>window.getComputedStyle(e).position==="fixed"});var Za=require("react"),Go=(0,Za.createContext)({transformPagePoint:e=>e,isStatic:!1,reducedMotion:"never"});var Xe=require("react");function Ja(e=!0){let t=(0,Xe.useContext)(vt);if(t===null)return[!0,null];let{isPresent:r,onExitComplete:o,register:n}=t,s=(0,Xe.useId)();(0,Xe.useEffect)(()=>{if(e)return n(s)},[e]);let i=(0,Xe.useCallback)(()=>e&&o&&o(s),[s,o,e]);return!r&&o?[!1,i]:[!0]}var Qa=require("react"),Wo=(0,Qa.createContext)({strict:!1});var el={animation:["animate","variants","whileHover","whileTap","exit","whileInView","whileFocus","whileDrag"],exit:["exit"],drag:["drag","dragControls"],focus:["whileFocus"],hover:["whileHover","onHoverStart","onHoverEnd"],tap:["whileTap","onTap","onTapStart","onTapCancel"],pan:["onPan","onPanStart","onPanSessionStart","onPanEnd"],inView:["whileInView","onViewportEnter","onViewportLeave"],layout:["layout","layoutId"]},tl=!1;function kf(){if(tl)return;let e={};for(let t in el)e[t]={isEnabled:r=>el[t].some(o=>!!r[o])};br(e),tl=!0}function Uo(){return kf(),ri()}function rl(e){let t=Uo();for(let r in e)t[r]={...t[r],...e[r]};br(t)}var Lf=new Set(["animate","exit","variants","initial","style","values","variants","transition","transformTemplate","custom","inherit","onBeforeLayoutMeasure","onAnimationStart","onAnimationComplete","onUpdate","onDragStart","onDrag","onDragEnd","onMeasureDragConstraints","onDirectionLock","onDragTransitionEnd","_dragX","_dragY","onHoverStart","onHoverEnd","onViewportEnter","onViewportLeave","globalTapTarget","propagate","ignoreStrict","viewport"]);function kr(e){return e.startsWith("while")||e.startsWith("drag")&&e!=="draggable"||e.startsWith("layout")||e.startsWith("onTap")||e.startsWith("onPan")||e.startsWith("onLayout")||Lf.has(e)}var ol=e=>!kr(e);function If(e){typeof e=="function"&&(ol=t=>t.startsWith("on")?!kr(t):e(t))}try{If(require("@emotion/is-prop-valid").default)}catch(e){}function nl(e,t,r){let o={};for(let n in e)n==="values"&&typeof e.values=="object"||k(e[n])||(ol(n)||r===!0&&kr(n)||!t&&!kr(n)||e.draggable&&n.startsWith("onDrag"))&&(o[n]=e[n]);return o}var Yo=require("react/jsx-runtime");var zt=require("react");var il=require("react"),qe=(0,il.createContext)({});var Ho=require("react");function sl(e,t){if(Ye(e)){let{initial:r,animate:o}=e;return{initial:r===!1||Pe(r)?r:void 0,animate:Pe(o)?o:void 0}}return e.inherit!==!1?t:{}}function ll(e){let{initial:t,animate:r}=sl(e,(0,Ho.useContext)(qe));return(0,Ho.useMemo)(()=>({initial:t,animate:r}),[al(t),al(r)])}function al(e){return Array.isArray(e)?e.join(" "):e}var jt=require("react");var cl=require("react");var Ft=()=>({style:{},transform:{},transformOrigin:{},vars:{}});function Ci(e,t,r){for(let o in t)!k(t[o])&&!Pr(o,r)&&(e[o]=t[o])}function Of({transformTemplate:e},t){return(0,cl.useMemo)(()=>{let r=Ft();return ft(r,t,e),Object.assign({},r.vars,r.style)},[t])}function Bf(e,t){let r=e.style||{},o={};return Ci(o,r,e),Object.assign(o,Of(e,t)),o}function ul(e,t){let r={},o=Bf(e,t);return e.drag&&e.dragListener!==!1&&(r.draggable=!1,o.userSelect=o.WebkitUserSelect=o.WebkitTouchCallout="none",o.touchAction=e.drag===!0?"none":`pan-${e.drag==="x"?"y":"x"}`),e.tabIndex===void 0&&(e.onTap||e.onTapStart||e.whileTap)&&(r.tabIndex=0),r.style=o,r}var fl=require("react");var Ko=()=>({...Ft(),attrs:{}});function ml(e,t,r,o){let n=(0,fl.useMemo)(()=>{let s=Ko();return Er(s,t,Ar(o),e.transformTemplate,e.style),{...s.attrs,style:{...s.style}}},[t]);if(e.style){let s={};Ci(s,e.style,e),n.style={...s,...n.style}}return n}var pl=["animate","circle","defs","desc","ellipse","g","image","line","filter","marker","mask","metadata","path","pattern","polygon","polyline","rect","stop","switch","symbol","svg","text","tspan","use","view"];function Nt(e){return typeof e!="string"||e.includes("-")?!1:!!(pl.indexOf(e)>-1||/[A-Z]/u.test(e))}function dl(e,t,r,{latestValues:o},n,s=!1,i){let c=((i!=null?i:Nt(e))?ml:ul)(t,o,n,e),u=nl(t,typeof e=="string",s),l=e!==jt.Fragment?{...u,...c,ref:r}:{},{children:f}=t,m=(0,jt.useMemo)(()=>k(f)?f.get():f,[f]);return(0,jt.createElement)(e,{...l,children:m})}var Ei=require("react");function Ff({scrapeMotionValuesFromProps:e,createRenderState:t},r,o,n){return{latestValues:Nf(r,o,n,e),renderState:t()}}function Nf(e,t,r,o){let n={},s=o(e,{});for(let m in s)n[m]=ht(s[m]);let{initial:i,animate:a}=e,c=Ye(e),u=xr(e);t&&u&&!c&&e.inherit!==!1&&(i===void 0&&(i=t.initial),a===void 0&&(a=t.animate));let l=r?r.initial===!1:!1;l=l||i===!1;let f=l?a:i;if(f&&typeof f!="boolean"&&!Ie(f)){let m=Array.isArray(f)?f:[f];for(let p=0;p<m.length;p++){let d=st(e,m[p]);if(d){let{transitionEnd:h,transition:x,...v}=d;for(let b in v){let w=v[b];if(Array.isArray(w)){let y=l?w.length-1:0;w=w[y]}w!==null&&(n[b]=w)}for(let b in h)n[b]=h[b]}}}return n}var _o=e=>(t,r)=>{let o=(0,Ei.useContext)(qe),n=(0,Ei.useContext)(vt),s=()=>Ff(e,t,o,n);return r?s():Ki(s)};var hl=_o({scrapeMotionValuesFromProps:mt,createRenderState:Ft});var gl=_o({scrapeMotionValuesFromProps:Mr,createRenderState:Ko});var xl=Symbol.for("motionComponentSymbol");var yt=require("react");function yl(e,t,r){let o=(0,yt.useRef)(r);(0,yt.useInsertionEffect)(()=>{o.current=r});let n=(0,yt.useRef)(null);return(0,yt.useCallback)(s=>{var a;s&&((a=e.onMount)==null||a.call(e,s)),t&&(s?t.mount(s):t.unmount());let i=o.current;if(typeof i=="function")if(s){let c=i(s);typeof c=="function"&&(n.current=c)}else n.current?(n.current(),n.current=null):i(s);else i&&(i.current=s)},[t])}var re=require("react");var vl=require("react"),$o=(0,vl.createContext)({});function Ze(e){return e&&typeof e=="object"&&Object.prototype.hasOwnProperty.call(e,"current")}function bl(e,t,r,o,n,s){var w,y;let{visualElement:i}=(0,re.useContext)(qe),a=(0,re.useContext)(Wo),c=(0,re.useContext)(vt),u=(0,re.useContext)(Go),l=u.reducedMotion,f=u.skipAnimations,m=(0,re.useRef)(null),p=(0,re.useRef)(!1);o=o||a.renderer,!m.current&&o&&(m.current=o(e,{visualState:t,parent:i,props:r,presenceContext:c,blockInitialAnimation:c?c.initial===!1:!1,reducedMotionConfig:l,skipAnimations:f,isSVG:s}),p.current&&m.current&&(m.current.manuallyAnimateOnMount=!0));let d=m.current,h=(0,re.useContext)($o);d&&!d.projection&&n&&(d.type==="html"||d.type==="svg")&&jf(m.current,r,n,h);let x=(0,re.useRef)(!1);(0,re.useInsertionEffect)(()=>{d&&x.current&&d.update(r,c)});let v=r[fr],b=(0,re.useRef)(!!v&&typeof window!="undefined"&&!((w=window.MotionHandoffIsComplete)!=null&&w.call(window,v))&&((y=window.MotionHasOptimisedAnimation)==null?void 0:y.call(window,v)));return $i(()=>{p.current=!0,d&&(x.current=!0,window.MotionIsMounted=!0,d.updateFeatures(),d.scheduleRenderMicrotask(),b.current&&d.animationState&&d.animationState.animateChanges())}),(0,re.useEffect)(()=>{d&&(!b.current&&d.animationState&&d.animationState.animateChanges(),b.current&&(queueMicrotask(()=>{var T;(T=window.MotionHandoffMarkAsComplete)==null||T.call(window,v)}),b.current=!1),d.enteringChildren=void 0)}),d}function jf(e,t,r,o){let{layoutId:n,layout:s,drag:i,dragConstraints:a,layoutScroll:c,layoutRoot:u,layoutAnchor:l,layoutCrossfade:f}=t;e.projection=new r(e.latestValues,t["data-framer-portal-id"]?void 0:wl(e.parent)),e.projection.setOptions({layoutId:n,layout:s,alwaysMeasureLayout:!!i||a&&Ze(a),visualElement:e,animationType:typeof s=="string"?s:"both",initialPromotionConfig:o,crossfade:f,layoutScroll:c,layoutRoot:u,layoutAnchor:l})}function wl(e){if(e)return e.options.allowProjection!==!1?e.projection:wl(e.parent)}function Xo(e,{forwardMotionProps:t=!1,type:r}={},o,n){var u,l;o&&rl(o);let s=r?r==="svg":Nt(e),i=s?gl:hl;function a(f,m){let p,d={...(0,zt.useContext)(Go),...f,layoutId:zf(f)},{isStatic:h}=d,x=ll(f),v=i(f,h);if(!h&&typeof window!="undefined"){Gf(d,o);let b=Wf(d);p=b.MeasureLayout,x.visualElement=bl(e,v,d,n,b.ProjectionNode,s)}return(0,Yo.jsxs)(qe.Provider,{value:x,children:[p&&x.visualElement?(0,Yo.jsx)(p,{visualElement:x.visualElement,...d}):null,dl(e,f,yl(v,x.visualElement,m),v,h,t,s)]})}a.displayName=`motion.${typeof e=="string"?e:`create(${(l=(u=e.displayName)!=null?u:e.name)!=null?l:""})`}`;let c=(0,zt.forwardRef)(a);return c[xl]=e,c}function zf({layoutId:e}){let t=(0,zt.useContext)(zr).id;return t&&e!==void 0?t+"-"+e:e}function Gf(e,t){let r=(0,zt.useContext)(Wo).strict}function Wf(e){let t=Uo(),{drag:r,layout:o}=t;if(!r&&!o)return{};let n={...r,...o};return{MeasureLayout:r!=null&&r.isEnabled(e)||o!=null&&o.isEnabled(e)?n.MeasureLayout:void 0,ProjectionNode:n.ProjectionNode}}function Tl(e,t){if(typeof Proxy=="undefined")return Xo;let r=new Map,o=(s,i)=>Xo(s,i,e,t),n=(s,i)=>o(s,i);return new Proxy(n,{get:(s,i)=>i==="create"?o:(r.has(i)||r.set(i,Xo(i,void 0,e,t)),r.get(i))})}var Sl=require("react");var Vl=(e,t)=>{var o;return((o=t.isSVG)!=null?o:Nt(e))?new Dr(t):new Cr(t,{allowProjection:e!==Sl.Fragment})};var qo=class extends q{constructor(t){super(t),t.animationState||(t.animationState=mi(t))}updateAnimationControlsSubscription(){let{animate:t}=this.node.getProps();Ie(t)&&(this.unmountControls=t.subscribe(this.node))}mount(){this.updateAnimationControlsSubscription()}update(){let{animate:t}=this.node.getProps(),{animate:r}=this.node.prevProps||{};t!==r&&this.updateAnimationControlsSubscription()}unmount(){var t;this.node.animationState.reset(),(t=this.unmountControls)==null||t.call(this)}};var Uf=0,Zo=class extends q{constructor(){super(...arguments),this.id=Uf++,this.isExitComplete=!1}update(){var s;if(!this.node.presenceContext)return;let{isPresent:t,onExitComplete:r}=this.node.presenceContext,{isPresent:o}=this.node.prevPresenceContext||{};if(!this.node.animationState||t===o)return;if(t&&o===!1){if(this.isExitComplete){let{initial:i,custom:a}=this.node.getProps();if(typeof i=="string"||typeof i=="object"&&i!==null&&!Array.isArray(i)){let c=le(this.node,i,a);if(c){let{transition:u,transitionEnd:l,...f}=c;for(let m in f)(s=this.node.getValue(m))==null||s.jump(f[m])}}this.node.animationState.reset(),this.node.animationState.animateChanges()}else this.node.animationState.setActive("exit",!1);this.isExitComplete=!1;return}let n=this.node.animationState.setActive("exit",!t);r&&!t&&n.then(()=>{this.isExitComplete=!0,r(this.id)})}mount(){let{register:t,onExitComplete:r}=this.node.presenceContext||{};r&&r(this.id),t&&(this.unmount=t(this.id))}unmount(){}};var Pl={animation:{Feature:qo},exit:{Feature:Zo}};function Be(e){return{point:{x:e.pageX,y:e.pageY}}}var Cl=e=>t=>ct(t)&&e(t,Be(t));function Je(e,t,r,o){return Ce(e,t,Cl(r),o)}var Jo=({current:e})=>e?e.ownerDocument.defaultView:null;var El=(e,t)=>Math.abs(e-t);function Al(e,t){let r=El(e.x,t.x),o=El(e.y,t.y);return Math.sqrt(r**2+o**2)}var Ml=new Set(["auto","scroll"]),Gt=class{constructor(t,r,{transformPagePoint:o,contextWindow:n=window,dragSnapToOrigin:s=!1,distanceThreshold:i=3,element:a}={}){if(this.startEvent=null,this.lastMoveEvent=null,this.lastMoveEventInfo=null,this.lastRawMoveEventInfo=null,this.handlers={},this.contextWindow=window,this.scrollPositions=new Map,this.removeScrollListeners=null,this.onElementScroll=d=>{this.handleScroll(d.target)},this.onWindowScroll=()=>{this.handleScroll(window)},this.updatePoint=()=>{if(!(this.lastMoveEvent&&this.lastMoveEventInfo))return;this.lastRawMoveEventInfo&&(this.lastMoveEventInfo=Qo(this.lastRawMoveEventInfo,this.transformPagePoint));let d=Ai(this.lastMoveEventInfo,this.history),h=this.startEvent!==null,x=Al(d.offset,{x:0,y:0})>=this.distanceThreshold;if(!h&&!x)return;let{point:v}=d,{timestamp:b}=W;this.history.push({...v,timestamp:b});let{onStart:w,onMove:y}=this.handlers;h||(w&&w(this.lastMoveEvent,d),this.startEvent=this.lastMoveEvent),y&&y(this.lastMoveEvent,d)},this.handlePointerMove=(d,h)=>{this.lastMoveEvent=d,this.lastRawMoveEventInfo=h,this.lastMoveEventInfo=Qo(h,this.transformPagePoint),A.update(this.updatePoint,!0)},this.handlePointerUp=(d,h)=>{this.end();let{onEnd:x,onSessionEnd:v,resumeAnimation:b}=this.handlers;if((this.dragSnapToOrigin||!this.startEvent)&&b&&b(),!(this.lastMoveEvent&&this.lastMoveEventInfo))return;let w=Ai(d.type==="pointercancel"?this.lastMoveEventInfo:Qo(h,this.transformPagePoint),this.history);this.startEvent&&x&&x(d,w),v&&v(d,w)},!ct(t))return;this.dragSnapToOrigin=s,this.handlers=r,this.transformPagePoint=o,this.distanceThreshold=i,this.contextWindow=n||window;let c=Be(t),u=Qo(c,this.transformPagePoint),{point:l}=u,{timestamp:f}=W;this.history=[{...l,timestamp:f}];let{onSessionStart:m}=r;m&&m(t,Ai(u,this.history));let p={passive:!0,capture:!0};this.removeListeners=ve(Je(this.contextWindow,"pointermove",this.handlePointerMove,p),Je(this.contextWindow,"pointerup",this.handlePointerUp,p),Je(this.contextWindow,"pointercancel",this.handlePointerUp,p)),a&&this.startScrollTracking(a)}startScrollTracking(t){let r=t.parentElement;for(;r;){let o=getComputedStyle(r);(Ml.has(o.overflowX)||Ml.has(o.overflowY))&&this.scrollPositions.set(r,{x:r.scrollLeft,y:r.scrollTop}),r=r.parentElement}this.scrollPositions.set(window,{x:window.scrollX,y:window.scrollY}),window.addEventListener("scroll",this.onElementScroll,{capture:!0}),window.addEventListener("scroll",this.onWindowScroll),this.removeScrollListeners=()=>{window.removeEventListener("scroll",this.onElementScroll,{capture:!0}),window.removeEventListener("scroll",this.onWindowScroll)}}handleScroll(t){let r=this.scrollPositions.get(t);if(!r)return;let o=t===window,n=o?{x:window.scrollX,y:window.scrollY}:{x:t.scrollLeft,y:t.scrollTop},s={x:n.x-r.x,y:n.y-r.y};s.x===0&&s.y===0||(o?this.lastMoveEventInfo&&(this.lastMoveEventInfo.point.x+=s.x,this.lastMoveEventInfo.point.y+=s.y):this.history.length>0&&(this.history[0].x-=s.x,this.history[0].y-=s.y),this.scrollPositions.set(t,n),A.update(this.updatePoint,!0))}updateHandlers(t){this.handlers=t}end(){this.removeListeners&&this.removeListeners(),this.removeScrollListeners&&this.removeScrollListeners(),this.scrollPositions.clear(),se(this.updatePoint)}};function Qo(e,t){return t?{point:t(e.point)}:e}function Dl(e,t){return{x:e.x-t.x,y:e.y-t.y}}function Ai({point:e},t){return{point:e,delta:Dl(e,Rl(t)),offset:Dl(e,Hf(t)),velocity:Kf(t,.1)}}function Hf(e){return e[0]}function Rl(e){return e[e.length-1]}function Kf(e,t){if(e.length<2)return{x:0,y:0};let r=e.length-1,o=null,n=Rl(e);for(;r>=0&&(o=e[r],!(n.timestamp-o.timestamp>H(t)));)r--;if(!o)return{x:0,y:0};o===e[0]&&e.length>2&&n.timestamp-o.timestamp>H(t)*2&&(o=e[1]);let s=Z(n.timestamp-o.timestamp);if(s===0)return{x:0,y:0};let i={x:(n.x-o.x)/s,y:(n.y-o.y)/s};return i.x===1/0&&(i.x=0),i.y===1/0&&(i.y=0),i}function Bl(e,{min:t,max:r},o){return t!==void 0&&e<t?e=o?D(t,e,o.min):Math.max(e,t):r!==void 0&&e>r&&(e=o?D(r,e,o.max):Math.min(e,r)),e}function kl(e,t,r){return{min:t!==void 0?e.min+t:void 0,max:r!==void 0?e.max+r-(e.max-e.min):void 0}}function Fl(e,{top:t,left:r,bottom:o,right:n}){return{x:kl(e.x,r,n),y:kl(e.y,t,o)}}function Ll(e,t){let r=t.min-e.min,o=t.max-e.max;return t.max-t.min<e.max-e.min&&([r,o]=[o,r]),{min:r,max:o}}function Nl(e,t){return{x:Ll(e.x,t.x),y:Ll(e.y,t.y)}}function jl(e,t){let r=.5,o=_(e),n=_(t);return n>o?r=we(t.min,t.max-o,e.min):o>n&&(r=we(e.min,e.max-n,t.min)),Y(0,1,r)}function zl(e,t){let r={};return t.min!==void 0&&(r.min=t.min-e.min),t.max!==void 0&&(r.max=t.max-e.min),r}var en=.35;function Gl(e=en){return e===!1?e=0:e===!0&&(e=en),{x:Il(e,"left","right"),y:Il(e,"top","bottom")}}function Il(e,t,r){return{min:Ol(e,t),max:Ol(e,r)}}function Ol(e,t){return typeof e=="number"?e:e[t]||0}var _f=new WeakMap,rn=class{constructor(t){this.openDragLock=null,this.isDragging=!1,this.currentDirection=null,this.originPoint={x:0,y:0},this.constraints=!1,this.hasMutatedConstraints=!1,this.elastic=B(),this.latestPointerEvent=null,this.latestPanInfo=null,this.visualElement=t}start(t,{snapToCursor:r=!1,distanceThreshold:o}={}){let{presenceContext:n}=this.visualElement;if(n&&n.isPresent===!1)return;let s=f=>{r&&this.snapToCursor(Be(f).point),this.stopAnimation()},i=(f,m)=>{let{drag:p,dragPropagation:d,onDragStart:h}=this.getProps();if(p&&!d&&(this.openDragLock&&this.openDragLock(),this.openDragLock=$n(p),!this.openDragLock))return;this.latestPointerEvent=f,this.latestPanInfo=m,this.isDragging=!0,this.currentDirection=null,this.resolveConstraints(),this.visualElement.projection&&(this.visualElement.projection.isAnimationBlocked=!0,this.visualElement.projection.target=void 0),ce(v=>{let b=this.getAxisMotionValue(v).get()||0;if(ee.test(b)){let{projection:w}=this.visualElement;if(w&&w.layout){let y=w.layout.layoutBox[v];y&&(b=_(y)*(parseFloat(b)/100))}}this.originPoint[v]=b}),h&&A.update(()=>h(f,m),!1,!0),Mt(this.visualElement,"transform");let{animationState:x}=this.visualElement;x&&x.setActive("whileDrag",!0)},a=(f,m)=>{this.latestPointerEvent=f,this.latestPanInfo=m;let{dragPropagation:p,dragDirectionLock:d,onDirectionLock:h,onDrag:x}=this.getProps();if(!p&&!this.openDragLock)return;let{offset:v}=m;if(d&&this.currentDirection===null){this.currentDirection=Yf(v),this.currentDirection!==null&&h&&h(this.currentDirection);return}this.updateAxis("x",m.point,v),this.updateAxis("y",m.point,v),this.visualElement.render(),x&&A.update(()=>x(f,m),!1,!0)},c=(f,m)=>{this.latestPointerEvent=f,this.latestPanInfo=m,this.stop(f,m),this.latestPointerEvent=null,this.latestPanInfo=null},u=()=>{let{dragSnapToOrigin:f}=this.getProps();(f||this.constraints)&&this.startAnimation({x:0,y:0})},{dragSnapToOrigin:l}=this.getProps();this.panSession=new Gt(t,{onSessionStart:s,onStart:i,onMove:a,onSessionEnd:c,resumeAnimation:u},{transformPagePoint:this.visualElement.getTransformPagePoint(),dragSnapToOrigin:l,distanceThreshold:o,contextWindow:Jo(this.visualElement),element:this.visualElement.current})}stop(t,r){let o=t||this.latestPointerEvent,n=r||this.latestPanInfo,s=this.isDragging;if(this.cancel(),!s||!n||!o)return;let{velocity:i}=n;this.startAnimation(i);let{onDragEnd:a}=this.getProps();a&&A.postRender(()=>a(o,n))}cancel(){this.isDragging=!1;let{projection:t,animationState:r}=this.visualElement;t&&(t.isAnimationBlocked=!1),this.endPanSession();let{dragPropagation:o}=this.getProps();!o&&this.openDragLock&&(this.openDragLock(),this.openDragLock=null),r&&r.setActive("whileDrag",!1)}endPanSession(){this.panSession&&this.panSession.end(),this.panSession=void 0}updateAxis(t,r,o){let{drag:n}=this.getProps();if(!o||!tn(t,n,this.currentDirection))return;let s=this.getAxisMotionValue(t),i=this.originPoint[t]+o[t];this.constraints&&this.constraints[t]&&(i=Bl(i,this.constraints[t],this.elastic[t])),s.set(i)}resolveConstraints(){var s;let{dragConstraints:t,dragElastic:r}=this.getProps(),o=this.visualElement.projection&&!this.visualElement.projection.layout?this.visualElement.projection.measure(!1):(s=this.visualElement.projection)==null?void 0:s.layout,n=this.constraints;t&&Ze(t)?this.constraints||(this.constraints=this.resolveRefConstraints()):t&&o?this.constraints=Fl(o.layoutBox,t):this.constraints=!1,this.elastic=Gl(r),n!==this.constraints&&!Ze(t)&&o&&this.constraints&&!this.hasMutatedConstraints&&ce(i=>{this.constraints!==!1&&this.getAxisMotionValue(i)&&(this.constraints[i]=zl(o.layoutBox[i],this.constraints[i]))})}resolveRefConstraints(){let{dragConstraints:t,onMeasureDragConstraints:r}=this.getProps();if(!t||!Ze(t))return!1;let o=t.current;ie(o!==null,"If `dragConstraints` is set as a React ref, that ref must be passed to another component's `ref` prop.","drag-constraints-ref");let{projection:n}=this.visualElement;if(!n||!n.layout)return!1;n.root&&(n.root.scroll=void 0,n.root.updateScroll());let s=ci(o,n.root,this.visualElement.getTransformPagePoint()),i=Nl(n.layout.layoutBox,s);if(r){let a=r(oi(i));this.hasMutatedConstraints=!!a,a&&(i=wr(a))}return i}startAnimation(t){let{drag:r,dragMomentum:o,dragElastic:n,dragTransition:s,dragSnapToOrigin:i,onDragTransitionEnd:a}=this.getProps(),c=this.constraints||{},u=ce(l=>{if(!tn(l,r,this.currentDirection))return;let f=c&&c[l]||{};(i===!0||i===l)&&(f={min:0,max:0});let m=n?200:1e6,p=n?40:1e7,d={type:"inertia",velocity:o?t[l]:0,bounceStiffness:m,bounceDamping:p,timeConstant:750,restDelta:1,restSpeed:10,...s,...f};return this.startAxisValueAnimation(l,d)});return Promise.all(u).then(a)}startAxisValueAnimation(t,r){let o=this.getAxisMotionValue(t);return Mt(this.visualElement,t),o.start(it(t,o,0,r,this.visualElement,!1))}stopAnimation(){ce(t=>this.getAxisMotionValue(t).stop())}getAxisMotionValue(t){var s;let r=`_drag${t.toUpperCase()}`,n=this.visualElement.getProps()[r];return n||this.visualElement.getValue(t,(s=this.visualElement.latestValues[t])!=null?s:0)}snapToCursor(t){ce(r=>{let{drag:o}=this.getProps();if(!tn(r,o,this.currentDirection))return;let{projection:n}=this.visualElement,s=this.getAxisMotionValue(r);if(n&&n.layout){let{min:i,max:a}=n.layout.layoutBox[r],c=s.get()||0;s.set(t[r]-D(i,a,.5)+c)}})}scalePositionWithinConstraints(){if(!this.visualElement.current)return;let{drag:t,dragConstraints:r}=this.getProps(),{projection:o}=this.visualElement;if(!Ze(r)||!o||!this.constraints)return;this.stopAnimation();let n={x:0,y:0};ce(i=>{let a=this.getAxisMotionValue(i);if(a&&this.constraints!==!1){let c=a.get();n[i]=jl({min:c,max:c},this.constraints[i])}});let{transformTemplate:s}=this.visualElement.getProps();this.visualElement.current.style.transform=s?s({},""):"none",o.root&&o.root.updateScroll(),o.updateLayout(),this.constraints=!1,this.resolveConstraints(),ce(i=>{if(!tn(i,t,null))return;let a=this.getAxisMotionValue(i),{min:c,max:u}=this.constraints[i];a.set(D(c,u,n[i]))}),this.visualElement.render()}addListeners(){if(!this.visualElement.current)return;_f.set(this.visualElement,this);let t=this.visualElement.current,r=Je(t,"pointerdown",u=>{let{drag:l,dragListener:f=!0}=this.getProps(),m=u.target,p=m!==t&&Zn(m);l&&f&&!p&&this.start(u)}),o,n=()=>{let{dragConstraints:u}=this.getProps();Ze(u)&&u.current&&(this.constraints=this.resolveRefConstraints(),o||(o=$f(t,u.current,()=>this.scalePositionWithinConstraints())))},{projection:s}=this.visualElement,i=s.addEventListener("measure",n);s&&!s.layout&&(s.root&&s.root.updateScroll(),s.updateLayout()),A.read(n);let a=Ce(window,"resize",()=>this.scalePositionWithinConstraints()),c=s.addEventListener("didUpdate",(({delta:u,hasLayoutChanged:l})=>{this.isDragging&&l&&(ce(f=>{let m=this.getAxisMotionValue(f);m&&(this.originPoint[f]+=u[f].translate,m.set(m.get()+u[f].translate))}),this.visualElement.render())}));return()=>{a(),r(),i(),c&&c(),o&&o()}}getProps(){let t=this.visualElement.getProps(),{drag:r=!1,dragDirectionLock:o=!1,dragPropagation:n=!1,dragConstraints:s=!1,dragElastic:i=en,dragMomentum:a=!0}=t;return{...t,drag:r,dragDirectionLock:o,dragPropagation:n,dragConstraints:s,dragElastic:i,dragMomentum:a}}};function Wl(e){let t=!0;return()=>{if(t){t=!1;return}e()}}function $f(e,t,r){let o=Ao(e,Wl(r)),n=Ao(t,Wl(r));return()=>{o(),n()}}function tn(e,t,r){return(t===!0||t===e)&&(r===null||r===e)}function Yf(e,t=10){let r=null;return Math.abs(e.y)>t?r="y":Math.abs(e.x)>t&&(r="x"),r}var on=class extends q{constructor(t){super(t),this.removeGroupControls=j,this.removeListeners=j,this.controls=new rn(t)}mount(){let{dragControls:t}=this.node.getProps();t&&(this.removeGroupControls=t.subscribe(this.controls)),this.removeListeners=this.controls.addListeners()||j}update(){let{dragControls:t}=this.node.getProps(),{dragControls:r}=this.node.prevProps||{};t!==r&&(this.removeGroupControls(),t&&(this.removeGroupControls=t.subscribe(this.controls)))}unmount(){this.removeGroupControls(),this.removeListeners(),this.controls.isDragging||this.controls.endPanSession()}};var Mi=e=>(t,r)=>{e&&A.update(()=>e(t,r),!1,!0)},nn=class extends q{constructor(){super(...arguments),this.removePointerDownListener=j}onPointerDown(t){this.session=new Gt(t,this.createPanHandlers(),{transformPagePoint:this.node.getTransformPagePoint(),contextWindow:Jo(this.node)})}createPanHandlers(){let{onPanSessionStart:t,onPanStart:r,onPan:o,onPanEnd:n}=this.node.getProps();return{onSessionStart:Mi(t),onStart:Mi(r),onMove:Mi(o),onEnd:(s,i)=>{delete this.session,n&&A.postRender(()=>n(s,i))}}}mount(){this.removePointerDownListener=Je(this.node.current,"pointerdown",t=>this.onPointerDown(t))}update(){this.session&&this.session.updateHandlers(this.createPanHandlers())}unmount(){this.removePointerDownListener(),this.session&&this.session.end()}};var Ul=require("react/jsx-runtime");var Lr=require("react");var Di=!1,Ri=class extends Lr.Component{componentDidMount(){let{visualElement:t,layoutGroup:r,switchLayoutGroup:o,layoutId:n}=this.props,{projection:s}=t;s&&(r.group&&r.group.add(s),o&&o.register&&n&&o.register(s),Di&&s.root.didUpdate(),s.addEventListener("animationComplete",()=>{this.safeToRemove()}),s.setOptions({...s.options,layoutDependency:this.props.layoutDependency,onExitComplete:()=>this.safeToRemove()})),gt.hasEverUpdated=!0}getSnapshotBeforeUpdate(t){let{layoutDependency:r,visualElement:o,drag:n,isPresent:s}=this.props,{projection:i}=o;return i&&(i.isPresent=s,t.layoutDependency!==r&&i.setOptions({...i.options,layoutDependency:r}),Di=!0,n||t.layoutDependency!==r||r===void 0||t.isPresent!==s?i.willUpdate():this.safeToRemove(),t.isPresent!==s&&(s?i.promote():i.relegate()||A.postRender(()=>{let a=i.getStack();(!a||!a.members.length)&&this.safeToRemove()}))),null}componentDidUpdate(){let{visualElement:t,layoutAnchor:r}=this.props,{projection:o}=t;o&&(o.options.layoutAnchor=r,o.root.didUpdate(),lt.postRender(()=>{!o.currentAnimation&&o.isLead()&&this.safeToRemove()}))}componentWillUnmount(){let{visualElement:t,layoutGroup:r,switchLayoutGroup:o}=this.props,{projection:n}=t;Di=!0,n&&(n.scheduleCheckAfterUnmount(),r&&r.group&&r.group.remove(n),o&&o.deregister&&o.deregister(n))}safeToRemove(){let{safeToRemove:t}=this.props;t&&t()}render(){return null}};function sn(e){let[t,r]=Ja(),o=(0,Lr.useContext)(zr);return(0,Ul.jsx)(Ri,{...e,layoutGroup:o,switchLayoutGroup:(0,Lr.useContext)($o),isPresent:t,safeToRemove:r})}var Hl={pan:{Feature:nn},drag:{Feature:on,ProjectionNode:Rr,MeasureLayout:sn}};function Kl(e,t,r){let{props:o}=e;e.animationState&&o.whileHover&&e.animationState.setActive("whileHover",r==="Start");let n="onHover"+r,s=o[n];s&&A.postRender(()=>s(t,Be(t)))}var an=class extends q{mount(){let{current:t}=this.node;t&&(this.unmount=Yn(t,(r,o)=>(Kl(this.node,o,"Start"),n=>Kl(this.node,n,"End"))))}unmount(){}};var ln=class extends q{constructor(){super(...arguments),this.isActive=!1}onFocus(){let t=!1;try{t=this.node.current.matches(":focus-visible")}catch(r){t=!0}!t||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!0),this.isActive=!0)}onBlur(){!this.isActive||!this.node.animationState||(this.node.animationState.setActive("whileFocus",!1),this.isActive=!1)}mount(){this.unmount=ve(Ce(this.node.current,"focus",()=>this.onFocus()),Ce(this.node.current,"blur",()=>this.onBlur()))}unmount(){}};function _l(e,t,r){let{props:o}=e;if(e.current instanceof HTMLButtonElement&&e.current.disabled)return;e.animationState&&o.whileTap&&e.animationState.setActive("whileTap",r==="Start");let n="onTap"+(r==="End"?"":r),s=o[n];s&&A.postRender(()=>s(t,Be(t)))}var cn=class extends q{mount(){let{current:t}=this.node;if(!t)return;let{globalTapTarget:r,propagate:o}=this.node.props;this.unmount=Qn(t,(n,s)=>(_l(this.node,s,"Start"),(i,{success:a})=>_l(this.node,i,a?"End":"Cancel")),{useGlobalTarget:r,stopPropagation:(o==null?void 0:o.tap)===!1})}unmount(){}};var Li=new WeakMap,ki=new WeakMap,Xf=e=>{let t=Li.get(e.target);t&&t(e)},qf=e=>{e.forEach(Xf)};function Zf({root:e,...t}){let r=e||document;ki.has(r)||ki.set(r,{});let o=ki.get(r),n=JSON.stringify(t);return o[n]||(o[n]=new IntersectionObserver(qf,{root:e,...t})),o[n]}function $l(e,t,r){let o=Zf(t);return Li.set(e,r),o.observe(e),()=>{Li.delete(e),o.unobserve(e)}}var Jf={some:0,all:1},un=class extends q{constructor(){super(...arguments),this.hasEnteredView=!1,this.isInView=!1}startObserver(){var c;(c=this.stopObserver)==null||c.call(this);let{viewport:t={}}=this.node.getProps(),{root:r,margin:o,amount:n="some",once:s}=t,i={root:r?r.current:void 0,rootMargin:o,threshold:typeof n=="number"?n:Jf[n]},a=u=>{let{isIntersecting:l}=u;if(this.isInView===l||(this.isInView=l,s&&!l&&this.hasEnteredView))return;l&&(this.hasEnteredView=!0),this.node.animationState&&this.node.animationState.setActive("whileInView",l);let{onViewportEnter:f,onViewportLeave:m}=this.node.getProps(),p=l?f:m;p&&p(u)};this.stopObserver=$l(this.node.current,i,a)}mount(){this.startObserver()}update(){if(typeof IntersectionObserver=="undefined")return;let{props:t,prevProps:r}=this.node;["amount","margin","root"].some(Qf(t,r))&&this.startObserver()}unmount(){var t;(t=this.stopObserver)==null||t.call(this),this.hasEnteredView=!1,this.isInView=!1}};function Qf({viewport:e={}},{viewport:t={}}={}){return r=>e[r]!==t[r]}var Yl={inView:{Feature:un},tap:{Feature:cn},focus:{Feature:ln},hover:{Feature:an}};var Xl={layout:{ProjectionNode:Rr,MeasureLayout:sn}};var ql={...Pl,...Yl,...Hl,...Xl};var Ii=Tl(ql,Vl);var Oi=Ii;var g=require("react"),rc=require("react-dom"),Bi=new Set,Fi={open:!1,status:null,busy:!1};function ue(e){Fi=Object.assign({},Fi,e),Bi.forEach(function(t){t()})}function tm(e){return Bi.add(e),function(){Bi.delete(e)}}function rm(){return Fi}function oc(){return g.useSyncExternalStore(tm,rm)}async function Ae(e,t){var r={method:t===void 0?"GET":"POST",headers:{}};t!==void 0&&(r.headers["content-type"]="application/json",r.body=JSON.stringify(t));var o=await fetch(e,r),n=await o.text(),s=null;try{s=n===""?null:JSON.parse(n)}catch(i){s=null}return o.ok?s!==null?s:{ok:!1,error:"invalid JSON response"}:{ok:!1,error:"HTTP "+o.status+(s!==null&&s.error!==void 0?": "+s.error:"")}}function nc(e,t){try{var r=e(function(f){return f}),o=t===null?null:typeof t=="function"?t(function(f){return f}):null,n=r!=null?r.current:void 0;if(n!==void 0&&r!=null&&r.byId!=null){var s=r.byId[n];if(s!=null&&typeof s.cwd=="string"&&s.cwd!=="")return s.cwd}var i=o!=null&&Array.isArray(o.items)?o.items:[];if(n!==void 0)for(var a=0;a<i.length;a++){var c=i[a];if(c.sessionIds!=null&&c.sessionIds.indexOf(n)!==-1&&typeof c.path=="string"&&c.path!=="")return c.path}var u=o!=null?o.recentWorkspaceId:void 0;if(u!==void 0){for(var l=0;l<i.length;l++)if(i[l].workspaceId===u&&typeof i[l].path=="string"&&i[l].path!=="")return i[l].path}if(i.length>0&&typeof i[0].path=="string"&&i[0].path!=="")return i[0].path}catch(f){}}function om(e,t){if(e==null||typeof e.url!="string"||e.url==="")return null;var r=typeof t=="string"&&t!==""?t:e!=null&&e.cwd!=null?e.cwd:null;if(r==null||r==="")return e.url;var o=r.replace(/\\/g,"/"),n=o;return(/^[A-Za-z]:\//.test(o)||o.charCodeAt(0)!==47)&&(n="/"+o),e.url+"?folder="+encodeURIComponent(n)}var nm=["nw","n","ne","w","e","sw","s","se"],J=12,im=720,sm=520,ic=360,sc=260,Zl=24;function ac(e){if(e===!1)return 0;try{if(typeof document=="undefined")return 0;var t=document.querySelectorAll("[data-composer-seat]");if(t===null||t.length===0)return 0;for(var r=Number.POSITIVE_INFINITY,o=0,n=0;n<t.length;n++){var s=t[n].getBoundingClientRect();s===null||s.width<=0||(s.top<r&&(r=s.top),s.bottom>o&&(o=s.bottom))}if(!isFinite(r)||o<=0)return 0;var i=window.innerHeight;return i-o>24?0:Math.min(Math.max(1,i-r+8),420)}catch(a){return 0}}function Ee(){return{width:Math.max(1,window.innerWidth),height:Math.max(1,window.innerHeight)}}function dn(e,t){return{width:Math.max(1,e.width-J*2),height:Math.max(1,e.height-J*2-t)}}function Qe(e,t,r){return Math.min(r,Math.max(t,e))}function Ut(e,t,r){let o=dn(t,r),n=Qe(e.width,Math.min(ic,o.width),o.width),s=Qe(e.height,Math.min(sc,o.height),o.height);return{x:Qe(e.x,J,Math.max(J,t.width-J-n)),y:Qe(e.y,J,Math.max(J,t.height-J-r-s)),width:n,height:s}}function am(e,t,r){let o=dn(t,r),n=Math.min(im,o.width),s=Math.min(sm,o.height),i=lm(),a=i>0?i-8:t.height-J-r;return Ut({x:t.width-J-n-e*Zl,y:Math.max(J,a-s-e*Zl),width:n,height:s},t,r)}function lm(){try{if(typeof document=="undefined")return-1;var e=document.querySelectorAll("[data-composer-seat]");if(e===null||e.length===0)return-1;for(var t=Number.POSITIVE_INFINITY,r=0;r<e.length;r++){var o=e[r].getBoundingClientRect();o!==null&&o.width>0&&o.top<t&&(t=o.top)}return isFinite(t)?t:-1}catch(n){return-1}}function cm(e,t,r,o,n){return Ut({...e,x:e.x+t,y:e.y+r},o,n)}function um(e,t,r,o,n,s){let i=Ut(e,n,s),a=dn(n,s),c=Math.min(ic,a.width),u=Math.min(sc,a.height),l=n.height-J-s,f=i.x,m=i.x+i.width,p=i.y,d=i.y+i.height;return t.includes("w")&&(f=Qe(i.x+r,J,m-c)),t.includes("e")&&(m=Qe(m+r,f+c,n.width-J)),t.includes("n")&&(p=Qe(i.y+o,J,d-u)),t.includes("s")&&(d=Qe(d+o,p+u,l)),{x:f,y:p,width:m-f,height:d-p}}function fn(e,t){let r=dn(e,t);return{x:J,y:J,width:r.width,height:r.height}}var fm='.dshcs-root{position:fixed;inset:0;z-index:2147483000;pointer-events:none}.dshcs-win{--dshcs-accent:#5b6cff;pointer-events:auto;position:fixed;isolation:isolate;z-index:2147483000;display:flex;flex-direction:column;min-width:1px;min-height:1px;overflow:hidden;color:var(--dsw-alias-label-primary,#172033);background:var(--dsw-alias-bg-base,#fff);border:1px solid var(--dsw-alias-border-l2,#dfe3eb);border-radius:12px;box-shadow:0 1px 2px rgba(13,22,38,.08),0 18px 48px rgba(13,22,38,.2),0 0 0 1px rgba(255,255,255,.4) inset;transition:border-color .16s ease,box-shadow .16s ease}.dshcs-win:hover{border-color:color-mix(in srgb,var(--dshcs-accent) 28%,var(--dsw-alias-border-l2,#dfe3eb));box-shadow:0 2px 5px rgba(13,22,38,.1),0 22px 58px rgba(13,22,38,.24),0 0 0 1px rgba(255,255,255,.5) inset}.dshcs-win[data-interaction]{transition:none;user-select:none}.dshcs-win[data-interaction]::after{content:"";position:absolute;inset:0;z-index:18;background:transparent}.dshcs-win-max{border-radius:14px;z-index:2147483001;box-shadow:0 1px 2px rgba(13,22,38,.06),0 8px 24px rgba(13,22,38,.12)}.dshcs-win-max:hover{box-shadow:0 1px 2px rgba(13,22,38,.06),0 10px 28px rgba(13,22,38,.14)}.dshcs-win-snap{border-color:color-mix(in srgb,var(--dshcs-accent) 70%,var(--dsw-alias-border-l2,#dfe3eb));box-shadow:0 0 0 3px color-mix(in srgb,var(--dshcs-accent) 26%,transparent),0 22px 58px rgba(13,22,38,.24),0 0 0 1px rgba(255,255,255,.5) inset}.dshcs-snapghost{position:fixed;left:0;top:0;z-index:2147483000;pointer-events:none;display:grid;place-items:center;border:1.5px solid color-mix(in srgb,var(--dshcs-accent,#5b6cff) 85%,transparent);background:color-mix(in srgb,var(--dshcs-accent,#5b6cff) 11%,transparent);border-radius:12px;box-shadow:0 0 0 3px color-mix(in srgb,var(--dshcs-accent,#5b6cff) 20%,transparent),0 10px 34px rgba(13,22,38,.14)}.dshcs-snapghint{position:absolute;top:12px;left:50%;transform:translateX(-50%);padding:5px 14px;border-radius:999px;background:color-mix(in srgb,var(--dshcs-accent,#5b6cff) 92%,#172033);color:#fff;font-size:12px;font-weight:650;letter-spacing:.02em;white-space:nowrap;box-shadow:0 6px 18px rgba(13,22,38,.3)}.dshcs-drag{position:absolute;top:0;left:0;right:0;height:14px;z-index:26;cursor:grab;touch-action:none;user-select:none}.dshcs-win[data-interaction=move] .dshcs-drag{cursor:grabbing}.dshcs-win-max .dshcs-drag{cursor:default}.dshcs-drag:hover{background:color-mix(in srgb,var(--dsw-alias-label-primary,#172033) 5%,transparent)}.dshcs-body{position:relative;display:flex;flex:1;min-width:0;min-height:0;flex-direction:column;background:var(--dsw-alias-bg-base,#fff)}.dshcs-body[hidden]{display:none}.dshcs-frame{display:block;position:absolute;inset:0;z-index:1;width:100%;height:100%;border:0;background:var(--dsw-alias-bg-base,#fff)}.dshcs-empty{position:relative;z-index:2;flex:1;display:flex;align-items:center;justify-content:center;padding:44px 24px 24px}.dshcs-emptybox{max-width:560px;text-align:left;background:var(--dsw-alias-bg-layer-2,#f7f8fb);border:1px solid var(--dsw-alias-border-l2,#dfe3eb);border-radius:12px;padding:16px 18px}.dshcs-error{color:var(--dsw-alias-label-error,#d92d20);white-space:pre-wrap;word-break:break-all;font-family:ui-monospace,Consolas,monospace;font-size:12px;margin:8px 0 0}.dshcs-hint{color:var(--dsw-alias-label-tertiary,#7d8798);font-size:12px;margin:6px 0 0}.dshcs-resize{position:absolute;z-index:24;display:block;touch-action:none}.dshcs-resize-n,.dshcs-resize-s{left:16px;right:16px;height:10px;cursor:ns-resize}.dshcs-resize-n{top:0}.dshcs-resize-s{bottom:0}.dshcs-resize-w,.dshcs-resize-e{top:16px;bottom:16px;width:10px;cursor:ew-resize}.dshcs-resize-w{left:0}.dshcs-resize-e{right:0}.dshcs-resize-nw,.dshcs-resize-ne,.dshcs-resize-sw,.dshcs-resize-se{width:18px;height:18px}.dshcs-resize-nw{left:0;top:0;cursor:nwse-resize}.dshcs-resize-ne{right:0;top:0;cursor:nesw-resize}.dshcs-resize-sw{left:0;bottom:0;cursor:nesw-resize}.dshcs-resize-se{right:0;bottom:0;cursor:nwse-resize}.dshcs-resize-se::after{content:"";position:absolute;right:4px;bottom:4px;width:7px;height:7px;border-right:1.5px solid color-mix(in srgb,var(--dsw-alias-label-tertiary,#7d8798) 58%,transparent);border-bottom:1.5px solid color-mix(in srgb,var(--dsw-alias-label-tertiary,#7d8798) 58%,transparent);border-radius:0 0 2px}.dshcs-ball{position:fixed;width:38px;height:38px;padding:0;border:1px solid color-mix(in srgb,var(--dsw-alias-border-l2,#dfe3eb) 80%,transparent);border-radius:50%;display:grid;place-items:center;cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none;z-index:2147483002;background:color-mix(in srgb,var(--dsw-alias-bg-layer-2,#f2f4f8) 88%,transparent);backdrop-filter:blur(8px) saturate(1.2);box-shadow:0 8px 20px rgba(13,22,38,.18),0 1px 2px rgba(13,22,38,.1);transition:transform .16s ease,box-shadow .16s ease,background .16s ease,border-color .16s ease}.dshcs-ball img,.dshcs-ball svg{-webkit-user-drag:none;user-drag:none}.dshcs-ball[data-dragging]{cursor:grabbing;transform:scale(1.06);box-shadow:0 14px 28px rgba(13,22,38,.28),0 2px 6px rgba(13,22,38,.16)}.dshcs-ball:hover{transform:scale(1.06);box-shadow:0 10px 24px rgba(13,22,38,.22),0 1px 2px rgba(13,22,38,.1)}.dshcs-ball:active{transform:scale(.94)}.dshcs-ball:focus-visible{outline:2px solid color-mix(in srgb,var(--dshcs-accent) 65%,transparent);outline-offset:2px}.dshcs-ball-open{background:color-mix(in srgb,var(--dshcs-accent) 14%,var(--dsw-alias-bg-layer-2,#f2f4f8));border-color:color-mix(in srgb,var(--dshcs-accent) 55%,var(--dsw-alias-border-l2,#dfe3eb));box-shadow:0 0 0 3px color-mix(in srgb,var(--dshcs-accent) 22%,transparent),0 0 20px color-mix(in srgb,var(--dshcs-accent) 38%,transparent),0 8px 20px rgba(13,22,38,.16);transform:scale(1.08)}.dshcs-ball-dot{position:absolute;top:-2px;right:-2px;width:9px;height:9px;border-radius:50%;background:#20a66a;border:2px solid var(--dsw-alias-bg-base,#fff)}.dshcs-ball-dot[data-status=starting]{background:#d78b25}.dshcs-ball-dot[data-status=error]{background:#f85149}.dshcs-ball-dot[data-status=idle]{background:#7d8798}.dshcs-ball-dot[data-status=running]::after{content:"";position:absolute;inset:-4px;border-radius:50%;border:1px solid currentColor;opacity:.3;animation:dshcs-pulse 2s ease-out infinite}@keyframes dshcs-pulse{0%{transform:scale(.7);opacity:.35}70%,100%{transform:scale(1.65);opacity:0}}',Jl="dsh-code-server/styles";typeof document!="undefined"&&document.querySelector("style[data-dshcs="+JSON.stringify(Jl)+"]")===null&&(mn=document.createElement("style"),mn.setAttribute("data-dshcs",Jl),mn.textContent=fm,document.head.appendChild(mn));var mn;function mm(e){var[t,r]=g.useState(!1),o=g.useRef(e.url);return g.useEffect(function(){o.current!==e.url&&(o.current=e.url,r(!1))},[e.url]),e.url!=null&&t!==!0?g.createElement("img",{src:e.url,key:"img-"+e.url,alt:"","aria-hidden":!0,draggable:!1,onError:function(){r(!0)},style:{width:20,height:20,display:"block",objectFit:"contain",borderRadius:3,WebkitUserDrag:"none",userSelect:"none"}}):g.createElement("svg",{viewBox:"0 0 18 18","aria-hidden":!0,style:{width:17,height:17}},g.createElement("rect",{x:"3",y:"3",width:"12",height:"12",rx:"2",fill:"none",stroke:"currentColor",strokeWidth:1.4}),g.createElement("path",{d:"M3 7h12M7 3v12",fill:"none",stroke:"currentColor",strokeWidth:1.4}))}var Ql=38,Wt=8,lc="dshcs-ball-pos";function Ni(e){var t=Math.max(Wt,window.innerWidth-Wt-Ql),r=Math.max(Wt,window.innerHeight-Wt-Ql);return{x:Math.min(t,Math.max(Wt,e.x)),y:Math.min(r,Math.max(Wt,e.y))}}function pm(){try{var e=window.localStorage.getItem(lc);if(e==null)return null;var t=JSON.parse(e);if(t!=null&&typeof t.x=="number"&&typeof t.y=="number"&&isFinite(t.x)&&isFinite(t.y))return Ni(t)}catch(r){}return null}function dm(e){try{window.localStorage.setItem(lc,JSON.stringify(e))}catch(t){}}function hm(e){var t=oc(),r=t.status,o=r!=null?r.env:null,n=r!=null&&r.running===!0,s=n?"running":r!=null&&r.status==="starting"?"starting":r!=null&&r.status==="error"?"error":"idle",i=ac(r!=null?r.reserveComposer:!0),a=t.open===!0,c=n&&r!=null&&typeof r.url=="string"?r.url+"_static/src/browser/media/favicon-dark-support.svg":null,[u,l]=g.useState(pm),[f,m]=g.useState(!1),p=g.useRef(null),d=g.useRef(!1);if(g.useEffect(function(){var y=function(){l(function(T){return T==null?T:Ni(T)})};return window.addEventListener("resize",y),function(){window.removeEventListener("resize",y)}},[]),o!=null&&o.ok!==!0)return null;var h=function(y){if(y.button===0){var T=y.currentTarget,C=T.getBoundingClientRect();p.current={pointerId:y.pointerId,dx:y.clientX-C.left,dy:y.clientY-C.top,moved:!1},d.current=!1,m(!0);try{T.setPointerCapture(y.pointerId)}catch(E){}}},x=function(y){var T=p.current;if(!(T==null||y.pointerId!==T.pointerId)){var C=y.clientX-T.dx,E=y.clientY-T.dy;(Math.abs(C-(u!=null?u.x:0))>2||Math.abs(E-(u!=null?u.y:0))>2)&&(T.moved=!0),l(Ni({x:C,y:E}))}},v=function(){var y=p.current;p.current=null,m(!1),y!=null&&y.moved===!0&&(d.current=!0),y!=null&&y.moved===!0&&l(function(T){return T!=null&&dm(T),T})},b=function(){if(d.current===!0){d.current=!1;return}if(r!=null&&r.windowedOpen===!0){var y=nc(e&&e.useSessions,e&&e.useWorkspaces),T=function(C){var E=om(C,y);E!=null&&typeof window.open=="function"&&window.open(E,"_blank","noopener")};if(r.running===!0){T(r);return}if(t.busy===!0)return;ue({busy:!0}),Ae("/code-server/start",typeof y=="string"?{cwd:y}:{}).then(function(C){ue({status:C,busy:!1}),T(C)}).catch(function(){ue({busy:!1})});return}ue({open:!a})},w=u!=null?{left:u.x,top:u.y}:{right:14,bottom:i>0?i+10:18};return rc.createPortal(g.createElement("button",{type:"button",className:"dshcs-ball"+(a?" dshcs-ball-open":""),style:w,"data-dragging":f===!0?"":void 0,title:r!=null&&r.windowedOpen===!0?"\u5728\u6D4F\u89C8\u5668\u65B0\u6807\u7B7E\u9875\u6253\u5F00 Code Server(\u53EF\u62D6\u52A8)":a?"\u6536\u8D77 Code Server(Esc)":"\u6253\u5F00 Code Server(\u53EF\u62D6\u52A8)","aria-label":a?"\u6536\u8D77 Code Server(Esc)":"\u6253\u5F00 Code Server","aria-expanded":a,onPointerDown:h,onPointerMove:x,onPointerUp:v,onPointerCancel:v,onDragStart:function(y){y&&y.preventDefault&&y.preventDefault()},onClick:b},g.createElement(mm,{url:c}),g.createElement("span",{className:"dshcs-ball-dot","data-status":s,"aria-hidden":!0})),document.body)}function gm(e){var t=oc(),r=t.status,o=r!=null&&r.ok===!0&&r.running===!0,n=r!=null&&r.status==="starting",s=r!=null&&r.ok===!1,i=nc(e&&e.useSessions,e&&e.useWorkspaces),a=g.useRef(void 0),[c,u]=g.useState(0),l=ac(r!=null?r.reserveComposer:!0),[f,m]=g.useState(!1),[p,d]=g.useState(null),[h,x]=g.useState(function(){return am(0,Ee(),l)}),v=g.useRef(h),b=g.useRef(function(){});v.current=h,g.useEffect(function(){var R=function(){x(function(Q){return f?fn(Ee(),l):Ut(Q,Ee(),l)})};return window.addEventListener("resize",R),function(){window.removeEventListener("resize",R)}},[f,l]),g.useEffect(function(){x(function(R){return Ut(R,Ee(),l)})},[l]),g.useEffect(function(){return function(){b.current()}},[]);var w=12,y=4,[T,C]=g.useState(!1),E=g.useRef(null),P=function(R,Q){if(R.button===0){R.preventDefault(),R.stopPropagation(),b.current();var ne=R.currentTarget.ownerDocument.defaultView;if(ne!==null){var pe=R.pointerId,Br=R.currentTarget,ji=f,Ht=ji?fn(Ee(),l):v.current,fc=Ht.width>0?(R.clientX-Ht.x)/Ht.width:0,mc=Math.min(14,Math.max(0,R.clientY-Ht.y)),N={pointerId:pe,origin:{x:R.clientX,y:R.clientY},start:Ht,ratio:fc,grabY:mc,wasMaximized:ji,restored:!1,snapped:!1,moved:!1};E.current=N,d(Q);try{Br.setPointerCapture(pe)}catch(ae){}var zi=function(ae){if(ae.pointerId===pe){if(Q!=="move"){x(um(N.start,Q,ae.clientX-N.origin.x,ae.clientY-N.origin.y,Ee(),l));return}var Wi=ae.clientX-N.origin.x,Nr=ae.clientY-N.origin.y;if(Math.abs(Wi)+Math.abs(Nr)>3&&(N.moved=!0),N.wasMaximized&&!N.restored){if(Nr<y)return;var gn=v.current,jr={x:ae.clientX-gn.width*Math.min(.9,Math.max(.1,N.ratio)),y:ae.clientY-N.grabY,width:gn.width,height:gn.height};jr=Ut(jr,Ee(),l),N.restored=!0,N.start=jr,N.origin={x:ae.clientX,y:ae.clientY},m(!1),x(jr);return}var pc=N.start.y+Nr,dc=cm(N.start,Wi,Nr,Ee(),l);x(dc);var xn=pc<=w;xn!==N.snapped&&(N.snapped=xn,C(xn))}},Gi=function(){ne.removeEventListener("pointermove",zi),ne.removeEventListener("pointerup",Fr),ne.removeEventListener("pointercancel",Fr),b.current=function(){},E.current=null;try{Br.releasePointerCapture(pe)}catch(ae){}},Fr=function(ae){ae.pointerId===pe&&(Gi(),d(null),(!N.wasMaximized||N.restored===!0)&&(N.snapped===!0&&N.moved===!0&&m(!0),N.snapped===!0&&C(!1)))};b.current=Gi,ne.addEventListener("pointermove",zi),ne.addEventListener("pointerup",Fr),ne.addEventListener("pointercancel",Fr)}}},U=function(){m(function(R){return!R})},V=function(R){R.target.closest("[data-window-control]")===null&&P(R,"move")},I=function(R){R.target.closest("[data-window-control]")===null&&U()};if(g.useEffect(function(){if(!t.open)return;var R=!1;async function Q(){ue({busy:!0});var ne=await Ae("/code-server/status");if(!R){if(ne!=null&&ne.ok===!0&&ne.running===!0){ue({status:ne,busy:!1});return}var pe=await Ae("/code-server/start",typeof i=="string"?{cwd:i}:{});R||ue({status:pe,busy:!1})}}return Q(),function(){R=!0}},[t.open]),g.useEffect(function(){if(!t.open||typeof i!="string"||i===""||a.current===i)return;var R=a.current!==void 0&&a.current!==i;a.current=i;var Q=!1;async function ne(){ue({busy:!0});var pe=await Ae("/code-server/start",{cwd:i});Q||(ue({status:pe,busy:!1}),R&&pe!=null&&pe.ok===!0&&pe.running===!0&&u(function(Br){return Br+1}))}return ne(),function(){Q=!0}},[t.open,i]),g.useEffect(function(){t.open||(a.current=void 0)},[t.open]),g.useEffect(function(){if(t.open){var R=window.setInterval(function(){Ae("/code-server/status").then(function(Q){ue({status:Q})})},3e3);return function(){window.clearInterval(R)}}},[t.open]),g.useEffect(function(){if(!t.open)return;function R(Q){Q.key==="Escape"&&ue({open:!1})}return window.addEventListener("keydown",R),function(){window.removeEventListener("keydown",R)}},[t.open]),!t.open)return null;var K=r!=null&&typeof r.url=="string"?r.url:null,fe=o&&r!=null&&typeof r.cwd=="string"&&r.cwd!==""?r.cwd:null,M=null;if(fe!==null){var L=fe.replace(/\\/g,"/");M=L,(/^[A-Za-z]:\//.test(L)||L.charCodeAt(0)!==47)&&(M="/"+L)}var F=K!==null?K+(M!==null?"?folder="+encodeURIComponent(M):""):null,Ir;if(o&&F!==null)Ir=g.createElement("iframe",{key:c,className:"dshcs-frame",src:F,title:"code-server",sandbox:"allow-scripts allow-same-origin allow-forms allow-modals allow-popups allow-pointer-lock"});else{var $=s&&r!=null&&r.error?r.error:n?"\u6B63\u5728\u542F\u52A8 code-server\u2026":"code-server \u672A\u8FD0\u884C";Ir=g.createElement("div",{className:"dshcs-empty"},g.createElement("div",{className:"dshcs-emptybox"},g.createElement("div",null,n?"\u6B63\u5728\u542F\u52A8 code-server\u2026":s?"code-server \u542F\u52A8\u5931\u8D25":"code-server \u672A\u8FD0\u884C"),g.createElement("pre",{className:"dshcs-error"},$),g.createElement("p",{className:"dshcs-hint"},"\u5B89\u88C5\u547D\u4EE4(Windows \u539F\u751F):npm install -g code-server@latest(\u9700\u914D\u5957\u6700\u65B0\u7248 node-gyp \u4E0E VS Spectre \u7F13\u89E3\u5E93);\u6216\u5728 cordis.patch.yml \u7684 code-server config \u4E2D\u8BBE\u7F6E bin \u6307\u5411\u5DF2\u5B89\u88C5\u4F4D\u7F6E\u3002\u7AEF\u53E3 "+(r!=null?r.port:"8090")+" \u88AB\u5360\u7528\u65F6\u8BF7\u91CA\u653E\u6216\u4FEE\u6539 port \u914D\u7F6E\u3002")))}var oe=["dshcs-win",f?"dshcs-win-max":"",T?"dshcs-win-snap":""].filter(Boolean).join(" "),me=f?fn(Ee(),l):h,Fe={x:me.x,y:me.y,width:me.width,height:me.height},hn=p!==null?{duration:0}:{type:"spring",stiffness:430,damping:42,mass:.9},cc=g.createElement(Oi.section,{className:oe,style:{left:0,top:0},animate:Fe,initial:!1,transition:hn,"data-interaction":p!==null?p:void 0,role:"dialog","aria-label":"Code Server"},g.createElement("span",{className:"dshcs-drag",title:"\u62D6\u52A8\u79FB\u52A8 / \u53CC\u51FB\u6700\u5927\u5316",onPointerDown:V,onDoubleClick:I}),g.createElement("div",{className:"dshcs-body"},Ir),f?null:nm.map(function(R){return g.createElement("span",{key:R,className:"dshcs-resize dshcs-resize-"+R,"data-direction":R,onPointerDown:function(Q){P(Q,R)}})})),Or=fn(Ee(),l),uc=g.createElement(Oi.div,{className:"dshcs-snapghost",initial:!1,animate:{opacity:T===!0?1:0,x:Or.x,y:Or.y,width:Or.width,height:Or.height},transition:T===!0?{type:"spring",stiffness:500,damping:44,mass:.9}:{duration:.14}},g.createElement("span",{className:"dshcs-snapghint"},"\u677E\u5F00\u4EE5\u6700\u5927\u5316"));return rc.createPortal(g.createElement(g.Fragment,null,cc,uc),document.body)}var xm=".dshcs-card{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);border-radius:12px;list-style:none;transition:border-color .16s,background .16s}.dshcs-card:hover{border-color:var(--dsw-alias-label-dimmed,var(--dsw-alias-border-l2))}.dshcs-cardOpen{background:var(--dsw-alias-bg-layer-2);border-color:var(--dsw-alias-label-dimmed,var(--dsw-alias-border-l2))}.dshcs-cardHeader{appearance:none;width:100%;font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:12px;align-items:center;gap:12px;padding:14px 16px;display:flex}.dshcs-cardHeader:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:-2px}.dshcs-cardHeadText{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.dshcs-cardName{color:var(--dsw-alias-label-primary);font-size:15px;font-weight:600;line-height:1.4}.dshcs-cardDescription{color:var(--dsw-alias-label-tertiary,var(--dsw-alias-label-secondary));font-size:13px;line-height:1.5}.dshcs-cardChevron{color:var(--dsw-alias-label-tertiary,var(--dsw-alias-label-secondary));flex:none;transition:transform .16s;display:inline-flex}.dshcs-cardChevronOpen{transform:rotate(180deg)}.dshcs-cardBody{border-top:1px solid var(--dsw-alias-border-l2);margin:0 16px;padding-bottom:8px}.dshcs-cardReadOnly{color:var(--dsw-alias-label-tertiary,var(--dsw-alias-label-secondary));margin:12px 0 0;font-size:12px;line-height:1.5}.dshcs-pending{white-space:nowrap;background:var(--dsw-alias-bg-module-platform,var(--dsw-alias-bg-layer-2));color:var(--dsw-alias-label-secondary);border-radius:999px;flex:none;padding:1px 8px;font-size:11px;font-weight:500;line-height:17px}.dshcs-cardFooter{border-top:1px solid var(--dsw-alias-border-l2);justify-content:flex-end;align-items:center;gap:8px;padding:12px 0 4px;display:flex}.dshcs-cardFailed{min-width:0;color:var(--dsw-alias-label-error,var(--dsw-alias-state-error-primary));flex:1;margin:0;font-size:12px;line-height:1.5}.dshcs-cbtn{appearance:none;font:inherit;cursor:pointer;border-radius:8px;padding:5px 14px;font-size:13px;line-height:1.5;border:1px solid transparent;transition:color .12s ease,background .12s ease}.dshcs-cbtn:disabled{opacity:.4;cursor:default}.dshcs-cbtn:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:1px}.dshcs-cbtnOutline{border-color:var(--dsw-alias-border-l2);color:var(--dsw-alias-label-secondary);background:0 0}.dshcs-cbtnOutline:hover:not(:disabled){color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover,transparent)}.dshcs-cbtnPrimary{background:var(--dsw-alias-label-primary);color:var(--dsw-alias-bg-layer-3);border-color:var(--dsw-alias-label-primary);font-weight:600}.dshcs-cbtnPrimary:hover:not(:disabled){filter:brightness(.95)}.dshcs-cbtnPrimary:active:not(:disabled){filter:brightness(.9)}.dshcs-field{flex-direction:column;gap:6px;padding:12px 0;display:flex}.dshcs-field+.dshcs-field{border-top:1px solid var(--dsw-alias-border-l2)}.dshcs-fieldHead{align-items:center;gap:8px;display:flex}.dshcs-fieldLabel{min-width:0;color:var(--dsw-alias-label-primary);flex:1;font-size:13px;font-weight:500;line-height:1.5}.dshcs-hint{color:var(--dsw-alias-label-tertiary,var(--dsw-alias-label-secondary));margin:0;font-size:12px;line-height:1.5}.dshcs-check{display:flex;align-items:center;gap:8px;cursor:pointer}.dshcs-check input{accent-color:var(--dsw-alias-brand-primary);width:15px;height:15px;margin:0;flex:none}.dshcs-check input:disabled{cursor:default}.dshcs-badges{align-items:center;gap:8px;display:inline-flex}.dshcs-badge{white-space:nowrap;background:var(--dsw-alias-bg-module-platform,var(--dsw-alias-bg-layer-2));color:var(--dsw-alias-label-secondary);border-radius:999px;padding:1px 8px;font-size:11px;font-weight:500;line-height:17px}.dshcs-reset{font:inherit;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;padding:0;font-size:12px;line-height:1.5}.dshcs-reset:hover:not(:disabled){color:var(--dsw-alias-label-primary)}.dshcs-reset:disabled{cursor:default}",ym="dsh-code-server/Card.module.css";function vm(e,t){if(typeof document!="undefined"&&document.querySelector("style[data-plugin-css="+JSON.stringify(e)+"]")===null){var r=document.createElement("style");r.dataset.plugin="dsh-code-server",r.dataset.pluginCss=e,r.textContent=t,document.head.appendChild(r)}}vm(ym,xm);function bm(e){return g.createElement("svg",{width:14,height:14,viewBox:"0 0 14 14",fill:"none","aria-hidden":!0,className:e.className},g.createElement("path",{d:"M3.5 5.25L7 8.75L10.5 5.25",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round"}))}function pn(e){return g.createElement("button",{type:"button",className:"dshcs-cbtn "+(e.variant==="primary"?"dshcs-cbtnPrimary":"dshcs-cbtnOutline"),disabled:e.disabled===!0,onClick:e.onClick},e.children)}function ec(e){return g.createElement("label",{className:"dshcs-check"},g.createElement("input",{type:"checkbox",checked:e.checked===!0,disabled:e.disabled===!0,onChange:function(t){e.onChange(t.target.checked)}}),g.createElement("span",{className:"dshcs-hint"},e.children))}function tc(e){var t=[];return e.overridden===!0&&(t.push(g.createElement("span",{className:"dshcs-badge"},e.overriddenLabel)),t.push(g.createElement("button",{type:"button",className:"dshcs-reset",disabled:e.disabled===!0,onClick:e.onReset},e.resetLabel))),t.length===0?null:g.createElement("span",{className:"dshcs-badges"},...t)}function wm(e){var[t,r]=g.useState(!1),o=e.state;if(o==null||o.available!==!0)return null;var n=e.title,s=o.dirty!==!0||o.invalid===!0||o.saving===!0;return g.createElement("li",{className:"dshcs-card"+(t?" dshcs-cardOpen":"")},g.createElement("button",{type:"button",className:"dshcs-cardHeader","aria-expanded":t,onClick:function(){r(!t)}},g.createElement("span",{className:"dshcs-cardHeadText"},g.createElement("span",{className:"dshcs-cardName"},n),g.createElement("span",{className:"dshcs-cardDescription"},e.description)),o.dirty===!0?g.createElement("span",{className:"dshcs-pending"},e.unsavedLabel):null,g.createElement(bm,{className:"dshcs-cardChevron"+(t?" dshcs-cardChevronOpen":"")})),t===!0?g.createElement("div",{className:"dshcs-cardBody"},o.writable!==!0?g.createElement("p",{className:"dshcs-cardReadOnly",role:"status"},e.readOnlyLabel):null,e.children,g.createElement("div",{className:"dshcs-cardFooter"},o.failed===!0?g.createElement("p",{className:"dshcs-cardFailed",role:"status"},e.saveFailedLabel):null,g.createElement(pn,{disabled:o.dirty!==!0||o.saving===!0,onClick:e.onDiscard},e.discardLabel),g.createElement(pn,{variant:"primary",disabled:s,onClick:e.onSave},o.saving===!0?e.savingLabel:e.saveLabel))):null)}function Tm(e){try{let V=function(){Ae("/code-server/status").then(function(M){M!=null&&typeof M=="object"&&ue({status:M})}).catch(function(){})};var t=e.scope,[r,o]=g.useState(function(){return t!==void 0?t.getSnapshot():null}),[n,s]=g.useState(null),[i,a]=g.useState(!1),[c,u]=g.useState(!1);if(g.useEffect(function(){if(t===void 0||typeof t.subscribe!="function")return;function M(){try{o(t.getSnapshot())}catch(F){}}var L=t.subscribe(M);return function(){typeof L=="function"&&L()}},[t]),t===void 0)return console.error("[code-server] card scope missing"),null;if(r==null||r.status!=="ready")return r!=null&&r.status==="unavailable"&&console.warn("[code-server] settings scope unavailable:",r.status),null;var l=r.value!==void 0&&r.value!==null?r.value:{},f=r.user,m={reserveComposer:l.reserveComposer!==!1,windowedOpen:l.windowedOpen===!0},p=f!=null&&Object.prototype.hasOwnProperty.call(f,"reserveComposer"),d=f!=null&&Object.prototype.hasOwnProperty.call(f,"windowedOpen"),h=n!==null&&(n.reserveComposer!==m.reserveComposer||n.windowedOpen!==m.windowedOpen),x=!h||i,v={available:!0,writable:r.writable,dirty:h,invalid:!1,saving:i,failed:c,reserveComposer:{text:n!==null?n.reserveComposer:m.reserveComposer,overridden:p}};async function I(){if(h&&!i){a(!0),u(!1);try{var M=n!==null?n:m;await e.scope.set("reserveComposer",M.reserveComposer===!0),await e.scope.set("windowedOpen",M.windowedOpen===!0),s(null),V()}catch(L){u(!0)}a(!1)}}async function K(){if(!(i||r.writable!==!0)){a(!0),u(!1);try{typeof e.scope.unset=="function"?(await e.scope.unset("reserveComposer"),await e.scope.unset("windowedOpen")):(await e.scope.set("reserveComposer",l.reserveComposer===void 0||l.reserveComposer===null?!0:l.reserveComposer),await e.scope.set("windowedOpen",l.windowedOpen===!0)),s(null),V()}catch(M){u(!0)}a(!1)}}var[b,w]=g.useState(null),[y,T]=g.useState(!1),[C,E]=g.useState(null),P=g.useRef(!0);g.useEffect(function(){return P.current=!0,function(){P.current=!1}},[]);async function fe(){if(y)return;T(!0),E(null);var M=await Ae("/code-server/setup",{});if(M==null||M.ok!==!0){E(M!=null&&M.error?M.error:"\u542F\u52A8\u5B89\u88C5\u5931\u8D25"),T(!1);return}E("\u73AF\u5883\u5B89\u88C5\u5DF2\u5728\u540E\u53F0\u5F00\u59CB,\u5B8C\u6210\u540E\u81EA\u52A8\u5237\u65B0\u2026");function L(){P.current===!0&&Ae("/code-server/status").then(function(F){if(P.current===!0){if(F==null||F.setup==null){T(!1);return}if(F.setup.running===!0){setTimeout(L,2e3);return}T(!1),w(F.env!=null?F.env:{error:"status \u672A\u8FD4\u56DE env"}),E(F.setup.ok===!0?"\u73AF\u5883\u5B89\u88C5\u5B8C\u6210":`\u73AF\u5883\u5B89\u88C5\u5931\u8D25:
|
|
3
|
+
`+(F.setup.logTail!=null?F.setup.logTail.slice(-600):"(\u65E0\u65E5\u5FD7)"))}})}L()}var U=g.createElement("div",{className:"dshcs-field"},g.createElement("div",{className:"dshcs-fieldHead"},g.createElement("span",{className:"dshcs-fieldLabel"},"\u73AF\u5883\u68C0\u6D4B"),g.createElement("span",{className:"dshcs-badges"},g.createElement(pn,{variant:"primary",disabled:y,onClick:async function(){T(!0),E(null);var M=await Ae("/code-server/status");w(M!=null&&M.env!=null?M.env:{error:"status \u672A\u8FD4\u56DE env"}),T(!1)}},"\u68C0\u6D4B\u73AF\u5883"),g.createElement(pn,{disabled:y,onClick:function(){fe()}},y?"\u5B89\u88C5\u4E2D\u2026":"\u5B89\u88C5\u73AF\u5883"))),b!=null?g.createElement("div",{className:"dshcs-hint",style:{marginTop:6}},b.error!=null?g.createElement("span",null,"\u68C0\u6D4B\u5931\u8D25: "+b.error):g.createElement("span",null,"\u72B6\u6001: "+(b.ok===!0?"\u2705 \u5C31\u7EEA":"\u274C \u4E0D\u901A\u8FC7")+(b.entry!=null?" \xB7 \u5165\u53E3: "+b.entry:" \xB7 \u5165\u53E3\u7F3A\u5931")+" \xB7 native: "+(b.native===!0?"\u2705":"\u274C")+" \xB7 VS Code \u5185\u90E8\u4F9D\u8D56: "+(b.vscodeInner===!0?"\u2705":"\u274C"))):g.createElement("div",{className:"dshcs-hint",style:{marginTop:6}},'\u70B9\u51FB"\u68C0\u6D4B\u73AF\u5883"\u67E5\u770B code-server \u5B89\u88C5\u72B6\u6001'),C!=null?g.createElement("div",{className:"dshcs-hint",style:{marginTop:6}},C):null,g.createElement("div",{className:"dshcs-hint",style:{marginTop:10,color:"var(--dsw-alias-label-tertiary,var(--dsw-alias-label-secondary))"}},"\u5B89\u88C5\u4F4D\u7F6E: "+(b!=null&&b.entry!=null?b.entry:"(profile)\\.code-server-app(\u5F85\u5B89\u88C5\u540E\u53EF\u67E5\u770B)")+`
|
|
4
|
+
\u5378\u8F7D: \u5148\u624B\u52A8\u5220\u9664 .code-server-app \u76EE\u5F55,\u518D dsh plugin --profile web remove dsh-code-server-app`));return g.createElement(wm,{title:"Code Server",description:"\u7A97\u53E3\u884C\u4E3A:\u4FDD\u7559\u8F93\u5165\u6846\u4E0A\u65B9\u7A7A\u95F4 / \u7A97\u53E3\u5316(\u65B0\u6807\u7B7E\u9875)\u6253\u5F00",state:v,unsavedLabel:"\u672A\u4FDD\u5B58",readOnlyLabel:"\u672C\u90E8\u7F72\u7684\u8BBE\u7F6E\u4E3A\u53EA\u8BFB\u3002",saveFailedLabel:"\u672C\u90E8\u7F72\u6CA1\u6709\u63A5\u53D7\u8FD9\u4E9B\u503C\uFF0C\u5DF2\u4FDD\u7559\u4F9B\u4F60\u4FEE\u6539\u3002",discardLabel:"\u653E\u5F03\u4FEE\u6539",saveLabel:"\u4FDD\u5B58",savingLabel:"\u4FDD\u5B58\u4E2D\u2026",onSave:I,onDiscard:function(){s(null),u(!1)}},g.createElement("div",{className:"dshcs-field"},g.createElement("div",{className:"dshcs-fieldHead"},g.createElement("span",{className:"dshcs-fieldLabel"},"\u4FDD\u7559\u8F93\u5165\u6846\u4E0A\u65B9\u7A7A\u95F4"),p===!0?g.createElement(tc,{overridden:!0,disabled:r.writable!==!0,overriddenLabel:"\u5DF2\u8986\u76D6",resetLabel:"\u6062\u590D\u9ED8\u8BA4",onReset:function(){K()}}):null),g.createElement(ec,{checked:n!==null?n.reserveComposer:m.reserveComposer,disabled:r.writable!==!0,onChange:function(M){s(function(L){return Object.assign({},L!==null?L:m,{reserveComposer:M===!0})}),u(!1)}},"\u5F00\u542F\u65F6\u7A97\u53E3\u521D\u59CB/\u7F29\u653E/\u6700\u5927\u5316\u6B62\u4E8E\u8F93\u5165\u6846\u4E0A\u65B9;\u5173\u95ED\u540E\u5141\u8BB8\u76D6\u4F4F\u8F93\u5165\u6846(\u6700\u5927\u5316\u5230\u89C6\u53E3\u5E95)")),g.createElement("div",{className:"dshcs-field"},g.createElement("div",{className:"dshcs-fieldHead"},g.createElement("span",{className:"dshcs-fieldLabel"},"\u7A97\u53E3\u5316\u6253\u5F00(\u65B0\u6807\u7B7E\u9875)"),d===!0?g.createElement(tc,{overridden:!0,disabled:r.writable!==!0,overriddenLabel:"\u5DF2\u8986\u76D6",resetLabel:"\u6062\u590D\u9ED8\u8BA4",onReset:function(){K()}}):null),g.createElement(ec,{checked:n!==null?n.windowedOpen:m.windowedOpen,disabled:r.writable!==!0,onChange:function(M){s(function(L){return Object.assign({},L!==null?L:m,{windowedOpen:M===!0})}),u(!1)}},"\u5F00\u542F\u540E\u70B9\u51FB\u60AC\u6D6E\u7403\u5728\u6D4F\u89C8\u5668\u65B0\u6807\u7B7E\u9875\u6253\u5F00 code-server(\u81EA\u52A8\u542F\u52A8\u5E76\u8DDF\u968F\u5F53\u524D\u5DE5\u4F5C\u533A);\u5173\u95ED\u5219\u4F7F\u7528\u5185\u90E8\u6D6E\u52A8\u7A97\u53E3")),U)}catch(V){return console.error("[code-server] card render error:",V!=null&&V.message!==void 0?V.message:String(V)),null}}function Sm(e){try{Vm(e)}catch(t){console.error("[code-server] apply failed:",t&&t.stack?t.stack:String(t));try{document.title="CS-ERR "+(t&&t.message||String(t))}catch(r){}}}function Vm(e){var t=e.get("slots");if(t===void 0){console.error("[code-server] slots service unavailable");return}Ae("/code-server/status").then(function(n){ue({status:n})}).catch(function(){}),t.inject("shell.overlay",()=>t.register({name:"shell.overlay",id:"code-server",order:70,label:"Code Server"},n=>g.createElement(g.Fragment,null,g.createElement(hm,n),g.createElement(gm,n))));var r=e.settingsScope;if(r===void 0||typeof r.bind!="function"){console.error("[code-server] settingsScope unavailable (inject missing?); settings card disabled");return}var o=r.bind({namespace:"code-server"});t.inject("settings.plugin.item",()=>t.register({name:"settings.plugin.item",key:"code-server",label:"Code Server",inject:function(){return{scope:o}}},Tm)),console.log("[code-server] client bundle registered (floating ball + window + settings card)")}var Pm=["slots","settingsScope"],Cm="code-server";
|
|
5
|
+
return module.exports;}});
|
|
30
6
|
|
|
31
|
-
// ---------- 模块级共享 store(两个 occupant 之间同步 open/status) ----------
|
|
32
|
-
var listeners = new Set()
|
|
33
|
-
var state = { open: false, status: null, busy: false }
|
|
34
|
-
function setState(patch) {
|
|
35
|
-
state = Object.assign({}, state, patch)
|
|
36
|
-
listeners.forEach(function (fn) { fn() })
|
|
37
|
-
}
|
|
38
|
-
function subscribe(fn) {
|
|
39
|
-
listeners.add(fn)
|
|
40
|
-
return function () { listeners.delete(fn) }
|
|
41
|
-
}
|
|
42
|
-
function getState() { return state }
|
|
43
|
-
function useStore() {
|
|
44
|
-
return React.useSyncExternalStore(subscribe, getState)
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
// ---------- /code-server API ----------
|
|
48
|
-
async function api(path, body) {
|
|
49
|
-
var options = { method: body === undefined ? 'GET' : 'POST', headers: {} }
|
|
50
|
-
if (body !== undefined) {
|
|
51
|
-
options.headers['content-type'] = 'application/json'
|
|
52
|
-
options.body = JSON.stringify(body)
|
|
53
|
-
}
|
|
54
|
-
var res = await fetch(path, options)
|
|
55
|
-
var text = await res.text()
|
|
56
|
-
var data = null
|
|
57
|
-
try { data = text === '' ? null : JSON.parse(text) } catch (e) { data = null }
|
|
58
|
-
if (!res.ok) return { ok: false, error: 'HTTP ' + res.status + (data !== null && data.error !== undefined ? ': ' + data.error : '') }
|
|
59
|
-
return data !== null ? data : { ok: false, error: 'invalid JSON response' }
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
// 解析当前活动工作区目录,优先级:
|
|
63
|
-
// 1. 当前会话的 cwd(useSessions.byId[current].cwd)
|
|
64
|
-
// 2. 当前会话所属 workspace 的 path(workspace.sessionIds 含 current)
|
|
65
|
-
// 3. recentWorkspaceId 对应 workspace 的 path
|
|
66
|
-
// 4. 第一个 workspace 的 path
|
|
67
|
-
// 均缺失时返回 undefined(调用方不传 cwd,由 host 保留当前目录)。
|
|
68
|
-
function activeWorkspaceCwd(useSessions, useWorkspaces) {
|
|
69
|
-
try {
|
|
70
|
-
var list = useSessions(function (s) { return s })
|
|
71
|
-
var wsList = useWorkspaces === null ? null : (typeof useWorkspaces === 'function' ? useWorkspaces(function (s) { return s }) : null)
|
|
72
|
-
var current = list != null ? list.current : undefined
|
|
73
|
-
if (current !== undefined && list != null && list.byId != null) {
|
|
74
|
-
var cur = list.byId[current]
|
|
75
|
-
if (cur != null && typeof cur.cwd === 'string' && cur.cwd !== '') return cur.cwd
|
|
76
|
-
}
|
|
77
|
-
var items = wsList != null && Array.isArray(wsList.items) ? wsList.items : []
|
|
78
|
-
if (current !== undefined) {
|
|
79
|
-
for (var i = 0; i < items.length; i++) {
|
|
80
|
-
var w = items[i]
|
|
81
|
-
if (w.sessionIds != null && w.sessionIds.indexOf(current) !== -1 && typeof w.path === 'string' && w.path !== '') return w.path
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
var recentId = wsList != null ? wsList.recentWorkspaceId : undefined
|
|
85
|
-
if (recentId !== undefined) {
|
|
86
|
-
for (var j = 0; j < items.length; j++) {
|
|
87
|
-
if (items[j].workspaceId === recentId && typeof items[j].path === 'string' && items[j].path !== '') return items[j].path
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
if (items.length > 0 && typeof items[0].path === 'string' && items[0].path !== '') return items[0].path
|
|
91
|
-
} catch (e) { /* props 未提供时静默 */ }
|
|
92
|
-
return undefined
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
// ---------- 窗口几何(复刻 univer-office 的 fit/move/resize) ----------
|
|
96
|
-
// 底部预留输入栏高度(可在设置卡片切换):true 时窗口初始/缩放/最大化
|
|
97
|
-
// 都止于输入框上方,不遮挡 composer;false 时允许盖住输入框(最大化到视口底)。
|
|
98
|
-
var RESIZE_DIRECTIONS = ['nw', 'n', 'ne', 'w', 'e', 'sw', 's', 'se']
|
|
99
|
-
var VIEWPORT_GUTTER = 12
|
|
100
|
-
var DEFAULT_WIDTH = 720
|
|
101
|
-
var DEFAULT_HEIGHT = 520
|
|
102
|
-
var MIN_WIDTH = 360
|
|
103
|
-
var MIN_HEIGHT = 260
|
|
104
|
-
var CASCADE_OFFSET = 24
|
|
105
|
-
var COMPOSER_RESERVE_DEFAULT = 148 // 输入框 + 下发 dock 的近似高度(测量失败时的回退)
|
|
106
|
-
|
|
107
|
-
/** 输入区预留:flag=false(用户允许)不保留 → 0。
|
|
108
|
-
* flag=true(默认)时:若 composer 贴住视口底(会话页/对话中),让最大化窗口
|
|
109
|
-
* 底边贴到 composer 输入卡顶部——窗口压住消息区,下面只露出输入框;
|
|
110
|
-
* 若 composer 不在底部(hero 页/新会话描述画面),输入框在页面中间,
|
|
111
|
-
* 最大化直接全屏(0),避免在输入框下方露出页面背景渐变。 */
|
|
112
|
-
function reserveOf(flag) {
|
|
113
|
-
if (flag === false) return 0
|
|
114
|
-
try {
|
|
115
|
-
if (typeof document === 'undefined') return 0
|
|
116
|
-
var seats = document.querySelectorAll('[data-composer-seat]')
|
|
117
|
-
if (seats === null || seats.length === 0) return 0 // 无 composer:全屏
|
|
118
|
-
var top = Number.POSITIVE_INFINITY
|
|
119
|
-
var bottom = 0
|
|
120
|
-
for (var i = 0; i < seats.length; i++) {
|
|
121
|
-
var rect = seats[i].getBoundingClientRect()
|
|
122
|
-
if (rect === null || rect.width <= 0) continue
|
|
123
|
-
if (rect.top < top) top = rect.top
|
|
124
|
-
if (rect.bottom > bottom) bottom = rect.bottom
|
|
125
|
-
}
|
|
126
|
-
if (!isFinite(top) || bottom <= 0) return 0
|
|
127
|
-
var viewportBottom = window.innerHeight
|
|
128
|
-
// composer 未贴底(hero 页,seat 底沿离视口底 > 24px)→ 全屏
|
|
129
|
-
if (viewportBottom - bottom > 24) return 0
|
|
130
|
-
// 会话页:窗口底边 = 输入卡顶部,下面只留输入框(+ 8px 呼吸边距)
|
|
131
|
-
return Math.min(Math.max(1, viewportBottom - top + 8), 420)
|
|
132
|
-
} catch (e) {
|
|
133
|
-
return 0
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
function viewportSize() {
|
|
137
|
-
return { width: Math.max(1, window.innerWidth), height: Math.max(1, window.innerHeight) }
|
|
138
|
-
}
|
|
139
|
-
/** 窗口可用的最大高度:视口高 - 上下 gutter - 输入栏预留(reserve 设为 0 时不预留)。 */
|
|
140
|
-
function usableViewport(viewport, reserve) {
|
|
141
|
-
return {
|
|
142
|
-
width: Math.max(1, viewport.width - VIEWPORT_GUTTER * 2),
|
|
143
|
-
height: Math.max(1, viewport.height - VIEWPORT_GUTTER * 2 - reserve),
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
function clamp(value, min, max) {
|
|
147
|
-
return Math.min(max, Math.max(min, value))
|
|
148
|
-
}
|
|
149
|
-
function fitRect(rect, viewport, reserve) {
|
|
150
|
-
const available = usableViewport(viewport, reserve)
|
|
151
|
-
const width = clamp(rect.width, Math.min(MIN_WIDTH, available.width), available.width)
|
|
152
|
-
const height = clamp(rect.height, Math.min(MIN_HEIGHT, available.height), available.height)
|
|
153
|
-
return {
|
|
154
|
-
x: clamp(rect.x, VIEWPORT_GUTTER, Math.max(VIEWPORT_GUTTER, viewport.width - VIEWPORT_GUTTER - width)),
|
|
155
|
-
y: clamp(rect.y, VIEWPORT_GUTTER, Math.max(VIEWPORT_GUTTER, viewport.height - VIEWPORT_GUTTER - reserve - height)),
|
|
156
|
-
width, height,
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
function initialRect(stackIndex, viewport, reserve) {
|
|
160
|
-
const available = usableViewport(viewport, reserve)
|
|
161
|
-
const width = Math.min(DEFAULT_WIDTH, available.width)
|
|
162
|
-
const height = Math.min(DEFAULT_HEIGHT, available.height)
|
|
163
|
-
// 初始位置:输入框上方、靠右(右下偏上),级联偏移。
|
|
164
|
-
// reserve=0(允许盖住)时初始仍在输入框上方(有效下沿 = composer 顶部,
|
|
165
|
-
// 若 composer 贴底则留输入框高度,避免开局就压住输入框);用户想盖住
|
|
166
|
-
// 输入框时点"最大化"(或拖到底部)即可,最大化才允许占满视口底。
|
|
167
|
-
const composerTop = composerTopOf()
|
|
168
|
-
const bottomLimit = composerTop > 0
|
|
169
|
-
? composerTop - 8
|
|
170
|
-
: viewport.height - VIEWPORT_GUTTER - reserve
|
|
171
|
-
return fitRect({
|
|
172
|
-
x: viewport.width - VIEWPORT_GUTTER - width - stackIndex * CASCADE_OFFSET,
|
|
173
|
-
y: Math.max(VIEWPORT_GUTTER, bottomLimit - height - stackIndex * CASCADE_OFFSET),
|
|
174
|
-
width, height,
|
|
175
|
-
}, viewport, reserve)
|
|
176
|
-
}
|
|
177
|
-
/** composer 输入区顶部(视口坐标);无 composer 时返回 -1。 */
|
|
178
|
-
function composerTopOf() {
|
|
179
|
-
try {
|
|
180
|
-
if (typeof document === 'undefined') return -1
|
|
181
|
-
var seats = document.querySelectorAll('[data-composer-seat]')
|
|
182
|
-
if (seats === null || seats.length === 0) return -1
|
|
183
|
-
var top = Number.POSITIVE_INFINITY
|
|
184
|
-
for (var i = 0; i < seats.length; i++) {
|
|
185
|
-
var rect = seats[i].getBoundingClientRect()
|
|
186
|
-
if (rect !== null && rect.width > 0 && rect.top < top) top = rect.top
|
|
187
|
-
}
|
|
188
|
-
return isFinite(top) ? top : -1
|
|
189
|
-
} catch (e) {
|
|
190
|
-
return -1
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
function moveRect(start, dx, dy, viewport, reserve) {
|
|
194
|
-
return fitRect({ ...start, x: start.x + dx, y: start.y + dy }, viewport, reserve)
|
|
195
|
-
}
|
|
196
|
-
function resizeRect(start, direction, dx, dy, viewport, reserve) {
|
|
197
|
-
const fitted = fitRect(start, viewport, reserve)
|
|
198
|
-
const available = usableViewport(viewport, reserve)
|
|
199
|
-
const minWidth = Math.min(MIN_WIDTH, available.width)
|
|
200
|
-
const minHeight = Math.min(MIN_HEIGHT, available.height)
|
|
201
|
-
const bottomLimit = viewport.height - VIEWPORT_GUTTER - reserve
|
|
202
|
-
let left = fitted.x
|
|
203
|
-
let right = fitted.x + fitted.width
|
|
204
|
-
let top = fitted.y
|
|
205
|
-
let bottom = fitted.y + fitted.height
|
|
206
|
-
if (direction.includes('w')) left = clamp(fitted.x + dx, VIEWPORT_GUTTER, right - minWidth)
|
|
207
|
-
if (direction.includes('e')) right = clamp(right + dx, left + minWidth, viewport.width - VIEWPORT_GUTTER)
|
|
208
|
-
if (direction.includes('n')) top = clamp(fitted.y + dy, VIEWPORT_GUTTER, bottom - minHeight)
|
|
209
|
-
if (direction.includes('s')) bottom = clamp(bottom + dy, top + minHeight, bottomLimit)
|
|
210
|
-
return { x: left, y: top, width: right - left, height: bottom - top }
|
|
211
|
-
}
|
|
212
|
-
/** 最大化矩形:占满"输入栏上方"区域(reserve=0 时到视口底)。 */
|
|
213
|
-
function maximizedRect(viewport, reserve) {
|
|
214
|
-
const available = usableViewport(viewport, reserve)
|
|
215
|
-
return {
|
|
216
|
-
x: VIEWPORT_GUTTER,
|
|
217
|
-
y: VIEWPORT_GUTTER,
|
|
218
|
-
width: available.width,
|
|
219
|
-
height: available.height,
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
// ---------- 样式(主题变量 + 兜底值;仅覆盖窗口自身结构) ----------
|
|
224
|
-
var CSS =
|
|
225
|
-
'.dshcs-root{position:fixed;inset:0;z-index:2147483000;pointer-events:none}' +
|
|
226
|
-
'.dshcs-win{--dshcs-accent:#5b6cff;pointer-events:auto;position:fixed;isolation:isolate;z-index:2147483000;display:flex;flex-direction:column;min-width:1px;min-height:1px;overflow:hidden;color:var(--dsw-alias-label-primary,#172033);background:var(--dsw-alias-bg-base,#fff);border:1px solid var(--dsw-alias-border-l2,#dfe3eb);border-radius:16px;box-shadow:0 1px 2px rgba(13,22,38,.08),0 18px 48px rgba(13,22,38,.2),0 0 0 1px rgba(255,255,255,.4) inset;transition:border-color .16s ease,box-shadow .16s ease}' +
|
|
227
|
-
'.dshcs-win:hover{border-color:color-mix(in srgb,var(--dshcs-accent) 28%,var(--dsw-alias-border-l2,#dfe3eb));box-shadow:0 2px 5px rgba(13,22,38,.1),0 22px 58px rgba(13,22,38,.24),0 0 0 1px rgba(255,255,255,.5) inset}' +
|
|
228
|
-
'.dshcs-win[data-interaction]{transition:none;user-select:none}' +
|
|
229
|
-
'.dshcs-win[data-interaction]::after{content:"";position:absolute;inset:0;z-index:18;background:transparent}' +
|
|
230
|
-
'.dshcs-win-folded{height:48px!important}' +
|
|
231
|
-
'.dshcs-win-max{border-radius:18px;z-index:2147483001;box-shadow:0 1px 2px rgba(13,22,38,.06),0 8px 24px rgba(13,22,38,.12)}' +
|
|
232
|
-
'.dshcs-win-max:hover{box-shadow:0 1px 2px rgba(13,22,38,.06),0 10px 28px rgba(13,22,38,.14)}' +
|
|
233
|
-
'.dshcs-header{position:relative;z-index:10;display:flex;align-items:center;gap:10px;height:48px;padding:0 8px 0 10px;flex:none;cursor:grab;touch-action:none;user-select:none;background:linear-gradient(180deg,color-mix(in srgb,var(--dsw-alias-bg-base,#fff) 96%,#7583ff),color-mix(in srgb,var(--dsw-alias-bg-base,#fff) 92%,#dfe3f5));border-bottom:1px solid color-mix(in srgb,var(--dsw-alias-border-l2,#dfe3eb) 78%,transparent)}' +
|
|
234
|
-
'.dshcs-win[data-interaction=move] .dshcs-header{cursor:grabbing}.dshcs-win-max .dshcs-header{cursor:default}.dshcs-win-folded .dshcs-header{border-bottom:0}' +
|
|
235
|
-
'.dshcs-glyph{display:grid;place-items:center;width:22px;height:22px;flex:none;border-radius:6px;color:#fff;background:transparent}' +
|
|
236
|
-
'.dshcs-identity{display:flex;flex-direction:column;justify-content:center;min-width:0;flex:1;line-height:1.2}' +
|
|
237
|
-
'.dshcs-title,.dshcs-sub{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dshcs-title{font-size:12.5px;font-weight:650;letter-spacing:.01em;color:var(--dsw-alias-label-primary,#172033)}.dshcs-sub{margin-top:2px;font-size:10.5px;color:var(--dsw-alias-label-tertiary,#7d8798)}' +
|
|
238
|
-
'.dshcs-chip{display:inline-flex;align-items:center;gap:6px;flex:none;padding:3px 8px;border:1px solid var(--dsw-alias-border-l2,#dfe3eb);border-radius:999px;font-size:10.5px;font-weight:600;line-height:16px;color:var(--dsw-alias-label-secondary,#566174);background:color-mix(in srgb,var(--dsw-alias-bg-base,#fff) 75%,transparent)}' +
|
|
239
|
-
'.dshcs-chip[data-status=running]{color:#16784d;border-color:color-mix(in srgb,#20a66a 30%,var(--dsw-alias-border-l2,#dfe3eb));background:color-mix(in srgb,#20a66a 8%,var(--dsw-alias-bg-base,#fff))}' +
|
|
240
|
-
'.dshcs-chip[data-status=starting]{color:#9a6114;border-color:color-mix(in srgb,#d78b25 34%,var(--dsw-alias-border-l2,#dfe3eb));background:color-mix(in srgb,#d78b25 9%,var(--dsw-alias-bg-base,#fff))}' +
|
|
241
|
-
'.dshcs-chip[data-status=error]{color:#b42318;border-color:color-mix(in srgb,#f85149 30%,var(--dsw-alias-border-l2,#dfe3eb));background:color-mix(in srgb,#f85149 8%,var(--dsw-alias-bg-base,#fff))}' +
|
|
242
|
-
'.dshcs-dot,.dshcs-pulse{position:relative;width:7px;height:7px;border-radius:50%;background:#20a66a;flex:none}.dshcs-pulse::after{content:"";position:absolute;inset:-3px;border-radius:50%;border:1px solid currentColor;opacity:.24;animation:dshcs-pulse 2s ease-out infinite}' +
|
|
243
|
-
'.dshcs-chip[data-status=starting] .dshcs-dot{background:#d78b25}.dshcs-chip[data-status=starting] .dshcs-dot::after{content:"";position:absolute;inset:-3px;border-radius:50%;border:1px solid currentColor;opacity:.24;animation:dshcs-pulse 2s ease-out infinite}' +
|
|
244
|
-
'.dshcs-chip[data-status=error] .dshcs-dot{background:#f85149}.dshcs-chip[data-status=idle] .dshcs-dot{background:#7d8798}' +
|
|
245
|
-
'@keyframes dshcs-pulse{0%{transform:scale(.7);opacity:.35}70%,100%{transform:scale(1.65);opacity:0}}' +
|
|
246
|
-
'.dshcs-controls{display:flex;align-items:center;gap:3px;flex:none}' +
|
|
247
|
-
'.dshcs-ctl{display:grid;place-items:center;width:28px;height:28px;padding:0;border:0;border-radius:8px;color:var(--dsw-alias-label-secondary,#566174);background:transparent;cursor:pointer;transition:color .12s ease,background .12s ease,transform .12s ease}' +
|
|
248
|
-
'.dshcs-ctl:hover{color:var(--dsw-alias-label-primary,#172033);background:color-mix(in srgb,var(--dsw-alias-label-primary,#172033) 8%,transparent)}' +
|
|
249
|
-
'.dshcs-ctl:active{transform:scale(.92)}.dshcs-ctl:focus-visible{outline:2px solid color-mix(in srgb,var(--dshcs-accent) 65%,transparent);outline-offset:1px}' +
|
|
250
|
-
'.dshcs-ctl[data-danger]:hover{color:#d94242;background:rgba(217,66,66,.1)}' +
|
|
251
|
-
'.dshcs-ctl svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}' +
|
|
252
|
-
'.dshcs-body{display:flex;flex:1;min-width:0;min-height:0;flex-direction:column;background:var(--dsw-alias-bg-base,#fff)}.dshcs-body[hidden]{display:none}' +
|
|
253
|
-
'.dshcs-frame{display:block;flex:1;min-width:0;min-height:0;width:100%;height:100%;border:0;background:var(--dsw-alias-bg-base,#fff)}' +
|
|
254
|
-
'.dshcs-empty{flex:1;display:flex;align-items:center;justify-content:center;padding:24px}' +
|
|
255
|
-
'.dshcs-emptybox{max-width:560px;text-align:left;background:var(--dsw-alias-bg-layer-2,#f7f8fb);border:1px solid var(--dsw-alias-border-l2,#dfe3eb);border-radius:12px;padding:16px 18px}' +
|
|
256
|
-
'.dshcs-error{color:var(--dsw-alias-label-error,#d92d20);white-space:pre-wrap;word-break:break-all;font-family:ui-monospace,Consolas,monospace;font-size:12px;margin:8px 0 0}' +
|
|
257
|
-
'.dshcs-hint{color:var(--dsw-alias-label-tertiary,#7d8798);font-size:12px;margin:6px 0 0}' +
|
|
258
|
-
'.dshcs-resize{position:absolute;z-index:20;display:block;touch-action:none}' +
|
|
259
|
-
'.dshcs-resize-n,.dshcs-resize-s{left:16px;right:16px;height:10px;cursor:ns-resize}.dshcs-resize-n{top:0}.dshcs-resize-s{bottom:0}' +
|
|
260
|
-
'.dshcs-resize-w,.dshcs-resize-e{top:16px;bottom:16px;width:10px;cursor:ew-resize}.dshcs-resize-w{left:0}.dshcs-resize-e{right:0}' +
|
|
261
|
-
'.dshcs-resize-nw,.dshcs-resize-ne,.dshcs-resize-sw,.dshcs-resize-se{width:18px;height:18px}' +
|
|
262
|
-
'.dshcs-resize-nw{left:0;top:0;cursor:nwse-resize}.dshcs-resize-ne{right:0;top:0;cursor:nesw-resize}.dshcs-resize-sw{left:0;bottom:0;cursor:nesw-resize}.dshcs-resize-se{right:0;bottom:0;cursor:nwse-resize}' +
|
|
263
|
-
'.dshcs-resize-se::after{content:"";position:absolute;right:4px;bottom:4px;width:7px;height:7px;border-right:1.5px solid color-mix(in srgb,var(--dsw-alias-label-tertiary,#7d8798) 58%,transparent);border-bottom:1.5px solid color-mix(in srgb,var(--dsw-alias-label-tertiary,#7d8798) 58%,transparent);border-radius:0 0 2px}'
|
|
264
|
-
var CSS_TAG = 'dsh-code-server/styles'
|
|
265
|
-
if (typeof document !== 'undefined' && document.querySelector('style[data-dshcs=' + JSON.stringify(CSS_TAG) + ']') === null) {
|
|
266
|
-
var tag = document.createElement('style')
|
|
267
|
-
tag.setAttribute('data-dshcs', CSS_TAG)
|
|
268
|
-
tag.textContent = CSS
|
|
269
|
-
document.head.appendChild(tag)
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
// ---------- 小图标 ----------
|
|
273
|
-
// code-server 官方徽标:经 _static 路径从运行中的服务取(favicon-dark-support.svg
|
|
274
|
-
// 为官方 SVG,支持深色模式);运行 URL 为空时回退自绘格子图标。
|
|
275
|
-
function Glyph(props) {
|
|
276
|
-
var baseUrl = props && props.baseUrl
|
|
277
|
-
var official = typeof baseUrl === 'string' && baseUrl !== ''
|
|
278
|
-
? baseUrl + '_static/src/browser/media/favicon-dark-support.svg'
|
|
279
|
-
: null
|
|
280
|
-
if (official !== null) {
|
|
281
|
-
return React.createElement('img', {
|
|
282
|
-
src: official, alt: '', 'aria-hidden': true,
|
|
283
|
-
style: { width: 18, height: 18, display: 'block', objectFit: 'contain' },
|
|
284
|
-
})
|
|
285
|
-
}
|
|
286
|
-
// 无运行时 URL(未运行):自绘格子徽标
|
|
287
|
-
return React.createElement('svg', { viewBox: '0 0 18 18', 'aria-hidden': true },
|
|
288
|
-
React.createElement('rect', { x: '3', y: '3', width: '12', height: '12', rx: '2' }),
|
|
289
|
-
React.createElement('path', { d: 'M3 7h12M7 3v12' })
|
|
290
|
-
)
|
|
291
|
-
}
|
|
292
|
-
function FoldIcon(props) {
|
|
293
|
-
return React.createElement('svg', { viewBox: '0 0 16 16', 'aria-hidden': true },
|
|
294
|
-
props.expanded
|
|
295
|
-
? React.createElement('path', { d: 'm4 10 4-4 4 4' })
|
|
296
|
-
: React.createElement('path', { d: 'M4 9h8' })
|
|
297
|
-
)
|
|
298
|
-
}
|
|
299
|
-
function MaximizeIcon(props) {
|
|
300
|
-
return React.createElement('svg', { viewBox: '0 0 16 16', 'aria-hidden': true },
|
|
301
|
-
props.restored
|
|
302
|
-
? React.createElement(React.Fragment, null,
|
|
303
|
-
React.createElement('rect', { x: '3', y: '5', width: '8', height: '8', rx: '1' }),
|
|
304
|
-
React.createElement('path', { d: 'M5 5V3h8v8h-2' })
|
|
305
|
-
)
|
|
306
|
-
: React.createElement('rect', { x: '3', y: '3', width: '10', height: '10', rx: '1.5' })
|
|
307
|
-
)
|
|
308
|
-
}
|
|
309
|
-
function CloseIcon() {
|
|
310
|
-
return React.createElement('svg', { viewBox: '0 0 16 16', 'aria-hidden': true },
|
|
311
|
-
React.createElement('path', { d: 'm4 4 8 8m0-8-8 8' })
|
|
312
|
-
)
|
|
313
|
-
}
|
|
314
|
-
|
|
315
|
-
// ---------- 侧栏按钮 ----------
|
|
316
|
-
// 环境检测不通过时不显示(检测未返回或 ok=false 均隐藏);
|
|
317
|
-
// 首次状态由 apply 里的预拉取填充,避免按钮闪烁。
|
|
318
|
-
function SidebarAction(props) {
|
|
319
|
-
var store = useStore()
|
|
320
|
-
var env = store.status != null ? store.status.env : null
|
|
321
|
-
if (env == null || env.ok !== true) return null
|
|
322
|
-
function openPanel() {
|
|
323
|
-
setState({ open: true })
|
|
324
|
-
}
|
|
325
|
-
var label = store.open ? 'Code Server…' : 'Code Server'
|
|
326
|
-
return React.createElement(
|
|
327
|
-
'button',
|
|
328
|
-
{ type: 'button', onClick: openPanel, title: '在 DSH 内打开 code-server(VS Code 网页版)', style: { display: 'flex', alignItems: 'center', gap: 8 } },
|
|
329
|
-
React.createElement('span', { 'aria-hidden': true, style: { fontSize: 14 } }, '⌘'),
|
|
330
|
-
props && props.wide === true ? React.createElement('span', null, label) : null
|
|
331
|
-
)
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
// ---------- 内部浮动窗口(参照 univer-office WorktreeWindow) ----------
|
|
335
|
-
function Window(props) {
|
|
336
|
-
var store = useStore()
|
|
337
|
-
var status = store.status
|
|
338
|
-
var running = status != null && status.ok === true && status.running === true
|
|
339
|
-
var starting = status != null && status.status === 'starting'
|
|
340
|
-
var errored = status != null && status.ok === false
|
|
341
|
-
var cwd = activeWorkspaceCwd(props && props.useSessions, props && props.useWorkspaces)
|
|
342
|
-
// 上次同步(或打开服务)时的工作区;变化时自动重启并刷新 iframe
|
|
343
|
-
var lastSyncedCwdRef = React.useRef(undefined)
|
|
344
|
-
var [reloadTick, setReloadTick] = React.useState(0)
|
|
345
|
-
|
|
346
|
-
// ---- 窗口状态与手势(复刻 univer-office 的 WorktreeWindow) ----
|
|
347
|
-
// reserveComposer(设置卡片):true 不盖输入框;false 允许盖住(最大化到视口底)。
|
|
348
|
-
var reserve = reserveOf(status != null ? status.reserveComposer : true)
|
|
349
|
-
var [folded, setFolded] = React.useState(false)
|
|
350
|
-
var [maximized, setMaximized] = React.useState(false)
|
|
351
|
-
var [interaction, setInteraction] = React.useState(null)
|
|
352
|
-
var [rect, setRect] = React.useState(function () { return initialRect(0, viewportSize(), reserve) })
|
|
353
|
-
var rectRef = React.useRef(rect)
|
|
354
|
-
var cancelPointerSessionRef = React.useRef(function () {})
|
|
355
|
-
rectRef.current = rect
|
|
356
|
-
React.useEffect(function () {
|
|
357
|
-
var onViewportResize = function () {
|
|
358
|
-
setRect(function (current) {
|
|
359
|
-
// 最大化时保持占满"输入栏上方"区域;否则仅 fit 防止越界
|
|
360
|
-
return maximized ? maximizedRect(viewportSize(), reserve) : fitRect(current, viewportSize(), reserve)
|
|
361
|
-
})
|
|
362
|
-
}
|
|
363
|
-
window.addEventListener('resize', onViewportResize)
|
|
364
|
-
return function () { window.removeEventListener('resize', onViewportResize) }
|
|
365
|
-
}, [maximized, reserve])
|
|
366
|
-
// 设置变化(reserve 切换)时重新 fit 当前 rect(立即生效,不遮挡/不越界)
|
|
367
|
-
React.useEffect(function () {
|
|
368
|
-
setRect(function (current) { return fitRect(current, viewportSize(), reserve) })
|
|
369
|
-
}, [reserve])
|
|
370
|
-
React.useEffect(function () {
|
|
371
|
-
return function () { cancelPointerSessionRef.current() }
|
|
372
|
-
}, [])
|
|
373
|
-
|
|
374
|
-
var beginPointerSession = function (event, kind) {
|
|
375
|
-
if (event.button !== 0 || maximized) return
|
|
376
|
-
event.preventDefault()
|
|
377
|
-
event.stopPropagation()
|
|
378
|
-
cancelPointerSessionRef.current()
|
|
379
|
-
var view = event.currentTarget.ownerDocument.defaultView
|
|
380
|
-
if (view === null) return
|
|
381
|
-
var pointerId = event.pointerId
|
|
382
|
-
var origin = { x: event.clientX, y: event.clientY }
|
|
383
|
-
var start = rectRef.current
|
|
384
|
-
var element = event.currentTarget
|
|
385
|
-
setInteraction(kind)
|
|
386
|
-
try { element.setPointerCapture(pointerId) } catch (e) { /* capture 失败仍可跟随 */ }
|
|
387
|
-
var move = function (next) {
|
|
388
|
-
if (next.pointerId !== pointerId) return
|
|
389
|
-
var dx = next.clientX - origin.x
|
|
390
|
-
var dy = next.clientY - origin.y
|
|
391
|
-
setRect(kind === 'move' ? moveRect(start, dx, dy, viewportSize(), reserve) : resizeRect(start, kind, dx, dy, viewportSize(), reserve))
|
|
392
|
-
}
|
|
393
|
-
var cleanup = function () {
|
|
394
|
-
view.removeEventListener('pointermove', move)
|
|
395
|
-
view.removeEventListener('pointerup', finish)
|
|
396
|
-
view.removeEventListener('pointercancel', finish)
|
|
397
|
-
cancelPointerSessionRef.current = function () {}
|
|
398
|
-
try { element.releasePointerCapture(pointerId) } catch (e) { /* ignore */ }
|
|
399
|
-
}
|
|
400
|
-
var finish = function (next) {
|
|
401
|
-
if (next.pointerId !== pointerId) return
|
|
402
|
-
cleanup()
|
|
403
|
-
setInteraction(null)
|
|
404
|
-
}
|
|
405
|
-
cancelPointerSessionRef.current = cleanup
|
|
406
|
-
view.addEventListener('pointermove', move)
|
|
407
|
-
view.addEventListener('pointerup', finish)
|
|
408
|
-
view.addEventListener('pointercancel', finish)
|
|
409
|
-
}
|
|
410
|
-
|
|
411
|
-
var toggleFolded = function () {
|
|
412
|
-
setMaximized(false)
|
|
413
|
-
setFolded(function (current) { return !current })
|
|
414
|
-
}
|
|
415
|
-
var toggleMaximized = function () {
|
|
416
|
-
setFolded(false)
|
|
417
|
-
setMaximized(function (current) { return !current })
|
|
418
|
-
}
|
|
419
|
-
var onHeaderPointerDown = function (event) {
|
|
420
|
-
if (event.target.closest('[data-window-control]') !== null) return
|
|
421
|
-
beginPointerSession(event, 'move')
|
|
422
|
-
}
|
|
423
|
-
var onHeaderDoubleClick = function (event) {
|
|
424
|
-
if (event.target.closest('[data-window-control]') === null) toggleMaximized()
|
|
425
|
-
}
|
|
426
|
-
|
|
427
|
-
// ---- 生命周期/数据同步(与原全屏浮层一致) ----
|
|
428
|
-
// 打开时:拉状态;未运行则尝试启动(带当前会话 cwd)
|
|
429
|
-
React.useEffect(function () {
|
|
430
|
-
if (!store.open) return
|
|
431
|
-
var cancelled = false
|
|
432
|
-
async function boot() {
|
|
433
|
-
setState({ busy: true })
|
|
434
|
-
var s = await api('/code-server/status')
|
|
435
|
-
if (cancelled) return
|
|
436
|
-
if (s != null && s.ok === true && s.running === true) {
|
|
437
|
-
setState({ status: s, busy: false })
|
|
438
|
-
return
|
|
439
|
-
}
|
|
440
|
-
var started = await api('/code-server/start', typeof cwd === 'string' ? { cwd: cwd } : {})
|
|
441
|
-
if (cancelled) return
|
|
442
|
-
setState({ status: started, busy: false })
|
|
443
|
-
}
|
|
444
|
-
boot()
|
|
445
|
-
return function () { cancelled = true }
|
|
446
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
447
|
-
}, [store.open])
|
|
448
|
-
|
|
449
|
-
// 跟随活动工作区:快照变化(切换会话/工作区)自动重启到新目录,成功后刷新 iframe
|
|
450
|
-
React.useEffect(function () {
|
|
451
|
-
if (!store.open) return
|
|
452
|
-
if (typeof cwd !== 'string' || cwd === '') return
|
|
453
|
-
if (lastSyncedCwdRef.current === cwd) return
|
|
454
|
-
var changed = lastSyncedCwdRef.current !== undefined && lastSyncedCwdRef.current !== cwd
|
|
455
|
-
lastSyncedCwdRef.current = cwd
|
|
456
|
-
var cancelled = false
|
|
457
|
-
async function sync() {
|
|
458
|
-
setState({ busy: true })
|
|
459
|
-
var s = await api('/code-server/start', { cwd: cwd })
|
|
460
|
-
if (cancelled) return
|
|
461
|
-
setState({ status: s, busy: false })
|
|
462
|
-
if (changed && s != null && s.ok === true && s.running === true) {
|
|
463
|
-
setReloadTick(function (t) { return t + 1 })
|
|
464
|
-
}
|
|
465
|
-
}
|
|
466
|
-
sync()
|
|
467
|
-
return function () { cancelled = true }
|
|
468
|
-
}, [store.open, cwd])
|
|
469
|
-
|
|
470
|
-
// 窗口关闭时重置跟随基线,下次打开重新对齐
|
|
471
|
-
React.useEffect(function () {
|
|
472
|
-
if (!store.open) lastSyncedCwdRef.current = undefined
|
|
473
|
-
}, [store.open])
|
|
474
|
-
|
|
475
|
-
// 打开期间每 3s 轮询状态
|
|
476
|
-
React.useEffect(function () {
|
|
477
|
-
if (!store.open) return
|
|
478
|
-
var timer = window.setInterval(function () {
|
|
479
|
-
api('/code-server/status').then(function (s) { setState({ status: s }) })
|
|
480
|
-
}, 3000)
|
|
481
|
-
return function () { window.clearInterval(timer) }
|
|
482
|
-
}, [store.open])
|
|
483
|
-
|
|
484
|
-
// Esc 关闭
|
|
485
|
-
React.useEffect(function () {
|
|
486
|
-
if (!store.open) return
|
|
487
|
-
function onKey(e) {
|
|
488
|
-
if (e.key === 'Escape') setState({ open: false })
|
|
489
|
-
}
|
|
490
|
-
window.addEventListener('keydown', onKey)
|
|
491
|
-
return function () { window.removeEventListener('keydown', onKey) }
|
|
492
|
-
}, [store.open])
|
|
493
|
-
|
|
494
|
-
if (!store.open) return null
|
|
495
|
-
|
|
496
|
-
var statusKind = running ? 'running' : starting ? 'starting' : errored ? 'error' : 'idle'
|
|
497
|
-
var statusLabel = running ? '运行中' : starting ? '启动中…' : errored ? '错误' : '未运行'
|
|
498
|
-
|
|
499
|
-
var baseUrl = status != null && typeof status.url === 'string' ? status.url : null
|
|
500
|
-
// code-server 前端记住"最近工作区"并自行恢复;必须用 ?folder= 显式指定
|
|
501
|
-
// 打开目录,否则 iframe 裸根 URL 会显示上一次的工具区(不跟随切换)。
|
|
502
|
-
//
|
|
503
|
-
// folder 参数格式(实测):VS Code web 要求以 "/" 开头的平台路径——Windows
|
|
504
|
-
// 盘符路径必须统一为正斜杠并加前导 "/"(/C:/Users/...)。裸 Windows 路径
|
|
505
|
-
// (C:\Users\...) 会被前端当 URI scheme 解析而剥掉盘符,file:/// 形式则报
|
|
506
|
-
// "Workspace does not exist"。
|
|
507
|
-
var activeDir = running && status != null && typeof status.cwd === 'string' && status.cwd !== '' ? status.cwd : null
|
|
508
|
-
var folderParam = null
|
|
509
|
-
if (activeDir !== null) {
|
|
510
|
-
var normalized = activeDir.replace(/\\/g, '/')
|
|
511
|
-
folderParam = normalized
|
|
512
|
-
if (/^[A-Za-z]:\//.test(normalized)) folderParam = '/' + normalized
|
|
513
|
-
else if (normalized.charCodeAt(0) !== 47) folderParam = '/' + normalized
|
|
514
|
-
}
|
|
515
|
-
var pageUrl = baseUrl !== null
|
|
516
|
-
? baseUrl + (folderParam !== null ? '?folder=' + encodeURIComponent(folderParam) : '')
|
|
517
|
-
: null
|
|
518
|
-
|
|
519
|
-
var metaBits = []
|
|
520
|
-
if (status != null) {
|
|
521
|
-
if (status.host != null) metaBits.push(String(status.host) + ':' + String(status.port))
|
|
522
|
-
if (status.cwd != null) metaBits.push('cwd: ' + status.cwd)
|
|
523
|
-
if (status.adopted === true) metaBits.push('接管既有实例')
|
|
524
|
-
}
|
|
525
|
-
if (typeof cwd === 'string' && cwd !== '') {
|
|
526
|
-
metaBits.push(running && status != null && typeof status.cwd === 'string' && status.cwd !== cwd
|
|
527
|
-
? '目标: ' + cwd + '(切换即重启)'
|
|
528
|
-
: '跟随: ' + cwd)
|
|
529
|
-
}
|
|
530
|
-
|
|
531
|
-
var body
|
|
532
|
-
if (running && pageUrl !== null) {
|
|
533
|
-
body = React.createElement('iframe', {
|
|
534
|
-
key: reloadTick,
|
|
535
|
-
className: 'dshcs-frame',
|
|
536
|
-
src: pageUrl,
|
|
537
|
-
title: 'code-server',
|
|
538
|
-
sandbox: 'allow-scripts allow-same-origin allow-forms allow-modals allow-popups allow-pointer-lock',
|
|
539
|
-
})
|
|
540
|
-
} else {
|
|
541
|
-
var errText = errored && status != null && status.error
|
|
542
|
-
? status.error
|
|
543
|
-
: (starting ? '正在启动 code-server…' : 'code-server 未运行')
|
|
544
|
-
body = React.createElement('div', { className: 'dshcs-empty' },
|
|
545
|
-
React.createElement('div', { className: 'dshcs-emptybox' },
|
|
546
|
-
React.createElement('div', null, starting ? '正在启动 code-server…' : errored ? 'code-server 启动失败' : 'code-server 未运行'),
|
|
547
|
-
React.createElement('pre', { className: 'dshcs-error' }, errText),
|
|
548
|
-
React.createElement('p', { className: 'dshcs-hint' },
|
|
549
|
-
'安装命令(Windows 原生):npm install -g code-server@latest(需配套最新版 node-gyp 与 VS Spectre 缓解库);' +
|
|
550
|
-
'或在 cordis.patch.yml 的 code-server config 中设置 bin 指向已安装位置。' +
|
|
551
|
-
'端口 ' + (status != null ? status.port : '8090') + ' 被占用时请释放或修改 port 配置。')
|
|
552
|
-
))
|
|
553
|
-
}
|
|
554
|
-
|
|
555
|
-
var className = ['dshcs-win', folded ? 'dshcs-win-folded' : '', maximized ? 'dshcs-win-max' : ''].filter(Boolean).join(' ')
|
|
556
|
-
// 最大化由 rect 驱动(maximizedRect 占满"输入栏上方"区域),不用 CSS inset;
|
|
557
|
-
// 还原时回到拖动前的位置。
|
|
558
|
-
var shownRect = maximized ? maximizedRect(viewportSize(), reserve) : rect
|
|
559
|
-
var style = { left: shownRect.x, top: shownRect.y, width: shownRect.width, height: shownRect.height }
|
|
560
|
-
|
|
561
|
-
var windowTree = React.createElement('section', {
|
|
562
|
-
className: className,
|
|
563
|
-
style: style,
|
|
564
|
-
'data-interaction': interaction !== null ? interaction : undefined,
|
|
565
|
-
role: 'dialog',
|
|
566
|
-
'aria-label': 'Code Server',
|
|
567
|
-
},
|
|
568
|
-
React.createElement('header', {
|
|
569
|
-
className: 'dshcs-header',
|
|
570
|
-
onPointerDown: onHeaderPointerDown,
|
|
571
|
-
onDoubleClick: onHeaderDoubleClick,
|
|
572
|
-
},
|
|
573
|
-
React.createElement('span', { className: 'dshcs-glyph', 'aria-hidden': true }, React.createElement(Glyph, { baseUrl: baseUrl })),
|
|
574
|
-
React.createElement('span', { className: 'dshcs-identity' },
|
|
575
|
-
React.createElement('span', { className: 'dshcs-title' }, 'Code Server'),
|
|
576
|
-
React.createElement('span', { className: 'dshcs-sub' }, metaBits.length > 0 ? metaBits.join(' · ') : 'VS Code 网页版')
|
|
577
|
-
),
|
|
578
|
-
React.createElement('span', { className: 'dshcs-chip', 'data-status': statusKind },
|
|
579
|
-
React.createElement('span', { className: 'dshcs-dot', 'aria-hidden': true }),
|
|
580
|
-
statusLabel
|
|
581
|
-
),
|
|
582
|
-
React.createElement('span', { className: 'dshcs-controls' },
|
|
583
|
-
React.createElement('button', {
|
|
584
|
-
type: 'button', className: 'dshcs-ctl', 'data-window-control': '', title: folded ? '展开' : '折叠',
|
|
585
|
-
'aria-label': folded ? '展开' : '折叠', onClick: toggleFolded,
|
|
586
|
-
}, React.createElement(FoldIcon, { expanded: folded })),
|
|
587
|
-
React.createElement('button', {
|
|
588
|
-
type: 'button', className: 'dshcs-ctl', 'data-window-control': '', title: maximized ? '还原' : '最大化',
|
|
589
|
-
'aria-label': maximized ? '还原' : '最大化', onClick: toggleMaximized,
|
|
590
|
-
}, React.createElement(MaximizeIcon, { restored: maximized })),
|
|
591
|
-
React.createElement('button', {
|
|
592
|
-
type: 'button', className: 'dshcs-ctl', 'data-window-control': '', 'data-danger': '', title: '关闭(Esc)',
|
|
593
|
-
'aria-label': '关闭', onClick: function () { setState({ open: false }) },
|
|
594
|
-
}, React.createElement(CloseIcon, null))
|
|
595
|
-
)
|
|
596
|
-
),
|
|
597
|
-
React.createElement('div', { className: 'dshcs-body', hidden: folded },
|
|
598
|
-
body
|
|
599
|
-
),
|
|
600
|
-
!folded && !maximized
|
|
601
|
-
? RESIZE_DIRECTIONS.map(function (direction) {
|
|
602
|
-
return React.createElement('span', {
|
|
603
|
-
key: direction,
|
|
604
|
-
className: 'dshcs-resize dshcs-resize-' + direction,
|
|
605
|
-
'data-direction': direction,
|
|
606
|
-
onPointerDown: function (event) { beginPointerSession(event, direction) },
|
|
607
|
-
})
|
|
608
|
-
})
|
|
609
|
-
: null
|
|
610
|
-
)
|
|
611
|
-
// portal 到 document.body:脱离 shell.overlay(z-index 20)的 stacking context,
|
|
612
|
-
// 让窗口真正覆盖到 DSH 输入框区(输入框不再透出)。
|
|
613
|
-
return ReactDOM.createPortal(windowTree, document.body)
|
|
614
|
-
}
|
|
615
|
-
|
|
616
|
-
// ---------- 设置卡片(参照 auto-open-web 的自绘卡片模式) ----------
|
|
617
|
-
// 数据通道:settingsScope(官方 settings 域,命名空间 code-server);
|
|
618
|
-
// 插槽:settings.plugin.item(keyed 注册,卡片自绘,观感对齐官方设计令牌)。
|
|
619
|
-
var CARD_CSS =
|
|
620
|
-
'.dshcs-card{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);border-radius:12px;list-style:none;transition:border-color .16s,background .16s}' +
|
|
621
|
-
'.dshcs-card:hover{border-color:var(--dsw-alias-label-dimmed,var(--dsw-alias-border-l2))}' +
|
|
622
|
-
'.dshcs-cardOpen{background:var(--dsw-alias-bg-layer-2);border-color:var(--dsw-alias-label-dimmed,var(--dsw-alias-border-l2))}' +
|
|
623
|
-
'.dshcs-cardHeader{appearance:none;width:100%;font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:12px;align-items:center;gap:12px;padding:14px 16px;display:flex}' +
|
|
624
|
-
'.dshcs-cardHeader:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:-2px}' +
|
|
625
|
-
'.dshcs-cardHeadText{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}' +
|
|
626
|
-
'.dshcs-cardName{color:var(--dsw-alias-label-primary);font-size:15px;font-weight:600;line-height:1.4}' +
|
|
627
|
-
'.dshcs-cardDescription{color:var(--dsw-alias-label-tertiary,var(--dsw-alias-label-secondary));font-size:13px;line-height:1.5}' +
|
|
628
|
-
'.dshcs-cardChevron{color:var(--dsw-alias-label-tertiary,var(--dsw-alias-label-secondary));flex:none;transition:transform .16s;display:inline-flex}' +
|
|
629
|
-
'.dshcs-cardChevronOpen{transform:rotate(180deg)}' +
|
|
630
|
-
'.dshcs-cardBody{border-top:1px solid var(--dsw-alias-border-l2);margin:0 16px;padding-bottom:8px}' +
|
|
631
|
-
'.dshcs-cardReadOnly{color:var(--dsw-alias-label-tertiary,var(--dsw-alias-label-secondary));margin:12px 0 0;font-size:12px;line-height:1.5}' +
|
|
632
|
-
'.dshcs-pending{white-space:nowrap;background:var(--dsw-alias-bg-module-platform,var(--dsw-alias-bg-layer-2));color:var(--dsw-alias-label-secondary);border-radius:999px;flex:none;padding:1px 8px;font-size:11px;font-weight:500;line-height:17px}' +
|
|
633
|
-
'.dshcs-cardFooter{border-top:1px solid var(--dsw-alias-border-l2);justify-content:flex-end;align-items:center;gap:8px;padding:12px 0 4px;display:flex}' +
|
|
634
|
-
'.dshcs-cardFailed{min-width:0;color:var(--dsw-alias-label-error,var(--dsw-alias-state-error-primary));flex:1;margin:0;font-size:12px;line-height:1.5}' +
|
|
635
|
-
'.dshcs-cbtn{appearance:none;font:inherit;cursor:pointer;border-radius:8px;padding:5px 14px;font-size:13px;line-height:1.5;border:1px solid transparent;transition:color .12s ease,background .12s ease}' +
|
|
636
|
-
'.dshcs-cbtn:disabled{opacity:.4;cursor:default}' +
|
|
637
|
-
'.dshcs-cbtn:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:1px}' +
|
|
638
|
-
'.dshcs-cbtnOutline{border-color:var(--dsw-alias-border-l2);color:var(--dsw-alias-label-secondary);background:0 0}' +
|
|
639
|
-
'.dshcs-cbtnOutline:hover:not(:disabled){color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover,transparent)}' +
|
|
640
|
-
'.dshcs-cbtnPrimary{background:var(--dsw-alias-label-primary);color:var(--dsw-alias-bg-layer-3);border-color:var(--dsw-alias-label-primary);font-weight:600}' +
|
|
641
|
-
'.dshcs-cbtnPrimary:hover:not(:disabled){filter:brightness(.95)}' +
|
|
642
|
-
'.dshcs-cbtnPrimary:active:not(:disabled){filter:brightness(.9)}' +
|
|
643
|
-
'.dshcs-field{flex-direction:column;gap:6px;padding:12px 0;display:flex}' +
|
|
644
|
-
'.dshcs-field+.dshcs-field{border-top:1px solid var(--dsw-alias-border-l2)}' +
|
|
645
|
-
'.dshcs-fieldHead{align-items:center;gap:8px;display:flex}' +
|
|
646
|
-
'.dshcs-fieldLabel{min-width:0;color:var(--dsw-alias-label-primary);flex:1;font-size:13px;font-weight:500;line-height:1.5}' +
|
|
647
|
-
'.dshcs-hint{color:var(--dsw-alias-label-tertiary,var(--dsw-alias-label-secondary));margin:0;font-size:12px;line-height:1.5}' +
|
|
648
|
-
'.dshcs-check{display:flex;align-items:center;gap:8px;cursor:pointer}' +
|
|
649
|
-
'.dshcs-check input{accent-color:var(--dsw-alias-brand-primary);width:15px;height:15px;margin:0;flex:none}' +
|
|
650
|
-
'.dshcs-check input:disabled{cursor:default}' +
|
|
651
|
-
'.dshcs-badges{align-items:center;gap:8px;display:inline-flex}' +
|
|
652
|
-
'.dshcs-badge{white-space:nowrap;background:var(--dsw-alias-bg-module-platform,var(--dsw-alias-bg-layer-2));color:var(--dsw-alias-label-secondary);border-radius:999px;padding:1px 8px;font-size:11px;font-weight:500;line-height:17px}' +
|
|
653
|
-
'.dshcs-reset{font:inherit;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;padding:0;font-size:12px;line-height:1.5}' +
|
|
654
|
-
'.dshcs-reset:hover:not(:disabled){color:var(--dsw-alias-label-primary)}' +
|
|
655
|
-
'.dshcs-reset:disabled{cursor:default}'
|
|
656
|
-
var CARD_TAG = 'dsh-code-server/Card.module.css'
|
|
657
|
-
function injectCss(tagId, css) {
|
|
658
|
-
if (typeof document === 'undefined') return
|
|
659
|
-
if (document.querySelector('style[data-plugin-css=' + JSON.stringify(tagId) + ']') !== null) return
|
|
660
|
-
var tag = document.createElement('style')
|
|
661
|
-
tag.dataset.plugin = 'dsh-code-server'
|
|
662
|
-
tag.dataset.pluginCss = tagId
|
|
663
|
-
tag.textContent = css
|
|
664
|
-
document.head.appendChild(tag)
|
|
665
|
-
}
|
|
666
|
-
injectCss(CARD_TAG, CARD_CSS)
|
|
667
|
-
|
|
668
|
-
function csIconChevron(props) {
|
|
669
|
-
return React.createElement('svg', {
|
|
670
|
-
width: 14, height: 14, viewBox: '0 0 14 14', fill: 'none', 'aria-hidden': true, className: props.className,
|
|
671
|
-
},
|
|
672
|
-
React.createElement('path', {
|
|
673
|
-
d: 'M3.5 5.25L7 8.75L10.5 5.25', stroke: 'currentColor', strokeWidth: 1.5, strokeLinecap: 'round', strokeLinejoin: 'round',
|
|
674
|
-
})
|
|
675
|
-
)
|
|
676
|
-
}
|
|
677
|
-
function csBtn(props) {
|
|
678
|
-
return React.createElement('button', {
|
|
679
|
-
type: 'button',
|
|
680
|
-
className: 'dshcs-cbtn ' + (props.variant === 'primary' ? 'dshcs-cbtnPrimary' : 'dshcs-cbtnOutline'),
|
|
681
|
-
disabled: props.disabled === true,
|
|
682
|
-
onClick: props.onClick,
|
|
683
|
-
}, props.children)
|
|
684
|
-
}
|
|
685
|
-
function csCheck(props) {
|
|
686
|
-
return React.createElement('label', { className: 'dshcs-check' },
|
|
687
|
-
React.createElement('input', {
|
|
688
|
-
type: 'checkbox', checked: props.checked === true, disabled: props.disabled === true,
|
|
689
|
-
onChange: function (event) { props.onChange(event.target.checked) },
|
|
690
|
-
}),
|
|
691
|
-
React.createElement('span', { className: 'dshcs-hint' }, props.children)
|
|
692
|
-
)
|
|
693
|
-
}
|
|
694
|
-
function csBadges(props) {
|
|
695
|
-
var children = []
|
|
696
|
-
if (props.overridden === true) {
|
|
697
|
-
children.push(React.createElement('span', { className: 'dshcs-badge' }, props.overriddenLabel))
|
|
698
|
-
children.push(React.createElement('button', { type: 'button', className: 'dshcs-reset', disabled: props.disabled === true, onClick: props.onReset }, props.resetLabel))
|
|
699
|
-
}
|
|
700
|
-
if (children.length === 0) return null
|
|
701
|
-
return React.createElement('span', { className: 'dshcs-badges' }, ...children)
|
|
702
|
-
}
|
|
703
|
-
function csCard(props) {
|
|
704
|
-
var [open, setOpen] = React.useState(false)
|
|
705
|
-
var state = props.state
|
|
706
|
-
if (state === null || state === undefined || state.available !== true) return null
|
|
707
|
-
var title = props.title
|
|
708
|
-
var saveDisabled = state.dirty !== true || state.invalid === true || state.saving === true
|
|
709
|
-
return React.createElement('li', { className: 'dshcs-card' + (open ? ' dshcs-cardOpen' : '') },
|
|
710
|
-
React.createElement('button', {
|
|
711
|
-
type: 'button', className: 'dshcs-cardHeader', 'aria-expanded': open,
|
|
712
|
-
onClick: function () { setOpen(!open) },
|
|
713
|
-
},
|
|
714
|
-
React.createElement('span', { className: 'dshcs-cardHeadText' },
|
|
715
|
-
React.createElement('span', { className: 'dshcs-cardName' }, title),
|
|
716
|
-
React.createElement('span', { className: 'dshcs-cardDescription' }, props.description)
|
|
717
|
-
),
|
|
718
|
-
state.dirty === true ? React.createElement('span', { className: 'dshcs-pending' }, props.unsavedLabel) : null,
|
|
719
|
-
React.createElement(csIconChevron, { className: 'dshcs-cardChevron' + (open ? ' dshcs-cardChevronOpen' : '') })
|
|
720
|
-
),
|
|
721
|
-
open === true ? React.createElement('div', { className: 'dshcs-cardBody' },
|
|
722
|
-
state.writable !== true ? React.createElement('p', { className: 'dshcs-cardReadOnly', role: 'status' }, props.readOnlyLabel) : null,
|
|
723
|
-
props.children,
|
|
724
|
-
React.createElement('div', { className: 'dshcs-cardFooter' },
|
|
725
|
-
state.failed === true ? React.createElement('p', { className: 'dshcs-cardFailed', role: 'status' }, props.saveFailedLabel) : null,
|
|
726
|
-
React.createElement(csBtn, { disabled: state.dirty !== true || state.saving === true, onClick: props.onDiscard }, props.discardLabel),
|
|
727
|
-
React.createElement(csBtn, { variant: 'primary', disabled: saveDisabled, onClick: props.onSave }, state.saving === true ? props.savingLabel : props.saveLabel)
|
|
728
|
-
)
|
|
729
|
-
) : null
|
|
730
|
-
)
|
|
731
|
-
}
|
|
732
|
-
|
|
733
|
-
/** 设置卡片页面:useState+useEffect 订阅 settingsScope(不投机 useSyncExternalStore
|
|
734
|
-
* 对 snapshot 引用稳定性的要求;不建中间 store)。 */
|
|
735
|
-
function csSettingsPage(props) {
|
|
736
|
-
try {
|
|
737
|
-
var scope = props.scope
|
|
738
|
-
var [snapshot, setSnapshot] = React.useState(function () { return scope !== undefined ? scope.getSnapshot() : null })
|
|
739
|
-
var [draft, setDraft] = React.useState(null) // null | boolean(未保存草稿)
|
|
740
|
-
var [saving, setSaving] = React.useState(false)
|
|
741
|
-
var [failed, setFailed] = React.useState(false)
|
|
742
|
-
React.useEffect(function () {
|
|
743
|
-
if (scope === undefined || typeof scope.subscribe !== 'function') return
|
|
744
|
-
function onUpdate() {
|
|
745
|
-
try { setSnapshot(scope.getSnapshot()) } catch (e) { /* ignore */ }
|
|
746
|
-
}
|
|
747
|
-
var dispose = scope.subscribe(onUpdate)
|
|
748
|
-
return function () { if (typeof dispose === 'function') dispose() }
|
|
749
|
-
}, [scope])
|
|
750
|
-
if (scope === undefined) {
|
|
751
|
-
console.error('[code-server] card scope missing')
|
|
752
|
-
return null
|
|
753
|
-
}
|
|
754
|
-
if (snapshot === null || snapshot === undefined || snapshot.status !== 'ready') {
|
|
755
|
-
// 尚未就绪(连接/镜像加载中):静默留空,官方插槽边界接管;不显示占位
|
|
756
|
-
if (snapshot !== null && snapshot !== undefined && snapshot.status === 'unavailable') {
|
|
757
|
-
console.warn('[code-server] settings scope unavailable:', snapshot.status)
|
|
758
|
-
}
|
|
759
|
-
return null
|
|
760
|
-
}
|
|
761
|
-
var value = snapshot.value !== undefined && snapshot.value !== null ? snapshot.value : {}
|
|
762
|
-
var user = snapshot.user
|
|
763
|
-
var loaded = value.reserveComposer === true
|
|
764
|
-
var overridden = user !== undefined && user !== null && Object.prototype.hasOwnProperty.call(user, 'reserveComposer')
|
|
765
|
-
var dirty = draft !== null && draft !== loaded
|
|
766
|
-
var saveDisabled = !dirty || saving
|
|
767
|
-
var state = {
|
|
768
|
-
available: true,
|
|
769
|
-
writable: snapshot.writable,
|
|
770
|
-
dirty: dirty,
|
|
771
|
-
invalid: false,
|
|
772
|
-
saving: saving,
|
|
773
|
-
failed: failed,
|
|
774
|
-
reserveComposer: { text: draft !== null ? draft : loaded, overridden: overridden },
|
|
775
|
-
}
|
|
776
|
-
async function doSave() {
|
|
777
|
-
if (dirty && !saving) {
|
|
778
|
-
setSaving(true); setFailed(false)
|
|
779
|
-
try {
|
|
780
|
-
await props.scope.set('reserveComposer', draft === true)
|
|
781
|
-
setDraft(null)
|
|
782
|
-
} catch (e) {
|
|
783
|
-
setFailed(true)
|
|
784
|
-
}
|
|
785
|
-
setSaving(false)
|
|
786
|
-
}
|
|
787
|
-
}
|
|
788
|
-
async function doReset() {
|
|
789
|
-
if (saving || snapshot.writable !== true) return
|
|
790
|
-
setSaving(true); setFailed(false)
|
|
791
|
-
try {
|
|
792
|
-
// unset 清除 user 覆盖层 → 回到 base 默认值;成功后镜像同步
|
|
793
|
-
if (typeof props.scope.unset === 'function') await props.scope.unset('reserveComposer')
|
|
794
|
-
else await props.scope.set('reserveComposer', value.reserveComposer === undefined || value.reserveComposer === null ? true : value.reserveComposer)
|
|
795
|
-
setDraft(null)
|
|
796
|
-
} catch (e) {
|
|
797
|
-
setFailed(true)
|
|
798
|
-
}
|
|
799
|
-
setSaving(false)
|
|
800
|
-
}
|
|
801
|
-
// ---- 环境检测/安装(host /code-server/status.env + /code-server/setup) ----
|
|
802
|
-
var [envInfo, setEnvInfo] = React.useState(null) // null=待检测 | { ok, entry, native, vscodeInner, pathToSetup } | { error }
|
|
803
|
-
var [setupBusy, setSetupBusy] = React.useState(false)
|
|
804
|
-
var [setupMsg, setSetupMsg] = React.useState(null)
|
|
805
|
-
var envAliveRef = React.useRef(true) // 组件卸载后停止轮询(不向已卸载组件 setState)
|
|
806
|
-
React.useEffect(function () {
|
|
807
|
-
envAliveRef.current = true
|
|
808
|
-
return function () { envAliveRef.current = false }
|
|
809
|
-
}, [])
|
|
810
|
-
async function doInstallEnv() {
|
|
811
|
-
if (setupBusy) return
|
|
812
|
-
setSetupBusy(true); setSetupMsg(null)
|
|
813
|
-
// api 无 body 时发 GET;setup 是 POST 路由 — 传空对象强制 POST
|
|
814
|
-
var s = await api('/code-server/setup', {})
|
|
815
|
-
if (s == null || s.ok !== true) {
|
|
816
|
-
setSetupMsg(s != null && s.error ? s.error : '启动安装失败')
|
|
817
|
-
setSetupBusy(false)
|
|
818
|
-
return
|
|
819
|
-
}
|
|
820
|
-
setSetupMsg('环境安装已在后台开始,完成后自动刷新…')
|
|
821
|
-
// 轮询 status.setup 直到安装结束:成功后刷新 env 检测,失败显示日志尾部
|
|
822
|
-
function poll() {
|
|
823
|
-
if (envAliveRef.current !== true) return
|
|
824
|
-
api('/code-server/status').then(function (st) {
|
|
825
|
-
if (envAliveRef.current !== true) return
|
|
826
|
-
if (st == null || st.setup == null) { setSetupBusy(false); return }
|
|
827
|
-
if (st.setup.running === true) { setTimeout(poll, 2000); return }
|
|
828
|
-
setSetupBusy(false)
|
|
829
|
-
setEnvInfo(st.env != null ? st.env : { error: 'status 未返回 env' })
|
|
830
|
-
setSetupMsg(st.setup.ok === true
|
|
831
|
-
? '环境安装完成'
|
|
832
|
-
: '环境安装失败:\n' + (st.setup.logTail != null ? st.setup.logTail.slice(-600) : '(无日志)'))
|
|
833
|
-
})
|
|
834
|
-
}
|
|
835
|
-
poll()
|
|
836
|
-
}
|
|
837
|
-
var envSection = React.createElement('div', { className: 'dshcs-field' },
|
|
838
|
-
React.createElement('div', { className: 'dshcs-fieldHead' },
|
|
839
|
-
React.createElement('span', { className: 'dshcs-fieldLabel' }, '环境检测'),
|
|
840
|
-
React.createElement('span', { className: 'dshcs-badges' },
|
|
841
|
-
React.createElement(csBtn, { variant: 'primary', disabled: setupBusy, onClick: async function () {
|
|
842
|
-
setSetupBusy(true); setSetupMsg(null)
|
|
843
|
-
var s = await api('/code-server/status')
|
|
844
|
-
setEnvInfo(s != null && s.env != null ? s.env : { error: 'status 未返回 env' })
|
|
845
|
-
setSetupBusy(false)
|
|
846
|
-
} }, '检测环境'),
|
|
847
|
-
React.createElement(csBtn, { disabled: setupBusy, onClick: function () { doInstallEnv() } }, setupBusy ? '安装中…' : '安装环境')
|
|
848
|
-
)
|
|
849
|
-
),
|
|
850
|
-
envInfo != null
|
|
851
|
-
? React.createElement('div', { className: 'dshcs-hint', style: { marginTop: 6 } },
|
|
852
|
-
envInfo.error != null
|
|
853
|
-
? React.createElement('span', null, '检测失败: ' + envInfo.error)
|
|
854
|
-
: React.createElement('span', null,
|
|
855
|
-
'状态: ' + (envInfo.ok === true ? '✅ 就绪' : '❌ 不通过') +
|
|
856
|
-
(envInfo.entry != null ? ' · 入口: ' + envInfo.entry : ' · 入口缺失') +
|
|
857
|
-
' · native: ' + (envInfo.native === true ? '✅' : '❌') +
|
|
858
|
-
' · VS Code 内部依赖: ' + (envInfo.vscodeInner === true ? '✅' : '❌'))
|
|
859
|
-
)
|
|
860
|
-
: React.createElement('div', { className: 'dshcs-hint', style: { marginTop: 6 } }, '点击"检测环境"查看 code-server 安装状态')
|
|
861
|
-
,
|
|
862
|
-
setupMsg != null
|
|
863
|
-
? React.createElement('div', { className: 'dshcs-hint', style: { marginTop: 6 } }, setupMsg)
|
|
864
|
-
: null,
|
|
865
|
-
React.createElement('div', { className: 'dshcs-hint', style: { marginTop: 10, color: 'var(--dsw-alias-label-tertiary,var(--dsw-alias-label-secondary))' } },
|
|
866
|
-
'安装位置: ' + (envInfo != null && envInfo.entry != null ? envInfo.entry : '(profile)\\.code-server-app(待安装后可查看)') +
|
|
867
|
-
'\n卸载: 先手动删除 .code-server-app 目录,再 dsh plugin --profile web remove dsh-code-server-app'
|
|
868
|
-
)
|
|
869
|
-
)
|
|
870
|
-
return React.createElement(csCard, {
|
|
871
|
-
title: 'Code Server',
|
|
872
|
-
description: '窗口行为:是否保留输入框上方空间(不遮挡 composer)',
|
|
873
|
-
state: state,
|
|
874
|
-
unsavedLabel: '未保存', readOnlyLabel: '本部署的设置为只读。',
|
|
875
|
-
saveFailedLabel: '本部署没有接受这些值,已保留供你修改。',
|
|
876
|
-
discardLabel: '放弃修改', saveLabel: '保存', savingLabel: '保存中…',
|
|
877
|
-
onSave: doSave, onDiscard: function () { setDraft(null); setFailed(false) },
|
|
878
|
-
},
|
|
879
|
-
React.createElement('div', { className: 'dshcs-field' },
|
|
880
|
-
React.createElement('div', { className: 'dshcs-fieldHead' },
|
|
881
|
-
React.createElement('span', { className: 'dshcs-fieldLabel' }, '保留输入框上方空间'),
|
|
882
|
-
overridden === true
|
|
883
|
-
? React.createElement(csBadges, {
|
|
884
|
-
overridden: true, disabled: snapshot.writable !== true,
|
|
885
|
-
overriddenLabel: '已覆盖', resetLabel: '恢复默认',
|
|
886
|
-
onReset: function () { doReset() },
|
|
887
|
-
})
|
|
888
|
-
: null
|
|
889
|
-
),
|
|
890
|
-
React.createElement(csCheck, {
|
|
891
|
-
checked: draft !== null ? draft : loaded,
|
|
892
|
-
disabled: snapshot.writable !== true,
|
|
893
|
-
onChange: function (v) { setDraft(v === true); setFailed(false) },
|
|
894
|
-
}, '开启时窗口初始/缩放/最大化止于输入框上方;关闭后允许盖住输入框(最大化到视口底)')
|
|
895
|
-
),
|
|
896
|
-
envSection
|
|
897
|
-
)
|
|
898
|
-
} catch (e) {
|
|
899
|
-
// 渲染异常:记日志不打断;官方插槽对异常有边界,卡片留空即可
|
|
900
|
-
console.error('[code-server] card render error:', e !== null && e !== undefined && e.message !== undefined ? e.message : String(e))
|
|
901
|
-
return null
|
|
902
|
-
}
|
|
903
|
-
}
|
|
904
|
-
|
|
905
|
-
// ---------- 插件注册 ----------
|
|
906
|
-
function apply(ctx) {
|
|
907
|
-
var slots = ctx.get('slots')
|
|
908
|
-
if (slots === undefined) {
|
|
909
|
-
console.error('[code-server] slots service unavailable')
|
|
910
|
-
return
|
|
911
|
-
}
|
|
912
|
-
// 预拉取 status:让侧栏按钮首帧就有 env(检测通过才显示,不闪烁)
|
|
913
|
-
api('/code-server/status').then(function (s) {
|
|
914
|
-
setState({ status: s })
|
|
915
|
-
}).catch(function () { /* 首次失败由后续轮询补救 */ })
|
|
916
|
-
slots.inject('sidebar.footer.action', () => slots.register(
|
|
917
|
-
{ name: 'sidebar.footer.action', id: 'code-server-panel', order: 60, label: 'Code Server' },
|
|
918
|
-
(props) => React.createElement(SidebarAction, props)
|
|
919
|
-
))
|
|
920
|
-
slots.inject('shell.overlay', () => slots.register(
|
|
921
|
-
{ name: 'shell.overlay', id: 'code-server', order: 70, label: 'Code Server' },
|
|
922
|
-
(props) => React.createElement(Window, props)
|
|
923
|
-
))
|
|
924
|
-
|
|
925
|
-
// ---- 设置卡片(settings.plugin.item 插槽 + settingsScope 命名空间) ----
|
|
926
|
-
var settingsScope = ctx.settingsScope
|
|
927
|
-
if (settingsScope === undefined || typeof settingsScope.bind !== 'function') {
|
|
928
|
-
console.error('[code-server] settingsScope unavailable (inject missing?); settings card disabled')
|
|
929
|
-
return
|
|
930
|
-
}
|
|
931
|
-
var scope = settingsScope.bind({ namespace: 'code-server' })
|
|
932
|
-
slots.inject('settings.plugin.item', () => slots.register(
|
|
933
|
-
{ name: 'settings.plugin.item', key: 'code-server', label: 'Code Server', inject: function () { return { scope: scope } } },
|
|
934
|
-
csSettingsPage
|
|
935
|
-
))
|
|
936
|
-
|
|
937
|
-
console.log('[code-server] client bundle registered (sidebar action + floating window + settings card)')
|
|
938
|
-
}
|
|
939
|
-
|
|
940
|
-
exports.apply = apply
|
|
941
|
-
exports.inject = ['slots', 'settingsScope']
|
|
942
|
-
exports.name = 'code-server'
|
|
943
|
-
return module.exports
|
|
944
|
-
}
|
|
945
|
-
})
|