prime-dev-cli 1.0.12 → 1.0.14

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 (170) hide show
  1. package/dist/server/.next/BUILD_ID +1 -1
  2. package/dist/server/.next/app-build-manifest.json +5 -5
  3. package/dist/server/.next/app-path-routes-manifest.json +1 -0
  4. package/dist/server/.next/build-manifest.json +6 -6
  5. package/dist/server/.next/cache/.rscinfo +1 -1
  6. package/dist/server/.next/cache/.tsbuildinfo +1 -1
  7. package/dist/server/.next/cache/eslint/.cache_1qa5vxt +1 -1
  8. package/dist/server/.next/fallback-build-manifest.json +6 -6
  9. package/dist/server/.next/next-minimal-server.js.nft.json +1 -1
  10. package/dist/server/.next/next-server.js.nft.json +1 -1
  11. package/dist/server/.next/prerender-manifest.json +9 -9
  12. package/dist/server/.next/required-server-files.json +1 -1
  13. package/dist/server/.next/server/app/_not-found/page/app-build-manifest.json +1 -1
  14. package/dist/server/.next/server/app/_not-found/page.js +1 -1
  15. package/dist/server/.next/server/app/_not-found/page.js.nft.json +1 -1
  16. package/dist/server/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  17. package/dist/server/.next/server/app/_not-found.html +1 -1
  18. package/dist/server/.next/server/app/_not-found.rsc +2 -2
  19. package/dist/server/.next/server/app/api/all-projects-envs/route.js +1 -1
  20. package/dist/server/.next/server/app/api/all-projects-envs/route.js.nft.json +1 -1
  21. package/dist/server/.next/server/app/api/check-mock-intercept/route.js +1 -1
  22. package/dist/server/.next/server/app/api/check-mock-intercept/route.js.nft.json +1 -1
  23. package/dist/server/.next/server/app/api/check-workspace/route.js +1 -1
  24. package/dist/server/.next/server/app/api/check-workspace/route.js.nft.json +1 -1
  25. package/dist/server/.next/server/app/api/cleanup-mock/route.js +1 -1
  26. package/dist/server/.next/server/app/api/cleanup-mock/route.js.nft.json +1 -1
  27. package/dist/server/.next/server/app/api/delete-mock-api/route.js +1 -1
  28. package/dist/server/.next/server/app/api/delete-mock-api/route.js.nft.json +1 -1
  29. package/dist/server/.next/server/app/api/get-mock-data/route.js +1 -1
  30. package/dist/server/.next/server/app/api/get-mock-data/route.js.nft.json +1 -1
  31. package/dist/server/.next/server/app/api/initialize-workspace/route.js +1 -1
  32. package/dist/server/.next/server/app/api/initialize-workspace/route.js.nft.json +1 -1
  33. package/dist/server/.next/server/app/api/microapp-proxy-change-stream/route.js +1 -1
  34. package/dist/server/.next/server/app/api/microapp-proxy-change-stream/route.js.nft.json +1 -1
  35. package/dist/server/.next/server/app/api/microapp-proxy-config/route.js +1 -1
  36. package/dist/server/.next/server/app/api/microapp-proxy-config/route.js.nft.json +1 -1
  37. package/dist/server/.next/server/app/api/mock-file/route.js +1 -1
  38. package/dist/server/.next/server/app/api/mock-file/route.js.nft.json +1 -1
  39. package/dist/server/.next/server/app/api/mock-file-content/route.js +1 -1
  40. package/dist/server/.next/server/app/api/mock-file-content/route.js.nft.json +1 -1
  41. package/dist/server/.next/server/app/api/mock-open-status/route.js +1 -1
  42. package/dist/server/.next/server/app/api/mock-open-status/route.js.nft.json +1 -1
  43. package/dist/server/.next/server/app/api/mock-setting/route.js +1 -1
  44. package/dist/server/.next/server/app/api/mock-setting/route.js.nft.json +1 -1
  45. package/dist/server/.next/server/app/api/open-all-mock/route.js +1 -1
  46. package/dist/server/.next/server/app/api/open-all-mock/route.js.nft.json +1 -1
  47. package/dist/server/.next/server/app/api/process/start/route.js +1 -1
  48. package/dist/server/.next/server/app/api/process/start/route.js.nft.json +1 -1
  49. package/dist/server/.next/server/app/api/process/status/route.js +1 -1
  50. package/dist/server/.next/server/app/api/process/status/route.js.nft.json +1 -1
  51. package/dist/server/.next/server/app/api/project-config/route.js +1 -1
  52. package/dist/server/.next/server/app/api/project-config/route.js.nft.json +1 -1
  53. package/dist/server/.next/server/app/api/retry-project/route.js +1 -1
  54. package/dist/server/.next/server/app/api/retry-project/route.js.nft.json +1 -1
  55. package/dist/server/.next/server/app/api/workspace/create/route/app-build-manifest.json +11 -0
  56. package/dist/server/.next/server/app/api/workspace/create/route/app-paths-manifest.json +3 -0
  57. package/dist/server/.next/server/app/api/workspace/create/route/build-manifest.json +17 -0
  58. package/dist/server/.next/server/app/api/workspace/create/route/next-font-manifest.json +6 -0
  59. package/dist/server/.next/server/app/api/workspace/create/route/react-loadable-manifest.json +1 -0
  60. package/dist/server/.next/server/app/api/workspace/create/route/server-reference-manifest.json +4 -0
  61. package/dist/server/.next/server/app/api/workspace/create/route.js +7 -0
  62. package/dist/server/.next/server/app/api/workspace/create/route.js.map +5 -0
  63. package/dist/server/.next/server/app/api/workspace/create/route.js.nft.json +1 -0
  64. package/dist/server/.next/server/app/api/workspace/create/route_client-reference-manifest.js +2 -0
  65. package/dist/server/.next/server/app/configuration/page/app-build-manifest.json +2 -2
  66. package/dist/server/.next/server/app/configuration/page.js +1 -1
  67. package/dist/server/.next/server/app/configuration/page.js.nft.json +1 -1
  68. package/dist/server/.next/server/app/configuration/page_client-reference-manifest.js +1 -1
  69. package/dist/server/.next/server/app/configuration.html +1 -1
  70. package/dist/server/.next/server/app/configuration.rsc +3 -3
  71. package/dist/server/.next/server/app/index.html +1 -1
  72. package/dist/server/.next/server/app/index.rsc +2 -2
  73. package/dist/server/.next/server/app/initialization/page/app-build-manifest.json +1 -1
  74. package/dist/server/.next/server/app/initialization/page.js +1 -1
  75. package/dist/server/.next/server/app/initialization/page.js.nft.json +1 -1
  76. package/dist/server/.next/server/app/initialization/page_client-reference-manifest.js +1 -1
  77. package/dist/server/.next/server/app/initialization.html +1 -1
  78. package/dist/server/.next/server/app/initialization.rsc +2 -2
  79. package/dist/server/.next/server/app/page/app-build-manifest.json +1 -1
  80. package/dist/server/.next/server/app/page.js +1 -1
  81. package/dist/server/.next/server/app/page.js.nft.json +1 -1
  82. package/dist/server/.next/server/app/page_client-reference-manifest.js +1 -1
  83. package/dist/server/.next/server/app-paths-manifest.json +1 -0
  84. package/dist/server/.next/server/chunks/{[root-of-the-server]__be3de126._.js → [root-of-the-server]__07bd4a2b._.js} +2 -2
  85. package/dist/server/.next/server/chunks/[root-of-the-server]__07bd4a2b._.js.map +1 -0
  86. package/dist/server/.next/server/chunks/[root-of-the-server]__0aaf11fd._.js +8 -0
  87. package/dist/server/.next/server/chunks/[root-of-the-server]__0aaf11fd._.js.map +1 -0
  88. package/dist/server/.next/server/chunks/{[root-of-the-server]__a6211ee0._.js → [root-of-the-server]__442ae257._.js} +2 -2
  89. package/dist/server/.next/server/chunks/[root-of-the-server]__442ae257._.js.map +1 -0
  90. package/dist/server/.next/server/chunks/[root-of-the-server]__4498bb74._.js +3 -0
  91. package/dist/server/.next/server/chunks/[root-of-the-server]__4498bb74._.js.map +1 -0
  92. package/dist/server/.next/server/chunks/[root-of-the-server]__6cc174c2._.js +3 -0
  93. package/dist/server/.next/server/chunks/[root-of-the-server]__6cc174c2._.js.map +1 -0
  94. package/dist/server/.next/server/chunks/[root-of-the-server]__6f17de68._.js +3 -0
  95. package/dist/server/.next/server/chunks/[root-of-the-server]__6f17de68._.js.map +1 -0
  96. package/dist/server/.next/server/chunks/{[root-of-the-server]__933f7077._.js → [root-of-the-server]__6f66caff._.js} +2 -2
  97. package/dist/server/.next/server/chunks/{[root-of-the-server]__933f7077._.js.map → [root-of-the-server]__6f66caff._.js.map} +1 -1
  98. package/dist/server/.next/server/chunks/{[root-of-the-server]__e301c560._.js → [root-of-the-server]__70a56518._.js} +2 -2
  99. package/dist/server/.next/server/chunks/[root-of-the-server]__70a56518._.js.map +1 -0
  100. package/dist/server/.next/server/chunks/[root-of-the-server]__7c3ad3a9._.js +3 -0
  101. package/dist/server/.next/server/chunks/[root-of-the-server]__7c3ad3a9._.js.map +1 -0
  102. package/dist/server/.next/server/chunks/{[root-of-the-server]__5cddc64c._.js → [root-of-the-server]__9370ea2b._.js} +2 -2
  103. package/dist/server/.next/server/chunks/{[root-of-the-server]__5cddc64c._.js.map → [root-of-the-server]__9370ea2b._.js.map} +1 -1
  104. package/dist/server/.next/server/chunks/{[root-of-the-server]__802aba2d._.js → [root-of-the-server]__9f32f8a7._.js} +2 -2
  105. package/dist/server/.next/server/chunks/{[root-of-the-server]__802aba2d._.js.map → [root-of-the-server]__9f32f8a7._.js.map} +1 -1
  106. package/dist/server/.next/server/chunks/[root-of-the-server]__aba5bddd._.js +3 -0
  107. package/dist/server/.next/server/chunks/[root-of-the-server]__aba5bddd._.js.map +1 -0
  108. package/dist/server/.next/server/chunks/[root-of-the-server]__b310ec65._.js +3 -0
  109. package/dist/server/.next/server/chunks/[root-of-the-server]__b310ec65._.js.map +1 -0
  110. package/dist/server/.next/server/chunks/{[root-of-the-server]__837d58ae._.js → [root-of-the-server]__c15317cb._.js} +2 -2
  111. package/dist/server/.next/server/chunks/{[root-of-the-server]__837d58ae._.js.map → [root-of-the-server]__c15317cb._.js.map} +1 -1
  112. package/dist/server/.next/server/chunks/{[root-of-the-server]__ef09a48e._.js → [root-of-the-server]__c8cd1231._.js} +2 -2
  113. package/dist/server/.next/server/chunks/{[root-of-the-server]__ef09a48e._.js.map → [root-of-the-server]__c8cd1231._.js.map} +1 -1
  114. package/dist/server/.next/server/chunks/{[root-of-the-server]__582946e6._.js → [root-of-the-server]__e54d7eff._.js} +2 -2
  115. package/dist/server/.next/server/chunks/{[root-of-the-server]__582946e6._.js.map → [root-of-the-server]__e54d7eff._.js.map} +1 -1
  116. package/dist/server/.next/server/chunks/{[root-of-the-server]__09914a79._.js → [root-of-the-server]__e68f3764._.js} +2 -2
  117. package/dist/server/.next/server/chunks/{[root-of-the-server]__09914a79._.js.map → [root-of-the-server]__e68f3764._.js.map} +1 -1
  118. package/dist/server/.next/server/chunks/[root-of-the-server]__f76d331f._.js +3 -0
  119. package/dist/server/.next/server/chunks/[root-of-the-server]__f76d331f._.js.map +1 -0
  120. package/dist/server/.next/server/chunks/{[root-of-the-server]__52d487d8._.js → [root-of-the-server]__fefd40ba._.js} +2 -2
  121. package/dist/server/.next/server/chunks/{[root-of-the-server]__52d487d8._.js.map → [root-of-the-server]__fefd40ba._.js.map} +1 -1
  122. package/dist/server/.next/server/chunks/ssr/[root-of-the-server]__e3a2aebd._.js +3 -0
  123. package/dist/server/.next/server/chunks/ssr/{_bb352729._.js → _5d353cf8._.js} +3 -3
  124. package/dist/server/.next/server/chunks/ssr/_5d353cf8._.js.map +1 -0
  125. package/dist/server/.next/server/middleware-build-manifest.js +4 -4
  126. package/dist/server/.next/server/pages/404.html +1 -1
  127. package/dist/server/.next/server/pages/500.html +1 -1
  128. package/dist/server/.next/server/pages/_app/build-manifest.json +2 -2
  129. package/dist/server/.next/server/pages/_error/build-manifest.json +2 -2
  130. package/dist/server/.next/server/server-reference-manifest.js +1 -1
  131. package/dist/server/.next/server/server-reference-manifest.json +1 -1
  132. package/dist/server/.next/static/chunks/{2befba13bed43c5f.js → 0089092a8fff7e00.js} +2 -2
  133. package/dist/server/.next/static/chunks/{d74cc70dd8ef74c9.js → 0d1500d118ef892c.js} +2 -2
  134. package/dist/server/.next/static/chunks/1ad898191df92f90.css +3 -0
  135. package/dist/server/.next/static/chunks/2c0e57fbc9520adc.js +61 -0
  136. package/dist/server/.next/static/chunks/765c1fd313250591.js.map +1 -0
  137. package/dist/server/.next/static/chunks/b0840b8d648f6401.css.map +1 -0
  138. package/dist/server/.next/static/chunks/{4cbec079b6e3e189.js → bf41727b544d17b4.js} +2 -2
  139. package/dist/server/.next/static/chunks/{a898634af0862944.js.map → fc5c3c838ec48e75.js.map} +1 -1
  140. package/dist/server/.next/static/chunks/pages/_app.js +2 -2
  141. package/dist/server/.next/static/chunks/pages/_error.js +2 -2
  142. package/dist/server/.next/trace +1 -1
  143. package/package.json +1 -1
  144. package/dist/server/.next/server/chunks/[root-of-the-server]__07de450e._.js +0 -3
  145. package/dist/server/.next/server/chunks/[root-of-the-server]__07de450e._.js.map +0 -1
  146. package/dist/server/.next/server/chunks/[root-of-the-server]__09808308._.js +0 -3
  147. package/dist/server/.next/server/chunks/[root-of-the-server]__09808308._.js.map +0 -1
  148. package/dist/server/.next/server/chunks/[root-of-the-server]__42bc7b42._.js +0 -8
  149. package/dist/server/.next/server/chunks/[root-of-the-server]__42bc7b42._.js.map +0 -1
  150. package/dist/server/.next/server/chunks/[root-of-the-server]__4dc677cb._.js +0 -3
  151. package/dist/server/.next/server/chunks/[root-of-the-server]__4dc677cb._.js.map +0 -1
  152. package/dist/server/.next/server/chunks/[root-of-the-server]__a6211ee0._.js.map +0 -1
  153. package/dist/server/.next/server/chunks/[root-of-the-server]__aca25fcf._.js +0 -3
  154. package/dist/server/.next/server/chunks/[root-of-the-server]__aca25fcf._.js.map +0 -1
  155. package/dist/server/.next/server/chunks/[root-of-the-server]__be3de126._.js.map +0 -1
  156. package/dist/server/.next/server/chunks/[root-of-the-server]__da89e112._.js +0 -3
  157. package/dist/server/.next/server/chunks/[root-of-the-server]__da89e112._.js.map +0 -1
  158. package/dist/server/.next/server/chunks/[root-of-the-server]__e07d75ff._.js +0 -3
  159. package/dist/server/.next/server/chunks/[root-of-the-server]__e07d75ff._.js.map +0 -1
  160. package/dist/server/.next/server/chunks/[root-of-the-server]__e301c560._.js.map +0 -1
  161. package/dist/server/.next/server/chunks/ssr/[root-of-the-server]__6d393273._.js +0 -3
  162. package/dist/server/.next/server/chunks/ssr/_bb352729._.js.map +0 -1
  163. package/dist/server/.next/static/chunks/344b0062191ace22.css.map +0 -1
  164. package/dist/server/.next/static/chunks/6c91d5f280e79a14.css +0 -3
  165. package/dist/server/.next/static/chunks/700389bfed628512.js +0 -61
  166. package/dist/server/.next/static/chunks/8d4c1c4e33fc41f3.js.map +0 -1
  167. /package/dist/server/.next/server/chunks/ssr/{[root-of-the-server]__6d393273._.js.map → [root-of-the-server]__e3a2aebd._.js.map} +0 -0
  168. /package/dist/server/.next/static/{7OebYsNYEi58ku74bswdb → e1tjd_meooMxESv5gSLAU}/_buildManifest.js +0 -0
  169. /package/dist/server/.next/static/{7OebYsNYEi58ku74bswdb → e1tjd_meooMxESv5gSLAU}/_clientMiddlewareManifest.json +0 -0
  170. /package/dist/server/.next/static/{7OebYsNYEi58ku74bswdb → e1tjd_meooMxESv5gSLAU}/_ssgManifest.js +0 -0
@@ -2,7 +2,7 @@ module.exports={94491:a=>{"use strict";var{g:b,__dirname:c}=a;function d(a,b,{ch
2
2
 
3
3
  If you want to hide the \`${b.titleName}\`, you can wrap it with our VisuallyHidden component.
4
4
 
5
- For more information, see https://radix-ui.com/primitives/docs/components/${b.docsSlug}`;return(0,d.useEffect)(()=>{a&&(document.getElementById(a)||console.error(c))},[c,a]),null},Z=({contentRef:a,descriptionId:b})=>{let c=X("DialogDescriptionWarning"),e=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${c.contentName}}.`;return(0,d.useEffect)(()=>{let c=a.current?.getAttribute("aria-describedby");b&&c&&(document.getElementById(b)||console.warn(e))},[e,a,b]),null},$=y,_=A,aa=E,ab=G,ac=K,ad=P,ae=R,af=T},76315:a=>{"use strict";var{g:b,__dirname:c}=a;{a.s({__iconNode:()=>b,default:()=>c});var d=a.i(49756);let b=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],c=(0,d.default)("x",b)}},97231:a=>{"use strict";var{g:b,__dirname:c}=a;a.s({XIcon:()=>d.default});var d=a.i(76315)},22529:a=>{"use strict";var{g:b,__dirname:c}=a;a.s({Dialog:()=>h,DialogClose:()=>k,DialogContent:()=>m,DialogDescription:()=>q,DialogFooter:()=>o,DialogHeader:()=>n,DialogOverlay:()=>l,DialogPortal:()=>j,DialogTitle:()=>p,DialogTrigger:()=>i});var d=a.i(99559),e=a.i(66067),f=a.i(97231),g=a.i(61073);function h({...a}){return(0,d.jsx)(e.Root,{"data-slot":"dialog",...a})}function i({...a}){return(0,d.jsx)(e.Trigger,{"data-slot":"dialog-trigger",...a})}function j({...a}){return(0,d.jsx)(e.Portal,{"data-slot":"dialog-portal",...a})}function k({...a}){return(0,d.jsx)(e.Close,{"data-slot":"dialog-close",...a})}function l({className:a,...b}){return(0,d.jsx)(e.Overlay,{"data-slot":"dialog-overlay",className:(0,g.cn)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",a),...b})}function m({className:a,children:b,showCloseButton:c=!0,...h}){return(0,d.jsxs)(j,{"data-slot":"dialog-portal",children:[(0,d.jsx)(l,{}),(0,d.jsxs)(e.Content,{"data-slot":"dialog-content",className:(0,g.cn)("bg-background 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 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200",a),...h,children:[b,c&&(0,d.jsxs)(e.Close,{"data-slot":"dialog-close",className:"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",children:[(0,d.jsx)(f.XIcon,{}),(0,d.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})}function n({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"dialog-header",className:(0,g.cn)("flex flex-col gap-2 text-center sm:text-left",a),...b})}function o({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"dialog-footer",className:(0,g.cn)("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",a),...b})}function p({className:a,...b}){return(0,d.jsx)(e.Title,{"data-slot":"dialog-title",className:(0,g.cn)("text-lg leading-none font-semibold",a),...b})}function q({className:a,...b}){return(0,d.jsx)(e.Description,{"data-slot":"dialog-description",className:(0,g.cn)("text-muted-foreground text-sm",a),...b})}},84172:a=>{"use strict";var{g:b,__dirname:c}=a;function d(a,b,c){return b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function e(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function f(a){for(var b=1;b<arguments.length;b++){var c=null!=arguments[b]?arguments[b]:{};b%2?e(Object(c),!0).forEach(function(b){d(a,b,c[b])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(c)):e(Object(c)).forEach(function(b){Object.defineProperty(a,b,Object.getOwnPropertyDescriptor(c,b))})}return a}function g(a,b){if(null==a)return{};var c,d,e={},f=Object.keys(a);for(d=0;d<f.length;d++)c=f[d],b.indexOf(c)>=0||(e[c]=a[c]);return e}function h(a,b){if(null==a)return{};var c,d,e=g(a,b);if(Object.getOwnPropertySymbols){var f=Object.getOwnPropertySymbols(a);for(d=0;d<f.length;d++)c=f[d],!(b.indexOf(c)>=0)&&Object.prototype.propertyIsEnumerable.call(a,c)&&(e[c]=a[c])}return e}function i(a,b){return j(a)||k(a,b)||l(a,b)||n()}function j(a){if(Array.isArray(a))return a}function k(a,b){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(a)){var c=[],d=!0,e=!1,f=void 0;try{for(var g,h=a[Symbol.iterator]();!(d=(g=h.next()).done)&&(c.push(g.value),!b||c.length!==b);d=!0);}catch(a){e=!0,f=a}finally{try{d||null==h.return||h.return()}finally{if(e)throw f}}return c}}function l(a,b){if(a){if("string"==typeof a)return m(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);if("Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c)return Array.from(a);if("Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c))return m(a,b)}}function m(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}function n(){throw TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}a.s({arrayLikeToArray:()=>m,arrayWithHoles:()=>j,defineProperty:()=>d,iterableToArrayLimit:()=>k,nonIterableRest:()=>n,objectSpread2:()=>f,objectWithoutProperties:()=>h,objectWithoutPropertiesLoose:()=>g,slicedToArray:()=>i,unsupportedIterableToArray:()=>l})},21782:a=>{"use strict";var{g:b,__dirname:c}=a;{function d(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function e(a){for(var b=1;b<arguments.length;b++){var c=null!=arguments[b]?arguments[b]:{};b%2?d(Object(c),!0).forEach(function(b){var d;d=c[b],b in a?Object.defineProperty(a,b,{value:d,enumerable:!0,configurable:!0,writable:!0}):a[b]=d}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(c)):d(Object(c)).forEach(function(b){Object.defineProperty(a,b,Object.getOwnPropertyDescriptor(c,b))})}return a}function f(a){return function b(){for(var c=this,d=arguments.length,e=Array(d),f=0;f<d;f++)e[f]=arguments[f];return e.length>=a.length?a.apply(this,e):function(){for(var a=arguments.length,d=Array(a),f=0;f<a;f++)d[f]=arguments[f];return b.apply(c,[].concat(e,d))}}}function g(a){return({}).toString.call(a).includes("Object")}function h(a){return"function"==typeof a}a.s({default:()=>b});var i=f(function(a,b){throw Error(a[b]||a.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"}),j={changes:function(a,b){return g(b)||i("changeType"),Object.keys(b).some(function(b){return!Object.prototype.hasOwnProperty.call(a,b)})&&i("changeField"),b},selector:function(a){h(a)||i("selectorType")},handler:function(a){h(a)||g(a)||i("handlerType"),g(a)&&Object.values(a).some(function(a){return!h(a)})&&i("handlersType")},initial:function(a){a||i("initialIsRequired"),g(a)||i("initialType"),Object.keys(a).length||i("initialContent")}};function k(a,b){return h(b)?b(a.current):b}function l(a,b){return a.current=e(e({},a.current),b),b}function m(a,b,c){return h(b)?b(a.current):Object.keys(c).forEach(function(c){var d;return null==(d=b[c])?void 0:d.call(b,a.current[c])}),c}let b={create:function(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};j.initial(a),j.handler(b);var c={current:a},d=f(m)(c,b),e=f(l)(c),g=f(j.changes)(a),h=f(k)(c);return[function(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(a){return a};return j.selector(a),a(c.current)},function(a){(function(){for(var a=arguments.length,b=Array(a),c=0;c<a;c++)b[c]=arguments[c];return function(a){return b.reduceRight(function(a,b){return b(a)},a)}})(d,e,g,h)(a)}]}}}},14260:a=>{"use strict";var{g:b,__dirname:c}=a;{a.s({default:()=>b});let b={paths:{vs:"https://cdn.jsdelivr.net/npm/monaco-editor@0.52.2/min/vs"}}}},45287:a=>{"use strict";var{g:b,__dirname:c}=a;{a.s({default:()=>b});let b=function(a){return function b(){for(var c=this,d=arguments.length,e=Array(d),f=0;f<d;f++)e[f]=arguments[f];return e.length>=a.length?a.apply(this,e):function(){for(var a=arguments.length,d=Array(a),f=0;f<a;f++)d[f]=arguments[f];return b.apply(c,[].concat(e,d))}}}}},82863:a=>{"use strict";var{g:b,__dirname:c}=a;{a.s({default:()=>b});let b=function(a){return({}).toString.call(a).includes("Object")}}},72859:a=>{"use strict";var{g:b,__dirname:c}=a;{a.s({default:()=>b,errorHandler:()=>g,errorMessages:()=>f});var d=a.i(45287),e=a.i(82863),f={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 "},g=(0,d.default)(function(a,b){throw Error(a[b]||a.default)})(f);let b={config:function(a){return(a||g("configIsRequired"),(0,e.default)(a)||g("configType"),a.urls)?(console.warn(f.deprecation),{paths:{vs:a.urls.monacoBase}}):a}}}},87871:a=>{"use strict";var{g:b,__dirname:c}=a;{a.s({default:()=>b});let b=function(){for(var a=arguments.length,b=Array(a),c=0;c<a;c++)b[c]=arguments[c];return function(a){return b.reduceRight(function(a,b){return b(a)},a)}}}},28251:a=>{"use strict";var{g:b,__dirname:c}=a;{a.s({default:()=>b});var d=a.i(84172);let b=function a(b,c){return Object.keys(c).forEach(function(d){c[d]instanceof Object&&b[d]&&Object.assign(c[d],a(b[d],c[d]))}),(0,d.objectSpread2)((0,d.objectSpread2)({},b),c)}}},83021:a=>{"use strict";var{g:b,__dirname:c}=a;{a.s({CANCELATION_MESSAGE:()=>d,default:()=>b});var d={type:"cancelation",msg:"operation is manually canceled"};let b=function(a){var b=!1,c=new Promise(function(c,e){a.then(function(a){return b?e(d):c(a)}),a.catch(e)});return c.cancel=function(){return b=!0},c}}},75092:a=>{"use strict";var{g:b,__dirname:c}=a;{a.s({default:()=>b});var d=a.i(84172),e=a.i(21782),f=a.i(14260),g=a.i(72859),h=a.i(87871),i=a.i(28251),j=a.i(83021),k=e.default.create({config:f.default,isInitialized:!1,resolve:null,reject:null,monaco:null}),l=(0,d.slicedToArray)(k,2),m=l[0],n=l[1];function o(a){return document.body.appendChild(a)}function p(a){var b,c,d=m(function(a){return{config:a.config,reject:a.reject}}),e=(b="".concat(d.config.paths.vs,"/loader.js"),c=document.createElement("script"),b&&(c.src=b),c);return e.onload=function(){return a()},e.onerror=d.reject,e}function q(){var a=m(function(a){return{config:a.config,resolve:a.resolve,reject:a.reject}}),b=window.require;b.config(a.config),b(["vs/editor/editor.main"],function(b){r(b),a.resolve(b)},function(b){a.reject(b)})}function r(a){m().monaco||n({monaco:a})}var s=new Promise(function(a,b){return n({resolve:a,reject:b})});let b={config:function(a){var b=g.default.config(a),c=b.monaco,e=(0,d.objectWithoutProperties)(b,["monaco"]);n(function(a){return{config:(0,i.default)(a.config,e),monaco:c}})},init:function(){var a=m(function(a){return{monaco:a.monaco,isInitialized:a.isInitialized,resolve:a.resolve}});if(!a.isInitialized){if(n({isInitialized:!0}),a.monaco)return a.resolve(a.monaco),(0,j.default)(s);if(window.monaco&&window.monaco.editor)return r(window.monaco),a.resolve(window.monaco),(0,j.default)(s);(0,h.default)(o,p)(q)}return(0,j.default)(s)},__getMonacoInstance:function(){return m(function(a){return a.monaco})}}}},74403:a=>{"use strict";var{g:b,__dirname:c}=a;a.s({}),a.i(75092)},30132:a=>{"use strict";var{g:b,__dirname:c}=a;a.s({}),a.i(75092),a.i(74403)},22027:a=>{"use strict";var{g:b,__dirname:c}=a;a.s({DiffEditor:()=>o,Editor:()=>s,default:()=>t,useMonaco:()=>p}),a.i(30132);var d=a.i(57560),e=a.i(75092),f={wrapper:{display:"flex",position:"relative",textAlign:"initial"},fullWidth:{width:"100%"},hide:{display:"none"}},g={container:{display:"flex",height:"100%",width:"100%",justifyContent:"center",alignItems:"center"}},h=function({children:a}){return d.default.createElement("div",{style:g.container},a)},i=(0,d.memo)(function({width:a,height:b,isEditorReady:c,loading:e,_ref:g,className:i,wrapperProps:j}){return d.default.createElement("section",{style:{...f.wrapper,width:a,height:b},...j},!c&&d.default.createElement(h,null,e),d.default.createElement("div",{ref:g,style:{...f.fullWidth,...!c&&f.hide},className:i}))}),j=function(a){(0,d.useEffect)(a,[])},k=function(a,b,c=!0){let e=(0,d.useRef)(!0);(0,d.useEffect)(e.current||!c?()=>{e.current=!1}:a,b)};function l(){}function m(a,b,c,d){var e,f,g,h,i,j;return e=a,f=d,e.editor.getModel(n(e,f))||(g=a,h=b,i=c,j=d,g.editor.createModel(h,i,j?n(g,j):void 0))}function n(a,b){return a.Uri.parse(b)}var o=(0,d.memo)(function({original:a,modified:b,language:c,originalLanguage:f,modifiedLanguage:g,originalModelPath:h,modifiedModelPath:n,keepCurrentOriginalModel:o=!1,keepCurrentModifiedModel:p=!1,theme:q="light",loading:r="Loading...",options:s={},height:t="100%",width:u="100%",className:v,wrapperProps:w={},beforeMount:x=l,onMount:y=l}){let[z,A]=(0,d.useState)(!1),[B,C]=(0,d.useState)(!0),D=(0,d.useRef)(null),E=(0,d.useRef)(null),F=(0,d.useRef)(null),G=(0,d.useRef)(y),H=(0,d.useRef)(x),I=(0,d.useRef)(!1);j(()=>{let a=e.default.init();return a.then(a=>(E.current=a)&&C(!1)).catch(a=>a?.type!=="cancelation"&&console.error("Monaco initialization: error:",a)),()=>{let b;return D.current?(b=D.current?.getModel(),void(o||b?.original?.dispose(),p||b?.modified?.dispose(),D.current?.dispose())):a.cancel()}}),k(()=>{if(D.current&&E.current){let b=D.current.getOriginalEditor(),d=m(E.current,a||"",f||c||"text",h||"");d!==b.getModel()&&b.setModel(d)}},[h],z),k(()=>{if(D.current&&E.current){let a=D.current.getModifiedEditor(),d=m(E.current,b||"",g||c||"text",n||"");d!==a.getModel()&&a.setModel(d)}},[n],z),k(()=>{let a=D.current.getModifiedEditor();a.getOption(E.current.editor.EditorOption.readOnly)?a.setValue(b||""):b!==a.getValue()&&(a.executeEdits("",[{range:a.getModel().getFullModelRange(),text:b||"",forceMoveMarkers:!0}]),a.pushUndoStop())},[b],z),k(()=>{D.current?.getModel()?.original.setValue(a||"")},[a],z),k(()=>{let{original:a,modified:b}=D.current.getModel();E.current.editor.setModelLanguage(a,f||c||"text"),E.current.editor.setModelLanguage(b,g||c||"text")},[c,f,g],z),k(()=>{E.current?.editor.setTheme(q)},[q],z),k(()=>{D.current?.updateOptions(s)},[s],z);let J=(0,d.useCallback)(()=>{if(!E.current)return;H.current(E.current);let d=m(E.current,a||"",f||c||"text",h||""),e=m(E.current,b||"",g||c||"text",n||"");D.current?.setModel({original:d,modified:e})},[c,b,g,a,f,h,n]),K=(0,d.useCallback)(()=>{!I.current&&F.current&&(D.current=E.current.editor.createDiffEditor(F.current,{automaticLayout:!0,...s}),J(),E.current?.editor.setTheme(q),A(!0),I.current=!0)},[s,q,J]);return(0,d.useEffect)(()=>{z&&G.current(D.current,E.current)},[z]),(0,d.useEffect)(()=>{B||z||K()},[B,z,K]),d.default.createElement(i,{width:u,height:t,isEditorReady:z,loading:r,_ref:F,className:v,wrapperProps:w})}),p=function(){let[a,b]=(0,d.useState)(e.default.__getMonacoInstance());return j(()=>{let c;return a||(c=e.default.init()).then(a=>{b(a)}),()=>c?.cancel()}),a},q=function(a){let b=(0,d.useRef)();return(0,d.useEffect)(()=>{b.current=a},[a]),b.current},r=new Map,s=(0,d.memo)(function({defaultValue:a,defaultLanguage:b,defaultPath:c,value:f,language:g,path:h,theme:n="light",line:o,loading:p="Loading...",options:s={},overrideServices:t={},saveViewState:u=!0,keepCurrentModel:v=!1,width:w="100%",height:x="100%",className:y,wrapperProps:z={},beforeMount:A=l,onMount:B=l,onChange:C,onValidate:D=l}){let[E,F]=(0,d.useState)(!1),[G,H]=(0,d.useState)(!0),I=(0,d.useRef)(null),J=(0,d.useRef)(null),K=(0,d.useRef)(null),L=(0,d.useRef)(B),M=(0,d.useRef)(A),N=(0,d.useRef)(),O=(0,d.useRef)(f),P=q(h),Q=(0,d.useRef)(!1),R=(0,d.useRef)(!1);j(()=>{let a=e.default.init();return a.then(a=>(I.current=a)&&H(!1)).catch(a=>a?.type!=="cancelation"&&console.error("Monaco initialization: error:",a)),()=>J.current?void(N.current?.dispose(),v?u&&r.set(h,J.current.saveViewState()):J.current.getModel()?.dispose(),J.current.dispose()):a.cancel()}),k(()=>{let d=m(I.current,a||f||"",b||g||"",h||c||"");d!==J.current?.getModel()&&(u&&r.set(P,J.current?.saveViewState()),J.current?.setModel(d),u&&J.current?.restoreViewState(r.get(h)))},[h],E),k(()=>{J.current?.updateOptions(s)},[s],E),k(()=>{J.current&&void 0!==f&&(J.current.getOption(I.current.editor.EditorOption.readOnly)?J.current.setValue(f):f!==J.current.getValue()&&(R.current=!0,J.current.executeEdits("",[{range:J.current.getModel().getFullModelRange(),text:f,forceMoveMarkers:!0}]),J.current.pushUndoStop(),R.current=!1))},[f],E),k(()=>{let a=J.current?.getModel();a&&g&&I.current?.editor.setModelLanguage(a,g)},[g],E),k(()=>{void 0!==o&&J.current?.revealLine(o)},[o],E),k(()=>{I.current?.editor.setTheme(n)},[n],E);let S=(0,d.useCallback)(()=>{if(!(!K.current||!I.current)&&!Q.current){M.current(I.current);let d=h||c,e=m(I.current,f||a||"",b||g||"",d||"");J.current=I.current?.editor.create(K.current,{model:e,automaticLayout:!0,...s},t),u&&J.current.restoreViewState(r.get(d)),I.current.editor.setTheme(n),void 0!==o&&J.current.revealLine(o),F(!0),Q.current=!0}},[a,b,c,f,g,h,s,t,u,n,o]);return(0,d.useEffect)(()=>{E&&L.current(J.current,I.current)},[E]),(0,d.useEffect)(()=>{G||E||S()},[G,E,S]),O.current=f,(0,d.useEffect)(()=>{E&&C&&(N.current?.dispose(),N.current=J.current?.onDidChangeModelContent(a=>{R.current||C(J.current.getValue(),a)}))},[E,C]),(0,d.useEffect)(()=>{if(E){let a=I.current.editor.onDidChangeMarkers(a=>{let b=J.current.getModel()?.uri;if(b&&a.find(a=>a.path===b.path)){let a=I.current.editor.getModelMarkers({resource:b});D?.(a)}});return()=>{a?.dispose()}}return()=>{}},[E,D]),d.default.createElement(i,{width:w,height:x,isEditorReady:E,loading:p,_ref:K,className:y,wrapperProps:z})}),t=s},28783:a=>{"use strict";var{g:b,__dirname:c}=a;a.s({}),a.i(30132),a.i(57560),a.i(22027)},82587:a=>{"use strict";var{g:b,__dirname:c}=a;a.s({default:()=>i});var d=a.i(99559),e=a.i(57560),f=a.i(60284),g=a.i(94688),h=a.i(50923);function i({className:a,currentProjectName:b,currentEnvName:c}){let[i,j]=(0,e.useState)([]),[k,l]=(0,e.useState)(!0),[m,n]=(0,e.useState)(null),[o,p]=(0,e.useState)(new Set),[q,r]=(0,e.useState)(""),[s,t]=(0,e.useState)(!1),[u,v]=(0,e.useState)(""),[w,x]=(0,e.useState)(!1),[y,z]=(0,e.useState)(null),A=(0,e.useRef)(null);(0,e.useEffect)(()=>{if(i.length>0){let a=i.find(a=>a.projectName===b&&a.envName===c);if(a&&a.subApps.length>0){let b=new Set;a.subApps.forEach(a=>{i.forEach(c=>{c.envName===a&&b.add(F(c))})}),p(b)}}},[i,b,c]);let B=async()=>{l(!0),n(null);try{let a=await fetch("/api/all-projects-envs"),b=await a.json();b.success?j(b.data):n(b.error||"获取项目环境信息失败")}catch(a){console.error("获取项目环境信息失败:",a),n("获取项目环境信息失败: 网络错误")}finally{l(!1)}};(0,e.useEffect)(()=>(B(),C(),()=>{D()}),[c]);let C=()=>{A.current&&D();let a=`microapp-table-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,b=`/api/microapp-proxy-change-stream?env=${encodeURIComponent(c)}&clientId=${encodeURIComponent(a)}`;console.log(`[SSE] 建立连接到: ${b}`),z(null);try{let a=new EventSource(b);A.current=a,a.onopen=()=>{console.log(`[SSE] 连接已建立,环境: ${c}`),x(!0),z(null)},a.onmessage=a=>{try{let b=JSON.parse(a.data);E(b)}catch(a){console.error("[SSE] 解析消息失败:",a)}},a.onerror=()=>{console.error(`[SSE] 连接错误,环境: ${c}`),x(!1),z("实时推送连接断开"),setTimeout(()=>{A.current&&A.current.readyState!==EventSource.CLOSED||(console.log("[SSE] 尝试重新连接..."),C())},3e3)}}catch(a){console.error("[SSE] 建立连接失败:",a),z("无法建立实时推送连接")}},D=()=>{A.current&&(console.log("[SSE] 关闭连接"),A.current.close(),A.current=null,x(!1))},E=a=>{switch(console.log("[SSE] 收到消息:",a),a.type){case"connection-established":console.log(`[SSE] 连接确认: ${a.message}`),x(!0),z(null);break;case"microapp-proxy-config-change":if(console.log(`[SSE] 配置变化通知: 环境=${a.envName}`),console.log(`[SSE] 变化详情:`,a.changes),a.changes){let{added:b,removed:c}=a.changes,d="";b.length>0&&(d+=`新增: ${b.join(", ")}`),c.length>0&&(d&&(d+="; "),d+=`移除: ${c.join(", ")}`),v(`配置已更新 (${d})`)}else v("配置已更新");B(),setTimeout(()=>v(""),3e3);break;case"heartbeat":x(!0),z(null);break;default:console.log("[SSE] 未知消息类型:",a.type)}},F=a=>`${a.projectName}-${a.envName}`,G=q.trim()?i.filter(a=>a.projectName.toLowerCase().includes(q.toLowerCase())||a.envName.toLowerCase().includes(q.toLowerCase())||a.host.toLowerCase().includes(q.toLowerCase())):i,H=(a,b)=>{let c=new Set(o);b?c.add(a):c.delete(a),p(c)},I=a=>{a?p(new Set(G.map(a=>F(a)))):p(new Set)},J=async()=>{t(!0),v("");try{let a=Array.from(o).map(a=>{let b=i.find(b=>F(b)===a);return b?b.envName:""}).filter(a=>""!==a),d=[...new Set(a)],e=await fetch("/api/microapp-proxy-config",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:b,envName:c,selectedItems:d})}),f=await e.json();f.success?(v(f.message||"保存成功"),await B()):v(`保存失败: ${f.error}`)}catch(a){console.error("保存MicroApp代理配置失败:",a),v("保存失败: 网络错误")}finally{t(!1),setTimeout(()=>{v("")},5e3)}},K=o.size,L=G.length>0&&G.every(a=>o.has(F(a))),M=G.some(a=>o.has(F(a)));return k?(0,d.jsxs)("div",{className:`p-6 bg-gray-50 rounded-lg ${a}`,children:[(0,d.jsx)("h4",{className:"text-md font-medium mb-4",children:"MicroApp代理配置"}),(0,d.jsx)("div",{className:"text-center py-8",children:(0,d.jsx)("p",{className:"text-gray-500",children:"加载中..."})})]}):m?(0,d.jsxs)("div",{className:`p-6 bg-gray-50 rounded-lg ${a}`,children:[(0,d.jsx)("h4",{className:"text-md font-medium mb-4",children:"MicroApp代理配置"}),(0,d.jsxs)("div",{className:"text-center py-8",children:[(0,d.jsx)("p",{className:"text-red-500",children:m}),(0,d.jsx)(h.Button,{variant:"outline",size:"sm",onClick:B,className:"mt-2",children:"重试"})]})]}):(0,d.jsxs)("div",{className:`p-6 bg-gray-50 rounded-lg ${a}`,children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h4",{className:"text-md font-medium",children:"MicroApp代理配置"}),(0,d.jsxs)("p",{className:"text-xs text-gray-500 mt-1",children:["为 ",b," - ",c," 环境配置微应用代理"]})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsxs)("div",{className:"flex items-center gap-1",children:[(0,d.jsx)("div",{className:`w-2 h-2 rounded-full ${w?"bg-green-500":"bg-red-500"}`,title:w?"实时推送已连接":"实时推送断开"}),(0,d.jsx)("span",{className:"text-xs text-gray-500",children:w?"实时":"离线"})]}),(u||y)&&(0,d.jsx)("span",{className:`text-sm max-w-xs ${u&&u.includes("失败")||y?"text-red-600":u&&u.includes("但有")?"text-yellow-600":"text-green-600"}`,title:u||y||"",children:u||y}),(0,d.jsx)(h.Button,{variant:"outline",size:"sm",onClick:B,disabled:s,children:"刷新"}),(0,d.jsx)(h.Button,{variant:"default",size:"sm",onClick:J,disabled:s,children:s?"保存中...":"保存配置"})]})]}),(0,d.jsxs)("div",{className:"space-y-3 mb-4",children:[(0,d.jsx)("div",{className:"flex items-center gap-2",children:(0,d.jsxs)("div",{className:"relative flex-1 max-w-md",children:[(0,d.jsx)(g.Input,{placeholder:"搜索项目名称、环境名称或Host...",value:q,onChange:a=>r(a.target.value),className:"pr-8"}),q&&(0,d.jsx)(h.Button,{variant:"ghost",size:"sm",onClick:()=>{r("")},className:"absolute right-1 top-1/2 transform -translate-y-1/2 h-6 w-6 p-0 hover:bg-gray-100",children:"×"})]})}),(0,d.jsxs)("div",{className:"flex items-center justify-between text-sm text-gray-600",children:[(0,d.jsxs)("div",{className:"flex items-center gap-4",children:[(0,d.jsxs)("span",{children:["显示 ",G.length," 个环境配置",q&&` (搜索: "${q}")`]}),K>0&&(0,d.jsxs)("span",{className:"text-blue-600 font-medium",children:["已选择 ",K," 项"]})]}),K>0&&(0,d.jsx)(h.Button,{variant:"outline",size:"sm",onClick:()=>{p(new Set)},children:"清空选择"})]})]}),G.length>0?(0,d.jsx)("div",{className:"border rounded-md",children:(0,d.jsxs)(f.Table,{children:[(0,d.jsx)(f.TableHeader,{children:(0,d.jsxs)(f.TableRow,{children:[(0,d.jsx)(f.TableHead,{className:"w-12",children:(0,d.jsx)("input",{type:"checkbox",checked:L,onChange:a=>I(a.target.checked),ref:a=>{a&&(a.indeterminate=M&&!L)},className:"rounded border-gray-300"})}),(0,d.jsx)(f.TableHead,{children:"环境名称"}),(0,d.jsx)(f.TableHead,{children:"项目名称"}),(0,d.jsx)(f.TableHead,{children:"Host地址"}),(0,d.jsx)(f.TableHead,{children:"当前代理"})]})}),(0,d.jsx)(f.TableBody,{children:G.map(a=>{let b=F(a),c=o.has(b);return(0,d.jsxs)(f.TableRow,{children:[(0,d.jsx)(f.TableCell,{children:(0,d.jsx)("input",{type:"checkbox",checked:c,onChange:a=>H(b,a.target.checked),className:"rounded border-gray-300"})}),(0,d.jsx)(f.TableCell,{children:(0,d.jsx)("span",{className:"px-2 py-1 rounded text-xs font-medium bg-blue-100 text-blue-800",children:a.envName})}),(0,d.jsx)(f.TableCell,{className:"font-medium",children:a.projectName}),(0,d.jsx)(f.TableCell,{className:"font-mono text-sm",children:a.host}),(0,d.jsxs)(f.TableCell,{className:"text-sm text-gray-600",children:[a.currentProxy,a.proxyEnv[a.currentProxy]&&(0,d.jsx)("div",{className:"text-xs text-gray-500",children:a.proxyEnv[a.currentProxy]})]})]},b)})})]})}):(0,d.jsx)("div",{className:"text-center py-8",children:(0,d.jsx)("p",{className:"text-gray-500",children:q?"没有找到匹配的环境配置":"暂无环境配置"})}),K>0&&(0,d.jsx)("div",{className:"mt-4 p-3 bg-blue-50 rounded-md",children:(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsxs)("span",{className:"text-sm text-blue-700",children:["已选择 ",K," 个环境配置将作为微应用代理"]}),(0,d.jsx)("span",{className:"text-xs text-blue-600",children:"点击上方“保存配置”按钮保存设置"})]})})]})}},23936:function(a){var{g:b,__dirname:c,m:d,e:e}=a},22842:function(a){var{g:b,__dirname:c,m:d,e:e}=a;a.r(23936);var f=a.r(57560),g=f&&"object"==typeof f&&"default"in f?f:{default:f},h="undefined"!=typeof process&&process.env&&!0,i=function(a){return"[object String]"===Object.prototype.toString.call(a)},j=function(){function a(a){var b=void 0===a?{}:a,c=b.name,d=void 0===c?"stylesheet":c,e=b.optimizeForSpeed,f=void 0===e?h:e;k(i(d),"`name` must be a string"),this._name=d,this._deletedRulePlaceholder="#"+d+"-deleted-rule____{}",k("boolean"==typeof f,"`optimizeForSpeed` must be a boolean"),this._optimizeForSpeed=f,this._serverSheet=void 0,this._tags=[],this._injected=!1,this._rulesCount=0;var g="undefined"!=typeof window&&document.querySelector('meta[property="csp-nonce"]');this._nonce=g?g.getAttribute("content"):null}var b,c=a.prototype;return c.setOptimizeForSpeed=function(a){k("boolean"==typeof a,"`setOptimizeForSpeed` accepts a boolean"),k(0===this._rulesCount,"optimizeForSpeed cannot be when rules have already been inserted"),this.flush(),this._optimizeForSpeed=a,this.inject()},c.isOptimizeForSpeed=function(){return this._optimizeForSpeed},c.inject=function(){var a=this;if(k(!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||(h||console.warn("StyleSheet: optimizeForSpeed mode not supported falling back to standard mode."),this.flush(),this._injected=!0);return}this._serverSheet={cssRules:[],insertRule:function(b,c){return"number"==typeof c?a._serverSheet.cssRules[c]={cssText:b}:a._serverSheet.cssRules.push({cssText:b}),c},deleteRule:function(b){a._serverSheet.cssRules[b]=null}}},c.getSheetForTag=function(a){if(a.sheet)return a.sheet;for(var b=0;b<document.styleSheets.length;b++)if(document.styleSheets[b].ownerNode===a)return document.styleSheets[b]},c.getSheet=function(){return this.getSheetForTag(this._tags[this._tags.length-1])},c.insertRule=function(a,b){if(k(i(a),"`insertRule` accepts only strings"),"undefined"==typeof window)return"number"!=typeof b&&(b=this._serverSheet.cssRules.length),this._serverSheet.insertRule(a,b),this._rulesCount++;if(this._optimizeForSpeed){var c=this.getSheet();"number"!=typeof b&&(b=c.cssRules.length);try{c.insertRule(a,b)}catch(b){return h||console.warn("StyleSheet: illegal rule: \n\n"+a+"\n\nSee https://stackoverflow.com/q/20007992 for more info"),-1}}else{var d=this._tags[b];this._tags.push(this.makeStyleTag(this._name,a,d))}return this._rulesCount++},c.replaceRule=function(a,b){if(this._optimizeForSpeed||"undefined"==typeof window){var c="undefined"!=typeof window?this.getSheet():this._serverSheet;if(b.trim()||(b=this._deletedRulePlaceholder),!c.cssRules[a])return a;c.deleteRule(a);try{c.insertRule(b,a)}catch(d){h||console.warn("StyleSheet: illegal rule: \n\n"+b+"\n\nSee https://stackoverflow.com/q/20007992 for more info"),c.insertRule(this._deletedRulePlaceholder,a)}}else{var d=this._tags[a];k(d,"old rule at index `"+a+"` not found"),d.textContent=b}return a},c.deleteRule=function(a){if("undefined"==typeof window)return void this._serverSheet.deleteRule(a);if(this._optimizeForSpeed)this.replaceRule(a,"");else{var b=this._tags[a];k(b,"rule at index `"+a+"` not found"),b.parentNode.removeChild(b),this._tags[a]=null}},c.flush=function(){this._injected=!1,this._rulesCount=0,"undefined"!=typeof window?(this._tags.forEach(function(a){return a&&a.parentNode.removeChild(a)}),this._tags=[]):this._serverSheet.cssRules=[]},c.cssRules=function(){var a=this;return"undefined"==typeof window?this._serverSheet.cssRules:this._tags.reduce(function(b,c){return c?b=b.concat(Array.prototype.map.call(a.getSheetForTag(c).cssRules,function(b){return b.cssText===a._deletedRulePlaceholder?null:b})):b.push(null),b},[])},c.makeStyleTag=function(a,b,c){b&&k(i(b),"makeStyleTag accepts only strings as second parameter");var d=document.createElement("style");this._nonce&&d.setAttribute("nonce",this._nonce),d.type="text/css",d.setAttribute("data-"+a,""),b&&d.appendChild(document.createTextNode(b));var e=document.head||document.getElementsByTagName("head")[0];return c?e.insertBefore(d,c):e.appendChild(d),d},b=[{key:"length",get:function(){return this._rulesCount}}],function(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}(a.prototype,b),a}();function k(a,b){if(!a)throw Error("StyleSheet: "+b+".")}var l=function(a){for(var b=5381,c=a.length;c;)b=33*b^a.charCodeAt(--c);return b>>>0},m={};function n(a,b){if(!b)return"jsx-"+a;var c=String(b),d=a+c;return m[d]||(m[d]="jsx-"+l(a+"-"+c)),m[d]}function o(a,b){"undefined"==typeof window&&(b=b.replace(/\/style/gi,"\\/style"));var c=a+b;return m[c]||(m[c]=b.replace(/__jsx-style-dynamic-selector/g,a)),m[c]}var p=function(){function a(a){var b=void 0===a?{}:a,c=b.styleSheet,d=void 0===c?null:c,e=b.optimizeForSpeed,f=void 0!==e&&e;this._sheet=d||new j({name:"styled-jsx",optimizeForSpeed:f}),this._sheet.inject(),d&&"boolean"==typeof f&&(this._sheet.setOptimizeForSpeed(f),this._optimizeForSpeed=this._sheet.isOptimizeForSpeed()),this._fromServer=void 0,this._indices={},this._instancesCounts={}}var b=a.prototype;return b.add=function(a){var b=this;void 0===this._optimizeForSpeed&&(this._optimizeForSpeed=Array.isArray(a.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(a,b){return a[b]=0,a},{}));var c=this.getIdAndRules(a),d=c.styleId,e=c.rules;if(d in this._instancesCounts){this._instancesCounts[d]+=1;return}var f=e.map(function(a){return b._sheet.insertRule(a)}).filter(function(a){return -1!==a});this._indices[d]=f,this._instancesCounts[d]=1},b.remove=function(a){var b=this,c=this.getIdAndRules(a).styleId;if(function(a,b){if(!a)throw Error("StyleSheetRegistry: "+b+".")}(c in this._instancesCounts,"styleId: `"+c+"` not found"),this._instancesCounts[c]-=1,this._instancesCounts[c]<1){var d=this._fromServer&&this._fromServer[c];d?(d.parentNode.removeChild(d),delete this._fromServer[c]):(this._indices[c].forEach(function(a){return b._sheet.deleteRule(a)}),delete this._indices[c]),delete this._instancesCounts[c]}},b.update=function(a,b){this.add(b),this.remove(a)},b.flush=function(){this._sheet.flush(),this._sheet.inject(),this._fromServer=void 0,this._indices={},this._instancesCounts={}},b.cssRules=function(){var a=this,b=this._fromServer?Object.keys(this._fromServer).map(function(b){return[b,a._fromServer[b]]}):[],c=this._sheet.cssRules();return b.concat(Object.keys(this._indices).map(function(b){return[b,a._indices[b].map(function(a){return c[a].cssText}).join(a._optimizeForSpeed?"":"\n")]}).filter(function(a){return!!a[1]}))},b.styles=function(a){var b,c;return b=this.cssRules(),void 0===(c=a)&&(c={}),b.map(function(a){var b=a[0],d=a[1];return g.default.createElement("style",{id:"__"+b,key:"__"+b,nonce:c.nonce?c.nonce:void 0,dangerouslySetInnerHTML:{__html:d}})})},b.getIdAndRules=function(a){var b=a.children,c=a.dynamic,d=a.id;if(c){var e=n(d,c);return{styleId:e,rules:Array.isArray(b)?b.map(function(a){return o(e,a)}):[o(e,b)]}}return{styleId:n(d),rules:Array.isArray(b)?b:[b]}},b.selectFromServer=function(){return Array.prototype.slice.call(document.querySelectorAll('[id^="__jsx-"]')).reduce(function(a,b){return a[b.id.slice(2)]=b,a},{})},a}(),q=f.createContext(null);function r(){return new p}function s(){return f.useContext(q)}q.displayName="StyleSheetContext";var t=g.default.useInsertionEffect||g.default.useLayoutEffect,u="undefined"!=typeof window?r():void 0;function v(a){var b=u||s();return b&&("undefined"==typeof window?b.add(a):t(function(){return b.add(a),function(){b.remove(a)}},[a.id,String(a.dynamic)])),null}v.dynamic=function(a){return a.map(function(a){return n(a[0],a[1])}).join(" ")},e.StyleRegistry=function(a){var b=a.registry,c=a.children,d=f.useContext(q),e=f.useState(function(){return d||b||r()})[0];return g.default.createElement(q.Provider,{value:e},c)},e.createStyleRegistry=r,e.style=v,e.useStyleRegistry=s},62012:function(a){var{g:b,__dirname:c,m:d,e:e}=a;d.exports=a.r(22842).style},55441:a=>{"use strict";var{g:b,__dirname:c}=a;a.s({default:()=>g});var d=a.i(99559),e=a.i(62012),f=a.i(57560);function g({logs:a}){let b=(0,f.useRef)(null),c=(0,f.useRef)(!0),g=a=>a.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]"),h=()=>{if(!b.current)return!0;let{scrollTop:a,scrollHeight:c,clientHeight:d}=b.current;return c-a-d<100},i=()=>{b.current&&c.current&&(b.current.scrollTop=b.current.scrollHeight)};return(0,f.useEffect)(()=>{setTimeout(i,10)},[a]),(0,d.jsxs)("div",{ref:b,onScroll:()=>{c.current=h()},style:{scrollBehavior:"smooth",maxHeight:"100%"},className:"jsx-b464fb0f479e34f5 h-full w-full overflow-y-auto overflow-x-hidden p-4 custom-scrollbar",children:[(0,d.jsx)(e.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,d.jsx)("div",{className:"jsx-b464fb0f479e34f5 space-y-0.5",children:a.length>0?a.map((a,b)=>{let c=g(a);if(!c.trim())return null;let e=a.includes("[STDERR]"),f=a.includes("[SYSTEM]"),h=c.match(/^\[([\d-T:.Z]+)\]/)?.[1],i=c.replace(/^\[[\d-T:.Z]+\]\s*/,"");return(0,d.jsxs)("div",{className:`jsx-b464fb0f479e34f5 font-mono text-xs leading-5 ${e?"text-red-400":f?"text-yellow-400":"text-gray-100"}`,children:[h&&(0,d.jsxs)("span",{className:"jsx-b464fb0f479e34f5 text-gray-500 mr-2",children:["[",new Date(h).toLocaleTimeString("zh-CN"),"]"]}),(0,d.jsx)("span",{className:"jsx-b464fb0f479e34f5 whitespace-pre-wrap break-all",children:i})]},b)}):(0,d.jsx)("div",{className:"jsx-b464fb0f479e34f5 text-center text-gray-500 mt-8",children:"等待日志输出..."})})]})}},64708:a=>{"use strict";var{g:b,__dirname:c}=a;a.s({default:()=>g});var d=a.i(99559),e=a.i(57560),f=a.i(50923);function g({projectName:a,className:b="",compact:c=!1}){let[g,h]=(0,e.useState)(null),[i,j]=(0,e.useState)(!1),[k,l]=(0,e.useState)(null),[m,n]=(0,e.useState)(""),o=(0,e.useCallback)(async()=>{if(a){j(!0),l(null);try{let b=await fetch(`/api/current-branch?project=${encodeURIComponent(a)}`),c=await b.json();c.success?(h(c.data),n(new Date().toLocaleTimeString("zh-CN",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"}))):l(c.error||"获取分支信息失败")}catch(a){l("网络请求失败"),console.error("获取分支信息失败:",a)}finally{j(!1)}}},[a]);(0,e.useEffect)(()=>{o()},[o]),(0,e.useEffect)(()=>{if(!a)return;let b=setInterval(()=>{o()},c?15e3:3e4);return()=>clearInterval(b)},[a,o,c]);let p=a=>0===a?"text-gray-500":"text-orange-600",q=()=>{if(!g)return null;let{ahead:a,behind:b}=g.status;return a>0&&b>0?(0,d.jsx)("span",{className:"text-yellow-500 text-xs",children:"↕"}):a>0?(0,d.jsx)("span",{className:"text-green-500 text-xs",children:"↑"}):b>0?(0,d.jsx)("span",{className:"text-red-500 text-xs",children:"↓"}):(0,d.jsx)("span",{className:"text-gray-400 text-xs",children:"✓"})};return i&&!g?c?(0,d.jsxs)("div",{className:`flex items-center gap-2 px-3 py-1 bg-gray-50 rounded-md ${b}`,children:[(0,d.jsx)("div",{className:"animate-spin w-3 h-3 border-2 border-blue-500 border-t-transparent rounded-full"}),(0,d.jsx)("span",{className:"text-xs text-gray-500",children:"加载中..."})]}):(0,d.jsxs)("div",{className:`bg-white rounded-lg shadow-sm border p-4 ${b}`,children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,d.jsx)("h3",{className:"text-sm font-semibold text-gray-700",children:"Git 分支信息"}),(0,d.jsx)("div",{className:"animate-spin w-4 h-4 border-2 border-blue-500 border-t-transparent rounded-full"})]}),(0,d.jsx)("div",{className:"text-sm text-gray-500",children:"正在加载分支信息..."})]}):k?c?(0,d.jsxs)("div",{className:`flex items-center gap-2 px-3 py-1 bg-red-50 rounded-md ${b}`,children:[(0,d.jsx)("span",{className:"text-xs text-red-500",children:"分支信息错误"}),(0,d.jsx)(f.Button,{variant:"ghost",size:"sm",onClick:o,disabled:i,className:"h-5 w-5 p-0 text-red-500 hover:bg-red-100",children:"↻"})]}):(0,d.jsxs)("div",{className:`bg-white rounded-lg shadow-sm border p-4 ${b}`,children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,d.jsx)("h3",{className:"text-sm font-semibold text-gray-700",children:"Git 分支信息"}),(0,d.jsx)(f.Button,{variant:"outline",size:"sm",onClick:o,disabled:i,className:"h-6 px-2 text-xs",children:i?"刷新中...":"重试"})]}),(0,d.jsx)("div",{className:"text-sm text-red-500 bg-red-50 p-2 rounded",children:k})]}):g?c?(0,d.jsxs)("div",{className:`flex items-center gap-2 px-3 py-1 bg-blue-50 border border-blue-200 rounded-md ${b}`,children:[(0,d.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,d.jsx)("polyline",{points:"6,3 6,15"}),(0,d.jsx)("circle",{cx:"18",cy:"6",r:"3"}),(0,d.jsx)("circle",{cx:"6",cy:"18",r:"3"}),(0,d.jsx)("path",{d:"m18,9a9,9 0 0,1-9,9"})]}),(0,d.jsx)("span",{className:"text-sm font-medium text-blue-800",children:g.currentBranch}),q(),(0,d.jsx)(f.Button,{variant:"ghost",size:"sm",onClick:o,disabled:i,className:"h-5 w-5 p-0 text-blue-600 hover:bg-blue-100",title:"刷新分支信息",children:i?(0,d.jsx)("div",{className:"animate-spin w-3 h-3 border-2 border-blue-600 border-t-transparent rounded-full"}):"↻"})]}):(0,d.jsxs)("div",{className:`bg-white rounded-lg shadow-sm border p-4 ${b}`,children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,d.jsx)("h3",{className:"text-sm font-semibold text-gray-700",children:"Git 分支信息"}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[m&&(0,d.jsx)("span",{className:"text-xs text-gray-400",children:m}),(0,d.jsx)(f.Button,{variant:"outline",size:"sm",onClick:o,disabled:i,className:"h-6 px-2 text-xs",children:i?"刷新中...":"刷新"})]})]}),(0,d.jsxs)("div",{className:"space-y-3",children:[(0,d.jsx)("div",{className:"flex items-center gap-2",children:(0,d.jsxs)("div",{className:"flex items-center gap-1",children:[(0,d.jsx)("span",{className:"text-xs text-gray-500",children:"分支:"}),(0,d.jsx)("span",{className:"text-sm font-medium text-blue-600 bg-blue-50 px-2 py-1 rounded",children:g.currentBranch}),q()]})}),(0,d.jsxs)("div",{className:"bg-gray-50 p-3 rounded text-xs space-y-1",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"text-gray-500",children:"提交:"}),(0,d.jsx)("code",{className:"bg-gray-200 px-1 rounded font-mono text-xs",children:g.lastCommit.hash})]}),(0,d.jsx)("div",{className:"text-gray-700 font-medium line-clamp-2",children:g.lastCommit.message}),(0,d.jsxs)("div",{className:"flex items-center justify-between text-gray-500",children:[(0,d.jsx)("span",{children:g.lastCommit.author}),(0,d.jsx)("span",{children:g.lastCommit.date})]})]}),(0,d.jsxs)("div",{className:"grid grid-cols-2 gap-2 text-xs",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsx)("span",{className:"text-gray-500",children:"领先:"}),(0,d.jsx)("span",{className:p(g.status.ahead),children:g.status.ahead})]}),(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsx)("span",{className:"text-gray-500",children:"落后:"}),(0,d.jsx)("span",{className:p(g.status.behind),children:g.status.behind})]}),(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsx)("span",{className:"text-gray-500",children:"已修改:"}),(0,d.jsx)("span",{className:p(g.status.modified),children:g.status.modified})]}),(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsx)("span",{className:"text-gray-500",children:"已暂存:"}),(0,d.jsx)("span",{className:p(g.status.staged),children:g.status.staged})]}),(0,d.jsxs)("div",{className:"flex items-center justify-between col-span-2",children:[(0,d.jsx)("span",{className:"text-gray-500",children:"未跟踪:"}),(0,d.jsx)("span",{className:p(g.status.untracked),children:g.status.untracked})]})]}),(g.status.ahead>0||g.status.behind>0)&&(0,d.jsxs)("div",{className:"text-xs p-2 rounded bg-yellow-50 border border-yellow-200",children:[g.status.ahead>0&&g.status.behind>0&&(0,d.jsxs)("span",{className:"text-yellow-700",children:["分支与远程不同步,有 ",g.status.ahead," 个本地提交,",g.status.behind," 个远程提交"]}),g.status.ahead>0&&0===g.status.behind&&(0,d.jsxs)("span",{className:"text-green-700",children:["本地领先远程 ",g.status.ahead," 个提交"]}),0===g.status.ahead&&g.status.behind>0&&(0,d.jsxs)("span",{className:"text-red-700",children:["本地落后远程 ",g.status.behind," 个提交"]})]})]})]}):c?(0,d.jsx)("div",{className:`flex items-center gap-2 px-3 py-1 bg-gray-50 rounded-md ${b}`,children:(0,d.jsx)("span",{className:"text-xs text-gray-500",children:"暂无分支信息"})}):(0,d.jsxs)("div",{className:`bg-white rounded-lg shadow-sm border p-4 ${b}`,children:[(0,d.jsx)("div",{className:"flex items-center justify-between mb-3",children:(0,d.jsx)("h3",{className:"text-sm font-semibold text-gray-700",children:"Git 分支信息"})}),(0,d.jsx)("div",{className:"text-sm text-gray-500",children:"暂无分支信息"})]})}},73426:a=>{"use strict";var{g:b,__dirname:c}=a;a.s({default:()=>u});var d=a.i(99559),e=a.i(57560),f=a.i(40490),g=a.i(50923),h=a.i(74939),i=a.i(49566),j=a.i(94688),k=a.i(58413),l=a.i(67252),m=a.i(60284),n=a.i(22529);a.i(28783);var o=a.i(22027),p=a.i(82587),q=a.i(55441),r=a.i(64708),s=function(a){return a.PENDING="pending",a.EXISTING="existing",a.CLONING="cloning",a.SUCCESS="success",a.FAILED="failed",a.RETRYING="retrying",a}(s||{});function t(){let a=(0,f.useSearchParams)(),b=(0,f.useRouter)(),c=a.get("project"),[s,t]=(0,e.useState)(null),[u,v]=(0,e.useState)(!0),[w,x]=(0,e.useState)(null),[y,z]=(0,e.useState)({}),[A,B]=(0,e.useState)({mockingIntercept:!1,mockOpen:!1}),[C,D]=(0,e.useState)(!1),[E,F]=(0,e.useState)(null),[G,H]=(0,e.useState)(!1),[I,J]=(0,e.useState)(1),[K]=(0,e.useState)(10),[L,M]=(0,e.useState)(""),[N,O]=(0,e.useState)(null),[P,Q]=(0,e.useState)(!1),[R,S]=(0,e.useState)(!1),[T,U]=(0,e.useState)(!1),[V,W]=(0,e.useState)(!0),[X,Y]=(0,e.useState)(null),[Z,$]=(0,e.useState)([]),[_,aa]=(0,e.useState)(!1),[ab,ac]=(0,e.useState)(!1),[ad,ae]=(0,e.useState)(!1),[af,ag]=(0,e.useState)({apiPath:"",method:"GET",siteName:"默认场景",mockOpen:!0}),[ah,ai]=(0,e.useState)(null),[aj,ak]=(0,e.useState)(!1),[al,am]=(0,e.useState)({open:!1,apiName:"",method:"",siteName:""}),[an,ao]=(0,e.useState)({open:!1,apiName:"",apiPath:""}),[ap,aq]=(0,e.useState)({open:!1,type:"success",message:""}),[ar,as]=(0,e.useState)(""),[at,au]=(0,e.useState)({}),[av,aw]=(0,e.useState)(!1),[ax,ay]=(0,e.useState)(""),[az,aA]=(0,e.useState)([]),aB=(0,e.useCallback)(async()=>{X&&await aD(X)},[X]),aC=(0,e.useCallback)(async a=>{P&&(a.metaKey||a.ctrlKey)&&"s"===a.key&&(a.preventDefault(),await aB())},[P,aB]);(0,e.useEffect)(()=>{if(P)return document.addEventListener("keydown",aC),()=>{document.removeEventListener("keydown",aC)}},[P,X,aC]);let aD=async a=>{try{await new Promise(a=>setTimeout(a,200));let b=a.getModel();if(b){await a.getAction("editor.action.formatDocument")?.run();let c=b.getValue();if(c&&!c.includes("\n")&&c.length>50){let d=c.replace(/\{\s*/g,"{\n ").replace(/\}\s*/g,"\n}").replace(/;\s*/g,";\n ").replace(/,\s*/g,",\n ").replace(/\n\s*\n/g,"\n").trim();d!==c&&(b.setValue(d),setTimeout(()=>{a.getAction("editor.action.formatDocument")?.run()},100))}}}catch(a){console.log("自动格式化失败:",a)}},aE=()=>{b.push("/initialization")},aF=async()=>{aa(!0);try{let a=await fetch("/api/check-workspace"),b=await a.json();if(b.success&&b.projects){let a=b.projects.map(a=>({name:a.name,status:a.status,message:a.message}));$(a)}else console.error("获取项目列表失败:",b.error),$([])}catch(a){console.error("获取项目列表失败:",a),$([])}finally{aa(!1)}},aG=async()=>{if(c){D(!0);try{let a=await fetch("/api/open-project",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:c})}),b=await a.json();b.success||(console.error("打开项目失败:",b.error),a8("error",`打开项目失败: ${b.error}`))}catch(a){console.error("打开项目失败:",a),a8("error","打开项目失败: 网络错误")}finally{D(!1)}}};(0,e.useEffect)(()=>{if(!c){x("项目名称缺失"),v(!1);return}(async()=>{try{let a=await fetch(`/api/project-config?project=${encodeURIComponent(c)}`),b=await a.json();if(b.success){t(b.data);let a={};Object.keys(b.data.envs).forEach(c=>{let d=b.data.envs[c],e="";e=d.proxyEnv[d.currentProxy]?d.proxyEnv[d.currentProxy]:d.currentProxy;let f="";f=d.proxyEnv[d.currentProxy]?d.currentProxy:"custom",a[c]={selectedProxy:e||"",selectedOption:f}}),z(a),B({mockingIntercept:b.data.mockingIntercept||!1,mockOpen:b.data.mockOpen||!1})}else x(b.error)}catch(a){x("获取项目配置失败"),console.error("获取项目配置失败:",a)}finally{v(!1)}})()},[c]);let aH=(0,e.useCallback)(async()=>{if(c){H(!0);try{let a=await fetch(`/api/mock-file?project=${encodeURIComponent(c)}`),b=await a.json();b.success?F(b.data):console.error("获取Mock数据失败:",b.error)}catch(a){console.error("获取Mock数据失败:",a)}finally{H(!1)}}},[c]);(0,e.useEffect)(()=>{if(s&&c){let a=Object.keys(s.envs),b=new URLSearchParams(window.location.search).get("tab"),c="";(c=L&&("mock"===L||a.includes(L))?L:b&&("mock"===b||a.includes(b))?b:a.length>0?a[0]:"mock")!==L&&(M(c),"mock"===c&&aH())}},[s,c,L,aH]),(0,e.useEffect)(()=>{aF()},[]);let aI=(0,e.useCallback)(async()=>{if(!c||!s)return;let a={};for(let b of Object.keys(s.envs))a[`${b}`]={loading:!0,running:!1};au(a);let b=Object.keys(s.envs).map(async a=>{try{let b=await fetch(`/api/process/status?projectName=${encodeURIComponent(c)}&envName=${encodeURIComponent(a)}`),d=await b.json();if(d.success&&d.data)return{envName:a,status:d.data}}catch(b){console.error(`获取环境 ${a} 状态失败:`,b)}return{envName:a,status:{running:!1}}}),d=await Promise.all(b),e={};d.forEach(({envName:a,status:b})=>{e[a]={running:b.running||!1,pid:b.pid,startTime:b.startTime,port:b.port,loading:!1}}),au(e)},[c,s]),aJ=async a=>{if(!c||!s)return;let b=s.envs[a];if(!b.startCommand)return void a8("error","该环境未配置启动命令");au(b=>({...b,[a]:{...b[a],loading:!0}}));try{let d=await fetch("/api/process/start",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:c,envName:a,startCommand:b.startCommand})}),e=await d.json();if(e.success)au(b=>({...b,[a]:{running:!0,pid:e.data.pid,startTime:e.data.startTime,port:e.data.port,loading:!1}}));else throw Error(e.error||"启动失败")}catch(b){console.error("启动进程失败:",b),a8("error",`启动失败: ${b instanceof Error?b.message:"未知错误"}`),au(b=>({...b,[a]:{...b[a],loading:!1}}))}},aK=async a=>{if(c){au(b=>({...b,[a]:{...b[a],loading:!0}}));try{let b=await fetch(`/api/process/start?projectName=${encodeURIComponent(c)}&envName=${encodeURIComponent(a)}`,{method:"DELETE"}),d=await b.json();if(d.success)au(b=>({...b,[a]:{running:!1,loading:!1}}));else throw Error(d.error||"停止失败")}catch(b){console.error("停止进程失败:",b),a8("error",`停止失败: ${b instanceof Error?b.message:"未知错误"}`),au(b=>({...b,[a]:{...b[a],loading:!1}}))}}},[aL,aM]=(0,e.useState)(null),aN=a=>{if(!c)return;aL&&aL.close(),aA([]);let b=new EventSource(`/api/process/logs/stream?projectName=${encodeURIComponent(c)}&envName=${encodeURIComponent(a)}`);b.onmessage=a=>{try{let b=JSON.parse(a.data);"log"===b.type?aA(a=>{let c=[...a,b.content];return c.length>1e3?c.slice(-1e3):c}):"init"===b.type?aA([b.message]):"end"===b.type&&aA(a=>[...a,`[系统] ${b.message}`])}catch(a){console.error("解析日志数据失败:",a)}},b.onerror=a=>{console.error("日志流错误:",a),b.close(),aM(null)},aM(b)},aO=()=>{aL&&(aL.close(),aM(null))},aP=a=>{ay(a),aw(!0),aN(a)},aQ=()=>{aw(!1),aA([]),ay(""),aO()};(0,e.useEffect)(()=>{if(s&&c){aI();let a=setInterval(()=>{aI()},5e3);return()=>clearInterval(a)}},[s,c,aI]);let aR=(a,b)=>{if(!s)return;let c=s.envs[a],d="";d="custom"===b?y[a]?.selectedOption==="custom"?y[a]?.selectedProxy||"":c.proxyEnv.custom||"":c.proxyEnv[b]||"",z(c=>({...c,[a]:{...c[a],selectedProxy:d,selectedOption:b,saveMessage:""}}))},aS=(a,b)=>{z(c=>({...c,[a]:{...c[a],selectedProxy:b,saveMessage:""}}))},aT=async a=>{B(b=>({...b,mockingIntercept:a,saving:!0,saveMessage:""}));try{let b=await fetch("/api/project-config",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:c,projectConfig:{mockingIntercept:a,mockOpen:A.mockOpen}})}),d=await b.json();if(d.success)t(b=>b?{...b,mockingIntercept:a}:b),B(a=>({...a,saving:!1,saveMessage:"Mock拦截配置已保存"})),setTimeout(()=>{B(a=>({...a,saveMessage:""}))},2e3);else throw Error(d.error||"保存失败")}catch(b){console.error("保存Mock拦截配置失败:",b),B(c=>({...c,mockingIntercept:!a,saving:!1,saveMessage:`保存失败: ${b instanceof Error?b.message:"未知错误"}`})),setTimeout(()=>{B(a=>({...a,saveMessage:""}))},3e3)}},aU=async a=>{B(b=>({...b,mockOpen:a,saving:!0,saveMessage:""}));try{let b=await fetch("/api/project-config",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:c,projectConfig:{mockingIntercept:A.mockingIntercept,mockOpen:a}})}),d=await b.json();if(d.success)t(b=>b?{...b,mockOpen:a}:b),B(a=>({...a,saving:!1,saveMessage:"Mock开启配置已保存"})),setTimeout(()=>{B(a=>({...a,saveMessage:""}))},2e3);else throw Error(d.error||"保存失败")}catch(b){console.error("保存Mock开启配置失败:",b),B(c=>({...c,mockOpen:!a,saving:!1,saveMessage:`保存失败: ${b instanceof Error?b.message:"未知错误"}`})),setTimeout(()=>{B(a=>({...a,saveMessage:""}))},3e3)}},aV=async a=>{if(!s||!c)return;let b=y[a]?.selectedProxy?.trim();if(!b)return void z(b=>({...b,[a]:{...b[a],saveMessage:"请先选择或填写代理地址"}}));let d=y[a]?.selectedOption,e="custom"===d;z(b=>({...b,[a]:{...b[a],saving:!0,saveMessage:""}}));try{let f={projectName:c,envName:a,newProxy:e?"custom":d||""};e&&(f.customProxyUrl=b);let g=await fetch("/api/project-config",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(f)}),h=await g.json();h.success?(t(c=>{if(!c)return c;let d={...c.envs};return d[a]={...d[a],currentProxy:h.data.currentProxy},"custom"===h.data.currentProxy&&(d[a].proxyEnv={...d[a].proxyEnv,custom:b}),{...c,envs:d}}),z(b=>({...b,[a]:{...b[a],saving:!1,saveMessage:"保存成功"}}))):z(b=>({...b,[a]:{...b[a],saving:!1,saveMessage:`保存失败: ${h.error}`}}))}catch(b){console.error("保存配置失败:",b),z(b=>({...b,[a]:{...b[a],saving:!1,saveMessage:"保存失败: 网络错误"}}))}},aW=async()=>{if(window.confirm("确定要一键关闭所有Mock吗?"))try{let a=await fetch("/api/cleanup-mock",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:c})});(await a.json()).success&&await aH()}catch(a){console.error("清空Mock配置失败:",a)}},aX=async()=>{if(window.confirm("确定要一键开启所有Mock吗?"))try{let a=await fetch("/api/open-all-mock",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:c})});(await a.json()).success&&await aH()}catch(a){console.error("清空Mock配置失败:",a)}},aY=async(a,b,d)=>{if(c)try{let e=await fetch("/api/mock-setting",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:c,apiName:a,method:b,currentSite:d})}),f=await e.json();f.success?F(c=>c?{...c,mockFiles:c.mockFiles.map(c=>c.apiName===a?{...c,methods:c.methods.map(a=>a.method===b?{...a,setting:{...a.setting,currentSite:d}}:a)}:c)}:c):(console.error("更新场景失败:",f.error),a8("error",`更新场景失败: ${f.error}`))}catch(a){console.error("更新场景失败:",a),a8("error","更新场景失败: 网络错误")}},aZ=async(a,b,d)=>{if(c){S(!0),W(!0);try{let e=await fetch(`/api/mock-file-content?project=${encodeURIComponent(c)}&apiName=${encodeURIComponent(a)}&method=${encodeURIComponent(b)}&siteName=${encodeURIComponent(d)}`),f=await e.json();f.success?(O({projectName:c,apiName:a,method:b,siteName:d,content:f.data.content}),Q(!0)):(console.error("获取文件内容失败:",f.error),a8("error",`获取文件内容失败: ${f.error}`))}catch(a){console.error("获取文件内容失败:",a),a8("error","获取文件内容失败: 网络错误")}finally{S(!1)}}},a$=async()=>{if(N){U(!0);try{let a=await fetch("/api/mock-file-content",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(N)}),b=await a.json();b.success?(Q(!1),O(null)):(console.error("保存文件失败:",b.error),a8("error",`保存文件失败: ${b.error}`))}catch(a){console.error("保存文件失败:",a),a8("error","保存文件失败: 网络错误")}finally{U(!1)}}},a_=()=>{Q(!1),O(null),W(!0)},a0=(a,b)=>{"siteName"===a&&ab||ag(c=>({...c,[a]:b}))},a1=(a,b)=>{let c=a.toUpperCase(),d=b.replace(/\//g,"_").replace(/^_/,"");switch(c){case"GET":return`const Mock = require('mockjs');
5
+ For more information, see https://radix-ui.com/primitives/docs/components/${b.docsSlug}`;return(0,d.useEffect)(()=>{a&&(document.getElementById(a)||console.error(c))},[c,a]),null},Z=({contentRef:a,descriptionId:b})=>{let c=X("DialogDescriptionWarning"),e=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${c.contentName}}.`;return(0,d.useEffect)(()=>{let c=a.current?.getAttribute("aria-describedby");b&&c&&(document.getElementById(b)||console.warn(e))},[e,a,b]),null},$=y,_=A,aa=E,ab=G,ac=K,ad=P,ae=R,af=T},76315:a=>{"use strict";var{g:b,__dirname:c}=a;{a.s({__iconNode:()=>b,default:()=>c});var d=a.i(49756);let b=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],c=(0,d.default)("x",b)}},97231:a=>{"use strict";var{g:b,__dirname:c}=a;a.s({XIcon:()=>d.default});var d=a.i(76315)},22529:a=>{"use strict";var{g:b,__dirname:c}=a;a.s({Dialog:()=>h,DialogClose:()=>k,DialogContent:()=>m,DialogDescription:()=>q,DialogFooter:()=>o,DialogHeader:()=>n,DialogOverlay:()=>l,DialogPortal:()=>j,DialogTitle:()=>p,DialogTrigger:()=>i});var d=a.i(99559),e=a.i(66067),f=a.i(97231),g=a.i(61073);function h({...a}){return(0,d.jsx)(e.Root,{"data-slot":"dialog",...a})}function i({...a}){return(0,d.jsx)(e.Trigger,{"data-slot":"dialog-trigger",...a})}function j({...a}){return(0,d.jsx)(e.Portal,{"data-slot":"dialog-portal",...a})}function k({...a}){return(0,d.jsx)(e.Close,{"data-slot":"dialog-close",...a})}function l({className:a,...b}){return(0,d.jsx)(e.Overlay,{"data-slot":"dialog-overlay",className:(0,g.cn)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",a),...b})}function m({className:a,children:b,showCloseButton:c=!0,...h}){return(0,d.jsxs)(j,{"data-slot":"dialog-portal",children:[(0,d.jsx)(l,{}),(0,d.jsxs)(e.Content,{"data-slot":"dialog-content",className:(0,g.cn)("bg-background 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 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200",a),...h,children:[b,c&&(0,d.jsxs)(e.Close,{"data-slot":"dialog-close",className:"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",children:[(0,d.jsx)(f.XIcon,{}),(0,d.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})}function n({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"dialog-header",className:(0,g.cn)("flex flex-col gap-2 text-center sm:text-left",a),...b})}function o({className:a,...b}){return(0,d.jsx)("div",{"data-slot":"dialog-footer",className:(0,g.cn)("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",a),...b})}function p({className:a,...b}){return(0,d.jsx)(e.Title,{"data-slot":"dialog-title",className:(0,g.cn)("text-lg leading-none font-semibold",a),...b})}function q({className:a,...b}){return(0,d.jsx)(e.Description,{"data-slot":"dialog-description",className:(0,g.cn)("text-muted-foreground text-sm",a),...b})}},63180:a=>{"use strict";var{g:b,__dirname:c}=a;a.s({canUseDOM:()=>d,composeEventHandlers:()=>e,getActiveElement:()=>function a(b,c=!1){let{activeElement:d}=g(b);if(!d?.nodeName)return null;if(h(d)&&d.contentDocument)return a(d.contentDocument.body,c);if(c){let a=d.getAttribute("aria-activedescendant");if(a){let b=g(d).getElementById(a);if(b)return b}}return d},getOwnerDocument:()=>g,getOwnerWindow:()=>f,isFrame:()=>h});var d=!!("undefined"!=typeof window&&window.document&&window.document.createElement);function e(a,b,{checkForDefaultPrevented:c=!0}={}){return function(d){if(a?.(d),!1===c||!d.defaultPrevented)return b?.(d)}}function f(a){if(!d)throw Error("Cannot access window outside of the DOM");return a?.ownerDocument?.defaultView??window}function g(a){if(!d)throw Error("Cannot access document outside of the DOM");return a?.ownerDocument??document}function h(a){return"IFRAME"===a.tagName}},35168:a=>{"use strict";var{g:b,__dirname:c}=a;a.s({Presence:()=>g,Root:()=>i});var d=a.i(57560),e=a.i(18982),f=a.i(73639),g=a=>{let{present:b,children:c}=a,g=function(a){var b,c;let[e,g]=(0,d.useState)(),i=(0,d.useRef)(null),j=(0,d.useRef)(a),k=(0,d.useRef)("none"),[l,m]=(b=a?"mounted":"unmounted",c={mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}},(0,d.useReducer)((a,b)=>c[a][b]??a,b));return(0,d.useEffect)(()=>{let a=h(i.current);k.current="mounted"===l?a:"none"},[l]),(0,f.useLayoutEffect)(()=>{let b=i.current,c=j.current;if(c!==a){let d=k.current,e=h(b);a?m("MOUNT"):"none"===e||b?.display==="none"?m("UNMOUNT"):c&&d!==e?m("ANIMATION_OUT"):m("UNMOUNT"),j.current=a}},[a,m]),(0,f.useLayoutEffect)(()=>{if(e){let a,b=e.ownerDocument.defaultView??window,c=c=>{let d=h(i.current).includes(CSS.escape(c.animationName));if(c.target===e&&d&&(m("ANIMATION_END"),!j.current)){let c=e.style.animationFillMode;e.style.animationFillMode="forwards",a=b.setTimeout(()=>{"forwards"===e.style.animationFillMode&&(e.style.animationFillMode=c)})}},d=a=>{a.target===e&&(k.current=h(i.current))};return e.addEventListener("animationstart",d),e.addEventListener("animationcancel",c),e.addEventListener("animationend",c),()=>{b.clearTimeout(a),e.removeEventListener("animationstart",d),e.removeEventListener("animationcancel",c),e.removeEventListener("animationend",c)}}m("ANIMATION_END")},[e,m]),{isPresent:["mounted","unmountSuspended"].includes(l),ref:(0,d.useCallback)(a=>{i.current=a?getComputedStyle(a):null,g(a)},[])}}(b),i="function"==typeof c?c({present:g.isPresent}):d.Children.only(c),j=(0,e.useComposedRefs)(g.ref,function(a){let b=Object.getOwnPropertyDescriptor(a.props,"ref")?.get,c=b&&"isReactWarning"in b&&b.isReactWarning;return c?a.ref:(c=(b=Object.getOwnPropertyDescriptor(a,"ref")?.get)&&"isReactWarning"in b&&b.isReactWarning)?a.props.ref:a.props.ref||a.ref}(i));return"function"==typeof c||g.isPresent?(0,d.cloneElement)(i,{ref:j}):null};function h(a){return a?.animationName||"none"}g.displayName="Presence";var i=g},27393:a=>{"use strict";var{g:b,__dirname:c}=a;a.s({Checkbox:()=>v,CheckboxIndicator:()=>x,Indicator:()=>x,Root:()=>v,createCheckboxScope:()=>p,unstable_BubbleInput:()=>z,unstable_CheckboxBubbleInput:()=>z,unstable_CheckboxProvider:()=>s,unstable_CheckboxTrigger:()=>u,unstable_Provider:()=>s,unstable_Trigger:()=>u});var d=a.i(57560),e=a.i(18982),f=a.i(14625),g=a.i(63180),h=a.i(75654),i=a.i(40811),j=a.i(85091),k=a.i(35168),l=a.i(71444),m=a.i(99559),n="Checkbox",[o,p]=(0,f.createContextScope)(n),[q,r]=o(n);function s(a){let{__scopeCheckbox:b,checked:c,children:e,defaultChecked:f,disabled:g,form:i,name:j,onCheckedChange:k,required:l,value:o="on",internal_do_not_use_render:p}=a,[r,s]=(0,h.useControllableState)({prop:c,defaultProp:f??!1,onChange:k,caller:n}),[t,u]=(0,d.useState)(null),[v,w]=(0,d.useState)(null),x=(0,d.useRef)(!1),y=!t||!!i||!!t.closest("form"),z={checked:r,disabled:g,setChecked:s,control:t,setControl:u,name:j,form:i,value:o,hasConsumerStoppedPropagationRef:x,required:l,defaultChecked:!A(f)&&f,isFormControl:y,bubbleInput:v,setBubbleInput:w};return(0,m.jsx)(q,{scope:b,...z,children:"function"==typeof p?p(z):e})}var t="CheckboxTrigger",u=(0,d.forwardRef)(({__scopeCheckbox:a,onKeyDown:b,onClick:c,...f},h)=>{let{control:i,value:j,disabled:k,checked:n,required:o,setControl:p,setChecked:q,hasConsumerStoppedPropagationRef:s,isFormControl:u,bubbleInput:v}=r(t,a),w=(0,e.useComposedRefs)(h,p),x=(0,d.useRef)(n);return(0,d.useEffect)(()=>{let a=i?.form;if(a){let b=()=>q(x.current);return a.addEventListener("reset",b),()=>a.removeEventListener("reset",b)}},[i,q]),(0,m.jsx)(l.Primitive.button,{type:"button",role:"checkbox","aria-checked":A(n)?"mixed":n,"aria-required":o,"data-state":B(n),"data-disabled":k?"":void 0,disabled:k,value:j,...f,ref:w,onKeyDown:(0,g.composeEventHandlers)(b,a=>{"Enter"===a.key&&a.preventDefault()}),onClick:(0,g.composeEventHandlers)(c,a=>{q(a=>!!A(a)||!a),v&&u&&(s.current=a.isPropagationStopped(),s.current||a.stopPropagation())})})});u.displayName=t;var v=(0,d.forwardRef)((a,b)=>{let{__scopeCheckbox:c,name:d,checked:e,defaultChecked:f,required:g,disabled:h,value:i,onCheckedChange:j,form:k,...l}=a;return(0,m.jsx)(s,{__scopeCheckbox:c,checked:e,defaultChecked:f,disabled:h,required:g,onCheckedChange:j,name:d,form:k,value:i,internal_do_not_use_render:({isFormControl:a})=>(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(u,{...l,ref:b,__scopeCheckbox:c}),a&&(0,m.jsx)(z,{__scopeCheckbox:c})]})})});v.displayName=n;var w="CheckboxIndicator",x=(0,d.forwardRef)((a,b)=>{let{__scopeCheckbox:c,forceMount:d,...e}=a,f=r(w,c);return(0,m.jsx)(k.Presence,{present:d||A(f.checked)||!0===f.checked,children:(0,m.jsx)(l.Primitive.span,{"data-state":B(f.checked),"data-disabled":f.disabled?"":void 0,...e,ref:b,style:{pointerEvents:"none",...a.style}})})});x.displayName=w;var y="CheckboxBubbleInput",z=(0,d.forwardRef)(({__scopeCheckbox:a,...b},c)=>{let{control:f,hasConsumerStoppedPropagationRef:g,checked:h,defaultChecked:k,required:n,disabled:o,name:p,value:q,form:s,bubbleInput:t,setBubbleInput:u}=r(y,a),v=(0,e.useComposedRefs)(c,u),w=(0,i.usePrevious)(h),x=(0,j.useSize)(f);(0,d.useEffect)(()=>{if(!t)return;let a=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set,b=!g.current;if(w!==h&&a){let c=new Event("click",{bubbles:b});t.indeterminate=A(h),a.call(t,!A(h)&&h),t.dispatchEvent(c)}},[t,w,h,g]);let z=(0,d.useRef)(!A(h)&&h);return(0,m.jsx)(l.Primitive.input,{type:"checkbox","aria-hidden":!0,defaultChecked:k??z.current,required:n,disabled:o,name:p,value:q,form:s,...b,tabIndex:-1,ref:v,style:{...b.style,...x,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});function A(a){return"indeterminate"===a}function B(a){return A(a)?"indeterminate":a?"checked":"unchecked"}z.displayName=y},97937:a=>{"use strict";var{g:b,__dirname:c}=a;a.s({Check:()=>d.default});var d=a.i(76174)},34983:a=>{"use strict";var{g:b,__dirname:c}=a;{a.s({Checkbox:()=>b});var d=a.i(99559),e=a.i(57560),f=a.i(27393),g=a.i(97937),h=a.i(61073);let b=(0,e.forwardRef)(({className:a,...b},c)=>(0,d.jsx)(f.Root,{ref:c,className:(0,h.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",a),...b,children:(0,d.jsx)(f.Indicator,{className:(0,h.cn)("flex items-center justify-center text-current"),children:(0,d.jsx)(g.Check,{className:"h-4 w-4"})})}));b.displayName=f.Root.displayName}},84172:a=>{"use strict";var{g:b,__dirname:c}=a;function d(a,b,c){return b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function e(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function f(a){for(var b=1;b<arguments.length;b++){var c=null!=arguments[b]?arguments[b]:{};b%2?e(Object(c),!0).forEach(function(b){d(a,b,c[b])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(c)):e(Object(c)).forEach(function(b){Object.defineProperty(a,b,Object.getOwnPropertyDescriptor(c,b))})}return a}function g(a,b){if(null==a)return{};var c,d,e={},f=Object.keys(a);for(d=0;d<f.length;d++)c=f[d],b.indexOf(c)>=0||(e[c]=a[c]);return e}function h(a,b){if(null==a)return{};var c,d,e=g(a,b);if(Object.getOwnPropertySymbols){var f=Object.getOwnPropertySymbols(a);for(d=0;d<f.length;d++)c=f[d],!(b.indexOf(c)>=0)&&Object.prototype.propertyIsEnumerable.call(a,c)&&(e[c]=a[c])}return e}function i(a,b){return j(a)||k(a,b)||l(a,b)||n()}function j(a){if(Array.isArray(a))return a}function k(a,b){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(a)){var c=[],d=!0,e=!1,f=void 0;try{for(var g,h=a[Symbol.iterator]();!(d=(g=h.next()).done)&&(c.push(g.value),!b||c.length!==b);d=!0);}catch(a){e=!0,f=a}finally{try{d||null==h.return||h.return()}finally{if(e)throw f}}return c}}function l(a,b){if(a){if("string"==typeof a)return m(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);if("Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c)return Array.from(a);if("Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c))return m(a,b)}}function m(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}function n(){throw TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}a.s({arrayLikeToArray:()=>m,arrayWithHoles:()=>j,defineProperty:()=>d,iterableToArrayLimit:()=>k,nonIterableRest:()=>n,objectSpread2:()=>f,objectWithoutProperties:()=>h,objectWithoutPropertiesLoose:()=>g,slicedToArray:()=>i,unsupportedIterableToArray:()=>l})},21782:a=>{"use strict";var{g:b,__dirname:c}=a;{function d(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function e(a){for(var b=1;b<arguments.length;b++){var c=null!=arguments[b]?arguments[b]:{};b%2?d(Object(c),!0).forEach(function(b){var d;d=c[b],b in a?Object.defineProperty(a,b,{value:d,enumerable:!0,configurable:!0,writable:!0}):a[b]=d}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(c)):d(Object(c)).forEach(function(b){Object.defineProperty(a,b,Object.getOwnPropertyDescriptor(c,b))})}return a}function f(a){return function b(){for(var c=this,d=arguments.length,e=Array(d),f=0;f<d;f++)e[f]=arguments[f];return e.length>=a.length?a.apply(this,e):function(){for(var a=arguments.length,d=Array(a),f=0;f<a;f++)d[f]=arguments[f];return b.apply(c,[].concat(e,d))}}}function g(a){return({}).toString.call(a).includes("Object")}function h(a){return"function"==typeof a}a.s({default:()=>b});var i=f(function(a,b){throw Error(a[b]||a.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"}),j={changes:function(a,b){return g(b)||i("changeType"),Object.keys(b).some(function(b){return!Object.prototype.hasOwnProperty.call(a,b)})&&i("changeField"),b},selector:function(a){h(a)||i("selectorType")},handler:function(a){h(a)||g(a)||i("handlerType"),g(a)&&Object.values(a).some(function(a){return!h(a)})&&i("handlersType")},initial:function(a){a||i("initialIsRequired"),g(a)||i("initialType"),Object.keys(a).length||i("initialContent")}};function k(a,b){return h(b)?b(a.current):b}function l(a,b){return a.current=e(e({},a.current),b),b}function m(a,b,c){return h(b)?b(a.current):Object.keys(c).forEach(function(c){var d;return null==(d=b[c])?void 0:d.call(b,a.current[c])}),c}let b={create:function(a){var b=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};j.initial(a),j.handler(b);var c={current:a},d=f(m)(c,b),e=f(l)(c),g=f(j.changes)(a),h=f(k)(c);return[function(){var a=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(a){return a};return j.selector(a),a(c.current)},function(a){(function(){for(var a=arguments.length,b=Array(a),c=0;c<a;c++)b[c]=arguments[c];return function(a){return b.reduceRight(function(a,b){return b(a)},a)}})(d,e,g,h)(a)}]}}}},14260:a=>{"use strict";var{g:b,__dirname:c}=a;{a.s({default:()=>b});let b={paths:{vs:"https://cdn.jsdelivr.net/npm/monaco-editor@0.52.2/min/vs"}}}},45287:a=>{"use strict";var{g:b,__dirname:c}=a;{a.s({default:()=>b});let b=function(a){return function b(){for(var c=this,d=arguments.length,e=Array(d),f=0;f<d;f++)e[f]=arguments[f];return e.length>=a.length?a.apply(this,e):function(){for(var a=arguments.length,d=Array(a),f=0;f<a;f++)d[f]=arguments[f];return b.apply(c,[].concat(e,d))}}}}},82863:a=>{"use strict";var{g:b,__dirname:c}=a;{a.s({default:()=>b});let b=function(a){return({}).toString.call(a).includes("Object")}}},72859:a=>{"use strict";var{g:b,__dirname:c}=a;{a.s({default:()=>b,errorHandler:()=>g,errorMessages:()=>f});var d=a.i(45287),e=a.i(82863),f={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 "},g=(0,d.default)(function(a,b){throw Error(a[b]||a.default)})(f);let b={config:function(a){return(a||g("configIsRequired"),(0,e.default)(a)||g("configType"),a.urls)?(console.warn(f.deprecation),{paths:{vs:a.urls.monacoBase}}):a}}}},87871:a=>{"use strict";var{g:b,__dirname:c}=a;{a.s({default:()=>b});let b=function(){for(var a=arguments.length,b=Array(a),c=0;c<a;c++)b[c]=arguments[c];return function(a){return b.reduceRight(function(a,b){return b(a)},a)}}}},28251:a=>{"use strict";var{g:b,__dirname:c}=a;{a.s({default:()=>b});var d=a.i(84172);let b=function a(b,c){return Object.keys(c).forEach(function(d){c[d]instanceof Object&&b[d]&&Object.assign(c[d],a(b[d],c[d]))}),(0,d.objectSpread2)((0,d.objectSpread2)({},b),c)}}},83021:a=>{"use strict";var{g:b,__dirname:c}=a;{a.s({CANCELATION_MESSAGE:()=>d,default:()=>b});var d={type:"cancelation",msg:"operation is manually canceled"};let b=function(a){var b=!1,c=new Promise(function(c,e){a.then(function(a){return b?e(d):c(a)}),a.catch(e)});return c.cancel=function(){return b=!0},c}}},75092:a=>{"use strict";var{g:b,__dirname:c}=a;{a.s({default:()=>b});var d=a.i(84172),e=a.i(21782),f=a.i(14260),g=a.i(72859),h=a.i(87871),i=a.i(28251),j=a.i(83021),k=e.default.create({config:f.default,isInitialized:!1,resolve:null,reject:null,monaco:null}),l=(0,d.slicedToArray)(k,2),m=l[0],n=l[1];function o(a){return document.body.appendChild(a)}function p(a){var b,c,d=m(function(a){return{config:a.config,reject:a.reject}}),e=(b="".concat(d.config.paths.vs,"/loader.js"),c=document.createElement("script"),b&&(c.src=b),c);return e.onload=function(){return a()},e.onerror=d.reject,e}function q(){var a=m(function(a){return{config:a.config,resolve:a.resolve,reject:a.reject}}),b=window.require;b.config(a.config),b(["vs/editor/editor.main"],function(b){r(b),a.resolve(b)},function(b){a.reject(b)})}function r(a){m().monaco||n({monaco:a})}var s=new Promise(function(a,b){return n({resolve:a,reject:b})});let b={config:function(a){var b=g.default.config(a),c=b.monaco,e=(0,d.objectWithoutProperties)(b,["monaco"]);n(function(a){return{config:(0,i.default)(a.config,e),monaco:c}})},init:function(){var a=m(function(a){return{monaco:a.monaco,isInitialized:a.isInitialized,resolve:a.resolve}});if(!a.isInitialized){if(n({isInitialized:!0}),a.monaco)return a.resolve(a.monaco),(0,j.default)(s);if(window.monaco&&window.monaco.editor)return r(window.monaco),a.resolve(window.monaco),(0,j.default)(s);(0,h.default)(o,p)(q)}return(0,j.default)(s)},__getMonacoInstance:function(){return m(function(a){return a.monaco})}}}},74403:a=>{"use strict";var{g:b,__dirname:c}=a;a.s({}),a.i(75092)},30132:a=>{"use strict";var{g:b,__dirname:c}=a;a.s({}),a.i(75092),a.i(74403)},22027:a=>{"use strict";var{g:b,__dirname:c}=a;a.s({DiffEditor:()=>o,Editor:()=>s,default:()=>t,useMonaco:()=>p}),a.i(30132);var d=a.i(57560),e=a.i(75092),f={wrapper:{display:"flex",position:"relative",textAlign:"initial"},fullWidth:{width:"100%"},hide:{display:"none"}},g={container:{display:"flex",height:"100%",width:"100%",justifyContent:"center",alignItems:"center"}},h=function({children:a}){return d.default.createElement("div",{style:g.container},a)},i=(0,d.memo)(function({width:a,height:b,isEditorReady:c,loading:e,_ref:g,className:i,wrapperProps:j}){return d.default.createElement("section",{style:{...f.wrapper,width:a,height:b},...j},!c&&d.default.createElement(h,null,e),d.default.createElement("div",{ref:g,style:{...f.fullWidth,...!c&&f.hide},className:i}))}),j=function(a){(0,d.useEffect)(a,[])},k=function(a,b,c=!0){let e=(0,d.useRef)(!0);(0,d.useEffect)(e.current||!c?()=>{e.current=!1}:a,b)};function l(){}function m(a,b,c,d){var e,f,g,h,i,j;return e=a,f=d,e.editor.getModel(n(e,f))||(g=a,h=b,i=c,j=d,g.editor.createModel(h,i,j?n(g,j):void 0))}function n(a,b){return a.Uri.parse(b)}var o=(0,d.memo)(function({original:a,modified:b,language:c,originalLanguage:f,modifiedLanguage:g,originalModelPath:h,modifiedModelPath:n,keepCurrentOriginalModel:o=!1,keepCurrentModifiedModel:p=!1,theme:q="light",loading:r="Loading...",options:s={},height:t="100%",width:u="100%",className:v,wrapperProps:w={},beforeMount:x=l,onMount:y=l}){let[z,A]=(0,d.useState)(!1),[B,C]=(0,d.useState)(!0),D=(0,d.useRef)(null),E=(0,d.useRef)(null),F=(0,d.useRef)(null),G=(0,d.useRef)(y),H=(0,d.useRef)(x),I=(0,d.useRef)(!1);j(()=>{let a=e.default.init();return a.then(a=>(E.current=a)&&C(!1)).catch(a=>a?.type!=="cancelation"&&console.error("Monaco initialization: error:",a)),()=>{let b;return D.current?(b=D.current?.getModel(),void(o||b?.original?.dispose(),p||b?.modified?.dispose(),D.current?.dispose())):a.cancel()}}),k(()=>{if(D.current&&E.current){let b=D.current.getOriginalEditor(),d=m(E.current,a||"",f||c||"text",h||"");d!==b.getModel()&&b.setModel(d)}},[h],z),k(()=>{if(D.current&&E.current){let a=D.current.getModifiedEditor(),d=m(E.current,b||"",g||c||"text",n||"");d!==a.getModel()&&a.setModel(d)}},[n],z),k(()=>{let a=D.current.getModifiedEditor();a.getOption(E.current.editor.EditorOption.readOnly)?a.setValue(b||""):b!==a.getValue()&&(a.executeEdits("",[{range:a.getModel().getFullModelRange(),text:b||"",forceMoveMarkers:!0}]),a.pushUndoStop())},[b],z),k(()=>{D.current?.getModel()?.original.setValue(a||"")},[a],z),k(()=>{let{original:a,modified:b}=D.current.getModel();E.current.editor.setModelLanguage(a,f||c||"text"),E.current.editor.setModelLanguage(b,g||c||"text")},[c,f,g],z),k(()=>{E.current?.editor.setTheme(q)},[q],z),k(()=>{D.current?.updateOptions(s)},[s],z);let J=(0,d.useCallback)(()=>{if(!E.current)return;H.current(E.current);let d=m(E.current,a||"",f||c||"text",h||""),e=m(E.current,b||"",g||c||"text",n||"");D.current?.setModel({original:d,modified:e})},[c,b,g,a,f,h,n]),K=(0,d.useCallback)(()=>{!I.current&&F.current&&(D.current=E.current.editor.createDiffEditor(F.current,{automaticLayout:!0,...s}),J(),E.current?.editor.setTheme(q),A(!0),I.current=!0)},[s,q,J]);return(0,d.useEffect)(()=>{z&&G.current(D.current,E.current)},[z]),(0,d.useEffect)(()=>{B||z||K()},[B,z,K]),d.default.createElement(i,{width:u,height:t,isEditorReady:z,loading:r,_ref:F,className:v,wrapperProps:w})}),p=function(){let[a,b]=(0,d.useState)(e.default.__getMonacoInstance());return j(()=>{let c;return a||(c=e.default.init()).then(a=>{b(a)}),()=>c?.cancel()}),a},q=function(a){let b=(0,d.useRef)();return(0,d.useEffect)(()=>{b.current=a},[a]),b.current},r=new Map,s=(0,d.memo)(function({defaultValue:a,defaultLanguage:b,defaultPath:c,value:f,language:g,path:h,theme:n="light",line:o,loading:p="Loading...",options:s={},overrideServices:t={},saveViewState:u=!0,keepCurrentModel:v=!1,width:w="100%",height:x="100%",className:y,wrapperProps:z={},beforeMount:A=l,onMount:B=l,onChange:C,onValidate:D=l}){let[E,F]=(0,d.useState)(!1),[G,H]=(0,d.useState)(!0),I=(0,d.useRef)(null),J=(0,d.useRef)(null),K=(0,d.useRef)(null),L=(0,d.useRef)(B),M=(0,d.useRef)(A),N=(0,d.useRef)(),O=(0,d.useRef)(f),P=q(h),Q=(0,d.useRef)(!1),R=(0,d.useRef)(!1);j(()=>{let a=e.default.init();return a.then(a=>(I.current=a)&&H(!1)).catch(a=>a?.type!=="cancelation"&&console.error("Monaco initialization: error:",a)),()=>J.current?void(N.current?.dispose(),v?u&&r.set(h,J.current.saveViewState()):J.current.getModel()?.dispose(),J.current.dispose()):a.cancel()}),k(()=>{let d=m(I.current,a||f||"",b||g||"",h||c||"");d!==J.current?.getModel()&&(u&&r.set(P,J.current?.saveViewState()),J.current?.setModel(d),u&&J.current?.restoreViewState(r.get(h)))},[h],E),k(()=>{J.current?.updateOptions(s)},[s],E),k(()=>{J.current&&void 0!==f&&(J.current.getOption(I.current.editor.EditorOption.readOnly)?J.current.setValue(f):f!==J.current.getValue()&&(R.current=!0,J.current.executeEdits("",[{range:J.current.getModel().getFullModelRange(),text:f,forceMoveMarkers:!0}]),J.current.pushUndoStop(),R.current=!1))},[f],E),k(()=>{let a=J.current?.getModel();a&&g&&I.current?.editor.setModelLanguage(a,g)},[g],E),k(()=>{void 0!==o&&J.current?.revealLine(o)},[o],E),k(()=>{I.current?.editor.setTheme(n)},[n],E);let S=(0,d.useCallback)(()=>{if(!(!K.current||!I.current)&&!Q.current){M.current(I.current);let d=h||c,e=m(I.current,f||a||"",b||g||"",d||"");J.current=I.current?.editor.create(K.current,{model:e,automaticLayout:!0,...s},t),u&&J.current.restoreViewState(r.get(d)),I.current.editor.setTheme(n),void 0!==o&&J.current.revealLine(o),F(!0),Q.current=!0}},[a,b,c,f,g,h,s,t,u,n,o]);return(0,d.useEffect)(()=>{E&&L.current(J.current,I.current)},[E]),(0,d.useEffect)(()=>{G||E||S()},[G,E,S]),O.current=f,(0,d.useEffect)(()=>{E&&C&&(N.current?.dispose(),N.current=J.current?.onDidChangeModelContent(a=>{R.current||C(J.current.getValue(),a)}))},[E,C]),(0,d.useEffect)(()=>{if(E){let a=I.current.editor.onDidChangeMarkers(a=>{let b=J.current.getModel()?.uri;if(b&&a.find(a=>a.path===b.path)){let a=I.current.editor.getModelMarkers({resource:b});D?.(a)}});return()=>{a?.dispose()}}return()=>{}},[E,D]),d.default.createElement(i,{width:w,height:x,isEditorReady:E,loading:p,_ref:K,className:y,wrapperProps:z})}),t=s},28783:a=>{"use strict";var{g:b,__dirname:c}=a;a.s({}),a.i(30132),a.i(57560),a.i(22027)},82587:a=>{"use strict";var{g:b,__dirname:c}=a;a.s({default:()=>i});var d=a.i(99559),e=a.i(57560),f=a.i(60284),g=a.i(94688),h=a.i(50923);function i({className:a,currentProjectName:b,currentEnvName:c}){let[i,j]=(0,e.useState)([]),[k,l]=(0,e.useState)(!0),[m,n]=(0,e.useState)(null),[o,p]=(0,e.useState)(new Set),[q,r]=(0,e.useState)(""),[s,t]=(0,e.useState)(!1),[u,v]=(0,e.useState)(""),[w,x]=(0,e.useState)(!1),[y,z]=(0,e.useState)(null),A=(0,e.useRef)(null);(0,e.useEffect)(()=>{if(i.length>0){let a=i.find(a=>a.projectName===b&&a.envName===c);if(a&&a.subApps.length>0){let b=new Set;a.subApps.forEach(a=>{i.forEach(c=>{c.envName===a&&b.add(F(c))})}),p(b)}}},[i,b,c]);let B=async()=>{l(!0),n(null);try{let a=await fetch("/api/all-projects-envs"),b=await a.json();b.success?j(b.data):n(b.error||"获取项目环境信息失败")}catch(a){console.error("获取项目环境信息失败:",a),n("获取项目环境信息失败: 网络错误")}finally{l(!1)}};(0,e.useEffect)(()=>(B(),C(),()=>{D()}),[c]);let C=()=>{A.current&&D();let a=`microapp-table-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,b=`/api/microapp-proxy-change-stream?env=${encodeURIComponent(c)}&clientId=${encodeURIComponent(a)}`;console.log(`[SSE] 建立连接到: ${b}`),z(null);try{let a=new EventSource(b);A.current=a,a.onopen=()=>{console.log(`[SSE] 连接已建立,环境: ${c}`),x(!0),z(null)},a.onmessage=a=>{try{let b=JSON.parse(a.data);E(b)}catch(a){console.error("[SSE] 解析消息失败:",a)}},a.onerror=()=>{console.error(`[SSE] 连接错误,环境: ${c}`),x(!1),z("实时推送连接断开"),setTimeout(()=>{A.current&&A.current.readyState!==EventSource.CLOSED||(console.log("[SSE] 尝试重新连接..."),C())},3e3)}}catch(a){console.error("[SSE] 建立连接失败:",a),z("无法建立实时推送连接")}},D=()=>{A.current&&(console.log("[SSE] 关闭连接"),A.current.close(),A.current=null,x(!1))},E=a=>{switch(console.log("[SSE] 收到消息:",a),a.type){case"connection-established":console.log(`[SSE] 连接确认: ${a.message}`),x(!0),z(null);break;case"microapp-proxy-config-change":if(console.log(`[SSE] 配置变化通知: 环境=${a.envName}`),console.log(`[SSE] 变化详情:`,a.changes),a.changes){let{added:b,removed:c}=a.changes,d="";b.length>0&&(d+=`新增: ${b.join(", ")}`),c.length>0&&(d&&(d+="; "),d+=`移除: ${c.join(", ")}`),v(`配置已更新 (${d})`)}else v("配置已更新");B(),setTimeout(()=>v(""),3e3);break;case"heartbeat":x(!0),z(null);break;default:console.log("[SSE] 未知消息类型:",a.type)}},F=a=>`${a.projectName}-${a.envName}`,G=q.trim()?i.filter(a=>a.projectName.toLowerCase().includes(q.toLowerCase())||a.envName.toLowerCase().includes(q.toLowerCase())||a.host.toLowerCase().includes(q.toLowerCase())):i,H=(a,b)=>{let c=new Set(o);b?c.add(a):c.delete(a),p(c)},I=a=>{a?p(new Set(G.map(a=>F(a)))):p(new Set)},J=async()=>{t(!0),v("");try{let a=Array.from(o).map(a=>{let b=i.find(b=>F(b)===a);return b?b.envName:""}).filter(a=>""!==a),d=[...new Set(a)],e=await fetch("/api/microapp-proxy-config",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:b,envName:c,selectedItems:d})}),f=await e.json();f.success?(v(f.message||"保存成功"),await B()):v(`保存失败: ${f.error}`)}catch(a){console.error("保存MicroApp代理配置失败:",a),v("保存失败: 网络错误")}finally{t(!1),setTimeout(()=>{v("")},5e3)}},K=o.size,L=G.length>0&&G.every(a=>o.has(F(a))),M=G.some(a=>o.has(F(a)));return k?(0,d.jsxs)("div",{className:`p-6 bg-gray-50 rounded-lg ${a}`,children:[(0,d.jsx)("h4",{className:"text-md font-medium mb-4",children:"MicroApp代理配置"}),(0,d.jsx)("div",{className:"text-center py-8",children:(0,d.jsx)("p",{className:"text-gray-500",children:"加载中..."})})]}):m?(0,d.jsxs)("div",{className:`p-6 bg-gray-50 rounded-lg ${a}`,children:[(0,d.jsx)("h4",{className:"text-md font-medium mb-4",children:"MicroApp代理配置"}),(0,d.jsxs)("div",{className:"text-center py-8",children:[(0,d.jsx)("p",{className:"text-red-500",children:m}),(0,d.jsx)(h.Button,{variant:"outline",size:"sm",onClick:B,className:"mt-2",children:"重试"})]})]}):(0,d.jsxs)("div",{className:`p-6 bg-gray-50 rounded-lg ${a}`,children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("h4",{className:"text-md font-medium",children:"MicroApp代理配置"}),(0,d.jsxs)("p",{className:"text-xs text-gray-500 mt-1",children:["为 ",b," - ",c," 环境配置微应用代理"]})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsxs)("div",{className:"flex items-center gap-1",children:[(0,d.jsx)("div",{className:`w-2 h-2 rounded-full ${w?"bg-green-500":"bg-red-500"}`,title:w?"实时推送已连接":"实时推送断开"}),(0,d.jsx)("span",{className:"text-xs text-gray-500",children:w?"实时":"离线"})]}),(u||y)&&(0,d.jsx)("span",{className:`text-sm max-w-xs ${u&&u.includes("失败")||y?"text-red-600":u&&u.includes("但有")?"text-yellow-600":"text-green-600"}`,title:u||y||"",children:u||y}),(0,d.jsx)(h.Button,{variant:"outline",size:"sm",onClick:B,disabled:s,children:"刷新"}),(0,d.jsx)(h.Button,{variant:"default",size:"sm",onClick:J,disabled:s,children:s?"保存中...":"保存配置"})]})]}),(0,d.jsxs)("div",{className:"space-y-3 mb-4",children:[(0,d.jsx)("div",{className:"flex items-center gap-2",children:(0,d.jsxs)("div",{className:"relative flex-1 max-w-md",children:[(0,d.jsx)(g.Input,{placeholder:"搜索项目名称、环境名称或Host...",value:q,onChange:a=>r(a.target.value),className:"pr-8"}),q&&(0,d.jsx)(h.Button,{variant:"ghost",size:"sm",onClick:()=>{r("")},className:"absolute right-1 top-1/2 transform -translate-y-1/2 h-6 w-6 p-0 hover:bg-gray-100",children:"×"})]})}),(0,d.jsxs)("div",{className:"flex items-center justify-between text-sm text-gray-600",children:[(0,d.jsxs)("div",{className:"flex items-center gap-4",children:[(0,d.jsxs)("span",{children:["显示 ",G.length," 个环境配置",q&&` (搜索: "${q}")`]}),K>0&&(0,d.jsxs)("span",{className:"text-blue-600 font-medium",children:["已选择 ",K," 项"]})]}),K>0&&(0,d.jsx)(h.Button,{variant:"outline",size:"sm",onClick:()=>{p(new Set)},children:"清空选择"})]})]}),G.length>0?(0,d.jsx)("div",{className:"border rounded-md",children:(0,d.jsxs)(f.Table,{children:[(0,d.jsx)(f.TableHeader,{children:(0,d.jsxs)(f.TableRow,{children:[(0,d.jsx)(f.TableHead,{className:"w-12",children:(0,d.jsx)("input",{type:"checkbox",checked:L,onChange:a=>I(a.target.checked),ref:a=>{a&&(a.indeterminate=M&&!L)},className:"rounded border-gray-300"})}),(0,d.jsx)(f.TableHead,{children:"环境名称"}),(0,d.jsx)(f.TableHead,{children:"项目名称"}),(0,d.jsx)(f.TableHead,{children:"Host地址"}),(0,d.jsx)(f.TableHead,{children:"当前代理"})]})}),(0,d.jsx)(f.TableBody,{children:G.map(a=>{let b=F(a),c=o.has(b);return(0,d.jsxs)(f.TableRow,{children:[(0,d.jsx)(f.TableCell,{children:(0,d.jsx)("input",{type:"checkbox",checked:c,onChange:a=>H(b,a.target.checked),className:"rounded border-gray-300"})}),(0,d.jsx)(f.TableCell,{children:(0,d.jsx)("span",{className:"px-2 py-1 rounded text-xs font-medium bg-blue-100 text-blue-800",children:a.envName})}),(0,d.jsx)(f.TableCell,{className:"font-medium",children:a.projectName}),(0,d.jsx)(f.TableCell,{className:"font-mono text-sm",children:a.host}),(0,d.jsxs)(f.TableCell,{className:"text-sm text-gray-600",children:[a.currentProxy,a.proxyEnv[a.currentProxy]&&(0,d.jsx)("div",{className:"text-xs text-gray-500",children:a.proxyEnv[a.currentProxy]})]})]},b)})})]})}):(0,d.jsx)("div",{className:"text-center py-8",children:(0,d.jsx)("p",{className:"text-gray-500",children:q?"没有找到匹配的环境配置":"暂无环境配置"})}),K>0&&(0,d.jsx)("div",{className:"mt-4 p-3 bg-blue-50 rounded-md",children:(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsxs)("span",{className:"text-sm text-blue-700",children:["已选择 ",K," 个环境配置将作为微应用代理"]}),(0,d.jsx)("span",{className:"text-xs text-blue-600",children:"点击上方“保存配置”按钮保存设置"})]})})]})}},23936:function(a){var{g:b,__dirname:c,m:d,e:e}=a},22842:function(a){var{g:b,__dirname:c,m:d,e:e}=a;a.r(23936);var f=a.r(57560),g=f&&"object"==typeof f&&"default"in f?f:{default:f},h="undefined"!=typeof process&&process.env&&!0,i=function(a){return"[object String]"===Object.prototype.toString.call(a)},j=function(){function a(a){var b=void 0===a?{}:a,c=b.name,d=void 0===c?"stylesheet":c,e=b.optimizeForSpeed,f=void 0===e?h:e;k(i(d),"`name` must be a string"),this._name=d,this._deletedRulePlaceholder="#"+d+"-deleted-rule____{}",k("boolean"==typeof f,"`optimizeForSpeed` must be a boolean"),this._optimizeForSpeed=f,this._serverSheet=void 0,this._tags=[],this._injected=!1,this._rulesCount=0;var g="undefined"!=typeof window&&document.querySelector('meta[property="csp-nonce"]');this._nonce=g?g.getAttribute("content"):null}var b,c=a.prototype;return c.setOptimizeForSpeed=function(a){k("boolean"==typeof a,"`setOptimizeForSpeed` accepts a boolean"),k(0===this._rulesCount,"optimizeForSpeed cannot be when rules have already been inserted"),this.flush(),this._optimizeForSpeed=a,this.inject()},c.isOptimizeForSpeed=function(){return this._optimizeForSpeed},c.inject=function(){var a=this;if(k(!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||(h||console.warn("StyleSheet: optimizeForSpeed mode not supported falling back to standard mode."),this.flush(),this._injected=!0);return}this._serverSheet={cssRules:[],insertRule:function(b,c){return"number"==typeof c?a._serverSheet.cssRules[c]={cssText:b}:a._serverSheet.cssRules.push({cssText:b}),c},deleteRule:function(b){a._serverSheet.cssRules[b]=null}}},c.getSheetForTag=function(a){if(a.sheet)return a.sheet;for(var b=0;b<document.styleSheets.length;b++)if(document.styleSheets[b].ownerNode===a)return document.styleSheets[b]},c.getSheet=function(){return this.getSheetForTag(this._tags[this._tags.length-1])},c.insertRule=function(a,b){if(k(i(a),"`insertRule` accepts only strings"),"undefined"==typeof window)return"number"!=typeof b&&(b=this._serverSheet.cssRules.length),this._serverSheet.insertRule(a,b),this._rulesCount++;if(this._optimizeForSpeed){var c=this.getSheet();"number"!=typeof b&&(b=c.cssRules.length);try{c.insertRule(a,b)}catch(b){return h||console.warn("StyleSheet: illegal rule: \n\n"+a+"\n\nSee https://stackoverflow.com/q/20007992 for more info"),-1}}else{var d=this._tags[b];this._tags.push(this.makeStyleTag(this._name,a,d))}return this._rulesCount++},c.replaceRule=function(a,b){if(this._optimizeForSpeed||"undefined"==typeof window){var c="undefined"!=typeof window?this.getSheet():this._serverSheet;if(b.trim()||(b=this._deletedRulePlaceholder),!c.cssRules[a])return a;c.deleteRule(a);try{c.insertRule(b,a)}catch(d){h||console.warn("StyleSheet: illegal rule: \n\n"+b+"\n\nSee https://stackoverflow.com/q/20007992 for more info"),c.insertRule(this._deletedRulePlaceholder,a)}}else{var d=this._tags[a];k(d,"old rule at index `"+a+"` not found"),d.textContent=b}return a},c.deleteRule=function(a){if("undefined"==typeof window)return void this._serverSheet.deleteRule(a);if(this._optimizeForSpeed)this.replaceRule(a,"");else{var b=this._tags[a];k(b,"rule at index `"+a+"` not found"),b.parentNode.removeChild(b),this._tags[a]=null}},c.flush=function(){this._injected=!1,this._rulesCount=0,"undefined"!=typeof window?(this._tags.forEach(function(a){return a&&a.parentNode.removeChild(a)}),this._tags=[]):this._serverSheet.cssRules=[]},c.cssRules=function(){var a=this;return"undefined"==typeof window?this._serverSheet.cssRules:this._tags.reduce(function(b,c){return c?b=b.concat(Array.prototype.map.call(a.getSheetForTag(c).cssRules,function(b){return b.cssText===a._deletedRulePlaceholder?null:b})):b.push(null),b},[])},c.makeStyleTag=function(a,b,c){b&&k(i(b),"makeStyleTag accepts only strings as second parameter");var d=document.createElement("style");this._nonce&&d.setAttribute("nonce",this._nonce),d.type="text/css",d.setAttribute("data-"+a,""),b&&d.appendChild(document.createTextNode(b));var e=document.head||document.getElementsByTagName("head")[0];return c?e.insertBefore(d,c):e.appendChild(d),d},b=[{key:"length",get:function(){return this._rulesCount}}],function(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1,d.configurable=!0,"value"in d&&(d.writable=!0),Object.defineProperty(a,d.key,d)}}(a.prototype,b),a}();function k(a,b){if(!a)throw Error("StyleSheet: "+b+".")}var l=function(a){for(var b=5381,c=a.length;c;)b=33*b^a.charCodeAt(--c);return b>>>0},m={};function n(a,b){if(!b)return"jsx-"+a;var c=String(b),d=a+c;return m[d]||(m[d]="jsx-"+l(a+"-"+c)),m[d]}function o(a,b){"undefined"==typeof window&&(b=b.replace(/\/style/gi,"\\/style"));var c=a+b;return m[c]||(m[c]=b.replace(/__jsx-style-dynamic-selector/g,a)),m[c]}var p=function(){function a(a){var b=void 0===a?{}:a,c=b.styleSheet,d=void 0===c?null:c,e=b.optimizeForSpeed,f=void 0!==e&&e;this._sheet=d||new j({name:"styled-jsx",optimizeForSpeed:f}),this._sheet.inject(),d&&"boolean"==typeof f&&(this._sheet.setOptimizeForSpeed(f),this._optimizeForSpeed=this._sheet.isOptimizeForSpeed()),this._fromServer=void 0,this._indices={},this._instancesCounts={}}var b=a.prototype;return b.add=function(a){var b=this;void 0===this._optimizeForSpeed&&(this._optimizeForSpeed=Array.isArray(a.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(a,b){return a[b]=0,a},{}));var c=this.getIdAndRules(a),d=c.styleId,e=c.rules;if(d in this._instancesCounts){this._instancesCounts[d]+=1;return}var f=e.map(function(a){return b._sheet.insertRule(a)}).filter(function(a){return -1!==a});this._indices[d]=f,this._instancesCounts[d]=1},b.remove=function(a){var b=this,c=this.getIdAndRules(a).styleId;if(function(a,b){if(!a)throw Error("StyleSheetRegistry: "+b+".")}(c in this._instancesCounts,"styleId: `"+c+"` not found"),this._instancesCounts[c]-=1,this._instancesCounts[c]<1){var d=this._fromServer&&this._fromServer[c];d?(d.parentNode.removeChild(d),delete this._fromServer[c]):(this._indices[c].forEach(function(a){return b._sheet.deleteRule(a)}),delete this._indices[c]),delete this._instancesCounts[c]}},b.update=function(a,b){this.add(b),this.remove(a)},b.flush=function(){this._sheet.flush(),this._sheet.inject(),this._fromServer=void 0,this._indices={},this._instancesCounts={}},b.cssRules=function(){var a=this,b=this._fromServer?Object.keys(this._fromServer).map(function(b){return[b,a._fromServer[b]]}):[],c=this._sheet.cssRules();return b.concat(Object.keys(this._indices).map(function(b){return[b,a._indices[b].map(function(a){return c[a].cssText}).join(a._optimizeForSpeed?"":"\n")]}).filter(function(a){return!!a[1]}))},b.styles=function(a){var b,c;return b=this.cssRules(),void 0===(c=a)&&(c={}),b.map(function(a){var b=a[0],d=a[1];return g.default.createElement("style",{id:"__"+b,key:"__"+b,nonce:c.nonce?c.nonce:void 0,dangerouslySetInnerHTML:{__html:d}})})},b.getIdAndRules=function(a){var b=a.children,c=a.dynamic,d=a.id;if(c){var e=n(d,c);return{styleId:e,rules:Array.isArray(b)?b.map(function(a){return o(e,a)}):[o(e,b)]}}return{styleId:n(d),rules:Array.isArray(b)?b:[b]}},b.selectFromServer=function(){return Array.prototype.slice.call(document.querySelectorAll('[id^="__jsx-"]')).reduce(function(a,b){return a[b.id.slice(2)]=b,a},{})},a}(),q=f.createContext(null);function r(){return new p}function s(){return f.useContext(q)}q.displayName="StyleSheetContext";var t=g.default.useInsertionEffect||g.default.useLayoutEffect,u="undefined"!=typeof window?r():void 0;function v(a){var b=u||s();return b&&("undefined"==typeof window?b.add(a):t(function(){return b.add(a),function(){b.remove(a)}},[a.id,String(a.dynamic)])),null}v.dynamic=function(a){return a.map(function(a){return n(a[0],a[1])}).join(" ")},e.StyleRegistry=function(a){var b=a.registry,c=a.children,d=f.useContext(q),e=f.useState(function(){return d||b||r()})[0];return g.default.createElement(q.Provider,{value:e},c)},e.createStyleRegistry=r,e.style=v,e.useStyleRegistry=s},62012:function(a){var{g:b,__dirname:c,m:d,e:e}=a;d.exports=a.r(22842).style},55441:a=>{"use strict";var{g:b,__dirname:c}=a;a.s({default:()=>g});var d=a.i(99559),e=a.i(62012),f=a.i(57560);function g({logs:a}){let b=(0,f.useRef)(null),c=(0,f.useRef)(!0),g=a=>a.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]"),h=()=>{if(!b.current)return!0;let{scrollTop:a,scrollHeight:c,clientHeight:d}=b.current;return c-a-d<100},i=()=>{b.current&&c.current&&(b.current.scrollTop=b.current.scrollHeight)};return(0,f.useEffect)(()=>{setTimeout(i,10)},[a]),(0,d.jsxs)("div",{ref:b,onScroll:()=>{c.current=h()},style:{scrollBehavior:"smooth",maxHeight:"100%"},className:"jsx-b464fb0f479e34f5 h-full w-full overflow-y-auto overflow-x-hidden p-4 custom-scrollbar",children:[(0,d.jsx)(e.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,d.jsx)("div",{className:"jsx-b464fb0f479e34f5 space-y-0.5",children:a.length>0?a.map((a,b)=>{let c=g(a);if(!c.trim())return null;let e=a.includes("[STDERR]"),f=a.includes("[SYSTEM]"),h=c.match(/^\[([\d-T:.Z]+)\]/)?.[1],i=c.replace(/^\[[\d-T:.Z]+\]\s*/,"");return(0,d.jsxs)("div",{className:`jsx-b464fb0f479e34f5 font-mono text-xs leading-5 ${e?"text-red-400":f?"text-yellow-400":"text-gray-100"}`,children:[h&&(0,d.jsxs)("span",{className:"jsx-b464fb0f479e34f5 text-gray-500 mr-2",children:["[",new Date(h).toLocaleTimeString("zh-CN"),"]"]}),(0,d.jsx)("span",{className:"jsx-b464fb0f479e34f5 whitespace-pre-wrap break-all",children:i})]},b)}):(0,d.jsx)("div",{className:"jsx-b464fb0f479e34f5 text-center text-gray-500 mt-8",children:"等待日志输出..."})})]})}},64708:a=>{"use strict";var{g:b,__dirname:c}=a;a.s({default:()=>g});var d=a.i(99559),e=a.i(57560),f=a.i(50923);function g({projectName:a,className:b="",compact:c=!1}){let[g,h]=(0,e.useState)(null),[i,j]=(0,e.useState)(!1),[k,l]=(0,e.useState)(null),[m,n]=(0,e.useState)(""),o=(0,e.useCallback)(async()=>{if(a){j(!0),l(null);try{let b=await fetch(`/api/current-branch?project=${encodeURIComponent(a)}`),c=await b.json();c.success?(h(c.data),n(new Date().toLocaleTimeString("zh-CN",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"}))):l(c.error||"获取分支信息失败")}catch(a){l("网络请求失败"),console.error("获取分支信息失败:",a)}finally{j(!1)}}},[a]);(0,e.useEffect)(()=>{o()},[o]),(0,e.useEffect)(()=>{if(!a)return;let b=setInterval(()=>{o()},c?15e3:3e4);return()=>clearInterval(b)},[a,o,c]);let p=a=>0===a?"text-gray-500":"text-orange-600",q=()=>{if(!g)return null;let{ahead:a,behind:b}=g.status;return a>0&&b>0?(0,d.jsx)("span",{className:"text-yellow-500 text-xs",children:"↕"}):a>0?(0,d.jsx)("span",{className:"text-green-500 text-xs",children:"↑"}):b>0?(0,d.jsx)("span",{className:"text-red-500 text-xs",children:"↓"}):(0,d.jsx)("span",{className:"text-gray-400 text-xs",children:"✓"})};return i&&!g?c?(0,d.jsxs)("div",{className:`flex items-center gap-2 px-3 py-1 bg-gray-50 rounded-md ${b}`,children:[(0,d.jsx)("div",{className:"animate-spin w-3 h-3 border-2 border-blue-500 border-t-transparent rounded-full"}),(0,d.jsx)("span",{className:"text-xs text-gray-500",children:"加载中..."})]}):(0,d.jsxs)("div",{className:`bg-white rounded-lg shadow-sm border p-4 ${b}`,children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,d.jsx)("h3",{className:"text-sm font-semibold text-gray-700",children:"Git 分支信息"}),(0,d.jsx)("div",{className:"animate-spin w-4 h-4 border-2 border-blue-500 border-t-transparent rounded-full"})]}),(0,d.jsx)("div",{className:"text-sm text-gray-500",children:"正在加载分支信息..."})]}):k?c?(0,d.jsxs)("div",{className:`flex items-center gap-2 px-3 py-1 bg-red-50 rounded-md ${b}`,children:[(0,d.jsx)("span",{className:"text-xs text-red-500",children:"分支信息错误"}),(0,d.jsx)(f.Button,{variant:"ghost",size:"sm",onClick:o,disabled:i,className:"h-5 w-5 p-0 text-red-500 hover:bg-red-100",children:"↻"})]}):(0,d.jsxs)("div",{className:`bg-white rounded-lg shadow-sm border p-4 ${b}`,children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,d.jsx)("h3",{className:"text-sm font-semibold text-gray-700",children:"Git 分支信息"}),(0,d.jsx)(f.Button,{variant:"outline",size:"sm",onClick:o,disabled:i,className:"h-6 px-2 text-xs",children:i?"刷新中...":"重试"})]}),(0,d.jsx)("div",{className:"text-sm text-red-500 bg-red-50 p-2 rounded",children:k})]}):g?c?(0,d.jsxs)("div",{className:`flex items-center gap-2 px-3 py-1 bg-blue-50 border border-blue-200 rounded-md ${b}`,children:[(0,d.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,d.jsx)("polyline",{points:"6,3 6,15"}),(0,d.jsx)("circle",{cx:"18",cy:"6",r:"3"}),(0,d.jsx)("circle",{cx:"6",cy:"18",r:"3"}),(0,d.jsx)("path",{d:"m18,9a9,9 0 0,1-9,9"})]}),(0,d.jsx)("span",{className:"text-sm font-medium text-blue-800",children:g.currentBranch}),q(),(0,d.jsx)(f.Button,{variant:"ghost",size:"sm",onClick:o,disabled:i,className:"h-5 w-5 p-0 text-blue-600 hover:bg-blue-100",title:"刷新分支信息",children:i?(0,d.jsx)("div",{className:"animate-spin w-3 h-3 border-2 border-blue-600 border-t-transparent rounded-full"}):"↻"})]}):(0,d.jsxs)("div",{className:`bg-white rounded-lg shadow-sm border p-4 ${b}`,children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,d.jsx)("h3",{className:"text-sm font-semibold text-gray-700",children:"Git 分支信息"}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[m&&(0,d.jsx)("span",{className:"text-xs text-gray-400",children:m}),(0,d.jsx)(f.Button,{variant:"outline",size:"sm",onClick:o,disabled:i,className:"h-6 px-2 text-xs",children:i?"刷新中...":"刷新"})]})]}),(0,d.jsxs)("div",{className:"space-y-3",children:[(0,d.jsx)("div",{className:"flex items-center gap-2",children:(0,d.jsxs)("div",{className:"flex items-center gap-1",children:[(0,d.jsx)("span",{className:"text-xs text-gray-500",children:"分支:"}),(0,d.jsx)("span",{className:"text-sm font-medium text-blue-600 bg-blue-50 px-2 py-1 rounded",children:g.currentBranch}),q()]})}),(0,d.jsxs)("div",{className:"bg-gray-50 p-3 rounded text-xs space-y-1",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"text-gray-500",children:"提交:"}),(0,d.jsx)("code",{className:"bg-gray-200 px-1 rounded font-mono text-xs",children:g.lastCommit.hash})]}),(0,d.jsx)("div",{className:"text-gray-700 font-medium line-clamp-2",children:g.lastCommit.message}),(0,d.jsxs)("div",{className:"flex items-center justify-between text-gray-500",children:[(0,d.jsx)("span",{children:g.lastCommit.author}),(0,d.jsx)("span",{children:g.lastCommit.date})]})]}),(0,d.jsxs)("div",{className:"grid grid-cols-2 gap-2 text-xs",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsx)("span",{className:"text-gray-500",children:"领先:"}),(0,d.jsx)("span",{className:p(g.status.ahead),children:g.status.ahead})]}),(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsx)("span",{className:"text-gray-500",children:"落后:"}),(0,d.jsx)("span",{className:p(g.status.behind),children:g.status.behind})]}),(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsx)("span",{className:"text-gray-500",children:"已修改:"}),(0,d.jsx)("span",{className:p(g.status.modified),children:g.status.modified})]}),(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsx)("span",{className:"text-gray-500",children:"已暂存:"}),(0,d.jsx)("span",{className:p(g.status.staged),children:g.status.staged})]}),(0,d.jsxs)("div",{className:"flex items-center justify-between col-span-2",children:[(0,d.jsx)("span",{className:"text-gray-500",children:"未跟踪:"}),(0,d.jsx)("span",{className:p(g.status.untracked),children:g.status.untracked})]})]}),(g.status.ahead>0||g.status.behind>0)&&(0,d.jsxs)("div",{className:"text-xs p-2 rounded bg-yellow-50 border border-yellow-200",children:[g.status.ahead>0&&g.status.behind>0&&(0,d.jsxs)("span",{className:"text-yellow-700",children:["分支与远程不同步,有 ",g.status.ahead," 个本地提交,",g.status.behind," 个远程提交"]}),g.status.ahead>0&&0===g.status.behind&&(0,d.jsxs)("span",{className:"text-green-700",children:["本地领先远程 ",g.status.ahead," 个提交"]}),0===g.status.ahead&&g.status.behind>0&&(0,d.jsxs)("span",{className:"text-red-700",children:["本地落后远程 ",g.status.behind," 个提交"]})]})]})]}):c?(0,d.jsx)("div",{className:`flex items-center gap-2 px-3 py-1 bg-gray-50 rounded-md ${b}`,children:(0,d.jsx)("span",{className:"text-xs text-gray-500",children:"暂无分支信息"})}):(0,d.jsxs)("div",{className:`bg-white rounded-lg shadow-sm border p-4 ${b}`,children:[(0,d.jsx)("div",{className:"flex items-center justify-between mb-3",children:(0,d.jsx)("h3",{className:"text-sm font-semibold text-gray-700",children:"Git 分支信息"})}),(0,d.jsx)("div",{className:"text-sm text-gray-500",children:"暂无分支信息"})]})}},73426:a=>{"use strict";var{g:b,__dirname:c}=a;a.s({default:()=>v});var d=a.i(99559),e=a.i(57560),f=a.i(40490),g=a.i(50923),h=a.i(74939),i=a.i(49566),j=a.i(94688),k=a.i(58413),l=a.i(67252),m=a.i(60284),n=a.i(22529),o=a.i(34983);a.i(28783);var p=a.i(22027),q=a.i(82587),r=a.i(55441),s=a.i(64708),t=function(a){return a.PENDING="pending",a.EXISTING="existing",a.CLONING="cloning",a.SUCCESS="success",a.FAILED="failed",a.RETRYING="retrying",a}(t||{});function u(){let a=(0,f.useSearchParams)(),b=(0,f.useRouter)(),c=a.get("project"),[t,u]=(0,e.useState)(null),[v,w]=(0,e.useState)(!0),[x,y]=(0,e.useState)(null),[z,A]=(0,e.useState)({}),[B,C]=(0,e.useState)({mockingIntercept:!1,mockOpen:!1}),[D,E]=(0,e.useState)(!1),[F,G]=(0,e.useState)(null),[H,I]=(0,e.useState)(!1),[J,K]=(0,e.useState)(1),[L]=(0,e.useState)(10),[M,N]=(0,e.useState)(""),[O,P]=(0,e.useState)(null),[Q,R]=(0,e.useState)(!1),[S,T]=(0,e.useState)(!1),[U,V]=(0,e.useState)(!1),[W,X]=(0,e.useState)(!0),[Y,Z]=(0,e.useState)(null),[$,_]=(0,e.useState)([]),[aa,ab]=(0,e.useState)(!1),[ac,ad]=(0,e.useState)(!1),[ae,af]=(0,e.useState)(!1),[ag,ah]=(0,e.useState)({apiPath:"",method:"GET",siteName:"默认场景",mockOpen:!0}),[ai,aj]=(0,e.useState)(null),[ak,al]=(0,e.useState)(!1),[am,an]=(0,e.useState)({open:!1,apiName:"",method:"",siteName:""}),[ao,ap]=(0,e.useState)({open:!1,apiName:"",apiPath:""}),[aq,ar]=(0,e.useState)({open:!1,type:"success",message:""}),[as,at]=(0,e.useState)(!1),[au,av]=(0,e.useState)([]),[aw,ax]=(0,e.useState)(!1),[ay,az]=(0,e.useState)(""),[aA,aB]=(0,e.useState)({}),[aC,aD]=(0,e.useState)(!1),[aE,aF]=(0,e.useState)(""),[aG,aH]=(0,e.useState)([]),aI=(0,e.useCallback)(async()=>{Y&&await aK(Y)},[Y]),aJ=(0,e.useCallback)(async a=>{Q&&(a.metaKey||a.ctrlKey)&&"s"===a.key&&(a.preventDefault(),await aI())},[Q,aI]);(0,e.useEffect)(()=>{if(Q)return document.addEventListener("keydown",aJ),()=>{document.removeEventListener("keydown",aJ)}},[Q,Y,aJ]);let aK=async a=>{try{await new Promise(a=>setTimeout(a,200));let b=a.getModel();if(b){await a.getAction("editor.action.formatDocument")?.run();let c=b.getValue();if(c&&!c.includes("\n")&&c.length>50){let d=c.replace(/\{\s*/g,"{\n ").replace(/\}\s*/g,"\n}").replace(/;\s*/g,";\n ").replace(/,\s*/g,",\n ").replace(/\n\s*\n/g,"\n").trim();d!==c&&(b.setValue(d),setTimeout(()=>{a.getAction("editor.action.formatDocument")?.run()},100))}}}catch(a){console.log("自动格式化失败:",a)}},aL=()=>{b.push("/initialization")},aM=async()=>{ab(!0);try{let a=await fetch("/api/check-workspace"),b=await a.json();if(b.success&&b.projects){let a=b.projects.map(a=>({name:a.name,status:a.status,message:a.message}));_(a)}else console.error("获取项目列表失败:",b.error),_([])}catch(a){console.error("获取项目列表失败:",a),_([])}finally{ab(!1)}},aN=async()=>{if(c){E(!0);try{let a=await fetch("/api/open-project",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:c})}),b=await a.json();b.success||(console.error("打开项目失败:",b.error),bh("error",`打开项目失败: ${b.error}`))}catch(a){console.error("打开项目失败:",a),bh("error","打开项目失败: 网络错误")}finally{E(!1)}}},aO=async()=>{if(0===au.length)return void bh("error","请至少选择一个项目");ax(!0);try{let a=await fetch("/api/workspace/create",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projects:au})}),b=await a.json();b.success?(bh("success",b.message||"工作区已在 Cursor 中打开"),at(!1),av([])):bh("error",`创建工作区失败: ${b.error}`)}catch(a){console.error("创建工作区失败:",a),bh("error","创建工作区失败: 网络错误")}finally{ax(!1)}},aP=a=>{av(b=>b.includes(a)?b.filter(b=>b!==a):[...b,a])};(0,e.useEffect)(()=>{if(!c){y("项目名称缺失"),w(!1);return}(async()=>{try{let a=await fetch(`/api/project-config?project=${encodeURIComponent(c)}`),b=await a.json();if(b.success){u(b.data);let a={};Object.keys(b.data.envs).forEach(c=>{let d=b.data.envs[c],e="";e=d.proxyEnv[d.currentProxy]?d.proxyEnv[d.currentProxy]:d.currentProxy;let f="";f=d.proxyEnv[d.currentProxy]?d.currentProxy:"custom",a[c]={selectedProxy:e||"",selectedOption:f}}),A(a),C({mockingIntercept:b.data.mockingIntercept||!1,mockOpen:b.data.mockOpen||!1})}else y(b.error)}catch(a){y("获取项目配置失败"),console.error("获取项目配置失败:",a)}finally{w(!1)}})()},[c]);let aQ=(0,e.useCallback)(async()=>{if(c){I(!0);try{let a=await fetch(`/api/mock-file?project=${encodeURIComponent(c)}`),b=await a.json();b.success?G(b.data):console.error("获取Mock数据失败:",b.error)}catch(a){console.error("获取Mock数据失败:",a)}finally{I(!1)}}},[c]);(0,e.useEffect)(()=>{if(t&&c){let a=Object.keys(t.envs),b=new URLSearchParams(window.location.search).get("tab"),c="";(c=M&&("mock"===M||a.includes(M))?M:b&&("mock"===b||a.includes(b))?b:a.length>0?a[0]:"mock")!==M&&(N(c),"mock"===c&&aQ())}},[t,c,M,aQ]),(0,e.useEffect)(()=>{aM()},[]);let aR=(0,e.useCallback)(async()=>{if(!c||!t)return;let a={};for(let b of Object.keys(t.envs))a[`${b}`]={loading:!0,running:!1};aB(a);let b=Object.keys(t.envs).map(async a=>{try{let b=await fetch(`/api/process/status?projectName=${encodeURIComponent(c)}&envName=${encodeURIComponent(a)}`),d=await b.json();if(d.success&&d.data)return{envName:a,status:d.data}}catch(b){console.error(`获取环境 ${a} 状态失败:`,b)}return{envName:a,status:{running:!1}}}),d=await Promise.all(b),e={};d.forEach(({envName:a,status:b})=>{e[a]={running:b.running||!1,pid:b.pid,startTime:b.startTime,port:b.port,loading:!1}}),aB(e)},[c,t]),aS=async a=>{if(!c||!t)return;let b=t.envs[a];if(!b.startCommand)return void bh("error","该环境未配置启动命令");aB(b=>({...b,[a]:{...b[a],loading:!0}}));try{let d=await fetch("/api/process/start",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:c,envName:a,startCommand:b.startCommand})}),e=await d.json();if(e.success)aB(b=>({...b,[a]:{running:!0,pid:e.data.pid,startTime:e.data.startTime,port:e.data.port,loading:!1}}));else throw Error(e.error||"启动失败")}catch(b){console.error("启动进程失败:",b),bh("error",`启动失败: ${b instanceof Error?b.message:"未知错误"}`),aB(b=>({...b,[a]:{...b[a],loading:!1}}))}},aT=async a=>{if(c){aB(b=>({...b,[a]:{...b[a],loading:!0}}));try{let b=await fetch(`/api/process/start?projectName=${encodeURIComponent(c)}&envName=${encodeURIComponent(a)}`,{method:"DELETE"}),d=await b.json();if(d.success)aB(b=>({...b,[a]:{running:!1,loading:!1}}));else throw Error(d.error||"停止失败")}catch(b){console.error("停止进程失败:",b),bh("error",`停止失败: ${b instanceof Error?b.message:"未知错误"}`),aB(b=>({...b,[a]:{...b[a],loading:!1}}))}}},[aU,aV]=(0,e.useState)(null),aW=a=>{if(!c)return;aU&&aU.close(),aH([]);let b=new EventSource(`/api/process/logs/stream?projectName=${encodeURIComponent(c)}&envName=${encodeURIComponent(a)}`);b.onmessage=a=>{try{let b=JSON.parse(a.data);"log"===b.type?aH(a=>{let c=[...a,b.content];return c.length>1e3?c.slice(-1e3):c}):"init"===b.type?aH([b.message]):"end"===b.type&&aH(a=>[...a,`[系统] ${b.message}`])}catch(a){console.error("解析日志数据失败:",a)}},b.onerror=a=>{console.error("日志流错误:",a),b.close(),aV(null)},aV(b)},aX=()=>{aU&&(aU.close(),aV(null))},aY=a=>{aF(a),aD(!0),aW(a)},aZ=()=>{aD(!1),aH([]),aF(""),aX()};(0,e.useEffect)(()=>{if(t&&c){aR();let a=setInterval(()=>{aR()},5e3);return()=>clearInterval(a)}},[t,c,aR]);let a$=(a,b)=>{if(!t)return;let c=t.envs[a],d="";d="custom"===b?z[a]?.selectedOption==="custom"?z[a]?.selectedProxy||"":c.proxyEnv.custom||"":c.proxyEnv[b]||"",A(c=>({...c,[a]:{...c[a],selectedProxy:d,selectedOption:b,saveMessage:""}}))},a_=(a,b)=>{A(c=>({...c,[a]:{...c[a],selectedProxy:b,saveMessage:""}}))},a0=async a=>{C(b=>({...b,mockingIntercept:a,saving:!0,saveMessage:""}));try{let b=await fetch("/api/project-config",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:c,projectConfig:{mockingIntercept:a,mockOpen:B.mockOpen}})}),d=await b.json();if(d.success)u(b=>b?{...b,mockingIntercept:a}:b),C(a=>({...a,saving:!1,saveMessage:"Mock拦截配置已保存"})),setTimeout(()=>{C(a=>({...a,saveMessage:""}))},2e3);else throw Error(d.error||"保存失败")}catch(b){console.error("保存Mock拦截配置失败:",b),C(c=>({...c,mockingIntercept:!a,saving:!1,saveMessage:`保存失败: ${b instanceof Error?b.message:"未知错误"}`})),setTimeout(()=>{C(a=>({...a,saveMessage:""}))},3e3)}},a1=async a=>{C(b=>({...b,mockOpen:a,saving:!0,saveMessage:""}));try{let b=await fetch("/api/project-config",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:c,projectConfig:{mockingIntercept:B.mockingIntercept,mockOpen:a}})}),d=await b.json();if(d.success)u(b=>b?{...b,mockOpen:a}:b),C(a=>({...a,saving:!1,saveMessage:"Mock开启配置已保存"})),setTimeout(()=>{C(a=>({...a,saveMessage:""}))},2e3);else throw Error(d.error||"保存失败")}catch(b){console.error("保存Mock开启配置失败:",b),C(c=>({...c,mockOpen:!a,saving:!1,saveMessage:`保存失败: ${b instanceof Error?b.message:"未知错误"}`})),setTimeout(()=>{C(a=>({...a,saveMessage:""}))},3e3)}},a2=async a=>{if(!t||!c)return;let b=z[a]?.selectedProxy?.trim();if(!b)return void A(b=>({...b,[a]:{...b[a],saveMessage:"请先选择或填写代理地址"}}));let d=z[a]?.selectedOption,e="custom"===d;A(b=>({...b,[a]:{...b[a],saving:!0,saveMessage:""}}));try{let f={projectName:c,envName:a,newProxy:e?"custom":d||""};e&&(f.customProxyUrl=b);let g=await fetch("/api/project-config",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(f)}),h=await g.json();h.success?(u(c=>{if(!c)return c;let d={...c.envs};return d[a]={...d[a],currentProxy:h.data.currentProxy},"custom"===h.data.currentProxy&&(d[a].proxyEnv={...d[a].proxyEnv,custom:b}),{...c,envs:d}}),A(b=>({...b,[a]:{...b[a],saving:!1,saveMessage:"保存成功"}}))):A(b=>({...b,[a]:{...b[a],saving:!1,saveMessage:`保存失败: ${h.error}`}}))}catch(b){console.error("保存配置失败:",b),A(b=>({...b,[a]:{...b[a],saving:!1,saveMessage:"保存失败: 网络错误"}}))}},a3=async()=>{if(window.confirm("确定要一键关闭所有Mock吗?"))try{let a=await fetch("/api/cleanup-mock",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:c})});(await a.json()).success&&await aQ()}catch(a){console.error("清空Mock配置失败:",a)}},a4=async()=>{if(window.confirm("确定要一键开启所有Mock吗?"))try{let a=await fetch("/api/open-all-mock",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:c})});(await a.json()).success&&await aQ()}catch(a){console.error("清空Mock配置失败:",a)}},a5=async(a,b,d)=>{if(c)try{let e=await fetch("/api/mock-setting",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:c,apiName:a,method:b,currentSite:d})}),f=await e.json();f.success?G(c=>c?{...c,mockFiles:c.mockFiles.map(c=>c.apiName===a?{...c,methods:c.methods.map(a=>a.method===b?{...a,setting:{...a.setting,currentSite:d}}:a)}:c)}:c):(console.error("更新场景失败:",f.error),bh("error",`更新场景失败: ${f.error}`))}catch(a){console.error("更新场景失败:",a),bh("error","更新场景失败: 网络错误")}},a6=async(a,b,d)=>{if(c){T(!0),X(!0);try{let e=await fetch(`/api/mock-file-content?project=${encodeURIComponent(c)}&apiName=${encodeURIComponent(a)}&method=${encodeURIComponent(b)}&siteName=${encodeURIComponent(d)}`),f=await e.json();f.success?(P({projectName:c,apiName:a,method:b,siteName:d,content:f.data.content}),R(!0)):(console.error("获取文件内容失败:",f.error),bh("error",`获取文件内容失败: ${f.error}`))}catch(a){console.error("获取文件内容失败:",a),bh("error","获取文件内容失败: 网络错误")}finally{T(!1)}}},a7=async()=>{if(O){V(!0);try{let a=await fetch("/api/mock-file-content",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(O)}),b=await a.json();b.success?(R(!1),P(null)):(console.error("保存文件失败:",b.error),bh("error",`保存文件失败: ${b.error}`))}catch(a){console.error("保存文件失败:",a),bh("error","保存文件失败: 网络错误")}finally{V(!1)}}},a8=()=>{R(!1),P(null),X(!0)},a9=(a,b)=>{"siteName"===a&&ac||ah(c=>({...c,[a]:b}))},ba=(a,b)=>{let c=a.toUpperCase(),d=b.replace(/\//g,"_").replace(/^_/,"");switch(c){case"GET":return`const Mock = require('mockjs');
6
6
 
7
7
  module.exports = Mock.mock({
8
8
  "code": 200,
@@ -56,6 +56,6 @@ module.exports = Mock.mock({
56
56
  "id|1-100": 1,
57
57
  "timestamp": "@now('yyyy-MM-dd HH:mm:ss')"
58
58
  }
59
- });`}},a2=(a,b,c)=>{if(!E)return!1;let d=a.replace(/\//g,"_").replace(/^_/,""),e=E.mockFiles.find(a=>a.apiName===d);if(!e)return!1;let f=e.methods.find(a=>a.method.toLowerCase()===b.toLowerCase());return!!f&&!!f.files.find(a=>a.siteName===c)},a3=async()=>{if(!af.apiPath.trim())return void a8("error","请输入接口地址");if(a2(af.apiPath,af.method,af.siteName))return void a8("error",`接口 ${af.apiPath} [${af.method.toUpperCase()}] 的场景 "${af.siteName}" 已存在,不能重复创建`);ak(!0);try{let a=af.apiPath.replace(/\//g,"_").replace(/^_/,""),b=N?.content??a1(af.method,af.apiPath),d=await fetch("/api/mock-file",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:c,apiName:a,method:af.method.toLowerCase(),siteName:af.siteName,content:b})}),e=await d.json();if(e.success)af.mockOpen&&await a7(a,af.method.toLowerCase(),af.siteName,!0),ag({apiPath:"",method:"GET",siteName:"默认场景",mockOpen:!0}),ac(!1),await aH(),a8("success","Mock文件创建成功");else throw Error(e.error||"创建失败")}catch(a){console.error("创建Mock文件失败:",a),a8("error",`创建Mock文件失败: ${a instanceof Error?a.message:"未知错误"}`)}finally{ak(!1)}},a4=(a,b,d)=>{console.log("新增场景点击:",{apiName:a,method:b,apiPath:d}),ai({apiName:a,method:b,apiPath:d});let e={apiPath:d,method:b.toUpperCase(),siteName:"",mockOpen:!0};console.log("设置表单数据:",e),ag(e),ae(!0);let f=a1(e.method,e.apiPath);O({projectName:c||"",apiName:a,method:b.toLowerCase(),siteName:"",content:f||""})},a5=(a,b,c)=>{if(!E)return!1;let d=E.mockFiles.find(b=>b.apiName===a);if(!d)return!1;let e=d.methods.find(a=>a.method.toLowerCase()===b.toLowerCase());return!!e&&!!e.files.find(a=>a.siteName===c)},a6=async()=>{if(!ah||!af.siteName.trim())return void a8("error","请输入场景名称");if(a5(ah.apiName,ah.method,af.siteName))return void a8("error",`接口 ${ah.apiPath} [${ah.method.toUpperCase()}] 的场景 "${af.siteName}" 已存在`);ak(!0);try{let a=N?.content??a1(ah.method,ah.apiPath);console.log("defaultContent",a,N);let b=await fetch("/api/mock-file",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:c,apiName:ah.apiName,method:ah.method.toLowerCase(),siteName:af.siteName,content:a})}),d=await b.json();if(d.success){if(af.mockOpen&&await a7(ah.apiName,ah.method,af.siteName,!0),ag({apiPath:"",method:"GET",siteName:"默认场景",mockOpen:!0}),s)try{let a=await fetch("/api/mock-setting",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:s.projectName,apiName:ah.apiName,method:ah.method,currentSite:af.siteName})}),b=await a.json();b.success||console.warn("切换到新场景失败:",b.error)}catch(a){console.warn("切换到新场景失败:",a)}try{await a7(ah.apiName,ah.method,af.siteName,!0)}catch(a){console.warn("自动开启新场景失败:",a)}ae(!1),ai(null),await aH(),a8("success","场景创建成功")}else throw Error(d.error||"创建失败")}catch(a){console.error("创建场景失败:",a),a8("error",`创建场景失败: ${a instanceof Error?a.message:"未知错误"}`)}finally{ak(!1)}},a7=async(a,b,c,d)=>{if(s)try{let e=await fetch("/api/mock-open-status",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:s.projectName,apiName:a,method:b,siteName:c,isOpen:d})}),f=await e.json();f.success?await aH():console.error("更新Mock开启状态失败:",f.error)}catch(a){console.error("更新Mock开启状态失败:",a)}},a8=(a,b)=>{aq({open:!0,type:a,message:b}),setTimeout(()=>{aq({open:!1,type:"success",message:""})},3e3)},a9=(a,b,c)=>{am({open:!0,apiName:a,method:b,siteName:c})},ba=async()=>{if(!s)return;let{apiName:a,method:b,siteName:c}=al;try{let d=await fetch(`/api/mock-file?project=${encodeURIComponent(s.projectName)}&apiName=${encodeURIComponent(a)}&method=${encodeURIComponent(b)}&siteName=${encodeURIComponent(c)}`,{method:"DELETE"}),e=await d.json();if(e.success){let a=window.scrollY;await aH(),window.scrollTo(0,a),a8("success","场景删除成功")}else console.error("删除场景失败:",e.error),a8("error",`删除场景失败: ${e.error}`)}catch(a){console.error("删除场景失败:",a),a8("error","删除场景失败: 网络错误")}finally{am({open:!1,apiName:"",method:"",siteName:""})}},bb=(a,b)=>{ao({open:!0,apiName:a,apiPath:b})},bc=async()=>{if(!s)return;let{apiName:a}=an;try{let b=await fetch(`/api/delete-mock-api?project=${encodeURIComponent(s.projectName)}&apiName=${encodeURIComponent(a)}`,{method:"DELETE"}),c=await b.json();if(c.success){let a=window.scrollY;await aH(),window.scrollTo(0,a),a8("success","接口删除成功")}else console.error("删除接口失败:",c.error),a8("error",`删除接口失败: ${c.error}`)}catch(a){console.error("删除接口失败:",a),a8("error","删除接口失败: 网络错误")}finally{ao({open:!1,apiName:"",apiPath:""})}},bd=a=>{as(a),J(1)};if(u)return(0,d.jsx)("main",{className:"container mx-auto p-4 sm:p-6 md:p-8",children:(0,d.jsx)("div",{className:"text-center py-8",children:(0,d.jsx)("p",{children:"加载中..."})})});if(w||!s)return(0,d.jsxs)("main",{className:"container mx-auto p-4 sm:p-6 md:p-8",children:[(0,d.jsxs)("div",{className:"flex justify-between items-center mb-6",children:[(0,d.jsx)("h1",{className:"text-2xl font-bold",children:"项目配置"}),(0,d.jsxs)("div",{className:"flex gap-2",children:[c&&(0,d.jsx)(g.Button,{variant:"default",onClick:aG,disabled:C,children:C?"打开中...":"在 Cursor 中打开"}),(0,d.jsx)(g.Button,{variant:"outline",onClick:aE,children:"返回初始化页面"})]})]}),(0,d.jsx)("div",{className:"text-center text-red-500 py-8",children:(0,d.jsx)("p",{children:w||"未找到项目配置"})})]});let be=Object.keys(s.envs);return(0,d.jsxs)("main",{className:"container mx-auto p-4 sm:p-6 md:p-8",children:[(0,d.jsxs)("div",{className:"flex justify-between items-center mb-6",children:[(0,d.jsxs)("div",{className:"flex items-center gap-4",children:[(0,d.jsxs)("h1",{className:"text-2xl font-bold",children:[s.projectName," - 项目配置"]}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)(k.Label,{className:"text-sm font-medium text-gray-600",children:"切换项目:"}),(0,d.jsxs)(i.Select,{value:c||"",onValueChange:d=>{if(d===c)return;let e=a.get("tab"),f=`/configuration?project=${encodeURIComponent(d)}${e?`&tab=${e}`:""}`;b.push(f)},disabled:_,children:[(0,d.jsx)(i.SelectTrigger,{className:"w-40",children:(0,d.jsx)(i.SelectValue,{placeholder:_?"加载中...":"选择项目"})}),(0,d.jsx)(i.SelectContent,{children:Z.map(a=>(0,d.jsx)(i.SelectItem,{value:a.name,children:(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:`w-2 h-2 rounded-full ${"existing"===a.status?"bg-green-500":"failed"===a.status?"bg-red-500":"bg-yellow-500"}`}),(0,d.jsx)("span",{children:a.name})]})},a.name))})]})]}),(0,d.jsx)("div",{className:"ml-4",children:(0,d.jsx)(r.default,{projectName:c||"",compact:!0})})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(g.Button,{variant:"default",onClick:aG,disabled:C,children:C?"打开中...":"在 Cursor 中打开"}),(0,d.jsx)(g.Button,{variant:"outline",onClick:aE,children:"返回初始化页面"})]})]}),be.length>0?(0,d.jsxs)(h.Tabs,{value:L||be[0],onValueChange:a=>{M(a),"mock"===a&&aH()},className:"w-full",children:[(0,d.jsxs)(h.TabsList,{className:"grid w-full",style:{gridTemplateColumns:`repeat(${be.length+1}, 1fr)`},children:[be.map(a=>(0,d.jsx)(h.TabsTrigger,{value:a,className:"capitalize relative",children:(0,d.jsxs)("span",{className:"flex items-center gap-2",children:[a,at[a]?.running&&(0,d.jsx)("span",{className:"w-2 h-2 bg-green-500 rounded-full animate-pulse",title:"运行中"})]})},a)),(0,d.jsx)(h.TabsTrigger,{value:"mock",className:"capitalize",children:"Mock配置"})]}),be.map(a=>{let b=s.envs[a],c=Object.entries(b.proxyEnv),e=y[a]?.selectedProxy||"",f=y[a]?.selectedOption||"",l=b.currentProxy,m=b.proxyEnv[l]||l,n=b.proxyEnv[l]?l:"custom";return(0,d.jsxs)(h.TabsContent,{value:a,className:"space-y-6",children:[(0,d.jsxs)("div",{className:"p-6 bg-gray-50 rounded-lg",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,d.jsx)("h3",{className:"text-lg font-semibold",children:"开发服务器控制"}),(0,d.jsx)("div",{className:"flex items-center gap-4",children:at[a]?.running?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("span",{className:"flex items-center gap-2 text-sm text-green-600",children:[(0,d.jsx)("span",{className:"w-2 h-2 bg-green-500 rounded-full animate-pulse"}),"运行中 (PID: ",at[a]?.pid,")"]}),(0,d.jsx)(g.Button,{variant:"outline",size:"sm",onClick:()=>aP(a),children:"查看日志"}),(0,d.jsx)(g.Button,{variant:"destructive",size:"sm",onClick:()=>aK(a),disabled:at[a]?.loading,children:at[a]?.loading?"处理中...":"停止"})]}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("span",{className:"flex items-center gap-2 text-sm text-gray-500",children:[(0,d.jsx)("span",{className:"w-2 h-2 bg-gray-400 rounded-full"}),"未运行"]}),(0,d.jsx)(g.Button,{variant:"outline",size:"sm",onClick:()=>aP(a),children:"查看日志"}),(0,d.jsx)(g.Button,{variant:"default",size:"sm",onClick:()=>aJ(a),disabled:at[a]?.loading||!b.startCommand,children:at[a]?.loading?"处理中...":"启动"})]})})]}),b.startCommand?(0,d.jsxs)("div",{className:"text-sm text-gray-600",children:[(0,d.jsx)("span",{className:"font-medium",children:"启动命令:"})," ",(0,d.jsx)("code",{className:"px-2 py-1 bg-gray-200 rounded",children:b.startCommand})]}):(0,d.jsx)("div",{className:"text-sm text-yellow-600",children:"⚠️ 该环境未配置启动命令"}),b.host&&(0,d.jsxs)("div",{className:"text-sm text-gray-600 mt-2",children:[(0,d.jsx)("span",{className:"font-medium",children:"访问地址:"}),at[a]?.running?(0,d.jsx)("a",{href:b.host,target:"_blank",rel:"noopener noreferrer",className:"ml-2 text-blue-600 hover:underline",children:b.host}):(0,d.jsx)("span",{className:"ml-2",children:b.host})]})]}),(0,d.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6",children:[(0,d.jsxs)("div",{className:"p-6 bg-gray-50 rounded-lg",children:[(0,d.jsxs)("h3",{className:"text-lg font-semibold mb-4",children:[a," 环境配置"]}),(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)(k.Label,{className:"block text-sm font-medium mb-2",children:"接口代理环境切换"}),(0,d.jsxs)(i.Select,{value:f,onValueChange:b=>aR(a,b),children:[(0,d.jsx)(i.SelectTrigger,{className:"w-full",children:(0,d.jsx)(i.SelectValue,{placeholder:"选择代理环境"})}),(0,d.jsx)(i.SelectContent,{children:c.map(([a,b])=>(0,d.jsxs)(i.SelectItem,{value:a,children:[a,"(",b,")"]},a))})]})]}),m&&(0,d.jsxs)("div",{className:"p-3 bg-blue-50 rounded-md",children:[(0,d.jsxs)("p",{className:"text-sm text-blue-700",children:["当前项目接口已代理至:",n," 环境"]}),(0,d.jsxs)("p",{className:"text-sm text-blue-600",children:["代理地址为:",m]})]}),"custom"===f&&(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)(k.Label,{className:"block text-sm font-medium",children:"自定义代理地址"}),(0,d.jsx)(j.Input,{type:"url",placeholder:"请输入自定义代理地址 (如: http://localhost:52741)",value:e,onChange:b=>aS(a,b.target.value),className:"w-full"}),(0,d.jsx)("p",{className:"text-xs text-gray-500",children:"请输入完整的代理地址,包括协议 (http:// 或 https://)"})]}),(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsx)(g.Button,{onClick:()=>aV(a),disabled:y[a]?.saving,className:"w-full sm:w-auto",children:y[a]?.saving?"保存中...":"保存配置"}),y[a]?.saveMessage&&(0,d.jsx)("span",{className:`text-sm ml-3 ${y[a]?.saveMessage==="保存成功"?"text-green-600":"text-red-600"}`,children:y[a]?.saveMessage})]})]})]}),(0,d.jsx)(p.default,{currentProjectName:s.projectName,currentEnvName:a})]})]},a)}),(0,d.jsx)(h.TabsContent,{value:"mock",className:"space-y-6",children:(0,d.jsxs)("div",{className:"p-6 bg-gray-50 rounded-lg",children:[(0,d.jsx)("h3",{className:"text-lg font-semibold mb-4",children:"Mock配置"}),(0,d.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6 mb-6",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsxs)("div",{className:"space-y-1",children:[(0,d.jsx)(k.Label,{className:"text-sm font-medium",children:"Mock拦截"}),(0,d.jsx)("p",{className:"text-xs text-gray-500",children:"启用或禁用Mock拦截功能"})]}),(0,d.jsx)(l.Switch,{checked:A.mockingIntercept,onCheckedChange:aT})]}),(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsxs)("div",{className:"space-y-1",children:[(0,d.jsx)(k.Label,{className:"text-sm font-medium",children:"Mock开启"}),(0,d.jsx)("p",{className:"text-xs text-gray-500",children:"启用或禁用Mock功能"})]}),(0,d.jsx)(l.Switch,{checked:A.mockOpen,onCheckedChange:aU})]})]}),A.saveMessage&&(0,d.jsx)("div",{className:"mb-6",children:(0,d.jsx)("span",{className:`text-sm ${A.saveMessage.includes("已保存")?"text-green-600":"text-red-600"}`,children:A.saveMessage})}),(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsx)("h4",{className:"text-md font-medium",children:"Mock接口列表"}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)(g.Button,{onClick:()=>{ac(!0);let a=a1(af.method,af.apiPath);O({projectName:c||"",apiName:af.apiPath,method:af.method.toLowerCase(),siteName:"",content:a||""})},variant:"default",size:"sm",children:"新建"}),(0,d.jsx)(g.Button,{onClick:aH,disabled:G,variant:"outline",size:"sm",children:G?"加载中...":"刷新"}),(0,d.jsx)(g.Button,{onClick:aW,variant:"outline",size:"sm",children:"一键关闭"}),(0,d.jsx)(g.Button,{onClick:aX,variant:"outline",size:"sm",children:"一键开启"})]})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsxs)("div",{className:"relative flex-1 max-w-md",children:[(0,d.jsx)(j.Input,{placeholder:"搜索接口地址...",value:ar,onChange:a=>bd(a.target.value),className:"pr-8"}),ar&&(0,d.jsx)(g.Button,{variant:"ghost",size:"sm",onClick:()=>{as(""),J(1)},className:"absolute right-1 top-1/2 transform -translate-y-1/2 h-6 w-6 p-0 hover:bg-gray-100",children:"×"})]}),ar&&(0,d.jsxs)("span",{className:"text-sm text-gray-500",children:['搜索关键词: "',ar,'"']})]}),G?(0,d.jsx)("div",{className:"text-center py-8",children:(0,d.jsx)("p",{className:"text-gray-500",children:"加载Mock数据中..."})}):E&&E.mockFiles.length>0?(()=>{let a=[];E.mockFiles.forEach(b=>{b.methods.forEach(c=>{let d=b.apiName.replace(/_/g,"/"),e=c.files.map(a=>a.siteName),f=c.setting?.currentSite||e[0]||"",g=c.setting?.open||[],h=g.includes(f);a.push({apiPath:d,method:c.method.toUpperCase(),currentSite:f,availableSites:e,apiName:b.apiName,isOpen:h,openSites:g})})});let b=ar.trim()?a.filter(a=>a.apiPath.toLowerCase().includes(ar.toLowerCase())):a,c=b.length,e=Math.ceil(c/K),f=(I-1)*K,h=f+K,j=b.slice(f,h);return(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsxs)(m.Table,{children:[(0,d.jsx)(m.TableHeader,{children:(0,d.jsxs)(m.TableRow,{children:[(0,d.jsx)(m.TableHead,{children:"接口地址"}),(0,d.jsx)(m.TableHead,{children:"请求方法"}),(0,d.jsx)(m.TableHead,{children:"当前场景"}),(0,d.jsx)(m.TableHead,{children:"开启mock"}),(0,d.jsx)(m.TableHead,{children:"操作"})]})}),(0,d.jsx)(m.TableBody,{children:j.map((a,b)=>(0,d.jsxs)(m.TableRow,{children:[(0,d.jsx)(m.TableCell,{className:"font-medium",children:a.apiPath}),(0,d.jsx)(m.TableCell,{children:(0,d.jsx)("span",{className:`px-2 py-1 rounded text-xs font-medium ${"GET"===a.method?"bg-green-100 text-green-800":"POST"===a.method?"bg-blue-100 text-blue-800":"PUT"===a.method?"bg-yellow-100 text-yellow-800":"DELETE"===a.method?"bg-red-100 text-red-800":"bg-gray-100 text-gray-800"}`,children:a.method})}),(0,d.jsx)(m.TableCell,{children:(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsxs)(i.Select,{value:a.currentSite,onValueChange:b=>aY(a.apiName,a.method.toLowerCase(),b),children:[(0,d.jsx)(i.SelectTrigger,{className:"w-32",children:(0,d.jsx)(i.SelectValue,{})}),(0,d.jsx)(i.SelectContent,{children:a.availableSites.map(a=>(0,d.jsx)(i.SelectItem,{value:a,children:a},a))})]}),a.availableSites.length>1&&(0,d.jsx)(g.Button,{variant:"ghost",size:"sm",onClick:()=>a9(a.apiName,a.method.toLowerCase(),a.currentSite),className:"h-8 w-8 p-0 text-red-500 hover:text-red-700 hover:bg-red-50",title:"删除当前场景",children:(0,d.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,d.jsx)("path",{d:"M3 6h18"}),(0,d.jsx)("path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"}),(0,d.jsx)("path",{d:"M8 6V4c0-1 1-2 2-2h4c0 1 1 2 2 2v2"})]})})]})}),(0,d.jsx)(m.TableCell,{children:(0,d.jsx)(l.Switch,{checked:a.isOpen,onCheckedChange:b=>a7(a.apiName,a.method.toLowerCase(),a.currentSite,b)})}),(0,d.jsx)(m.TableCell,{children:(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(g.Button,{variant:"outline",size:"sm",onClick:()=>aZ(a.apiName,a.method.toLowerCase(),a.currentSite),disabled:R,children:R?"加载中...":"编辑"}),(0,d.jsx)(g.Button,{variant:"outline",size:"sm",onClick:()=>a4(a.apiName,a.method.toLowerCase(),a.apiPath),disabled:aj,children:"新增场景"}),(0,d.jsx)(g.Button,{variant:"outline",size:"sm",onClick:()=>bb(a.apiName,a.apiPath),className:"text-red-500 hover:text-red-700 hover:border-red-300",children:"删除接口"})]})})]},`${a.apiName}-${a.method}-${b}`))})]}),e>1&&(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsxs)("div",{className:"text-sm text-gray-500",children:["显示 ",f+1,"-",Math.min(h,c)," 条,共 ",c," 条"]}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)(g.Button,{variant:"outline",size:"sm",onClick:()=>J(a=>Math.max(1,a-1)),disabled:1===I,children:"上一页"}),(0,d.jsxs)("span",{className:"text-sm",children:[I," / ",e]}),(0,d.jsx)(g.Button,{variant:"outline",size:"sm",onClick:()=>J(a=>Math.min(e,a+1)),disabled:I===e,children:"下一页"})]})]})]})})():(0,d.jsxs)("div",{className:"text-center py-8",children:[(0,d.jsx)("p",{className:"text-gray-500",children:"暂无Mock接口数据"}),(0,d.jsx)("p",{className:"text-xs text-gray-400 mt-1",children:"请先创建Mock文件"})]})]})]})})]}):(0,d.jsx)("div",{className:"text-center text-gray-500 py-8",children:(0,d.jsx)("p",{children:"该项目没有配置环境信息"})}),(0,d.jsx)(n.Dialog,{open:P||ab||ad,onOpenChange:a=>{a||(Q(!1),ac(!1),ae(!1),ai(null))},children:(0,d.jsxs)(n.DialogContent,{className:"w-screen h-screen max-w-none max-h-none m-0 rounded-none overflow-hidden flex flex-col",children:[(0,d.jsxs)(n.DialogHeader,{className:"flex-shrink-0 border-b pb-4",children:[(0,d.jsx)(n.DialogTitle,{children:ab?"新建Mock文件":ad?"新增场景":"编辑Mock文件"}),(0,d.jsx)(n.DialogDescription,{children:ab?"创建一个新的Mock接口文件":ad&&ah?(0,d.jsxs)(d.Fragment,{children:["为接口 ",ah.apiPath," [",ah.method.toUpperCase(),"] 新增场景"]}):N?(0,d.jsxs)(d.Fragment,{children:["编辑 ",N.apiName.replace(/_/g,"/")," - ",N.method.toUpperCase()," - ",N.siteName,".cjs"]}):null})]}),(ab||ad)&&(0,d.jsxs)("div",{className:"flex-shrink-0 border-b pb-4",children:[(0,d.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)(k.Label,{htmlFor:"apiPath",className:"text-sm font-medium",children:"接口地址"}),ad?(0,d.jsx)("div",{className:"px-3 py-2 bg-gray-50 border border-gray-200 rounded-md text-sm text-gray-600",children:af.apiPath}):(0,d.jsx)(j.Input,{id:"apiPath",placeholder:"/api/user/info",value:af.apiPath,onChange:a=>a0("apiPath",a.target.value)})]}),(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)(k.Label,{htmlFor:"method",className:"text-sm font-medium",children:"请求方法"}),ad?(0,d.jsx)("div",{className:"px-3 py-2 bg-gray-50 border border-gray-200 rounded-md text-sm text-gray-600",children:af.method}):(0,d.jsxs)(i.Select,{value:af.method,onValueChange:a=>a0("method",a),children:[(0,d.jsx)(i.SelectTrigger,{children:(0,d.jsx)(i.SelectValue,{})}),(0,d.jsxs)(i.SelectContent,{children:[(0,d.jsx)(i.SelectItem,{value:"GET",children:"GET"}),(0,d.jsx)(i.SelectItem,{value:"POST",children:"POST"}),(0,d.jsx)(i.SelectItem,{value:"PUT",children:"PUT"}),(0,d.jsx)(i.SelectItem,{value:"DELETE",children:"DELETE"}),(0,d.jsx)(i.SelectItem,{value:"PATCH",children:"PATCH"})]})]})]}),(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)(k.Label,{htmlFor:"siteName",className:"text-sm font-medium",children:"场景名称"}),ab?(0,d.jsx)("div",{className:"px-3 py-2 bg-gray-50 border border-gray-200 rounded-md text-sm text-gray-600",children:"默认场景"}):(0,d.jsx)(j.Input,{id:"siteName",placeholder:"请输入场景名称",value:af.siteName,onChange:a=>a0("siteName",a.target.value)})]}),(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)(k.Label,{htmlFor:"mockOpen",className:"text-sm font-medium",children:"开启Mock"}),(0,d.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,d.jsx)(l.Switch,{id:"mockOpen",checked:af.mockOpen,onCheckedChange:a=>a0("mockOpen",a)}),(0,d.jsx)("span",{className:"text-sm text-gray-600",children:af.mockOpen?"开启":"关闭"})]})]})]}),ab&&af.apiPath.trim()&&af.siteName.trim()&&a2(af.apiPath,af.method,af.siteName)&&(0,d.jsx)("div",{className:"mt-4 p-3 bg-red-50 border border-red-200 rounded-md",children:(0,d.jsx)("div",{className:"flex items-center",children:(0,d.jsxs)("span",{className:"text-red-600 text-sm",children:["⚠️ 接口 ",af.apiPath," [",af.method.toUpperCase(),'] 的场景 "',af.siteName,'" 已存在']})})}),ad&&ah&&af.siteName.trim()&&a5(ah.apiName,ah.method,af.siteName)&&(0,d.jsx)("div",{className:"mt-4 p-3 bg-red-50 border border-red-200 rounded-md",children:(0,d.jsx)("div",{className:"flex items-center",children:(0,d.jsxs)("span",{className:"text-red-600 text-sm",children:['⚠️ 场景 "',af.siteName,'" 已存在']})})})]}),(0,d.jsx)("div",{className:"flex-1 flex flex-col space-y-4 py-4",children:(0,d.jsxs)("div",{className:"flex-1 flex flex-col",children:[(0,d.jsx)(k.Label,{className:"text-sm font-medium mb-2",children:"文件内容"}),(0,d.jsxs)("div",{className:"flex-1 border rounded-md overflow-hidden relative",children:[V&&(0,d.jsx)("div",{className:"absolute inset-0 bg-gray-50 flex items-center justify-center z-10",children:(0,d.jsx)("p",{className:"text-gray-500",children:"编辑器加载中..."})}),(0,d.jsx)(o.default,{height:"100%",defaultLanguage:"javascript",value:N?.content||"",onChange:a=>{O(b=>b?{...b,content:a||""}:null)},onMount:async a=>{console.log("编辑器挂载,模式:",{isCreateMode:ab,isAddSceneMode:ad,createFormData:af}),Y(a),W(!1),setTimeout(()=>aD(a),500)},loading:(0,d.jsx)("div",{className:"flex items-center justify-center h-full",children:(0,d.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}},ab?"create":ad?"addscene":"edit")]})]})}),(0,d.jsxs)(n.DialogFooter,{className:"flex justify-between flex-shrink-0 border-t pt-4",children:[(0,d.jsx)(g.Button,{variant:"secondary",onClick:aB,disabled:!X||V,children:"格式化代码"}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(g.Button,{variant:"outline",onClick:()=>{ab?(ac(!1),ag({apiPath:"",method:"GET",siteName:"默认场景",mockOpen:!0})):ad?(ae(!1),ai(null),ag({apiPath:"",method:"GET",siteName:"默认场景",mockOpen:!0})):a_()},children:"取消"}),ab?(0,d.jsx)(g.Button,{onClick:a3,disabled:aj||!af.apiPath.trim()||!af.siteName.trim()||a2(af.apiPath,af.method,af.siteName),children:aj?"创建中...":"创建"}):ad?(0,d.jsx)(g.Button,{onClick:a6,disabled:aj||!af.siteName.trim()||!!ah&&a5(ah.apiName,ah.method,af.siteName),children:aj?"创建中...":"创建"}):(0,d.jsx)(g.Button,{onClick:a$,disabled:T,children:T?"保存中...":"保存"})]})]})]})}),(0,d.jsx)(n.Dialog,{open:av,onOpenChange:a=>{a||aQ()},children:(0,d.jsxs)(n.DialogContent,{className:"max-w-5xl h-[85vh] max-h-[85vh] flex flex-col p-0",children:[(0,d.jsxs)(n.DialogHeader,{className:"px-6 pt-6 pb-4",children:[(0,d.jsxs)(n.DialogTitle,{className:"flex items-center justify-between",children:[(0,d.jsxs)("span",{children:["进程日志 - ",c," - ",ax]}),(0,d.jsx)("span",{className:"flex items-center gap-2 text-sm font-normal",children:aL&&(0,d.jsxs)("span",{className:"flex items-center gap-1 text-green-600",children:[(0,d.jsx)("span",{className:"w-2 h-2 bg-green-500 rounded-full animate-pulse"}),"实时连接"]})})]}),(0,d.jsx)(n.DialogDescription,{children:"实时显示进程输出日志"})]}),(0,d.jsx)("div",{className:"flex-1 min-h-0 bg-gray-900 mx-6 rounded-md overflow-hidden",children:(0,d.jsx)(q.default,{logs:az})}),(0,d.jsxs)(n.DialogFooter,{className:"flex items-center justify-between px-6 pb-6 pt-4",children:[(0,d.jsxs)("div",{className:"text-sm text-gray-500",children:["共 ",az.length," 条日志"]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(g.Button,{variant:"outline",onClick:()=>{ax&&(aO(),aN(ax))},disabled:!!aL,children:"重新连接"}),(0,d.jsx)(g.Button,{variant:"default",onClick:aQ,children:"关闭"})]})]})]})}),(0,d.jsx)(n.Dialog,{open:al.open,onOpenChange:a=>{a||am({open:!1,apiName:"",method:"",siteName:""})},children:(0,d.jsxs)(n.DialogContent,{className:"max-w-md",children:[(0,d.jsxs)(n.DialogHeader,{children:[(0,d.jsxs)(n.DialogTitle,{className:"flex items-center gap-2 text-red-600",children:[(0,d.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,d.jsx)("path",{d:"M3 6h18"}),(0,d.jsx)("path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"}),(0,d.jsx)("path",{d:"M8 6V4c0-1 1-2 2-2h4c0 1 1 2 2 2v2"})]}),"确认删除场景"]}),(0,d.jsxs)(n.DialogDescription,{children:["确定要删除场景 ",(0,d.jsxs)("span",{className:"font-medium text-gray-900",children:['"',al.siteName,'"']})," 吗?",(0,d.jsx)("br",{}),(0,d.jsx)("span",{className:"text-red-500 text-sm mt-2 block",children:"此操作不可撤销"})]})]}),(0,d.jsxs)(n.DialogFooter,{className:"flex gap-2 justify-end",children:[(0,d.jsx)(g.Button,{variant:"outline",onClick:()=>am({open:!1,apiName:"",method:"",siteName:""}),children:"取消"}),(0,d.jsx)(g.Button,{variant:"destructive",onClick:ba,children:"删除"})]})]})}),(0,d.jsx)(n.Dialog,{open:an.open,onOpenChange:a=>{a||ao({open:!1,apiName:"",apiPath:""})},children:(0,d.jsxs)(n.DialogContent,{className:"max-w-md",children:[(0,d.jsxs)(n.DialogHeader,{children:[(0,d.jsxs)(n.DialogTitle,{className:"flex items-center gap-2 text-red-600",children:[(0,d.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,d.jsx)("path",{d:"M3 6h18"}),(0,d.jsx)("path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"}),(0,d.jsx)("path",{d:"M8 6V4c0-1 1-2 2-2h4c0 1 1 2 2 2v2"})]}),"确认删除接口"]}),(0,d.jsxs)(n.DialogDescription,{children:["确定要删除整个接口 ",(0,d.jsxs)("span",{className:"font-medium text-gray-900",children:['"',an.apiPath,'"']})," 吗?",(0,d.jsx)("br",{}),(0,d.jsx)("span",{className:"text-red-500 text-sm mt-2 block font-medium",children:"⚠️ 这将删除该接口的所有场景和相关文件,此操作不可撤销"})]})]}),(0,d.jsxs)(n.DialogFooter,{className:"flex gap-2 justify-end",children:[(0,d.jsx)(g.Button,{variant:"outline",onClick:()=>ao({open:!1,apiName:"",apiPath:""}),children:"取消"}),(0,d.jsx)(g.Button,{variant:"destructive",onClick:bc,children:"删除整个接口"})]})]})}),ap.open&&(0,d.jsx)("div",{className:"fixed top-4 right-4 z-50 animate-in slide-in-from-top-2 duration-300",children:(0,d.jsxs)("div",{className:`flex items-center gap-3 px-4 py-3 rounded-lg shadow-lg border max-w-sm ${"success"===ap.type?"bg-green-50 border-green-200 text-green-800":"bg-red-50 border-red-200 text-red-800"}`,children:[(0,d.jsx)("div",{className:"flex-shrink-0",children:"success"===ap.type?(0,d.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,d.jsx)("path",{d:"M20 6L9 17l-5-5"})}):(0,d.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,d.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,d.jsx)("line",{x1:"15",y1:"9",x2:"9",y2:"15"}),(0,d.jsx)("line",{x1:"9",y1:"9",x2:"15",y2:"15"})]})}),(0,d.jsx)("p",{className:"text-sm font-medium",children:ap.message}),(0,d.jsx)("button",{onClick:()=>aq({open:!1,type:"success",message:""}),className:"flex-shrink-0 ml-auto",children:(0,d.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,d.jsx)("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),(0,d.jsx)("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]})})]})}function u(){return(0,d.jsx)(e.Suspense,{fallback:(0,d.jsx)("div",{className:"min-h-screen bg-gray-50 flex items-center justify-center",children:(0,d.jsxs)("div",{className:"text-center space-y-4",children:[(0,d.jsx)("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600 mx-auto"}),(0,d.jsx)("p",{className:"text-gray-600",children:"正在加载配置页面..."})]})}),children:(0,d.jsx)(t,{})})}}};
59
+ });`}},bb=(a,b,c)=>{if(!F)return!1;let d=a.replace(/\//g,"_").replace(/^_/,""),e=F.mockFiles.find(a=>a.apiName===d);if(!e)return!1;let f=e.methods.find(a=>a.method.toLowerCase()===b.toLowerCase());return!!f&&!!f.files.find(a=>a.siteName===c)},bc=async()=>{if(!ag.apiPath.trim())return void bh("error","请输入接口地址");if(bb(ag.apiPath,ag.method,ag.siteName))return void bh("error",`接口 ${ag.apiPath} [${ag.method.toUpperCase()}] 的场景 "${ag.siteName}" 已存在,不能重复创建`);al(!0);try{let a=ag.apiPath.replace(/\//g,"_").replace(/^_/,""),b=O?.content??ba(ag.method,ag.apiPath),d=await fetch("/api/mock-file",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:c,apiName:a,method:ag.method.toLowerCase(),siteName:ag.siteName,content:b})}),e=await d.json();if(e.success)ag.mockOpen&&await bg(a,ag.method.toLowerCase(),ag.siteName,!0),ah({apiPath:"",method:"GET",siteName:"默认场景",mockOpen:!0}),ad(!1),await aQ(),bh("success","Mock文件创建成功");else throw Error(e.error||"创建失败")}catch(a){console.error("创建Mock文件失败:",a),bh("error",`创建Mock文件失败: ${a instanceof Error?a.message:"未知错误"}`)}finally{al(!1)}},bd=(a,b,d)=>{console.log("新增场景点击:",{apiName:a,method:b,apiPath:d}),aj({apiName:a,method:b,apiPath:d});let e={apiPath:d,method:b.toUpperCase(),siteName:"",mockOpen:!0};console.log("设置表单数据:",e),ah(e),af(!0);let f=ba(e.method,e.apiPath);P({projectName:c||"",apiName:a,method:b.toLowerCase(),siteName:"",content:f||""})},be=(a,b,c)=>{if(!F)return!1;let d=F.mockFiles.find(b=>b.apiName===a);if(!d)return!1;let e=d.methods.find(a=>a.method.toLowerCase()===b.toLowerCase());return!!e&&!!e.files.find(a=>a.siteName===c)},bf=async()=>{if(!ai||!ag.siteName.trim())return void bh("error","请输入场景名称");if(be(ai.apiName,ai.method,ag.siteName))return void bh("error",`接口 ${ai.apiPath} [${ai.method.toUpperCase()}] 的场景 "${ag.siteName}" 已存在`);al(!0);try{let a=O?.content??ba(ai.method,ai.apiPath);console.log("defaultContent",a,O);let b=await fetch("/api/mock-file",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:c,apiName:ai.apiName,method:ai.method.toLowerCase(),siteName:ag.siteName,content:a})}),d=await b.json();if(d.success){if(ag.mockOpen&&await bg(ai.apiName,ai.method,ag.siteName,!0),ah({apiPath:"",method:"GET",siteName:"默认场景",mockOpen:!0}),t)try{let a=await fetch("/api/mock-setting",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:t.projectName,apiName:ai.apiName,method:ai.method,currentSite:ag.siteName})}),b=await a.json();b.success||console.warn("切换到新场景失败:",b.error)}catch(a){console.warn("切换到新场景失败:",a)}try{await bg(ai.apiName,ai.method,ag.siteName,!0)}catch(a){console.warn("自动开启新场景失败:",a)}af(!1),aj(null),await aQ(),bh("success","场景创建成功")}else throw Error(d.error||"创建失败")}catch(a){console.error("创建场景失败:",a),bh("error",`创建场景失败: ${a instanceof Error?a.message:"未知错误"}`)}finally{al(!1)}},bg=async(a,b,c,d)=>{if(t)try{let e=await fetch("/api/mock-open-status",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:t.projectName,apiName:a,method:b,siteName:c,isOpen:d})}),f=await e.json();f.success?await aQ():console.error("更新Mock开启状态失败:",f.error)}catch(a){console.error("更新Mock开启状态失败:",a)}},bh=(a,b)=>{ar({open:!0,type:a,message:b}),setTimeout(()=>{ar({open:!1,type:"success",message:""})},3e3)},bi=(a,b,c)=>{an({open:!0,apiName:a,method:b,siteName:c})},bj=async()=>{if(!t)return;let{apiName:a,method:b,siteName:c}=am;try{let d=await fetch(`/api/mock-file?project=${encodeURIComponent(t.projectName)}&apiName=${encodeURIComponent(a)}&method=${encodeURIComponent(b)}&siteName=${encodeURIComponent(c)}`,{method:"DELETE"}),e=await d.json();if(e.success){let a=window.scrollY;await aQ(),window.scrollTo(0,a),bh("success","场景删除成功")}else console.error("删除场景失败:",e.error),bh("error",`删除场景失败: ${e.error}`)}catch(a){console.error("删除场景失败:",a),bh("error","删除场景失败: 网络错误")}finally{an({open:!1,apiName:"",method:"",siteName:""})}},bk=(a,b)=>{ap({open:!0,apiName:a,apiPath:b})},bl=async()=>{if(!t)return;let{apiName:a}=ao;try{let b=await fetch(`/api/delete-mock-api?project=${encodeURIComponent(t.projectName)}&apiName=${encodeURIComponent(a)}`,{method:"DELETE"}),c=await b.json();if(c.success){let a=window.scrollY;await aQ(),window.scrollTo(0,a),bh("success","接口删除成功")}else console.error("删除接口失败:",c.error),bh("error",`删除接口失败: ${c.error}`)}catch(a){console.error("删除接口失败:",a),bh("error","删除接口失败: 网络错误")}finally{ap({open:!1,apiName:"",apiPath:""})}},bm=a=>{az(a),K(1)};if(v)return(0,d.jsx)("main",{className:"container mx-auto p-4 sm:p-6 md:p-8",children:(0,d.jsx)("div",{className:"text-center py-8",children:(0,d.jsx)("p",{children:"加载中..."})})});if(x||!t)return(0,d.jsxs)("main",{className:"container mx-auto p-4 sm:p-6 md:p-8",children:[(0,d.jsxs)("div",{className:"flex justify-between items-center mb-6",children:[(0,d.jsx)("h1",{className:"text-2xl font-bold",children:"项目配置"}),(0,d.jsxs)("div",{className:"flex gap-2",children:[c&&(0,d.jsx)(g.Button,{variant:"default",onClick:aN,disabled:D,children:D?"打开中...":"在 Cursor 中打开"}),(0,d.jsx)(g.Button,{variant:"outline",onClick:aL,children:"返回初始化页面"})]})]}),(0,d.jsx)("div",{className:"text-center text-red-500 py-8",children:(0,d.jsx)("p",{children:x||"未找到项目配置"})})]});let bn=Object.keys(t.envs);return(0,d.jsxs)("main",{className:"container mx-auto p-4 sm:p-6 md:p-8",children:[(0,d.jsxs)("div",{className:"flex justify-between items-center mb-6",children:[(0,d.jsxs)("div",{className:"flex items-center gap-4",children:[(0,d.jsxs)("h1",{className:"text-2xl font-bold",children:[t.projectName," - 项目配置"]}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)(k.Label,{className:"text-sm font-medium text-gray-600",children:"切换项目:"}),(0,d.jsxs)(i.Select,{value:c||"",onValueChange:d=>{if(d===c)return;let e=a.get("tab"),f=`/configuration?project=${encodeURIComponent(d)}${e?`&tab=${e}`:""}`;b.push(f)},disabled:aa,children:[(0,d.jsx)(i.SelectTrigger,{className:"w-40",children:(0,d.jsx)(i.SelectValue,{placeholder:aa?"加载中...":"选择项目"})}),(0,d.jsx)(i.SelectContent,{children:$.map(a=>(0,d.jsx)(i.SelectItem,{value:a.name,children:(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:`w-2 h-2 rounded-full ${"existing"===a.status?"bg-green-500":"failed"===a.status?"bg-red-500":"bg-yellow-500"}`}),(0,d.jsx)("span",{children:a.name})]})},a.name))})]})]}),(0,d.jsx)("div",{className:"ml-4",children:(0,d.jsx)(s.default,{projectName:c||"",compact:!0})})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(g.Button,{variant:"outline",onClick:()=>at(!0),children:"创建工作区"}),(0,d.jsx)(g.Button,{variant:"default",onClick:aN,disabled:D,children:D?"打开中...":"在 Cursor 中打开"}),(0,d.jsx)(g.Button,{variant:"outline",onClick:aL,children:"返回初始化页面"})]})]}),bn.length>0?(0,d.jsxs)(h.Tabs,{value:M||bn[0],onValueChange:a=>{N(a),"mock"===a&&aQ()},className:"w-full",children:[(0,d.jsxs)(h.TabsList,{className:"grid w-full",style:{gridTemplateColumns:`repeat(${bn.length+1}, 1fr)`},children:[bn.map(a=>(0,d.jsx)(h.TabsTrigger,{value:a,className:"capitalize relative",children:(0,d.jsxs)("span",{className:"flex items-center gap-2",children:[a,aA[a]?.running&&(0,d.jsx)("span",{className:"w-2 h-2 bg-green-500 rounded-full animate-pulse",title:"运行中"})]})},a)),(0,d.jsx)(h.TabsTrigger,{value:"mock",className:"capitalize",children:"Mock配置"})]}),bn.map(a=>{let b=t.envs[a],c=Object.entries(b.proxyEnv),e=z[a]?.selectedProxy||"",f=z[a]?.selectedOption||"",l=b.currentProxy,m=b.proxyEnv[l]||l,n=b.proxyEnv[l]?l:"custom";return(0,d.jsxs)(h.TabsContent,{value:a,className:"space-y-6",children:[(0,d.jsxs)("div",{className:"p-6 bg-gray-50 rounded-lg",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,d.jsx)("h3",{className:"text-lg font-semibold",children:"开发服务器控制"}),(0,d.jsx)("div",{className:"flex items-center gap-4",children:aA[a]?.running?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("span",{className:"flex items-center gap-2 text-sm text-green-600",children:[(0,d.jsx)("span",{className:"w-2 h-2 bg-green-500 rounded-full animate-pulse"}),"运行中 (PID: ",aA[a]?.pid,")"]}),(0,d.jsx)(g.Button,{variant:"outline",size:"sm",onClick:()=>aY(a),children:"查看日志"}),(0,d.jsx)(g.Button,{variant:"destructive",size:"sm",onClick:()=>aT(a),disabled:aA[a]?.loading,children:aA[a]?.loading?"处理中...":"停止"})]}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("span",{className:"flex items-center gap-2 text-sm text-gray-500",children:[(0,d.jsx)("span",{className:"w-2 h-2 bg-gray-400 rounded-full"}),"未运行"]}),(0,d.jsx)(g.Button,{variant:"outline",size:"sm",onClick:()=>aY(a),children:"查看日志"}),(0,d.jsx)(g.Button,{variant:"default",size:"sm",onClick:()=>aS(a),disabled:aA[a]?.loading||!b.startCommand,children:aA[a]?.loading?"处理中...":"启动"})]})})]}),b.startCommand?(0,d.jsxs)("div",{className:"text-sm text-gray-600",children:[(0,d.jsx)("span",{className:"font-medium",children:"启动命令:"})," ",(0,d.jsx)("code",{className:"px-2 py-1 bg-gray-200 rounded",children:b.startCommand})]}):(0,d.jsx)("div",{className:"text-sm text-yellow-600",children:"⚠️ 该环境未配置启动命令"}),b.host&&(0,d.jsxs)("div",{className:"text-sm text-gray-600 mt-2",children:[(0,d.jsx)("span",{className:"font-medium",children:"访问地址:"}),aA[a]?.running?(0,d.jsx)("a",{href:b.host,target:"_blank",rel:"noopener noreferrer",className:"ml-2 text-blue-600 hover:underline",children:b.host}):(0,d.jsx)("span",{className:"ml-2",children:b.host})]})]}),(0,d.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6",children:[(0,d.jsxs)("div",{className:"p-6 bg-gray-50 rounded-lg",children:[(0,d.jsxs)("h3",{className:"text-lg font-semibold mb-4",children:[a," 环境配置"]}),(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)(k.Label,{className:"block text-sm font-medium mb-2",children:"接口代理环境切换"}),(0,d.jsxs)(i.Select,{value:f,onValueChange:b=>a$(a,b),children:[(0,d.jsx)(i.SelectTrigger,{className:"w-full",children:(0,d.jsx)(i.SelectValue,{placeholder:"选择代理环境"})}),(0,d.jsx)(i.SelectContent,{children:c.map(([a,b])=>(0,d.jsxs)(i.SelectItem,{value:a,children:[a,"(",b,")"]},a))})]})]}),m&&(0,d.jsxs)("div",{className:"p-3 bg-blue-50 rounded-md",children:[(0,d.jsxs)("p",{className:"text-sm text-blue-700",children:["当前项目接口已代理至:",n," 环境"]}),(0,d.jsxs)("p",{className:"text-sm text-blue-600",children:["代理地址为:",m]})]}),"custom"===f&&(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)(k.Label,{className:"block text-sm font-medium",children:"自定义代理地址"}),(0,d.jsx)(j.Input,{type:"url",placeholder:"请输入自定义代理地址 (如: http://localhost:52741)",value:e,onChange:b=>a_(a,b.target.value),className:"w-full"}),(0,d.jsx)("p",{className:"text-xs text-gray-500",children:"请输入完整的代理地址,包括协议 (http:// 或 https://)"})]}),(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsx)(g.Button,{onClick:()=>a2(a),disabled:z[a]?.saving,className:"w-full sm:w-auto",children:z[a]?.saving?"保存中...":"保存配置"}),z[a]?.saveMessage&&(0,d.jsx)("span",{className:`text-sm ml-3 ${z[a]?.saveMessage==="保存成功"?"text-green-600":"text-red-600"}`,children:z[a]?.saveMessage})]})]})]}),(0,d.jsx)(q.default,{currentProjectName:t.projectName,currentEnvName:a})]})]},a)}),(0,d.jsx)(h.TabsContent,{value:"mock",className:"space-y-6",children:(0,d.jsxs)("div",{className:"p-6 bg-gray-50 rounded-lg",children:[(0,d.jsx)("h3",{className:"text-lg font-semibold mb-4",children:"Mock配置"}),(0,d.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6 mb-6",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsxs)("div",{className:"space-y-1",children:[(0,d.jsx)(k.Label,{className:"text-sm font-medium",children:"Mock拦截"}),(0,d.jsx)("p",{className:"text-xs text-gray-500",children:"启用或禁用Mock拦截功能"})]}),(0,d.jsx)(l.Switch,{checked:B.mockingIntercept,onCheckedChange:a0})]}),(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsxs)("div",{className:"space-y-1",children:[(0,d.jsx)(k.Label,{className:"text-sm font-medium",children:"Mock开启"}),(0,d.jsx)("p",{className:"text-xs text-gray-500",children:"启用或禁用Mock功能"})]}),(0,d.jsx)(l.Switch,{checked:B.mockOpen,onCheckedChange:a1})]})]}),B.saveMessage&&(0,d.jsx)("div",{className:"mb-6",children:(0,d.jsx)("span",{className:`text-sm ${B.saveMessage.includes("已保存")?"text-green-600":"text-red-600"}`,children:B.saveMessage})}),(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsx)("h4",{className:"text-md font-medium",children:"Mock接口列表"}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)(g.Button,{onClick:()=>{ad(!0);let a=ba(ag.method,ag.apiPath);P({projectName:c||"",apiName:ag.apiPath,method:ag.method.toLowerCase(),siteName:"",content:a||""})},variant:"default",size:"sm",children:"新建"}),(0,d.jsx)(g.Button,{onClick:aQ,disabled:H,variant:"outline",size:"sm",children:H?"加载中...":"刷新"}),(0,d.jsx)(g.Button,{onClick:a3,variant:"outline",size:"sm",children:"一键关闭"}),(0,d.jsx)(g.Button,{onClick:a4,variant:"outline",size:"sm",children:"一键开启"})]})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsxs)("div",{className:"relative flex-1 max-w-md",children:[(0,d.jsx)(j.Input,{placeholder:"搜索接口地址...",value:ay,onChange:a=>bm(a.target.value),className:"pr-8"}),ay&&(0,d.jsx)(g.Button,{variant:"ghost",size:"sm",onClick:()=>{az(""),K(1)},className:"absolute right-1 top-1/2 transform -translate-y-1/2 h-6 w-6 p-0 hover:bg-gray-100",children:"×"})]}),ay&&(0,d.jsxs)("span",{className:"text-sm text-gray-500",children:['搜索关键词: "',ay,'"']})]}),H?(0,d.jsx)("div",{className:"text-center py-8",children:(0,d.jsx)("p",{className:"text-gray-500",children:"加载Mock数据中..."})}):F&&F.mockFiles.length>0?(()=>{let a=[];F.mockFiles.forEach(b=>{b.methods.forEach(c=>{let d=b.apiName.replace(/_/g,"/"),e=c.files.map(a=>a.siteName),f=c.setting?.currentSite||e[0]||"",g=c.setting?.open||[],h=g.includes(f);a.push({apiPath:d,method:c.method.toUpperCase(),currentSite:f,availableSites:e,apiName:b.apiName,isOpen:h,openSites:g})})});let b=ay.trim()?a.filter(a=>a.apiPath.toLowerCase().includes(ay.toLowerCase())):a,c=b.length,e=Math.ceil(c/L),f=(J-1)*L,h=f+L,j=b.slice(f,h);return(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsxs)(m.Table,{children:[(0,d.jsx)(m.TableHeader,{children:(0,d.jsxs)(m.TableRow,{children:[(0,d.jsx)(m.TableHead,{children:"接口地址"}),(0,d.jsx)(m.TableHead,{children:"请求方法"}),(0,d.jsx)(m.TableHead,{children:"当前场景"}),(0,d.jsx)(m.TableHead,{children:"开启mock"}),(0,d.jsx)(m.TableHead,{children:"操作"})]})}),(0,d.jsx)(m.TableBody,{children:j.map((a,b)=>(0,d.jsxs)(m.TableRow,{children:[(0,d.jsx)(m.TableCell,{className:"font-medium",children:a.apiPath}),(0,d.jsx)(m.TableCell,{children:(0,d.jsx)("span",{className:`px-2 py-1 rounded text-xs font-medium ${"GET"===a.method?"bg-green-100 text-green-800":"POST"===a.method?"bg-blue-100 text-blue-800":"PUT"===a.method?"bg-yellow-100 text-yellow-800":"DELETE"===a.method?"bg-red-100 text-red-800":"bg-gray-100 text-gray-800"}`,children:a.method})}),(0,d.jsx)(m.TableCell,{children:(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsxs)(i.Select,{value:a.currentSite,onValueChange:b=>a5(a.apiName,a.method.toLowerCase(),b),children:[(0,d.jsx)(i.SelectTrigger,{className:"w-32",children:(0,d.jsx)(i.SelectValue,{})}),(0,d.jsx)(i.SelectContent,{children:a.availableSites.map(a=>(0,d.jsx)(i.SelectItem,{value:a,children:a},a))})]}),a.availableSites.length>1&&(0,d.jsx)(g.Button,{variant:"ghost",size:"sm",onClick:()=>bi(a.apiName,a.method.toLowerCase(),a.currentSite),className:"h-8 w-8 p-0 text-red-500 hover:text-red-700 hover:bg-red-50",title:"删除当前场景",children:(0,d.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,d.jsx)("path",{d:"M3 6h18"}),(0,d.jsx)("path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"}),(0,d.jsx)("path",{d:"M8 6V4c0-1 1-2 2-2h4c0 1 1 2 2 2v2"})]})})]})}),(0,d.jsx)(m.TableCell,{children:(0,d.jsx)(l.Switch,{checked:a.isOpen,onCheckedChange:b=>bg(a.apiName,a.method.toLowerCase(),a.currentSite,b)})}),(0,d.jsx)(m.TableCell,{children:(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(g.Button,{variant:"outline",size:"sm",onClick:()=>a6(a.apiName,a.method.toLowerCase(),a.currentSite),disabled:S,children:S?"加载中...":"编辑"}),(0,d.jsx)(g.Button,{variant:"outline",size:"sm",onClick:()=>bd(a.apiName,a.method.toLowerCase(),a.apiPath),disabled:ak,children:"新增场景"}),(0,d.jsx)(g.Button,{variant:"outline",size:"sm",onClick:()=>bk(a.apiName,a.apiPath),className:"text-red-500 hover:text-red-700 hover:border-red-300",children:"删除接口"})]})})]},`${a.apiName}-${a.method}-${b}`))})]}),e>1&&(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsxs)("div",{className:"text-sm text-gray-500",children:["显示 ",f+1,"-",Math.min(h,c)," 条,共 ",c," 条"]}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)(g.Button,{variant:"outline",size:"sm",onClick:()=>K(a=>Math.max(1,a-1)),disabled:1===J,children:"上一页"}),(0,d.jsxs)("span",{className:"text-sm",children:[J," / ",e]}),(0,d.jsx)(g.Button,{variant:"outline",size:"sm",onClick:()=>K(a=>Math.min(e,a+1)),disabled:J===e,children:"下一页"})]})]})]})})():(0,d.jsxs)("div",{className:"text-center py-8",children:[(0,d.jsx)("p",{className:"text-gray-500",children:"暂无Mock接口数据"}),(0,d.jsx)("p",{className:"text-xs text-gray-400 mt-1",children:"请先创建Mock文件"})]})]})]})})]}):(0,d.jsx)("div",{className:"text-center text-gray-500 py-8",children:(0,d.jsx)("p",{children:"该项目没有配置环境信息"})}),(0,d.jsx)(n.Dialog,{open:Q||ac||ae,onOpenChange:a=>{a||(R(!1),ad(!1),af(!1),aj(null))},children:(0,d.jsxs)(n.DialogContent,{className:"w-screen h-screen max-w-none max-h-none m-0 rounded-none overflow-hidden flex flex-col",children:[(0,d.jsxs)(n.DialogHeader,{className:"flex-shrink-0 border-b pb-4",children:[(0,d.jsx)(n.DialogTitle,{children:ac?"新建Mock文件":ae?"新增场景":"编辑Mock文件"}),(0,d.jsx)(n.DialogDescription,{children:ac?"创建一个新的Mock接口文件":ae&&ai?(0,d.jsxs)(d.Fragment,{children:["为接口 ",ai.apiPath," [",ai.method.toUpperCase(),"] 新增场景"]}):O?(0,d.jsxs)(d.Fragment,{children:["编辑 ",O.apiName.replace(/_/g,"/")," - ",O.method.toUpperCase()," - ",O.siteName,".cjs"]}):null})]}),(ac||ae)&&(0,d.jsxs)("div",{className:"flex-shrink-0 border-b pb-4",children:[(0,d.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)(k.Label,{htmlFor:"apiPath",className:"text-sm font-medium",children:"接口地址"}),ae?(0,d.jsx)("div",{className:"px-3 py-2 bg-gray-50 border border-gray-200 rounded-md text-sm text-gray-600",children:ag.apiPath}):(0,d.jsx)(j.Input,{id:"apiPath",placeholder:"/api/user/info",value:ag.apiPath,onChange:a=>a9("apiPath",a.target.value)})]}),(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)(k.Label,{htmlFor:"method",className:"text-sm font-medium",children:"请求方法"}),ae?(0,d.jsx)("div",{className:"px-3 py-2 bg-gray-50 border border-gray-200 rounded-md text-sm text-gray-600",children:ag.method}):(0,d.jsxs)(i.Select,{value:ag.method,onValueChange:a=>a9("method",a),children:[(0,d.jsx)(i.SelectTrigger,{children:(0,d.jsx)(i.SelectValue,{})}),(0,d.jsxs)(i.SelectContent,{children:[(0,d.jsx)(i.SelectItem,{value:"GET",children:"GET"}),(0,d.jsx)(i.SelectItem,{value:"POST",children:"POST"}),(0,d.jsx)(i.SelectItem,{value:"PUT",children:"PUT"}),(0,d.jsx)(i.SelectItem,{value:"DELETE",children:"DELETE"}),(0,d.jsx)(i.SelectItem,{value:"PATCH",children:"PATCH"})]})]})]}),(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)(k.Label,{htmlFor:"siteName",className:"text-sm font-medium",children:"场景名称"}),ac?(0,d.jsx)("div",{className:"px-3 py-2 bg-gray-50 border border-gray-200 rounded-md text-sm text-gray-600",children:"默认场景"}):(0,d.jsx)(j.Input,{id:"siteName",placeholder:"请输入场景名称",value:ag.siteName,onChange:a=>a9("siteName",a.target.value)})]}),(0,d.jsxs)("div",{className:"space-y-2",children:[(0,d.jsx)(k.Label,{htmlFor:"mockOpen",className:"text-sm font-medium",children:"开启Mock"}),(0,d.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,d.jsx)(l.Switch,{id:"mockOpen",checked:ag.mockOpen,onCheckedChange:a=>a9("mockOpen",a)}),(0,d.jsx)("span",{className:"text-sm text-gray-600",children:ag.mockOpen?"开启":"关闭"})]})]})]}),ac&&ag.apiPath.trim()&&ag.siteName.trim()&&bb(ag.apiPath,ag.method,ag.siteName)&&(0,d.jsx)("div",{className:"mt-4 p-3 bg-red-50 border border-red-200 rounded-md",children:(0,d.jsx)("div",{className:"flex items-center",children:(0,d.jsxs)("span",{className:"text-red-600 text-sm",children:["⚠️ 接口 ",ag.apiPath," [",ag.method.toUpperCase(),'] 的场景 "',ag.siteName,'" 已存在']})})}),ae&&ai&&ag.siteName.trim()&&be(ai.apiName,ai.method,ag.siteName)&&(0,d.jsx)("div",{className:"mt-4 p-3 bg-red-50 border border-red-200 rounded-md",children:(0,d.jsx)("div",{className:"flex items-center",children:(0,d.jsxs)("span",{className:"text-red-600 text-sm",children:['⚠️ 场景 "',ag.siteName,'" 已存在']})})})]}),(0,d.jsx)("div",{className:"flex-1 flex flex-col space-y-4 py-4",children:(0,d.jsxs)("div",{className:"flex-1 flex flex-col",children:[(0,d.jsx)(k.Label,{className:"text-sm font-medium mb-2",children:"文件内容"}),(0,d.jsxs)("div",{className:"flex-1 border rounded-md overflow-hidden relative",children:[W&&(0,d.jsx)("div",{className:"absolute inset-0 bg-gray-50 flex items-center justify-center z-10",children:(0,d.jsx)("p",{className:"text-gray-500",children:"编辑器加载中..."})}),(0,d.jsx)(p.default,{height:"100%",defaultLanguage:"javascript",value:O?.content||"",onChange:a=>{P(b=>b?{...b,content:a||""}:null)},onMount:async a=>{console.log("编辑器挂载,模式:",{isCreateMode:ac,isAddSceneMode:ae,createFormData:ag}),Z(a),X(!1),setTimeout(()=>aK(a),500)},loading:(0,d.jsx)("div",{className:"flex items-center justify-center h-full",children:(0,d.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}},ac?"create":ae?"addscene":"edit")]})]})}),(0,d.jsxs)(n.DialogFooter,{className:"flex justify-between flex-shrink-0 border-t pt-4",children:[(0,d.jsx)(g.Button,{variant:"secondary",onClick:aI,disabled:!Y||W,children:"格式化代码"}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(g.Button,{variant:"outline",onClick:()=>{ac?(ad(!1),ah({apiPath:"",method:"GET",siteName:"默认场景",mockOpen:!0})):ae?(af(!1),aj(null),ah({apiPath:"",method:"GET",siteName:"默认场景",mockOpen:!0})):a8()},children:"取消"}),ac?(0,d.jsx)(g.Button,{onClick:bc,disabled:ak||!ag.apiPath.trim()||!ag.siteName.trim()||bb(ag.apiPath,ag.method,ag.siteName),children:ak?"创建中...":"创建"}):ae?(0,d.jsx)(g.Button,{onClick:bf,disabled:ak||!ag.siteName.trim()||!!ai&&be(ai.apiName,ai.method,ag.siteName),children:ak?"创建中...":"创建"}):(0,d.jsx)(g.Button,{onClick:a7,disabled:U,children:U?"保存中...":"保存"})]})]})]})}),(0,d.jsx)(n.Dialog,{open:aC,onOpenChange:a=>{a||aZ()},children:(0,d.jsxs)(n.DialogContent,{className:"max-w-5xl h-[85vh] max-h-[85vh] flex flex-col p-0",children:[(0,d.jsxs)(n.DialogHeader,{className:"px-6 pt-6 pb-4",children:[(0,d.jsxs)(n.DialogTitle,{className:"flex items-center justify-between",children:[(0,d.jsxs)("span",{children:["进程日志 - ",c," - ",aE]}),(0,d.jsx)("span",{className:"flex items-center gap-2 text-sm font-normal",children:aU&&(0,d.jsxs)("span",{className:"flex items-center gap-1 text-green-600",children:[(0,d.jsx)("span",{className:"w-2 h-2 bg-green-500 rounded-full animate-pulse"}),"实时连接"]})})]}),(0,d.jsx)(n.DialogDescription,{children:"实时显示进程输出日志"})]}),(0,d.jsx)("div",{className:"flex-1 min-h-0 bg-gray-900 mx-6 rounded-md overflow-hidden",children:(0,d.jsx)(r.default,{logs:aG})}),(0,d.jsxs)(n.DialogFooter,{className:"flex items-center justify-between px-6 pb-6 pt-4",children:[(0,d.jsxs)("div",{className:"text-sm text-gray-500",children:["共 ",aG.length," 条日志"]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(g.Button,{variant:"outline",onClick:()=>{aE&&(aX(),aW(aE))},disabled:!!aU,children:"重新连接"}),(0,d.jsx)(g.Button,{variant:"default",onClick:aZ,children:"关闭"})]})]})]})}),(0,d.jsx)(n.Dialog,{open:am.open,onOpenChange:a=>{a||an({open:!1,apiName:"",method:"",siteName:""})},children:(0,d.jsxs)(n.DialogContent,{className:"max-w-md",children:[(0,d.jsxs)(n.DialogHeader,{children:[(0,d.jsxs)(n.DialogTitle,{className:"flex items-center gap-2 text-red-600",children:[(0,d.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,d.jsx)("path",{d:"M3 6h18"}),(0,d.jsx)("path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"}),(0,d.jsx)("path",{d:"M8 6V4c0-1 1-2 2-2h4c0 1 1 2 2 2v2"})]}),"确认删除场景"]}),(0,d.jsxs)(n.DialogDescription,{children:["确定要删除场景 ",(0,d.jsxs)("span",{className:"font-medium text-gray-900",children:['"',am.siteName,'"']})," 吗?",(0,d.jsx)("br",{}),(0,d.jsx)("span",{className:"text-red-500 text-sm mt-2 block",children:"此操作不可撤销"})]})]}),(0,d.jsxs)(n.DialogFooter,{className:"flex gap-2 justify-end",children:[(0,d.jsx)(g.Button,{variant:"outline",onClick:()=>an({open:!1,apiName:"",method:"",siteName:""}),children:"取消"}),(0,d.jsx)(g.Button,{variant:"destructive",onClick:bj,children:"删除"})]})]})}),(0,d.jsx)(n.Dialog,{open:ao.open,onOpenChange:a=>{a||ap({open:!1,apiName:"",apiPath:""})},children:(0,d.jsxs)(n.DialogContent,{className:"max-w-md",children:[(0,d.jsxs)(n.DialogHeader,{children:[(0,d.jsxs)(n.DialogTitle,{className:"flex items-center gap-2 text-red-600",children:[(0,d.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,d.jsx)("path",{d:"M3 6h18"}),(0,d.jsx)("path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"}),(0,d.jsx)("path",{d:"M8 6V4c0-1 1-2 2-2h4c0 1 1 2 2 2v2"})]}),"确认删除接口"]}),(0,d.jsxs)(n.DialogDescription,{children:["确定要删除整个接口 ",(0,d.jsxs)("span",{className:"font-medium text-gray-900",children:['"',ao.apiPath,'"']})," 吗?",(0,d.jsx)("br",{}),(0,d.jsx)("span",{className:"text-red-500 text-sm mt-2 block font-medium",children:"⚠️ 这将删除该接口的所有场景和相关文件,此操作不可撤销"})]})]}),(0,d.jsxs)(n.DialogFooter,{className:"flex gap-2 justify-end",children:[(0,d.jsx)(g.Button,{variant:"outline",onClick:()=>ap({open:!1,apiName:"",apiPath:""}),children:"取消"}),(0,d.jsx)(g.Button,{variant:"destructive",onClick:bl,children:"删除整个接口"})]})]})}),(0,d.jsx)(n.Dialog,{open:as,onOpenChange:at,children:(0,d.jsxs)(n.DialogContent,{className:"max-w-md",children:[(0,d.jsxs)(n.DialogHeader,{children:[(0,d.jsx)(n.DialogTitle,{children:"创建工作区"}),(0,d.jsx)(n.DialogDescription,{children:"选择要包含在工作区中的项目"})]}),(0,d.jsxs)("div",{className:"py-4 max-h-96 overflow-y-auto",children:[(0,d.jsx)("div",{className:"space-y-3",children:$.filter(a=>"existing"===a.status).map(a=>(0,d.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,d.jsx)(o.Checkbox,{id:`workspace-${a.name}`,checked:au.includes(a.name),onCheckedChange:()=>aP(a.name)}),(0,d.jsx)("label",{htmlFor:`workspace-${a.name}`,className:"flex-1 cursor-pointer text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",children:a.name})]},a.name))}),0===$.filter(a=>"existing"===a.status).length&&(0,d.jsx)("div",{className:"text-center py-8 text-gray-500",children:"没有可用的项目"})]}),(0,d.jsxs)(n.DialogFooter,{className:"flex gap-2 justify-end",children:[(0,d.jsx)(g.Button,{variant:"outline",onClick:()=>{at(!1),av([])},children:"取消"}),(0,d.jsx)(g.Button,{variant:"default",onClick:aO,disabled:aw||0===au.length,children:aw?"创建中...":"确认创建"})]})]})}),aq.open&&(0,d.jsx)("div",{className:"fixed top-4 right-4 z-50 animate-in slide-in-from-top-2 duration-300",children:(0,d.jsxs)("div",{className:`flex items-center gap-3 px-4 py-3 rounded-lg shadow-lg border max-w-sm ${"success"===aq.type?"bg-green-50 border-green-200 text-green-800":"bg-red-50 border-red-200 text-red-800"}`,children:[(0,d.jsx)("div",{className:"flex-shrink-0",children:"success"===aq.type?(0,d.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,d.jsx)("path",{d:"M20 6L9 17l-5-5"})}):(0,d.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,d.jsx)("circle",{cx:"12",cy:"12",r:"10"}),(0,d.jsx)("line",{x1:"15",y1:"9",x2:"9",y2:"15"}),(0,d.jsx)("line",{x1:"9",y1:"9",x2:"15",y2:"15"})]})}),(0,d.jsx)("p",{className:"text-sm font-medium",children:aq.message}),(0,d.jsx)("button",{onClick:()=>ar({open:!1,type:"success",message:""}),className:"flex-shrink-0 ml-auto",children:(0,d.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,d.jsx)("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),(0,d.jsx)("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]})})]})}function v(){return(0,d.jsx)(e.Suspense,{fallback:(0,d.jsx)("div",{className:"min-h-screen bg-gray-50 flex items-center justify-center",children:(0,d.jsxs)("div",{className:"text-center space-y-4",children:[(0,d.jsx)("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600 mx-auto"}),(0,d.jsx)("p",{className:"text-gray-600",children:"正在加载配置页面..."})]})}),children:(0,d.jsx)(u,{})})}}};
60
60
 
61
- //# sourceMappingURL=_bb352729._.js.map
61
+ //# sourceMappingURL=_5d353cf8._.js.map