prime-dev-cli 1.0.23 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/dist/server/.next/BUILD_ID +1 -1
  2. package/dist/server/.next/app-build-manifest.json +2 -2
  3. package/dist/server/.next/build-manifest.json +2 -2
  4. package/dist/server/.next/cache/.rscinfo +1 -1
  5. package/dist/server/.next/cache/.tsbuildinfo +1 -1
  6. package/dist/server/.next/cache/eslint/.cache_1qa5vxt +1 -1
  7. package/dist/server/.next/fallback-build-manifest.json +2 -2
  8. package/dist/server/.next/next-minimal-server.js.nft.json +1 -1
  9. package/dist/server/.next/next-server.js.nft.json +1 -1
  10. package/dist/server/.next/prerender-manifest.json +3 -3
  11. package/dist/server/.next/server/app/_not-found.html +1 -1
  12. package/dist/server/.next/server/app/_not-found.rsc +1 -1
  13. package/dist/server/.next/server/app/api/admin-git-batch-create-branch/route.js.nft.json +1 -1
  14. package/dist/server/.next/server/app/api/admin-git-batch-delete-branch/route.js.nft.json +1 -1
  15. package/dist/server/.next/server/app/api/admin-git-batch-merge/route.js.nft.json +1 -1
  16. package/dist/server/.next/server/app/api/check-workspace/route.js.nft.json +1 -1
  17. package/dist/server/.next/server/app/api/gwh-git-flow/route.js.nft.json +1 -1
  18. package/dist/server/.next/server/app/api/initialize-workspace/route.js +1 -1
  19. package/dist/server/.next/server/app/api/initialize-workspace/route.js.nft.json +1 -1
  20. package/dist/server/.next/server/app/api/microapp-proxy-config/route.js +1 -1
  21. package/dist/server/.next/server/app/api/microapp-proxy-config/route.js.nft.json +1 -1
  22. package/dist/server/.next/server/app/api/open-project/route.js.nft.json +1 -1
  23. package/dist/server/.next/server/app/api/project-config/route.js +1 -1
  24. package/dist/server/.next/server/app/api/project-config/route.js.nft.json +1 -1
  25. package/dist/server/.next/server/app/api/retry-project/route.js.nft.json +1 -1
  26. package/dist/server/.next/server/app/api/uat-git-flow/route.js.nft.json +1 -1
  27. package/dist/server/.next/server/app/api/uat-git-flow/step/route.js.nft.json +1 -1
  28. package/dist/server/.next/server/app/configuration/page/app-build-manifest.json +1 -1
  29. package/dist/server/.next/server/app/configuration/page_client-reference-manifest.js +1 -1
  30. package/dist/server/.next/server/app/configuration.html +1 -1
  31. package/dist/server/.next/server/app/configuration.rsc +2 -2
  32. package/dist/server/.next/server/app/index.html +1 -1
  33. package/dist/server/.next/server/app/index.rsc +1 -1
  34. package/dist/server/.next/server/app/initialization/page/app-build-manifest.json +1 -1
  35. package/dist/server/.next/server/app/initialization/page_client-reference-manifest.js +1 -1
  36. package/dist/server/.next/server/app/initialization.html +1 -1
  37. package/dist/server/.next/server/app/initialization.rsc +2 -2
  38. package/dist/server/.next/server/chunks/[root-of-the-server]__0879b2d6._.js.map +1 -1
  39. package/dist/server/.next/server/chunks/[root-of-the-server]__0d56f35b._.js.map +1 -1
  40. package/dist/server/.next/server/chunks/[root-of-the-server]__0e8a08fc._.js.map +1 -1
  41. package/dist/server/.next/server/chunks/[root-of-the-server]__1e792460._.js.map +1 -1
  42. package/dist/server/.next/server/chunks/[root-of-the-server]__2a29597f._.js.map +1 -1
  43. package/dist/server/.next/server/chunks/[root-of-the-server]__2a78acef._.js.map +1 -1
  44. package/dist/server/.next/server/chunks/[root-of-the-server]__2f8b52da._.js.map +1 -1
  45. package/dist/server/.next/server/chunks/[root-of-the-server]__2ffbf0d3._.js +1 -1
  46. package/dist/server/.next/server/chunks/[root-of-the-server]__2ffbf0d3._.js.map +1 -1
  47. package/dist/server/.next/server/chunks/[root-of-the-server]__37bfbf6b._.js.map +1 -1
  48. package/dist/server/.next/server/chunks/[root-of-the-server]__452b5f9c._.js.map +1 -1
  49. package/dist/server/.next/server/chunks/[root-of-the-server]__4ec3205b._.js.map +1 -1
  50. package/dist/server/.next/server/chunks/[root-of-the-server]__4fd52ac1._.js.map +1 -1
  51. package/dist/server/.next/server/chunks/[root-of-the-server]__54f2f032._.js +3 -0
  52. package/dist/server/.next/server/chunks/[root-of-the-server]__54f2f032._.js.map +1 -0
  53. package/dist/server/.next/server/chunks/[root-of-the-server]__5c9f62f9._.js.map +1 -1
  54. package/dist/server/.next/server/chunks/[root-of-the-server]__66dc5e6b._.js.map +1 -1
  55. package/dist/server/.next/server/chunks/[root-of-the-server]__8637b7f1._.js.map +1 -1
  56. package/dist/server/.next/server/chunks/[root-of-the-server]__8a8561ea._.js.map +1 -1
  57. package/dist/server/.next/server/chunks/[root-of-the-server]__9e44bbc8._.js +20 -0
  58. package/dist/server/.next/server/chunks/[root-of-the-server]__9e44bbc8._.js.map +1 -0
  59. package/dist/server/.next/server/chunks/[root-of-the-server]__9f7a6c58._.js.map +1 -1
  60. package/dist/server/.next/server/chunks/[root-of-the-server]__a6fbefc6._.js.map +1 -1
  61. package/dist/server/.next/server/chunks/[root-of-the-server]__ac6efee1._.js.map +1 -1
  62. package/dist/server/.next/server/chunks/[root-of-the-server]__c18498ef._.js.map +1 -1
  63. package/dist/server/.next/server/chunks/[root-of-the-server]__c43cf810._.js +5 -0
  64. package/dist/server/.next/server/chunks/[root-of-the-server]__c43cf810._.js.map +1 -0
  65. package/dist/server/.next/server/chunks/[root-of-the-server]__dda45cac._.js.map +1 -1
  66. package/dist/server/.next/server/chunks/[root-of-the-server]__de18efbd._.js.map +1 -1
  67. package/dist/server/.next/server/chunks/[root-of-the-server]__e0b7050d._.js.map +1 -1
  68. package/dist/server/.next/server/chunks/[root-of-the-server]__ec681197._.js.map +1 -1
  69. package/dist/server/.next/server/chunks/[root-of-the-server]__f111df8e._.js.map +1 -1
  70. package/dist/server/.next/server/chunks/ssr/_5579d68f._.js +2 -2
  71. package/dist/server/.next/server/chunks/ssr/_5579d68f._.js.map +1 -1
  72. package/dist/server/.next/server/chunks/ssr/_b0947ff2._.js +1 -1
  73. package/dist/server/.next/server/chunks/ssr/_b0947ff2._.js.map +1 -1
  74. package/dist/server/.next/server/chunks/ssr/packages_server_src_7cef6dbd._.js.map +1 -1
  75. package/dist/server/.next/server/pages/404.html +1 -1
  76. package/dist/server/.next/server/pages/500.html +1 -1
  77. package/dist/server/.next/server/server-reference-manifest.js +1 -1
  78. package/dist/server/.next/server/server-reference-manifest.json +1 -1
  79. package/dist/server/.next/static/chunks/{13acbe5989647429.js → 2d9a99312c08fbf9.js} +1 -1
  80. package/dist/server/.next/static/chunks/51208386dbc1874e.js.map +1 -0
  81. package/dist/server/.next/static/chunks/8c850efc5ffddd02.js +57 -0
  82. package/dist/server/.next/static/chunks/f36be6bae8f3723b.js.map +1 -0
  83. package/dist/server/.next/trace +2 -2
  84. package/package.json +1 -1
  85. package/dist/server/.next/server/chunks/[root-of-the-server]__a74239fc._.js +0 -3
  86. package/dist/server/.next/server/chunks/[root-of-the-server]__a74239fc._.js.map +0 -1
  87. package/dist/server/.next/server/chunks/[root-of-the-server]__aaa3fe74._.js +0 -5
  88. package/dist/server/.next/server/chunks/[root-of-the-server]__aaa3fe74._.js.map +0 -1
  89. package/dist/server/.next/server/chunks/[root-of-the-server]__b176e8df._.js +0 -20
  90. package/dist/server/.next/server/chunks/[root-of-the-server]__b176e8df._.js.map +0 -1
  91. package/dist/server/.next/static/chunks/205cbae70a6c50e1.js.map +0 -1
  92. package/dist/server/.next/static/chunks/2d2322acba49236a.js +0 -57
  93. package/dist/server/.next/static/chunks/f5014a46b22ea191.js.map +0 -1
  94. /package/dist/server/.next/static/{FFQIKXlgcLTQYLDJOFtvJ → 4KbwlsFdd1vqSOg9Nuj9R}/_buildManifest.js +0 -0
  95. /package/dist/server/.next/static/{FFQIKXlgcLTQYLDJOFtvJ → 4KbwlsFdd1vqSOg9Nuj9R}/_clientMiddlewareManifest.json +0 -0
  96. /package/dist/server/.next/static/{FFQIKXlgcLTQYLDJOFtvJ → 4KbwlsFdd1vqSOg9Nuj9R}/_ssgManifest.js +0 -0
@@ -0,0 +1,57 @@
1
+ (globalThis.TURBOPACK=globalThis.TURBOPACK||[]).push(["object"==typeof document?document.currentScript:void 0,{39171:e=>{"use strict";var{g:t,__dirname:r}=e;e.s({Item:()=>I,Root:()=>R,RovingFocusGroup:()=>S,RovingFocusGroupItem:()=>T,createRovingFocusGroupScope:()=>j});var n=e.i(19886),s=e.i(77787),a=e.i(29615),i=e.i(28537),o=e.i(15836),l=e.i(86048),c=e.i(42352),d=e.i(81897),u=e.i(98644),m=e.i(53955),p=e.i(20393),h="rovingFocusGroup.onEntryFocus",f={bubbles:!1,cancelable:!0},x="RovingFocusGroup",[g,v,y]=(0,a.createCollection)(x),[b,j]=(0,o.createContextScope)(x,[y]),[w,N]=b(x),S=(0,n.forwardRef)((e,t)=>(0,p.jsx)(g.Provider,{scope:e.__scopeRovingFocusGroup,children:(0,p.jsx)(g.Slot,{scope:e.__scopeRovingFocusGroup,children:(0,p.jsx)(k,{...e,ref:t})})}));S.displayName=x;var k=(0,n.forwardRef)((e,t)=>{let{__scopeRovingFocusGroup:r,orientation:a,loop:o=!1,dir:l,currentTabStopId:g,defaultCurrentTabStopId:y,onCurrentTabStopIdChange:b,onEntryFocus:j,preventScrollOnEntryFocus:N=!1,...S}=e,k=(0,n.useRef)(null),C=(0,i.useComposedRefs)(t,k),T=(0,m.useDirection)(l),[P,R]=(0,u.useControllableState)({prop:g,defaultProp:y??null,onChange:b,caller:x}),[I,M]=(0,n.useState)(!1),O=(0,d.useCallbackRef)(j),_=v(r),L=(0,n.useRef)(!1),[D,A]=(0,n.useState)(0);return(0,n.useEffect)(()=>{let e=k.current;if(e)return e.addEventListener(h,O),()=>e.removeEventListener(h,O)},[O]),(0,p.jsx)(w,{scope:r,orientation:a,dir:T,loop:o,currentTabStopId:P,onItemFocus:(0,n.useCallback)(e=>R(e),[R]),onItemShiftTab:(0,n.useCallback)(()=>M(!0),[]),onFocusableItemAdd:(0,n.useCallback)(()=>A(e=>e+1),[]),onFocusableItemRemove:(0,n.useCallback)(()=>A(e=>e-1),[]),children:(0,p.jsx)(c.Primitive.div,{tabIndex:I||0===D?-1:0,"data-orientation":a,...S,ref:C,style:{outline:"none",...e.style},onMouseDown:(0,s.composeEventHandlers)(e.onMouseDown,()=>{L.current=!0}),onFocus:(0,s.composeEventHandlers)(e.onFocus,e=>{let t=!L.current;if(e.target===e.currentTarget&&t&&!I){let t=new CustomEvent(h,f);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){let e=_().filter(e=>e.focusable);E([e.find(e=>e.active),e.find(e=>e.id===P),...e].filter(Boolean).map(e=>e.ref.current),N)}}L.current=!1}),onBlur:(0,s.composeEventHandlers)(e.onBlur,()=>M(!1))})})}),C="RovingFocusGroupItem",T=(0,n.forwardRef)((e,t)=>{let{__scopeRovingFocusGroup:r,focusable:a=!0,active:i=!1,tabStopId:o,children:d,...u}=e,m=(0,l.useId)(),h=o||m,f=N(C,r),x=f.currentTabStopId===h,y=v(r),{onFocusableItemAdd:b,onFocusableItemRemove:j,currentTabStopId:w}=f;return(0,n.useEffect)(()=>{if(a)return b(),()=>j()},[a,b,j]),(0,p.jsx)(g.ItemSlot,{scope:r,id:h,focusable:a,active:i,children:(0,p.jsx)(c.Primitive.span,{tabIndex:x?0:-1,"data-orientation":f.orientation,...u,ref:t,onMouseDown:(0,s.composeEventHandlers)(e.onMouseDown,e=>{a?f.onItemFocus(h):e.preventDefault()}),onFocus:(0,s.composeEventHandlers)(e.onFocus,()=>f.onItemFocus(h)),onKeyDown:(0,s.composeEventHandlers)(e.onKeyDown,e=>{if("Tab"===e.key&&e.shiftKey)return void f.onItemShiftTab();if(e.target!==e.currentTarget)return;let t=function(e,t,r){var n;let s=(n=e.key,"rtl"!==r?n:"ArrowLeft"===n?"ArrowRight":"ArrowRight"===n?"ArrowLeft":n);if(!("vertical"===t&&["ArrowLeft","ArrowRight"].includes(s))&&!("horizontal"===t&&["ArrowUp","ArrowDown"].includes(s)))return P[s]}(e,f.orientation,f.dir);if(void 0!==t){if(e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;e.preventDefault();let r=y().filter(e=>e.focusable).map(e=>e.ref.current);if("last"===t)r.reverse();else if("prev"===t||"next"===t){"prev"===t&&r.reverse();let n=r.indexOf(e.currentTarget);r=f.loop?function(e,t){return e.map((r,n)=>e[(t+n)%e.length])}(r,n+1):r.slice(n+1)}setTimeout(()=>E(r))}}),children:"function"==typeof d?d({isCurrentTabStop:x,hasTabStop:null!=w}):d})})});T.displayName=C;var P={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function E(e,t=!1){let r=document.activeElement;for(let n of e)if(n===r||(n.focus({preventScroll:t}),document.activeElement!==r))return}var R=S,I=T},47385:e=>{"use strict";var{g:t,__dirname:r}=e;e.s({Content:()=>I,List:()=>E,Root:()=>P,Tabs:()=>y,TabsContent:()=>k,TabsList:()=>j,TabsTrigger:()=>N,Trigger:()=>R,createTabsScope:()=>f});var n=e.i(19886),s=e.i(77787),a=e.i(15836),i=e.i(39171),o=e.i(85017),l=e.i(42352),c=e.i(53955),d=e.i(98644),u=e.i(86048),m=e.i(20393),p="Tabs",[h,f]=(0,a.createContextScope)(p,[i.createRovingFocusGroupScope]),x=(0,i.createRovingFocusGroupScope)(),[g,v]=h(p),y=(0,n.forwardRef)((e,t)=>{let{__scopeTabs:r,value:n,onValueChange:s,defaultValue:a,orientation:i="horizontal",dir:o,activationMode:h="automatic",...f}=e,x=(0,c.useDirection)(o),[v,y]=(0,d.useControllableState)({prop:n,onChange:s,defaultProp:a??"",caller:p});return(0,m.jsx)(g,{scope:r,baseId:(0,u.useId)(),value:v,onValueChange:y,orientation:i,dir:x,activationMode:h,children:(0,m.jsx)(l.Primitive.div,{dir:x,"data-orientation":i,...f,ref:t})})});y.displayName=p;var b="TabsList",j=(0,n.forwardRef)((e,t)=>{let{__scopeTabs:r,loop:n=!0,...s}=e,a=v(b,r),o=x(r);return(0,m.jsx)(i.Root,{asChild:!0,...o,orientation:a.orientation,dir:a.dir,loop:n,children:(0,m.jsx)(l.Primitive.div,{role:"tablist","aria-orientation":a.orientation,...s,ref:t})})});j.displayName=b;var w="TabsTrigger",N=(0,n.forwardRef)((e,t)=>{let{__scopeTabs:r,value:n,disabled:a=!1,...o}=e,c=v(w,r),d=x(r),u=C(c.baseId,n),p=T(c.baseId,n),h=n===c.value;return(0,m.jsx)(i.Item,{asChild:!0,...d,focusable:!a,active:h,children:(0,m.jsx)(l.Primitive.button,{type:"button",role:"tab","aria-selected":h,"aria-controls":p,"data-state":h?"active":"inactive","data-disabled":a?"":void 0,disabled:a,id:u,...o,ref:t,onMouseDown:(0,s.composeEventHandlers)(e.onMouseDown,e=>{a||0!==e.button||!1!==e.ctrlKey?e.preventDefault():c.onValueChange(n)}),onKeyDown:(0,s.composeEventHandlers)(e.onKeyDown,e=>{[" ","Enter"].includes(e.key)&&c.onValueChange(n)}),onFocus:(0,s.composeEventHandlers)(e.onFocus,()=>{let e="manual"!==c.activationMode;h||a||!e||c.onValueChange(n)})})})});N.displayName=w;var S="TabsContent",k=(0,n.forwardRef)((e,t)=>{let{__scopeTabs:r,value:s,forceMount:a,children:i,...c}=e,d=v(S,r),u=C(d.baseId,s),p=T(d.baseId,s),h=s===d.value,f=(0,n.useRef)(h);return(0,n.useEffect)(()=>{let e=requestAnimationFrame(()=>f.current=!1);return()=>cancelAnimationFrame(e)},[]),(0,m.jsx)(o.Presence,{present:a||h,children:({present:r})=>(0,m.jsx)(l.Primitive.div,{"data-state":h?"active":"inactive","data-orientation":d.orientation,role:"tabpanel","aria-labelledby":u,hidden:!r,id:p,tabIndex:0,...c,ref:t,style:{...e.style,animationDuration:f.current?"0s":void 0},children:r&&i})})});function C(e,t){return`${e}-trigger-${t}`}function T(e,t){return`${e}-content-${t}`}k.displayName=S;var P=y,E=j,R=N,I=k},72242:e=>{"use strict";var{g:t,__dirname:r}=e;e.s({Tabs:()=>i,TabsContent:()=>c,TabsList:()=>o,TabsTrigger:()=>l});var n=e.i(20393),s=e.i(47385),a=e.i(39037);function i({className:e,...t}){return(0,n.jsx)(s.Root,{"data-slot":"tabs",className:(0,a.cn)("flex flex-col gap-2",e),...t})}function o({className:e,...t}){return(0,n.jsx)(s.List,{"data-slot":"tabs-list",className:(0,a.cn)("bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]",e),...t})}function l({className:e,...t}){return(0,n.jsx)(s.Trigger,{"data-slot":"tabs-trigger",className:(0,a.cn)("data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...t})}function c({className:e,...t}){return(0,n.jsx)(s.Content,{"data-slot":"tabs-content",className:(0,a.cn)("flex-1 outline-none",e),...t})}},44299:e=>{"use strict";var{g:t,__dirname:r}=e;function n(e,[t,r]){return Math.min(r,Math.max(t,e))}e.s({clamp:()=>n})},25663:e=>{"use strict";var{g:t,__dirname:r}=e;e.s({ALIGN_OPTIONS:()=>f,Anchor:()=>L,Arrow:()=>A,Content:()=>D,Popper:()=>j,PopperAnchor:()=>N,PopperArrow:()=>R,PopperContent:()=>T,Root:()=>_,SIDE_OPTIONS:()=>h,createPopperScope:()=>v});var n=e.i(19886),s=e.i(73784),a=e.i(13450),i=e.i(36578),o=e.i(28537),l=e.i(15836),c=e.i(42352),d=e.i(81897),u=e.i(91327),m=e.i(30287),p=e.i(20393),h=["top","right","bottom","left"],f=["start","center","end"],x="Popper",[g,v]=(0,l.createContextScope)(x),[y,b]=g(x),j=e=>{let{__scopePopper:t,children:r}=e,[s,a]=(0,n.useState)(null);return(0,p.jsx)(y,{scope:t,anchor:s,onAnchorChange:a,children:r})};j.displayName=x;var w="PopperAnchor",N=(0,n.forwardRef)((e,t)=>{let{__scopePopper:r,virtualRef:s,...a}=e,i=b(w,r),l=(0,n.useRef)(null),d=(0,o.useComposedRefs)(t,l);return(0,n.useEffect)(()=>{i.onAnchorChange(s?.current||l.current)}),s?null:(0,p.jsx)(c.Primitive.div,{...a,ref:d})});N.displayName=w;var S="PopperContent",[k,C]=g(S),T=(0,n.forwardRef)((e,t)=>{let{__scopePopper:r,side:i="bottom",sideOffset:l=0,align:h="center",alignOffset:f=0,arrowPadding:x=0,avoidCollisions:g=!0,collisionBoundary:v=[],collisionPadding:y=0,sticky:j="partial",hideWhenDetached:w=!1,updatePositionStrategy:N="optimized",onPlaced:C,...T}=e,P=b(S,r),[E,R]=(0,n.useState)(null),_=(0,o.useComposedRefs)(t,e=>R(e)),[L,D]=(0,n.useState)(null),A=(0,m.useSize)(L),$=A?.width??0,z=A?.height??0,H="number"==typeof y?y:{top:0,right:0,bottom:0,left:0,...y},F=Array.isArray(v)?v:[v],B=F.length>0,U={padding:H,boundary:F.filter(I),altBoundary:B},{refs:V,floatingStyles:G,placement:K,isPositioned:W,middlewareData:q}=(0,s.useFloating)({strategy:"fixed",placement:i+("center"!==h?"-"+h:""),whileElementsMounted:(...e)=>(0,a.autoUpdate)(...e,{animationFrame:"always"===N}),elements:{reference:P.anchor},middleware:[(0,s.offset)({mainAxis:l+z,alignmentAxis:f}),g&&(0,s.shift)({mainAxis:!0,crossAxis:!1,limiter:"partial"===j?(0,s.limitShift)():void 0,...U}),g&&(0,s.flip)({...U}),(0,s.size)({...U,apply:({elements:e,rects:t,availableWidth:r,availableHeight:n})=>{let{width:s,height:a}=t.reference,i=e.floating.style;i.setProperty("--radix-popper-available-width",`${r}px`),i.setProperty("--radix-popper-available-height",`${n}px`),i.setProperty("--radix-popper-anchor-width",`${s}px`),i.setProperty("--radix-popper-anchor-height",`${a}px`)}}),L&&(0,s.arrow)({element:L,padding:x}),M({arrowWidth:$,arrowHeight:z}),w&&(0,s.hide)({strategy:"referenceHidden",...U})]}),[J,Y]=O(K),X=(0,d.useCallbackRef)(C);(0,u.useLayoutEffect)(()=>{W&&X?.()},[W,X]);let Z=q.arrow?.x,Q=q.arrow?.y,ee=q.arrow?.centerOffset!==0,[et,er]=(0,n.useState)();return(0,u.useLayoutEffect)(()=>{E&&er(window.getComputedStyle(E).zIndex)},[E]),(0,p.jsx)("div",{ref:V.setFloating,"data-radix-popper-content-wrapper":"",style:{...G,transform:W?G.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:et,"--radix-popper-transform-origin":[q.transformOrigin?.x,q.transformOrigin?.y].join(" "),...q.hide?.referenceHidden&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:(0,p.jsx)(k,{scope:r,placedSide:J,onArrowChange:D,arrowX:Z,arrowY:Q,shouldHideArrow:ee,children:(0,p.jsx)(c.Primitive.div,{"data-side":J,"data-align":Y,...T,ref:_,style:{...T.style,animation:W?void 0:"none"}})})})});T.displayName=S;var P="PopperArrow",E={top:"bottom",right:"left",bottom:"top",left:"right"},R=(0,n.forwardRef)(function(e,t){let{__scopePopper:r,...n}=e,s=C(P,r),a=E[s.placedSide];return(0,p.jsx)("span",{ref:s.onArrowChange,style:{position:"absolute",left:s.arrowX,top:s.arrowY,[a]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[s.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[s.placedSide],visibility:s.shouldHideArrow?"hidden":void 0},children:(0,p.jsx)(i.Root,{...n,ref:t,style:{...n.style,display:"block"}})})});function I(e){return null!==e}R.displayName=P;var M=e=>({name:"transformOrigin",options:e,fn(t){let{placement:r,rects:n,middlewareData:s}=t,a=s.arrow?.centerOffset!==0,i=a?0:e.arrowWidth,o=a?0:e.arrowHeight,[l,c]=O(r),d={start:"0%",center:"50%",end:"100%"}[c],u=(s.arrow?.x??0)+i/2,m=(s.arrow?.y??0)+o/2,p="",h="";return"bottom"===l?(p=a?d:`${u}px`,h=`${-o}px`):"top"===l?(p=a?d:`${u}px`,h=`${n.floating.height+o}px`):"right"===l?(p=`${-o}px`,h=a?d:`${m}px`):"left"===l&&(p=`${n.floating.width+o}px`,h=a?d:`${m}px`),{data:{x:p,y:h}}}});function O(e){let[t,r="center"]=e.split("-");return[t,r]}var _=j,L=N,D=T,A=R},44916:e=>{"use strict";var{g:t,__dirname:r}=e;e.s({usePrevious:()=>s});var n=e.i(19886);function s(e){let t=(0,n.useRef)({value:e,previous:e});return(0,n.useMemo)(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}},76:e=>{"use strict";var{g:t,__dirname:r}=e;e.s({Root:()=>l,VISUALLY_HIDDEN_STYLES:()=>i,VisuallyHidden:()=>o});var n=e.i(19886),s=e.i(42352),a=e.i(20393),i=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),o=(0,n.forwardRef)((e,t)=>(0,a.jsx)(s.Primitive.span,{...e,ref:t,style:{...i,...e.style}}));o.displayName="VisuallyHidden";var l=o},1990:e=>{"use strict";var{g:t,__dirname:r}=e;e.s({Arrow:()=>eK,Content:()=>eD,Group:()=>e$,Icon:()=>e_,Item:()=>eH,ItemIndicator:()=>eB,ItemText:()=>eF,Label:()=>ez,Portal:()=>eL,Root:()=>eI,ScrollDownButton:()=>eV,ScrollUpButton:()=>eU,Select:()=>H,SelectArrow:()=>eC,SelectContent:()=>q,SelectGroup:()=>el,SelectIcon:()=>G,SelectItem:()=>eh,SelectItemIndicator:()=>ev,SelectItemText:()=>ex,SelectLabel:()=>ed,SelectPortal:()=>K,SelectScrollDownButton:()=>ew,SelectScrollUpButton:()=>eb,SelectSeparator:()=>eS,SelectTrigger:()=>B,SelectValue:()=>V,SelectViewport:()=>es,Separator:()=>eG,Trigger:()=>eM,Value:()=>eO,Viewport:()=>eA,createSelectScope:()=>_});var n=e.i(19886),s=e.i(14709),a=e.i(44299),i=e.i(77787),o=e.i(29615),l=e.i(28537),c=e.i(15836),d=e.i(53955),u=e.i(74702),m=e.i(63433),p=e.i(32240),h=e.i(86048),f=e.i(25663),x=e.i(23214),g=e.i(42352),v=e.i(74009),y=e.i(81897),b=e.i(98644),j=e.i(91327),w=e.i(44916),N=e.i(76),S=e.i(83276),k=e.i(65544),C=e.i(20393),T=[" ","Enter","ArrowUp","ArrowDown"],P=[" ","Enter"],E="Select",[R,I,M]=(0,o.createCollection)(E),[O,_]=(0,c.createContextScope)(E,[M,f.createPopperScope]),L=(0,f.createPopperScope)(),[D,A]=O(E),[$,z]=O(E),H=e=>{let{__scopeSelect:t,children:r,open:s,defaultOpen:a,onOpenChange:i,value:o,defaultValue:l,onValueChange:c,dir:u,name:m,autoComplete:p,disabled:x,required:g,form:v}=e,y=L(t),[j,w]=(0,n.useState)(null),[N,S]=(0,n.useState)(null),[k,T]=(0,n.useState)(!1),P=(0,d.useDirection)(u),[I,M]=(0,b.useControllableState)({prop:s,defaultProp:a??!1,onChange:i,caller:E}),[O,_]=(0,b.useControllableState)({prop:o,defaultProp:l,onChange:c,caller:E}),A=(0,n.useRef)(null),z=!j||v||!!j.closest("form"),[H,F]=(0,n.useState)(new Set),B=Array.from(H).map(e=>e.props.value).join(";");return(0,C.jsx)(f.Root,{...y,children:(0,C.jsxs)(D,{required:g,scope:t,trigger:j,onTriggerChange:w,valueNode:N,onValueNodeChange:S,valueNodeHasChildren:k,onValueNodeHasChildrenChange:T,contentId:(0,h.useId)(),value:O,onValueChange:_,open:I,onOpenChange:M,dir:P,triggerPointerDownPosRef:A,disabled:x,children:[(0,C.jsx)(R.Provider,{scope:t,children:(0,C.jsx)($,{scope:e.__scopeSelect,onNativeOptionAdd:(0,n.useCallback)(e=>{F(t=>new Set(t).add(e))},[]),onNativeOptionRemove:(0,n.useCallback)(e=>{F(t=>{let r=new Set(t);return r.delete(e),r})},[]),children:r})}),z?(0,C.jsxs)(eT,{"aria-hidden":!0,required:g,tabIndex:-1,name:m,autoComplete:p,value:O,onChange:e=>_(e.target.value),disabled:x,form:v,children:[void 0===O?(0,C.jsx)("option",{value:""}):null,Array.from(H)]},B):null]})})};H.displayName=E;var F="SelectTrigger",B=(0,n.forwardRef)((e,t)=>{let{__scopeSelect:r,disabled:s=!1,...a}=e,o=L(r),c=A(F,r),d=c.disabled||s,u=(0,l.useComposedRefs)(t,c.onTriggerChange),m=I(r),p=(0,n.useRef)("touch"),[h,x,v]=eE(e=>{let t=m().filter(e=>!e.disabled),r=t.find(e=>e.value===c.value),n=eR(t,e,r);void 0!==n&&c.onValueChange(n.value)}),y=e=>{d||(c.onOpenChange(!0),v()),e&&(c.triggerPointerDownPosRef.current={x:Math.round(e.pageX),y:Math.round(e.pageY)})};return(0,C.jsx)(f.Anchor,{asChild:!0,...o,children:(0,C.jsx)(g.Primitive.button,{type:"button",role:"combobox","aria-controls":c.contentId,"aria-expanded":c.open,"aria-required":c.required,"aria-autocomplete":"none",dir:c.dir,"data-state":c.open?"open":"closed",disabled:d,"data-disabled":d?"":void 0,"data-placeholder":eP(c.value)?"":void 0,...a,ref:u,onClick:(0,i.composeEventHandlers)(a.onClick,e=>{e.currentTarget.focus(),"mouse"!==p.current&&y(e)}),onPointerDown:(0,i.composeEventHandlers)(a.onPointerDown,e=>{p.current=e.pointerType;let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),0===e.button&&!1===e.ctrlKey&&"mouse"===e.pointerType&&(y(e),e.preventDefault())}),onKeyDown:(0,i.composeEventHandlers)(a.onKeyDown,e=>{let t=""!==h.current;e.ctrlKey||e.altKey||e.metaKey||1!==e.key.length||x(e.key),(!t||" "!==e.key)&&T.includes(e.key)&&(y(),e.preventDefault())})})})});B.displayName=F;var U="SelectValue",V=(0,n.forwardRef)((e,t)=>{let{__scopeSelect:r,className:n,style:s,children:a,placeholder:i="",...o}=e,c=A(U,r),{onValueNodeHasChildrenChange:d}=c,u=void 0!==a,m=(0,l.useComposedRefs)(t,c.onValueNodeChange);return(0,j.useLayoutEffect)(()=>{d(u)},[d,u]),(0,C.jsx)(g.Primitive.span,{...o,ref:m,style:{pointerEvents:"none"},children:eP(c.value)?(0,C.jsx)(C.Fragment,{children:i}):a})});V.displayName=U;var G=(0,n.forwardRef)((e,t)=>{let{__scopeSelect:r,children:n,...s}=e;return(0,C.jsx)(g.Primitive.span,{"aria-hidden":!0,...s,ref:t,children:n||"▼"})});G.displayName="SelectIcon";var K=e=>(0,C.jsx)(x.Portal,{asChild:!0,...e});K.displayName="SelectPortal";var W="SelectContent",q=(0,n.forwardRef)((e,t)=>{let r=A(W,e.__scopeSelect),[a,i]=(0,n.useState)();return((0,j.useLayoutEffect)(()=>{i(new DocumentFragment)},[]),r.open)?(0,C.jsx)(Z,{...e,ref:t}):a?(0,s.createPortal)((0,C.jsx)(J,{scope:e.__scopeSelect,children:(0,C.jsx)(R.Slot,{scope:e.__scopeSelect,children:(0,C.jsx)("div",{children:e.children})})}),a):null});q.displayName=W;var[J,Y]=O(W),X=(0,v.createSlot)("SelectContent.RemoveScroll"),Z=(0,n.forwardRef)((e,t)=>{let{__scopeSelect:r,position:s="item-aligned",onCloseAutoFocus:a,onEscapeKeyDown:o,onPointerDownOutside:c,side:d,sideOffset:h,align:f,alignOffset:x,arrowPadding:g,collisionBoundary:v,collisionPadding:y,sticky:b,hideWhenDetached:j,avoidCollisions:w,...N}=e,T=A(W,r),[P,E]=(0,n.useState)(null),[R,M]=(0,n.useState)(null),O=(0,l.useComposedRefs)(t,e=>E(e)),[_,L]=(0,n.useState)(null),[D,$]=(0,n.useState)(null),z=I(r),[H,F]=(0,n.useState)(!1),B=(0,n.useRef)(!1);(0,n.useEffect)(()=>{if(P)return(0,S.hideOthers)(P)},[P]),(0,m.useFocusGuards)();let U=(0,n.useCallback)(e=>{let[t,...r]=z().map(e=>e.ref.current),[n]=r.slice(-1),s=document.activeElement;for(let r of e)if(r===s||(r?.scrollIntoView({block:"nearest"}),r===t&&R&&(R.scrollTop=0),r===n&&R&&(R.scrollTop=R.scrollHeight),r?.focus(),document.activeElement!==s))return},[z,R]),V=(0,n.useCallback)(()=>U([_,P]),[U,_,P]);(0,n.useEffect)(()=>{H&&V()},[H,V]);let{onOpenChange:G,triggerPointerDownPosRef:K}=T;(0,n.useEffect)(()=>{if(P){let e={x:0,y:0},t=t=>{e={x:Math.abs(Math.round(t.pageX)-(K.current?.x??0)),y:Math.abs(Math.round(t.pageY)-(K.current?.y??0))}},r=r=>{e.x<=10&&e.y<=10?r.preventDefault():P.contains(r.target)||G(!1),document.removeEventListener("pointermove",t),K.current=null};return null!==K.current&&(document.addEventListener("pointermove",t),document.addEventListener("pointerup",r,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",t),document.removeEventListener("pointerup",r,{capture:!0})}}},[P,G,K]),(0,n.useEffect)(()=>{let e=()=>G(!1);return window.addEventListener("blur",e),window.addEventListener("resize",e),()=>{window.removeEventListener("blur",e),window.removeEventListener("resize",e)}},[G]);let[q,Y]=eE(e=>{let t=z().filter(e=>!e.disabled),r=t.find(e=>e.ref.current===document.activeElement),n=eR(t,e,r);n&&setTimeout(()=>n.ref.current.focus())}),Z=(0,n.useCallback)((e,t,r)=>{let n=!B.current&&!r;(void 0!==T.value&&T.value===t||n)&&(L(e),n&&(B.current=!0))},[T.value]),et=(0,n.useCallback)(()=>P?.focus(),[P]),er=(0,n.useCallback)((e,t,r)=>{let n=!B.current&&!r;(void 0!==T.value&&T.value===t||n)&&$(e)},[T.value]),en="popper"===s?ee:Q,es=en===ee?{side:d,sideOffset:h,align:f,alignOffset:x,arrowPadding:g,collisionBoundary:v,collisionPadding:y,sticky:b,hideWhenDetached:j,avoidCollisions:w}:{};return(0,C.jsx)(J,{scope:r,content:P,viewport:R,onViewportChange:M,itemRefCallback:Z,selectedItem:_,onItemLeave:et,itemTextRefCallback:er,focusSelectedItem:V,selectedItemText:D,position:s,isPositioned:H,searchRef:q,children:(0,C.jsx)(k.RemoveScroll,{as:X,allowPinchZoom:!0,children:(0,C.jsx)(p.FocusScope,{asChild:!0,trapped:T.open,onMountAutoFocus:e=>{e.preventDefault()},onUnmountAutoFocus:(0,i.composeEventHandlers)(a,e=>{T.trigger?.focus({preventScroll:!0}),e.preventDefault()}),children:(0,C.jsx)(u.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:o,onPointerDownOutside:c,onFocusOutside:e=>e.preventDefault(),onDismiss:()=>T.onOpenChange(!1),children:(0,C.jsx)(en,{role:"listbox",id:T.contentId,"data-state":T.open?"open":"closed",dir:T.dir,onContextMenu:e=>e.preventDefault(),...N,...es,onPlaced:()=>F(!0),ref:O,style:{display:"flex",flexDirection:"column",outline:"none",...N.style},onKeyDown:(0,i.composeEventHandlers)(N.onKeyDown,e=>{let t=e.ctrlKey||e.altKey||e.metaKey;if("Tab"===e.key&&e.preventDefault(),t||1!==e.key.length||Y(e.key),["ArrowUp","ArrowDown","Home","End"].includes(e.key)){let t=z().filter(e=>!e.disabled).map(e=>e.ref.current);if(["ArrowUp","End"].includes(e.key)&&(t=t.slice().reverse()),["ArrowUp","ArrowDown"].includes(e.key)){let r=e.target,n=t.indexOf(r);t=t.slice(n+1)}setTimeout(()=>U(t)),e.preventDefault()}})})})})})})});Z.displayName="SelectContentImpl";var Q=(0,n.forwardRef)((e,t)=>{let{__scopeSelect:r,onPlaced:s,...i}=e,o=A(W,r),c=Y(W,r),[d,u]=(0,n.useState)(null),[m,p]=(0,n.useState)(null),h=(0,l.useComposedRefs)(t,e=>p(e)),f=I(r),x=(0,n.useRef)(!1),v=(0,n.useRef)(!0),{viewport:y,selectedItem:b,selectedItemText:w,focusSelectedItem:N}=c,S=(0,n.useCallback)(()=>{if(o.trigger&&o.valueNode&&d&&m&&y&&b&&w){let e=o.trigger.getBoundingClientRect(),t=m.getBoundingClientRect(),r=o.valueNode.getBoundingClientRect(),n=w.getBoundingClientRect();if("rtl"!==o.dir){let s=n.left-t.left,i=r.left-s,o=e.left-i,l=e.width+o,c=Math.max(l,t.width),u=window.innerWidth-10,m=(0,a.clamp)(i,[10,Math.max(10,u-c)]);d.style.minWidth=l+"px",d.style.left=m+"px"}else{let s=t.right-n.right,i=window.innerWidth-r.right-s,o=window.innerWidth-e.right-i,l=e.width+o,c=Math.max(l,t.width),u=window.innerWidth-10,m=(0,a.clamp)(i,[10,Math.max(10,u-c)]);d.style.minWidth=l+"px",d.style.right=m+"px"}let i=f(),l=window.innerHeight-20,c=y.scrollHeight,u=window.getComputedStyle(m),p=parseInt(u.borderTopWidth,10),h=parseInt(u.paddingTop,10),g=parseInt(u.borderBottomWidth,10),v=p+h+c+parseInt(u.paddingBottom,10)+g,j=Math.min(5*b.offsetHeight,v),N=window.getComputedStyle(y),S=parseInt(N.paddingTop,10),k=parseInt(N.paddingBottom,10),C=e.top+e.height/2-10,T=b.offsetHeight/2,P=p+h+(b.offsetTop+T);if(P<=C){let e=i.length>0&&b===i[i.length-1].ref.current;d.style.bottom="0px";let t=Math.max(l-C,T+(e?k:0)+(m.clientHeight-y.offsetTop-y.offsetHeight)+g);d.style.height=P+t+"px"}else{let e=i.length>0&&b===i[0].ref.current;d.style.top="0px";let t=Math.max(C,p+y.offsetTop+(e?S:0)+T);d.style.height=t+(v-P)+"px",y.scrollTop=P-C+y.offsetTop}d.style.margin="10px 0",d.style.minHeight=j+"px",d.style.maxHeight=l+"px",s?.(),requestAnimationFrame(()=>x.current=!0)}},[f,o.trigger,o.valueNode,d,m,y,b,w,o.dir,s]);(0,j.useLayoutEffect)(()=>S(),[S]);let[k,T]=(0,n.useState)();(0,j.useLayoutEffect)(()=>{m&&T(window.getComputedStyle(m).zIndex)},[m]);let P=(0,n.useCallback)(e=>{e&&!0===v.current&&(S(),N?.(),v.current=!1)},[S,N]);return(0,C.jsx)(et,{scope:r,contentWrapper:d,shouldExpandOnScrollRef:x,onScrollButtonChange:P,children:(0,C.jsx)("div",{ref:u,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:k},children:(0,C.jsx)(g.Primitive.div,{...i,ref:h,style:{boxSizing:"border-box",maxHeight:"100%",...i.style}})})})});Q.displayName="SelectItemAlignedPosition";var ee=(0,n.forwardRef)((e,t)=>{let{__scopeSelect:r,align:n="start",collisionPadding:s=10,...a}=e,i=L(r);return(0,C.jsx)(f.Content,{...i,...a,ref:t,align:n,collisionPadding:s,style:{boxSizing:"border-box",...a.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}})});ee.displayName="SelectPopperPosition";var[et,er]=O(W,{}),en="SelectViewport",es=(0,n.forwardRef)((e,t)=>{let{__scopeSelect:r,nonce:s,...a}=e,o=Y(en,r),c=er(en,r),d=(0,l.useComposedRefs)(t,o.onViewportChange),u=(0,n.useRef)(0);return(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"},nonce:s}),(0,C.jsx)(R.Slot,{scope:r,children:(0,C.jsx)(g.Primitive.div,{"data-radix-select-viewport":"",role:"presentation",...a,ref:d,style:{position:"relative",flex:1,overflow:"hidden auto",...a.style},onScroll:(0,i.composeEventHandlers)(a.onScroll,e=>{let t=e.currentTarget,{contentWrapper:r,shouldExpandOnScrollRef:n}=c;if(n?.current&&r){let e=Math.abs(u.current-t.scrollTop);if(e>0){let n=window.innerHeight-20,s=Math.max(parseFloat(r.style.minHeight),parseFloat(r.style.height));if(s<n){let a=s+e,i=Math.min(n,a),o=a-i;r.style.height=i+"px","0px"===r.style.bottom&&(t.scrollTop=o>0?o:0,r.style.justifyContent="flex-end")}}}u.current=t.scrollTop})})})]})});es.displayName=en;var ea="SelectGroup",[ei,eo]=O(ea),el=(0,n.forwardRef)((e,t)=>{let{__scopeSelect:r,...n}=e,s=(0,h.useId)();return(0,C.jsx)(ei,{scope:r,id:s,children:(0,C.jsx)(g.Primitive.div,{role:"group","aria-labelledby":s,...n,ref:t})})});el.displayName=ea;var ec="SelectLabel",ed=(0,n.forwardRef)((e,t)=>{let{__scopeSelect:r,...n}=e,s=eo(ec,r);return(0,C.jsx)(g.Primitive.div,{id:s.id,...n,ref:t})});ed.displayName=ec;var eu="SelectItem",[em,ep]=O(eu),eh=(0,n.forwardRef)((e,t)=>{let{__scopeSelect:r,value:s,disabled:a=!1,textValue:o,...c}=e,d=A(eu,r),u=Y(eu,r),m=d.value===s,[p,f]=(0,n.useState)(o??""),[x,v]=(0,n.useState)(!1),y=(0,l.useComposedRefs)(t,e=>u.itemRefCallback?.(e,s,a)),b=(0,h.useId)(),j=(0,n.useRef)("touch"),w=()=>{a||(d.onValueChange(s),d.onOpenChange(!1))};if(""===s)throw Error("A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return(0,C.jsx)(em,{scope:r,value:s,disabled:a,textId:b,isSelected:m,onItemTextChange:(0,n.useCallback)(e=>{f(t=>t||(e?.textContent??"").trim())},[]),children:(0,C.jsx)(R.ItemSlot,{scope:r,value:s,disabled:a,textValue:p,children:(0,C.jsx)(g.Primitive.div,{role:"option","aria-labelledby":b,"data-highlighted":x?"":void 0,"aria-selected":m&&x,"data-state":m?"checked":"unchecked","aria-disabled":a||void 0,"data-disabled":a?"":void 0,tabIndex:a?void 0:-1,...c,ref:y,onFocus:(0,i.composeEventHandlers)(c.onFocus,()=>v(!0)),onBlur:(0,i.composeEventHandlers)(c.onBlur,()=>v(!1)),onClick:(0,i.composeEventHandlers)(c.onClick,()=>{"mouse"!==j.current&&w()}),onPointerUp:(0,i.composeEventHandlers)(c.onPointerUp,()=>{"mouse"===j.current&&w()}),onPointerDown:(0,i.composeEventHandlers)(c.onPointerDown,e=>{j.current=e.pointerType}),onPointerMove:(0,i.composeEventHandlers)(c.onPointerMove,e=>{j.current=e.pointerType,a?u.onItemLeave?.():"mouse"===j.current&&e.currentTarget.focus({preventScroll:!0})}),onPointerLeave:(0,i.composeEventHandlers)(c.onPointerLeave,e=>{e.currentTarget===document.activeElement&&u.onItemLeave?.()}),onKeyDown:(0,i.composeEventHandlers)(c.onKeyDown,e=>{(u.searchRef?.current===""||" "!==e.key)&&(P.includes(e.key)&&w()," "===e.key&&e.preventDefault())})})})})});eh.displayName=eu;var ef="SelectItemText",ex=(0,n.forwardRef)((e,t)=>{let{__scopeSelect:r,className:a,style:i,...o}=e,c=A(ef,r),d=Y(ef,r),u=ep(ef,r),m=z(ef,r),[p,h]=(0,n.useState)(null),f=(0,l.useComposedRefs)(t,e=>h(e),u.onItemTextChange,e=>d.itemTextRefCallback?.(e,u.value,u.disabled)),x=p?.textContent,v=(0,n.useMemo)(()=>(0,C.jsx)("option",{value:u.value,disabled:u.disabled,children:x},u.value),[u.disabled,u.value,x]),{onNativeOptionAdd:y,onNativeOptionRemove:b}=m;return(0,j.useLayoutEffect)(()=>(y(v),()=>b(v)),[y,b,v]),(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(g.Primitive.span,{id:u.textId,...o,ref:f}),u.isSelected&&c.valueNode&&!c.valueNodeHasChildren?(0,s.createPortal)(o.children,c.valueNode):null]})});ex.displayName=ef;var eg="SelectItemIndicator",ev=(0,n.forwardRef)((e,t)=>{let{__scopeSelect:r,...n}=e;return ep(eg,r).isSelected?(0,C.jsx)(g.Primitive.span,{"aria-hidden":!0,...n,ref:t}):null});ev.displayName=eg;var ey="SelectScrollUpButton",eb=(0,n.forwardRef)((e,t)=>{let r=Y(ey,e.__scopeSelect),s=er(ey,e.__scopeSelect),[a,i]=(0,n.useState)(!1),o=(0,l.useComposedRefs)(t,s.onScrollButtonChange);return(0,j.useLayoutEffect)(()=>{if(r.viewport&&r.isPositioned){let e=function(){i(t.scrollTop>0)},t=r.viewport;return e(),t.addEventListener("scroll",e),()=>t.removeEventListener("scroll",e)}},[r.viewport,r.isPositioned]),a?(0,C.jsx)(eN,{...e,ref:o,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=r;e&&t&&(e.scrollTop=e.scrollTop-t.offsetHeight)}}):null});eb.displayName=ey;var ej="SelectScrollDownButton",ew=(0,n.forwardRef)((e,t)=>{let r=Y(ej,e.__scopeSelect),s=er(ej,e.__scopeSelect),[a,i]=(0,n.useState)(!1),o=(0,l.useComposedRefs)(t,s.onScrollButtonChange);return(0,j.useLayoutEffect)(()=>{if(r.viewport&&r.isPositioned){let e=function(){let e=t.scrollHeight-t.clientHeight;i(Math.ceil(t.scrollTop)<e)},t=r.viewport;return e(),t.addEventListener("scroll",e),()=>t.removeEventListener("scroll",e)}},[r.viewport,r.isPositioned]),a?(0,C.jsx)(eN,{...e,ref:o,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=r;e&&t&&(e.scrollTop=e.scrollTop+t.offsetHeight)}}):null});ew.displayName=ej;var eN=(0,n.forwardRef)((e,t)=>{let{__scopeSelect:r,onAutoScroll:s,...a}=e,o=Y("SelectScrollButton",r),l=(0,n.useRef)(null),c=I(r),d=(0,n.useCallback)(()=>{null!==l.current&&(window.clearInterval(l.current),l.current=null)},[]);return(0,n.useEffect)(()=>()=>d(),[d]),(0,j.useLayoutEffect)(()=>{let e=c().find(e=>e.ref.current===document.activeElement);e?.ref.current?.scrollIntoView({block:"nearest"})},[c]),(0,C.jsx)(g.Primitive.div,{"aria-hidden":!0,...a,ref:t,style:{flexShrink:0,...a.style},onPointerDown:(0,i.composeEventHandlers)(a.onPointerDown,()=>{null===l.current&&(l.current=window.setInterval(s,50))}),onPointerMove:(0,i.composeEventHandlers)(a.onPointerMove,()=>{o.onItemLeave?.(),null===l.current&&(l.current=window.setInterval(s,50))}),onPointerLeave:(0,i.composeEventHandlers)(a.onPointerLeave,()=>{d()})})}),eS=(0,n.forwardRef)((e,t)=>{let{__scopeSelect:r,...n}=e;return(0,C.jsx)(g.Primitive.div,{"aria-hidden":!0,...n,ref:t})});eS.displayName="SelectSeparator";var ek="SelectArrow",eC=(0,n.forwardRef)((e,t)=>{let{__scopeSelect:r,...n}=e,s=L(r),a=A(ek,r),i=Y(ek,r);return a.open&&"popper"===i.position?(0,C.jsx)(f.Arrow,{...s,...n,ref:t}):null});eC.displayName=ek;var eT=(0,n.forwardRef)(({__scopeSelect:e,value:t,...r},s)=>{let a=(0,n.useRef)(null),i=(0,l.useComposedRefs)(s,a),o=(0,w.usePrevious)(t);return(0,n.useEffect)(()=>{let e=a.current;if(!e)return;let r=Object.getOwnPropertyDescriptor(window.HTMLSelectElement.prototype,"value").set;if(o!==t&&r){let n=new Event("change",{bubbles:!0});r.call(e,t),e.dispatchEvent(n)}},[o,t]),(0,C.jsx)(g.Primitive.select,{...r,style:{...N.VISUALLY_HIDDEN_STYLES,...r.style},ref:i,defaultValue:t})});function eP(e){return""===e||void 0===e}function eE(e){let t=(0,y.useCallbackRef)(e),r=(0,n.useRef)(""),s=(0,n.useRef)(0),a=(0,n.useCallback)(e=>{let n=r.current+e;t(n),function e(t){r.current=t,window.clearTimeout(s.current),""!==t&&(s.current=window.setTimeout(()=>e(""),1e3))}(n)},[t]),i=(0,n.useCallback)(()=>{r.current="",window.clearTimeout(s.current)},[]);return(0,n.useEffect)(()=>()=>window.clearTimeout(s.current),[]),[r,a,i]}function eR(e,t,r){var n,s;let a=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,i=r?e.indexOf(r):-1,o=(n=e,s=Math.max(i,0),n.map((e,t)=>n[(s+t)%n.length]));1===a.length&&(o=o.filter(e=>e!==r));let l=o.find(e=>e.textValue.toLowerCase().startsWith(a.toLowerCase()));return l!==r?l:void 0}eT.displayName="SelectBubbleInput";var eI=H,eM=B,eO=V,e_=G,eL=K,eD=q,eA=es,e$=el,ez=ed,eH=eh,eF=ex,eB=ev,eU=eb,eV=ew,eG=eS,eK=eC},68080:e=>{"use strict";var{g:t,__dirname:r}=e;{e.s({__iconNode:()=>t,default:()=>r});var n=e.i(49770);let t=[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]],r=(0,n.default)("chevron-up",t)}},9927:e=>{"use strict";var{g:t,__dirname:r}=e;e.s({ChevronUpIcon:()=>n.default});var n=e.i(68080)},40989:e=>{"use strict";var{g:t,__dirname:r}=e;e.s({Select:()=>c,SelectContent:()=>p,SelectGroup:()=>d,SelectItem:()=>f,SelectLabel:()=>h,SelectScrollDownButton:()=>v,SelectScrollUpButton:()=>g,SelectSeparator:()=>x,SelectTrigger:()=>m,SelectValue:()=>u});var n=e.i(20393),s=e.i(1990),a=e.i(31110),i=e.i(20546),o=e.i(9927),l=e.i(39037);function c({...e}){return(0,n.jsx)(s.Root,{"data-slot":"select",...e})}function d({...e}){return(0,n.jsx)(s.Group,{"data-slot":"select-group",...e})}function u({...e}){return(0,n.jsx)(s.Value,{"data-slot":"select-value",...e})}function m({className:e,size:t="default",children:r,...a}){return(0,n.jsxs)(s.Trigger,{"data-slot":"select-trigger","data-size":t,className:(0,l.cn)("border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...a,children:[r,(0,n.jsx)(s.Icon,{asChild:!0,children:(0,n.jsx)(i.ChevronDownIcon,{className:"size-4 opacity-50"})})]})}function p({className:e,children:t,position:r="popper",...a}){return(0,n.jsx)(s.Portal,{children:(0,n.jsxs)(s.Content,{"data-slot":"select-content",className:(0,l.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md","popper"===r&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",e),position:r,...a,children:[(0,n.jsx)(g,{}),(0,n.jsx)(s.Viewport,{className:(0,l.cn)("p-1","popper"===r&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"),children:t}),(0,n.jsx)(v,{})]})})}function h({className:e,...t}){return(0,n.jsx)(s.Label,{"data-slot":"select-label",className:(0,l.cn)("text-muted-foreground px-2 py-1.5 text-xs",e),...t})}function f({className:e,children:t,...r}){return(0,n.jsxs)(s.Item,{"data-slot":"select-item",className:(0,l.cn)("focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",e),...r,children:[(0,n.jsx)("span",{className:"absolute right-2 flex size-3.5 items-center justify-center",children:(0,n.jsx)(s.ItemIndicator,{children:(0,n.jsx)(a.CheckIcon,{className:"size-4"})})}),(0,n.jsx)(s.ItemText,{children:t})]})}function x({className:e,...t}){return(0,n.jsx)(s.Separator,{"data-slot":"select-separator",className:(0,l.cn)("bg-border pointer-events-none -mx-1 my-1 h-px",e),...t})}function g({className:e,...t}){return(0,n.jsx)(s.ScrollUpButton,{"data-slot":"select-scroll-up-button",className:(0,l.cn)("flex cursor-default items-center justify-center py-1",e),...t,children:(0,n.jsx)(o.ChevronUpIcon,{className:"size-4"})})}function v({className:e,...t}){return(0,n.jsx)(s.ScrollDownButton,{"data-slot":"select-scroll-down-button",className:(0,l.cn)("flex cursor-default items-center justify-center py-1",e),...t,children:(0,n.jsx)(i.ChevronDownIcon,{className:"size-4"})})}},60994:e=>{"use strict";var{g:t,__dirname:r}=e;e.s({Root:()=>w,Switch:()=>g,SwitchThumb:()=>y,Thumb:()=>N,createSwitchScope:()=>h});var n=e.i(19886),s=e.i(77787),a=e.i(28537),i=e.i(15836),o=e.i(98644),l=e.i(44916),c=e.i(30287),d=e.i(42352),u=e.i(20393),m="Switch",[p,h]=(0,i.createContextScope)(m),[f,x]=p(m),g=(0,n.forwardRef)((e,t)=>{let{__scopeSwitch:r,name:i,checked:l,defaultChecked:c,required:p,disabled:h,value:x="on",onCheckedChange:g,form:v,...y}=e,[w,N]=(0,n.useState)(null),S=(0,a.useComposedRefs)(t,e=>N(e)),k=(0,n.useRef)(!1),C=!w||v||!!w.closest("form"),[T,P]=(0,o.useControllableState)({prop:l,defaultProp:c??!1,onChange:g,caller:m});return(0,u.jsxs)(f,{scope:r,checked:T,disabled:h,children:[(0,u.jsx)(d.Primitive.button,{type:"button",role:"switch","aria-checked":T,"aria-required":p,"data-state":j(T),"data-disabled":h?"":void 0,disabled:h,value:x,...y,ref:S,onClick:(0,s.composeEventHandlers)(e.onClick,e=>{P(e=>!e),C&&(k.current=e.isPropagationStopped(),k.current||e.stopPropagation())})}),C&&(0,u.jsx)(b,{control:w,bubbles:!k.current,name:i,value:x,checked:T,required:p,disabled:h,form:v,style:{transform:"translateX(-100%)"}})]})});g.displayName=m;var v="SwitchThumb",y=(0,n.forwardRef)((e,t)=>{let{__scopeSwitch:r,...n}=e,s=x(v,r);return(0,u.jsx)(d.Primitive.span,{"data-state":j(s.checked),"data-disabled":s.disabled?"":void 0,...n,ref:t})});y.displayName=v;var b=(0,n.forwardRef)(({__scopeSwitch:e,control:t,checked:r,bubbles:s=!0,...i},o)=>{let d=(0,n.useRef)(null),m=(0,a.useComposedRefs)(d,o),p=(0,l.usePrevious)(r),h=(0,c.useSize)(t);return(0,n.useEffect)(()=>{let e=d.current;if(!e)return;let t=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set;if(p!==r&&t){let n=new Event("click",{bubbles:s});t.call(e,r),e.dispatchEvent(n)}},[p,r,s]),(0,u.jsx)("input",{type:"checkbox","aria-hidden":!0,defaultChecked:r,...i,tabIndex:-1,ref:m,style:{...i.style,...h,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});function j(e){return e?"checked":"unchecked"}b.displayName="SwitchBubbleInput";var w=g,N=y},46284:e=>{"use strict";var{g:t,__dirname:r}=e;e.s({Switch:()=>i});var n=e.i(20393),s=e.i(60994),a=e.i(39037);function i({className:e,...t}){return(0,n.jsx)(s.Root,{"data-slot":"switch",className:(0,a.cn)("peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",e),...t,children:(0,n.jsx)(s.Thumb,{"data-slot":"switch-thumb",className:(0,a.cn)("bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0")})})}},9385:e=>{"use strict";var{g:t,__dirname:r}=e;e.s({Table:()=>a,TableBody:()=>o,TableCaption:()=>m,TableCell:()=>u,TableFooter:()=>l,TableHead:()=>d,TableHeader:()=>i,TableRow:()=>c});var n=e.i(20393),s=e.i(39037);function a({className:e,...t}){return(0,n.jsx)("div",{"data-slot":"table-container",className:"relative w-full overflow-x-auto",children:(0,n.jsx)("table",{"data-slot":"table",className:(0,s.cn)("w-full caption-bottom text-sm",e),...t})})}function i({className:e,...t}){return(0,n.jsx)("thead",{"data-slot":"table-header",className:(0,s.cn)("[&_tr]:border-b",e),...t})}function o({className:e,...t}){return(0,n.jsx)("tbody",{"data-slot":"table-body",className:(0,s.cn)("[&_tr:last-child]:border-0",e),...t})}function l({className:e,...t}){return(0,n.jsx)("tfoot",{"data-slot":"table-footer",className:(0,s.cn)("bg-muted/50 border-t font-medium [&>tr]:last:border-b-0",e),...t})}function c({className:e,...t}){return(0,n.jsx)("tr",{"data-slot":"table-row",className:(0,s.cn)("hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors",e),...t})}function d({className:e,...t}){return(0,n.jsx)("th",{"data-slot":"table-head",className:(0,s.cn)("text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",e),...t})}function u({className:e,...t}){return(0,n.jsx)("td",{"data-slot":"table-cell",className:(0,s.cn)("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",e),...t})}function m({className:e,...t}){return(0,n.jsx)("caption",{"data-slot":"table-caption",className:(0,s.cn)("text-muted-foreground mt-4 text-sm",e),...t})}},78237:e=>{"use strict";var{g:t,__dirname:r}=e;e.s({Checkbox:()=>j,CheckboxIndicator:()=>N,Indicator:()=>N,Root:()=>j,createCheckboxScope:()=>f,unstable_BubbleInput:()=>k,unstable_CheckboxBubbleInput:()=>k,unstable_CheckboxProvider:()=>v,unstable_CheckboxTrigger:()=>b,unstable_Provider:()=>v,unstable_Trigger:()=>b});var n=e.i(19886),s=e.i(28537),a=e.i(15836),i=e.i(92391),o=e.i(98644),l=e.i(44916),c=e.i(30287),d=e.i(62585),u=e.i(42352),m=e.i(20393),p="Checkbox",[h,f]=(0,a.createContextScope)(p),[x,g]=h(p);function v(e){let{__scopeCheckbox:t,checked:r,children:s,defaultChecked:a,disabled:i,form:l,name:c,onCheckedChange:d,required:u,value:h="on",internal_do_not_use_render:f}=e,[g,v]=(0,o.useControllableState)({prop:r,defaultProp:a??!1,onChange:d,caller:p}),[y,b]=(0,n.useState)(null),[j,w]=(0,n.useState)(null),N=(0,n.useRef)(!1),S=!y||!!l||!!y.closest("form"),k={checked:g,disabled:i,setChecked:v,control:y,setControl:b,name:c,form:l,value:h,hasConsumerStoppedPropagationRef:N,required:u,defaultChecked:!C(a)&&a,isFormControl:S,bubbleInput:j,setBubbleInput:w};return(0,m.jsx)(x,{scope:t,...k,children:"function"==typeof f?f(k):s})}var y="CheckboxTrigger",b=(0,n.forwardRef)(({__scopeCheckbox:e,onKeyDown:t,onClick:r,...a},o)=>{let{control:l,value:c,disabled:d,checked:p,required:h,setControl:f,setChecked:x,hasConsumerStoppedPropagationRef:v,isFormControl:b,bubbleInput:j}=g(y,e),w=(0,s.useComposedRefs)(o,f),N=(0,n.useRef)(p);return(0,n.useEffect)(()=>{let e=l?.form;if(e){let t=()=>x(N.current);return e.addEventListener("reset",t),()=>e.removeEventListener("reset",t)}},[l,x]),(0,m.jsx)(u.Primitive.button,{type:"button",role:"checkbox","aria-checked":C(p)?"mixed":p,"aria-required":h,"data-state":T(p),"data-disabled":d?"":void 0,disabled:d,value:c,...a,ref:w,onKeyDown:(0,i.composeEventHandlers)(t,e=>{"Enter"===e.key&&e.preventDefault()}),onClick:(0,i.composeEventHandlers)(r,e=>{x(e=>!!C(e)||!e),j&&b&&(v.current=e.isPropagationStopped(),v.current||e.stopPropagation())})})});b.displayName=y;var j=(0,n.forwardRef)((e,t)=>{let{__scopeCheckbox:r,name:n,checked:s,defaultChecked:a,required:i,disabled:o,value:l,onCheckedChange:c,form:d,...u}=e;return(0,m.jsx)(v,{__scopeCheckbox:r,checked:s,defaultChecked:a,disabled:o,required:i,onCheckedChange:c,name:n,form:d,value:l,internal_do_not_use_render:({isFormControl:e})=>(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(b,{...u,ref:t,__scopeCheckbox:r}),e&&(0,m.jsx)(k,{__scopeCheckbox:r})]})})});j.displayName=p;var w="CheckboxIndicator",N=(0,n.forwardRef)((e,t)=>{let{__scopeCheckbox:r,forceMount:n,...s}=e,a=g(w,r);return(0,m.jsx)(d.Presence,{present:n||C(a.checked)||!0===a.checked,children:(0,m.jsx)(u.Primitive.span,{"data-state":T(a.checked),"data-disabled":a.disabled?"":void 0,...s,ref:t,style:{pointerEvents:"none",...e.style}})})});N.displayName=w;var S="CheckboxBubbleInput",k=(0,n.forwardRef)(({__scopeCheckbox:e,...t},r)=>{let{control:a,hasConsumerStoppedPropagationRef:i,checked:o,defaultChecked:d,required:p,disabled:h,name:f,value:x,form:v,bubbleInput:y,setBubbleInput:b}=g(S,e),j=(0,s.useComposedRefs)(r,b),w=(0,l.usePrevious)(o),N=(0,c.useSize)(a);(0,n.useEffect)(()=>{if(!y)return;let e=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set,t=!i.current;if(w!==o&&e){let r=new Event("click",{bubbles:t});y.indeterminate=C(o),e.call(y,!C(o)&&o),y.dispatchEvent(r)}},[y,w,o,i]);let k=(0,n.useRef)(!C(o)&&o);return(0,m.jsx)(u.Primitive.input,{type:"checkbox","aria-hidden":!0,defaultChecked:d??k.current,required:p,disabled:h,name:f,value:x,form:v,...t,tabIndex:-1,ref:j,style:{...t.style,...N,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});function C(e){return"indeterminate"===e}function T(e){return C(e)?"indeterminate":e?"checked":"unchecked"}k.displayName=S},46456:e=>{"use strict";var{g:t,__dirname:r}=e;e.s({Check:()=>n.default});var n=e.i(64412)},42736:e=>{"use strict";var{g:t,__dirname:r}=e;{e.s({Checkbox:()=>t});var n=e.i(20393),s=e.i(19886),a=e.i(78237),i=e.i(46456),o=e.i(39037);let t=(0,s.forwardRef)(({className:e,...t},r)=>(0,n.jsx)(a.Root,{ref:r,className:(0,o.cn)("peer h-4 w-4 shrink-0 rounded-sm border border-gray-300 ring-offset-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-gray-950 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-gray-900 data-[state=checked]:text-white dark:border-gray-800 dark:ring-offset-gray-950 dark:focus-visible:ring-gray-300 dark:data-[state=checked]:bg-gray-50 dark:data-[state=checked]:text-gray-900",e),...t,children:(0,n.jsx)(a.Indicator,{className:(0,o.cn)("flex items-center justify-center text-current"),children:(0,n.jsx)(i.Check,{className:"h-4 w-4"})})}));t.displayName=a.Root.displayName}},95113:e=>{"use strict";var{g:t,__dirname:r}=e;function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function s(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function a(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?s(Object(r),!0).forEach(function(t){n(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):s(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function i(e,t){if(null==e)return{};var r,n,s={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(s[r]=e[r]);return s}function o(e,t){if(null==e)return{};var r,n,s=i(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],!(t.indexOf(r)>=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(s[r]=e[r])}return s}function l(e,t){return c(e)||d(e,t)||u(e,t)||p()}function c(e){if(Array.isArray(e))return e}function d(e,t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e)){var r=[],n=!0,s=!1,a=void 0;try{for(var i,o=e[Symbol.iterator]();!(n=(i=o.next()).done)&&(r.push(i.value),!t||r.length!==t);n=!0);}catch(e){s=!0,a=e}finally{try{n||null==o.return||o.return()}finally{if(s)throw a}}return r}}function u(e,t){if(e){if("string"==typeof e)return m(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if("Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return m(e,t)}}function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function p(){throw TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}e.s({arrayLikeToArray:()=>m,arrayWithHoles:()=>c,defineProperty:()=>n,iterableToArrayLimit:()=>d,nonIterableRest:()=>p,objectSpread2:()=>a,objectWithoutProperties:()=>o,objectWithoutPropertiesLoose:()=>i,slicedToArray:()=>l,unsupportedIterableToArray:()=>u})},85767:e=>{"use strict";var{g:t,__dirname:r}=e;{function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function s(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?n(Object(r),!0).forEach(function(t){var n;n=r[t],t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):n(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}function a(e){return function t(){for(var r=this,n=arguments.length,s=Array(n),a=0;a<n;a++)s[a]=arguments[a];return s.length>=e.length?e.apply(this,s):function(){for(var e=arguments.length,n=Array(e),a=0;a<e;a++)n[a]=arguments[a];return t.apply(r,[].concat(s,n))}}}function i(e){return({}).toString.call(e).includes("Object")}function o(e){return"function"==typeof e}e.s({default:()=>t});var l=a(function(e,t){throw Error(e[t]||e.default)})({initialIsRequired:"initial state is required",initialType:"initial state should be an object",initialContent:"initial state shouldn't be an empty object",handlerType:"handler should be an object or a function",handlersType:"all handlers should be a functions",selectorType:"selector should be a function",changeType:"provided value of changes should be an object",changeField:'it seams you want to change a field in the state which is not specified in the "initial" state',default:"an unknown error accured in `state-local` package"}),c={changes:function(e,t){return i(t)||l("changeType"),Object.keys(t).some(function(t){return!Object.prototype.hasOwnProperty.call(e,t)})&&l("changeField"),t},selector:function(e){o(e)||l("selectorType")},handler:function(e){o(e)||i(e)||l("handlerType"),i(e)&&Object.values(e).some(function(e){return!o(e)})&&l("handlersType")},initial:function(e){e||l("initialIsRequired"),i(e)||l("initialType"),Object.keys(e).length||l("initialContent")}};function d(e,t){return o(t)?t(e.current):t}function u(e,t){return e.current=s(s({},e.current),t),t}function m(e,t,r){return o(t)?t(e.current):Object.keys(r).forEach(function(r){var n;return null==(n=t[r])?void 0:n.call(t,e.current[r])}),r}let t={create:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};c.initial(e),c.handler(t);var r={current:e},n=a(m)(r,t),s=a(u)(r),i=a(c.changes)(e),o=a(d)(r);return[function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(e){return e};return c.selector(e),e(r.current)},function(e){(function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return function(e){return t.reduceRight(function(e,t){return t(e)},e)}})(n,s,i,o)(e)}]}}}},53120:e=>{"use strict";var{g:t,__dirname:r}=e;{e.s({default:()=>t});let t={paths:{vs:"https://cdn.jsdelivr.net/npm/monaco-editor@0.52.2/min/vs"}}}},72460:e=>{"use strict";var{g:t,__dirname:r}=e;{e.s({default:()=>t});let t=function(e){return function t(){for(var r=this,n=arguments.length,s=Array(n),a=0;a<n;a++)s[a]=arguments[a];return s.length>=e.length?e.apply(this,s):function(){for(var e=arguments.length,n=Array(e),a=0;a<e;a++)n[a]=arguments[a];return t.apply(r,[].concat(s,n))}}}}},63839:e=>{"use strict";var{g:t,__dirname:r}=e;{e.s({default:()=>t});let t=function(e){return({}).toString.call(e).includes("Object")}}},93408:e=>{"use strict";var{g:t,__dirname:r}=e;{e.s({default:()=>t,errorHandler:()=>i,errorMessages:()=>a});var n=e.i(72460),s=e.i(63839),a={configIsRequired:"the configuration object is required",configType:"the configuration object should be an object",default:"an unknown error accured in `@monaco-editor/loader` package",deprecation:"Deprecation warning!\n You are using deprecated way of configuration.\n\n Instead of using\n monaco.config({ urls: { monacoBase: '...' } })\n use\n monaco.config({ paths: { vs: '...' } })\n\n For more please check the link https://github.com/suren-atoyan/monaco-loader#config\n "},i=(0,n.default)(function(e,t){throw Error(e[t]||e.default)})(a);let t={config:function(e){return(e||i("configIsRequired"),(0,s.default)(e)||i("configType"),e.urls)?(console.warn(a.deprecation),{paths:{vs:e.urls.monacoBase}}):e}}}},28295:e=>{"use strict";var{g:t,__dirname:r}=e;{e.s({default:()=>t});let t=function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return function(e){return t.reduceRight(function(e,t){return t(e)},e)}}}},13614:e=>{"use strict";var{g:t,__dirname:r}=e;{e.s({default:()=>t});var n=e.i(95113);let t=function e(t,r){return Object.keys(r).forEach(function(n){r[n]instanceof Object&&t[n]&&Object.assign(r[n],e(t[n],r[n]))}),(0,n.objectSpread2)((0,n.objectSpread2)({},t),r)}}},28042:e=>{"use strict";var{g:t,__dirname:r}=e;{e.s({CANCELATION_MESSAGE:()=>n,default:()=>t});var n={type:"cancelation",msg:"operation is manually canceled"};let t=function(e){var t=!1,r=new Promise(function(r,s){e.then(function(e){return t?s(n):r(e)}),e.catch(s)});return r.cancel=function(){return t=!0},r}}},72189:e=>{"use strict";var{g:t,__dirname:r}=e;{e.s({default:()=>t});var n=e.i(95113),s=e.i(85767),a=e.i(53120),i=e.i(93408),o=e.i(28295),l=e.i(13614),c=e.i(28042),d=s.default.create({config:a.default,isInitialized:!1,resolve:null,reject:null,monaco:null}),u=(0,n.slicedToArray)(d,2),m=u[0],p=u[1];function h(e){return document.body.appendChild(e)}function f(e){var t,r,n=m(function(e){return{config:e.config,reject:e.reject}}),s=(t="".concat(n.config.paths.vs,"/loader.js"),r=document.createElement("script"),t&&(r.src=t),r);return s.onload=function(){return e()},s.onerror=n.reject,s}function x(){var e=m(function(e){return{config:e.config,resolve:e.resolve,reject:e.reject}}),t=window.require;t.config(e.config),t(["vs/editor/editor.main"],function(t){g(t),e.resolve(t)},function(t){e.reject(t)})}function g(e){m().monaco||p({monaco:e})}var v=new Promise(function(e,t){return p({resolve:e,reject:t})});let t={config:function(e){var t=i.default.config(e),r=t.monaco,s=(0,n.objectWithoutProperties)(t,["monaco"]);p(function(e){return{config:(0,l.default)(e.config,s),monaco:r}})},init:function(){var e=m(function(e){return{monaco:e.monaco,isInitialized:e.isInitialized,resolve:e.resolve}});if(!e.isInitialized){if(p({isInitialized:!0}),e.monaco)return e.resolve(e.monaco),(0,c.default)(v);if(window.monaco&&window.monaco.editor)return g(window.monaco),e.resolve(window.monaco),(0,c.default)(v);(0,o.default)(h,f)(x)}return(0,c.default)(v)},__getMonacoInstance:function(){return m(function(e){return e.monaco})}}}},25799:e=>{"use strict";var{g:t,__dirname:r}=e;e.s({}),e.i(72189)},30079:e=>{"use strict";var{g:t,__dirname:r}=e;e.s({}),e.i(72189),e.i(25799)},14991:e=>{"use strict";var{g:t,__dirname:r}=e;e.s({DiffEditor:()=>h,Editor:()=>v,default:()=>y,useMonaco:()=>f}),e.i(30079);var n=e.i(19886),s=e.i(72189),a={wrapper:{display:"flex",position:"relative",textAlign:"initial"},fullWidth:{width:"100%"},hide:{display:"none"}},i={container:{display:"flex",height:"100%",width:"100%",justifyContent:"center",alignItems:"center"}},o=function({children:e}){return n.default.createElement("div",{style:i.container},e)},l=(0,n.memo)(function({width:e,height:t,isEditorReady:r,loading:s,_ref:i,className:l,wrapperProps:c}){return n.default.createElement("section",{style:{...a.wrapper,width:e,height:t},...c},!r&&n.default.createElement(o,null,s),n.default.createElement("div",{ref:i,style:{...a.fullWidth,...!r&&a.hide},className:l}))}),c=function(e){(0,n.useEffect)(e,[])},d=function(e,t,r=!0){let s=(0,n.useRef)(!0);(0,n.useEffect)(s.current||!r?()=>{s.current=!1}:e,t)};function u(){}function m(e,t,r,n){var s,a,i,o,l,c;return s=e,a=n,s.editor.getModel(p(s,a))||(i=e,o=t,l=r,c=n,i.editor.createModel(o,l,c?p(i,c):void 0))}function p(e,t){return e.Uri.parse(t)}var h=(0,n.memo)(function({original:e,modified:t,language:r,originalLanguage:a,modifiedLanguage:i,originalModelPath:o,modifiedModelPath:p,keepCurrentOriginalModel:h=!1,keepCurrentModifiedModel:f=!1,theme:x="light",loading:g="Loading...",options:v={},height:y="100%",width:b="100%",className:j,wrapperProps:w={},beforeMount:N=u,onMount:S=u}){let[k,C]=(0,n.useState)(!1),[T,P]=(0,n.useState)(!0),E=(0,n.useRef)(null),R=(0,n.useRef)(null),I=(0,n.useRef)(null),M=(0,n.useRef)(S),O=(0,n.useRef)(N),_=(0,n.useRef)(!1);c(()=>{let e=s.default.init();return e.then(e=>(R.current=e)&&P(!1)).catch(e=>e?.type!=="cancelation"&&console.error("Monaco initialization: error:",e)),()=>{let t;return E.current?(t=E.current?.getModel(),void(h||t?.original?.dispose(),f||t?.modified?.dispose(),E.current?.dispose())):e.cancel()}}),d(()=>{if(E.current&&R.current){let t=E.current.getOriginalEditor(),n=m(R.current,e||"",a||r||"text",o||"");n!==t.getModel()&&t.setModel(n)}},[o],k),d(()=>{if(E.current&&R.current){let e=E.current.getModifiedEditor(),n=m(R.current,t||"",i||r||"text",p||"");n!==e.getModel()&&e.setModel(n)}},[p],k),d(()=>{let e=E.current.getModifiedEditor();e.getOption(R.current.editor.EditorOption.readOnly)?e.setValue(t||""):t!==e.getValue()&&(e.executeEdits("",[{range:e.getModel().getFullModelRange(),text:t||"",forceMoveMarkers:!0}]),e.pushUndoStop())},[t],k),d(()=>{E.current?.getModel()?.original.setValue(e||"")},[e],k),d(()=>{let{original:e,modified:t}=E.current.getModel();R.current.editor.setModelLanguage(e,a||r||"text"),R.current.editor.setModelLanguage(t,i||r||"text")},[r,a,i],k),d(()=>{R.current?.editor.setTheme(x)},[x],k),d(()=>{E.current?.updateOptions(v)},[v],k);let L=(0,n.useCallback)(()=>{if(!R.current)return;O.current(R.current);let n=m(R.current,e||"",a||r||"text",o||""),s=m(R.current,t||"",i||r||"text",p||"");E.current?.setModel({original:n,modified:s})},[r,t,i,e,a,o,p]),D=(0,n.useCallback)(()=>{!_.current&&I.current&&(E.current=R.current.editor.createDiffEditor(I.current,{automaticLayout:!0,...v}),L(),R.current?.editor.setTheme(x),C(!0),_.current=!0)},[v,x,L]);return(0,n.useEffect)(()=>{k&&M.current(E.current,R.current)},[k]),(0,n.useEffect)(()=>{T||k||D()},[T,k,D]),n.default.createElement(l,{width:b,height:y,isEditorReady:k,loading:g,_ref:I,className:j,wrapperProps:w})}),f=function(){let[e,t]=(0,n.useState)(s.default.__getMonacoInstance());return c(()=>{let r;return e||(r=s.default.init()).then(e=>{t(e)}),()=>r?.cancel()}),e},x=function(e){let t=(0,n.useRef)();return(0,n.useEffect)(()=>{t.current=e},[e]),t.current},g=new Map,v=(0,n.memo)(function({defaultValue:e,defaultLanguage:t,defaultPath:r,value:a,language:i,path:o,theme:p="light",line:h,loading:f="Loading...",options:v={},overrideServices:y={},saveViewState:b=!0,keepCurrentModel:j=!1,width:w="100%",height:N="100%",className:S,wrapperProps:k={},beforeMount:C=u,onMount:T=u,onChange:P,onValidate:E=u}){let[R,I]=(0,n.useState)(!1),[M,O]=(0,n.useState)(!0),_=(0,n.useRef)(null),L=(0,n.useRef)(null),D=(0,n.useRef)(null),A=(0,n.useRef)(T),$=(0,n.useRef)(C),z=(0,n.useRef)(),H=(0,n.useRef)(a),F=x(o),B=(0,n.useRef)(!1),U=(0,n.useRef)(!1);c(()=>{let e=s.default.init();return e.then(e=>(_.current=e)&&O(!1)).catch(e=>e?.type!=="cancelation"&&console.error("Monaco initialization: error:",e)),()=>L.current?void(z.current?.dispose(),j?b&&g.set(o,L.current.saveViewState()):L.current.getModel()?.dispose(),L.current.dispose()):e.cancel()}),d(()=>{let n=m(_.current,e||a||"",t||i||"",o||r||"");n!==L.current?.getModel()&&(b&&g.set(F,L.current?.saveViewState()),L.current?.setModel(n),b&&L.current?.restoreViewState(g.get(o)))},[o],R),d(()=>{L.current?.updateOptions(v)},[v],R),d(()=>{L.current&&void 0!==a&&(L.current.getOption(_.current.editor.EditorOption.readOnly)?L.current.setValue(a):a!==L.current.getValue()&&(U.current=!0,L.current.executeEdits("",[{range:L.current.getModel().getFullModelRange(),text:a,forceMoveMarkers:!0}]),L.current.pushUndoStop(),U.current=!1))},[a],R),d(()=>{let e=L.current?.getModel();e&&i&&_.current?.editor.setModelLanguage(e,i)},[i],R),d(()=>{void 0!==h&&L.current?.revealLine(h)},[h],R),d(()=>{_.current?.editor.setTheme(p)},[p],R);let V=(0,n.useCallback)(()=>{if(!(!D.current||!_.current)&&!B.current){$.current(_.current);let n=o||r,s=m(_.current,a||e||"",t||i||"",n||"");L.current=_.current?.editor.create(D.current,{model:s,automaticLayout:!0,...v},y),b&&L.current.restoreViewState(g.get(n)),_.current.editor.setTheme(p),void 0!==h&&L.current.revealLine(h),I(!0),B.current=!0}},[e,t,r,a,i,o,v,y,b,p,h]);return(0,n.useEffect)(()=>{R&&A.current(L.current,_.current)},[R]),(0,n.useEffect)(()=>{M||R||V()},[M,R,V]),H.current=a,(0,n.useEffect)(()=>{R&&P&&(z.current?.dispose(),z.current=L.current?.onDidChangeModelContent(e=>{U.current||P(L.current.getValue(),e)}))},[R,P]),(0,n.useEffect)(()=>{if(R){let e=_.current.editor.onDidChangeMarkers(e=>{let t=L.current.getModel()?.uri;if(t&&e.find(e=>e.path===t.path)){let e=_.current.editor.getModelMarkers({resource:t});E?.(e)}});return()=>{e?.dispose()}}return()=>{}},[R,E]),n.default.createElement(l,{width:w,height:N,isEditorReady:R,loading:f,_ref:D,className:S,wrapperProps:k})}),y=v},94087:e=>{"use strict";var{g:t,__dirname:r}=e;e.s({}),e.i(30079),e.i(19886),e.i(14991)},20561:e=>{"use strict";var{g:t,__dirname:r}=e;e.s({default:()=>l});var n=e.i(20393),s=e.i(19886),a=e.i(9385),i=e.i(70599),o=e.i(86871);function l({className:e,currentProjectName:t,currentEnvName:r}){let[l,c]=(0,s.useState)([]),[d,u]=(0,s.useState)(!0),[m,p]=(0,s.useState)(null),[h,f]=(0,s.useState)(new Set),[x,g]=(0,s.useState)(""),[v,y]=(0,s.useState)(!1),[b,j]=(0,s.useState)(""),[w,N]=(0,s.useState)(!1),[S,k]=(0,s.useState)(null),C=(0,s.useRef)(null);(0,s.useEffect)(()=>{if(l.length>0){let e=l.find(e=>e.projectName===t&&e.envName===r);if(e&&e.subApps.length>0){let t=new Set;e.subApps.forEach(e=>{l.forEach(r=>{r.envName===e&&t.add(I(r))})}),f(t)}}},[l,t,r]);let T=async()=>{u(!0),p(null);try{let e=await fetch("/api/all-projects-envs"),t=await e.json();t.success?c(t.data):p(t.error||"获取项目环境信息失败")}catch(e){console.error("获取项目环境信息失败:",e),p("获取项目环境信息失败: 网络错误")}finally{u(!1)}};(0,s.useEffect)(()=>(T(),P(),()=>{E()}),[r]);let P=()=>{C.current&&E();let e=`microapp-table-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,t=`/api/microapp-proxy-change-stream?env=${encodeURIComponent(r)}&clientId=${encodeURIComponent(e)}`;console.log(`[SSE] 建立连接到: ${t}`),k(null);try{let e=new EventSource(t);C.current=e,e.onopen=()=>{console.log(`[SSE] 连接已建立,环境: ${r}`),N(!0),k(null)},e.onmessage=e=>{try{let t=JSON.parse(e.data);R(t)}catch(e){console.error("[SSE] 解析消息失败:",e)}},e.onerror=()=>{console.error(`[SSE] 连接错误,环境: ${r}`),N(!1),k("实时推送连接断开"),setTimeout(()=>{C.current&&C.current.readyState!==EventSource.CLOSED||(console.log("[SSE] 尝试重新连接..."),P())},3e3)}}catch(e){console.error("[SSE] 建立连接失败:",e),k("无法建立实时推送连接")}},E=()=>{C.current&&(console.log("[SSE] 关闭连接"),C.current.close(),C.current=null,N(!1))},R=e=>{switch(console.log("[SSE] 收到消息:",e),e.type){case"connection-established":console.log(`[SSE] 连接确认: ${e.message}`),N(!0),k(null);break;case"microapp-proxy-config-change":if(console.log(`[SSE] 配置变化通知: 环境=${e.envName}`),console.log(`[SSE] 变化详情:`,e.changes),e.changes){let{added:t,removed:r}=e.changes,n="";t.length>0&&(n+=`新增: ${t.join(", ")}`),r.length>0&&(n&&(n+="; "),n+=`移除: ${r.join(", ")}`),j(`配置已更新 (${n})`)}else j("配置已更新");T(),setTimeout(()=>j(""),3e3);break;case"heartbeat":N(!0),k(null);break;default:console.log("[SSE] 未知消息类型:",e.type)}},I=e=>`${e.projectName}-${e.envName}`,M=x.trim()?l.filter(e=>e.projectName.toLowerCase().includes(x.toLowerCase())||e.envName.toLowerCase().includes(x.toLowerCase())||e.host.toLowerCase().includes(x.toLowerCase())):l,O=(e,t)=>{let r=new Set(h);t?r.add(e):r.delete(e),f(r)},_=e=>{e?f(new Set(M.map(e=>I(e)))):f(new Set)},L=async()=>{y(!0),j("");try{let e=Array.from(h).map(e=>{let t=l.find(t=>I(t)===e);return t?t.envName:""}).filter(e=>""!==e),n=[...new Set(e)],s=await fetch("/api/microapp-proxy-config",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:t,envName:r,selectedItems:n})}),a=await s.json();a.success?(j(a.message||"保存成功"),await T()):j(`保存失败: ${a.error}`)}catch(e){console.error("保存MicroApp代理配置失败:",e),j("保存失败: 网络错误")}finally{y(!1),setTimeout(()=>{j("")},5e3)}},D=h.size,A=M.length>0&&M.every(e=>h.has(I(e))),$=M.some(e=>h.has(I(e)));return d?(0,n.jsxs)("div",{className:`p-6 bg-gray-50 rounded-lg ${e}`,children:[(0,n.jsx)("h4",{className:"text-md font-medium mb-4",children:"MicroApp代理配置"}),(0,n.jsx)("div",{className:"text-center py-8",children:(0,n.jsx)("p",{className:"text-gray-500",children:"加载中..."})})]}):m?(0,n.jsxs)("div",{className:`p-6 bg-gray-50 rounded-lg ${e}`,children:[(0,n.jsx)("h4",{className:"text-md font-medium mb-4",children:"MicroApp代理配置"}),(0,n.jsxs)("div",{className:"text-center py-8",children:[(0,n.jsx)("p",{className:"text-red-500",children:m}),(0,n.jsx)(o.Button,{variant:"outline",size:"sm",onClick:T,className:"mt-2",children:"重试"})]})]}):(0,n.jsxs)("div",{className:`p-6 bg-gray-50 rounded-lg ${e}`,children:[(0,n.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("h4",{className:"text-md font-medium",children:"MicroApp代理配置"}),(0,n.jsxs)("p",{className:"text-xs text-gray-500 mt-1",children:["为 ",t," - ",r," 环境配置微应用代理"]})]}),(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsxs)("div",{className:"flex items-center gap-1",children:[(0,n.jsx)("div",{className:`w-2 h-2 rounded-full ${w?"bg-green-500":"bg-red-500"}`,title:w?"实时推送已连接":"实时推送断开"}),(0,n.jsx)("span",{className:"text-xs text-gray-500",children:w?"实时":"离线"})]}),(b||S)&&(0,n.jsx)("span",{className:`text-sm max-w-xs ${b&&b.includes("失败")||S?"text-red-600":b&&b.includes("但有")?"text-yellow-600":"text-green-600"}`,title:b||S||"",children:b||S}),(0,n.jsx)(o.Button,{variant:"outline",size:"sm",onClick:T,disabled:v,children:"刷新"}),(0,n.jsx)(o.Button,{variant:"default",size:"sm",onClick:L,disabled:v,children:v?"保存中...":"保存配置"})]})]}),(0,n.jsxs)("div",{className:"space-y-3 mb-4",children:[(0,n.jsx)("div",{className:"flex items-center gap-2",children:(0,n.jsxs)("div",{className:"relative flex-1 max-w-md",children:[(0,n.jsx)(i.Input,{placeholder:"搜索项目名称、环境名称或Host...",value:x,onChange:e=>g(e.target.value),className:"pr-8"}),x&&(0,n.jsx)(o.Button,{variant:"ghost",size:"sm",onClick:()=>{g("")},className:"absolute right-1 top-1/2 transform -translate-y-1/2 h-6 w-6 p-0 hover:bg-gray-100",children:"×"})]})}),(0,n.jsxs)("div",{className:"flex items-center justify-between text-sm text-gray-600",children:[(0,n.jsxs)("div",{className:"flex items-center gap-4",children:[(0,n.jsxs)("span",{children:["显示 ",M.length," 个环境配置",x&&` (搜索: "${x}")`]}),D>0&&(0,n.jsxs)("span",{className:"text-blue-600 font-medium",children:["已选择 ",D," 项"]})]}),D>0&&(0,n.jsx)(o.Button,{variant:"outline",size:"sm",onClick:()=>{f(new Set)},children:"清空选择"})]})]}),M.length>0?(0,n.jsx)("div",{className:"border rounded-md",children:(0,n.jsxs)(a.Table,{children:[(0,n.jsx)(a.TableHeader,{children:(0,n.jsxs)(a.TableRow,{children:[(0,n.jsx)(a.TableHead,{className:"w-12",children:(0,n.jsx)("input",{type:"checkbox",checked:A,onChange:e=>_(e.target.checked),ref:e=>{e&&(e.indeterminate=$&&!A)},className:"rounded border-gray-300"})}),(0,n.jsx)(a.TableHead,{children:"环境名称"}),(0,n.jsx)(a.TableHead,{children:"项目名称"}),(0,n.jsx)(a.TableHead,{children:"Host地址"}),(0,n.jsx)(a.TableHead,{children:"当前代理"})]})}),(0,n.jsx)(a.TableBody,{children:M.map(e=>{let t=I(e),r=h.has(t);return(0,n.jsxs)(a.TableRow,{children:[(0,n.jsx)(a.TableCell,{children:(0,n.jsx)("input",{type:"checkbox",checked:r,onChange:e=>O(t,e.target.checked),className:"rounded border-gray-300"})}),(0,n.jsx)(a.TableCell,{children:(0,n.jsx)("span",{className:"px-2 py-1 rounded text-xs font-medium bg-blue-100 text-blue-800",children:e.envName})}),(0,n.jsx)(a.TableCell,{className:"font-medium",children:e.projectName}),(0,n.jsx)(a.TableCell,{className:"font-mono text-sm",children:e.host}),(0,n.jsxs)(a.TableCell,{className:"text-sm text-gray-600",children:[e.apiProxies?.[0]?`${e.apiProxies[0].prefix} -> ${e.apiProxies[0].currentProxy}`:"-",e.apiProxies?.[0]&&e.apiProxies[0].proxyEnv[e.apiProxies[0].currentProxy]&&(0,n.jsx)("div",{className:"text-xs text-gray-500",children:e.apiProxies[0].proxyEnv[e.apiProxies[0].currentProxy]})]})]},t)})})]})}):(0,n.jsx)("div",{className:"text-center py-8",children:(0,n.jsx)("p",{className:"text-gray-500",children:x?"没有找到匹配的环境配置":"暂无环境配置"})}),D>0&&(0,n.jsx)("div",{className:"mt-4 p-3 bg-blue-50 rounded-md",children:(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsxs)("span",{className:"text-sm text-blue-700",children:["已选择 ",D," 个环境配置将作为微应用代理"]}),(0,n.jsx)("span",{className:"text-xs text-blue-600",children:"点击上方“保存配置”按钮保存设置"})]})})]})}},94334:function(e){var{g:t,__dirname:r,m:n,e:s}=e},51904:function(e){var{g:t,__dirname:r,m:n,e:s}=e,a=e.i(47412);e.r(94334);var i=e.r(19886),o=i&&"object"==typeof i&&"default"in i?i:{default:i},l=void 0!==a.default&&a.default.env&&!0,c=function(e){return"[object String]"===Object.prototype.toString.call(e)},d=function(){function e(e){var t=void 0===e?{}:e,r=t.name,n=void 0===r?"stylesheet":r,s=t.optimizeForSpeed,a=void 0===s?l:s;u(c(n),"`name` must be a string"),this._name=n,this._deletedRulePlaceholder="#"+n+"-deleted-rule____{}",u("boolean"==typeof a,"`optimizeForSpeed` must be a boolean"),this._optimizeForSpeed=a,this._serverSheet=void 0,this._tags=[],this._injected=!1,this._rulesCount=0;var i="undefined"!=typeof window&&document.querySelector('meta[property="csp-nonce"]');this._nonce=i?i.getAttribute("content"):null}var t,r=e.prototype;return r.setOptimizeForSpeed=function(e){u("boolean"==typeof e,"`setOptimizeForSpeed` accepts a boolean"),u(0===this._rulesCount,"optimizeForSpeed cannot be when rules have already been inserted"),this.flush(),this._optimizeForSpeed=e,this.inject()},r.isOptimizeForSpeed=function(){return this._optimizeForSpeed},r.inject=function(){var e=this;if(u(!this._injected,"sheet already injected"),this._injected=!0,"undefined"!=typeof window&&this._optimizeForSpeed){this._tags[0]=this.makeStyleTag(this._name),this._optimizeForSpeed="insertRule"in this.getSheet(),this._optimizeForSpeed||(l||console.warn("StyleSheet: optimizeForSpeed mode not supported falling back to standard mode."),this.flush(),this._injected=!0);return}this._serverSheet={cssRules:[],insertRule:function(t,r){return"number"==typeof r?e._serverSheet.cssRules[r]={cssText:t}:e._serverSheet.cssRules.push({cssText:t}),r},deleteRule:function(t){e._serverSheet.cssRules[t]=null}}},r.getSheetForTag=function(e){if(e.sheet)return e.sheet;for(var t=0;t<document.styleSheets.length;t++)if(document.styleSheets[t].ownerNode===e)return document.styleSheets[t]},r.getSheet=function(){return this.getSheetForTag(this._tags[this._tags.length-1])},r.insertRule=function(e,t){if(u(c(e),"`insertRule` accepts only strings"),"undefined"==typeof window)return"number"!=typeof t&&(t=this._serverSheet.cssRules.length),this._serverSheet.insertRule(e,t),this._rulesCount++;if(this._optimizeForSpeed){var r=this.getSheet();"number"!=typeof t&&(t=r.cssRules.length);try{r.insertRule(e,t)}catch(t){return l||console.warn("StyleSheet: illegal rule: \n\n"+e+"\n\nSee https://stackoverflow.com/q/20007992 for more info"),-1}}else{var n=this._tags[t];this._tags.push(this.makeStyleTag(this._name,e,n))}return this._rulesCount++},r.replaceRule=function(e,t){if(this._optimizeForSpeed||"undefined"==typeof window){var r="undefined"!=typeof window?this.getSheet():this._serverSheet;if(t.trim()||(t=this._deletedRulePlaceholder),!r.cssRules[e])return e;r.deleteRule(e);try{r.insertRule(t,e)}catch(n){l||console.warn("StyleSheet: illegal rule: \n\n"+t+"\n\nSee https://stackoverflow.com/q/20007992 for more info"),r.insertRule(this._deletedRulePlaceholder,e)}}else{var n=this._tags[e];u(n,"old rule at index `"+e+"` not found"),n.textContent=t}return e},r.deleteRule=function(e){if("undefined"==typeof window)return void this._serverSheet.deleteRule(e);if(this._optimizeForSpeed)this.replaceRule(e,"");else{var t=this._tags[e];u(t,"rule at index `"+e+"` not found"),t.parentNode.removeChild(t),this._tags[e]=null}},r.flush=function(){this._injected=!1,this._rulesCount=0,"undefined"!=typeof window?(this._tags.forEach(function(e){return e&&e.parentNode.removeChild(e)}),this._tags=[]):this._serverSheet.cssRules=[]},r.cssRules=function(){var e=this;return"undefined"==typeof window?this._serverSheet.cssRules:this._tags.reduce(function(t,r){return r?t=t.concat(Array.prototype.map.call(e.getSheetForTag(r).cssRules,function(t){return t.cssText===e._deletedRulePlaceholder?null:t})):t.push(null),t},[])},r.makeStyleTag=function(e,t,r){t&&u(c(t),"makeStyleTag accepts only strings as second parameter");var n=document.createElement("style");this._nonce&&n.setAttribute("nonce",this._nonce),n.type="text/css",n.setAttribute("data-"+e,""),t&&n.appendChild(document.createTextNode(t));var s=document.head||document.getElementsByTagName("head")[0];return r?s.insertBefore(n,r):s.appendChild(n),n},t=[{key:"length",get:function(){return this._rulesCount}}],function(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}(e.prototype,t),e}();function u(e,t){if(!e)throw Error("StyleSheet: "+t+".")}var m=function(e){for(var t=5381,r=e.length;r;)t=33*t^e.charCodeAt(--r);return t>>>0},p={};function h(e,t){if(!t)return"jsx-"+e;var r=String(t),n=e+r;return p[n]||(p[n]="jsx-"+m(e+"-"+r)),p[n]}function f(e,t){"undefined"==typeof window&&(t=t.replace(/\/style/gi,"\\/style"));var r=e+t;return p[r]||(p[r]=t.replace(/__jsx-style-dynamic-selector/g,e)),p[r]}var x=function(){function e(e){var t=void 0===e?{}:e,r=t.styleSheet,n=void 0===r?null:r,s=t.optimizeForSpeed,a=void 0!==s&&s;this._sheet=n||new d({name:"styled-jsx",optimizeForSpeed:a}),this._sheet.inject(),n&&"boolean"==typeof a&&(this._sheet.setOptimizeForSpeed(a),this._optimizeForSpeed=this._sheet.isOptimizeForSpeed()),this._fromServer=void 0,this._indices={},this._instancesCounts={}}var t=e.prototype;return t.add=function(e){var t=this;void 0===this._optimizeForSpeed&&(this._optimizeForSpeed=Array.isArray(e.children),this._sheet.setOptimizeForSpeed(this._optimizeForSpeed),this._optimizeForSpeed=this._sheet.isOptimizeForSpeed()),"undefined"==typeof window||this._fromServer||(this._fromServer=this.selectFromServer(),this._instancesCounts=Object.keys(this._fromServer).reduce(function(e,t){return e[t]=0,e},{}));var r=this.getIdAndRules(e),n=r.styleId,s=r.rules;if(n in this._instancesCounts){this._instancesCounts[n]+=1;return}var a=s.map(function(e){return t._sheet.insertRule(e)}).filter(function(e){return -1!==e});this._indices[n]=a,this._instancesCounts[n]=1},t.remove=function(e){var t=this,r=this.getIdAndRules(e).styleId;if(function(e,t){if(!e)throw Error("StyleSheetRegistry: "+t+".")}(r in this._instancesCounts,"styleId: `"+r+"` not found"),this._instancesCounts[r]-=1,this._instancesCounts[r]<1){var n=this._fromServer&&this._fromServer[r];n?(n.parentNode.removeChild(n),delete this._fromServer[r]):(this._indices[r].forEach(function(e){return t._sheet.deleteRule(e)}),delete this._indices[r]),delete this._instancesCounts[r]}},t.update=function(e,t){this.add(t),this.remove(e)},t.flush=function(){this._sheet.flush(),this._sheet.inject(),this._fromServer=void 0,this._indices={},this._instancesCounts={}},t.cssRules=function(){var e=this,t=this._fromServer?Object.keys(this._fromServer).map(function(t){return[t,e._fromServer[t]]}):[],r=this._sheet.cssRules();return t.concat(Object.keys(this._indices).map(function(t){return[t,e._indices[t].map(function(e){return r[e].cssText}).join(e._optimizeForSpeed?"":"\n")]}).filter(function(e){return!!e[1]}))},t.styles=function(e){var t,r;return t=this.cssRules(),void 0===(r=e)&&(r={}),t.map(function(e){var t=e[0],n=e[1];return o.default.createElement("style",{id:"__"+t,key:"__"+t,nonce:r.nonce?r.nonce:void 0,dangerouslySetInnerHTML:{__html:n}})})},t.getIdAndRules=function(e){var t=e.children,r=e.dynamic,n=e.id;if(r){var s=h(n,r);return{styleId:s,rules:Array.isArray(t)?t.map(function(e){return f(s,e)}):[f(s,t)]}}return{styleId:h(n),rules:Array.isArray(t)?t:[t]}},t.selectFromServer=function(){return Array.prototype.slice.call(document.querySelectorAll('[id^="__jsx-"]')).reduce(function(e,t){return e[t.id.slice(2)]=t,e},{})},e}(),g=i.createContext(null);function v(){return new x}function y(){return i.useContext(g)}g.displayName="StyleSheetContext";var b=o.default.useInsertionEffect||o.default.useLayoutEffect,j="undefined"!=typeof window?v():void 0;function w(e){var t=j||y();return t&&("undefined"==typeof window?t.add(e):b(function(){return t.add(e),function(){t.remove(e)}},[e.id,String(e.dynamic)])),null}w.dynamic=function(e){return e.map(function(e){return h(e[0],e[1])}).join(" ")},s.StyleRegistry=function(e){var t=e.registry,r=e.children,n=i.useContext(g),s=i.useState(function(){return n||t||v()})[0];return o.default.createElement(g.Provider,{value:s},r)},s.createStyleRegistry=v,s.style=w,s.useStyleRegistry=y},56591:function(e){var{g:t,__dirname:r,m:n,e:s}=e;n.exports=e.r(51904).style},23619:e=>{"use strict";var{g:t,__dirname:r}=e;e.s({default:()=>i});var n=e.i(20393),s=e.i(56591),a=e.i(19886);function i({logs:e}){let t=(0,a.useRef)(null),r=(0,a.useRef)(!0),i=e=>e.replace(/\x1b\[[0-9;]*m/g,"").replace(/\x1b\[[0-9]*[A-Z]/g,"").replace(/\x1b\[K/g,"").replace(/\x1b\[2K/g,"").replace(/\x1b\[G/g,"").replace(/\x1b\[\d+A/g,"").replace(/\x1b\[\d+B/g,"").replace(/\x1b\[\d+C/g,"").replace(/\x1b\[\d+D/g,"").replace(/\[2K\[1A\[2K\[G/g,"").replace(/\[\d+[A-Z]/g,"").replace(/\[STDOUT\]/g,"[OUT]").replace(/\[STDERR\]/g,"[ERR]"),o=()=>{if(!t.current)return!0;let{scrollTop:e,scrollHeight:r,clientHeight:n}=t.current;return r-e-n<100},l=()=>{t.current&&r.current&&(t.current.scrollTop=t.current.scrollHeight)};return(0,a.useEffect)(()=>{setTimeout(l,10)},[e]),(0,n.jsxs)("div",{ref:t,onScroll:()=>{r.current=o()},style:{scrollBehavior:"smooth",maxHeight:"100%"},className:"jsx-b464fb0f479e34f5 h-full w-full overflow-y-auto overflow-x-hidden p-4 custom-scrollbar",children:[(0,n.jsx)(s.default,{id:"b464fb0f479e34f5",children:".custom-scrollbar.jsx-b464fb0f479e34f5{scrollbar-width:thin;scrollbar-color:#fff3 #0000001a}.custom-scrollbar.jsx-b464fb0f479e34f5::-webkit-scrollbar{width:10px;height:10px}.custom-scrollbar.jsx-b464fb0f479e34f5::-webkit-scrollbar-track{background:#0000001a;border-radius:5px}.custom-scrollbar.jsx-b464fb0f479e34f5::-webkit-scrollbar-thumb{background:#ffffff4d;border-radius:5px}.custom-scrollbar.jsx-b464fb0f479e34f5.jsx-b464fb0f479e34f5::-webkit-scrollbar-thumb:hover{background:#fff6}"}),(0,n.jsx)("div",{className:"jsx-b464fb0f479e34f5 space-y-0.5",children:e.length>0?e.map((e,t)=>{let r=i(e);if(!r.trim())return null;let s=e.includes("[STDERR]"),a=e.includes("[SYSTEM]"),o=r.match(/^\[([\d-T:.Z]+)\]/)?.[1],l=r.replace(/^\[[\d-T:.Z]+\]\s*/,"");return(0,n.jsxs)("div",{className:`jsx-b464fb0f479e34f5 font-mono text-xs leading-5 ${s?"text-red-400":a?"text-yellow-400":"text-gray-100"}`,children:[o&&(0,n.jsxs)("span",{className:"jsx-b464fb0f479e34f5 text-gray-500 mr-2",children:["[",new Date(o).toLocaleTimeString("zh-CN"),"]"]}),(0,n.jsx)("span",{className:"jsx-b464fb0f479e34f5 whitespace-pre-wrap break-all",children:l})]},t)}):(0,n.jsx)("div",{className:"jsx-b464fb0f479e34f5 text-center text-gray-500 mt-8",children:"等待日志输出..."})})]})}},40941:e=>{"use strict";var{g:t,__dirname:r}=e;e.s({default:()=>i});var n=e.i(20393),s=e.i(19886),a=e.i(86871);function i({projectName:e,className:t="",compact:r=!1}){let[i,o]=(0,s.useState)(null),[l,c]=(0,s.useState)(!1),[d,u]=(0,s.useState)(null),[m,p]=(0,s.useState)(""),h=(0,s.useCallback)(async()=>{if(e){c(!0),u(null);try{let t=await fetch(`/api/current-branch?project=${encodeURIComponent(e)}`),r=await t.json();r.success?(o(r.data),p(new Date().toLocaleTimeString("zh-CN",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"}))):u(r.error||"获取分支信息失败")}catch(e){u("网络请求失败"),console.error("获取分支信息失败:",e)}finally{c(!1)}}},[e]);(0,s.useEffect)(()=>{h()},[h]),(0,s.useEffect)(()=>{if(!e)return;let t=setInterval(()=>{h()},r?15e3:3e4);return()=>clearInterval(t)},[e,h,r]);let f=e=>0===e?"text-gray-500":"text-orange-600",x=()=>{if(!i)return null;let{ahead:e,behind:t}=i.status;return e>0&&t>0?(0,n.jsx)("span",{className:"text-yellow-500 text-xs",children:"↕"}):e>0?(0,n.jsx)("span",{className:"text-green-500 text-xs",children:"↑"}):t>0?(0,n.jsx)("span",{className:"text-red-500 text-xs",children:"↓"}):(0,n.jsx)("span",{className:"text-gray-400 text-xs",children:"✓"})};return l&&!i?r?(0,n.jsxs)("div",{className:`flex items-center gap-2 px-3 py-1 bg-gray-50 rounded-md ${t}`,children:[(0,n.jsx)("div",{className:"animate-spin w-3 h-3 border-2 border-blue-500 border-t-transparent rounded-full"}),(0,n.jsx)("span",{className:"text-xs text-gray-500",children:"加载中..."})]}):(0,n.jsxs)("div",{className:`bg-white rounded-lg shadow-sm border p-4 ${t}`,children:[(0,n.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,n.jsx)("h3",{className:"text-sm font-semibold text-gray-700",children:"Git 分支信息"}),(0,n.jsx)("div",{className:"animate-spin w-4 h-4 border-2 border-blue-500 border-t-transparent rounded-full"})]}),(0,n.jsx)("div",{className:"text-sm text-gray-500",children:"正在加载分支信息..."})]}):d?r?(0,n.jsxs)("div",{className:`flex items-center gap-2 px-3 py-1 bg-red-50 rounded-md ${t}`,children:[(0,n.jsx)("span",{className:"text-xs text-red-500",children:"分支信息错误"}),(0,n.jsx)(a.Button,{variant:"ghost",size:"sm",onClick:h,disabled:l,className:"h-5 w-5 p-0 text-red-500 hover:bg-red-100",children:"↻"})]}):(0,n.jsxs)("div",{className:`bg-white rounded-lg shadow-sm border p-4 ${t}`,children:[(0,n.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,n.jsx)("h3",{className:"text-sm font-semibold text-gray-700",children:"Git 分支信息"}),(0,n.jsx)(a.Button,{variant:"outline",size:"sm",onClick:h,disabled:l,className:"h-6 px-2 text-xs",children:l?"刷新中...":"重试"})]}),(0,n.jsx)("div",{className:"text-sm text-red-500 bg-red-50 p-2 rounded",children:d})]}):i?r?(0,n.jsxs)("div",{className:`flex items-center gap-2 px-3 py-1 bg-blue-50 border border-blue-200 rounded-md ${t}`,children:[(0,n.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"text-blue-600",children:[(0,n.jsx)("polyline",{points:"6,3 6,15"}),(0,n.jsx)("circle",{cx:"18",cy:"6",r:"3"}),(0,n.jsx)("circle",{cx:"6",cy:"18",r:"3"}),(0,n.jsx)("path",{d:"m18,9a9,9 0 0,1-9,9"})]}),(0,n.jsx)("span",{className:"text-sm font-medium text-blue-800",children:i.currentBranch}),x(),(0,n.jsx)(a.Button,{variant:"ghost",size:"sm",onClick:h,disabled:l,className:"h-5 w-5 p-0 text-blue-600 hover:bg-blue-100",title:"刷新分支信息",children:l?(0,n.jsx)("div",{className:"animate-spin w-3 h-3 border-2 border-blue-600 border-t-transparent rounded-full"}):"↻"})]}):(0,n.jsxs)("div",{className:`bg-white rounded-lg shadow-sm border p-4 ${t}`,children:[(0,n.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,n.jsx)("h3",{className:"text-sm font-semibold text-gray-700",children:"Git 分支信息"}),(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[m&&(0,n.jsx)("span",{className:"text-xs text-gray-400",children:m}),(0,n.jsx)(a.Button,{variant:"outline",size:"sm",onClick:h,disabled:l,className:"h-6 px-2 text-xs",children:l?"刷新中...":"刷新"})]})]}),(0,n.jsxs)("div",{className:"space-y-3",children:[(0,n.jsx)("div",{className:"flex items-center gap-2",children:(0,n.jsxs)("div",{className:"flex items-center gap-1",children:[(0,n.jsx)("span",{className:"text-xs text-gray-500",children:"分支:"}),(0,n.jsx)("span",{className:"text-sm font-medium text-blue-600 bg-blue-50 px-2 py-1 rounded",children:i.currentBranch}),x()]})}),(0,n.jsxs)("div",{className:"bg-gray-50 p-3 rounded text-xs space-y-1",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)("span",{className:"text-gray-500",children:"提交:"}),(0,n.jsx)("code",{className:"bg-gray-200 px-1 rounded font-mono text-xs",children:i.lastCommit.hash})]}),(0,n.jsx)("div",{className:"text-gray-700 font-medium line-clamp-2",children:i.lastCommit.message}),(0,n.jsxs)("div",{className:"flex items-center justify-between text-gray-500",children:[(0,n.jsx)("span",{children:i.lastCommit.author}),(0,n.jsx)("span",{children:i.lastCommit.date})]})]}),(0,n.jsxs)("div",{className:"grid grid-cols-2 gap-2 text-xs",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("span",{className:"text-gray-500",children:"领先:"}),(0,n.jsx)("span",{className:f(i.status.ahead),children:i.status.ahead})]}),(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("span",{className:"text-gray-500",children:"落后:"}),(0,n.jsx)("span",{className:f(i.status.behind),children:i.status.behind})]}),(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("span",{className:"text-gray-500",children:"已修改:"}),(0,n.jsx)("span",{className:f(i.status.modified),children:i.status.modified})]}),(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("span",{className:"text-gray-500",children:"已暂存:"}),(0,n.jsx)("span",{className:f(i.status.staged),children:i.status.staged})]}),(0,n.jsxs)("div",{className:"flex items-center justify-between col-span-2",children:[(0,n.jsx)("span",{className:"text-gray-500",children:"未跟踪:"}),(0,n.jsx)("span",{className:f(i.status.untracked),children:i.status.untracked})]})]}),(i.status.ahead>0||i.status.behind>0)&&(0,n.jsxs)("div",{className:"text-xs p-2 rounded bg-yellow-50 border border-yellow-200",children:[i.status.ahead>0&&i.status.behind>0&&(0,n.jsxs)("span",{className:"text-yellow-700",children:["分支与远程不同步,有 ",i.status.ahead," 个本地提交,",i.status.behind," 个远程提交"]}),i.status.ahead>0&&0===i.status.behind&&(0,n.jsxs)("span",{className:"text-green-700",children:["本地领先远程 ",i.status.ahead," 个提交"]}),0===i.status.ahead&&i.status.behind>0&&(0,n.jsxs)("span",{className:"text-red-700",children:["本地落后远程 ",i.status.behind," 个提交"]})]})]})]}):r?(0,n.jsx)("div",{className:`flex items-center gap-2 px-3 py-1 bg-gray-50 rounded-md ${t}`,children:(0,n.jsx)("span",{className:"text-xs text-gray-500",children:"暂无分支信息"})}):(0,n.jsxs)("div",{className:`bg-white rounded-lg shadow-sm border p-4 ${t}`,children:[(0,n.jsx)("div",{className:"flex items-center justify-between mb-3",children:(0,n.jsx)("h3",{className:"text-sm font-semibold text-gray-700",children:"Git 分支信息"})}),(0,n.jsx)("div",{className:"text-sm text-gray-500",children:"暂无分支信息"})]})}},66445:e=>{"use strict";var{g:t,__dirname:r}=e;e.s({buildApiProxiesPayload:()=>w,default:()=>S,validateApiProxiesForSave:()=>j});var n=e.i(20393),s=e.i(19886),a=e.i(42152),i=e.i(86871),o=e.i(75777),l=e.i(72242),c=e.i(40989),d=e.i(70599),u=e.i(80226),m=e.i(46284),p=e.i(9385),h=e.i(19579),f=e.i(42736);e.i(94087);var x=e.i(14991),g=e.i(20561),v=e.i(23619),y=e.i(40941),b=function(e){return e.PENDING="pending",e.EXISTING="existing",e.CLONING="cloning",e.SUCCESS="success",e.FAILED="failed",e.RETRYING="retrying",e}(b||{});function j(e){if(0===e.length)return"至少需要一条前缀配置";for(let t of e){let e=t.prefix.trim();if(!e||!e.startsWith("/"))return"prefix 必填且必须以 / 开头";if("custom"===t.currentProxy&&!(t.proxyEnv.custom||"").trim())return"custom 选项必须填写 URL";if(t.rewrite){let e=t.rewrite.mode;if(!["none","remove","replace"].includes(e))return"rewrite mode 仅支持 none/remove/replace";if("remove"===e&&(t.rewrite.targetPrefix||"").trim())return"rewrite 为 remove 时不允许填写 targetPrefix";if("replace"===e){let e=(t.rewrite.targetPrefix||"").trim();if(!e||!e.startsWith("/")||/\s/.test(e))return"rewrite 为 replace 时必须填写 targetPrefix,且必须以 / 开头且不能有空白字符"}}}return new Set(e.map(e=>e.prefix.trim())).size!==e.length?"prefix 不能重复":null}function w(e,t,r){return{projectName:e,envName:t,apiProxies:r}}function N(){let e=(0,a.useSearchParams)(),t=(0,a.useRouter)(),r=e.get("project"),[b,N]=(0,s.useState)(null),[S,k]=(0,s.useState)(!0),[C,T]=(0,s.useState)(null),[P,E]=(0,s.useState)({}),[R,I]=(0,s.useState)({mockingIntercept:!1,mockOpen:!1}),[M,O]=(0,s.useState)(!1),[_,L]=(0,s.useState)(null),[D,A]=(0,s.useState)(!1),[$,z]=(0,s.useState)(1),[H]=(0,s.useState)(10),[F,B]=(0,s.useState)(""),[U,V]=(0,s.useState)(null),[G,K]=(0,s.useState)(!1),[W,q]=(0,s.useState)(!1),[J,Y]=(0,s.useState)(!1),[X,Z]=(0,s.useState)(!0),[Q,ee]=(0,s.useState)(null),[et,er]=(0,s.useState)([]),[en,es]=(0,s.useState)(!1),[ea,ei]=(0,s.useState)({}),[eo,el]=(0,s.useState)(!1),[ec,ed]=(0,s.useState)(!1),[eu,em]=(0,s.useState)({apiPath:"",method:"GET",siteName:"默认场景",mockOpen:!0}),[ep,eh]=(0,s.useState)(null),[ef,ex]=(0,s.useState)(!1),[eg,ev]=(0,s.useState)({open:!1,apiName:"",method:"",siteName:""}),[ey,eb]=(0,s.useState)({open:!1,apiName:"",apiPath:""}),[ej,ew]=(0,s.useState)({open:!1,type:"success",message:""}),[eN,eS]=(0,s.useState)(!1),[ek,eC]=(0,s.useState)([]),[eT,eP]=(0,s.useState)(!1),[eE,eR]=(0,s.useState)(""),eI=(0,s.useRef)(null),[eM,eO]=(0,s.useState)({}),[e_,eL]=(0,s.useState)(!1),[eD,eA]=(0,s.useState)(""),[e$,ez]=(0,s.useState)([]),eH=(0,s.useCallback)(async()=>{Q&&await eB(Q)},[Q]),eF=(0,s.useCallback)(async e=>{G&&(e.metaKey||e.ctrlKey)&&"s"===e.key&&(e.preventDefault(),await eH())},[G,eH]);(0,s.useEffect)(()=>{if(G)return document.addEventListener("keydown",eF),()=>{document.removeEventListener("keydown",eF)}},[G,Q,eF]);let eB=async e=>{try{await new Promise(e=>setTimeout(e,200));let t=e.getModel();if(t){await e.getAction("editor.action.formatDocument")?.run();let r=t.getValue();if(r&&!r.includes("\n")&&r.length>50){let n=r.replace(/\{\s*/g,"{\n ").replace(/\}\s*/g,"\n}").replace(/;\s*/g,";\n ").replace(/,\s*/g,",\n ").replace(/\n\s*\n/g,"\n").trim();n!==r&&(t.setValue(n),setTimeout(()=>{e.getAction("editor.action.formatDocument")?.run()},100))}}}catch(e){console.log("自动格式化失败:",e)}},eU=()=>{t.push("/initialization")},eV=async()=>{es(!0);try{let e=await fetch("/api/check-workspace"),t=await e.json();if(t.success&&t.projects){let e=t.projects.map(e=>({name:e.name,status:e.status,message:e.message}));er(e)}else console.error("获取项目列表失败:",t.error),er([])}catch(e){console.error("获取项目列表失败:",e),er([])}finally{es(!1)}},eG=(0,s.useCallback)(async()=>{try{let e=await fetch("/api/process/status"),t=await e.json();if(t.success&&Array.isArray(t.data)){let e={};t.data.forEach(t=>{(t.running||t.portInUse)&&(e[t.projectName]=!0)}),ei(e)}else ei({})}catch(e){console.error("获取运行中项目失败:",e),ei({})}},[]),eK=async(e="cursor")=>{if(r){O(!0);try{let t=await fetch("/api/open-project",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:r,editor:e})}),n=await t.json();if(n.success&&n.editorUrl){let e=document.createElement("a");e.href=n.editorUrl,e.style.display="none",document.body.appendChild(e),e.click(),document.body.removeChild(e)}else console.error("打开项目失败:",n.error),ty("error",`打开项目失败: ${n.error}`)}catch(e){console.error("打开项目失败:",e),ty("error","打开项目失败: 网络错误")}finally{O(!1)}}},eW=async(e="cursor")=>{if(0===ek.length)return void ty("error","请至少选择一个项目");eP(!0);try{let t=await fetch("/api/workspace/create",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projects:ek,editor:e})}),r=await t.json();r.success?(ty("success",r.message||"工作区已创建"),eS(!1),eC([])):ty("error",`创建工作区失败: ${r.error}`)}catch(e){console.error("创建工作区失败:",e),ty("error","创建工作区失败: 网络错误")}finally{eP(!1)}},eq=e=>{eC(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])};(0,s.useEffect)(()=>{if(!r){T("项目名称缺失"),k(!1);return}(async()=>{try{let e=await fetch(`/api/project-config?project=${encodeURIComponent(r)}`),t=await e.json();if(t.success){N(t.data);let e={};Object.keys(t.data.envs).forEach(r=>{let n=t.data.envs[r];e[r]={apiProxies:(n.apiProxies||[]).map(e=>({...e,proxyEnv:{...e.proxyEnv},rewrite:e.rewrite?{...e.rewrite}:{mode:"none"}}))}}),E(e),I({mockingIntercept:t.data.mockingIntercept||!1,mockOpen:t.data.mockOpen||!1})}else T(t.error)}catch(e){T("获取项目配置失败"),console.error("获取项目配置失败:",e)}finally{k(!1)}})()},[r]);let eJ=(0,s.useCallback)(async()=>{if(r){A(!0);try{let e=await fetch(`/api/mock-file?project=${encodeURIComponent(r)}`),t=await e.json();t.success?L(t.data):console.error("获取Mock数据失败:",t.error)}catch(e){console.error("获取Mock数据失败:",e)}finally{A(!1)}}},[r]);(0,s.useEffect)(()=>{if(b&&r){let e=null!==eI.current&&eI.current!==r;e&&(eR(""),z(1),L(null)),eI.current=r;let t=Object.keys(b.envs),n=new URLSearchParams(window.location.search).get("tab"),s="";(s=F&&("mock"===F||t.includes(F))?F:n&&("mock"===n||t.includes(n))?n:t.length>0?t[0]:"mock")!==F?(B(s),"mock"===s&&eJ()):e&&"mock"===F&&eJ()}},[b,r,F,eJ]),(0,s.useEffect)(()=>{eV()},[]),(0,s.useEffect)(()=>{eG()},[eG]);let eY=(0,s.useCallback)(async()=>{if(!r||!b)return;let e={};for(let t of Object.keys(b.envs))e[`${t}`]={loading:!0,running:!1};eO(e);let t=Object.keys(b.envs).map(async e=>{try{let t=await fetch(`/api/process/status?projectName=${encodeURIComponent(r)}&envName=${encodeURIComponent(e)}`),n=await t.json();if(n.success&&n.data)return{envName:e,status:n.data}}catch(t){console.error(`获取环境 ${e} 状态失败:`,t)}return{envName:e,status:{running:!1}}}),n=await Promise.all(t),s={};n.forEach(({envName:e,status:t})=>{s[e]={running:t.running||!1,pid:t.pid,startTime:t.startTime,port:t.port,loading:!1}}),eO(s)},[r,b]),eX=async e=>{if(!r||!b)return;let t=b.envs[e];if(!t.startCommand)return void ty("error","该环境未配置启动命令");eO(t=>({...t,[e]:{...t[e],loading:!0}}));try{let n=await fetch("/api/process/start",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:r,envName:e,startCommand:t.startCommand})}),s=await n.json();if(s.success)eO(t=>({...t,[e]:{running:!0,pid:s.data.pid,startTime:s.data.startTime,port:s.data.port,loading:!1}})),ei(e=>({...e,[r]:!0}));else throw Error(s.error||"启动失败")}catch(t){console.error("启动进程失败:",t),ty("error",`启动失败: ${t instanceof Error?t.message:"未知错误"}`),eO(t=>({...t,[e]:{...t[e],loading:!1}}))}},eZ=async e=>{if(r){eO(t=>({...t,[e]:{...t[e],loading:!0}}));try{let t=await fetch(`/api/process/start?projectName=${encodeURIComponent(r)}&envName=${encodeURIComponent(e)}`,{method:"DELETE"}),n=await t.json();if(n.success)eO(t=>({...t,[e]:{running:!1,loading:!1}})),eG();else throw Error(n.error||"停止失败")}catch(t){console.error("停止进程失败:",t),ty("error",`停止失败: ${t instanceof Error?t.message:"未知错误"}`),eO(t=>({...t,[e]:{...t[e],loading:!1}}))}}},[eQ,e0]=(0,s.useState)(null),e1=e=>{if(!r)return;eQ&&eQ.close(),ez([]);let t=new EventSource(`/api/process/logs/stream?projectName=${encodeURIComponent(r)}&envName=${encodeURIComponent(e)}`);t.onmessage=e=>{try{let t=JSON.parse(e.data);"log"===t.type?ez(e=>{let r=[...e,t.content];return r.length>1e3?r.slice(-1e3):r}):"init"===t.type?ez([t.message]):"end"===t.type&&ez(e=>[...e,`[系统] ${t.message}`])}catch(e){console.error("解析日志数据失败:",e)}},t.onerror=e=>{console.error("日志流错误:",e),t.close(),e0(null)},e0(t)},e2=()=>{eQ&&(eQ.close(),e0(null))},e4=e=>{eA(e),eL(!0),e1(e)},e5=()=>{eL(!1),ez([]),eA(""),e2()};(0,s.useEffect)(()=>{if(b&&r){eY();let e=setInterval(()=>{eY()},5e3);return()=>clearInterval(e)}},[b,r,eY]);let e3=(e,t,r)=>{E(n=>{let s=n[e];if(!s)return n;let a=s.apiProxies.map((e,n)=>n!==t?e:{...e,currentProxy:r});return{...n,[e]:{...s,apiProxies:a,saveMessage:""}}})},e6=(e,t,r)=>{E(n=>{let s=n[e];if(!s)return n;let a=s.apiProxies.map((e,n)=>n!==t?e:{...e,proxyEnv:{...e.proxyEnv,custom:r}});return{...n,[e]:{...s,apiProxies:a,saveMessage:""}}})},e9=(e,t,r)=>{E(n=>{let s=n[e];if(!s)return n;let a=s.apiProxies.map((e,n)=>n!==t?e:{...e,prefix:r});return{...n,[e]:{...s,apiProxies:a,saveMessage:""}}})},e8=(e,t,r)=>{E(n=>{let s=n[e];if(!s)return n;let a=s.apiProxies.map((e,n)=>n!==t?e:"replace"===r?{...e,rewrite:{mode:"replace",targetPrefix:e.rewrite?.targetPrefix||""}}:{...e,rewrite:{mode:r}});return{...n,[e]:{...s,apiProxies:a,saveMessage:""}}})},e7=(e,t,r)=>{E(n=>{let s=n[e];if(!s)return n;let a=s.apiProxies.map((e,n)=>n!==t?e:{...e,rewrite:{mode:"replace",targetPrefix:r}});return{...n,[e]:{...s,apiProxies:a,saveMessage:""}}})},te=e=>{E(t=>{let r=t[e];return r?{...t,[e]:{...r,apiProxies:[...r.apiProxies,{prefix:"/new-api",currentProxy:"custom",proxyEnv:{custom:""},rewrite:{mode:"none"}}],saveMessage:""}}:t})},tt=(e,t)=>{E(r=>{let n=r[e];return!n||n.apiProxies.length<=1?r:{...r,[e]:{...n,apiProxies:n.apiProxies.filter((e,r)=>r!==t),saveMessage:""}}})},tr=async e=>{I(t=>({...t,mockingIntercept:e,saving:!0,saveMessage:""}));try{let t=await fetch("/api/project-config",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:r,projectConfig:{mockingIntercept:e,mockOpen:R.mockOpen}})}),n=await t.json();if(n.success)N(t=>t?{...t,mockingIntercept:e}:t),I(e=>({...e,saving:!1,saveMessage:"Mock拦截配置已保存"})),setTimeout(()=>{I(e=>({...e,saveMessage:""}))},2e3);else throw Error(n.error||"保存失败")}catch(t){console.error("保存Mock拦截配置失败:",t),I(r=>({...r,mockingIntercept:!e,saving:!1,saveMessage:`保存失败: ${t instanceof Error?t.message:"未知错误"}`})),setTimeout(()=>{I(e=>({...e,saveMessage:""}))},3e3)}},tn=async e=>{I(t=>({...t,mockOpen:e,saving:!0,saveMessage:""}));try{let t=await fetch("/api/project-config",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:r,projectConfig:{mockingIntercept:R.mockingIntercept,mockOpen:e}})}),n=await t.json();if(n.success)N(t=>t?{...t,mockOpen:e}:t),I(e=>({...e,saving:!1,saveMessage:"Mock开启配置已保存"})),setTimeout(()=>{I(e=>({...e,saveMessage:""}))},2e3);else throw Error(n.error||"保存失败")}catch(t){console.error("保存Mock开启配置失败:",t),I(r=>({...r,mockOpen:!e,saving:!1,saveMessage:`保存失败: ${t instanceof Error?t.message:"未知错误"}`})),setTimeout(()=>{I(e=>({...e,saveMessage:""}))},3e3)}},ts=async e=>{if(!b||!r)return;let t=P[e]?.apiProxies||[],n=j(t);if(n)return void E(t=>({...t,[e]:{...t[e],saveMessage:n}}));E(t=>({...t,[e]:{...t[e],saving:!0,saveMessage:""}}));try{let n=await fetch("/api/project-config",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(w(r,e,t))}),s=await n.json();s.success?(N(t=>{if(!t)return t;let r={...t.envs};return r[e]={...r[e],apiProxies:s.data.apiProxies},{...t,envs:r}}),E(t=>({...t,[e]:{...t[e],apiProxies:s.data.apiProxies,saving:!1,saveMessage:"保存成功"}}))):E(t=>({...t,[e]:{...t[e],saving:!1,saveMessage:`保存失败: ${s.error}`}}))}catch(t){console.error("保存配置失败:",t),E(t=>({...t,[e]:{...t[e],saving:!1,saveMessage:"保存失败: 网络错误"}}))}},ta=async()=>{if(window.confirm("确定要一键关闭所有Mock吗?"))try{let e=await fetch("/api/cleanup-mock",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:r})});(await e.json()).success&&await eJ()}catch(e){console.error("清空Mock配置失败:",e)}},ti=async()=>{if(window.confirm("确定要一键开启所有Mock吗?"))try{let e=await fetch("/api/open-all-mock",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:r})});(await e.json()).success&&await eJ()}catch(e){console.error("清空Mock配置失败:",e)}},to=async(e,t,n)=>{if(r)try{let s=await fetch("/api/mock-setting",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:r,apiName:e,method:t,currentSite:n})}),a=await s.json();a.success?L(r=>r?{...r,mockFiles:r.mockFiles.map(r=>r.apiName===e?{...r,methods:r.methods.map(e=>e.method===t?{...e,setting:{...e.setting,currentSite:n}}:e)}:r)}:r):(console.error("更新场景失败:",a.error),ty("error",`更新场景失败: ${a.error}`))}catch(e){console.error("更新场景失败:",e),ty("error","更新场景失败: 网络错误")}},tl=async(e,t,n)=>{if(r){q(!0),Z(!0);try{let s=await fetch(`/api/mock-file-content?project=${encodeURIComponent(r)}&apiName=${encodeURIComponent(e)}&method=${encodeURIComponent(t)}&siteName=${encodeURIComponent(n)}`),a=await s.json();a.success?(V({projectName:r,apiName:e,method:t,siteName:n,content:a.data.content}),K(!0)):(console.error("获取文件内容失败:",a.error),ty("error",`获取文件内容失败: ${a.error}`))}catch(e){console.error("获取文件内容失败:",e),ty("error","获取文件内容失败: 网络错误")}finally{q(!1)}}},tc=async()=>{if(U){Y(!0);try{let e=await fetch("/api/mock-file-content",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(U)}),t=await e.json();t.success?(K(!1),V(null)):(console.error("保存文件失败:",t.error),ty("error",`保存文件失败: ${t.error}`))}catch(e){console.error("保存文件失败:",e),ty("error","保存文件失败: 网络错误")}finally{Y(!1)}}},td=()=>{K(!1),V(null),Z(!0)},tu=(e,t)=>{"siteName"===e&&eo||em(r=>({...r,[e]:t}))},tm=(e,t)=>{let r=e.toUpperCase(),n=t.replace(/\//g,"_").replace(/^_/,"");switch(r){case"GET":return`const Mock = require('mockjs');
2
+
3
+ module.exports = Mock.mock({
4
+ "code": 200,
5
+ "message": "获取${n}成功",
6
+ "data": {
7
+ "id|1-100": 1,
8
+ "name": "@cname",
9
+ "email": "@email",
10
+ "phone": /^1[3-9]\\d{9}$/,
11
+ "status|1": ["active", "inactive", "pending"],
12
+ "createTime": "@datetime('yyyy-MM-dd HH:mm:ss')",
13
+ "updateTime": "@now('yyyy-MM-dd HH:mm:ss')",
14
+ "avatar": "@image('200x200', '@color', '@cname')",
15
+ "address": "@county(true)"
16
+ }
17
+ });`;case"POST":return`const Mock = require('mockjs');
18
+
19
+ module.exports = Mock.mock({
20
+ "code": 200,
21
+ "message": "创建${n}成功",
22
+ "data": {
23
+ "id|1-100": 1,
24
+ "result": "success",
25
+ "createTime": "@now('yyyy-MM-dd HH:mm:ss')"
26
+ }
27
+ });`;case"PUT":return`const Mock = require('mockjs');
28
+
29
+ module.exports = Mock.mock({
30
+ "code": 200,
31
+ "message": "更新${n}成功",
32
+ "data": {
33
+ "id|1-100": 1,
34
+ "result": "success",
35
+ "updateTime": "@now('yyyy-MM-dd HH:mm:ss')"
36
+ }
37
+ });`;case"DELETE":return`const Mock = require('mockjs');
38
+
39
+ module.exports = Mock.mock({
40
+ "code": 200,
41
+ "message": "删除${n}成功",
42
+ "data": {
43
+ "result": "success",
44
+ "deleteTime": "@now('yyyy-MM-dd HH:mm:ss')"
45
+ }
46
+ });`;default:return`const Mock = require('mockjs');
47
+
48
+ module.exports = Mock.mock({
49
+ "code": 200,
50
+ "message": "操作成功",
51
+ "data": {
52
+ "id|1-100": 1,
53
+ "timestamp": "@now('yyyy-MM-dd HH:mm:ss')"
54
+ }
55
+ });`}},tp=(e,t,r)=>{if(!_)return!1;let n=e.replace(/\//g,"_").replace(/^_/,""),s=_.mockFiles.find(e=>e.apiName===n);if(!s)return!1;let a=s.methods.find(e=>e.method.toLowerCase()===t.toLowerCase());return!!a&&!!a.files.find(e=>e.siteName===r)},th=async()=>{if(!eu.apiPath.trim())return void ty("error","请输入接口地址");if(tp(eu.apiPath,eu.method,eu.siteName))return void ty("error",`接口 ${eu.apiPath} [${eu.method.toUpperCase()}] 的场景 "${eu.siteName}" 已存在,不能重复创建`);ex(!0);try{let e=eu.apiPath.replace(/\//g,"_").replace(/^_/,""),t=U?.content??tm(eu.method,eu.apiPath),n=await fetch("/api/mock-file",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:r,apiName:e,method:eu.method.toLowerCase(),siteName:eu.siteName,content:t})}),s=await n.json();if(s.success)eu.mockOpen&&await tv(e,eu.method.toLowerCase(),eu.siteName,!0),em({apiPath:"",method:"GET",siteName:"默认场景",mockOpen:!0}),el(!1),await eJ(),ty("success","Mock文件创建成功");else throw Error(s.error||"创建失败")}catch(e){console.error("创建Mock文件失败:",e),ty("error",`创建Mock文件失败: ${e instanceof Error?e.message:"未知错误"}`)}finally{ex(!1)}},tf=(e,t,n)=>{console.log("新增场景点击:",{apiName:e,method:t,apiPath:n}),eh({apiName:e,method:t,apiPath:n});let s={apiPath:n,method:t.toUpperCase(),siteName:"",mockOpen:!0};console.log("设置表单数据:",s),em(s),ed(!0);let a=tm(s.method,s.apiPath);V({projectName:r||"",apiName:e,method:t.toLowerCase(),siteName:"",content:a||""})},tx=(e,t,r)=>{if(!_)return!1;let n=_.mockFiles.find(t=>t.apiName===e);if(!n)return!1;let s=n.methods.find(e=>e.method.toLowerCase()===t.toLowerCase());return!!s&&!!s.files.find(e=>e.siteName===r)},tg=async()=>{if(!ep||!eu.siteName.trim())return void ty("error","请输入场景名称");if(tx(ep.apiName,ep.method,eu.siteName))return void ty("error",`接口 ${ep.apiPath} [${ep.method.toUpperCase()}] 的场景 "${eu.siteName}" 已存在`);ex(!0);try{let e=U?.content??tm(ep.method,ep.apiPath);console.log("defaultContent",e,U);let t=await fetch("/api/mock-file",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:r,apiName:ep.apiName,method:ep.method.toLowerCase(),siteName:eu.siteName,content:e})}),n=await t.json();if(n.success){if(eu.mockOpen&&await tv(ep.apiName,ep.method,eu.siteName,!0),em({apiPath:"",method:"GET",siteName:"默认场景",mockOpen:!0}),b)try{let e=await fetch("/api/mock-setting",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:b.projectName,apiName:ep.apiName,method:ep.method,currentSite:eu.siteName})}),t=await e.json();t.success||console.warn("切换到新场景失败:",t.error)}catch(e){console.warn("切换到新场景失败:",e)}try{await tv(ep.apiName,ep.method,eu.siteName,!0)}catch(e){console.warn("自动开启新场景失败:",e)}ed(!1),eh(null),await eJ(),ty("success","场景创建成功")}else throw Error(n.error||"创建失败")}catch(e){console.error("创建场景失败:",e),ty("error",`创建场景失败: ${e instanceof Error?e.message:"未知错误"}`)}finally{ex(!1)}},tv=async(e,t,r,n)=>{if(b)try{let s=await fetch("/api/mock-open-status",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:b.projectName,apiName:e,method:t,siteName:r,isOpen:n})}),a=await s.json();a.success?await eJ():console.error("更新Mock开启状态失败:",a.error)}catch(e){console.error("更新Mock开启状态失败:",e)}},ty=(e,t)=>{ew({open:!0,type:e,message:t}),setTimeout(()=>{ew({open:!1,type:"success",message:""})},3e3)},tb=(e,t,r)=>{ev({open:!0,apiName:e,method:t,siteName:r})},tj=async()=>{if(!b)return;let{apiName:e,method:t,siteName:r}=eg;try{let n=await fetch(`/api/mock-file?project=${encodeURIComponent(b.projectName)}&apiName=${encodeURIComponent(e)}&method=${encodeURIComponent(t)}&siteName=${encodeURIComponent(r)}`,{method:"DELETE"}),s=await n.json();if(s.success){let e=window.scrollY;await eJ(),window.scrollTo(0,e),ty("success","场景删除成功")}else console.error("删除场景失败:",s.error),ty("error",`删除场景失败: ${s.error}`)}catch(e){console.error("删除场景失败:",e),ty("error","删除场景失败: 网络错误")}finally{ev({open:!1,apiName:"",method:"",siteName:""})}},tw=(e,t)=>{eb({open:!0,apiName:e,apiPath:t})},tN=async()=>{if(!b)return;let{apiName:e}=ey;try{let t=await fetch(`/api/delete-mock-api?project=${encodeURIComponent(b.projectName)}&apiName=${encodeURIComponent(e)}`,{method:"DELETE"}),r=await t.json();if(r.success){let e=window.scrollY;await eJ(),window.scrollTo(0,e),ty("success","接口删除成功")}else console.error("删除接口失败:",r.error),ty("error",`删除接口失败: ${r.error}`)}catch(e){console.error("删除接口失败:",e),ty("error","删除接口失败: 网络错误")}finally{eb({open:!1,apiName:"",apiPath:""})}},tS=e=>{eR(e),z(1)};if(S)return(0,n.jsx)("main",{className:"container mx-auto p-4 sm:p-6 md:p-8",children:(0,n.jsx)("div",{className:"text-center py-8",children:(0,n.jsx)("p",{children:"加载中..."})})});if(C||!b)return(0,n.jsxs)("main",{className:"container mx-auto p-4 sm:p-6 md:p-8",children:[(0,n.jsxs)("div",{className:"flex justify-between items-center mb-6",children:[(0,n.jsx)("h1",{className:"text-2xl font-bold",children:"项目配置"}),(0,n.jsxs)("div",{className:"flex gap-2",children:[r&&(0,n.jsx)(o.EditorSplitButton,{onOpen:eK,loading:M,loadingText:"打开中...",variant:"default"}),(0,n.jsx)(i.Button,{variant:"outline",onClick:eU,children:"返回初始化页面"})]})]}),(0,n.jsx)("div",{className:"text-center text-red-500 py-8",children:(0,n.jsx)("p",{children:C||"未找到项目配置"})})]});let tk=Object.keys(b.envs);return(0,n.jsxs)("main",{className:"container mx-auto p-4 sm:p-6 md:p-8",children:[(0,n.jsxs)("div",{className:"flex justify-between items-center mb-6",children:[(0,n.jsxs)("div",{className:"flex items-center gap-4",children:[(0,n.jsxs)("h1",{className:"text-2xl font-bold",children:[b.projectName," - 项目配置"]}),(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)(u.Label,{className:"text-sm font-medium text-gray-600",children:"切换项目:"}),(0,n.jsxs)(c.Select,{value:r||"",onValueChange:n=>{if(n===r)return;eR(""),z(1),L(null);let s=e.get("tab"),a=`/configuration?project=${encodeURIComponent(n)}${s?`&tab=${s}`:""}`;t.push(a)},disabled:en,children:[(0,n.jsx)(c.SelectTrigger,{className:"w-40",children:(0,n.jsx)(c.SelectValue,{placeholder:en?"加载中...":"选择项目"})}),(0,n.jsx)(c.SelectContent,{children:et.map(e=>(0,n.jsx)(c.SelectItem,{value:e.name,children:(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)("span",{className:`h-2 w-2 rounded-full ${"existing"===e.status?"bg-green-500":"failed"===e.status?"bg-red-500":"bg-yellow-500"} ${ea[e.name]?"animate-pulse":""}`}),(0,n.jsx)("span",{children:e.name})]})},e.name))})]})]}),(0,n.jsx)("div",{className:"ml-4",children:(0,n.jsx)(y.default,{projectName:r||"",compact:!0})})]}),(0,n.jsxs)("div",{className:"flex gap-2",children:[(0,n.jsx)(i.Button,{variant:"outline",onClick:()=>eS(!0),children:"创建工作区"}),(0,n.jsx)(o.EditorSplitButton,{onOpen:eK,loading:M,loadingText:"打开中...",variant:"default"}),(0,n.jsx)(i.Button,{variant:"outline",onClick:eU,children:"返回初始化页面"})]})]}),tk.length>0?(0,n.jsxs)(l.Tabs,{value:F||tk[0],onValueChange:e=>{B(e),"mock"===e&&eJ()},className:"w-full",children:[(0,n.jsxs)(l.TabsList,{className:"grid w-full",style:{gridTemplateColumns:`repeat(${tk.length+1}, 1fr)`},children:[tk.map(e=>(0,n.jsx)(l.TabsTrigger,{value:e,className:"capitalize relative",children:(0,n.jsxs)("span",{className:"flex items-center gap-2",children:[e,eM[e]?.running&&(0,n.jsx)("span",{className:"w-2 h-2 bg-green-500 rounded-full animate-pulse",title:"运行中"})]})},e)),(0,n.jsx)(l.TabsTrigger,{value:"mock",className:"capitalize",children:"Mock配置"})]}),tk.map(e=>{let t=b.envs[e],r=P[e]?.apiProxies||[];return(0,n.jsxs)(l.TabsContent,{value:e,className:"space-y-6",children:[(0,n.jsxs)("div",{className:"p-6 bg-gray-50 rounded-lg",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,n.jsx)("h3",{className:"text-lg font-semibold",children:"开发服务器控制"}),(0,n.jsx)("div",{className:"flex items-center gap-4",children:eM[e]?.running?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("span",{className:"flex items-center gap-2 text-sm text-green-600",children:[(0,n.jsx)("span",{className:"w-2 h-2 bg-green-500 rounded-full animate-pulse"}),"运行中 (PID: ",eM[e]?.pid,")"]}),(0,n.jsx)(i.Button,{variant:"outline",size:"sm",onClick:()=>e4(e),children:"查看日志"}),(0,n.jsx)(i.Button,{variant:"destructive",size:"sm",onClick:()=>eZ(e),disabled:eM[e]?.loading,children:eM[e]?.loading?"处理中...":"停止"})]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("span",{className:"flex items-center gap-2 text-sm text-gray-500",children:[(0,n.jsx)("span",{className:"w-2 h-2 bg-gray-400 rounded-full"}),"未运行"]}),(0,n.jsx)(i.Button,{variant:"outline",size:"sm",onClick:()=>e4(e),children:"查看日志"}),(0,n.jsx)(i.Button,{variant:"default",size:"sm",onClick:()=>eX(e),disabled:eM[e]?.loading||!t.startCommand,children:eM[e]?.loading?"处理中...":"启动"})]})})]}),t.startCommand?(0,n.jsxs)("div",{className:"text-sm text-gray-600",children:[(0,n.jsx)("span",{className:"font-medium",children:"启动命令:"})," ",(0,n.jsx)("code",{className:"px-2 py-1 bg-gray-200 rounded",children:t.startCommand})]}):(0,n.jsx)("div",{className:"text-sm text-yellow-600",children:"⚠️ 该环境未配置启动命令"}),t.host&&(0,n.jsxs)("div",{className:"text-sm text-gray-600 mt-2",children:[(0,n.jsx)("span",{className:"font-medium",children:"访问地址:"}),eM[e]?.running?(0,n.jsx)("a",{href:t.host,target:"_blank",rel:"noopener noreferrer",className:"ml-2 text-blue-600 hover:underline",children:t.host}):(0,n.jsx)("span",{className:"ml-2",children:t.host})]})]}),(0,n.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6",children:[(0,n.jsxs)("div",{className:"p-6 bg-gray-50 rounded-lg",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,n.jsxs)("h3",{className:"text-lg font-semibold",children:[e," 环境配置"]}),(0,n.jsx)(i.Button,{variant:"outline",size:"sm",onClick:()=>te(e),children:"新增前缀"})]}),(0,n.jsxs)("div",{className:"space-y-4",children:[r.map((t,s)=>{let a=Object.entries(t.proxyEnv),o=t.proxyEnv[t.currentProxy]||"";return(0,n.jsxs)("div",{className:"border rounded-md p-3 space-y-3 bg-white",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsxs)("div",{className:"flex-1",children:[(0,n.jsx)(u.Label,{className:"block text-sm font-medium mb-1",children:"prefix"}),(0,n.jsx)(d.Input,{value:t.prefix,onChange:t=>e9(e,s,t.target.value),placeholder:"例如 /api"})]}),(0,n.jsx)(i.Button,{variant:"outline",size:"sm",onClick:()=>tt(e,s),disabled:r.length<=1,className:"mt-6",children:"删除"})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)(u.Label,{className:"block text-sm font-medium mb-2",children:"代理环境"}),(0,n.jsxs)(c.Select,{value:t.currentProxy,onValueChange:t=>e3(e,s,t),children:[(0,n.jsx)(c.SelectTrigger,{className:"w-full",children:(0,n.jsx)(c.SelectValue,{placeholder:"选择代理环境"})}),(0,n.jsx)(c.SelectContent,{children:a.map(([e,t])=>(0,n.jsxs)(c.SelectItem,{value:e,children:[e,"(",t,")"]},e))})]})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)(u.Label,{className:"block text-sm font-medium mb-2",children:"路径重写"}),(0,n.jsxs)(c.Select,{value:t.rewrite?.mode||"none",onValueChange:t=>e8(e,s,t),children:[(0,n.jsx)(c.SelectTrigger,{className:"w-full",children:(0,n.jsx)(c.SelectValue,{placeholder:"选择路径重写模式"})}),(0,n.jsxs)(c.SelectContent,{children:[(0,n.jsx)(c.SelectItem,{value:"none",children:"none(不改路径)"}),(0,n.jsx)(c.SelectItem,{value:"remove",children:"remove(移除当前前缀)"}),(0,n.jsx)(c.SelectItem,{value:"replace",children:"replace(替换为目标前缀)"})]})]})]}),t.rewrite?.mode==="replace"&&(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsx)(u.Label,{className:"block text-sm font-medium",children:"rewrite targetPrefix"}),(0,n.jsx)(d.Input,{placeholder:"例如 /auth",value:t.rewrite?.targetPrefix||"",onChange:t=>e7(e,s,t.target.value),className:"w-full"})]}),"custom"===t.currentProxy&&(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsx)(u.Label,{className:"block text-sm font-medium",children:"自定义代理地址"}),(0,n.jsx)(d.Input,{type:"url",placeholder:"请输入自定义代理地址 (如: http://localhost:52741)",value:o,onChange:t=>e6(e,s,t.target.value),className:"w-full"})]})]},`${t.prefix}-${s}`)}),(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)(i.Button,{onClick:()=>ts(e),disabled:P[e]?.saving,className:"w-full sm:w-auto",children:P[e]?.saving?"保存中...":"保存配置"}),P[e]?.saveMessage&&(0,n.jsx)("span",{className:`text-sm ml-3 ${P[e]?.saveMessage==="保存成功"?"text-green-600":"text-red-600"}`,children:P[e]?.saveMessage})]})]})]}),(0,n.jsx)(g.default,{currentProjectName:b.projectName,currentEnvName:e})]})]},e)}),(0,n.jsx)(l.TabsContent,{value:"mock",className:"space-y-6",children:(0,n.jsxs)("div",{className:"p-6 bg-gray-50 rounded-lg",children:[(0,n.jsx)("h3",{className:"text-lg font-semibold mb-4",children:"Mock配置"}),(0,n.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6 mb-6",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsxs)("div",{className:"space-y-1",children:[(0,n.jsx)(u.Label,{className:"text-sm font-medium",children:"Mock拦截"}),(0,n.jsx)("p",{className:"text-xs text-gray-500",children:"启用或禁用Mock拦截功能"})]}),(0,n.jsx)(m.Switch,{checked:R.mockingIntercept,onCheckedChange:tr})]}),(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsxs)("div",{className:"space-y-1",children:[(0,n.jsx)(u.Label,{className:"text-sm font-medium",children:"Mock开启"}),(0,n.jsx)("p",{className:"text-xs text-gray-500",children:"启用或禁用Mock功能"})]}),(0,n.jsx)(m.Switch,{checked:R.mockOpen,onCheckedChange:tn})]})]}),R.saveMessage&&(0,n.jsx)("div",{className:"mb-6",children:(0,n.jsx)("span",{className:`text-sm ${R.saveMessage.includes("已保存")?"text-green-600":"text-red-600"}`,children:R.saveMessage})}),(0,n.jsxs)("div",{className:"space-y-4",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("h4",{className:"text-md font-medium",children:"Mock接口列表"}),(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)(i.Button,{onClick:()=>{el(!0);let e=tm(eu.method,eu.apiPath);V({projectName:r||"",apiName:eu.apiPath,method:eu.method.toLowerCase(),siteName:"",content:e||""})},variant:"default",size:"sm",children:"新建"}),(0,n.jsx)(i.Button,{onClick:eJ,disabled:D,variant:"outline",size:"sm",children:D?"加载中...":"刷新"}),(0,n.jsx)(i.Button,{onClick:ta,variant:"outline",size:"sm",children:"一键关闭"}),(0,n.jsx)(i.Button,{onClick:ti,variant:"outline",size:"sm",children:"一键开启"})]})]}),(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsxs)("div",{className:"relative flex-1 max-w-md",children:[(0,n.jsx)(d.Input,{placeholder:"搜索接口地址...",value:eE,onChange:e=>tS(e.target.value),className:"pr-8"}),eE&&(0,n.jsx)(i.Button,{variant:"ghost",size:"sm",onClick:()=>{eR(""),z(1)},className:"absolute right-1 top-1/2 transform -translate-y-1/2 h-6 w-6 p-0 hover:bg-gray-100",children:"×"})]}),eE&&(0,n.jsxs)("span",{className:"text-sm text-gray-500",children:['搜索关键词: "',eE,'"']})]}),D?(0,n.jsx)("div",{className:"text-center py-8",children:(0,n.jsx)("p",{className:"text-gray-500",children:"加载Mock数据中..."})}):_&&_.mockFiles.length>0?(()=>{let e=[];_.mockFiles.forEach(t=>{t.methods.forEach(r=>{let n=t.apiName.replace(/_/g,"/"),s=r.files.map(e=>e.siteName),a=r.setting?.currentSite||s[0]||"",i=r.setting?.open||[],o=i.includes(a);e.push({apiPath:n,method:r.method.toUpperCase(),currentSite:a,availableSites:s,apiName:t.apiName,isOpen:o,openSites:i})})});let t=eE.trim()?e.filter(e=>e.apiPath.toLowerCase().includes(eE.toLowerCase())):e,r=t.length,s=Math.ceil(r/H),a=($-1)*H,o=a+H,l=t.slice(a,o);return(0,n.jsxs)("div",{className:"space-y-4",children:[(0,n.jsxs)(p.Table,{children:[(0,n.jsx)(p.TableHeader,{children:(0,n.jsxs)(p.TableRow,{children:[(0,n.jsx)(p.TableHead,{children:"接口地址"}),(0,n.jsx)(p.TableHead,{children:"请求方法"}),(0,n.jsx)(p.TableHead,{children:"当前场景"}),(0,n.jsx)(p.TableHead,{children:"开启mock"}),(0,n.jsx)(p.TableHead,{children:"操作"})]})}),(0,n.jsx)(p.TableBody,{children:l.map((e,t)=>(0,n.jsxs)(p.TableRow,{children:[(0,n.jsx)(p.TableCell,{className:"font-medium",children:e.apiPath}),(0,n.jsx)(p.TableCell,{children:(0,n.jsx)("span",{className:`px-2 py-1 rounded text-xs font-medium ${"GET"===e.method?"bg-green-100 text-green-800":"POST"===e.method?"bg-blue-100 text-blue-800":"PUT"===e.method?"bg-yellow-100 text-yellow-800":"DELETE"===e.method?"bg-red-100 text-red-800":"bg-gray-100 text-gray-800"}`,children:e.method})}),(0,n.jsx)(p.TableCell,{children:(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsxs)(c.Select,{value:e.currentSite,onValueChange:t=>to(e.apiName,e.method.toLowerCase(),t),children:[(0,n.jsx)(c.SelectTrigger,{className:"w-32",children:(0,n.jsx)(c.SelectValue,{})}),(0,n.jsx)(c.SelectContent,{children:e.availableSites.map(e=>(0,n.jsx)(c.SelectItem,{value:e,children:e},e))})]}),e.availableSites.length>1&&(0,n.jsx)(i.Button,{variant:"ghost",size:"sm",onClick:()=>tb(e.apiName,e.method.toLowerCase(),e.currentSite),className:"h-8 w-8 p-0 text-red-500 hover:text-red-700 hover:bg-red-50",title:"删除当前场景",children:(0,n.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M3 6h18"}),(0,n.jsx)("path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"}),(0,n.jsx)("path",{d:"M8 6V4c0-1 1-2 2-2h4c0 1 1 2 2 2v2"})]})})]})}),(0,n.jsx)(p.TableCell,{children:(0,n.jsx)(m.Switch,{checked:e.isOpen,onCheckedChange:t=>tv(e.apiName,e.method.toLowerCase(),e.currentSite,t)})}),(0,n.jsx)(p.TableCell,{children:(0,n.jsxs)("div",{className:"flex gap-2",children:[(0,n.jsx)(i.Button,{variant:"outline",size:"sm",onClick:()=>tl(e.apiName,e.method.toLowerCase(),e.currentSite),disabled:W,children:W?"加载中...":"编辑"}),(0,n.jsx)(i.Button,{variant:"outline",size:"sm",onClick:()=>tf(e.apiName,e.method.toLowerCase(),e.apiPath),disabled:ef,children:"新增场景"}),(0,n.jsx)(i.Button,{variant:"outline",size:"sm",onClick:()=>tw(e.apiName,e.apiPath),className:"text-red-500 hover:text-red-700 hover:border-red-300",children:"删除接口"})]})})]},`${e.apiName}-${e.method}-${t}`))})]}),s>1&&(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsxs)("div",{className:"text-sm text-gray-500",children:["显示 ",a+1,"-",Math.min(o,r)," 条,共 ",r," 条"]}),(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)(i.Button,{variant:"outline",size:"sm",onClick:()=>z(e=>Math.max(1,e-1)),disabled:1===$,children:"上一页"}),(0,n.jsxs)("span",{className:"text-sm",children:[$," / ",s]}),(0,n.jsx)(i.Button,{variant:"outline",size:"sm",onClick:()=>z(e=>Math.min(s,e+1)),disabled:$===s,children:"下一页"})]})]})]})})():(0,n.jsxs)("div",{className:"text-center py-8",children:[(0,n.jsx)("p",{className:"text-gray-500",children:"暂无Mock接口数据"}),(0,n.jsx)("p",{className:"text-xs text-gray-400 mt-1",children:"请先创建Mock文件"})]})]})]})})]}):(0,n.jsx)("div",{className:"text-center text-gray-500 py-8",children:(0,n.jsx)("p",{children:"该项目没有配置环境信息"})}),(0,n.jsx)(h.Dialog,{open:G||eo||ec,onOpenChange:e=>{e||(K(!1),el(!1),ed(!1),eh(null))},children:(0,n.jsxs)(h.DialogContent,{className:"w-screen h-screen max-w-none max-h-none m-0 rounded-none overflow-hidden flex flex-col",children:[(0,n.jsxs)(h.DialogHeader,{className:"flex-shrink-0 border-b pb-4",children:[(0,n.jsx)(h.DialogTitle,{children:eo?"新建Mock文件":ec?"新增场景":"编辑Mock文件"}),(0,n.jsx)(h.DialogDescription,{children:eo?"创建一个新的Mock接口文件":ec&&ep?(0,n.jsxs)(n.Fragment,{children:["为接口 ",ep.apiPath," [",ep.method.toUpperCase(),"] 新增场景"]}):U?(0,n.jsxs)(n.Fragment,{children:["编辑 ",U.apiName.replace(/_/g,"/")," - ",U.method.toUpperCase()," - ",U.siteName,".cjs"]}):null})]}),(eo||ec)&&(0,n.jsxs)("div",{className:"flex-shrink-0 border-b pb-4",children:[(0,n.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsx)(u.Label,{htmlFor:"apiPath",className:"text-sm font-medium",children:"接口地址"}),ec?(0,n.jsx)("div",{className:"px-3 py-2 bg-gray-50 border border-gray-200 rounded-md text-sm text-gray-600",children:eu.apiPath}):(0,n.jsx)(d.Input,{id:"apiPath",placeholder:"/api/user/info",value:eu.apiPath,onChange:e=>tu("apiPath",e.target.value)})]}),(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsx)(u.Label,{htmlFor:"method",className:"text-sm font-medium",children:"请求方法"}),ec?(0,n.jsx)("div",{className:"px-3 py-2 bg-gray-50 border border-gray-200 rounded-md text-sm text-gray-600",children:eu.method}):(0,n.jsxs)(c.Select,{value:eu.method,onValueChange:e=>tu("method",e),children:[(0,n.jsx)(c.SelectTrigger,{children:(0,n.jsx)(c.SelectValue,{})}),(0,n.jsxs)(c.SelectContent,{children:[(0,n.jsx)(c.SelectItem,{value:"GET",children:"GET"}),(0,n.jsx)(c.SelectItem,{value:"POST",children:"POST"}),(0,n.jsx)(c.SelectItem,{value:"PUT",children:"PUT"}),(0,n.jsx)(c.SelectItem,{value:"DELETE",children:"DELETE"}),(0,n.jsx)(c.SelectItem,{value:"PATCH",children:"PATCH"})]})]})]}),(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsx)(u.Label,{htmlFor:"siteName",className:"text-sm font-medium",children:"场景名称"}),eo?(0,n.jsx)("div",{className:"px-3 py-2 bg-gray-50 border border-gray-200 rounded-md text-sm text-gray-600",children:"默认场景"}):(0,n.jsx)(d.Input,{id:"siteName",placeholder:"请输入场景名称",value:eu.siteName,onChange:e=>tu("siteName",e.target.value)})]}),(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsx)(u.Label,{htmlFor:"mockOpen",className:"text-sm font-medium",children:"开启Mock"}),(0,n.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,n.jsx)(m.Switch,{id:"mockOpen",checked:eu.mockOpen,onCheckedChange:e=>tu("mockOpen",e)}),(0,n.jsx)("span",{className:"text-sm text-gray-600",children:eu.mockOpen?"开启":"关闭"})]})]})]}),eo&&eu.apiPath.trim()&&eu.siteName.trim()&&tp(eu.apiPath,eu.method,eu.siteName)&&(0,n.jsx)("div",{className:"mt-4 p-3 bg-red-50 border border-red-200 rounded-md",children:(0,n.jsx)("div",{className:"flex items-center",children:(0,n.jsxs)("span",{className:"text-red-600 text-sm",children:["⚠️ 接口 ",eu.apiPath," [",eu.method.toUpperCase(),'] 的场景 "',eu.siteName,'" 已存在']})})}),ec&&ep&&eu.siteName.trim()&&tx(ep.apiName,ep.method,eu.siteName)&&(0,n.jsx)("div",{className:"mt-4 p-3 bg-red-50 border border-red-200 rounded-md",children:(0,n.jsx)("div",{className:"flex items-center",children:(0,n.jsxs)("span",{className:"text-red-600 text-sm",children:['⚠️ 场景 "',eu.siteName,'" 已存在']})})})]}),(0,n.jsx)("div",{className:"flex-1 flex flex-col space-y-4 py-4",children:(0,n.jsxs)("div",{className:"flex-1 flex flex-col",children:[(0,n.jsx)(u.Label,{className:"text-sm font-medium mb-2",children:"文件内容"}),(0,n.jsxs)("div",{className:"flex-1 border rounded-md overflow-hidden relative",children:[X&&(0,n.jsx)("div",{className:"absolute inset-0 bg-gray-50 flex items-center justify-center z-10",children:(0,n.jsx)("p",{className:"text-gray-500",children:"编辑器加载中..."})}),(0,n.jsx)(x.default,{height:"100%",defaultLanguage:"javascript",value:U?.content||"",onChange:e=>{V(t=>t?{...t,content:e||""}:null)},onMount:async e=>{console.log("编辑器挂载,模式:",{isCreateMode:eo,isAddSceneMode:ec,createFormData:eu}),ee(e),Z(!1),setTimeout(()=>eB(e),500)},loading:(0,n.jsx)("div",{className:"flex items-center justify-center h-full",children:(0,n.jsx)("p",{className:"text-gray-500",children:"编辑器加载中..."})}),options:{minimap:{enabled:!1},fontSize:14,lineNumbers:"on",roundedSelection:!1,scrollBeyondLastLine:!1,automaticLayout:!0,tabSize:2,insertSpaces:!0,wordWrap:"on",theme:"vs-dark",bracketPairColorization:{enabled:!0},quickSuggestions:{other:!0,comments:!0,strings:!0},formatOnPaste:!0,formatOnType:!0,readOnly:!1}},eo?"create":ec?"addscene":"edit")]})]})}),(0,n.jsxs)(h.DialogFooter,{className:"flex justify-between flex-shrink-0 border-t pt-4",children:[(0,n.jsx)(i.Button,{variant:"secondary",onClick:eH,disabled:!Q||X,children:"格式化代码"}),(0,n.jsxs)("div",{className:"flex gap-2",children:[(0,n.jsx)(i.Button,{variant:"outline",onClick:()=>{eo?(el(!1),em({apiPath:"",method:"GET",siteName:"默认场景",mockOpen:!0})):ec?(ed(!1),eh(null),em({apiPath:"",method:"GET",siteName:"默认场景",mockOpen:!0})):td()},children:"取消"}),eo?(0,n.jsx)(i.Button,{onClick:th,disabled:ef||!eu.apiPath.trim()||!eu.siteName.trim()||tp(eu.apiPath,eu.method,eu.siteName),children:ef?"创建中...":"创建"}):ec?(0,n.jsx)(i.Button,{onClick:tg,disabled:ef||!eu.siteName.trim()||!!ep&&tx(ep.apiName,ep.method,eu.siteName),children:ef?"创建中...":"创建"}):(0,n.jsx)(i.Button,{onClick:tc,disabled:J,children:J?"保存中...":"保存"})]})]})]})}),(0,n.jsx)(h.Dialog,{open:e_,onOpenChange:e=>{e||e5()},children:(0,n.jsxs)(h.DialogContent,{className:"max-w-5xl h-[85vh] max-h-[85vh] flex flex-col p-0",children:[(0,n.jsxs)(h.DialogHeader,{className:"px-6 pt-6 pb-4",children:[(0,n.jsxs)(h.DialogTitle,{className:"flex items-center justify-between",children:[(0,n.jsxs)("span",{children:["进程日志 - ",r," - ",eD]}),(0,n.jsx)("span",{className:"flex items-center gap-2 text-sm font-normal",children:eQ&&(0,n.jsxs)("span",{className:"flex items-center gap-1 text-green-600",children:[(0,n.jsx)("span",{className:"w-2 h-2 bg-green-500 rounded-full animate-pulse"}),"实时连接"]})})]}),(0,n.jsx)(h.DialogDescription,{children:"实时显示进程输出日志"})]}),(0,n.jsx)("div",{className:"flex-1 min-h-0 bg-gray-900 mx-6 rounded-md overflow-hidden",children:(0,n.jsx)(v.default,{logs:e$})}),(0,n.jsxs)(h.DialogFooter,{className:"flex items-center justify-between px-6 pb-6 pt-4",children:[(0,n.jsxs)("div",{className:"text-sm text-gray-500",children:["共 ",e$.length," 条日志"]}),(0,n.jsxs)("div",{className:"flex gap-2",children:[(0,n.jsx)(i.Button,{variant:"outline",onClick:()=>{eD&&(e2(),e1(eD))},disabled:!!eQ,children:"重新连接"}),(0,n.jsx)(i.Button,{variant:"default",onClick:e5,children:"关闭"})]})]})]})}),(0,n.jsx)(h.Dialog,{open:eg.open,onOpenChange:e=>{e||ev({open:!1,apiName:"",method:"",siteName:""})},children:(0,n.jsxs)(h.DialogContent,{className:"max-w-md",children:[(0,n.jsxs)(h.DialogHeader,{children:[(0,n.jsxs)(h.DialogTitle,{className:"flex items-center gap-2 text-red-600",children:[(0,n.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M3 6h18"}),(0,n.jsx)("path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"}),(0,n.jsx)("path",{d:"M8 6V4c0-1 1-2 2-2h4c0 1 1 2 2 2v2"})]}),"确认删除场景"]}),(0,n.jsxs)(h.DialogDescription,{children:["确定要删除场景 ",(0,n.jsxs)("span",{className:"font-medium text-gray-900",children:['"',eg.siteName,'"']})," 吗?",(0,n.jsx)("br",{}),(0,n.jsx)("span",{className:"text-red-500 text-sm mt-2 block",children:"此操作不可撤销"})]})]}),(0,n.jsxs)(h.DialogFooter,{className:"flex gap-2 justify-end",children:[(0,n.jsx)(i.Button,{variant:"outline",onClick:()=>ev({open:!1,apiName:"",method:"",siteName:""}),children:"取消"}),(0,n.jsx)(i.Button,{variant:"destructive",onClick:tj,children:"删除"})]})]})}),(0,n.jsx)(h.Dialog,{open:ey.open,onOpenChange:e=>{e||eb({open:!1,apiName:"",apiPath:""})},children:(0,n.jsxs)(h.DialogContent,{className:"max-w-md",children:[(0,n.jsxs)(h.DialogHeader,{children:[(0,n.jsxs)(h.DialogTitle,{className:"flex items-center gap-2 text-red-600",children:[(0,n.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,n.jsx)("path",{d:"M3 6h18"}),(0,n.jsx)("path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"}),(0,n.jsx)("path",{d:"M8 6V4c0-1 1-2 2-2h4c0 1 1 2 2 2v2"})]}),"确认删除接口"]}),(0,n.jsxs)(h.DialogDescription,{children:["确定要删除整个接口 ",(0,n.jsxs)("span",{className:"font-medium text-gray-900",children:['"',ey.apiPath,'"']})," 吗?",(0,n.jsx)("br",{}),(0,n.jsx)("span",{className:"text-red-500 text-sm mt-2 block font-medium",children:"⚠️ 这将删除该接口的所有场景和相关文件,此操作不可撤销"})]})]}),(0,n.jsxs)(h.DialogFooter,{className:"flex gap-2 justify-end",children:[(0,n.jsx)(i.Button,{variant:"outline",onClick:()=>eb({open:!1,apiName:"",apiPath:""}),children:"取消"}),(0,n.jsx)(i.Button,{variant:"destructive",onClick:tN,children:"删除整个接口"})]})]})}),(0,n.jsx)(h.Dialog,{open:eN,onOpenChange:eS,children:(0,n.jsxs)(h.DialogContent,{className:"max-w-md",children:[(0,n.jsxs)(h.DialogHeader,{children:[(0,n.jsx)(h.DialogTitle,{children:"创建工作区"}),(0,n.jsx)(h.DialogDescription,{children:"选择要包含在工作区中的项目"})]}),(0,n.jsxs)("div",{className:"py-4 max-h-96 overflow-y-auto",children:[(0,n.jsx)("div",{className:"space-y-3",children:et.filter(e=>"existing"===e.status).map(e=>(0,n.jsxs)("div",{className:"flex items-center space-x-3 p-3 rounded-lg border border-gray-200 hover:bg-gray-50 transition-colors",children:[(0,n.jsx)(f.Checkbox,{id:`workspace-${e.name}`,checked:ek.includes(e.name),onCheckedChange:()=>eq(e.name)}),(0,n.jsx)("label",{htmlFor:`workspace-${e.name}`,className:"flex-1 cursor-pointer text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",children:e.name})]},e.name))}),0===et.filter(e=>"existing"===e.status).length&&(0,n.jsx)("div",{className:"text-center py-8 text-gray-500",children:"没有可用的项目"})]}),(0,n.jsxs)(h.DialogFooter,{className:"flex gap-2 justify-end",children:[(0,n.jsx)(i.Button,{variant:"outline",onClick:()=>{eS(!1),eC([])},children:"取消"}),(0,n.jsx)(o.EditorSplitButton,{onOpen:eW,loading:eT,loadingText:"创建中...",disabled:0===ek.length,actionType:"create",variant:"default"})]})]})}),ej.open&&(0,n.jsx)("div",{className:"fixed top-4 right-4 z-50 animate-in slide-in-from-top-2 duration-300",children:(0,n.jsxs)("div",{className:`flex items-center gap-3 px-4 py-3 rounded-lg shadow-lg border max-w-sm ${"success"===ej.type?"bg-green-50 border-green-200 text-green-800":"bg-red-50 border-red-200 text-red-800"}`,children:[(0,n.jsx)("div",{className:"flex-shrink-0",children:"success"===ej.type?(0,n.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"text-green-600",children:(0,n.jsx)("path",{d:"M20 6L9 17l-5-5"})}):(0,n.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"text-red-600",children:[(0,n.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,n.jsx)("line",{x1:"15",y1:"9",x2:"9",y2:"15"}),(0,n.jsx)("line",{x1:"9",y1:"9",x2:"15",y2:"15"})]})}),(0,n.jsx)("p",{className:"text-sm font-medium",children:ej.message}),(0,n.jsx)("button",{onClick:()=>ew({open:!1,type:"success",message:""}),className:"flex-shrink-0 ml-auto",children:(0,n.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"opacity-60 hover:opacity-100",children:[(0,n.jsx)("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),(0,n.jsx)("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]})})]})}function S(){return(0,n.jsx)(s.Suspense,{fallback:(0,n.jsx)("div",{className:"min-h-screen bg-gray-50 flex items-center justify-center",children:(0,n.jsxs)("div",{className:"text-center space-y-4",children:[(0,n.jsx)("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600 mx-auto"}),(0,n.jsx)("p",{className:"text-gray-600",children:"正在加载配置页面..."})]})}),children:(0,n.jsx)(N,{})})}}}]);
56
+
57
+ //# sourceMappingURL=51208386dbc1874e.js.map