@yinuo-ngm/server 1.0.16 → 1.0.17

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 (118) hide show
  1. package/lib/app.js +3 -15
  2. package/lib/common/editor.js +2 -2
  3. package/lib/env.d.ts +1 -0
  4. package/lib/env.js +1 -0
  5. package/lib/plugins/error-handler.plugin.d.ts +2 -2
  6. package/lib/plugins/error-handler.plugin.js +97 -93
  7. package/lib/plugins/ws/topics/nginx.ws.js +2 -1
  8. package/lib/plugins/ws/topics/svn.ws.d.ts +2 -1
  9. package/lib/plugins/ws/topics/svn.ws.js +3 -2
  10. package/lib/plugins/ws/topics/syslog.ws.d.ts +1 -1
  11. package/lib/plugins/ws/topics/task.ws.d.ts +2 -1
  12. package/lib/plugins/ws/topics/task.ws.js +2 -1
  13. package/lib/plugins/ws/ws.context.d.ts +1 -1
  14. package/lib/plugins/ws/ws.plugin.js +4 -3
  15. package/lib/plugins/ws/ws.router.d.ts +2 -2
  16. package/lib/plugins/ws/ws.router.js +8 -7
  17. package/lib/routes/api-client/collection.routes.js +8 -6
  18. package/lib/routes/api-client/env.routes.js +4 -3
  19. package/lib/routes/api-client/history.routes.js +3 -2
  20. package/lib/routes/api-client/hub-token.routes.js +11 -11
  21. package/lib/routes/api-client/request.routes.js +7 -6
  22. package/lib/routes/api-client/send.routes.js +3 -2
  23. package/lib/routes/config.routes.js +5 -5
  24. package/lib/routes/hub.routes.js +10 -10
  25. package/lib/routes/nginx/nginx-lifecycle.routes.js +4 -0
  26. package/lib/routes/nginx/nginx-route.context.js +23 -7
  27. package/lib/routes/nginx/nginx-server.routes.js +158 -6
  28. package/lib/routes/node-version.routes.js +7 -7
  29. package/lib/routes/project.routes.js +9 -9
  30. package/lib/routes/rss.routes.js +3 -3
  31. package/lib/routes/sprite-browse.routes.js +2 -1
  32. package/lib/routes/sprite.routes.js +3 -3
  33. package/lib/routes/static-files.routes.js +7 -7
  34. package/lib/routes/svn.routes.js +5 -3
  35. package/lib/routes/system.routes.js +20 -1
  36. package/lib/routes/task.routes.js +4 -4
  37. package/package.json +13 -6
  38. package/www/3rdpartylicenses.txt +52 -52
  39. package/www/browser/chunk-2L7NUOMX.js +2 -0
  40. package/www/browser/chunk-2NZJ7CN2.js +20 -0
  41. package/www/browser/{chunk-SPRWNZHF.js → chunk-3CM4SKDO.js} +2 -2
  42. package/www/browser/{chunk-EEVPZGEY.js → chunk-3I7BQCXS.js} +1 -1
  43. package/www/browser/{chunk-DXF7BVK5.js → chunk-3M56F2S2.js} +1 -1
  44. package/www/browser/chunk-3OHBKMAA.js +1 -0
  45. package/www/browser/{chunk-4KETC6EB.js → chunk-3XNNQFWR.js} +1 -1
  46. package/www/browser/chunk-4BRW6LCZ.js +4 -0
  47. package/www/browser/{chunk-HGONFYP6.js → chunk-4LBSLURA.js} +1 -1
  48. package/www/browser/{chunk-BYEU6KGP.js → chunk-4X42HB6N.js} +1 -1
  49. package/www/browser/chunk-5DYX4DUX.js +11 -0
  50. package/www/browser/chunk-6SYVDN5L.js +1 -0
  51. package/www/browser/{chunk-XJ5KZQNN.js → chunk-6YYNHZ2A.js} +1 -1
  52. package/www/browser/{chunk-G2W3B7TJ.js → chunk-75W3GVSO.js} +1 -1
  53. package/www/browser/{chunk-76TVIB33.js → chunk-7U44RF5F.js} +1 -1
  54. package/www/browser/{chunk-WD4IAQR3.js → chunk-AELTP6YN.js} +1 -1
  55. package/www/browser/chunk-AMXRL4GR.js +1 -0
  56. package/www/browser/chunk-AV2ZODEH.js +1 -0
  57. package/www/browser/chunk-AZ6SIMYH.js +1 -0
  58. package/www/browser/chunk-B3C35ET3.js +2 -0
  59. package/www/browser/chunk-BTQIUVTQ.js +1 -0
  60. package/www/browser/chunk-CN5J4WNO.js +1 -0
  61. package/www/browser/{chunk-N4LRZJBP.js → chunk-D2ODDESN.js} +1 -1
  62. package/www/browser/{chunk-O2EYEF7J.js → chunk-DE6E23ET.js} +1 -1
  63. package/www/browser/{chunk-SVQWPHF5.js → chunk-DIJPUYIA.js} +1 -1
  64. package/www/browser/{chunk-SYCNSLAW.js → chunk-DLGJD6YU.js} +4 -4
  65. package/www/browser/{chunk-JHMEKUZ5.js → chunk-EEDA5U4V.js} +1 -1
  66. package/www/browser/chunk-FK6Z4HLL.js +1 -0
  67. package/www/browser/chunk-FL6GDGHW.js +1 -0
  68. package/www/browser/{chunk-HRXCR3IN.js → chunk-FXCG34QS.js} +1 -1
  69. package/www/browser/{chunk-UJOHBN2Y.js → chunk-H2USFIYR.js} +1 -1
  70. package/www/browser/chunk-H5HGMOE6.js +1 -0
  71. package/www/browser/chunk-HB3HECPD.js +1 -0
  72. package/www/browser/{chunk-INL2PELS.js → chunk-HDNG236Q.js} +1 -1
  73. package/www/browser/{chunk-WF2QTF5L.js → chunk-HJTXXSMC.js} +1 -1
  74. package/www/browser/{chunk-LQ5OXSW7.js → chunk-HUMCWAKJ.js} +1 -1
  75. package/www/browser/chunk-IKB3EQCP.js +2 -0
  76. package/www/browser/{chunk-TMX5TTV3.js → chunk-K7PESFPY.js} +1 -1
  77. package/www/browser/{chunk-T3KK7ZXB.js → chunk-KRYMOHYF.js} +1 -1
  78. package/www/browser/{chunk-SQQNR223.js → chunk-M4QRBV3K.js} +1 -1
  79. package/www/browser/chunk-N2PELLMM.js +30 -0
  80. package/www/browser/{chunk-ACAZUX6C.js → chunk-ONXBYGIG.js} +1 -1
  81. package/www/browser/{chunk-JZULA5JV.js → chunk-OSBDR36P.js} +1 -1
  82. package/www/browser/chunk-OZCK4XVV.js +1 -0
  83. package/www/browser/{chunk-GDWS2L66.js → chunk-QJP5F735.js} +1 -1
  84. package/www/browser/{chunk-2X3MRS27.js → chunk-RGOYDY7H.js} +1 -1
  85. package/www/browser/{chunk-B6MBYCXI.js → chunk-UJKK4A7Y.js} +1 -1
  86. package/www/browser/{chunk-ZNTJRLVH.js → chunk-WD2EKZQC.js} +1 -1
  87. package/www/browser/{chunk-L5D75AMV.js → chunk-WUA5JFDD.js} +1 -1
  88. package/www/browser/chunk-XLFHB7RS.js +3 -0
  89. package/www/browser/{chunk-JU3TEDBV.js → chunk-YNW4HEJO.js} +1 -1
  90. package/www/browser/{chunk-RW2JPJV7.js → chunk-ZTDLWBW5.js} +1 -1
  91. package/www/browser/index.html +1 -1
  92. package/www/browser/main-N64WJCHX.js +34 -0
  93. package/www/browser/chunk-2BZRE4G7.js +0 -1
  94. package/www/browser/chunk-5T5KA5PG.js +0 -1
  95. package/www/browser/chunk-6CGHNKJI.js +0 -1
  96. package/www/browser/chunk-7J24TP36.js +0 -1
  97. package/www/browser/chunk-CZ5AZ3VW.js +0 -1
  98. package/www/browser/chunk-DW7F5PEA.js +0 -1
  99. package/www/browser/chunk-HHBPULJW.js +0 -2
  100. package/www/browser/chunk-KVFR7GFV.js +0 -20
  101. package/www/browser/chunk-L7TMCSHV.js +0 -1
  102. package/www/browser/chunk-MVQTKINJ.js +0 -1
  103. package/www/browser/chunk-OMDHJIUB.js +0 -1
  104. package/www/browser/chunk-OWUAAOHW.js +0 -2
  105. package/www/browser/chunk-PIK5YPIB.js +0 -1
  106. package/www/browser/chunk-RHLQRQDK.js +0 -9
  107. package/www/browser/chunk-S3SJ4VVM.js +0 -11
  108. package/www/browser/chunk-SIVPP74B.js +0 -0
  109. package/www/browser/chunk-UFY3FLDK.js +0 -1
  110. package/www/browser/chunk-UQGCUFNM.js +0 -1
  111. package/www/browser/chunk-UXXWRMM6.js +0 -1
  112. package/www/browser/chunk-UZRJGJTD.js +0 -2
  113. package/www/browser/chunk-WI67LAOV.js +0 -4
  114. package/www/browser/chunk-WNCM6QKB.js +0 -1
  115. package/www/browser/chunk-YETDFSQE.js +0 -1
  116. package/www/browser/chunk-YMTC5GZK.js +0 -1
  117. package/www/browser/chunk-YVZHJ76K.js +0 -1
  118. package/www/browser/main-6LN5C22E.js +0 -34
@@ -1 +0,0 @@
1
- import{a as ct,b as ut}from"./chunk-DXF7BVK5.js";import{B as Ct,a as pi,b as ci,c as gt,d as ui,e as gi,f as ft,m as fi,n as X,o as ue,p as ht,q as Q,r as yt,s as hi,t as _t,u as De,v as yi,w as we,x as _i,y as vt,z as vi}from"./chunk-UZRJGJTD.js";import"./chunk-O2EYEF7J.js";import"./chunk-76TVIB33.js";import{a as Gn,b as Yn,c as Xn,d as Zn,e as ei,f as ti,g as ni,h as ii,i as ri,j as mt}from"./chunk-YMTC5GZK.js";import{a as qn,b as lt}from"./chunk-INL2PELS.js";import{a as Re,b as ce,c as oi,d as ai,e as si}from"./chunk-LQ5OXSW7.js";import{a as li,b as di,c as mi,e as pt}from"./chunk-SVQWPHF5.js";import{a as wn,b as En,c as Tn}from"./chunk-ZNTJRLVH.js";import{a as Wn,b as Qn,c as dt}from"./chunk-G2W3B7TJ.js";import"./chunk-PIK5YPIB.js";import"./chunk-YVZHJ76K.js";import"./chunk-SIVPP74B.js";import{a as Jn,b as Kn}from"./chunk-WD4IAQR3.js";import{a as K,b as H}from"./chunk-WF2QTF5L.js";import"./chunk-HRXCR3IN.js";import"./chunk-DW7F5PEA.js";import"./chunk-KVFR7GFV.js";import{a as Dn,b as ze}from"./chunk-2X3MRS27.js";import{a as $n,c as rt,d as ot,e as at,f as Pe}from"./chunk-4KETC6EB.js";import{b as Nn,c as On,e as Ln,g as Hn}from"./chunk-JU3TEDBV.js";import{a as Un,b as st}from"./chunk-TMX5TTV3.js";import{a as Se,b as it}from"./chunk-UQGCUFNM.js";import{h as ve,i as Ye,j as Je,k as Ce,l as be}from"./chunk-BYEU6KGP.js";import"./chunk-5T5KA5PG.js";import{d as nt}from"./chunk-UXXWRMM6.js";import{$b as jn,Bb as An,Eb as Ie,Fa as he,Ga as Y,Gb as me,Hb as Ke,Jb as kn,Kb as pe,L as Ae,Lb as Xe,Oa as de,Ob as Fn,Pa as ye,Pb as Bn,Ra as _e,Sa as B,T as Mn,Tb as Ze,Ub as L,V as xn,Vb as et,Xb as Vn,Y as Ge,Zb as Me,a as zn,aa as Xt,ac as J,ba as Sn,c as In,dc as xe,ea as Pn,fa as Rn,fc as tt,ga as ke}from"./chunk-SPRWNZHF.js";import"./chunk-HFZLJHYR.js";import{c as Cn,e as bn,h as Kt}from"./chunk-L5D75AMV.js";import{g as vn,h as Qe,m as W,n as N}from"./chunk-T3KK7ZXB.js";import{$b as D,$c as k,Ac as $e,B as Te,Da as dn,Ec as U,Fb as z,Fc as se,Gb as re,Gc as ee,Ha as I,Hc as Ne,I as Be,Jc as d,Kc as v,L as Ve,Lb as A,Lc as b,M as Wt,Mc as gn,Nc as Ue,Oa as fe,Oc as qe,Pc as We,Q as an,Ra as mn,V as Qt,Wb as M,Wc as fn,Xc as hn,Yb as x,Yc as Oe,Zc as yn,a as V,ac as w,b as ge,bc as p,bd as F,cc as a,cd as q,dc as o,ec as g,fa as sn,ha as Gt,hc as je,hd as y,ic as oe,id as le,jb as pn,jc as ae,kb as Yt,lc as E,ma as ln,mc as un,md as S,na as ne,nb as s,nd as c,oa as ie,rc as _,rd as _n,sa as P,sb as cn,t as qt,td as Jt,uc as u,xd as O,ya as f,yc as Le,yd as te,za as h,zc as He}from"./chunk-WI67LAOV.js";var Ci=(()=>{class i{static \u0275fac=function(n){return new(n||i)};static \u0275mod=re({type:i});static \u0275inj=ie({})}return i})();var Oi=(i,t)=>t.id;function Ai(i,t){if(i&1&&g(0,"nz-option",4),i&2){let e=t.$implicit;p("nzLabel",e.name)("nzValue",e.id)}}function ki(i,t){i&1&&(a(0,"p",5),d(1,"\u63D0\u793A\uFF1A\u5F53\u524D\u9879\u76EE\u6CA1\u6709\u53EF\u63A8\u8FDB\u7684\u540E\u7EED\u9636\u6BB5\u3002"),o())}function Fi(i,t){if(i&1){let e=E();a(0,"p",2),d(1," \u5F53\u524D\u7814\u53D1\u9879\uFF1A"),a(2,"strong"),d(3),o()(),a(4,"nz-select",3),_("ngModelChange",function(r){f(e);let l=u(2);return h(l.selectedStageId.set(r||""))}),D(5,Ai,1,2,"nz-option",4,Oi),o(),M(7,ki,2,0,"p",5)}if(i&2){let e=u(2);s(3),v(t.title),s(),p("ngModel",e.selectedStageId()),s(),w(e.candidateStages()),s(2),x(e.candidateStages().length===0?7:-1)}}function Bi(i,t){if(i&1&&(oe(0),M(1,Fi,8,3),ae()),i&2){let e,n=u();s(),x((e=n.item())?1:-1,e)}}var bt=class i{open=c(!1);busy=c(!1);item=c(null);stages=c([]);confirm=S();cancel=S();selectedStageId=I("");candidateStages=y(()=>{let t=this.item(),e=[...this.stages()].sort((r,l)=>r.sort-l.sort);if(!t)return[];if(!t.stageId)return e;let n=e.find(r=>r.id===t.stageId);return n?e.filter(r=>r.sort>n.sort):e});constructor(){le(()=>{if(!this.open()){this.selectedStageId.set("");return}let t=this.candidateStages()[0];this.selectedStageId.set(t?.id??"")})}confirmSelection(){let t=this.selectedStageId().trim();t&&this.confirm.emit({stageId:t})}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=z({type:i,selectors:[["app-rd-advance-stage-dialog"]],inputs:{open:[1,"open"],busy:[1,"busy"],item:[1,"item"],stages:[1,"stages"]},outputs:{confirm:"confirm",cancel:"cancel"},decls:2,vars:6,consts:[[3,"nzOnCancel","nzOnOk","nzVisible","nzTitle","nzOkText","nzCancelText","nzOkLoading","nzOkDisabled"],[4,"nzModalContent"],[1,"hint"],["nzShowSearch","","nzPlaceHolder","\u9009\u62E9\u4E0B\u4E00\u9636\u6BB5",1,"stage-select",3,"ngModelChange","ngModel"],[3,"nzLabel","nzValue"],[1,"empty"]],template:function(e,n){e&1&&(a(0,"nz-modal",0),_("nzOnCancel",function(){return n.cancel.emit()})("nzOnOk",function(){return n.confirmSelection()}),A(1,Bi,2,1,"ng-container",1),o()),e&2&&p("nzVisible",n.open())("nzTitle","\u8FDB\u5165\u4E0B\u4E00\u9636\u6BB5")("nzOkText","\u786E\u8BA4\u63A8\u8FDB")("nzCancelText","\u53D6\u6D88")("nzOkLoading",n.busy())("nzOkDisabled",n.busy()||!n.selectedStageId())},dependencies:[be,Ce,ve,Pe,ot,at,B,L,me,pe],styles:[".stage-select[_ngcontent-%COMP%]{width:100%}.empty[_ngcontent-%COMP%]{font-size:.8rem;color:gray;text-align:right}"]})};function Vi(i,t){if(i&1&&(a(0,"div")(1,"div",4)(2,"span"),d(3,"\u6807\u8BB0\u4E3A\u963B\u585E"),o(),a(4,"div",5),d(5),o()()()),i&2){let e=u();s(5),b(" ",e.item()?e.item().title:"\u8BB0\u5F55\u5F53\u524D\u7814\u53D1\u9879\u7684\u963B\u585E\u539F\u56E0\u3002"," ")}}function ji(i,t){if(i&1){let e=E();oe(0),a(1,"form",6),_("ngSubmit",function(){f(e);let r=u();return h(r.submitForm())}),a(2,"textarea",7),_("ngModelChange",function(r){f(e);let l=u();return h(l.reason.set(r))}),o()(),ae()}if(i&2){let e=u();s(2),p("ngModel",e.reason())}}function Li(i,t){if(i&1){let e=E();oe(0),a(1,"button",8),_("click",function(){f(e);let r=u();return h(r.cancel.emit())}),d(2,"\u53D6\u6D88"),o(),a(3,"button",9),_("click",function(){f(e);let r=u();return h(r.submitForm())}),d(4," \u786E\u8BA4\u963B\u585E "),o(),ae()}if(i&2){let e=u();s(3),p("disabled",!e.reason().trim())("nzLoading",e.busy())}}var zt=class i{open=c(!0);busy=c(!1);item=c(null);confirm=S();cancel=S();reason=I("");constructor(){le(()=>{this.open()&&this.reason.set(this.item()?.blockerReason??"")})}submitForm(){let t=this.reason().trim();t&&this.confirm.emit({blockerReason:t})}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=z({type:i,selectors:[["app-rd-block-dialog"]],inputs:{open:[1,"open"],busy:[1,"busy"],item:[1,"item"]},outputs:{confirm:"confirm",cancel:"cancel"},decls:4,vars:5,consts:[["nzTitle","\u6807\u8BB0\u4E3A\u963B\u585E",3,"nzOnCancel","nzOnOk","nzVisible","nzWidth","nzClosable","nzMaskClosable","nzOkLoading"],[4,"nzModalTitle"],[4,"nzModalContent"],[4,"nzModalFooter"],[1,"modal-title"],[1,"modal-subtitle"],[1,"block-form",3,"ngSubmit"],["nz-input","","rows","6","placeholder","\u8BF7\u8F93\u5165\u963B\u585E\u539F\u56E0\u3002\u4F8B\u5982\uFF1A\u4F9D\u8D56\u7684\u63A5\u53E3\u5B9A\u4E49\u5C1A\u672A\u51BB\u7ED3\uFF0C\u65E0\u6CD5\u7EE7\u7EED\u8054\u8C03\u3002","name","reason",1,"block-input",3,"ngModelChange","ngModel"],["nz-button","","type","button",3,"click"],["nz-button","","nzType","primary",3,"click","disabled","nzLoading"]],template:function(e,n){e&1&&(a(0,"nz-modal",0),_("nzOnCancel",function(){return n.cancel.emit()})("nzOnOk",function(){return n.submitForm()}),A(1,Vi,6,1,"div",1)(2,ji,3,1,"ng-container",2)(3,Li,5,2,"ng-container",3),o()),e&2&&p("nzVisible",n.open())("nzWidth",640)("nzClosable",!0)("nzMaskClosable",!1)("nzOkLoading",n.busy())},dependencies:[be,Ce,Ye,ve,Je,L,Xe,Ie,me,Ke,pe,kn,B,_e,de,ye,J,Me],styles:[".modal-title[_ngcontent-%COMP%]{display:flex;flex-direction:column}.modal-subtitle[_ngcontent-%COMP%]{color:#999;font-size:14px;line-height:20px}.block-input[_ngcontent-%COMP%]{border-radius:8px}"]})};var It=class i{canEditProgress(t,e){return!!t&&!!e&&!!t.assigneeId&&t.assigneeId===e}canStart(t,e){return this.canEditProgress(t,e)}canComplete(t,e){return this.canEditProgress(t,e)}canEditBasic(t,e,n){return!t||!e?!1:t.creatorId===e||t.assigneeId===e?!0:this.isProjectAdmin(e,n)}canDelete(t,e,n){return!t||!e?!1:t.creatorId===e?!0:this.isProjectAdmin(e,n)}canBlock(t,e,n){return!t||!e?!1:t.assigneeId===e?!0:this.isProjectAdmin(e,n)}canResume(t,e,n){return this.canBlock(t,e,n)}canAdvance(t,e,n){return!t||t.status!=="done"&&t.status!=="accepted"?!1:this.canEditBasic(t,e,n)}hasPermissionToRead(t){return!!t&&(t.scopes?.includes("rd:read")??!1)}hasPermissionToTransition(t){return!!t&&(t.scopes?.includes("rd:transition:write")??!1)}hasPermissionToEdit(t){return!!t&&(t.scopes?.includes("rd:edit:write")??!1)}hasPermissionToDelete(t){return!!t&&(t.scopes?.includes("rd:delete:write")??!1)}isProjectAdmin(t,e){let n=e.find(r=>r.userId===t);return!!n&&(n.roleCode==="project_admin"||n.isOwner)}static \u0275fac=function(e){return new(e||i)};static \u0275prov=ne({token:i,factory:i.\u0275fac,providedIn:"root"})};var $i=["handle"],Ui=i=>({$implicit:i}),nn=(i,t)=>t.value;function qi(i,t){if(i&1&&je(0,"span",1),i&2){let e=t.$implicit;Ne(e.style),ee("ant-slider-mark-active",e.active),un("innerHTML",e.label,pn)}}function Wi(i,t){if(i&1&&je(0,"span",1),i&2){let e=t.$implicit;Ne(e.style),ee("ant-slider-dot-active",e.active)}}function Qi(i,t){if(i&1&&g(0,"nz-slider-step",2),i&2){let e=u();p("vertical",e.nzVertical)("min",e.nzMin)("max",e.nzMax)("lowerBound",e.bounds.lower)("upperBound",e.bounds.upper)("marksArray",e.marksArray)("included",e.nzIncluded)("reverse",e.nzReverse)}}function Gi(i,t){if(i&1){let e=E();a(0,"nz-slider-handle",4),_("focusin",function(){let r=f(e).$index,l=u();return h(l.onHandleFocusIn(r))}),o()}if(i&2){let e=t.$implicit,n=u();p("vertical",n.nzVertical)("reverse",n.nzReverse)("offset",e.offset)("value",e.value)("active",e.active)("tooltipFormatter",n.nzTipFormatter)("tooltipVisible",n.nzTooltipVisible)("tooltipPlacement",n.nzTooltipPlacement)("dragging",n.dragging())("dir",n.dir)}}function Yi(i,t){if(i&1&&g(0,"nz-slider-marks",2),i&2){let e=u();p("vertical",e.nzVertical)("min",e.nzMin)("max",e.nzMax)("lowerBound",e.bounds.lower)("upperBound",e.bounds.upper)("marksArray",e.marksArray)("included",e.nzIncluded)("reverse",e.nzReverse)}}var tn=(()=>{class i{cdr=P(Jt);handleEl;tooltip;vertical;reverse;offset;value;tooltipVisible="default";tooltipPlacement;tooltipFormatter;active=!1;dir="ltr";dragging;tooltipTitle;style={};ngOnChanges(e){let{offset:n,value:r,active:l,tooltipVisible:m,reverse:C,dir:R}=e;(n||C||R)&&this.updateStyle(),r&&(this.updateTooltipTitle(),this.updateTooltipPosition()),l&&(l.currentValue?this.toggleTooltip(!0):this.toggleTooltip(!1)),m?.currentValue==="always"&&Promise.resolve().then(()=>this.toggleTooltip(!0,!0))}enterHandle=()=>{this.dragging||(this.toggleTooltip(!0),this.updateTooltipPosition(),this.cdr.detectChanges())};leaveHandle=()=>{this.dragging||(this.toggleTooltip(!1),this.cdr.detectChanges())};focus(){this.handleEl?.nativeElement.focus()}toggleTooltip(e,n=!1){!n&&(this.tooltipVisible!=="default"||!this.tooltip)||(e?this.tooltip?.show():this.tooltip?.hide())}updateTooltipTitle(){this.tooltipFormatter?this.tooltipTitle=typeof this.tooltipFormatter=="function"?this.tooltipFormatter(this.value):this.tooltipFormatter:this.tooltipTitle=`${this.value}`}updateTooltipPosition(){this.tooltip&&Promise.resolve().then(()=>this.tooltip?.updatePosition())}updateStyle(){this.vertical?this.style={[this.reverse?"top":"bottom"]:`${this.offset}%`,[this.reverse?"bottom":"top"]:"auto",transform:this.reverse?null:"translateY(+50%)"}:this.style=ge(V({},this.getHorizontalStylePosition()),{transform:`translateX(${this.reverse?this.dir==="rtl"?"-":"+":this.dir==="rtl"?"+":"-"}50%)`}),this.cdr.markForCheck()}getHorizontalStylePosition(){let e=this.reverse?"auto":`${this.offset}%`,n=this.reverse?`${this.offset}%`:"auto";return this.dir==="rtl"&&([e,n]=[n,e]),{left:e,right:n}}static \u0275fac=function(n){return new(n||i)};static \u0275cmp=z({type:i,selectors:[["nz-slider-handle"]],viewQuery:function(n,r){if(n&1&&(Le($i,5),Le(xe,5)),n&2){let l;He(l=$e())&&(r.handleEl=l.first),He(l=$e())&&(r.tooltip=l.first)}},hostBindings:function(n,r){n&1&&_("mouseenter",function(){return r.enterHandle()})("mouseleave",function(){return r.leaveHandle()})},inputs:{vertical:[2,"vertical","vertical",O],reverse:[2,"reverse","reverse",O],offset:[2,"offset","offset",Ge],value:[2,"value","value",Ge],tooltipVisible:"tooltipVisible",tooltipPlacement:"tooltipPlacement",tooltipFormatter:"tooltipFormatter",active:[2,"active","active",O],dir:"dir",dragging:"dragging"},exportAs:["nzSliderHandle"],features:[fe],decls:2,vars:8,consts:[["handle",""],["tabindex","0","nz-tooltip","",1,"ant-slider-handle",3,"nzTooltipTitle","nzTooltipTitleContext","nzTooltipTrigger","nzTooltipPlacement"]],template:function(n,r){n&1&&g(0,"div",1,0),n&2&&(Ne(r.style),p("nzTooltipTitle",r.tooltipFormatter===null||r.tooltipVisible==="never"?null:r.tooltipTitle)("nzTooltipTitleContext",Oe(6,Ui,r.value))("nzTooltipTrigger",null)("nzTooltipPlacement",r.tooltipPlacement))},dependencies:[tt,xe],encapsulation:2,changeDetection:0})}return i})(),Ji=(()=>{class i{lowerBound=null;upperBound=null;marksArray=[];min;max;vertical=!1;included=!1;reverse;marks=[];ngOnChanges(e){let{marksArray:n,lowerBound:r,upperBound:l,reverse:m}=e;(n||m)&&this.buildMarks(),(n||r||l||m)&&this.togglePointActive()}buildMarks(){let e=this.max-this.min;this.marks=this.marksArray.map(n=>{let{value:r,offset:l,config:m}=n,C=this.getMarkStyles(r,e,m);return{label:xi(m)?m.label:m,offset:l,style:C,value:r,config:m,active:!1}})}getMarkStyles(e,n,r){let l,m=this.reverse?this.max+this.min-e:e;return this.vertical?l={marginBottom:"-50%",bottom:`${(m-this.min)/n*100}%`}:l={transform:"translate3d(-50%, 0, 0)",left:`${(m-this.min)/n*100}%`},xi(r)&&r.style&&(l=V(V({},l),r.style)),l}togglePointActive(){this.marks&&this.lowerBound!==null&&this.upperBound!==null&&this.marks.forEach(e=>{let n=e.value;e.active=this.included?n<=this.upperBound&&n>=this.lowerBound:n===this.upperBound})}static \u0275fac=function(n){return new(n||i)};static \u0275cmp=z({type:i,selectors:[["nz-slider-marks"]],hostAttrs:[1,"ant-slider-mark"],inputs:{lowerBound:"lowerBound",upperBound:"upperBound",marksArray:"marksArray",min:[2,"min","min",te],max:[2,"max","max",te],vertical:[2,"vertical","vertical",O],included:[2,"included","included",O],reverse:[2,"reverse","reverse",O]},exportAs:["nzSliderMarks"],features:[fe],decls:2,vars:0,consts:[[1,"ant-slider-mark-text",3,"ant-slider-mark-active","style","innerHTML"],[1,"ant-slider-mark-text",3,"innerHTML"]],template:function(n,r){n&1&&D(0,qi,1,5,"span",0,nn),n&2&&w(r.marks)},encapsulation:2,changeDetection:0})}return i})();function xi(i){return typeof i!="string"}var Ki=(()=>{class i{lowerBound=null;upperBound=null;marksArray=[];min;max;vertical=!1;included=!1;reverse;steps=[];ngOnChanges(e){let{marksArray:n,lowerBound:r,upperBound:l,reverse:m}=e;(n||m)&&this.buildSteps(),(n||r||l||m)&&this.togglePointActive()}buildSteps(){let e=this.vertical?"bottom":"left";this.steps=this.marksArray.map(n=>{let{value:r,config:l}=n,m=n.offset,C=this.max-this.min;return this.reverse&&(m=(this.max-r)/C*100),{value:r,offset:m,config:l,active:!1,style:{[e]:`${m}%`,transform:this.vertical?"translateY(50%)":"translateX(-50%)"}}})}togglePointActive(){this.steps&&this.lowerBound!==null&&this.upperBound!==null&&this.steps.forEach(e=>{let n=e.value;e.active=this.included?n<=this.upperBound&&n>=this.lowerBound:n===this.upperBound})}static \u0275fac=function(n){return new(n||i)};static \u0275cmp=z({type:i,selectors:[["nz-slider-step"]],hostAttrs:[1,"ant-slider-step"],inputs:{lowerBound:"lowerBound",upperBound:"upperBound",marksArray:"marksArray",min:[2,"min","min",te],max:[2,"max","max",te],vertical:[2,"vertical","vertical",O],included:[2,"included","included",O],reverse:[2,"reverse","reverse",O]},exportAs:["nzSliderStep"],features:[fe],decls:2,vars:0,consts:[[1,"ant-slider-dot",3,"ant-slider-dot-active","style"],[1,"ant-slider-dot"]],template:function(n,r){n&1&&D(0,Wi,1,4,"span",0,nn),n&2&&w(r.steps)},encapsulation:2,changeDetection:0})}return i})(),Xi=(()=>{class i{offset=0;reverse=!1;dir="ltr";length=0;vertical=!1;included=!1;style={};ngOnChanges(){let e=this.included?"visible":"hidden";this.vertical?this.style={[this.reverse?"top":"bottom"]:`${this.offset}%`,[this.reverse?"bottom":"top"]:"auto",height:`${this.length}%`,visibility:e}:this.style=ge(V({},this.getHorizontalStylePosition()),{width:`${this.length}%`,visibility:e})}getHorizontalStylePosition(){let e=this.reverse?"auto":`${this.offset}%`,n=this.reverse?`${this.offset}%`:"auto";return this.dir==="rtl"&&([e,n]=[n,e]),{left:e,right:n}}static \u0275fac=function(n){return new(n||i)};static \u0275cmp=z({type:i,selectors:[["nz-slider-track"]],inputs:{offset:[2,"offset","offset",te],reverse:[2,"reverse","reverse",O],dir:"dir",length:[2,"length","length",te],vertical:[2,"vertical","vertical",O],included:[2,"included","included",O]},exportAs:["nzSliderTrack"],features:[fe],decls:1,vars:2,consts:[[1,"ant-slider-track"]],template:function(n,r){n&1&&je(0,"div",0),n&2&&Ne(r.style)},encapsulation:2,changeDetection:0})}return i})(),rn=(()=>{class i{slider=P(mn);destroyRef=P(dn);cdr=P(Jt);platform=P(In);directionality=P(zn);handlerComponents;nzDisabled=!1;nzDots=!1;nzIncluded=!0;nzRange=!1;nzVertical=!1;nzReverse=!1;nzDefaultValue;nzMarks=null;nzMax=100;nzMin=0;nzStep=1;nzTooltipVisible="default";nzTooltipPlacement="top";nzTipFormatter;nzOnAfterChange=new cn;value=null;cacheSliderStart=null;cacheSliderLength=null;activeValueIndex=void 0;track={offset:null,length:null};handles=[];marksArray=null;bounds={lower:null,upper:null};dir="ltr";dragging=I(!1);dragStart$;dragMove$;dragEnd$;dragStart_;dragMove_;dragEnd_;isNzDisableFirstChange=!0;ngOnInit(){this.dir=this.directionality.value,this.directionality.change?.pipe(Ae(this.destroyRef)).subscribe(e=>{this.dir=e,this.cdr.detectChanges(),this.updateTrackAndHandles(),this.onValueChange(this.getValue(!0))}),this.handles=Si(this.nzRange?2:1),this.marksArray=this.nzMarks?this.generateMarkItems(this.nzMarks):null,this.bindDraggingHandlers(),this.toggleDragDisabled(this.nzDisabled),this.getValue()===null&&this.setValue(this.formatValue(null))}ngOnChanges(e){let{nzDisabled:n,nzMarks:r,nzRange:l}=e;n&&!n.firstChange?this.toggleDragDisabled(n.currentValue):r&&!r.firstChange?this.marksArray=this.nzMarks?this.generateMarkItems(this.nzMarks):null:l&&!l.firstChange&&(this.handles=Si(l.currentValue?2:1),this.setValue(this.formatValue(null)))}writeValue(e){this.setValue(e,!0)}onValueChange(e){}onTouched(){}registerOnChange(e){this.onValueChange=e}registerOnTouched(e){this.onTouched=e}setDisabledState(e){this.nzDisabled=this.isNzDisableFirstChange&&this.nzDisabled||e,this.isNzDisableFirstChange=!1,this.toggleDragDisabled(this.nzDisabled),this.cdr.markForCheck()}onKeyDown(e){if(this.nzDisabled)return;let n=e.keyCode,r=n===39||n===38,l=n===37||n===40;if(!(r||l))return;e.preventDefault();let m=(l?-this.nzStep:this.nzStep)*(this.nzReverse?-1:1)*(this.dir==="rtl"?-1:1),C=this.nzRange?this.value[this.activeValueIndex]+m:this.value+m;this.setActiveValue(ke(C,this.nzMin,this.nzMax)),this.nzOnAfterChange.emit(this.getValue(!0))}onHandleFocusIn(e){this.activeValueIndex=e}setValue(e,n=!1){n?(this.value=this.formatValue(e),this.updateTrackAndHandles()):nr(this.value,e)||(this.value=e,this.updateTrackAndHandles(),this.onValueChange(this.getValue(!0)))}getValue(e=!1){return e&&this.value&&$(this.value)?[...this.value].sort((n,r)=>n-r):this.value}getValueToOffset(e){let n=e;return typeof n>"u"&&(n=this.getValue(!0)),$(n)?n.map(r=>this.valueToOffset(r)):this.valueToOffset(n)}setActiveValueIndex(e){let n=this.getValue();if($(n)){let r=null,l,m=-1;n.forEach((C,R)=>{l=Math.abs(e-C),(r===null||l<r)&&(r=l,m=R)}),this.activeValueIndex=m,this.handlerComponents.toArray()[m].focus()}else this.handlerComponents.toArray()[0].focus()}setActiveValue(e){if($(this.value)){let n=[...this.value];n[this.activeValueIndex]=e,this.setValue(n)}else this.setValue(e)}updateTrackAndHandles(){let e=this.getValue(),n=this.getValueToOffset(e),r=this.getValue(!0),l=this.getValueToOffset(r),m=$(r)?r:[0,r],C=$(l)?[l[0],l[1]-l[0]]:[0,l];this.handles.forEach((R,G)=>{R.offset=$(n)?n[G]:n,R.value=$(e)?e[G]:e||0}),[this.bounds.lower,this.bounds.upper]=m,[this.track.offset,this.track.length]=C,this.cdr.markForCheck()}onDragStart(e){this.toggleDragMoving(!0),this.cacheSliderProperty(),this.setActiveValueIndex(this.getLogicalValue(e)),this.setActiveValue(this.getLogicalValue(e)),this.showHandleTooltip(this.nzRange?this.activeValueIndex:0)}onDragMove(e){this.setActiveValue(this.getLogicalValue(e)),this.cdr.markForCheck()}getLogicalValue(e){return this.nzReverse?!this.nzVertical&&this.dir==="rtl"?e:this.nzMax-e+this.nzMin:!this.nzVertical&&this.dir==="rtl"?this.nzMax-e+this.nzMin:e}onDragEnd(){this.nzOnAfterChange.emit(this.getValue(!0)),this.toggleDragMoving(!1),this.cacheSliderProperty(!0),this.hideAllHandleTooltip(),this.cdr.markForCheck()}bindDraggingHandlers(){if(!this.platform.isBrowser)return;let e=C=>R=>C.reduce((G,Z)=>G[Z]||G,R),n=this.slider.nativeElement,r=this.nzVertical?"pageY":"pageX",l={start:"mousedown",move:"mousemove",end:"mouseup",pluckKey:[r]},m={start:"touchstart",move:"touchmove",end:"touchend",pluckKey:["touches","0",r],filter:C=>C instanceof TouchEvent};[l,m].forEach(C=>{let{start:R,move:G,end:Z,pluckKey:Fe,filter:on=()=>!0}=C;C.startPlucked$=Be(n,R).pipe(Wt(on),Gt(Xt),Te(e(Fe)),Te(Ut=>this.findClosestValue(Ut))),C.end$=Be(document,Z),C.moveResolved$=Be(document,G).pipe(Wt(on),Gt(Xt),Te(e(Fe)),Qt(),Te(Ut=>this.findClosestValue(Ut)),Qt(),sn(C.end$))}),this.dragStart$=Ve(l.startPlucked$,m.startPlucked$),this.dragMove$=Ve(l.moveResolved$,m.moveResolved$),this.dragEnd$=Ve(l.end$,m.end$)}subscribeDrag(e=["start","move","end"]){e.indexOf("start")!==-1&&this.dragStart$&&!this.dragStart_&&(this.dragStart_=this.dragStart$.pipe(Ae(this.destroyRef)).subscribe(this.onDragStart.bind(this))),e.indexOf("move")!==-1&&this.dragMove$&&!this.dragMove_&&(this.dragMove_=this.dragMove$.pipe(Ae(this.destroyRef)).subscribe(this.onDragMove.bind(this))),e.indexOf("end")!==-1&&this.dragEnd$&&!this.dragEnd_&&(this.dragEnd_=this.dragEnd$.pipe(Ae(this.destroyRef)).subscribe(this.onDragEnd.bind(this)))}unsubscribeDrag(e=["start","move","end"]){e.includes("start")&&(this.dragStart_?.unsubscribe(),this.dragStart_=null),e.includes("move")&&(this.dragMove_?.unsubscribe(),this.dragMove_=null),e.includes("end")&&(this.dragEnd_?.unsubscribe(),this.dragEnd_=null)}toggleDragMoving(e){let n=["move","end"];e?(this.dragging.set(!0),this.subscribeDrag(n)):(this.dragging.set(!1),this.unsubscribeDrag(n))}toggleDragDisabled(e){e?this.unsubscribeDrag():this.subscribeDrag(["start"])}findClosestValue(e){let n=this.getSliderStartPosition(),r=this.getSliderLength(),l=ke((e-n)/r,0,1),m=(this.nzMax-this.nzMin)*(this.nzVertical?1-l:l)+this.nzMin,C=this.nzMarks===null?[]:Object.keys(this.nzMarks).map(parseFloat).sort((Z,Fe)=>Z-Fe);if(this.nzStep!==0&&!this.nzDots){let Z=Math.round(m/this.nzStep)*this.nzStep;C.push(Z)}let R=C.map(Z=>Math.abs(m-Z)),G=C[R.indexOf(Math.min(...R))];return this.nzStep===0?G:parseFloat(G.toFixed(Rn(this.nzStep)))}valueToOffset(e){return Pn(this.nzMin,this.nzMax,e)}getSliderStartPosition(){if(this.cacheSliderStart!==null)return this.cacheSliderStart;let e=Sn(this.slider.nativeElement);return this.nzVertical?e.top:e.left}getSliderLength(){if(this.cacheSliderLength!==null)return this.cacheSliderLength;let e=this.slider.nativeElement;return this.nzVertical?e.clientHeight:e.clientWidth}cacheSliderProperty(e=!1){this.cacheSliderStart=e?null:this.getSliderStartPosition(),this.cacheSliderLength=e?null:this.getSliderLength()}formatValue(e){return xn(e)?this.nzRange?[this.nzMin,this.nzMax]:this.nzMin:er(e,this.nzRange)?$(e)?e.map(n=>ke(n,this.nzMin,this.nzMax)):ke(e,this.nzMin,this.nzMax):this.nzDefaultValue?this.nzDefaultValue:this.nzRange?[this.nzMin,this.nzMax]:this.nzMin}showHandleTooltip(e=0){this.handles.forEach((n,r)=>n.active=r===e)}hideAllHandleTooltip(){this.handles.forEach(e=>e.active=!1)}generateMarkItems(e){let n=[];for(let r in e)if(e.hasOwnProperty(r)){let l=e[r],m=typeof r=="number"?r:parseFloat(r);m>=this.nzMin&&m<=this.nzMax&&n.push({value:m,offset:this.valueToOffset(m),config:l})}return n.length?n:null}static \u0275fac=function(n){return new(n||i)};static \u0275cmp=z({type:i,selectors:[["nz-slider"]],viewQuery:function(n,r){if(n&1&&Le(tn,5),n&2){let l;He(l=$e())&&(r.handlerComponents=l)}},hostAttrs:[1,"ant-slider"],hostVars:8,hostBindings:function(n,r){n&1&&_("keydown",function(m){return r.onKeyDown(m)}),n&2&&ee("ant-slider-rtl",r.dir==="rtl")("ant-slider-disabled",r.nzDisabled)("ant-slider-vertical",r.nzVertical)("ant-slider-with-marks",r.marksArray)},inputs:{nzDisabled:[2,"nzDisabled","nzDisabled",O],nzDots:[2,"nzDots","nzDots",O],nzIncluded:[2,"nzIncluded","nzIncluded",O],nzRange:[2,"nzRange","nzRange",O],nzVertical:[2,"nzVertical","nzVertical",O],nzReverse:[2,"nzReverse","nzReverse",O],nzDefaultValue:"nzDefaultValue",nzMarks:"nzMarks",nzMax:[2,"nzMax","nzMax",te],nzMin:[2,"nzMin","nzMin",te],nzStep:[2,"nzStep","nzStep",Ge],nzTooltipVisible:"nzTooltipVisible",nzTooltipPlacement:"nzTooltipPlacement",nzTipFormatter:"nzTipFormatter"},outputs:{nzOnAfterChange:"nzOnAfterChange"},exportAs:["nzSlider"],features:[fn([{provide:An,useExisting:ln(()=>i),multi:!0}]),fe],decls:6,vars:8,consts:[[1,"ant-slider-rail"],[3,"vertical","included","offset","length","reverse","dir"],[3,"vertical","min","max","lowerBound","upperBound","marksArray","included","reverse"],[3,"vertical","reverse","offset","value","active","tooltipFormatter","tooltipVisible","tooltipPlacement","dragging","dir"],[3,"focusin","vertical","reverse","offset","value","active","tooltipFormatter","tooltipVisible","tooltipPlacement","dragging","dir"]],template:function(n,r){n&1&&(g(0,"div",0)(1,"nz-slider-track",1),M(2,Qi,1,8,"nz-slider-step",2),D(3,Gi,1,10,"nz-slider-handle",3,nn),M(5,Yi,1,8,"nz-slider-marks",2)),n&2&&(s(),p("vertical",r.nzVertical)("included",r.nzIncluded)("offset",r.track.offset)("length",r.track.length)("reverse",r.nzReverse)("dir",r.dir),s(),x(r.marksArray?2:-1),s(),w(r.handles),s(2),x(r.marksArray?5:-1))},dependencies:[Xi,Ki,tn,Ji],encapsulation:2,changeDetection:0})}return i})();function Zi(){return new Error(`The "nzRange" can't match the "ngModel"'s type, please check these properties: "nzRange", "ngModel", "nzDefaultValue".`)}function $(i){return i instanceof Array?i.length===2:!1}function Si(i){return Array(i).fill(0).map(()=>({offset:null,value:null,active:!1}))}function er(i,t){return!$(i)&&isNaN(i)||$(i)&&i.some(e=>isNaN(e))?!1:tr(i,t)}function tr(i,t=!1){if($(i)!==t)throw Zi();return!0}function nr(i,t){return typeof i!=typeof t?!1:$(i)&&$(t)?Mn(i,t):i===t}var Mt=(()=>{class i{static \u0275fac=function(n){return new(n||i)};static \u0275mod=re({type:i});static \u0275inj=ie({imports:[rn,tn]})}return i})();var rr=(i,t)=>t.value;function or(i,t){if(i&1&&g(0,"nz-step",5),i&2){let e=u().$implicit,n=u();p("nzTitle",e.label)("nzStatus",n.excutedStatus().has(e.value)?"finish":"wait")}}function ar(i,t){if(i&1&&g(0,"nz-step",6),i&2){let e=u().$implicit;p("nzTitle",e.label)}}function sr(i,t){if(i&1&&M(0,or,1,2,"nz-step",5)(1,ar,1,1,"nz-step",6),i&2){let e=u();x(e.item().status==="closed"?0:1)}}var xt=class i{rdPermission=P(It);userStore=P(it);item=c.required();stages=c([]);busy=c();actionClick=S();deleteClick=S();progressChange=S();members=c([]);currentUser=y(()=>this.userStore.currentUser());currentUserId=y(()=>this.userStore.currentUserId());currentStageName=y(()=>{let t=this.item();return t?this.stages().find(e=>e.id===t.stageId)?.name??"-":"-"});currentStatusName=y(()=>{let t=this.item()?.status;return t==="blocked"?"\u5904\u7406\u4E2D\uFF08\u963B\u585E\u4E2D\uFF09":X[t]??"_ _"});excutedStatus=y(()=>{let t=new Set;return this.item().status!=="closed"||(t.add("todo"),t.add("closed"),this.item().progress>0&&t.add("doing"),this.item().progress>=100&&t.add("done")),t});progressDraft=I(0);constructor(){le(()=>{this.item()?.progress&&this.progressDraft.set(this.item()?.progress)})}stepsOptions=ht.filter(t=>!(t.value==="blocked"||t.value===""));getStepIndex(t){return t==="blocked"?1:t==="done"?2:t==="closed"||t==="accepted"?3:t==="reopened"?1:fi.findIndex(n=>n===t)??-1}getRdStatusColor(t){return ue[t]??"default"}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=z({type:i,selectors:[["app-rd-flow-area"]],inputs:{item:[1,"item"],stages:[1,"stages"],busy:[1,"busy"],members:[1,"members"]},outputs:{actionClick:"actionClick",deleteClick:"deleteClick",progressChange:"progressChange"},decls:10,vars:4,consts:[[1,"steps"],[1,"flow-card__meta"],[1,"stage"],[3,"nzColor"],["nzSize","small",3,"nzCurrent"],[3,"nzTitle","nzStatus"],[3,"nzTitle"]],template:function(e,n){e&1&&(a(0,"app-detail-item-card")(1,"div",0)(2,"div",1)(3,"span",2),d(4),o(),a(5,"nz-tag",3),d(6),o()(),a(7,"nz-steps",4),D(8,sr,2,1,null,null,rr),o()()()),e&2&&(s(4),b("\u5F53\u524D\u9636\u6BB5\uFF1A",n.currentStageName()),s(),p("nzColor",n.getRdStatusColor(n.item().status)),s(),v(n.currentStatusName()),s(),p("nzCurrent",n.getStepIndex(n.item().status)),s(),w(n.stepsOptions))},dependencies:[B,lt,Mt,si,ai,oi,H,K,L,Q],styles:[".flow-card__meta[_ngcontent-%COMP%]{display:flex;align-items:center;flex-wrap:wrap;gap:8px;font-size:.875rem;margin-bottom:1rem;font-weight:600}.flow-card__meta[_ngcontent-%COMP%] .stage[_ngcontent-%COMP%]{margin-right:auto}.action-empty[_ngcontent-%COMP%]{color:gray;font-size:.9rem}.delete-btn[_ngcontent-%COMP%]{margin-left:auto}.progress-wrap[_ngcontent-%COMP%]{width:100%;margin-top:8px;padding:1rem;border:1px solid #f0f0f0;border-radius:10px}.progress-wrap[_ngcontent-%COMP%] .progress-head[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between}.progress-wrap[_ngcontent-%COMP%] .progress-actions[_ngcontent-%COMP%]{width:100%;display:flex;align-items:center;justify-content:end;gap:1rem}[_nghost-%COMP%] .ant-steps-item-title:after{background-color:#d3d3d3!important}"]})};var dr=()=>({"0%":"#108ee9","100%":"#87d068"}),mr=(i,t)=>t.id;function pr(i,t){i&1&&d(0," (\u6211) ")}function cr(i,t){if(i&1&&(a(0,"div",18)(1,"span",20),d(2,"\u8FDB\u5EA6\u8BF4\u660E\uFF1A"),o(),a(3,"span",21),d(4),o()()),i&2){let e=u().$implicit;s(4),v(e.note)}}function ur(i,t){if(i&1){let e=E();a(0,"button",24),_("nzOnConfirm",function(){f(e);let r=u(2).$implicit,l=u();return h(l.onStartProgress(r))}),d(1," \u5F00\u59CB "),o()}}function gr(i,t){if(i&1){let e=E();a(0,"button",25),_("click",function(){f(e);let r=u(2).$implicit,l=u();return h(l.onUpdateProgress(r))}),d(1," \u66F4\u65B0 "),o()}}function fr(i,t){if(i&1&&M(0,ur,2,0,"button",22)(1,gr,2,0,"button",23),i&2){let e=u().$implicit;x(e.progress<=0?0:1)}}function hr(i,t){if(i&1&&(a(0,"div",9)(1,"div",11),g(2,"nz-avatar",12),a(3,"div",13)(4,"span",14),d(5),M(6,pr,1,0),o(),a(7,"span",15),d(8),k(9,"date"),o()(),g(10,"nz-progress",16),o(),a(11,"div",17),M(12,cr,5,1,"div",18),a(13,"div",19),M(14,fr,2,1),o()()()),i&2){let e=t.$implicit,n=u();s(2),se("background-color","#1890ff"),p("nzSize","small")("nzText",e.userName==null?null:e.userName.charAt(0)),s(3),b(" ",e.userName," "),s(),x(e.userId===n.currentUserId()?6:-1),s(2),b(" \u6700\u540E\u66F4\u65B0\uFF1A",F(9,10,e.updatedAt,"MM:dd hh:mm")," "),s(2),p("nzPercent",e.progress),s(2),x(e.note?12:-1),s(2),x(e.userId===n.currentUserId()&&!n.isProgressLocked()?14:-1)}}function yr(i,t){i&1&&(a(0,"div",10),d(1,"\u6682\u65E0\u6210\u5458\u8FDB\u5EA6\u6570\u636E"),o())}var Pt=class i{item=c(null);progressList=c([]);members=c([]);currentUserId=c("");updateProgressClick=S();normalizedProgressList=y(()=>{let t=this.item();if(!t)return[];let e=t.memberIds??[],n=new Map(this.members().map(C=>[C.userId,C.displayName])),r=new Map(this.progressList().map(C=>[C.userId,C])),l=[];if(e.length){let C=e.map(R=>({id:R,itemId:r.get(R)?.itemId??t.id,userId:R,userName:r.get(R)?.userName??n.get(R)??R,progress:r.get(R)?.progress??0,note:r.get(R)?.note??"",updatedAt:t.updatedAt}));l.push(...C)}else{if(!t.assigneeId)return[];l.push({id:"",itemId:t.id,userId:t.assigneeId,userName:t.assigneeName??n.get(t.assigneeId)??t.assigneeId,progress:t.progress,note:"",updatedAt:t.updatedAt})}let m=this.currentUserId();return l.sort((C,R)=>C.userId===m?-1:R.userId===m?1:0)});mainProgress=y(()=>this.item()?.progress??0);isClosed(){return this.item()?.status==="closed"}getAvatarLetter(t){return t?t.charAt(0).toUpperCase():"?"}isProgressLocked(){let t=this.item()?.status;return t==="accepted"||t==="closed"}onUpdateProgress(t){this.updateProgressClick.emit(t)}onStartProgress(t){this.updateProgressClick.emit(t)}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=z({type:i,selectors:[["app-rd-progress-area"]],inputs:{item:[1,"item"],progressList:[1,"progressList"],members:[1,"members"],currentUserId:[1,"currentUserId"]},outputs:{updateProgressClick:"updateProgressClick"},decls:15,vars:6,consts:[["title","\u6210\u5458\u8FDB\u5EA6"],[1,"main-progress-header"],[1,"main-progress-info"],[1,"main-progress-label"],[1,"main-progress-hint"],[1,"main-progress-data"],[1,"progress-bar"],[3,"nzPercent","nzShowInfo","nzStrokeColor"],[1,"progress-list"],[1,"progress-item"],[1,"empty"],[1,"progress-item-header"],[3,"nzSize","nzText"],[1,"member-info"],[1,"member-name"],[1,"member-hint"],[3,"nzPercent"],[1,"progress-item-footer"],[1,"note-row"],[1,"progress-item-actions"],[1,"note-label"],[1,"note"],["nz-button","","nzType","default","nzSize","small","nz-popconfirm","","nzPopconfirmTitle","\u786E\u8BA4\u5F00\u59CB\u5904\u7406\u5417\uFF1F","nzPopconfirmPlacement","topRight"],["nz-button","","nzType","default","nzSize","small"],["nz-button","","nzType","default","nzSize","small","nz-popconfirm","","nzPopconfirmTitle","\u786E\u8BA4\u5F00\u59CB\u5904\u7406\u5417\uFF1F","nzPopconfirmPlacement","topRight",3,"nzOnConfirm"],["nz-button","","nzType","default","nzSize","small",3,"click"]],template:function(e,n){e&1&&(a(0,"app-detail-item-card",0)(1,"div",1)(2,"div",2)(3,"span",3),d(4,"\u6574\u4F53\u8FDB\u5EA6"),o(),a(5,"span",4),d(6,"\u81EA\u52A8\u53D6\u6210\u5458\u5E73\u5747\u503C"),o()(),a(7,"div",5),d(8),o()(),a(9,"div",6),g(10,"nz-progress",7),o(),a(11,"div",8),D(12,hr,15,13,"div",9,mr,!1,yr,2,0,"div",10),o()()),e&2&&(s(8),b("",n.mainProgress(),"%"),s(2),p("nzPercent",n.mainProgress())("nzShowInfo",!1)("nzStrokeColor",hn(5,dr)),s(2),w(n.normalizedProgressList()))},dependencies:[_t,yt,B,_e,de,ye,ce,Re,Hn,lt,qn,Q,N,W],styles:["[_nghost-%COMP%]{display:block}.main-progress-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.main-progress-header[_ngcontent-%COMP%] .main-progress-info[_ngcontent-%COMP%]{margin-left:4px;display:flex;flex-direction:column}.main-progress-header[_ngcontent-%COMP%] .main-progress-info[_ngcontent-%COMP%] .main-progress-label[_ngcontent-%COMP%]{font-size:14px;font-weight:500;color:#262626}.main-progress-header[_ngcontent-%COMP%] .main-progress-info[_ngcontent-%COMP%] .main-progress-hint[_ngcontent-%COMP%]{font-size:12px;color:#8c8c8c}.main-progress-header[_ngcontent-%COMP%] .main-progress-data[_ngcontent-%COMP%]{font-size:28px;font-weight:600;color:#262626}.progress-bar[_ngcontent-%COMP%]{margin-bottom:16px}.progress-list[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:12px}.progress-item[_ngcontent-%COMP%]{background:#fafafa;border-radius:8px;padding:12px 16px;transition:all .2s ease;border:1px solid transparent}.progress-item[_ngcontent-%COMP%]:hover{background:#f5faff;border-color:#d6e4ff}.progress-item-header[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px}.member-info[_ngcontent-%COMP%]{display:flex;flex-direction:column;min-width:120px;margin-right:50px}.member-name[_ngcontent-%COMP%]{font-size:14px;font-weight:500;color:#262626}.member-hint[_ngcontent-%COMP%]{font-size:12px;color:#8c8c8c}.progress-item-header[_ngcontent-%COMP%] nz-progress[_ngcontent-%COMP%]{flex:1;margin-left:12px}.progress-item-footer[_ngcontent-%COMP%]{margin-top:8px;display:flex;justify-content:space-between;align-items:center}.progress-item-footer[_ngcontent-%COMP%] .note-row[_ngcontent-%COMP%]{font-size:12px;color:#595959}.progress-item-footer[_ngcontent-%COMP%] .note-label[_ngcontent-%COMP%]{color:#8c8c8c}.progress-item-footer[_ngcontent-%COMP%] .note[_ngcontent-%COMP%]{margin-left:4px}.progress-item-actions[_ngcontent-%COMP%]{margin-left:auto;display:flex;align-items:center;gap:8px}.progress-item-actions[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{border-radius:6px}.empty[_ngcontent-%COMP%]{text-align:center;color:#bfbfbf;padding:24px 0}"]})};var vr=(i,t)=>t.id;function Cr(i,t){if(i&1&&g(0,"nz-alert",14),i&2){let e=u().$implicit;p("nzMessage","\u963B\u585E\u539F\u56E0\uFF1A"+e.snapshot.blockerReason)}}function br(i,t){if(i&1&&(a(0,"div",2)(1,"div",3)(2,"div")(3,"div",4),d(4),o(),a(5,"div",5),d(6),k(7,"date"),o()(),a(8,"div",6)(9,"nz-tag",7),d(10),o(),a(11,"nz-tag",8),d(12),o()()(),a(13,"div",9)(14,"div",10)(15,"div",11),d(16,"\u64CD\u4F5C\u4EBA"),o(),a(17,"div",12),d(18),o()(),a(19,"div",10)(20,"div",11),d(21,"\u9A8C\u8BC1\u4EBA"),o(),a(22,"div",12),d(23),o()(),a(24,"div",13)(25,"div",11),d(26,"\u6267\u884C\u4EBA"),o(),a(27,"div",12),d(28),o()(),a(29,"div",10)(30,"div",11),d(31,"\u8BA1\u5212\u5468\u671F"),o(),a(32,"div",12),d(33),o()(),a(34,"div",10)(35,"div",11),d(36,"\u5B9E\u9645\u5468\u671F"),o(),a(37,"div",12),d(38),o()()(),M(39,Cr,1,1,"nz-alert",14),o()),i&2){let e=t.$implicit,n=u();s(4),v(e.fromStageName),s(2),v(F(7,11,e.createdAt,"MM:dd HH:mm")),s(3),p("nzColor",n.statusColor(e.snapshot.status)),s(),b(" ",n.statusLabel(e.snapshot.status)," "),s(2),b(" \u8FDB\u5EA6 ",n.clampProgress(e.snapshot.progress),"% "),s(6),b(" ",e.operatorName||e.operatorId||"\u7CFB\u7EDF"," "),s(5),b(" ",e.snapshot.verifierName||"\u672A\u6307\u5B9A"," "),s(5),b(" ",e.snapshot.memberNames.length?e.snapshot.memberNames.join("\u3001"):"\u672A\u6307\u5B9A"," "),s(5),b(" ",n.formatDateRange(e.snapshot.planStartAt,e.snapshot.planEndAt)," "),s(5),b(" ",n.formatDateRange(e.snapshot.actualStartAt,e.snapshot.actualEndAt)," "),s(),x(e.snapshot.blockerReason?39:-1)}}var Rt=class i{entries=c([]);parsedEntries=y(()=>this.entries().map(t=>ge(V({},t),{snapshot:this.parseSnapshot(t.snapshotJson)})));statusLabel(t){return X[t]??t}statusColor(t){return ue[t]??t}clampProgress(t){let e=Number.isFinite(t)?t:0;return Math.max(0,Math.min(100,Math.round(e)))}formatDateRange(t,e){return`${this.formatDate(t)} ~ ${this.formatDate(e)}`}formatDate(t){return t?new Intl.DateTimeFormat("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit"}).format(new Date(t)):"-"}parseSnapshot(t){try{let e=JSON.parse(t);return{stageId:e.stageId??null,stageName:e.stageName??"-",status:e.status??"todo",progress:e.progress??0,assigneeId:e.assigneeId??null,assigneeName:e.assigneeName??null,verifierId:e.verifierId??null,verifierName:e.verifierName??null,memberIds:e.memberIds??[],memberNames:e.memberNames??[],planStartAt:e.planStartAt??null,planEndAt:e.planEndAt??null,actualStartAt:e.actualStartAt??null,actualEndAt:e.actualEndAt??null,blockerReason:e.blockerReason??null}}catch{return{stageId:null,stageName:"-",status:"todo",progress:0,assigneeId:null,assigneeName:null,verifierId:null,verifierName:null,memberIds:[],memberNames:[],planStartAt:null,planEndAt:null,actualStartAt:null,actualEndAt:null,blockerReason:null}}}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=z({type:i,selectors:[["app-rd-stage-history"]],inputs:{entries:[1,"entries"]},decls:4,vars:1,consts:[["title","\u7814\u53D1\u9636\u6BB5\u5386\u53F2","emptyText","\u6682\u65E0\u7814\u53D1\u9636\u6BB5\u5386\u53F2",3,"emptyStatus"],[1,"history-list"],[1,"history-item"],[1,"history-header"],[1,"title"],[1,"time"],[1,"tags"],[3,"nzColor"],["nzColor","blue"],[1,"meta-grid"],[1,"meta-item"],[1,"label"],[1,"value"],[1,"meta-item","full"],["nzType","warning","nzShowIcon","",1,"mt",3,"nzMessage"]],template:function(e,n){e&1&&(a(0,"app-detail-item-card",0)(1,"div",1),D(2,br,40,14,"div",2,vr),o()()),e&2&&(p("emptyStatus",n.parsedEntries().length===0),s(2),w(n.parsedEntries()))},dependencies:[Q,H,K,ut,ct,N,W],styles:['.history-list[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:12px}.history-item[_ngcontent-%COMP%]{position:relative;border:1px solid #f0f0f0;border-radius:10px;padding:12px;background:#fff}.history-item[_ngcontent-%COMP%]:before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:3px;border-radius:3px;background:#1890ff}.history-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:10px}.title[_ngcontent-%COMP%]{font-size:14px;font-weight:600;color:#262626}.time[_ngcontent-%COMP%]{font-size:12px;color:#8c8c8c;margin-top:2px}.tags[_ngcontent-%COMP%]{display:flex;gap:8px}.meta-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.meta-item[_ngcontent-%COMP%]{background:#fafafa;border-radius:8px;padding:8px 10px}.meta-item.full[_ngcontent-%COMP%]{grid-column:1 / -1}.label[_ngcontent-%COMP%]{font-size:11px;color:#8c8c8c}.value[_ngcontent-%COMP%]{font-size:13px;color:#262626;font-weight:500;margin-top:2px}.mt[_ngcontent-%COMP%]{margin-top:10px}@media (max-width: 768px){.meta-grid[_ngcontent-%COMP%]{grid-template-columns:1fr}}']})};function zr(i,t){if(i&1&&(a(0,"nz-descriptions",2)(1,"nz-descriptions-item",4),d(2),o(),a(3,"nz-descriptions-item",5),d(4),o(),a(5,"nz-descriptions-item",6),d(6),o(),a(7,"nz-descriptions-item",7)(8,"nz-tag",8),d(9),o()(),a(10,"nz-descriptions-item",9)(11,"nz-tag",8),d(12),o()(),a(13,"nz-descriptions-item",10),d(14),o(),a(15,"nz-descriptions-item",11),d(16),o()()),i&2){let e=t,n=u();p("nzColumn",1),s(2),b(" ",e.creatorName," "),s(2),b(" ",n.memberNames()," "),s(2),b(" ",e.creatorName," "),s(2),p("nzColor",n.getStatusColor(e.status)),s(),b(" ",n.getStatusLabel(e.status)," "),s(2),p("nzColor",n.getPriorityColor(e.priority)),s(),b(" ",n.getPriorityLabel(e.priority)," "),s(2),b(" ",n.getStagesName(e.stageId)," "),s(2),b(" ",e.progress," % ")}}function Ir(i,t){if(i&1&&(a(0,"div",12)(1,"div",13)(2,"div",14),d(3,"\u8BA1\u5212\u5F00\u59CB"),o(),a(4,"div",15),d(5),k(6,"date"),o()(),a(7,"div",13)(8,"div",14),d(9,"\u8BA1\u5212\u7ED3\u675F"),o(),a(10,"div",15),d(11),k(12,"date"),o()(),a(13,"div",13)(14,"div",14),d(15,"\u5B9E\u9645\u5F00\u59CB"),o(),a(16,"div",15),d(17),k(18,"date"),o()(),a(19,"div",13)(20,"div",14),d(21,"\u5B9E\u9645\u7ED3\u675F"),o(),a(22,"div",15),d(23),k(24,"date"),o()(),a(25,"div",13)(26,"div",14),d(27,"\u8BA1\u5212\u5DE5\u671F"),o(),a(28,"div",15),d(29),o()(),a(30,"div",13)(31,"div",14),d(32,"\u5B9E\u9645\u5DE5\u671F"),o(),a(33,"div",15),d(34),o()(),a(35,"div",13)(36,"div",14),d(37,"\u5F53\u524D\u9636\u6BB5\u5DE5\u671F"),o(),a(38,"div",15),d(39),o()(),a(40,"div",16)(41,"div",14),d(42,"\u521B\u5EFA\u65F6\u95F4"),o(),a(43,"div",15),d(44),k(45,"date"),o()()(),a(46,"div",17),d(47),o()),i&2){let e=t,n=u();s(5),v(F(6,10,e.planStartAt,"yyyy-MM-dd")||"\u672A\u8BBE\u7F6E"),s(6),v(F(12,13,e.planEndAt,"yyyy-MM-dd")||"\u672A\u8BBE\u7F6E"),s(6),v(F(18,16,e.actualStartAt,"yyyy-MM-dd")||"-"),s(6),v(F(24,19,e.actualEndAt,"yyyy-MM-dd")||"-"),s(6),v(n.getPlannedDuration()),s(5),v(n.getActualDuration()),s(5),v(n.getCurrentStageDuration()),s(5),v(F(45,22,e.createdAt,"yyyy-MM-dd HH:mm")),s(3),gn("\u65F6\u95F4\u72B6\u6001\uFF1A",n.getTimeStatus(),"\u3002",n.getTimeStatusHint())}}var Dt=class i{rdItem=c.required();stages=c([]);stageHistory=c([]);members=c([]);memberNames=y(()=>this.rdItem().memberIds.length<=0||this.members().length<=0?this.rdItem().assigneeName:this.rdItem().memberIds.map(t=>this.members().find(n=>n.userId===t)?.displayName).join("\uFF0C"));getStatusLabel(t){return X[t]}getStatusColor(t){return ue[t]}getPriorityLabel(t){return De[t]}getPriorityColor(t){return we[t]}getStagesName(t){return t?this.stages().find(n=>n.id===t)?.name??"":""}getPlannedDuration(){let t=this.rdItem().planStartAt,e=this.rdItem().planEndAt;return!t||!e?"-":this.formatDuration(this.diffDurationDays(t,e))}getActualDuration(){let t=this.rdItem(),e=this.stageHistory().map(l=>this.parseSnapshot(l.snapshotJson)).reduce((l,m)=>!m?.actualStartAt||!m.actualEndAt?l:l+this.diffDurationDays(m.actualStartAt,m.actualEndAt),0),n=this.getCurrentStageDurationDays(t),r=e+n;return r<=0?"-":this.formatDuration(r)}getCurrentStageDuration(){let t=this.getCurrentStageDurationDays(this.rdItem());return t<=0?"-":this.formatDuration(t)}getTimeStatus(){let t=this.rdItem();if(!t.actualStartAt)return"\u672A\u5F00\u59CB";if(t.status!=="done"&&t.status!=="accepted"&&t.status!=="closed")return"\u8FDB\u884C\u4E2D";if(!t.actualEndAt||!t.planEndAt)return"\u5DF2\u5B8C\u6210";let e=new Date(t.actualEndAt),n=new Date(t.planEndAt),r=Math.round((n.getTime()-e.getTime())/(1e3*60*60*24)*2)/2;return r>0?`\u63D0\u524D ${this.formatDuration(r)}`:r===0?"\u6309\u65F6\u5B8C\u6210":`\u5EF6\u671F ${this.formatDuration(Math.abs(r))}`}getTimeStatusHint(){let t=this.getTimeStatus();return t==="\u672A\u5F00\u59CB"?"\u5F00\u59CB\u540E\u5C06\u81EA\u52A8\u7EDF\u8BA1\u5B9E\u9645\u5DE5\u671F\u3002":t==="\u8FDB\u884C\u4E2D"?"\u5B8C\u6210\u540E\u81EA\u52A8\u8BA1\u7B97\u201C\u63D0\u524D / \u6309\u65F6 / \u5EF6\u671F\u201D\u3002":"\u65F6\u95F4\u7EDF\u8BA1\u5DF2\u6309\u8BA1\u5212\u4E0E\u5B9E\u9645\u7ED3\u675F\u65F6\u95F4\u81EA\u52A8\u8BA1\u7B97\u3002"}parseSnapshot(t){if(!t)return null;try{return JSON.parse(t)}catch{return null}}getCurrentStageDurationDays(t){if(!t.actualStartAt)return 0;let e=t.actualEndAt??(t.status==="done"||t.status==="accepted"||t.status==="closed"?t.updatedAt:new Date().toISOString());return this.diffDurationDays(t.actualStartAt,e)}formatDuration(t){let e=Math.round(Math.max(0,t)*2)/2;return e<=0?"-":`${Number.isInteger(e)?e.toFixed(0):e.toFixed(1)} \u5929`}parseDateTime(t,e){if(/^\d{4}-\d{2}-\d{2}$/.test(t)){let n=e==="start"?"T00:00:00.000":"T23:59:59.999";return new Date(`${t}${n}`)}return new Date(t)}diffDurationDays(t,e){let n=this.parseDateTime(t,"start"),r=this.parseDateTime(e,"end");if(Number.isNaN(n.getTime())||Number.isNaN(r.getTime()))return 0;let l=Math.max(0,r.getTime()-n.getTime()),m=l/(1e3*60*60*24),C=Math.round(m*2)/2;return l>0&&C===0||l===0?.5:C}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=z({type:i,selectors:[["app-rd-base-info"]],inputs:{rdItem:[1,"rdItem"],stages:[1,"stages"],stageHistory:[1,"stageHistory"],members:[1,"members"]},decls:5,vars:2,consts:[[1,"base-info-container"],["title","\u57FA\u7840\u4FE1\u606F"],["nzBordered","","nzSize","small",3,"nzColumn"],["title","\u65F6\u95F4\u4FE1\u606F"],["nzTitle","\u521B\u5EFA\u4EBA"],["nzTitle","\u6267\u884C\u4EBA"],["nzTitle","\u9A8C\u6536\u4EBA"],["nzTitle","\u72B6\u6001"],[3,"nzColor"],["nzTitle","\u4F18\u5148\u7EA7"],["nzTitle","\u9636\u6BB5"],["nzTitle","\u8FDB\u5EA6"],[1,"time-grid"],[1,"time-item"],[1,"label"],[1,"value"],[1,"time-item","full"],[1,"time-status"]],template:function(e,n){if(e&1&&(a(0,"div",0)(1,"app-detail-item-card",1),M(2,zr,17,10,"nz-descriptions",2),o(),a(3,"app-detail-item-card",3),M(4,Ir,48,25),o()()),e&2){let r,l;s(2),x((r=n.rdItem())?2:-1,r),s(2),x((l=n.rdItem())?4:-1,l)}},dependencies:[gt,ci,pi,Q,H,K,N,W],styles:[".base-info-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1rem}.time-grid[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.time-item[_ngcontent-%COMP%]{background:#f5f7fa;border-radius:8px;padding:12px}.time-item[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{font-size:12px;color:#8c8c8c;margin-bottom:4px}.time-item[_ngcontent-%COMP%] .value[_ngcontent-%COMP%]{font-size:14px;font-weight:500;color:#262626}.time-item.full[_ngcontent-%COMP%]{grid-column:span 2}.time-status[_ngcontent-%COMP%]{margin-top:12px;padding:10px 12px;border-radius:6px;background:#fff7e6;color:#d46b08;border:1px solid #ffd591;font-size:13px}"]})};var Mr=(i,t)=>t.id;function xr(i,t){if(i&1&&(a(0,"nz-timeline-item")(1,"div",1)(2,"div",2)(3,"span",3),d(4),o(),a(5,"span",4),d(6),o(),a(7,"span",5),d(8),k(9,"date"),o()()()()),i&2){let e=t.$implicit;s(4),v(e.operatorName||"\u7CFB\u7EDF"),s(2),v(e.content||e.actionType),s(2),v(F(9,3,e.createdAt,"MM/dd HH:mm"))}}var wt=class i{logs=c([]);static \u0275fac=function(e){return new(e||i)};static \u0275cmp=z({type:i,selectors:[["app-rd-logs-area"]],inputs:{logs:[1,"logs"]},decls:4,vars:2,consts:[["title","\u7814\u53D1\u52A8\u6001","maxHeight","600px",3,"emptyStatus","emptyText"],[1,"rd-log-item"],[1,"meta"],[1,"operator"],[1,"content"],[1,"time"]],template:function(e,n){e&1&&(a(0,"app-detail-item-card",0)(1,"nz-timeline"),D(2,xr,10,6,"nz-timeline-item",null,Mr),o()()),e&2&&(p("emptyStatus",n.logs().length===0)("emptyText","\u6682\u65E0\u52A8\u6001"),s(2),w(n.logs()))},dependencies:[Q,ft,ui,gi,N,W],styles:[".rd-log-item[_ngcontent-%COMP%]{padding:4px 0 0}.rd-log-item[_ngcontent-%COMP%] .meta[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.875rem;color:#000000a6;font-size:1rem;margin-bottom:4px}.rd-log-item[_ngcontent-%COMP%] .meta[_ngcontent-%COMP%] .operator[_ngcontent-%COMP%]{font-weight:700;white-space:nowrap;flex-shrink:0}.rd-log-item[_ngcontent-%COMP%] .meta[_ngcontent-%COMP%] .content[_ngcontent-%COMP%]{color:#000000d9;font-size:.875rem}.rd-log-item[_ngcontent-%COMP%] .meta[_ngcontent-%COMP%] .time[_ngcontent-%COMP%]{margin-right:15px;font-size:.875rem;font-weight:300;color:#bbb;margin-left:auto;white-space:nowrap;flex-shrink:0}"]})};var Sr=(i,t)=>t.id;function Pr(i,t){i&1&&(a(0,"div",3),d(1,"\u6682\u65E0\u7814\u53D1\u9879\u63CF\u8FF0"),o())}function Rr(i,t){if(i&1&&(a(0,"div",4)(1,"div",5),d(2),o(),a(3,"div",6),d(4),o()()),i&2){let e=t.$implicit;s(2),v(e.label),s(2),v(e.content)}}var Et=class i{rdItem=c.required();projectId=c.required();logs=c([]);mdContent=y(()=>{let t=this.rdItem();return t?vi(t.description||"",this.projectId(),t.id,"rd-items"):""});detailNotes=y(()=>{let t=[...this.logs()].reverse(),e=[];for(let n of t){let r=n.content?.trim()||"";if(r){if(n.actionType==="advance_stage"){let m=r.match(/(?:^|;)\s*说明[::]\s*(.+)$/)?.[1]?.trim();if(!m)continue;let R=r.match(/推进阶段[::]\s*.+?\s*->\s*([^;]+)/)?.[1]?.trim()||"\u8BE5";e.push({id:`advance-${n.id}`,label:`${R}\u9636\u6BB5\u63CF\u8FF0`,content:m});continue}if(n.actionType==="close"){let m=r.match(/关闭研发项[::]\s*(.+)$/)?.[1]?.trim();if(!m)continue;e.push({id:`close-${n.id}`,label:"\u5173\u95ED\u539F\u56E0",content:m})}}}return e});static \u0275fac=function(e){return new(e||i)};static \u0275cmp=z({type:i,selectors:[["app-rd-description-area"]],inputs:{rdItem:[1,"rdItem"],projectId:[1,"projectId"],logs:[1,"logs"]},decls:6,vars:6,consts:[[3,"title"],[1,"description-container"],[3,"content","showToc","tocVariant","tocCollapsedByDefault"],[1,"empty"],[1,"note"],[1,"note-label"],[1,"note-content"]],template:function(e,n){e&1&&(a(0,"app-detail-item-card",0)(1,"div",1),g(2,"app-markdown-viewer",2),M(3,Pr,2,0,"div",3),o(),D(4,Rr,5,2,"div",4,Sr),o()),e&2&&(p("title","\u7814\u53D1\u9879\u63CF\u8FF0"),s(2),p("content",n.mdContent())("showToc",!0)("tocVariant","floating")("tocCollapsedByDefault",!0),s(),x(n.mdContent()?-1:3),s(),w(n.detailNotes()))},dependencies:[_i,Q],styles:[".description-container[_ngcontent-%COMP%]{margin-bottom:10px;max-height:500px;overflow-y:auto}.description-container[_ngcontent-%COMP%] .empty[_ngcontent-%COMP%]{width:100%;text-align:center;font-size:.875rem;color:gray}.note[_ngcontent-%COMP%]{padding:1rem 0;border-top:1px solid #ebedf0}.note[_ngcontent-%COMP%] .note-label[_ngcontent-%COMP%]{margin-bottom:4px;font-size:.8rem;font-weight:700;color:gray}.note[_ngcontent-%COMP%] .note-content[_ngcontent-%COMP%]{font-size:.8rem;text-indent:.8rem}"]})};function Dr(i,t){i&1&&(a(0,"span",5),d(1),o()),i&2&&(s(),v(t))}function wr(i,t){if(i&1&&(a(0,"div",3)(1,"div",4),M(2,Dr,2,1,"span",5),a(3,"strong"),d(4),o()()()),i&2){let e,n=u();s(2),x((e=n.subtitleText())?2:-1,e),s(2),v(n.titleText())}}function Er(i,t){i&1&&g(0,"nz-spin",6)}function Tr(i,t){if(i&1){let e=E();a(0,"div",7)(1,"div",8)(2,"app-rd-flow-area",9),_("actionClick",function(r){f(e);let l=u(2);return h(l.actionClick.emit(r))})("deleteClick",function(){f(e);let r=u(2);return h(r.deleteClick.emit())}),o(),a(3,"app-rd-progress-area",10),_("updateProgressClick",function(r){f(e);let l=u(2);return h(l.updateProgressClick.emit(r))}),o(),g(4,"app-rd-description-area",11)(5,"app-rd-logs-area",12)(6,"app-rd-stage-history",13),o(),a(7,"div",14),g(8,"app-rd-base-info",15),o()()}if(i&2){let e=t,n=u(2);s(2),p("item",e)("members",n.members())("stages",n.stages())("busy",n.busy()),s(),p("item",e)("progressList",n.progressList())("members",n.members())("currentUserId",n.currentUserId()),s(),p("projectId",n.projectId())("rdItem",e)("logs",n.logs()),s(),p("logs",n.logs()),s(),p("entries",n.stageHistory()),s(2),p("rdItem",e)("stages",n.stages())("stageHistory",n.stageHistory())("members",n.members())}}function Nr(i,t){if(i&1&&M(0,Er,1,0,"nz-spin",6)(1,Tr,9,17,"div",7),i&2){let e,n=u();x(n.loading()&&!n.rdItem()?0:(e=n.rdItem())?1:-1,e)}}var Tt=class i{rdItem=c();loading=c(!1);open=c(!1);busy=c(!1);logs=c([]);members=c([]);stages=c([]);progressList=c([]);stageHistory=c([]);projectId=c("");currentUserId=c("");close=S();actionClick=S();updateProgressClick=S();deleteClick=S();subtitleText=y(()=>this.rdItem()?.rdNo||"");titleText=y(()=>this.rdItem()?.title||"\u7814\u53D1\u9879\u8BE6\u60C5");closeDetaile(){this.close.emit()}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=z({type:i,selectors:[["app-rd-detail"]],inputs:{rdItem:[1,"rdItem"],loading:[1,"loading"],open:[1,"open"],busy:[1,"busy"],logs:[1,"logs"],members:[1,"members"],stages:[1,"stages"],progressList:[1,"progressList"],stageHistory:[1,"stageHistory"],projectId:[1,"projectId"],currentUserId:[1,"currentUserId"]},outputs:{close:"close",actionClick:"actionClick",updateProgressClick:"updateProgressClick",deleteClick:"deleteClick"},decls:4,vars:7,consts:[["drawerTitleTpl",""],[3,"nzOnClose","nzVisible","nzClosable","nzMaskClosable","nzWidth","nzWrapClassName","nzMask","nzTitle"],["nzDrawerContent",""],[1,"title-wrap"],[1,"title-main"],[1,"subtitle"],["nzSize","large","nzTip","\u6B63\u5728\u52A0\u8F7D\u7814\u53D1\u9879....",1,"loading"],[1,"detail-wrap"],[1,"left-column"],[3,"actionClick","deleteClick","item","members","stages","busy"],[3,"updateProgressClick","item","progressList","members","currentUserId"],[3,"projectId","rdItem","logs"],[3,"logs"],[3,"entries"],[1,"right-column"],[3,"rdItem","stages","stageHistory","members"]],template:function(e,n){if(e&1){let r=E();a(0,"nz-drawer",1),_("nzOnClose",function(){return f(r),h(n.closeDetaile())}),A(1,wr,5,2,"ng-template",null,0,q)(3,Nr,2,1,"ng-template",2),o()}if(e&2){let r=U(2);p("nzVisible",n.open())("nzClosable",!0)("nzMaskClosable",!0)("nzWidth",900)("nzWrapClassName","rd-detail-drawer")("nzMask",!1)("nzTitle",r)}},dependencies:[Tn,En,wn,Y,ze,gt,ft,N,J,rt,L,xt,Et,wt,Dt,Pt,Kn,Jn,Rt],styles:[".ant-descriptions-bordered.ant-descriptions-small .ant-descriptions-item-label{min-width:75px}.loading[_ngcontent-%COMP%]{margin-top:40%}.title-wrap[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center}.title-wrap[_ngcontent-%COMP%] .subtitle[_ngcontent-%COMP%]{margin-right:1rem;font-size:12px;line-height:1.4;padding:3px 8px;border-radius:4px;white-space:nowrap;background:#fafafa;color:#64748b}.wrap-title[_ngcontent-%COMP%]{width:100%;margin-bottom:12px;font-size:18px;font-weight:700;border-bottom:1px solid #bbbbbb}.detail-wrap[_ngcontent-%COMP%]{display:flex;align-items:start;gap:1rem}.detail-wrap[_ngcontent-%COMP%] .left-column[_ngcontent-%COMP%]{width:65%;display:flex;flex-direction:column;gap:1rem}.detail-wrap[_ngcontent-%COMP%] .right-column[_ngcontent-%COMP%]{width:35%;display:flex;flex-direction:column;gap:1rem}.detail-wrap[_ngcontent-%COMP%] .edit-bar[_ngcontent-%COMP%]{width:100%;display:flex;justify-content:end}.detail-wrap[_ngcontent-%COMP%] .edit-bar[_ngcontent-%COMP%] .edit-btn[_ngcontent-%COMP%]{margin-top:10px}.detail-wrap[_ngcontent-%COMP%] .edit-area[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:12px} .ant-descriptions-item-content, .ant-descriptions-item-label{font-size:.875rem}"]})};var Or=(i,t)=>t.id,Ri=(i,t)=>t.value;function Ar(i,t){if(i&1&&g(0,"nz-option",11),i&2){let e=t.$implicit;p("nzLabel",e.name)("nzValue",e.id)("nzDisabled",!e.enabled)}}function kr(i,t){i&1&&g(0,"nz-icon",20)}function Fr(i,t){if(i&1&&g(0,"nz-option",21),i&2){let e=u().$implicit;p("nzLabel",e.label)("nzValue",e.value)}}function Br(i,t){if(i&1&&M(0,Fr,1,2,"nz-option",21),i&2){let e=t.$implicit;x(e.value!==""?0:-1)}}function Vr(i,t){i&1&&g(0,"nz-icon",22)}function jr(i,t){if(i&1&&g(0,"nz-option",21),i&2){let e=u().$implicit;p("nzLabel",e.label)("nzValue",e.value)}}function Lr(i,t){if(i&1&&M(0,jr,1,2,"nz-option",21),i&2){let e=t.$implicit;x(e.value!==""?0:-1)}}function Hr(i,t){i&1&&g(0,"nz-icon",23)}var Nt=class i{fb=P(Ze);statusOptions=ht;priorityOptions=yi;query=c.required();stages=c([]);viewType=_n();valueChange=S();openCreateDialog=S();constructor(){this.form.valueChanges.pipe(an(500)).subscribe(t=>{this.valueChange.emit(t)})}ngOnInit(){this.form.patchValue(this.query(),{emitEvent:!1})}form=this.fb.group({keyword:this.fb.control(""),stageIds:this.fb.control([]),status:this.fb.control([]),priority:this.fb.control([])});static \u0275fac=function(e){return new(e||i)};static \u0275cmp=z({type:i,selectors:[["app-rd-filter-bar"]],inputs:{query:[1,"query"],stages:[1,"stages"],viewType:[1,"viewType"]},outputs:{viewType:"viewTypeChange",valueChange:"valueChange",openCreateDialog:"openCreateDialog"},decls:35,vars:8,consts:[["stageIconTpl",""],["statusIconTpl",""],["priorityIconTpl",""],[1,"toolbar"],["nz-form","",1,"search-form",3,"formGroup"],[1,"search-row"],[1,"search-box"],["nzInputPrefix","","nzType","search","nzTheme","outline"],["nz-input","","type","text","formControlName","keyword","placeholder","\u641C\u7D22 RD \u7F16\u53F7\u3001\u6807\u9898\u6216\u63CF\u8FF0"],[1,"form-item"],["formControlName","stageIds","nzPlaceHolder","\u9009\u62E9\u9636\u6BB5","nzMode","multiple","nzAllowClear","",3,"nzPrefix","nzMaxTagCount"],[3,"nzLabel","nzValue","nzDisabled"],["formControlName","status","nzPlaceHolder","\u9009\u62E9\u72B6\u6001","nzMode","multiple","nzAllowClear","",3,"nzPrefix","nzMaxTagCount"],["formControlName","priority","nzPlaceHolder","\u9009\u62E9\u4F18\u5148\u7EA7","nzMode","multiple","nzAllowClear","",3,"nzPrefix","nzMaxTagCount"],[1,"right-col"],[1,"view-type",3,"ngModelChange","ngModel"],["nz-radio-button","","nzValue","list"],["nzType","unordered-list","nzTheme","outline"],["nz-radio-button","","nzValue","board"],["nzType","book","nzTheme","outline"],["nzType","stock","nzTheme","outline"],[3,"nzLabel","nzValue"],["nzType","thunderbolt","nzTheme","outline"],["nzType","tags","nzTheme","outline"]],template:function(e,n){if(e&1){let r=E();a(0,"div",3)(1,"form",4)(2,"div",5)(3,"nz-form-item",6)(4,"nz-form-control")(5,"nz-input-wrapper"),g(6,"nz-icon",7)(7,"input",8),o()()()(),a(8,"nz-form-item",9)(9,"nz-form-control")(10,"nz-select",10),D(11,Ar,1,3,"nz-option",11,Or),o()(),A(13,kr,1,0,"ng-template",null,0,q),o(),a(15,"nz-form-item",9)(16,"nz-form-control")(17,"nz-select",12),D(18,Br,1,1,null,null,Ri),o()(),A(20,Vr,1,0,"ng-template",null,1,q),o(),a(22,"nz-form-item",9)(23,"nz-form-control")(24,"nz-select",13),D(25,Lr,1,1,null,null,Ri),o()(),A(27,Hr,1,0,"ng-template",null,2,q),o()(),a(29,"div",14)(30,"nz-radio-group",15),We("ngModelChange",function(m){return f(r),qe(n.viewType,m)||(n.viewType=m),h(m)}),a(31,"label",16),g(32,"nz-icon",17),o(),a(33,"label",18),g(34,"nz-icon",19),o()()()()}if(e&2){let r=U(14),l=U(21),m=U(28);s(),p("formGroup",n.form),s(9),p("nzPrefix",r)("nzMaxTagCount",2),s(),w(n.stages()),s(6),p("nzPrefix",l)("nzMaxTagCount",2),s(),w(n.statusOptions),s(6),p("nzPrefix",m)("nzMaxTagCount",2),s(),w(n.priorityOptions),s(5),Ue("ngModel",n.viewType)}},dependencies:[pt,On,Nn,di,li,mi,B,de,Pe,ot,at,J,Me,jn,Vn,L,Xe,Ie,me,Ke,pe,et,Fn,Bn,dt,Qn,Wn,Y,he],styles:[".toolbar[_ngcontent-%COMP%]{border:1px solid rgba(0,0,0,.12);border-radius:8px;display:flex;justify-content:space-between;margin-top:16px;padding:16px}.toolbar[_ngcontent-%COMP%] .search-form[_ngcontent-%COMP%]{flex:1;margin-right:50px;display:flex;flex-wrap:wrap;gap:10px}.toolbar[_ngcontent-%COMP%] .search-form[_ngcontent-%COMP%] .form-item[_ngcontent-%COMP%]{width:285px;min-width:285px;margin-bottom:0}.toolbar[_ngcontent-%COMP%] .search-form[_ngcontent-%COMP%] .search-row[_ngcontent-%COMP%]{width:100%}.toolbar[_ngcontent-%COMP%] .search-form[_ngcontent-%COMP%] .search-row[_ngcontent-%COMP%] .search-box[_ngcontent-%COMP%]{width:380px}.toolbar[_ngcontent-%COMP%] .right-col[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:end;justify-content:end}.toolbar[_ngcontent-%COMP%] .right-col[_ngcontent-%COMP%] .view-type[_ngcontent-%COMP%]{margin-top:auto;display:flex;justify-content:end}"]})};var $r=i=>({"task-card-active":i}),Ur=i=>({"background-color":i}),qr=(i,t)=>t.name;function Wr(i,t){if(i&1&&g(0,"nz-avatar",14),i&2){let e=t.$implicit;p("nzText",e.text)("ngStyle",Oe(2,Ur,e.color))}}var Ot=class i{rdItem=c.required();stages=c([]);projectMembers=c([]);selected=c(!1);projectId=c(null);selectItem=S();rdItemPreview=y(()=>vt(this.rdItem().description,this.projectId(),this.rdItem().id,"rd-items")||"\u6682\u65E0\u8BE6\u7EC6\u63CF\u8FF0");itemMembersMap=y(()=>{let t=this.rdItem().memberIds||[];return t.length===0&&this.rdItem().assigneeName?new Map([[this.rdItem().assigneeName,this.rdItem().assigneeName]]):t.length===0&&!this.rdItem().assigneeName?new Map:new Map(this.projectMembers().filter(e=>t.includes(e.userId)).map(e=>[e.userId,e.displayName]))});memberAvatarList=y(()=>{let t=this.itemMembersMap(),e=Array.from(t.values());return e.map((n,r)=>({name:n,text:n?.charAt(0)?.toUpperCase()||"?",color:this.generateBlue(r,e.length)}))});generateBlue(t,e){if(e<=1)return"hsl(210, 70%, 55%)";let n=65;return`hsl(210, 70%, ${n-t/(e-1)*(n-35)}%)`}getPriorityColor(t){return we[t]}getPriorityLabel(t){return De[t]}getStatusLabel(t){return X[t]}getStageName(t){let e=this.stages().find(n=>n.id===t);return e?e.name:"-"}getStagesName(t){return t?this.stages().find(n=>n.id===t)?.name??"":""}memberNamesText(t){let e=this.itemMembersMap();return e.size===0?"":Array.from(e.values()).join("\u3001")}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=z({type:i,selectors:[["app-rd-item-card"]],inputs:{rdItem:[1,"rdItem"],stages:[1,"stages"],projectMembers:[1,"projectMembers"],selected:[1,"selected"],projectId:[1,"projectId"]},outputs:{selectItem:"selectItem"},decls:30,vars:24,consts:[[1,"task-card",3,"click","ngClass"],[1,"priority-left-bar"],[1,"card-content"],[1,"card-header"],[1,"task-id"],[1,"badge-row"],[1,"tag",3,"nzColor"],[1,"task-title"],[1,"des-text"],[3,"lines","enableToggle"],[1,"progress-section"],["nzSize","small",3,"nzPercent"],[1,"meta-row"],[1,"assignee"],[3,"nzText","ngStyle"],[1,"assignee-name"],[1,"due-date"],["nzType","calendar","nzTheme","outline"]],template:function(e,n){e&1&&(a(0,"div",0),_("click",function(){return n.selectItem.emit(n.rdItem())}),g(1,"div",1),a(2,"div",2)(3,"div",3)(4,"span",4),d(5),o(),a(6,"div",5)(7,"nz-tag",6),d(8),o(),a(9,"nz-tag",6),d(10),o()()(),a(11,"div",7),d(12),o(),a(13,"div",8)(14,"app-ellipsis-text",9),d(15),o()(),a(16,"div",10),g(17,"nz-progress",11),o(),a(18,"div",12)(19,"div",13)(20,"nz-avatar-group"),D(21,Wr,1,4,"nz-avatar",14,qr),o(),a(23,"span",15)(24,"app-ellipsis-text",9),d(25),o()()(),a(26,"div",16),g(27,"nz-icon",17),d(28),k(29,"date"),o()()()()),e&2&&(p("ngClass",Oe(22,$r,n.selected())),s(),se("background","#1890ff"),ee("priority-left-bar",n.selected()),s(4),v(n.rdItem().rdNo),s(2),p("nzColor","blue"),s(),v(n.getStageName(n.rdItem().stageId)),s(),p("nzColor",n.getPriorityColor(n.rdItem().priority)),s(),v(n.getPriorityLabel(n.rdItem().priority)),s(2),v(n.rdItem().title),s(2),p("lines",2)("enableToggle",!1),s(),b(" ",n.rdItemPreview().summary," "),s(2),p("nzPercent",n.rdItem().progress),s(4),w(n.memberAvatarList()),s(3),p("lines",1)("enableToggle",!1),s(),b(" ",n.memberNamesText(n.rdItem())," "),s(3),b(" ",F(29,19,n.rdItem().planEndAt,"yyyy-MM-dd")," "))},dependencies:[ce,Re,H,K,_t,yt,hi,Y,he,Ct,N,vn,Qe,W],styles:[".task-card[_ngcontent-%COMP%]{width:100%;background:#fff;border-radius:8px;box-shadow:0 2px 18px #41414107,0 0 0 1px #3f3f3f05,0 4px 6px #00000008;transition:all .25s ease;overflow:hidden;-webkit-backdrop-filter:blur(0px);backdrop-filter:blur(0px);cursor:pointer}.task-card[_ngcontent-%COMP%]:hover{transform:translateY(-2px);box-shadow:0 12px 32px -12px #00000026,0 0 0 1px #00000008}.task-card-active[_ngcontent-%COMP%]{transform:translateY(2px);box-shadow:0 4px 12px -4px #00000026,0 0 0 1px #00000008;border:1px solid #188fff75}.priority-left-bar[_ngcontent-%COMP%]{position:absolute;left:0;top:0;bottom:0;width:4px}.card-content[_ngcontent-%COMP%]{padding:10px}.card-header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.task-id[_ngcontent-%COMP%]{font-size:12px;font-weight:500;letter-spacing:.3px;background:#f3f4f8;padding:2px 10px;border-radius:40px;color:#94a3b8;font-family:SF Mono,Fira Code,monospace;background:#f1f5f9;display:inline-block}.task-title[_ngcontent-%COMP%]{font-size:16px;font-weight:600;line-height:1.4;color:#0f172a;letter-spacing:-.2px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:break-word}.des-text[_ngcontent-%COMP%]{font-size:12px;color:#999;margin-top:2px}.progress-section[_ngcontent-%COMP%]{margin-bottom:0}.meta-row[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px}.assignee[_ngcontent-%COMP%]{display:flex;align-items:center;gap:10px}.assignee-name[_ngcontent-%COMP%]{font-size:12px;font-weight:500;color:#1e293b}.due-date[_ngcontent-%COMP%]{margin-left:auto;display:flex;align-items:center;gap:6px;background:#f8fafc;padding:4px 10px;border-radius:40px;font-size:12px;color:#334155;font-weight:500}.footer-note[_ngcontent-%COMP%]{font-size:11px;color:#94a3b8;display:flex;justify-content:flex-end;margin-top:8px}@media (max-width: 480px){.demo-grid[_ngcontent-%COMP%]{gap:16px}.task-card[_ngcontent-%COMP%]{width:100%;max-width:380px}}[_nghost-%COMP%] .progress-section{margin:0}"]})};var Ei=(i,t)=>t.id;function Qr(i,t){if(i&1){let e=E();a(0,"app-rd-item-card",4),_("selectItem",function(r){f(e);let l=u(3);return h(l.select(r))}),o()}if(i&2){let e,n=t.$implicit,r=u(3);p("rdItem",n)("stages",r.stages())("selected",((e=r.selectedItem())==null?null:e.id)===n.id)("projectId",r.projectId())("projectMembers",r.members())}}function Gr(i,t){i&1&&g(0,"nz-empty")}function Yr(i,t){if(i&1&&(a(0,"div",5)(1,"span"),d(2),o(),g(3,"nz-badge",6),o()),i&2){let e,n=u().$implicit,r=u(2);s(2),v(r.getStagesName(n.id)),s(),p("nzColor","#eee")("nzCount",((e=r.itemGroupByStages().get(n.id))==null?null:e.length)??0)}}function Jr(i,t){if(i&1&&(a(0,"nz-card",2),D(1,Qr,1,5,"app-rd-item-card",3,Ei,!1,Gr,1,0,"nz-empty"),o(),A(4,Yr,4,3,"ng-template",null,0,q)),i&2){let e=t.$implicit,n=U(5),r=u(2);p("nzTitle",n),s(),w(r.itemGroupByStages().get(e.id))}}function Kr(i,t){if(i&1&&D(0,Jr,6,2,null,null,Ei),i&2){let e=u();w(e.stages())}}var wi={critical:4,high:3,medium:2,low:1},At=class i{rdItems=c([]);stages=c([]);selectedItem=c(null);projectId=c(null);members=c([]);selectItem=S();itemGroupByStages=y(()=>{let t=new Map;for(let e of this.rdItems()){let n=e.stageId;n&&(t.has(n)||t.set(n,[]),t.get(n).push(e))}for(let e of t.values())e.sort((n,r)=>wi[r.priority]-wi[n.priority]);return t});select(t){this.selectItem.emit(t)}getStagesName(t){return t?this.stages().find(n=>n.id===t)?.name??"":""}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=z({type:i,selectors:[["app-rd-list-board"]],inputs:{rdItems:[1,"rdItems"],stages:[1,"stages"],selectedItem:[1,"selectedItem"],projectId:[1,"projectId"],members:[1,"members"]},outputs:{selectItem:"selectItem"},decls:2,vars:1,consts:[["cardTitleTpl",""],[1,"cards-list"],[1,"items-card",3,"nzTitle"],[3,"rdItem","stages","selected","projectId","projectMembers"],[3,"selectItem","rdItem","stages","selected","projectId","projectMembers"],[1,"card-title"],["nzStandalone","","nzShowZero","",3,"nzColor","nzCount"]],template:function(e,n){e&1&&(a(0,"div",1),M(1,Kr,2,0),o()),e&2&&(s(),x(n.rdItems().length>0?1:-1))},dependencies:[ze,Dn,st,Un,H,Ot,rt,$n],styles:[".cards-list[_ngcontent-%COMP%]{width:100%;display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px}.cards-list[_ngcontent-%COMP%] .items-card[_ngcontent-%COMP%]{flex-grow:1;overflow:hidden}.cards-list[_ngcontent-%COMP%] .card-title[_ngcontent-%COMP%]{width:100%;display:flex;align-items:center}.cards-list[_ngcontent-%COMP%] .card-title[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{margin-right:auto}.rd-title[_ngcontent-%COMP%]{color:#1677ff;font-weight:500;cursor:pointer}[_nghost-%COMP%] .ant-card-head{height:48px;padding:0 12px}[_nghost-%COMP%] .ant-card-head-title{padding:10px 0}[_nghost-%COMP%] .ant-card-body{display:flex;flex-direction:column;gap:10px;overflow:auto;padding:0 12px}[_nghost-%COMP%] .ant-card-bordered{border:1px solid #e7e7e7;border-radius:8px}"]})};var Xr=(i,t)=>({width:i,height:t});function Zr(i,t){if(i&1&&(a(0,"div",3),g(1,"img",4),o()),i&2){let e=u();se("left",e.hoveredPreview().left,"px")("top",e.hoveredPreview().top,"px"),s(),p("src",e.hoveredPreview().src,Yt)("alt",e.hoveredPreview().alt)}}var kt=class i{width=c("60px");height=c("60px");src=c(null);alt=c("");previewSrc=c(null);previewAlt=c("");hasError=I(!1);hoveredPreview=I(null);showPreview(t){if(!this.previewSrc()||this.hasError()){this.hoveredPreview.set(null);return}let e=this.calcPosition(t);this.hoveredPreview.set(V({src:this.previewSrc(),alt:this.previewAlt()||this.alt()},e))}movePreview(t){this.hoveredPreview()&&this.showPreview(t)}hidePreview(){this.hoveredPreview.set(null)}markError(){this.hasError.set(!0),this.hoveredPreview.set(null)}calcPosition(t){let l=t.clientX+16,m=t.clientY+16;return l+320>window.innerWidth&&(l=t.clientX-320-16),m+200>window.innerHeight&&(m=window.innerHeight-200-12),{left:l,top:m}}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=z({type:i,selectors:[["app-image-hover-preview"]],inputs:{width:[1,"width"],height:[1,"height"],src:[1,"src"],alt:[1,"alt"],previewSrc:[1,"previewSrc"],previewAlt:[1,"previewAlt"]},decls:3,vars:9,consts:[[1,"item-img",3,"ngStyle"],[3,"error","mouseenter","mousemove","mouseleave","src","alt"],[1,"preview-float",3,"left","top"],[1,"preview-float"],[3,"src","alt"]],template:function(e,n){e&1&&(a(0,"div",0)(1,"img",1),_("error",function(){return n.markError()})("mouseenter",function(l){return n.showPreview(l)})("mousemove",function(l){return n.movePreview(l)})("mouseleave",function(){return n.hidePreview()})("error",function(){return n.markError()}),o()(),M(2,Zr,2,6,"div",2)),e&2&&(se("display",!n.src()||n.hasError()?"none":"block"),p("ngStyle",yn(6,Xr,n.width(),n.height())),s(),p("src",n.src(),Yt)("alt",n.alt()),s(),x(n.hoveredPreview()?2:-1))},dependencies:[N,Qe],styles:[".item-img[_ngcontent-%COMP%]{flex-shrink:0;margin-left:auto;overflow:hidden;border-radius:8px;border:1px solid #f0f0f0}.item-img[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:100%;height:100%;object-fit:cover;object-position:center}.preview-float[_ngcontent-%COMP%]{padding:6px;position:fixed;z-index:1000;pointer-events:none;width:320px;height:200px;display:flex;align-items:center;justify-content:center;background:#fff;border-radius:6px;overflow:hidden;box-shadow:0 4px 16px #0003}.preview-float[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:100%;max-width:100%;max-height:100%;object-fit:contain}"]})};var eo=(i,t)=>t.id;function to(i,t){if(i&1&&(a(0,"app-ellipsis-text",11)(1,"span",19),d(2),o()()),i&2){let e=t;p("lines",1)("enableToggle",!1),s(),p("nz-tooltip",e),s(),v(e)}}function no(i,t){i&1&&(a(0,"span",17),d(1,"\u672A\u6307\u6D3E"),o())}function io(i,t){if(i&1){let e=E();a(0,"tr",7),_("click",function(){let r=f(e).$implicit,l=u();return h(l.selectItem.emit(r))}),a(1,"td"),d(2),o(),a(3,"td",8)(4,"div",9)(5,"div",10)(6,"app-ellipsis-text",11)(7,"span",12),d(8),o(),a(9,"span",13),d(10),o()(),a(11,"nz-tag",14),d(12),o(),a(13,"nz-tag",14),d(14),o()(),a(15,"div",15)(16,"app-ellipsis-text",11),d(17),o()()(),g(18,"app-image-hover-preview",16),o(),a(19,"td"),d(20),o(),a(21,"td"),d(22),o(),a(23,"td"),M(24,to,3,4,"app-ellipsis-text",11)(25,no,2,0,"span",17),o(),a(26,"td"),g(27,"nz-progress",18),o(),a(28,"td"),d(29),k(30,"date"),o()()}if(i&2){let e,n,r=t.$implicit,l=t.$index,m=u();ee("selected-row",r.id===((e=m.selectedItem())==null?null:e.id)),s(2),v(l+1+m.query().pageSize*(m.query().page-1)),s(4),p("lines",1)("enableToggle",!1),s(2),b("[",r.rdNo,"]"),s(2),b(" ",r.title," "),s(),p("nzColor",m.getStatusColor(r.status)),s(),b(" ",m.getStatusLabel(r.status)," "),s(),p("nzColor",m.getPriorityColor(r.priority)),s(),b(" ",m.getPriorityLabel(r.priority)," "),s(2),p("lines",2)("enableToggle",!1),s(),b(" ",m.previewSummary(r)," "),s(),p("src",m.previewImageUrl(r))("previewSrc",m.previewImageUrl(r)),s(2),v(m.getStagesName(r.stageId)||"-"),s(2),v(r.creatorName||"-"),s(2),x((n=m.memberNamesText(r))?24:25,n),s(3),p("nzPercent",r.progress),s(2),v(F(30,21,r.updatedAt,"MM-dd HH:mm"))}}var Ft=class i{rdItems=c.required();query=c.required();projectId=c(null);selectedItem=c(null);stages=c([]);selectItem=S();members=c([]);previewMap=y(()=>{let t=new Map;for(let e of this.rdItems())t.set(e.id,vt(e.description,this.projectId(),e.id,"rd-items"));return t});getPriorityColor(t){return we[t]}getPriorityLabel(t){return De[t]}getStatusLabel(t){return X[t]}getStatusColor(t){return ue[t]}getStagesName(t){return t?this.stages().find(n=>n.id===t)?.name??"":""}previewSummary(t){return this.previewMap().get(t.id)?.summary||"\u6682\u65E0\u8BE6\u7EC6\u63CF\u8FF0"}previewImageUrl(t){return this.previewMap().get(t.id)?.imageUrl??null}memberNamesText(t){let e=t.memberIds||[];if(e.length===0&&!t.assigneeName)return"";if(e.length===0&&t.assigneeName)return t.assigneeName;let n=new Map(this.members().map(r=>[r.userId,r.displayName]));return e.map(r=>n.get(r)||r).join("\u3001")}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=z({type:i,selectors:[["app-rd-list-table"]],inputs:{rdItems:[1,"rdItems"],query:[1,"query"],projectId:[1,"projectId"],selectedItem:[1,"selectedItem"],stages:[1,"stages"],members:[1,"members"]},outputs:{selectItem:"selectItem"},decls:20,vars:5,consts:[[1,"rd-list",3,"nzData","nzFrontPagination","nzShowPagination","nzShowSizeChanger"],["nzWidth","66px"],[3,"nzEllipsis"],["nzWidth","100px"],["nzWidth","140px"],["nzWidth","150px"],[1,"rd-item-row",3,"selected-row"],[1,"rd-item-row",3,"click"],[1,"title-col"],[1,"rd-title-wrap"],[1,"title-text"],[3,"lines","enableToggle"],[1,"rd-no"],[1,"rd-title"],[3,"nzColor"],[1,"des-text"],[3,"src","previewSrc"],[1,"no-member"],["nzSize","small",3,"nzPercent"],[1,"rd-member-text",3,"nz-tooltip"]],template:function(e,n){e&1&&(a(0,"nz-table",0)(1,"thead")(2,"tr")(3,"th",1),d(4,"\u5E8F\u53F7"),o(),a(5,"th",2),d(6,"\u7814\u53D1\u9879"),o(),a(7,"th",3),d(8,"\u9636\u6BB5"),o(),a(9,"th",3),d(10,"\u521B\u5EFA\u4EBA"),o(),a(11,"th",4),d(12,"\u6267\u884C\u4EBA"),o(),a(13,"th",5),d(14,"\u8FDB\u5EA6"),o(),a(15,"th",4),d(16,"\u66F4\u65B0\u65F6\u95F4"),o()()(),a(17,"tbody"),D(18,io,31,24,"tr",6,eo),o()()),e&2&&(p("nzData",n.rdItems())("nzFrontPagination",!1)("nzShowPagination",!1)("nzShowSizeChanger",!0),s(5),p("nzEllipsis",!0),s(13),w(n.rdItems()))},dependencies:[mt,ni,Xn,Zn,ri,ti,ii,ei,B,ce,Re,H,K,tt,xe,N,Ct,kt,W],styles:[".title-col[_ngcontent-%COMP%]{display:flex}.title-col[_ngcontent-%COMP%] .rd-title-wrap[_ngcontent-%COMP%]{margin-right:auto}.title-col[_ngcontent-%COMP%] .title-text[_ngcontent-%COMP%]{display:flex;align-items:center}.title-col[_ngcontent-%COMP%] .rd-title[_ngcontent-%COMP%]{margin-right:8px;font-weight:600;font-size:1rem;cursor:pointer}.title-col[_ngcontent-%COMP%] .rd-no[_ngcontent-%COMP%]{font-weight:600;color:#1890ff}.title-col[_ngcontent-%COMP%] .des-text[_ngcontent-%COMP%]{font-size:12px;color:#999;margin-top:2px}.title-col[_ngcontent-%COMP%] .rd-img-wrap[_ngcontent-%COMP%]{width:100px;margin-left:auto}.rd-item-row[_ngcontent-%COMP%]{cursor:pointer}.rd-item-row.selected-row[_ngcontent-%COMP%] > td[_ngcontent-%COMP%]:first-child{border-left:4px solid #91d5ff}.rd-item-row.selected-row[_ngcontent-%COMP%] > td[_ngcontent-%COMP%]{background-color:#e6f7ff}.rd-item-row.selected-row[_ngcontent-%COMP%]:hover > td[_ngcontent-%COMP%]{background-color:#e6f7ff}"]})};var Bt=class i{apiClient=P(nt);projectContext=P(Se);async rdPostReqWithPK(t){let e=this.projectContext.currentProjectId();return this.apiClient.hubRequestWithPersonalToken({projectId:e,method:"POST",path:`/rd-items/${t.rdId}/${t.action}`,payload:t.payload})}async rdDeleteReqWithPK(t){let e=this.projectContext.currentProjectId();return this.apiClient.hubRequestWithPersonalToken({projectId:e,method:"DELETE",path:`/rd-items/${t.rdId}`,payload:t.payload})}static \u0275fac=function(e){return new(e||i)};static \u0275prov=ne({token:i,factory:i.\u0275fac,providedIn:"root"})};var Vt=class i{apiClient=P(nt);rdTokenApi=P(Bt);async delete(t,e){return await this.rdTokenApi.rdDeleteReqWithPK({rdId:e,payload:{}})}async close(t,e,n){return await this.rdTokenApi.rdPostReqWithPK({rdId:e,action:"close",payload:{summary:n}})}async accept(t,e){return await this.rdTokenApi.rdPostReqWithPK({rdId:e,action:"accept",payload:{}})}async resolve(t,e,n){return await this.rdTokenApi.rdPostReqWithPK({rdId:e,action:"complete",payload:{summary:n}})}async resume(t,e){return await this.rdTokenApi.rdPostReqWithPK({rdId:e,action:"resume",payload:{}})}async block(t,e,n){return await this.rdTokenApi.rdPostReqWithPK({rdId:e,action:"block",payload:n})}async start(t,e){return await this.rdTokenApi.rdPostReqWithPK({action:"start",rdId:e,payload:{}})}async updateProgress(t,e){return await this.rdTokenApi.rdPostReqWithPK({rdId:t,action:"progress",payload:e})}async advanceStage(t,e){}async update(t,e,n){return await this.rdTokenApi.rdPostReqWithPK({rdId:e,action:"update",payload:V({},n)})}async getRdItemsList(t,e){return await this.apiClient.hubRequestWithPrjId({projectId:t,path:"/rd-items",query:V({},e)})}async getRdItem(t,e){return await this.apiClient.hubRequestWithPrjId({projectId:t,path:`/rd-items/${e}`})}async getRdStages(t){return await this.apiClient.hubRequestWithPrjId({projectId:t,path:"/rd-stages"})}async getRdItemLogs(t,e){return await this.apiClient.hubRequestWithPrjId({projectId:t,path:`/rd-items/${e}/logs`})}async getRdProgress(t,e){return await this.apiClient.hubRequestWithPrjId({projectId:t,path:`/rd-items/${e}/progress`})}async getRdStageHistory(t,e){return await this.apiClient.hubRequestWithPrjId({projectId:t,path:`/rd-items/${e}/stage-history`})}static \u0275fac=function(e){return new(e||i)};static \u0275prov=ne({token:i,factory:i.\u0275fac,providedIn:"root"})};var jt=class i{rdApi=P(Vt);projectContextStore=P(Se);projectId=y(()=>this.projectContextStore.currentProjectId());rdItemsPageListState=I([]);rdItemsCountState=I(0);currentRdItemState=I(null);currentRdLogsState=I([]);currentRdProgressState=I([]);currentRdStageHistoryState=I([]);stagesState=I([]);projectMembersState=this.projectContextStore.currentProjectMembers;queryState=I({page:1,pageSize:10,stageId:"",status:[],type:[],priority:[],assigneeId:"",keyword:""});busyState=I(!1);loadingState=I(!1);currentRdLoadingState=I(!1);query=y(()=>this.queryState());currentRdItem=y(()=>this.currentRdItemState());currentRdLogs=y(()=>this.currentRdLogsState());currentRdProgress=y(()=>this.currentRdProgressState());currentRdStageHistory=y(()=>this.currentRdStageHistoryState());stages=y(()=>this.stagesState());rdItemsCount=y(()=>this.rdItemsCountState());rdItemsPageList=y(()=>this.rdItemsPageListState());projectMembers=y(()=>this.projectMembersState());busy=y(()=>this.busyState());rdItemsLoading=y(()=>this.loadingState());currentRdLoading=y(()=>this.currentRdLoadingState());initialize(){try{let t=this.projectId();if(!t)return;Promise.all([this.loadStages(),this.loadRdItems(),this.projectContextStore.loadProjectMembers(t)])}catch{}}async loadRdItems(){try{let t=this.projectId();if(!t)return;this.loadingState.set(!0);let e=await this.rdApi.getRdItemsList(t,this.query());this.rdItemsPageListState.set(e.items),this.rdItemsCountState.set(e.total),this.loadingState.set(!1)}catch{this.loadingState.set(!1)}}async loadStages(){let t=this.projectId();if(t)try{let e=(await this.rdApi.getRdStages(t)).items;this.stagesState.set(e)}catch{this.stagesState.set([])}}async loadCurrentRdItem(t){let e=this.projectId();if(e){this.currentRdLoadingState.set(!0);try{let n=await this.rdApi.getRdItem(e,t);this.currentRdItemState.set(n);let r=await this.rdApi.getRdItemLogs(e,t);this.currentRdLogsState.set(r.items);let l=await this.rdApi.getRdProgress(e,t),m=await this.rdApi.getRdStageHistory(e,t);this.currentRdProgressState.set(l.items),this.currentRdStageHistoryState.set(m.items),this.currentRdLoadingState.set(!1)}catch{throw this.currentRdLoadingState.set(!1),new Error("load current rd item error")}}}setCurrentRdItem(t){this.currentRdItemState.set(t)}updateQuery(t){this.queryState.update(e=>ge(V(V({},e),t),{page:t.page??e.page??1}))}update(t,e){let n=this.projectId();n&&this.runAction(()=>this.rdApi.update(n,t,e))}start(t){let e=this.projectId();this.runAction(()=>this.rdApi.start(e,t))}block(t,e){this.runAction(()=>this.rdApi.block(this.projectId(),t,e))}resume(t){this.runAction(()=>this.rdApi.resume(this.projectId(),t))}resolve(t){let e=this.projectId();e&&this.runAction(()=>this.rdApi.resolve(e,t))}advanceStage(t,e){}updateProgress(t){let e=this.currentRdItem();e&&this.runAction(()=>this.rdApi.updateProgress(e.id,t))}accept(t){let e=this.projectId();e&&this.runAction(()=>this.rdApi.accept(e,t))}close(t,e){let n=this.projectId();n&&this.runAction(()=>this.rdApi.close(n,t,e))}delete(t){let e=this.projectId();this.busyState.set(!0),qt(this.rdApi.delete(e,t)).subscribe({next:()=>{this.busyState.set(!1);let n=this.rdItemsPageListState();if(!n){this.loadRdItems();return}let r=n.filter(l=>l.id!==t);if(r.length===n.length){this.loadRdItems();return}this.rdItemsCountState.update(l=>l-1),this.rdItemsPageListState.update(l=>r)},error:()=>{this.busyState.set(!1)}})}runAction(t){this.busyState.set(!0),qt(t()).subscribe({next:e=>{this.busyState.set(!1),this.patchOrRefresh(e)},error:()=>{this.busyState.set(!1)}})}patchOrRefresh(t){let e=this.rdItemsPageListState();if(!e){this.loadRdItems();return}let n=e.findIndex(l=>l.id===t.id);if(n<0)return;this.loadCurrentRdItem(t.id);let r=[...e];r[n]=t,this.rdItemsPageListState.set(r)}static \u0275fac=function(e){return new(e||i)};static \u0275prov=ne({token:i,factory:i.\u0275fac,providedIn:"root"})};function ro(i,t){if(i&1&&(a(0,"div")(1,"div",5)(2,"span"),d(3,"\u66F4\u65B0\u6211\u7684\u8FDB\u5EA6"),o(),a(4,"div",6),d(5),o()()()),i&2){let e=u();s(5),b(" ",e.rdItem()?e.rdItem().title:""," ")}}function oo(i,t){i&1&&(a(0,"div",15),g(1,"nz-icon",16),d(2," \u4EC5\u5141\u8BB8\u66F4\u65B0\u81EA\u5DF1\u7684\u8FDB\u5EA6"),o())}function ao(i,t){if(i&1){let e=E();oe(0),a(1,"div",7)(2,"div",8)(3,"div",9),d(4,"\u6210\u5458"),o(),a(5,"div",10),d(6),o()(),a(7,"div",8)(8,"div",9),d(9,"\u8FDB\u5EA6\u503C"),o(),a(10,"nz-slider",11),_("ngModelChange",function(r){f(e);let l=u();return h(l.progressDraft.set(r))}),o(),a(11,"div",12),d(12),o()(),a(13,"div",8)(14,"div",9),d(15,"\u8FDB\u5EA6\u8BF4\u660E\uFF08\u53EF\u9009\uFF09"),o(),a(16,"textarea",13),_("ngModelChange",function(r){f(e);let l=u();return h(l.note.set(r))}),o()(),g(17,"nz-alert",14),A(18,oo,3,0,"ng-template",null,0,q),o(),ae()}if(i&2){let e,n=U(19),r=u();s(6),v(((e=r.progress())==null?null:e.userName)??"_ _"),s(4),p("ngModel",r.progressDraft())("nzMin",0)("nzMax",100),s(2),b("",r.progressDraft(),"%"),s(4),p("ngModel",r.note()),s(),p("nzMessage",n)}}function so(i,t){if(i&1){let e=E();oe(0),a(1,"button",17),_("click",function(){f(e);let r=u();return h(r.cancel.emit())}),d(2,"\u53D6\u6D88"),o(),a(3,"button",18),_("click",function(){f(e);let r=u();return h(r.submitForm())}),d(4," \u4FDD\u5B58\u8FDB\u5EA6 "),o(),ae()}if(i&2){let e=u();s(3),p("nzLoading",e.busy())}}var Lt=class i{open=c(!1);busy=c(!1);progress=c(null);rdItem=c(null);confirm=S();cancel=S();progressDraft=I(0);note=I("");constructor(){le(()=>{this.open()&&(this.progressDraft.set(this.progress()?.progress||0),this.note.set(""))})}submitForm(){this.confirm.emit({progress:this.progressDraft(),note:this.note().trim()})}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=z({type:i,selectors:[["app-rd-progress-dialog"]],inputs:{open:[1,"open"],busy:[1,"busy"],progress:[1,"progress"],rdItem:[1,"rdItem"]},outputs:{confirm:"confirm",cancel:"cancel"},decls:4,vars:4,consts:[["alertInfoTemplate",""],[3,"nzOnCancel","nzVisible","nzWidth","nzClosable","nzMaskClosable"],[4,"nzModalTitle"],[4,"nzModalContent"],[4,"nzModalFooter"],[1,"modal-title"],[1,"modal-subtitle"],[1,"progress-form"],[1,"field"],[1,"label"],[1,"value"],[3,"ngModelChange","ngModel","nzMin","nzMax"],[1,"progress-value"],["nz-input","","rows","4","placeholder","\u4F8B\u5982\uFF1A\u5B8C\u6210\u4E86\u6838\u5FC3\u6A21\u5757\u5F00\u53D1\uFF0C\u5F85\u8054\u8C03\u6D4B\u8BD5...",3,"ngModelChange","ngModel"],["nzType","info",3,"nzMessage"],[1,"hint"],["nzType","bulb","nzTheme","fill"],["nz-button","",3,"click"],["nz-button","","nzType","primary",3,"click","nzLoading"]],template:function(e,n){e&1&&(a(0,"nz-modal",1),_("nzOnCancel",function(){return n.cancel.emit()}),A(1,ro,6,1,"div",2)(2,ao,20,7,"ng-container",3)(3,so,5,1,"ng-container",4),o()),e&2&&p("nzVisible",n.open())("nzWidth",600)("nzClosable",!0)("nzMaskClosable",!1)},dependencies:[be,Ce,Ye,ve,Je,L,Ie,me,pe,B,_e,de,ye,J,Me,Mt,rn,ut,ct,Y,he],styles:[".modal-title[_ngcontent-%COMP%]{font-size:16px;font-weight:600}.modal-subtitle[_ngcontent-%COMP%]{color:#999;font-size:14px;line-height:20px}.progress-form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:20px}.field[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:8px}.label[_ngcontent-%COMP%]{font-size:.875rem;color:#8c8c8c}.value[_ngcontent-%COMP%]{font-size:1rem;font-weight:500;color:#262626}.progress-value[_ngcontent-%COMP%]{text-align:center;font-size:28px;font-weight:600;color:#262626;margin-top:8px}textarea[_ngcontent-%COMP%]{border-radius:8px}.hint[_ngcontent-%COMP%]{font-size:12px;color:#8c8c8c} .ant-alert-info{border-radius:8px}"]})};var lo=["class","component"];function mo(i,t){if(i&1){let e=E();a(0,"app-rd-list-table",14),_("selectItem",function(r){f(e);let l=u();return h(l.selectItem(r))}),o()}if(i&2){let e=u();p("rdItems",e.pageRdItems())("query",e.query())("selectedItem",e.currentRdItem())("members",e.members())("stages",e.stages())("projectId",e.currentProjectId())}}function po(i,t){if(i&1){let e=E();a(0,"app-rd-list-board",15),_("selectItem",function(r){f(e);let l=u();return h(l.selectItem(r))}),o()}if(i&2){let e=u();p("rdItems",e.pageRdItems())("projectId",e.currentProjectId())("selectedItem",e.currentRdItem())("stages",e.stages())("members",e.members())}}function co(i,t){if(i&1&&d(0),i&2){let e=t.$implicit;b("\u5171 ",e," \u6761\u8BB0\u5F55")}}var Ht=class i{rdStore=P(jt);fb=P(Ze);router=P(bn);route=P(Cn);userStore=P(it);projectContext=P(Se);viewType=I("list");createDialogOpen=I(!1);detailDrawerOpen=I(!1);blockingItem=I(null);blockOpen=I(!1);drawerPlacement=I("right");advanceStageOpen=I(!1);progressUpdateItem=I(null);progressUpdateOpen=I(!1);currentUserId=this.userStore.currentUserId;currentProjectId=y(()=>this.rdStore.projectId()||"");members=this.rdStore.projectMembers;priorities=["\u4F4E","\u4E2D","\u9AD8"];loading=this.rdStore.rdItemsLoading;currentRdLoading=this.rdStore.currentRdLoading;pageRdItems=this.rdStore.rdItemsPageList;currentRdItem=this.rdStore.currentRdItem;currentRdLogs=this.rdStore.currentRdLogs;currentRdProgress=this.rdStore.currentRdProgress;currentRdStageHistory=this.rdStore.currentRdStageHistory;stages=this.rdStore.stages;total=this.rdStore.rdItemsCount;busy=this.rdStore.busy;query=this.rdStore.query;constructor(){this.rdStore.initialize(),this.route.queryParamMap.subscribe(t=>{let e=t.get("detail");if(e){if(this.currentRdItem()?.id===e||this.currentRdLoading()){this.detailDrawerOpen.set(!0);return}this.rdStore.loadCurrentRdItem(e),this.detailDrawerOpen.set(!0)}}),this.userStore.ensureUserLoaded()}onPageChange(t){this.rdStore.updateQuery({page:t}),this.rdStore.loadRdItems()}onPageSizeChange(t){this.rdStore.updateQuery({pageSize:t}),this.rdStore.loadRdItems()}updateQueryByFilter(t){this.rdStore.updateQuery(t),this.rdStore.loadRdItems()}createRd(t){}openCreateDialog(){this.createDialogOpen.set(!0)}async selectItem(t){this.openDetail(t),this.detailDrawerOpen.set(!0);try{await this.rdStore.loadCurrentRdItem(t.id),this.rdStore.setCurrentRdItem(this.rdStore.currentRdItem()??t)}catch{this.rdStore.setCurrentRdItem(t)}}closeDetail(){this.detailDrawerOpen.set(!1),this.rdStore.setCurrentRdItem(null),this.router.navigate([],{queryParams:{}})}handleSelectedAction(t){let e=this.currentRdItem();e&&this.handleAction(e,t)}deleteSelectedItem(){let t=this.currentRdItem();t&&(this.rdStore.delete(t.id),this.closeDetail())}handleAction(t,e){switch(this.openDetail(t),e){case"start":this.rdStore.start(t.id);break;case"block":this.blockingItem.set(t),this.blockOpen.set(!0);break;case"resume":this.rdStore.resume(t.id);break;case"complete":this.rdStore.resolve(t.id);break;case"advance":this.advanceStageOpen.set(!0);break}}openDetail(t){this.router.navigate([],{relativeTo:this.route,queryParams:{detail:t.id},queryParamsHandling:"merge"})}openProgressUpdate(t){if(this.currentRdItem()?.status!=="closed"){if(t.progress===0){this.confirmProgressUpdate({progress:1,note:""});return}this.progressUpdateItem.set(t),this.progressUpdateOpen.set(!0)}}confirmProgressUpdate(t){this.rdStore.updateProgress(t),this.progressUpdateOpen.set(!1),this.progressUpdateItem.set(null)}confirmBlock(t){let e=this.blockingItem();e&&(this.rdStore.block(e.id,{blockerReason:t}),this.closeBlockDialog())}closeBlockDialog(){this.blockOpen.set(!1),this.blockingItem.set(null)}confirmAdvanceStage(t){let e=this.currentRdItem();!e||!t.trim()||(this.rdStore.advanceStage(e.id,{stageId:t.trim()}),this.advanceStageOpen.set(!1))}static \u0275fac=function(e){return new(e||i)};static \u0275cmp=z({type:i,selectors:[["app-rd",8,"component"]],attrs:lo,decls:15,vars:34,consts:[["totalTemplate",""],[3,"title","loading","isFullscreen","isOverflowYAuto"],[1,"rd-content"],[1,"filter-container"],[3,"viewTypeChange","openCreateDialog","valueChange","query","stages","viewType"],[1,"list-content"],[3,"rdItems","query","selectedItem","members","stages","projectId"],[3,"rdItems","projectId","selectedItem","stages","members"],[1,"pagination-bar"],["nzShowSizeChanger","","nzShowQuickJumper","",3,"nzPageIndexChange","nzPageSizeChange","nzPageIndex","nzTotal","nzShowTotal","nzPageSize"],[3,"actionClick","close","updateProgressClick","deleteClick","open","rdItem","progressList","currentUserId","stageHistory","members","projectId","busy","logs","stages","loading"],[3,"cancel","confirm","open","busy","item"],[3,"cancel","confirm","open","busy","item","stages"],[3,"cancel","confirm","open","busy","rdItem","progress"],[3,"selectItem","rdItems","query","selectedItem","members","stages","projectId"],[3,"selectItem","rdItems","projectId","selectedItem","stages","members"]],template:function(e,n){if(e&1){let r=E();a(0,"app-page-layout",1)(1,"div",2)(2,"div",3)(3,"app-rd-filter-bar",4),We("viewTypeChange",function(m){return f(r),qe(n.viewType,m)||(n.viewType=m),h(m)}),_("openCreateDialog",function(){return f(r),h(n.openCreateDialog())})("valueChange",function(m){return f(r),h(n.updateQueryByFilter(m))}),o()(),a(4,"div",5),M(5,mo,1,6,"app-rd-list-table",6)(6,po,1,5,"app-rd-list-board",7),a(7,"div",8)(8,"nz-pagination",9),_("nzPageIndexChange",function(m){return f(r),h(n.onPageChange(m))})("nzPageSizeChange",function(m){return f(r),h(n.onPageSizeChange(m))}),o(),A(9,co,1,1,"ng-template",null,0,q),o()()(),a(11,"app-rd-detail",10),_("actionClick",function(m){return f(r),h(n.handleSelectedAction(m))})("close",function(){return f(r),h(n.closeDetail())})("updateProgressClick",function(m){return f(r),h(n.openProgressUpdate(m))})("deleteClick",function(){return f(r),h(n.deleteSelectedItem())}),o(),a(12,"app-rd-block-dialog",11),_("cancel",function(){return f(r),h(n.closeBlockDialog())})("confirm",function(m){return f(r),h(n.confirmBlock(m.blockerReason))}),o(),a(13,"app-rd-advance-stage-dialog",12),_("cancel",function(){return f(r),h(n.advanceStageOpen.set(!1))})("confirm",function(m){return f(r),h(n.confirmAdvanceStage(m.stageId))}),o(),a(14,"app-rd-progress-dialog",13),_("cancel",function(){return f(r),h(n.progressUpdateOpen.set(!1))})("confirm",function(m){return f(r),h(n.confirmProgressUpdate(m))}),o()()}if(e&2){let r=U(10);p("title","\u7814\u53D1\u9879")("loading",n.loading())("isFullscreen",!0)("isOverflowYAuto",!1),s(3),p("query",n.query())("stages",n.stages()),Ue("viewType",n.viewType),s(2),x(n.viewType()==="list"?5:6),s(3),p("nzPageIndex",n.query().page)("nzTotal",n.total())("nzShowTotal",r)("nzPageSize",n.query().pageSize),s(3),p("open",n.detailDrawerOpen())("rdItem",n.currentRdItem())("progressList",n.currentRdProgress())("currentUserId",n.currentUserId())("stageHistory",n.currentRdStageHistory())("members",n.members())("projectId",n.currentProjectId())("busy",n.busy())("logs",n.currentRdLogs())("stages",n.stages())("loading",n.currentRdLoading()),s(),p("open",n.blockOpen())("busy",n.busy())("item",n.blockingItem()),s(),p("open",n.advanceStageOpen())("busy",n.busy())("item",n.currentRdItem())("stages",n.stages()),s(),p("open",n.progressUpdateOpen())("busy",n.busy())("rdItem",n.currentRdItem())("progress",n.progressUpdateItem())}},dependencies:[Ln,Pe,mt,B,J,Y,dt,pt,ze,ce,st,et,L,Ci,H,Yn,Gn,At,Ft,Tt,zt,Lt,bt,Nt],styles:[".rd-content[_ngcontent-%COMP%]{width:100%;min-width:630px;height:100%;display:flex;flex-direction:column;align-items:center;overflow:auto}.rd-content[_ngcontent-%COMP%] .filter-container[_ngcontent-%COMP%]{width:100%;padding:0 48px}.rd-content[_ngcontent-%COMP%] .list-content[_ngcontent-%COMP%]{width:100%;padding:12px 48px 8px;min-height:0;flex-grow:1}.rd-content[_ngcontent-%COMP%] .list-content[_ngcontent-%COMP%] .pagination-bar[_ngcontent-%COMP%]{padding:12px;display:flex;justify-content:end}"]})};var uo=[{path:"",component:Ht}],$t=class i{static \u0275fac=function(e){return new(e||i)};static \u0275mod=re({type:i});static \u0275inj=ie({imports:[N,Kt.forChild(uo),Kt]})};var Ti=class i{static \u0275fac=function(e){return new(e||i)};static \u0275mod=re({type:i});static \u0275inj=ie({imports:[N,$t]})};export{Ti as RdModule};
@@ -1 +0,0 @@
1
- import{J as a,l as i,m as r,na as o,ra as c,tb as h}from"./chunk-WI67LAOV.js";var p={production:!0,environment:"WEB-PROD"};var u=class n{constructor(e){this.zone=e}ws;url=p.production===!0?`ws:${window.location.host}/ws`:"ws://127.0.0.1:3210/ws";pending=[];state$=new r("idle");inbound$=new i;reconnectAttempt=0;manualClose=!1;opening=!1;reconnectSub;stateChanges(){return this.state$.asObservable()}messages(){return this.inbound$.asObservable()}connect(){this.opening||this.ws&&(this.ws.readyState===WebSocket.OPEN||this.ws.readyState===WebSocket.CONNECTING)||(this.manualClose=!1,this.open())}close(){this.manualClose=!0,this.cancelReconnect(),this.stopHeartbeat(),this.ws?.close(),this.ws=void 0,this.opening=!1,this.state$.next("closed")}send(e){let t=JSON.stringify(e);this.ws?.readyState===WebSocket.OPEN?this.ws.send(t):this.pending.push(e)}isOpen(){return this.state$.value==="open"}open(){this.opening||this.ws&&(this.ws.readyState===WebSocket.OPEN||this.ws.readyState===WebSocket.CONNECTING)||(this.opening=!0,this.state$.next("connecting"),this.cancelReconnect(),this.zone.runOutsideAngular(()=>{let e=new WebSocket(this.url);this.ws=e,e.onopen=()=>{this.reconnectAttempt=0,this.opening=!1,this.cancelReconnect(),this.pending.splice(0).forEach(s=>this.send(s)),this.zone.run(()=>this.state$.next("open")),this.startHeartbeat()},e.onmessage=t=>{let s;try{s=JSON.parse(t.data)}catch{return}this.zone.run(()=>this.inbound$.next(s))},e.onerror=()=>{this.zone.run(()=>this.state$.next("error"));try{e.close()}catch{}},e.onclose=()=>{this.opening=!1,this.ws=void 0,this.stopHeartbeat(),this.zone.run(()=>this.state$.next("closed")),this.manualClose||this.scheduleReconnect()}}))}heartbeatTimer;startHeartbeat(){this.stopHeartbeat(),this.heartbeatTimer=setInterval(()=>{this.send({op:"ping"})},2e4)}stopHeartbeat(){this.heartbeatTimer&&(clearInterval(this.heartbeatTimer),this.heartbeatTimer=void 0)}scheduleReconnect(){if(this.reconnectSub)return;this.reconnectAttempt++;let e=Math.min(1e3*Math.pow(2,this.reconnectAttempt),15e3);this.reconnectSub=a(e).subscribe(()=>{this.reconnectSub=void 0,!this.manualClose&&this.open()})}cancelReconnect(){this.reconnectSub?.unsubscribe(),this.reconnectSub=void 0}static \u0275fac=function(t){return new(t||n)(c(h))};static \u0275prov=o({token:n,factory:n.\u0275fac,providedIn:"root"})};export{p as a,u as b};
@@ -1 +0,0 @@
1
- import{a as Ae,b as Be}from"./chunk-GDWS2L66.js";import{a as Se,c as Te,f as Oe,g as De,h as Ne,i as Ve,j as Ie}from"./chunk-HRXCR3IN.js";import{a as je}from"./chunk-UQGCUFNM.js";import{g as ue,h as fe,i as he,k as ge,l as _e}from"./chunk-BYEU6KGP.js";import{b as J,c as I,d as A,f as ke}from"./chunk-UXXWRMM6.js";import{$b as ye,Eb as ve,Fa as ae,Ga as le,Gb as Ce,Kb as be,Oa as pe,Pa as ce,Ra as de,Sa as me,Ub as xe,Xb as Pe,Yb as ze,Zb as Fe,ac as Me,dc as Ee,fc as we}from"./chunk-SPRWNZHF.js";import{e as se}from"./chunk-L5D75AMV.js";import{n as oe,u as Y}from"./chunk-T3KK7ZXB.js";import{$b as S,B as Q,Ec as Z,Fb as ee,Ha as _,Jc as y,Lb as te,Lc as O,Mc as ne,Nc as D,Oc as N,Pc as V,Tc as re,Wb as W,Yb as K,Zb as ie,a as $,ac as T,b as L,bc as C,cc as s,dc as a,ec as f,hd as z,ic as G,jc as H,lc as E,na as w,nb as l,rc as b,sa as g,uc as v,y as q,ya as m,za as u,zb as X}from"./chunk-WI67LAOV.js";var j=class r{api=g(A);ls(e,t=!1){let i=new Y().set("path",e).set("showSystem",t?"1":"0");return this.api.get("/api/fs/ls",i)}mkdir(e,t){return this.api.post("/api/fs/mkdir",{path:e,name:t})}pathExists(e){let t=new Y().set("path",e);return this.api.get("/api/fs/path-exists",t).pipe(Q(i=>i.exists))}static \u0275fac=function(t){return new(t||r)};static \u0275prov=w({token:r,factory:r.\u0275fac,providedIn:"root"})};var U=class r{fsApi=g(j);localState=g(I);path=_("D:\\");currentPath=_("");entries=_([]);reloading=_(!1);isEditingPath=_(!1);showSystemFolders=_(!1);isCreateFolderModalVisible=_(!1);newFolderName=_("");segments=z(()=>{let e=this.currentPath()||this.path()||"";return this.buildSegments(e)});isRoot=z(()=>{let e=(this.currentPath()||this.path()||"").trim();if(!e||/^\\\\[^\\]+\\[^\\]+$/.test(e.replaceAll("/","\\")))return!0;let t=e.replaceAll("/","\\");return/^[a-zA-Z]:\\?$/.test(t)?!0:e.replaceAll("\\","/")==="/"});canUp=z(()=>!this.reloading()&&!this.isRoot());favorites=_(this.normalizeFavorites(this.localState.get(J.fs.explorer.favorites,[])));isCurFavorited=z(()=>{let e=this.normalizePath(this.currentPath()||this.path()||"");return e?this.favorites().some(t=>t.path===e):!1});toggleFavoriteCurrent(){let e=this.normalizePath(this.currentPath()||this.path()||"");if(!e)return;let t=this.favorites(),i=t.findIndex(o=>o.path===e),n;i>=0?n=t.slice(0,i).concat(t.slice(i+1)):n=[{path:e,label:this.buildFavoriteLabel(e),createdAt:Date.now()},...t],n=this.normalizeFavorites(n),this.favorites.set(n),this.persistFavorites(n)}openFavorite(e){e?.path&&(this.path.set(e.path),this.load())}removeFavorite(e){let t=this.normalizeFavorites(this.favorites().filter(i=>i.path!==e.path));this.favorites.set(t),this.persistFavorites(t)}clearFavorites(){this.favorites.set([]),this.persistFavorites([])}persistFavorites(e){this.localState.set(J.fs.explorer.favorites,e)}normalizeFavorites(e){let t=new Map;for(let i of e||[]){let n=this.normalizePath(i?.path||"");n&&t.set(n,{path:n,label:String(i?.label||this.buildFavoriteLabel(n)).trim(),createdAt:Number(i?.createdAt||Date.now())})}return Array.from(t.values()).sort((i,n)=>n.createdAt-i.createdAt)}buildFavoriteLabel(e){let t=e.replaceAll("/","\\");if(/^[a-zA-Z]:\\?$/.test(t))return t.slice(0,2);if(/^\\\\[^\\]+\\[^\\]+$/.test(t))return t;if(/^\\\\/.test(t)){let o=t.split("\\").filter(Boolean);return o[o.length-1]||t}let i=e.replaceAll("\\","/");if(i==="/")return"/";let n=i.split("/").filter(Boolean);return n[n.length-1]||i}load(e=!1){let t=(this.path()||"").trim();if(!t)return;let i=(this.currentPath()||"").trim();if(i&&this.normalizePath(i)===this.normalizePath(t)&&this.entries().length&&!e){this.isEditingPath.set(!1);return}this.reloading.set(!0),this.isEditingPath.set(!1),this.fsApi.ls(t,this.showSystemFolders()).subscribe({next:n=>{this.currentPath.set(n.path),this.entries.set(n.entries),this.path.set(n.path)},error:()=>{this.reloading.set(!1)},complete:()=>{this.reloading.set(!1)}})}toggleShowSystemFolders(){this.showSystemFolders.update(e=>!e),this.load()}editPath(){this.isEditingPath.update(e=>!e)}open(e){e.type==="dir"&&(this.path.set(e.fullPath),this.load())}up(){if(!this.canUp())return;let e=(this.currentPath()||this.path()||"").trim();if(!e)return;let t=this.normalizePath(e),i=t.replaceAll("/","\\"),n=/^\\\\[^\\]+\\[^\\]+/.test(i),o=/^[a-zA-Z]:\\/.test(i),P=n||o?"\\":"/";if(n){let d=i.match(/^\\\\([^\\]+)\\([^\\]+)(?:\\(.*))?$/);if(!d)return;let p=`\\\\${d[1]}\\${d[2]}`;if(i===p)return;let F=i.lastIndexOf("\\"),k=F<=p.length?p:i.slice(0,F);if(this.normalizePath(k)===this.normalizePath(this.currentPath()))return;this.path.set(k),this.load();return}if(o){let d=i.lastIndexOf("\\");if(d<=2){let F=`${i.slice(0,2)}\\`;if(this.normalizePath(F)===this.normalizePath(this.currentPath()))return;this.path.set(F),this.load();return}let p=i.slice(0,d);if(this.normalizePath(p)===this.normalizePath(this.currentPath()))return;this.path.set(p),this.load();return}let h=t.replaceAll("\\","/");if(h==="/")return;let x=h.lastIndexOf("/"),M=x<=0?"/":h.slice(0,x);this.normalizePath(M)!==this.normalizePath(this.currentPath())&&(this.path.set(M),this.load())}jumpTo(e){e.disabled||(this.path.set(e.fullPath),this.load())}openCreateFolderModal(){this.newFolderName.set(""),this.isCreateFolderModalVisible.set(!0)}cancelCreateFolder(){this.isCreateFolderModalVisible.set(!1),this.newFolderName.set("")}confirmCreateFolder(){let e=(this.newFolderName()||"").trim();if(!e)return;let t=this.currentPath()||this.path();this.fsApi.mkdir(t,e).subscribe(()=>{this.isCreateFolderModalVisible.set(!1),this.newFolderName.set(""),this.load(!0)})}buildSegments(e){let t=(e||"").trim();if(!t)return[];let i=/^[a-zA-Z]:[\\/]/.test(t)||/^[a-zA-Z]:$/.test(t),n=i?"\\":"/",o=i?t.replaceAll("/","\\"):t.replaceAll("\\","/"),c=i?o.slice(0,2):"/",P=o;if(i){let p=o.match(/^([a-zA-Z]:)(?:[\\\/])?(.*)$/);p&&(c=p[1],P=p[2]||"")}else P=o.startsWith("/")?o.slice(1):o;let h=P.split(i?/[\\]+/:/[\/]+/).filter(Boolean),x=[],M=i?`${c}\\`:"/";x.push({key:"root",label:c,fullPath:M,disabled:h.length===0});let d=M;for(let p=0;p<h.length;p++){let F=h[p];d=d.endsWith(n)?d+F:d+n+F;let k=p===h.length-1,$e=k?d:d+n;x.push({key:`${p}-${F}`,label:F,fullPath:$e,disabled:k})}return x}normalizePath(e){let t=(e||"").trim();if(!t)return"";let i=/^\\\\[^\\]+\\[^\\]+/.test(t.replaceAll("/","\\")),n=/^[a-zA-Z]:([\\/]|$)/.test(t),o=i||n,c=o?t.replaceAll("/","\\"):t.replaceAll("\\","/");if(n){let P=c.slice(0,2);if(c===P||c===`${P}\\`)return`${P}\\`}return!o&&c==="/"?"/":(c=c.replace(/[\\\/]+$/,""),c)}static \u0275fac=function(t){return new(t||r)};static \u0275prov=w({token:r,factory:r.\u0275fac,providedIn:"root"})};var We=(r,e)=>e.path,Ke=(r,e)=>e.key;function Ge(r,e){if(r&1){let t=E();s(0,"div",6)(1,"nz-input-wrapper")(2,"input",27),V("ngModelChange",function(n){m(t);let o=v();return N(o.fs.path,n)||(o.fs.path=n),u(n)}),b("keyup.enter",function(){m(t);let n=v();return u(n.fs.load())}),a(),s(3,"button",28),f(4,"nz-icon",29),a()()()}if(r&2){let t=v();l(2),D("ngModel",t.fs.path)}}function He(r,e){if(r&1){let t=E();s(0,"div",31)(1,"button",32),b("click",function(){let n=m(t).$implicit,o=v(2);return u(o.fs.jumpTo(n))}),y(2),a()()}if(r&2){let t=e.$implicit;l(2),O(" ",t.label," ")}}function Ze(r,e){if(r&1){let t=E();s(0,"div",7)(1,"div",30),S(2,He,3,1,"div",31,Ke),a(),s(4,"button",32),b("click",function(){m(t);let n=v();return u(n.fs.editPath())}),f(5,"nz-icon",33),a()()}if(r&2){let t=v();l(2),T(t.fs.segments())}}function Ye(r,e){if(r&1&&f(0,"nz-icon",38),r&2){let t=v().$implicit;C("nzType","proj:"+t.projectKind)}}function Je(r,e){if(r&1){let t=E();s(0,"div",34),b("click",function(){let n=m(t).$implicit,o=v();return u(o.fs.open(n))}),s(1,"div",35),f(2,"span",36),a(),s(3,"div",37),y(4),W(5,Ye,1,1,"nz-icon",38),a()()}if(r&2){let t=e.$implicit;l(2),C("nzType",t.type==="dir"?"folder":"file"),l(),C("title",re(t.name)),l(),O(" ",t.name," "),l(),K(t.projectKind&&t.projectKind!="unknown"?5:-1)}}function qe(r,e){if(r&1){let t=E();s(0,"li",19),f(1,"nz-icon",39),s(2,"button",40),b("click",function(){let n=m(t).$implicit,o=v();return u(o.fs.openFavorite(n))}),y(3),a()()}if(r&2){let t=e.$implicit;l(2),C("nz-tooltip",t.path),l(),O(" ",t.label," ")}}function Qe(r,e){if(r&1){let t=E();G(0),s(1,"div",41)(2,"label"),y(3,"\u6587\u4EF6\u5939\u540D\u79F0\uFF1A "),a(),s(4,"nz-input-wrapper")(5,"input",42),V("ngModelChange",function(n){m(t);let o=v();return N(o.fs.newFolderName,n)||(o.fs.newFolderName=n),u(n)}),a(),f(6,"nz-icon",43)(7,"nz-icon",44),a(),s(8,"div",45),y(9),a()(),H()}if(r&2){let t=v();l(5),D("ngModel",t.fs.newFolderName),l(4),ne("",t.fs.currentPath(),"",t.fs.newFolderName())}}function Xe(r,e){if(r&1){let t=E();G(0),s(1,"button",46),b("click",function(){m(t);let n=v();return u(n.fs.isCreateFolderModalVisible.set(!1))}),y(2,"\u53D6\u6D88"),a(),s(3,"button",47),b("click",function(){m(t);let n=v();return u(n.fs.confirmCreateFolder())}),f(4,"nz-icon",48),y(5," \u521B\u5EFA "),a(),H()}if(r&2){let t=v();l(3),C("disabled",!t.fs.newFolderName().trim())}}var Ue=class r{constructor(e){this.fs=e}ngOnInit(){this.fs.load()}static \u0275fac=function(t){return new(t||r)(X(U))};static \u0275cmp=ee({type:r,selectors:[["app-fs-explorer"]],decls:35,vars:10,consts:[["collectMenu","nzDropdownMenu"],["moreMenu","nzDropdownMenu"],[1,"page"],[1,"toolbar"],["nz-button","","nz-tooltip","\u4E0A\u4E00\u5C42",3,"click","disabled"],["nzType","up","nzTheme","outline"],[1,"path-edit"],[1,"current-path"],["nz-button","","nzType","primary","nz-tooltip","\u5237\u65B0",3,"click","nzLoading"],["nzTheme","outline",3,"nzType"],["nz-button","","nz-tooltip","\u6DFB\u52A0/\u53D6\u6D88\u6536\u85CF",3,"click"],["nzType","star",3,"nzTheme"],["nz-button","","nz-tooltip","\u6536\u85CF\u7684\u6587\u4EF6\u5939","nz-dropdown","","nzTrigger","click","nzPlacement","bottomRight",3,"nzDropdownMenu"],["nzType","caret-down","nzTheme","outline"],["nz-button","","nz-dropdown","","nzPlacement","bottomRight","nzTrigger","click","nz-tooltip","\u66F4\u591A\u64CD\u4F5C",3,"nzDropdownMenu"],["nzType","more","nzTheme","outline"],[1,"folders"],[1,"folder-item"],["nz-menu",""],["nz-menu-item",""],["nz-menu-item","",3,"click"],["nzType","folder-add","nzTheme","fill",2,"font-size","16px"],["nzType","eye","nzTheme","fill",2,"font-size","16px"],[2,"margin-left","8px",3,"ngModel"],["nzTitle","\u65B0\u5EFA\u6587\u4EF6\u5939",3,"nzVisibleChange","nzOnCancel","nzVisible","nzMaskClosable"],[4,"nzModalContent"],[4,"nzModalFooter"],["nz-input","","nzSize","small","placeholder","\u8F93\u5165\u6587\u4EF6\u5939\u5B8C\u6574\u8DEF\u5F84\uFF0C\u5982 D:\\work \u6216 /Users/xx",3,"ngModelChange","keyup.enter","ngModel"],["nzInputSuffix","","nz-button","","nzType","link"],["nzInputSuffix","","nzType","edit","nzTheme","outline"],[1,"path-value"],[1,"path-part"],["nz-button","","nzType","link",3,"click"],["nzType","edit","nzTheme","outline"],[1,"folder-item",3,"click"],[1,"icon"],["nz-icon","",3,"nzType"],[1,"name",3,"title"],["nzTheme","outline",1,"project-suffix-icon",3,"nzType"],["nzType","folder","nzTheme","fill"],["nz-button","","nzType","link",3,"click","nz-tooltip"],[1,"modal-body"],["nz-input","","placeholder","\u8BF7\u8F93\u5165\u6587\u4EF6\u5939\u540D\u79F0",3,"ngModelChange","ngModel"],["nzInputPrefix","","nzType","folder","nzTheme","fill"],["nzInputSuffix","","nzType","question-circle","nzTheme","outline","nz-tooltip","\u4F60\u53EF\u4EE5\u4F7F\u7528\u8DEF\u5F84\u5206\u9694\u7B26\u6765\u521B\u5EFA\u5D4C\u5957\u7684\u6587\u4EF6\u5939","nzTooltipTrigger","hover","nzTooltipPlacement","right"],[1,"hint"],["nz-button","",3,"click"],["nz-button","","nzType","primary",3,"click","disabled"],["nzType","folder-add","nzTheme","fill"]],template:function(t,i){if(t&1){let n=E();s(0,"div",2)(1,"div",3)(2,"button",4),b("click",function(){return m(n),u(i.fs.up())}),f(3,"nz-icon",5),a(),W(4,Ge,5,1,"div",6)(5,Ze,6,0,"div",7),s(6,"button",8),b("click",function(){return m(n),u(i.fs.load(!0))}),f(7,"nz-icon",9),a(),s(8,"button",10),b("click",function(){return m(n),u(i.fs.toggleFavoriteCurrent())}),f(9,"nz-icon",11),a(),s(10,"button",12),f(11,"nz-icon",13),a(),s(12,"button",14),f(13,"nz-icon",15),a()(),s(14,"div",16),S(15,Je,6,5,"div",17,ie),a()(),s(17,"nz-dropdown-menu",null,0)(19,"ul",18),S(20,qe,4,2,"li",19,We),a()(),s(22,"nz-dropdown-menu",null,1)(24,"ul",18)(25,"li",20),b("click",function(){return m(n),u(i.fs.openCreateFolderModal())}),f(26,"nz-icon",21),y(27," \u65B0\u5EFA\u6587\u4EF6\u5939 "),a(),s(28,"li",20),b("click",function(){return m(n),u(i.fs.toggleShowSystemFolders())}),f(29,"nz-icon",22),y(30," \u662F\u5426\u9690\u85CF\u7CFB\u7EDF\u6587\u4EF6\u5939 "),f(31,"nz-switch",23),a()()(),s(32,"nz-modal",24),V("nzVisibleChange",function(c){return m(n),N(i.fs.isCreateFolderModalVisible,c)||(i.fs.isCreateFolderModalVisible=c),u(c)}),b("nzOnCancel",function(){return m(n),u(i.fs.isCreateFolderModalVisible.set(!1))}),te(33,Qe,10,3,"ng-container",25)(34,Xe,6,1,"ng-container",26),a()}if(t&2){let n=Z(18),o=Z(23);l(2),C("disabled",!i.fs.canUp()),l(2),K(i.fs.isEditingPath()?4:5),l(2),C("nzLoading",i.fs.reloading()),l(),C("nzType",i.fs.reloading()?"loading":"reload"),l(2),C("nzTheme",i.fs.isCurFavorited()?"fill":"outline"),l(),C("nzDropdownMenu",n),l(2),C("nzDropdownMenu",o),l(3),T(i.fs.entries()),l(5),T(i.fs.favorites()),l(11),C("ngModel",i.fs.showSystemFolders()),l(),D("nzVisible",i.fs.isCreateFolderModalVisible),C("nzMaskClosable",!1)}},dependencies:[oe,xe,ve,Ce,be,Me,Fe,ye,Pe,ze,me,de,pe,ce,le,ae,we,Ee,Ie,Te,Se,De,Ve,Ne,Oe,Be,Ae,_e,ge,he,fe],styles:[".page[_ngcontent-%COMP%]{height:100%;display:flex;flex-direction:column}.toolbar[_ngcontent-%COMP%]{display:flex;gap:8px;align-items:center;padding:16px 0;flex:0 0 auto}.folders[_ngcontent-%COMP%]{flex:100% 1 1;height:0;overflow-x:hidden;overflow-y:auto;position:relative}.current-path[_ngcontent-%COMP%]{min-width:0;flex:100% 1 1;display:flex;flex-direction:row;align-items:stretch;border-radius:3px;height:34px}.current-path[_ngcontent-%COMP%] .path-value[_ngcontent-%COMP%]{flex:auto 1 1;display:flex;flex-direction:row;align-items:stretch}.current-path[_ngcontent-%COMP%] .path-value[_ngcontent-%COMP%] .path-part[_ngcontent-%COMP%]{flex:auto 0 0;border-left-width:2px;border-left-style:solid}.path-edit[_ngcontent-%COMP%]{flex:100% 1 1;display:flex;flex-direction:row;align-items:stretch;border-radius:3px;border:none;outline:none}.folder-item[_ngcontent-%COMP%]{padding:16px;display:flex;flex-direction:row;align-items:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:pointer;position:relative}.folder-item[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{margin:0 4px;flex:auto 0 0}.folder-item[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:24px}.folder-item[_ngcontent-%COMP%] .name[_ngcontent-%COMP%]{flex:100% 1 1;display:inline-flex;align-items:center;margin-left:16px;overflow:hidden;-ms-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap}.folder-item[_ngcontent-%COMP%] .name[_ngcontent-%COMP%] nz-icon[_ngcontent-%COMP%]{font-size:16px;margin-left:4px}.modal-body[_ngcontent-%COMP%]{display:grid;gap:12px}.hint[_ngcontent-%COMP%]{font-size:12px;opacity:.75}html.default[_ngcontent-%COMP%] [_ngcontent-%COMP%]:root{--app-gray: #e6f7ff;--app-primary: #1890ff;--app-primary-1: #e6f7ff;--app-primary-2: #bae7ff;--app-primary-3: #91d5ff;--app-primary-4: #69c0ff;--app-primary-5: #40a9ff;--app-primary-6: #1890ff;--app-text-color: rgba(0, 0, 0, .85);--app-text-secondary: rgba(0, 0, 0, .45);--text-color-primary: #1890ff;--app-component-bg: #fff;--app-border-color: #d9d9d9;--header-error-background: #ff4d4f}html.default[_ngcontent-%COMP%] [_ngcontent-%COMP%]:root{--text-color-gray: #888}html.default [_nghost-%COMP%] .current-path[_ngcontent-%COMP%]{background:var(--app-primary-3)}html.default [_nghost-%COMP%] button[_ngcontent-%COMP%]:not(.ant-btn-link){background-color:var(--app-primary-3)}html.default [_nghost-%COMP%] .path-part[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{color:#000000d9}html.default [_nghost-%COMP%] .path-part[_ngcontent-%COMP%]{border-left-color:#fff}html.default [_nghost-%COMP%] .folder-item[_ngcontent-%COMP%]:hover{background:var(--app-primary-3)}html.dark[_ngcontent-%COMP%] [_ngcontent-%COMP%]:root{--text-color-gray: #bbb}html.dark [_nghost-%COMP%] .current-path[_ngcontent-%COMP%]{background:var(--app-primary-3)}html.dark [_nghost-%COMP%] button[_ngcontent-%COMP%]:not(.ant-btn-link){background-color:var(--app-primary-3)}html.dark [_nghost-%COMP%] .path-part[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{color:#ffffffd9}html.dark [_nghost-%COMP%] .path-part[_ngcontent-%COMP%]{border-left-color:#141414}html.dark [_nghost-%COMP%] .folder-item[_ngcontent-%COMP%]:hover{background:var(--app-primary-3)}"]})};var R=class r{api=g(A);fs=g(j);async checkPathExists(e){return await q(this.fs.pathExists(e))}detect(e){return this.api.post("/api/projects/detect",{rootPath:e})}async pickFolder(){return null}bootstrapByCli(e){return this.api.post("/api/projects/bootstrap/cli",{parentDir:e.parentDir,name:e.name,rootPath:e.rootPath,packageManager:e.packageManager,overwriteIfExists:e.overwriteIfExists,skipOnboarding:e.skipOnboarding,initGit:e.initGit,initialCommitMessage:e.initialCommitMessage,cliFramework:e.cliFramework,cliTool:e.cliTool,cliArgs:e.cliArgs??[]})}bootstrapPickRoot(e){return this.api.post("/api/projects/bootstrap/pickRoot",e)}bootstrapByGit(e){return this.api.post("/api/projects/bootstrap/git",{repoUrl:e.repoUrl,parentDir:e.parentDir,name:e.name,rootPath:e.rootPath,overwriteIfExists:e.overwriteIfExists,initGit:e.initGit,initialCommitMessage:e.initialCommitMessage,packageManager:e.packageManager,skipOnboarding:e.skipOnboarding??!0})}getProjectMembers(e){return this.api.hubRequestWithPrjId({projectId:e,path:"/members"})}list(){return this.api.get("/api/projects/list")}get(e){return this.api.get(`/api/projects/getInfo/${e}`)}check(e){return this.api.post("/api/projects/check",{rootPath:e})}createByPath(e){return this.api.post("/api/projects/create",e)}checkImport(e){return this.api.post("/api/projects/checkImport",{root:e})}importByPath(e){return this.api.post("/api/projects/import",e)}delete(e){return this.api.delete(`/api/projects/delete/${e}`)}update(e,t){return this.api.post(`/api/projects/update/${e}`,t)}setFavorite(e,t){return this.api.post(`/api/projects/favorite/${e}`,{isFavorite:t})}toggleFavorite(e){return this.api.post(`/api/projects/favorite/${e}/toggle`,{})}setLastOpened(e,t){return this.api.post(`/api/projects/lastOpened/${e}`,{timestamp:t})}openInEditor(e,t="code"){return this.api.post(`/api/projects/openInEditor/${e}`,{editor:t})}edit(e,t){return this.api.post(`/api/projects/edit/${e}`,t)}updateAssets(e,t){return this.api.post(`/api/projects/updateAssets/${e}`,{assets:t})}static \u0275fac=function(t){return new(t||r)};static \u0275prov=w({token:r,factory:r.\u0275fac,providedIn:"root"})};var Re=class r{modal=g(ue);notify=g(ke);projectService=g(R);projectContext=g(je);ls=g(I);router=g(se);projects=z(()=>this.projectContext.projects());keyword=_("");isEditModalVisible=_(!1);isEditSaving=_(!1);editingProject=_(null);filteredProjects=z(()=>{let e=this.keyword().trim().toLowerCase();return e?this.projects().filter(t=>t.name.toLowerCase().includes(e)):this.projects()});favoriteProjects=z(()=>this.filteredProjects().filter(e=>e.isFavorite));moreProjects=z(()=>this.filteredProjects().filter(e=>!e.isFavorite));recentProjects=z(()=>this.projects().slice().sort((e,t)=>{let i=new Date(e.lastOpened||0).getTime();return new Date(t.lastOpened||0).getTime()-i}).slice(0,5));selectProject(e){this.projectContext.setCurrentProject(e);let t=Date.now();this.projectContext.patchProject(L($({},e),{lastOpened:t})),this.projectService.setLastOpened(e.id,t).subscribe(),this.router.navigate(["/dashboard"])}openInEditor(e){this.projectService.openInEditor(e).subscribe({next:()=>{console.log("Opened project in editor:",e),this.notify.success("\u5DF2\u5728\u7F16\u8F91\u5668\u4E2D\u6253\u5F00\u9879\u76EE")}})}toggleFavorite(e){this.projectService.toggleFavorite(e).subscribe(t=>{this.projectContext.patchProject(t)})}getProjects(e){this.projectContext.loadProjects(e).subscribe()}setCurrentProjectById(e){this.projectContext.setCurrentProjectById(e)}isOpen(e){return this.projectContext.isOpen(e)}openEditModal(e){let t=e.env??{};this.editingProject.set({id:e.id,name:e.name??"",repoPageUrl:e.repoPageUrl??"",description:e.description??"",hubV2:{baseUrl:t.NGM_HUB_V2_BASE_URL||"http://192.168.1.31:7008",projectKey:t.NGM_HUB_V2_PROJECT_KEY||"",token:t.NGM_HUB_V2_TOKEN||""}}),this.isEditModalVisible.set(!0)}closeEditModal(){this.isEditModalVisible.set(!1),this.editingProject.set(null)}confirmEditProject(){if(this.isEditSaving()||!this.editingProject())return;let{id:e,name:t,description:i,repoPageUrl:n,hubV2:o}=this.editingProject();if(!e){this.notify.error("\u672A\u9009\u4E2D\u9700\u8981\u91CD\u547D\u540D\u7684\u9879\u76EE");return}if(!t)return;let c=i?.trim(),P=n?.trim(),h={baseUrl:o.baseUrl.trim(),projectKey:o.projectKey.trim(),token:o.token.trim()},x=this.projectContext.getProjectById(e),M=x?.env??{};if(x&&x.name===t&&x.description===c&&x.repoPageUrl===P&&(M.NGM_HUB_V2_BASE_URL??"")===h.baseUrl&&(M.NGM_HUB_V2_PROJECT_KEY??"")===h.projectKey&&(M.NGM_HUB_V2_TOKEN??"")===h.token){this.closeEditModal();return}this.isEditSaving.set(!0),this.projectService.edit(e,{name:t,description:c,repoPageUrl:P}).subscribe({next:()=>{let d=L($({},x?.env??{}),{NGM_HUB_V2_BASE_URL:h.baseUrl,NGM_HUB_V2_PROJECT_KEY:h.projectKey,NGM_HUB_V2_TOKEN:h.token});this.projectService.update(e,{env:d}).subscribe({next:p=>{this.projectContext.patchProject(p),this.notify.success("\u4FEE\u6539\u6210\u529F"),this.isEditSaving.set(!1),this.closeEditModal()},error:p=>{this.notify.error(p?.message||"\u9879\u76EE\u914D\u7F6E\u4FDD\u5B58\u5931\u8D25"),this.isEditSaving.set(!1)}})},error:d=>{this.notify.error(d?.message||"\u4FEE\u6539\u5931\u8D25"),this.isEditSaving.set(!1)}})}deleteProject(e){this.modal.confirm({nzTitle:"\u786E\u8BA4\u5220\u9664\u8BE5\u9879\u76EE\u5417\uFF1F",nzContent:"\u5220\u9664\u9879\u76EE\u53EA\u4F1A\u79FB\u9664\u9879\u76EE\u8BB0\u5F55\uFF0C\u4E0D\u4F1A\u5220\u9664\u78C1\u76D8\u4E0A\u7684\u6587\u4EF6\u5939\u3002\u5982\u9700\u5220\u9664\u78C1\u76D8\u6587\u4EF6\uFF0C\u8BF7\u624B\u52A8\u64CD\u4F5C\u3002",nzOkText:"\u5220\u9664",nzCancelText:"\u53D6\u6D88",nzOkDanger:!0,nzOnOk:()=>{this.projectService.delete(e).subscribe({next:()=>{this.projectContext.removeProject(e),this.projectContext.currentProject()||this.notify.info("\u5F53\u524D\u6CA1\u6709\u9879\u76EE\uFF0C\u8BF7\u5148\u521B\u5EFA\u6216\u5BFC\u5165\u9879\u76EE"),this.notify.success("\u9879\u76EE\u5DF2\u5220\u9664")}})}})}static \u0275fac=function(t){return new(t||r)};static \u0275prov=w({token:r,factory:r.\u0275fac,providedIn:"root"})};export{j as a,U as b,Ue as c,R as d,Re as e};
@@ -1 +0,0 @@
1
- import{a as Oe,b as Te}from"./chunk-XJ5KZQNN.js";import{a as be,b as Ie}from"./chunk-INL2PELS.js";import"./chunk-SIVPP74B.js";import{b as Ne}from"./chunk-WD4IAQR3.js";import{a as je,b as we}from"./chunk-WF2QTF5L.js";import"./chunk-DW7F5PEA.js";import"./chunk-KVFR7GFV.js";import{b as le,c as pe,d as se,e as xe,g as ze,h as De}from"./chunk-JU3TEDBV.js";import{a as Me}from"./chunk-UQGCUFNM.js";import"./chunk-5T5KA5PG.js";import{d as Pe,e as ye}from"./chunk-UXXWRMM6.js";import{$b as _e,Eb as me,Fa as ne,Ga as ie,Gb as ce,Kb as de,Oa as oe,Ra as re,Sa as ae,Ub as ue,Xb as ge,Zb as fe,ac as Ce,dc as ve,fc as he}from"./chunk-SPRWNZHF.js";import"./chunk-HFZLJHYR.js";import{h as B}from"./chunk-L5D75AMV.js";import{i as te,n as E}from"./chunk-T3KK7ZXB.js";import{$b as L,B as A,Ec as J,Fb as $,Gb as w,Ha as _,Jc as p,Kc as T,Lb as O,Lc as z,Nc as K,Oc as Q,Pc as X,Uc as Y,Vb as U,W as y,Wb as v,Yb as h,Yc as V,a as g,ac as G,b as f,bc as u,cc as o,cd as Z,dc as r,ec as m,hd as I,ic as W,id as ee,jc as H,kc as k,lc as M,na as q,nb as a,oa as j,rc as b,sa as x,uc as d,ya as D,za as P}from"./chunk-WI67LAOV.js";var N=class n{api=x(Pe);getDeps(t){return this.api.get(`/api/deps/list/${t}`).pipe(A(e=>({items:[...e.dependencies.map(l=>f(g({},l),{group:"dependencies"})),...e.devDependencies.map(l=>f(g({},l),{group:"devDependencies"}))],meta:e.meta})))}install(t,e){return this.api.post(`/api/deps/install/${t}`,e)}uninstall(t,e){return this.api.post(`/api/deps/uninstall/${t}`,e)}installDevtools(t){return this.api.post(`/api/deps/devtools/install/${t}`,{tool:"devtools"})}getProjectNodeInfo(t){return this.api.post("/api/node-version/project-requirement",{projectPath:t})}static \u0275fac=function(e){return new(e||n)};static \u0275prov=q({token:n,factory:n.\u0275fac,providedIn:"root"})};var Fe=["class","component"],Se=n=>({$implicit:n,title:"\u8FD0\u884C\u4F9D\u8D56"}),ke=n=>({$implicit:n,title:"\u5F00\u53D1\u4F9D\u8D56"});function Ve(n,t){if(n&1&&(o(0,"div",8),m(1,"span",15),o(2,"span",10),p(3,"Node \u7248\u672C\uFF1A"),r(),o(4,"span",11),p(5),r()()),n&2){let e,i=d(2);a(5),z(" ",((e=i.meta())==null?null:e.voltaConfig)||((e=i.meta())==null?null:e.enginesNode)," ")}}function Be(n,t){if(n&1&&(o(0,"div",14),m(1,"span",15),o(2,"span",10),p(3,"\u63A8\u8350 Node \u7248\u672C\uFF1A"),r(),o(4,"span",11),p(5),r(),m(6,"span",16),r()),n&2){let e,i=d(2);a(5),z(" ",(e=i.nodeVersionInfo())==null?null:e.requiredVersion," "),a(),u("nz-tooltip","\u6839\u636E\u9879\u76EE\u6846\u67B6\u7248\u672C\u81EA\u52A8\u63A8\u8350")}}function Re(n,t){if(n&1&&(o(0,"div",6)(1,"div",8),m(2,"span",9),o(3,"span",10),p(4,"\u5305\u7BA1\u7406\u5668\uFF1A"),r(),o(5,"span",11),p(6),r()(),o(7,"div",8),m(8,"span",12),o(9,"span",10),p(10,"\u4ED3\u5E93\u72B6\u6001\uFF1A"),r(),o(11,"nz-tag",13),p(12),r()(),v(13,Ve,6,1,"div",8)(14,Be,7,2,"div",14),r()),n&2){let e,i,l,c,s,C=d();a(6),T(((e=C.meta())==null?null:e.packageManager)||"-"),a(2),u("nzType",(i=C.meta())!=null&&i.registryOnline?"cloud-server":"cloud"),a(3),u("nzColor",(l=C.meta())!=null&&l.registryOnline?"success":"error"),a(),z(" ",(c=C.meta())!=null&&c.registryOnline?"\u5728\u7EBF":"\u79BB\u7EBF"," "),a(),h((s=C.meta())!=null&&s.voltaConfig||(s=C.meta())!=null&&s.enginesNode?13:(s=C.nodeVersionInfo())!=null&&s.requiredVersion?14:-1)}}function Ae(n,t){n&1&&k(0)}function qe(n,t){n&1&&k(0)}function $e(n,t){n&1&&(o(0,"nz-tag",30),p(1,"\u5DF2\u5B89\u88C5"),r())}function Ue(n,t){n&1&&(o(0,"nz-tag",31),p(1,"\u672A\u5B89\u88C5"),r())}function Le(n,t){if(n&1){let e=M();o(0,"button",37),b("click",function(){D(e);let l=d().$implicit,c=d(2);return P(c.installOrUpdate(l))}),m(1,"nz-icon",38),r()}if(n&2){let e=d().$implicit,i=d(2);u("nzLoading",i.installing()[e.name])("nz-tooltip",e.hasUpdate?"\u66F4\u65B0\u5230\u6700\u65B0\u7248\u672C":"\u5B89\u88C5\u4F9D\u8D56")}}function Ge(n,t){if(n&1){let e=M();o(0,"button",39),b("nzOnConfirm",function(){D(e);let l=d().$implicit,c=d(2);return P(c.uninstall(l))}),m(1,"nz-icon",40),r()}if(n&2){let e=d().$implicit;u("nzPopconfirmTitle",Y("\u786E\u5B9A\u5378\u8F7D ",e.name,"\uFF1F")),a(),u("nz-tooltip","\u5378\u8F7D"+e.name)}}function We(n,t){if(n&1){let e=M();o(0,"div",19)(1,"div",21)(2,"div",22)(3,"div",23),m(4,"span",24),r(),o(5,"div",25)(6,"div",26),p(7),r(),o(8,"div",27)(9,"span"),p(10),r(),o(11,"span",28),p(12,"\xB7"),r(),o(13,"span"),p(14),r(),o(15,"span",28),p(16,"\xB7"),r(),o(17,"span"),p(18),r()()()(),o(19,"div",29),v(20,$e,2,0,"nz-tag",30)(21,Ue,2,0,"nz-tag",31),o(22,"a",32),b("click",function(){let l=D(e).$implicit,c=d(2);return P(c.openDetail(l))}),m(23,"span",33),p(24," \u67E5\u770B\u8BE6\u60C5 "),r()(),o(25,"div",34),v(26,Le,2,2,"button",35),v(27,Ge,2,3,"button",36),r()()()}if(n&2){let e=t.$implicit;a(7),T(e.name),a(3),z("\u7248\u672C ",e.current||"-"),a(4),z("\u8981\u6C42 ",e.required||"-"),a(4),z("\u6700\u65B0 ",e.latest||"-"),a(2),h(e.installed?20:21),a(6),h(e.hasUpdate||!e.installed?26:-1),a(),h(e.installed?27:-1)}}function He(n,t){n&1&&(o(0,"div",20),p(1,"\u65E0\u6570\u636E"),r())}function Je(n,t){if(n&1&&(o(0,"div",17),p(1),r(),o(2,"div",18),L(3,We,28,7,"div",19,U().trackByName,!0),v(5,He,2,0,"div",20),r()),n&2){let e=t.$implicit,i=t.title;a(),T(i),a(2),G(e),a(2),h(e.length===0?5:-1)}}var F=class n{api=x(N);msg=x(ye);projectContext=x(Me);projectId=I(()=>this.projectContext.currentProjectId()||"");loading=_(!1);keyword=_("");items=_([]);meta=_(null);nodeVersionInfo=_(null);installing=_({});uninstalling=_({});runtimeItems=I(()=>this.filterItems(this.items().filter(t=>t.group==="dependencies")));devItems=I(()=>this.filterItems(this.items().filter(t=>t.group==="devDependencies")));runningCount=I(()=>this.items().filter(t=>t.hasUpdate).length);depsState=x(N);constructor(){ee(async()=>{this.refresh()})}filterItems(t){let e=this.keyword().trim().toLowerCase();return e?t.filter(i=>i.name.toLowerCase().includes(e)):t}refresh(){this.loading.set(!0),this.nodeVersionInfo.set(null),this.api.getDeps(this.projectId()).pipe(y(()=>this.loading.set(!1))).subscribe({next:({items:t,meta:e})=>{this.items.set(t),this.meta.set(e),!e?.voltaConfig&&!e?.enginesNode&&this.loadNodeVersionInfo()},error:t=>this.msg.error(t?.message||"\u52A0\u8F7D\u4F9D\u8D56\u5931\u8D25")})}loadNodeVersionInfo(){let t=this.projectContext.currentProject();t?.root&&this.api.getProjectNodeInfo(t.root).subscribe({next:e=>{this.nodeVersionInfo.set(e)},error:()=>{this.nodeVersionInfo.set(null)}})}openDetail(t){t.homepage?window.open(t.homepage,"_blank"):window.open(`https://www.npmjs.com/package/${encodeURIComponent(t.name)}`,"_blank")}installOrUpdate(t){let e=t.name;this.installing.set(f(g({},this.installing()),{[e]:!0}));let i=t.installed&&t.hasUpdate?"latest":"required",l=t.installed&&t.hasUpdate?"\u5DF2\u66F4\u65B0":"\u5DF2\u5B89\u88C5";this.api.install(this.projectId(),{name:t.name,group:t.group,target:i}).pipe(y(()=>this.installing.set(f(g({},this.installing()),{[e]:!1})))).subscribe({next:()=>{this.msg.success(l),this.refresh()}})}uninstall(t){let e=t.name;this.uninstalling.set(f(g({},this.uninstalling()),{[e]:!0})),this.api.uninstall(this.projectId(),{name:t.name,group:t.group}).pipe(y(()=>this.uninstalling.set(f(g({},this.uninstalling()),{[e]:!1})))).subscribe({next:()=>{this.msg.success("\u5DF2\u5378\u8F7D"),this.refresh()}})}installDevtools(){this.loading.set(!0),this.api.installDevtools(this.projectId()).pipe(y(()=>this.loading.set(!1))).subscribe({next:()=>{this.msg.success("devtools \u5DF2\u5B89\u88C5"),this.refresh()},error:t=>this.msg.error(t?.message||"devtools \u5B89\u88C5\u5931\u8D25")})}installAll(){let t=this.items().filter(i=>!i.installed);if(!t.length){this.msg.info("\u6CA1\u6709\u9700\u8981\u5B89\u88C5\u7684\u4F9D\u8D56");return}(async()=>{this.loading.set(!0);try{for(let i of t)await new Promise((l,c)=>{this.api.install(this.projectId(),{name:i.name,group:i.group,target:"required"}).subscribe({next:()=>l(),error:s=>c(s)})});this.msg.success("\u5DF2\u5B8C\u6210\u5B89\u88C5"),this.refresh()}catch{this.msg.error("\u6279\u91CF\u5B89\u88C5\u5931\u8D25")}finally{this.loading.set(!1)}})()}trackByName(t,e){return e.group+":"+e.name}static \u0275fac=function(e){return new(e||n)};static \u0275cmp=$({type:n,selectors:[["app-project-deps",8,"component"]],attrs:Fe,decls:13,vars:12,consts:[["contentTemplate",""],[3,"title","loading"],["ngProjectAs","actions",5,["actions"]],["nz-input","","placeholder","\u641C\u7D22",1,"search",3,"ngModelChange","ngModel"],["nzType","search","nzInputPrefix",""],[1,"panel"],[1,"version-info"],[4,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"version-info-item"],["nz-icon","","nzType","inbox"],[1,"version-label"],[1,"version-value"],["nz-icon","",3,"nzType"],[3,"nzColor"],[1,"version-info-item","recommended-version"],["nz-icon","","nzType","proj:node"],["nz-icon","","nzType","question-circle",1,"recommended-badge",3,"nz-tooltip"],[1,"group-title"],[1,"list"],[1,"row"],[1,"empty"],["nz-row","","nzAlign","middle",1,"row-inner"],["nz-col","","nzFlex","400px",1,"left"],[1,"pkg-icon"],["nz-icon","","nzType","appstore"],[1,"pkg"],[1,"name"],[1,"sub"],[1,"sep"],["nz-col","","nzFlex","auto",1,"mid"],["nzColor","success"],["nzColor","warning"],[1,"detail",3,"click"],["nz-icon","","nzType","link"],["nz-col","","nzFlex","180px",1,"right"],["nz-button","","nzType","text",3,"nzLoading","nz-tooltip"],["nz-button","","nzType","text","nz-popconfirm","",3,"nzPopconfirmTitle"],["nz-button","","nzType","text",3,"click","nzLoading","nz-tooltip"],["nzType","download"],["nz-button","","nzType","text","nz-popconfirm","",3,"nzOnConfirm","nzPopconfirmTitle"],["nzType","delete","nzTheme","fill",3,"nz-tooltip"]],template:function(e,i){if(e&1){let l=M();o(0,"app-page-layout",1),W(1,2),m(2,"app-ng-devtool"),o(3,"nz-input-wrapper")(4,"input",3),X("ngModelChange",function(s){return D(l),Q(i.keyword,s)||(i.keyword=s),P(s)}),b("ngModelChange",function(s){return D(l),P(i.keyword.set(s))}),r(),m(5,"nz-icon",4),r(),H(),o(6,"div",5),v(7,Re,15,5,"div",6),O(8,Ae,1,0,"ng-container",7),m(9,"nz-divider"),O(10,qe,1,0,"ng-container",7),r()(),O(11,Je,6,2,"ng-template",null,0,Z)}if(e&2){let l=J(12);u("title","\u9879\u76EE\u914D\u7F6E")("loading",i.loading()),a(4),K("ngModel",i.keyword),a(3),h(i.meta()?7:-1),a(),u("ngTemplateOutlet",l)("ngTemplateOutletContext",V(8,Se,i.runtimeItems())),a(2),u("ngTemplateOutlet",l)("ngTemplateOutletContext",V(10,ke,i.devItems()))}},dependencies:[E,te,ue,me,ce,de,se,pe,le,ae,re,oe,Ce,fe,_e,ge,ie,ne,he,ve,we,je,Ne,Te,Oe,Ie,be,ze,De,xe],styles:[".panel[_ngcontent-%COMP%]{border-radius:10px;padding:16px 18px;box-shadow:0 2px 8px #0000000f}.version-info[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:16px 32px;padding:12px 16px;background:linear-gradient(135deg,#1890ff0a,#52c41a0a);border-radius:8px;margin-bottom:20px;border:1px solid rgba(24,144,255,.08)}.version-info-item[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;font-size:14px;opacity:.85}.version-info-item[_ngcontent-%COMP%] nz-icon[_ngcontent-%COMP%]{font-size:16px;opacity:.6}.version-info-item[_ngcontent-%COMP%] .version-label[_ngcontent-%COMP%]{font-weight:500;color:var(--text-color-secondary)}.version-info-item[_ngcontent-%COMP%] .version-value[_ngcontent-%COMP%]{font-weight:600;color:var(--text-color-primary)}.version-info-item.recommended-version[_ngcontent-%COMP%]{padding:4px 12px;background:#52c41a14;border-radius:6px;border:1px solid rgba(82,196,26,.2)}.version-info-item.recommended-version[_ngcontent-%COMP%] .version-value[_ngcontent-%COMP%]{color:#52c41a}.version-info-item.recommended-version[_ngcontent-%COMP%] .recommended-badge[_ngcontent-%COMP%]{color:#52c41a;cursor:help}.group-title[_ngcontent-%COMP%]{font-size:18px;font-weight:600;margin:6px 0 12px;opacity:.65}.list[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:10px}.row[_ngcontent-%COMP%]{border-radius:10px}.row[_ngcontent-%COMP%]:hover{box-shadow:0 4px 12px #0000001a;background:var(--app-primary-3)}.row-inner[_ngcontent-%COMP%]{padding:10px 12px}.left[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px}.left[_ngcontent-%COMP%] .pkg-icon[_ngcontent-%COMP%]{width:34px;height:34px;border-radius:8px;opacity:.65;display:inline-flex;align-items:center;justify-content:center}.left[_ngcontent-%COMP%] .pkg[_ngcontent-%COMP%] .name[_ngcontent-%COMP%]{font-weight:600;line-height:18px}.left[_ngcontent-%COMP%] .pkg[_ngcontent-%COMP%] .sub[_ngcontent-%COMP%]{margin-top:2px;font-size:12px;opacity:.55}.left[_ngcontent-%COMP%] .pkg[_ngcontent-%COMP%] .sub[_ngcontent-%COMP%] .sep[_ngcontent-%COMP%]{margin:0 6px}.mid[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;gap:8px}.mid[_ngcontent-%COMP%] .detail[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:4px;color:var(--text-color-primary)}.right[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:flex-end;gap:6px}.empty[_ngcontent-%COMP%]{padding:16px 0;text-align:center}"]})};var Ke=[{path:"",component:F}],S=class n{static \u0275fac=function(e){return new(e||n)};static \u0275mod=w({type:n});static \u0275inj=j({imports:[B.forChild(Ke),B]})};var Ee=class n{static \u0275fac=function(e){return new(e||n)};static \u0275mod=w({type:n});static \u0275inj=j({imports:[E,S]})};export{Ee as DependenciesModule};
@@ -1 +0,0 @@
1
- import{c as dn,d as un,e as fn}from"./chunk-LQ5OXSW7.js";import{a as pn,b as sn,c as ln,d as cn}from"./chunk-HGONFYP6.js";import{a as gn,b as Cn,c as _n,d as zn,e as hn}from"./chunk-SVQWPHF5.js";import{a as mn,b as Ve,c as Ae,d as Re,e as oe}from"./chunk-6CGHNKJI.js";import{a as Be,b as fe}from"./chunk-GDWS2L66.js";import{a as Wt,b as Lt,c as Gt}from"./chunk-ZNTJRLVH.js";import{a as an}from"./chunk-B6MBYCXI.js";import{a as Fe,b as Oe,c as de}from"./chunk-G2W3B7TJ.js";import{b as nn}from"./chunk-PIK5YPIB.js";import"./chunk-YVZHJ76K.js";import"./chunk-SIVPP74B.js";import{a as on,b as rn}from"./chunk-WD4IAQR3.js";import{a as Ie,b as ue}from"./chunk-WF2QTF5L.js";import"./chunk-HRXCR3IN.js";import"./chunk-DW7F5PEA.js";import"./chunk-KVFR7GFV.js";import{a as $t,c as Yt}from"./chunk-HHBPULJW.js";import{a as Z,b as I}from"./chunk-2X3MRS27.js";import{a as be,c as De,d as Kt,e as Xt,f as Ne}from"./chunk-4KETC6EB.js";import{a as dt,b as L,c as G,d as $,f as Jt,g as Ht}from"./chunk-JU3TEDBV.js";import{b as Zt}from"./chunk-JZULA5JV.js";import{a as en,b as tn}from"./chunk-TMX5TTV3.js";import"./chunk-UQGCUFNM.js";import{e as Se,f as Ee,g as le,l as ee}from"./chunk-BYEU6KGP.js";import"./chunk-5T5KA5PG.js";import{f as me}from"./chunk-UXXWRMM6.js";import{$b as ce,Eb as Y,Fa as v,Ga as P,Gb as U,Hb as Ut,Jb as qt,Kb as q,Lb as Qt,Ma as At,Na as Rt,Oa as j,Pa as H,Ra as D,Sa as S,Ub as E,Xb as je,Zb as K,ac as Q,dc as te,fc as ne}from"./chunk-SPRWNZHF.js";import"./chunk-HFZLJHYR.js";import{e as Te,h as ze}from"./chunk-L5D75AMV.js";import{i as Bt,k as Vt,n as h}from"./chunk-T3KK7ZXB.js";import{$b as ae,$c as Nt,A as pt,Ac as kt,Ec as V,Fb as M,Fc as Tt,Gb as ke,Gc as St,Ha as B,Jc as l,Kc as b,Lb as O,Lc as se,M as st,Nc as w,Oa as xe,Oc as k,Pc as T,Q as Ct,Qc as Et,Rc as jt,Sc as bt,V as _t,Wb as y,X as zt,Xc as Dt,Yb as x,Yc as mt,_b as Pt,a as J,ac as pe,ad as Ft,b as at,bc as g,cc as r,cd as W,dc as a,ea as ht,ec as c,fa as lt,g as ft,hd as A,ic as vt,id as Ot,jc as yt,kc as ct,l as ve,lc as z,na as Mt,nb as s,oa as ye,rc as m,rd as It,sa as C,sb as F,u as gt,uc as d,ya as u,yc as xt,z as _e,za as f,zb as we,zc as wt}from"./chunk-WI67LAOV.js";var kn=()=>({padding:"8px"});function Tn(o,n){if(o&1){let e=z();r(0,"button",13),m("click",function(){u(e);let i=d();return f(i.copy())}),c(1,"nz-icon",14),a()}if(o&2){let e=d();g("nz-tooltip",e.copyied?"\u5DF2\u590D\u5236":"\u590D\u5236")}}function Sn(o,n){if(o&1&&(r(0,"div",9)(1,"nz-tag",15),l(2),a()()),o&2){let e=d();s(2),se("\u63A8\u8350\uFF1A",e.draft.detected==null?null:e.draft.detected.recommendedScript)}}function En(o,n){o&1&&(r(0,"div",10),l(1," \u26A0\uFE0F \u8986\u76D6\u5DF2\u5B58\u5728\u76EE\u5F55 "),a())}function jn(o,n){if(o&1){let e=z();r(0,"button",16),m("click",function(){u(e);let i=d();return f(i.isDrawerOpen=!i.isDrawerOpen)}),c(1,"nz-icon",17),l(2," \u65E5\u5FD7\u8F93\u51FA "),a()}}function bn(o,n){o&1&&(vt(0),c(1,"app-terminal-view"),yt()),o&2&&(s(),Tt("height",100,"%"))}var We=class o{draft;chunk="";clipboard=C(an);term;isDrawerOpen=!1;isCreating=It(!1);copyied=!1;ngOnChanges(n){n.chunk&&n.chunk.currentValue&&this.term&&this.term.write(this.chunk),n.isCreating&&n.isCreating.currentValue===!0&&(this.isDrawerOpen=!0)}copy(){let n=this.draft.repoUrl||"";this.clipboard.copy(n),this.copyied=!0,setTimeout(()=>{this.copyied=!1},2e3)}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=M({type:o,selectors:[["app-create-summary-aside"]],viewQuery:function(e,t){if(e&1&&xt(dt,5),e&2){let i;wt(i=kt())&&(t.term=i.first)}},inputs:{draft:"draft",chunk:"chunk",isCreating:[1,"isCreating"]},outputs:{isCreating:"isCreatingChange"},features:[xe],decls:44,vars:16,consts:[["logActions",""],["nzTitle","\u6458\u8981","nzSize","small",3,"nzExtra"],[1,"item"],[1,"k"],[1,"v"],[1,"v","mono"],[1,"v",3,"nz-tooltip"],["nz-button","","nzType","text","nzSize","small",3,"nz-tooltip"],[1,"sep"],[1,"tag"],[1,"warn"],["nzTitle","\u65E5\u5FD7","nzPlacement","right",3,"nzOnClose","nzVisible","nzWidth","nzBodyStyle"],[4,"nzDrawerContent"],["nz-button","","nzType","text","nzSize","small",3,"click","nz-tooltip"],["nzType","copy","nzTheme","outline"],["nzColor","blue"],["nz-button","","nzType","text","nzSize","small",3,"click"],["nzType","desktop","nzTheme","outline"]],template:function(e,t){if(e&1){let i=z();r(0,"nz-card",1)(1,"div",2)(2,"span",3),l(3,"\u540D\u79F0"),a(),r(4,"span",4),l(5),a()(),r(6,"div",2)(7,"span",3),l(8,"\u8DEF\u5F84"),a(),r(9,"span",5),l(10),a()(),r(11,"div",2)(12,"span",3),l(13,"\u5305\u7BA1\u7406\u5668"),a(),r(14,"span",4),l(15),a()(),r(16,"div",2)(17,"span",3),l(18,"Git \u8FDC\u7A0B\u4ED3\u5E93"),a(),r(19,"span",6),l(20),a(),y(21,Tn,2,1,"button",7),a(),c(22,"div",8),r(23,"div",2)(24,"span",3),l(25,"\u6846\u67B6"),a(),r(26,"span",4),l(27),a()(),r(28,"div",2)(29,"span",3),l(30,"\u811A\u672C\u547D\u4EE4"),a(),r(31,"span",4),l(32),a()(),r(33,"div",2)(34,"span",3),l(35,"Git"),a(),r(36,"span",4),l(37),a()(),y(38,Sn,3,1,"div",9),y(39,En,2,0,"div",10),a(),O(40,jn,3,0,"ng-template",null,0,W),r(42,"nz-drawer",11),m("nzOnClose",function(){return u(i),f(t.isDrawerOpen=!1)}),O(43,bn,2,2,"ng-container",12),a()}if(e&2){let i=V(41);g("nzExtra",i),s(5),b(t.draft.name||"-"),s(5),b(t.draft.rootPath||"-"),s(5),b(t.draft.packageManager),s(4),g("nz-tooltip",t.draft.repoUrl||""),s(),b(t.draft.repoUrl||"-"),s(),x(t.draft.repoUrl?21:-1),s(6),b((t.draft.detected==null?null:t.draft.detected.framework)||"-"),s(5),b((t.draft.detected==null?null:t.draft.detected.scriptsCount)??"-"),s(5),b(t.draft.detected!=null&&t.draft.detected.hasGit?"Yes":"No"),s(),x(t.draft.detected!=null&&t.draft.detected.recommendedScript?38:-1),s(),x(t.draft.overwriteIfExists?39:-1),s(3),g("nzVisible",t.isDrawerOpen)("nzWidth",720)("nzBodyStyle",Dt(15,kn))}},dependencies:[h,I,Z,ue,Ie,ne,te,P,v,S,D,j,dt,Gt,Lt,Wt],styles:[".item[_ngcontent-%COMP%]{display:flex;justify-content:space-between;gap:10px;padding:6px 0;align-items:center}.k[_ngcontent-%COMP%]{opacity:.7;width:90px;font-size:14px}.v[_ngcontent-%COMP%]{text-align:right;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mono[_ngcontent-%COMP%]{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;word-break:break-all}.sep[_ngcontent-%COMP%]{height:1px;background:#0000000f;margin:10px 0}.tag[_ngcontent-%COMP%]{margin-top:8px;text-align:right}.warn[_ngcontent-%COMP%]{margin-top:10px;font-size:12px;color:#d46b08}"],changeDetection:0})};function In(o,n){o&1&&c(0,"nz-empty",6)}function Bn(o,n){if(o&1&&(r(0,"nz-tag",17),l(1),Nt(2,"titlecase"),a()),o&2){let e=d().$implicit,t=bt(4);g("nzColor",t==="angular"?"#dd0031":t==="vue"?"#42b883":"#108ee9"),s(),se(" ",Ft(2,2,e.kind)," ")}}function Vn(o,n){if(o&1&&(r(0,"div",14)(1,"div",15)(2,"div",16),l(3),a(),Et(4),y(5,Bn,3,4,"nz-tag",17),a()()),o&2){let e=n.$implicit;g("nzValue",e.path),s(2),g("nz-tooltip",e.path),s(),b(e.path),s();let t=jt(e.kind);s(),x(t?5:-1)}}function An(o,n){if(o&1){let e=z();r(0,"nz-radio-group",13),T("ngModelChange",function(i){u(e);let p=d();return k(p.selectedPath,i)||(p.selectedPath=i),f(i)}),ae(1,Vn,6,5,"div",14,Pt),a()}if(o&2){let e=d();w("ngModel",e.selectedPath),s(),pe(e.filtered())}}var Ge=class o{constructor(n){this.modalRef=n}data=C(Se);keyword=B("");selectedPath=B(null);ngOnInit(){let{candidates:n,defaultPicked:e}=this.data,t=e&&n.includes(e)?e:n[0]??"";this.selectedPath.set(t?.path??null)}filtered=A(()=>{let n=(this.keyword()||"").trim().toLowerCase(),e=this.data.candidates??[];return n?e.filter(t=>t.path.toLowerCase().includes(n)):e});cancel(){this.modalRef.close(null)}ok(){let n=this.selectedPath();n&&this.modalRef.close({pickedRoot:n})}static \u0275fac=function(e){return new(e||o)(we(Ee))};static \u0275cmp=M({type:o,selectors:[["app-pick-workspace-modal"]],decls:17,vars:3,consts:[[1,"wrap"],[1,"hint"],[1,"toolbar"],["nz-input","","placeholder","\u8FC7\u6EE4\u8DEF\u5F84\uFF08\u5173\u952E\u5B57\uFF09",3,"ngModelChange","ngModel"],["nzType","search","nzTheme","outline","nzSuffix",""],[1,"list"],["nzNotFoundContent","\u6CA1\u6709\u5339\u914D\u7684\u76EE\u5F55"],["nzSize","large",3,"ngModel"],[1,"actions"],["nz-button","",3,"click"],["nzType","close","nzTheme","outline"],["nz-button","","nzType","primary",3,"click","disabled"],["nzType","check","nzTheme","outline"],["nzSize","large",3,"ngModelChange","ngModel"],["nz-radio","",1,"item",3,"nzValue"],[1,"path"],["nzTooltipPlacement","top",1,"value",3,"nz-tooltip"],["nzMode","default",3,"nzColor"]],template:function(e,t){e&1&&(r(0,"div",0)(1,"div",1),l(2," \u68C0\u6D4B\u5230\u8BE5\u4ED3\u5E93\u53EF\u80FD\u5305\u542B\u591A\u4E2A\u524D\u7AEF\u5DE5\u4F5C\u533A\uFF08Angular / Vue \u7B49\uFF09\u3002\u8BF7\u9009\u62E9\u4E00\u4E2A\u76EE\u5F55\u7EE7\u7EED\u5BFC\u5165\uFF1A "),a(),r(3,"div",2)(4,"nz-input-wrapper")(5,"input",3),T("ngModelChange",function(p){return k(t.keyword,p)||(t.keyword=p),p}),a(),c(6,"nz-icon",4),a()(),r(7,"div",5),y(8,In,1,0,"nz-empty",6)(9,An,3,1,"nz-radio-group",7),a(),r(10,"div",8)(11,"button",9),m("click",function(){return t.cancel()}),c(12,"nz-icon",10),l(13," \u53D6\u6D88 "),a(),r(14,"button",11),m("click",function(){return t.ok()}),c(15,"nz-icon",12),l(16," \u9009\u4E2D\u5E76\u7EE7\u7EED "),a()()()),e&2&&(s(5),w("ngModel",t.keyword),s(3),x(t.filtered().length===0?8:9),s(6),g("disabled",!t.selectedPath()))},dependencies:[h,E,Y,U,q,ee,Q,K,ce,de,Oe,Fe,S,D,j,H,P,v,De,be,ue,Ie,ne,te,Vt],styles:[".wrap[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:12px}.hint[_ngcontent-%COMP%]{opacity:.85}.toolbar[_ngcontent-%COMP%]{margin-top:4px}nz-radio-group[_ngcontent-%COMP%]{width:100%}.list[_ngcontent-%COMP%]{height:240px;overflow:auto;padding:8px;border:var(--app-border-color);border-radius:8px}.item[_ngcontent-%COMP%]{display:flex;gap:8px;padding:12px;border-radius:8px;margin:0;width:100%}.item[_ngcontent-%COMP%]:hover{background-color:var(--app-primary-3)}.item[_ngcontent-%COMP%] .ant-radio+span{display:flex;gap:12px;align-items:center;flex:1 1 auto;width:0;padding:0}.path[_ngcontent-%COMP%]{display:flex;gap:12px;flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap;width:0;overflow:hidden}.path[_ngcontent-%COMP%] .value[_ngcontent-%COMP%]{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;text-overflow:ellipsis;white-space:nowrap;flex:1 1 auto;width:0;overflow:hidden}.actions[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}"]})};function Wn(o,n){o&1&&(r(0,"span",4),l(1,"\u8BE5\u8DEF\u5F84\u5DF2\u5B58\u5728"),a())}function Ln(o,n){if(o&1){let e=z();r(0,"input",15),T("ngModelChange",function(i){u(e);let p=d();return k(p.draft.initialCommitMessage,i)||(p.draft.initialCommitMessage=i),f(i)}),a()}if(o&2){let e=d();w("ngModel",e.draft.initialCommitMessage)}}var Qe=class o{draft;draftChange=new F;pathCheck$=new ve;pathExists=!1;fsApi=C(mn);ngOnInit(){this.computeRootPath(),this.pathCheck$.pipe(Ct(200),_t(),ht(n=>n?this.fsApi.pathExists(n):gt(!1))).subscribe(n=>{this.emit(),this.pathExists=n})}recalcRoot(){this.computeRootPath(),this.pathCheck$.next(this.draft.rootPath)}computeRootPath(){let n=(this.draft.parentDir??"").replace(/[\\/]+$/,""),e=(this.draft.name??"").trim();this.draft.rootPath=n&&e?`${n}/${e}`.replaceAll("\\","/"):n}emit(){this.draftChange.emit(J({},this.draft))}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=M({type:o,selectors:[["app-step-basic"]],inputs:{draft:"draft"},outputs:{draftChange:"draftChange"},decls:40,vars:8,consts:[["nzTitle","\u57FA\u7840\u8BBE\u7F6E"],["nz-form","","nzLayout","vertical"],["nz-input","","name","name","placeholder","\u8F93\u5165\u9879\u76EE\u540D",3,"ngModelChange","ngModel"],[1,"hint"],[2,"margin-left","8px","color","#ff4d4f"],["name","pm",3,"ngModelChange","ngModel"],["nzValue","auto","nzLabel","\u9ED8\u8BA4"],["nzValue","npm","nzLabel","npm"],["nzValue","pnpm","nzLabel","pnpm"],["nzValue","yarn","nzLabel","yarn"],[1,"switch-row"],["name","overwrite",3,"ngModelChange","ngModel"],["name","skip",3,"ngModelChange","ngModel"],["name","initGit",3,"ngModelChange","ngModel"],["nz-input","","name","msg","placeholder","\u8986\u76D6\u63D0\u4EA4\u4FE1\u606F(\u9009\u586B)",3,"ngModel"],["nz-input","","name","msg","placeholder","\u8986\u76D6\u63D0\u4EA4\u4FE1\u606F(\u9009\u586B)",3,"ngModelChange","ngModel"]],template:function(e,t){e&1&&(r(0,"nz-card",0)(1,"form",1)(2,"nz-form-item")(3,"nz-form-label"),l(4,"\u9879\u76EE\u6587\u4EF6\u5939"),a(),r(5,"nz-form-control")(6,"input",2),T("ngModelChange",function(p){return k(t.draft.name,p)||(t.draft.name=p),p}),m("ngModelChange",function(){return t.recalcRoot()}),a(),r(7,"div",3),l(8),y(9,Wn,2,0,"span",4),a()()(),r(10,"nz-form-item")(11,"nz-form-label"),l(12,"\u5305\u7BA1\u7406\u5668"),a(),r(13,"nz-form-control")(14,"nz-select",5),T("ngModelChange",function(p){return k(t.draft.packageManager,p)||(t.draft.packageManager=p),p}),c(15,"nz-option",6)(16,"nz-option",7)(17,"nz-option",8)(18,"nz-option",9),a()()(),r(19,"nz-form-item")(20,"nz-form-label"),l(21,"\u66F4\u591A\u9009\u9879"),a(),r(22,"nz-form-control")(23,"div",10)(24,"span"),l(25,"\u82E5\u76EE\u6807\u6587\u4EF6\u5939\u5DF2\u5B58\u5728\u5219\u8986\u76D6"),a(),r(26,"nz-switch",11),T("ngModelChange",function(p){return k(t.draft.overwriteIfExists,p)||(t.draft.overwriteIfExists=p),p}),m("ngModelChange",function(){return t.emit()}),a()(),r(27,"div",10)(28,"span"),l(29,"\u65E0\u65B0\u624B\u6307\u5F15\u7684\u811A\u624B\u67B6\u9879\u76EE"),a(),r(30,"nz-switch",12),T("ngModelChange",function(p){return k(t.draft.skipOnboarding,p)||(t.draft.skipOnboarding=p),p}),a()()()(),r(31,"nz-form-item")(32,"nz-form-label"),l(33,"Git"),a(),r(34,"nz-form-control")(35,"div",10)(36,"span"),l(37,"\u521D\u59CB\u5316 git \u4ED3\u5E93\uFF08\u5EFA\u8BAE\uFF09"),a(),r(38,"nz-switch",13),T("ngModelChange",function(p){return k(t.draft.initGit,p)||(t.draft.initGit=p),p}),a()(),y(39,Ln,1,1,"input",14),a()()()()),e&2&&(s(6),w("ngModel",t.draft.name),s(2),se(" ",t.draft.rootPath," "),s(),x(t.pathExists?9:-1),s(5),w("ngModel",t.draft.packageManager),s(12),w("ngModel",t.draft.overwriteIfExists),s(4),w("ngModel",t.draft.skipOnboarding),s(8),w("ngModel",t.draft.initGit),s(),x(t.draft.initGit?39:-1))},dependencies:[h,E,Qt,Y,U,Ut,q,qt,hn,G,L,Cn,gn,zn,_n,Q,K,S,Ne,Kt,Xt,fe,Be,I,Z,ne,P,ee],styles:[".hint[_ngcontent-%COMP%]{margin-top:6px;font-size:12px;opacity:.7}.switch-row[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding-bottom:4px}.switch-row[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:14px}.emit[_ngcontent-%COMP%]{margin-top:8px}"]})};var Je=class o{draft;draftChange=new F;emit(){this.draftChange.emit(J({},this.draft))}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=M({type:o,selectors:[["app-step-config"]],inputs:{draft:"draft"},outputs:{draftChange:"draftChange"},decls:12,vars:2,consts:[["nzTitle","\u521B\u5EFA\u540E\u9ED8\u8BA4\u884C\u4E3A"],[1,"row"],[1,"label"],[3,"ngModelChange","ngModel"],[1,"row","col"],["nz-input","","placeholder","\u4F8B\u5982\uFF1Adev / start",3,"ngModelChange","ngModel"],[1,"hint"]],template:function(e,t){e&1&&(r(0,"nz-card",0)(1,"div",1)(2,"div",2),l(3,"\u7F6E\u9876\u6536\u85CF"),a(),r(4,"nz-switch",3),T("ngModelChange",function(p){return k(t.draft.pinFavorite,p)||(t.draft.pinFavorite=p),p}),m("ngModelChange",function(){return t.emit()}),a()(),c(5,"div",4),r(6,"div",4)(7,"div",2),l(8,"\u9ED8\u8BA4\u4EFB\u52A1\uFF08\u53EF\u9009\uFF09"),a(),r(9,"input",5),T("ngModelChange",function(p){return k(t.draft.defaultTaskName,p)||(t.draft.defaultTaskName=p),p}),m("ngModelChange",function(){return t.emit()}),a(),r(10,"div",6),l(11,"\u5EFA\u8BAE\u586B\u8BC6\u522B\u5230\u7684 dev \u6216 start"),a()()()),e&2&&(s(4),w("ngModel",t.draft.pinFavorite),s(5),w("ngModel",t.draft.defaultTaskName))},dependencies:[h,E,Y,U,q,I,Z,de,fe,Be,Q,K],styles:[".row[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:10px 0}.row.col[_ngcontent-%COMP%]{flex-direction:column;align-items:flex-start;gap:8px}.label[_ngcontent-%COMP%]{font-weight:500}.hint[_ngcontent-%COMP%]{font-size:12px;opacity:.7}"]})};var He=class o{draft;draftChange=new F;emit(){this.draftChange.emit(J({},this.draft))}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=M({type:o,selectors:[["app-step-features"]],inputs:{draft:"draft"},outputs:{draftChange:"draftChange"},decls:1,vars:0,consts:[["nzTitle","\u529F\u80FD\u5F00\u5173\uFF08Project Scope\uFF09"]],template:function(e,t){e&1&&c(0,"nz-card",0)},dependencies:[h,E,I,Z,fe],styles:[".row[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:10px 0}.label[_ngcontent-%COMP%]{font-weight:500}"]})};var Ze=class o{nzModalData=C(Se);isModalVisible=!1;isSaving=!1;static \u0275fac=function(e){return new(e||o)};static \u0275cmp=M({type:o,selectors:[["app-git-import-modal-component"]],decls:8,vars:1,consts:[[1,"modal-body"],[1,"label"],["nz-input","","placeholder","\u8BF7\u8F93\u5165Git\u4ED3\u5E93\u5730\u5740","autofocus","",3,"ngModelChange","ngModel"],["nzInputPrefix","","nzType","github","nzTheme","outline"],[1,"hint"]],template:function(e,t){e&1&&(r(0,"div",0)(1,"label",1),l(2,"URL"),a(),r(3,"nz-input-wrapper")(4,"input",2),T("ngModelChange",function(p){return k(t.nzModalData.cloneUrl,p)||(t.nzModalData.cloneUrl=p),p}),a(),c(5,"nz-icon",3),a(),r(6,"div",4),l(7," Git \u4ED3\u5E93\u5730\u5740, \u5982 'username/repo'. \u53EF\u4EE5\u4F7F\u7528\u524D\u7F00\u5982 'gitlab:' \u6216 'bitbucket:'. "),a()()),e&2&&(s(4),w("ngModel",t.nzModalData.cloneUrl))},dependencies:[h,E,Y,U,q,P,v,ee,Q,K,ce,je,Ne,S,j],styles:[".hint[_ngcontent-%COMP%]{margin-top:6px;font-size:12px;opacity:.7}"]})};function Gn(o,n){if(o&1){let e=z();r(0,"button",10),m("click",function(){u(e);let i=d();return f(i.requestDetect.emit())}),c(1,"nz-icon",11),a()}}var $e=class o{draft;draftChange=new F;requestDetect=new F;modal=C(le);emit(){this.draftChange.emit(J({},this.draft))}presetChange(n){if(this.draft.preset=n,n==="git"){this.openImportGitModal();return}else this.draft.repoUrl=void 0,this.emit()}openImportGitModal(){let n=this.modal.create({nzTitle:"\u4ECE Git \u4ED3\u5E93\u5BFC\u5165\u9879\u76EE",nzMaskClosable:!1,nzContent:Ze,nzCentered:!0,nzWidth:"580px",nzClosable:!1,nzData:{cloneUrl:"",isSaving:!1},nzFooter:[{label:"\u53D6\u6D88",type:"default",onClick:()=>{n.close(),this.draft.repoUrl=void 0,this.draft.preset="angular",this.emit()}},{label:"\u5BFC\u5165",type:"primary",onClick:e=>{let t=e.nzModalData.cloneUrl,i=e.nzModalData.isSaving;!t||!t.trim()||i||(e.nzModalData.isSaving=!0,this.draft.repoUrl=t.trim(),e.nzModalData.isSaving=!1,this.emit(),n.close())},disabled:e=>{let t=e?.nzModalData.cloneUrl;return!t||!t.trim()},loading:e=>e?.nzModalData.isSaving===!0}]})}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=M({type:o,selectors:[["app-step-preset"]],inputs:{draft:"draft"},outputs:{draftChange:"draftChange",requestDetect:"requestDetect"},decls:19,vars:2,consts:[["reloadExtraTpl",""],["nzTitle","\u9009\u62E9\u4E00\u5957\u9884\u8BBE",3,"nzExtra"],["nzSize","large",3,"ngModelChange","ngModel"],["nz-radio","","nzValue","angular"],["for","angular"],[1,"hint"],["nz-radio","","nzValue","vue3"],["for","vue3"],["nz-radio","","nzValue","git"],["for","git"],["nz-button","","nzType","text","nzSize","small",3,"click"],["nzType","reload","nzTheme","outline"]],template:function(e,t){if(e&1){let i=z();r(0,"nz-card",1),O(1,Gn,2,0,"ng-template",null,0,W),r(3,"nz-radio-group",2),T("ngModelChange",function(_){return u(i),k(t.draft.preset,_)||(t.draft.preset=_),f(_)}),m("ngModelChange",function(_){return u(i),f(t.presetChange(_))}),r(4,"div",3)(5,"label",4),l(6,"Angular"),a(),r(7,"div",5),l(8," \u9002\u7528\u4E8E\u4F7F\u7528 Angular \u6846\u67B6\u5F00\u53D1\u7684\u9879\u76EE\uFF0C\u652F\u6301 Angular CLI \u76F8\u5173\u4EFB\u52A1\u548C\u914D\u7F6E\u3002 "),a()(),r(9,"div",6)(10,"label",7),l(11,"Vue 3"),a(),r(12,"div",5),l(13," \u9002\u7528\u4E8E\u4F7F\u7528 Vue 3 \u6846\u67B6\u5F00\u53D1\u7684\u9879\u76EE\uFF0C\u652F\u6301 Vite \u548C Vue CLI \u76F8\u5173\u4EFB\u52A1\u548C\u914D\u7F6E\u3002 "),a()(),r(14,"div",8)(15,"label",9),l(16,"Git\u5BFC\u5165"),a(),r(17,"div",5),l(18," \u4ECE\u73B0\u6709\u7684 Git \u4ED3\u5E93\u5BFC\u5165\u9879\u76EE\uFF0C\u81EA\u52A8\u8BC6\u522B\u9879\u76EE\u7ED3\u6784\u548C\u914D\u7F6E\u3002 "),a()()()()}if(e&2){let i=V(2);g("nzExtra",i),s(3),w("ngModel",t.draft.preset)}},dependencies:[h,E,U,q,I,Z,nn,S,D,j,ue,P,v,de,Oe,Fe],styles:[".kv[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr 1fr;gap:8px 12px}.k[_ngcontent-%COMP%]{opacity:.7;display:inline-block;width:120px}.opt[_ngcontent-%COMP%]{margin-top:10px}nz-radio-group[_ngcontent-%COMP%]{width:100%}[nz-radio][_ngcontent-%COMP%]{display:block;padding:12px;border-radius:8px;width:100%;margin:0}[nz-radio][_ngcontent-%COMP%]:hover{background-color:var(--app-primary-3)}.hint[_ngcontent-%COMP%]{margin-left:24px;font-size:12px;opacity:.75}"]})};function Pn(){return{preset:"angular",name:"",parentDir:"",rootPath:"",packageManager:"auto",overwriteIfExists:!1,skipOnboarding:!0,initGit:!0,initialCommitMessage:"",importScriptsAsTasks:!0,importMakefileTasks:!1,importDockerComposeTasks:!1,generateCommonTasks:!0,pinFavorite:!1,defaultTaskName:"",cliFramework:"angular",cliTool:"@angular/cli",cliArgs:[]}}function Un(o,n){if(o&1){let e=z();r(0,"app-step-basic",16),m("draftChange",function(i){u(e);let p=d();return f(p.setDraft(i))}),a()}if(o&2){let e=d();g("draft",e.draft())}}function qn(o,n){if(o&1){let e=z();r(0,"app-step-preset",17),m("draftChange",function(i){u(e);let p=d();return f(p.setDraft(i))})("requestDetect",function(){u(e);let i=d();return f(i.detectNow())}),a()}if(o&2){let e=d();g("draft",e.draft())}}function Qn(o,n){if(o&1){let e=z();r(0,"app-step-features",16),m("draftChange",function(i){u(e);let p=d();return f(p.setDraft(i))}),a()}if(o&2){let e=d();g("draft",e.draft())}}function Jn(o,n){if(o&1){let e=z();r(0,"app-step-config",16),m("draftChange",function(i){u(e);let p=d();return f(p.setDraft(i))}),a()}if(o&2){let e=d();g("draft",e.draft())}}function Hn(o,n){if(o&1){let e=z();r(0,"button",18),m("click",function(){u(e);let i=d();return f(i.cancel())}),c(1,"nz-icon",19),l(2," \u53D6\u6D88 "),a()}}function Zn(o,n){if(o&1){let e=z();r(0,"button",18),m("click",function(){u(e);let i=d();return f(i.prev())}),c(1,"nz-icon",20),l(2," \u4E0A\u4E00\u6B65 "),a()}}function $n(o,n){if(o&1){let e=z();r(0,"button",21),m("click",function(){u(e);let i=d();return f(i.create())}),c(1,"nz-icon",22),l(2," \u521B\u5EFA\u9879\u76EE "),a()}if(o&2){let e=d();g("disabled",e.creating())}}function Yn(o,n){if(o&1){let e=z();r(0,"button",21),m("click",function(){u(e);let i=d();return f(i.next())}),l(1," \u4E0B\u4E00\u6B65 "),c(2,"nz-icon",23),a()}if(o&2){let e=d();g("disabled",!e.canNext()||!e.canGoNext())}}var Ye=class o{step=B(0);draft=B(Pn());creating=B(!1);output=B("");isDrawerOpen=B(!1);fs=C(Ve);parentDir=this.fs.currentPath();modalRef=C(Ee);api=C(Re);modal=C(le);notify=C(me);taskStream=C($t);projectState=C(oe);router=C(Te);sub=new ft;ngOnInit(){let n=this.draft(),e=this.parentDir;this.draft.set(at(J({},n),{rootPath:"",parentDir:e,name:""}))}detectNow(){let n=this.draft();n.rootPath?.trim()&&this.api.detect(n.rootPath).subscribe(e=>{let t=e.scripts??[],i={framework:e.framework??"unknown",hasPackageJson:!!e.hasPackageJson,scriptsCount:t.length,hasGit:!!e.hasGit,lockFile:e.lockFile??"unknown",recommendedScript:t.includes("dev")?"dev":t.includes("start")?"start":"",hasMakefile:!!e.hasMakefile,hasDockerCompose:!!e.hasDockerCompose},p=t.length>0,_=!!e.hasMakefile,Pe=!!e.hasDockerCompose;this.draft.set(at(J({},n),{detected:i,importScriptsAsTasks:p,importMakefileTasks:_&&n.importMakefileTasks,importDockerComposeTasks:Pe&&n.importDockerComposeTasks,defaultTaskName:i.recommendedScript||n.defaultTaskName}))})}async create(){let n=this.draft();if(!n.rootPath?.trim()||!n.name?.trim()){this.notify.error("\u8BF7\u5148\u5B8C\u5584\u9879\u76EE\u4FE1\u606F");return}if(this.creating())return;let e="\u786E\u8BA4\u521B\u5EFA\u9879\u76EE\uFF1F",t=`\u8BF7\u786E\u8BA4\u76EE\u6807\u8DEF\u5F84 ${n.rootPath}\uFF0C\u786E\u5B9A\u8981\u521B\u5EFA\u8BE5\u9879\u76EE\u5417\uFF1F`,i="\u786E\u8BA4\u521B\u5EFA",p=!1;n.overwriteIfExists&&(e="\u786E\u8BA4\u8986\u76D6\u5DF2\u5B58\u5728\u7684\u9879\u76EE\uFF1F",t=`\u8BF7\u786E\u8BA4\u76EE\u6807\u8DEF\u5F84 ${n.rootPath}\uFF0C\u521B\u5EFA\u65F6\u4F1A\u8986\u76D6\u539F\u6709\u6570\u636E\uFF0C\u4E14\u4E0D\u53EF\u6062\u590D\uFF0C\u786E\u5B9A\u8981\u7EE7\u7EED\u5417\uFF1F`,i="\u786E\u8BA4\u8986\u76D6",p=!0);let _=this.modal.confirm({nzTitle:e,nzContent:t,nzOkText:i,nzCancelText:"\u53D6\u6D88",nzOkDanger:p,nzCentered:!0,nzOnOk:async()=>{this.doCreate(n),_.close()}})}async doCreate(n){this.creating.set(!0),this.taskStream.ensureConnected();let e=new ve;try{let t=n.preset==="git"?this.api.bootstrapByGit(n):this.api.bootstrapByCli(n),{taskId:i}=await _e(t);this.taskStream.subscribeTask(i,3e3),this.sub.add(this.taskStream.output$(i).subscribe(Ce=>{let xn=Ce.payload.text??"";this.output.set(xn)}));let p=await this.waitForTaskEvent(i,["bootstrapDone","bootstrapFailed","bootstrapNeedPickRoot"],600*1e3,e);if(p.type==="bootstrapDone"){let Ce=p.payload;this.notify.success("\u9879\u76EE\u521B\u5EFA\u5B8C\u6210"),this.projectState.getProjects(Ce.projectId),this.modalRef.close({ok:!0}),this.router.navigate(["/dashboard"]);return}if(p.type==="bootstrapFailed"){let Ce=p.payload;this.notify.error(`\u9879\u76EE\u521B\u5EFA\u5931\u8D25\uFF1A${Ce?.reason??"unknown error"}`);return}let Pe=p.payload?.candidates??[];if(!Pe.length){this.notify.error("\u9879\u76EE\u5BFC\u5165\u5931\u8D25\uFF1A\u672A\u627E\u5230\u53EF\u5BFC\u5165\u7684\u5DE5\u4F5C\u533A\u76EE\u5F55");return}let ut=await this.pickWorkspaceRootByModal(Pe);if(!ut){this.modal.info({nzTitle:"\u63D0\u793A",nzContent:"\u60A8\u672A\u9009\u62E9\u4EFB\u4F55\u76EE\u5F55\uFF0C\u9879\u76EE\u5BFC\u5165\u5DF2\u53D6\u6D88\u3002\u53EF\u901A\u8FC7\u201C\u5BFC\u5165\u201D\u529F\u80FD\u91CD\u65B0\u624B\u52A8\u5BFC\u5165\u3002",nzCancelText:null,nzOkText:"\u6211\u77E5\u9053\u4E86",nzOnOk:()=>{this.modalRef.close()}});return}let rt=await _e(this.api.bootstrapPickRoot({taskId:i,pickedRoot:ut}).pipe(pt(60*1e3),lt(e)));if(!rt.ok){this.notify.error(rt.reason??"\u9879\u76EE\u5BFC\u5165\u5931\u8D25");return}this.notify.success("\u9879\u76EE\u5BFC\u5165\u5B8C\u6210"),this.projectState.getProjects(rt.projectId),this.modalRef.close({ok:!0}),this.router.navigate(["/dashboard"])}catch(t){let i=t?.name==="TimeoutError"?"\u521B\u5EFA\u8D85\u65F6\uFF1A\u811A\u624B\u67B6/\u514B\u9686\u53EF\u80FD\u5361\u4F4F\u4E86\uFF0C\u8BF7\u67E5\u770B\u4EFB\u52A1\u65E5\u5FD7":t?.error?.message||t?.message||"\u521B\u5EFA\u5931\u8D25";console.error("\u521B\u5EFA\u9879\u76EE\u5931\u8D25",t),this.notify.error(i)}finally{e.next(),e.complete(),this.creating.set(!1)}}async waitForTaskEvent(n,e,t,i){let p=new Set(e);return await _e(this.taskStream.events$().pipe(st(_=>_?.payload?.taskId===n),st(_=>p.has(_.type)),zt(),pt(t),lt(i)))}setDraft(n){this.draft.set(n)}canNext(){let n=this.step(),e=this.draft();return n===0?!(!e.name?.trim()||!e.parentDir?.trim()||!e.rootPath?.trim()):n===1?!!e.rootPath?.trim():!0}async next(){let n=this.step();if(n===0&&await this.api.checkPathExists(this.draft().rootPath)&&!this.draft().overwriteIfExists){this.notify.error("\u8BE5\u8DEF\u5F84\u4E0D\u53EF\u7528\u6216\u5DF2\u5B58\u5728\u91CD\u590D\u9879\u76EE");return}let e=Math.min(3,n+1);this.step.set(e)}prev(){this.step.set(Math.max(0,this.step()-1))}canGoNext(){let n=this.step();return n===0?!0:n===1?this.isManual():n===2}isManual(){return this.draft().preset==="manual"}canCreateHere(){let n=this.step();return this.isManual()&&n===3||!this.isManual()&&n===1}cancel(){this.modal.confirm({nzTitle:"\u53D6\u6D88\u521B\u5EFA\u9879\u76EE",nzContent:"\u786E\u5B9A\u8981\u53D6\u6D88\u521B\u5EFA\u5417",nzOkDanger:!0,nzOkText:"\u53D6\u6D88\u521B\u5EFA",nzCancelText:"\u4E0D",nzCentered:!0,nzOnOk:()=>{this.modalRef.close()}})}async pickWorkspaceRootByModal(n){let e=this.modal.create({nzTitle:"\u9009\u62E9\u8981\u5BFC\u5165\u7684\u5DE5\u4F5C\u533A\u76EE\u5F55",nzContent:Ge,nzData:{candidates:n,defaultPicked:n[0]},nzFooter:null,nzCentered:!0,nzMaskClosable:!1,nzClosable:!0,nzWidth:720});return(await _e(e.afterClose))?.pickedRoot??null}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=M({type:o,selectors:[["app-project-create-modal"]],decls:21,vars:9,consts:[["nz-row","","nzJustify","start"],["nz-col","","nzSpan","24"],[3,"nzCurrent"],["nzTitle","\u8BE6\u60C5"],["nzTitle","\u9884\u8BBE"],["nzTitle","\u529F\u80FD"],["nzTitle","\u914D\u7F6E"],[1,"content"],["nzTip","\u6B63\u5728\u521B\u5EFA\u9879\u76EE...",3,"nzSpinning"],[1,"main"],[3,"draft"],[1,"actions"],["nz-button",""],["nz-button","","nzType","primary",3,"disabled"],[1,"aside"],[3,"isCreatingChange","draft","isCreating","chunk"],[3,"draftChange","draft"],[3,"draftChange","requestDetect","draft"],["nz-button","",3,"click"],["nzType","close","nzTheme","outline"],["nzType","arrow-left","nzTheme","outline"],["nz-button","","nzType","primary",3,"click","disabled"],["nzType","check","nzTheme","outline"],["nzType","arrow-right","nzTheme","outline"]],template:function(e,t){if(e&1&&(r(0,"div",0)(1,"div",1)(2,"nz-steps",2),c(3,"nz-step",3)(4,"nz-step",4)(5,"nz-step",5)(6,"nz-step",6),a(),r(7,"div",7)(8,"nz-spin",8)(9,"div",9),y(10,Un,1,1,"app-step-basic",10)(11,qn,1,1,"app-step-preset",10)(12,Qn,1,1,"app-step-features",10)(13,Jn,1,1,"app-step-config",10),r(14,"div",11),y(15,Hn,3,0,"button",12),y(16,Zn,3,0,"button",12),y(17,$n,3,1,"button",13)(18,Yn,3,1,"button",13),a()()(),r(19,"div",14)(20,"app-create-summary-aside",15),T("isCreatingChange",function(p){return k(t.creating,p)||(t.creating=p),p}),a()()()()()),e&2){let i;s(2),g("nzCurrent",t.step()),s(6),g("nzSpinning",t.creating()),s(2),x((i=t.step())===0?10:i===1?11:i===2?12:i===3?13:-1),s(5),x(t.step()===0?15:-1),s(),x(t.step()>0?16:-1),s(),x(t.canCreateHere()?17:18),s(3),g("draft",t.draft()),w("isCreating",t.creating),g("chunk",t.output())}},dependencies:[h,E,ee,I,$,G,L,fn,un,dn,S,D,j,H,Q,P,v,rn,on,Qe,$e,He,Je,We],styles:[".content[_ngcontent-%COMP%]{display:grid;grid-template-columns:1fr 360px;gap:16px;margin-top:16px}.main[_ngcontent-%COMP%]{min-height:420px}.actions[_ngcontent-%COMP%]{display:flex;gap:8px;justify-content:flex-end;margin-top:18px}.aside[_ngcontent-%COMP%]{position:sticky;top:16px;height:fit-content}"]})};var Ke=class o{constructor(n){this.modal=n}goCreate(){let n=this.modal.create({nzTitle:"\u521B\u5EFA\u65B0\u9879\u76EE",nzFooter:null,nzMaskClosable:!1,nzClosable:!1,nzContent:Ye,nzWidth:"1020px",nzCentered:!0}),e=n.getContentComponent();n.afterClose.subscribe(t=>{t?.ok})}static \u0275fac=function(e){return new(e||o)(we(le))};static \u0275cmp=M({type:o,selectors:[["app-project-create"]],decls:7,vars:0,consts:[["nz-row","",1,"page"],["nz-col","","nzSpan","16","nzOffset","4",1,"explorer-container"],[1,"actions-bar"],["nz-button","","nzType","primary","nzSize","large",3,"click"],["nzType","plus","nzTheme","outline"]],template:function(e,t){e&1&&(r(0,"div",0)(1,"div",1),c(2,"app-fs-explorer"),a(),r(3,"div",2)(4,"button",3),m("click",function(){return t.goCreate()}),c(5,"nz-icon",4),l(6," \u5728\u6B64\u521B\u5EFA\u65B0\u9879\u76EE "),a()()())},dependencies:[h,S,D,j,H,$,G,L,Ae,P,v],styles:[".page[_ngcontent-%COMP%]{width:100%;height:100%;display:flex;flex-direction:column}.page[_ngcontent-%COMP%] .explorer-container[_ngcontent-%COMP%]{flex:1 1 auto;height:0}.page[_ngcontent-%COMP%] .actions-bar[_ngcontent-%COMP%]{flex:0 0 auto;padding:16px;display:flex;justify-content:center;align-items:center}"]})};var ge=class o{fs=C(Ve);projectApi=C(Re);projectState=C(oe);active=B(!1);checking=B(!1);result=B(null);canImport=A(()=>this.result()?.ok===!0);warnings=A(()=>this.result()?.warnings??[]);reason=A(()=>this.result()?.reason??"");currentPath=A(()=>this.fs.currentPath()||this.fs.path());_seq=0;notify=C(me);constructor(){Ot(()=>{if(!this.active())return;let n=this.currentPath();n&&this.check(n)})}enter(){this.active.set(!0)}leave(){this.active.set(!1),this.result.set(null)}check(n){let e=++this._seq;this.checking.set(!0),this.result.set(null),this.projectApi.checkImport(n).subscribe({next:t=>{e===this._seq&&this.result.set(t)},error:t=>{e===this._seq&&this.result.set({ok:!1,root:n,reason:t?.message||"check failed"})},complete:()=>{e===this._seq&&this.checking.set(!1)}})}import(n){let e=this.currentPath();if(!e||!this.canImport())return;let t=e.replace(/[\\\/]+$/,"").split(/[\\\/]/).pop()||"New Project";this.projectApi.importByPath({root:e,name:n||t,syncTasks:!0}).subscribe({next:i=>{this.projectState.getProjects(),this.projectState.setCurrentProjectById(i.id),this.check(e),this.notify.success("\u9879\u76EE\u5BFC\u5165\u6210\u529F")}})}static \u0275fac=function(e){return new(e||o)};static \u0275prov=Mt({token:o,factory:o.\u0275fac,providedIn:"root"})};var Xe=class o{importState=C(ge);static \u0275fac=function(e){return new(e||o)};static \u0275cmp=M({type:o,selectors:[["app-project-import"]],decls:7,vars:1,consts:[["nz-row","",1,"page"],["nz-col","","nzSpan","16","nzOffset","4",1,"explorer-container"],[1,"actions-bar","center"],["nz-button","","nzSize","large","nzType","primary",3,"click","disabled"],["nzType","import","nzTheme","outline"]],template:function(e,t){e&1&&(r(0,"div",0)(1,"div",1),c(2,"app-fs-explorer"),a(),r(3,"div",2)(4,"button",3),m("click",function(){return t.importState.import()}),c(5,"nz-icon",4),l(6," \u5BFC\u5165\u8FD9\u4E2A\u6587\u4EF6\u5939 "),a()()()),e&2&&(s(4),g("disabled",t.importState.checking()||!t.importState.canImport()))},dependencies:[h,E,$,G,L,S,D,j,H,P,v,Ae],styles:[".page[_ngcontent-%COMP%]{width:100%;height:100%;display:flex;flex-direction:column}.page[_ngcontent-%COMP%] .explorer-container[_ngcontent-%COMP%]{flex:1 1 auto;height:0}.page[_ngcontent-%COMP%] .actions-bar[_ngcontent-%COMP%]{flex:0 0 auto;padding:16px;display:flex;justify-content:center;align-items:center}"]})};var Kn=(o,n)=>n.spec.id;function Xn(o,n){if(o&1){let e=z();r(0,"div",8)(1,"div",9),m("click",function(){let i=u(e).$implicit,p=d();return f(p.openTask(i))}),r(2,"div",10),c(3,"nz-icon",11),a(),r(4,"div",12)(5,"div",13)(6,"span"),l(7),a()(),r(8,"div",14)(9,"span"),l(10),a()()()(),r(11,"button",15),m("click",function(i){let p=u(e).$implicit,_=d();return i.stopPropagation(),f(_.toggleTask(p))}),c(12,"nz-icon",16),a()()}if(o&2){let e=n.$implicit,t=d();g("nzTooltipTitle",t.getTaskDescription(e)),s(7),b(e.spec.name),s(3),b(t.getTaskDescription(e)),s(2),g("nzType",t.getTaskActionIcon(e))}}var et=class o{projectId;projectState=C(oe);router=C(Te);state=C(Yt);tasks=A(()=>this.projectId?this.state.rowsViewOf(this.projectId)():[]);async ngOnChanges(){this.projectId&&await this.state.ensureProjectLoaded(this.projectId)}toggleTask(n){n.runtime?.status==="running"?this.state.stopSelected():this.state.startSelected(),this.openTask(n)}async openTask(n){this.state.select(n.spec.id),await this.router.navigate(["/tasks"]),this.projectState.setCurrentProjectById(n.spec.projectId)}getTaskName(n){return n.spec.name||n.spec.id}getTaskDescription(n){let e=n.runtime?.status;return n.runtime?this.computedStatusText(e):n.spec.description||""}getTaskActionIcon(n){let e=n.runtime?.status;return e==="running"||e==="stopping"?"pause-circle":"play-circle"}computedStatusText(n){switch(n){case"running":return"\u8FD0\u884C\u4E2D";case"stopping":return"\u505C\u6B62\u4E2D";case"success":return"\u6210\u529F";case"failed":return"\u9519\u8BEF";case"stopped":return"\u5DF2\u505C\u6B62";default:return"\u7A7A\u95F2"}}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=M({type:o,selectors:[["app-project-item-popover"]],inputs:{projectId:"projectId"},features:[xe],decls:11,vars:0,consts:[[1,"dropdown-content"],[1,"pane-toolbar"],[1,"icon"],["nzType","inbox","nzTheme","outline"],[1,"title"],["nz-button","","type","button","nzType","text"],["nzType","close","nzTheme","outline"],[1,"tasks"],["nz-tooltip","","nzTooltipPlacement","right",1,"task-item",3,"nzTooltipTitle"],[1,"item-content",3,"click"],[1,"item-logo"],["nzType","code","nzTheme","outline"],[1,"list-item-info"],[1,"name"],[1,"description"],["nz-button","","nzType","text","type","button",3,"click"],["nzTheme","outline",3,"nzType"]],template:function(e,t){e&1&&(r(0,"div",0)(1,"div",1)(2,"div",2),c(3,"nz-icon",3),a(),r(4,"div",4),l(5,"\u4EFB\u52A1"),a(),r(6,"button",5),c(7,"nz-icon",6),a()(),r(8,"div",7),ae(9,Xn,13,4,"div",8,Kn),a()()),e&2&&(s(9),pe(t.tasks()))},dependencies:[h,P,v,S,D,j,ne,te,ze],styles:[".dropdown-content[_ngcontent-%COMP%]{display:flex;flex-direction:column}.dropdown-content[_ngcontent-%COMP%] .pane-toolbar[_ngcontent-%COMP%]{display:flex;flex-direction:row;align-items:center;padding:6px 6px 6px 16px}.dropdown-content[_ngcontent-%COMP%] .pane-toolbar[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]{flex:auto 0 0}.dropdown-content[_ngcontent-%COMP%] .pane-toolbar[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{font-size:18px;margin-right:6px}.dropdown-content[_ngcontent-%COMP%] .pane-toolbar[_ngcontent-%COMP%] .title[_ngcontent-%COMP%]{flex:100% 1 1;width:0;overflow:hidden;-ms-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap}.dropdown-content[_ngcontent-%COMP%] .tasks[_ngcontent-%COMP%]{width:320px;max-height:360px;overflow:hidden auto}.dropdown-content[_ngcontent-%COMP%] .tasks[_ngcontent-%COMP%] .task-item[_ngcontent-%COMP%]{padding:16px;display:flex;flex-direction:row;align-items:center}.dropdown-content[_ngcontent-%COMP%] .tasks[_ngcontent-%COMP%] .task-item[_ngcontent-%COMP%]:hover{background:#f5f5f5}.dropdown-content[_ngcontent-%COMP%] .tasks[_ngcontent-%COMP%] .task-item[_ngcontent-%COMP%] .item-content[_ngcontent-%COMP%]{display:flex;flex-direction:row;align-items:center;flex:100% 1 1;width:0;gap:16px;cursor:pointer}.dropdown-content[_ngcontent-%COMP%] .tasks[_ngcontent-%COMP%] .task-item[_ngcontent-%COMP%] .item-logo[_ngcontent-%COMP%]{font-size:42px;margin-right:16px;flex:auto 0 0;display:inline-flex;align-items:center}.dropdown-content[_ngcontent-%COMP%] .tasks[_ngcontent-%COMP%] .task-item[_ngcontent-%COMP%] .list-item-info[_ngcontent-%COMP%]{flex:100% 1 1;width:0;overflow:hidden;display:flex;flex-direction:column;align-items:stretch;justify-content:center}.dropdown-content[_ngcontent-%COMP%] .tasks[_ngcontent-%COMP%] .task-item[_ngcontent-%COMP%] .list-item-info[_ngcontent-%COMP%] .description[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dropdown-content[_ngcontent-%COMP%] .tasks[_ngcontent-%COMP%] .task-item[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{flex:auto 0 0}.dropdown-content[_ngcontent-%COMP%] .tasks[_ngcontent-%COMP%] .task-item[_ngcontent-%COMP%] button[_ngcontent-%COMP%] nz-icon[_ngcontent-%COMP%]{font-size:24px}"]})};function eo(o,n){if(o&1){let e=z();r(0,"button",20),m("click",function(){u(e);let i=d();return f(i.openPageUrl(i.project==null?null:i.project.repoPageUrl))}),c(1,"nz-icon",21),a()}}function to(o,n){if(o&1&&c(0,"app-project-item-popover",22),o&2){let e=d();g("projectId",e.project==null?null:e.project.id)}}var tt=class o{taskRuntime=C(Zt);notify=C(me);project=null;open=!1;selectProject=new F;toggleFavorite=new F;editProject=new F;openInEditor=new F;deleteProject=new F;tasksRunningCount=A(()=>{let n=this.project?.id?.trim();return n?this.taskRuntime.runningCountSignal(n)():0});hasTasksRunning=A(()=>this.tasksRunningCount()>0);taskBadgeTip=A(()=>{let n=this.tasksRunningCount();return n>0?`${n} \u4E2A\u4EFB\u52A1\u6B63\u5728\u8FD0\u884C`:"\u4EFB\u52A1"});del(){if(this.hasTasksRunning()){this.notify.warn("\u5F53\u524D\u9879\u76EE\u6709\u4EFB\u52A1\u6B63\u5728\u8FD0\u884C\uFF0C\u8BF7\u5148\u505C\u6B62\u8FD9\u4E9B\u4EFB\u52A1\u540E\u518D\u5220\u9664\u9879\u76EE\u3002");return}this.deleteProject.emit()}openPageUrl(n){n&&window.open(n,"_blank")}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=M({type:o,selectors:[["app-project-item"]],inputs:{project:"project",open:"open"},outputs:{selectProject:"selectProject",toggleFavorite:"toggleFavorite",editProject:"editProject",openInEditor:"openInEditor",deleteProject:"deleteProject"},decls:28,vars:10,consts:[["contentTemplate",""],["nz-row","",1,"project-item"],["nz-col","","nzSpan","24",1,"content"],[1,"favorite"],["nz-button","","nzType","primary",3,"click"],["nzType","star",3,"nzTheme"],[1,"info",3,"click"],[1,"list-item-info"],[1,"name"],["nz-popover","","nzPopoverTrigger","click","nzPopoverPlacement","right",1,"task-popover-trigger",3,"click","nzPopoverContent","nzPopoverOverlayClassName"],[3,"nzStatus","nz-tooltip"],[1,"root-path"],[1,"actions"],["nzSize","large"],["nzType","code","nzTheme","outline"],["nz-button","","nzType","primary","nz-tooltip","\u7F16\u8F91",3,"click"],["nzType","edit","nzTheme","outline"],["nz-button","","nzType","primary","nz-tooltip","\u6253\u5F00\u4ED3\u5E93\u5730\u5740"],["nz-button","","nzType","primary","nz-tooltip","\u5220\u9664",3,"click"],["nzType","delete","nzTheme","outline"],["nz-button","","nzType","primary","nz-tooltip","\u6253\u5F00\u4ED3\u5E93\u5730\u5740",3,"click"],["nzType","global","nzTheme","outline"],[3,"projectId"]],template:function(e,t){if(e&1){let i=z();r(0,"div",1)(1,"div",2)(2,"div",3)(3,"button",4),m("click",function(_){return u(i),_.stopPropagation(),f(t.toggleFavorite.emit())}),c(4,"nz-icon",5),a()(),r(5,"div",6),m("click",function(){return u(i),f(t.selectProject.emit())}),r(6,"div",7)(7,"div",8)(8,"span"),l(9),a(),r(10,"span",9),m("click",function(_){return u(i),f(_.stopPropagation())}),c(11,"nz-badge",10),a()(),r(12,"div",11)(13,"span"),l(14),a()()()(),r(15,"div",12)(16,"nz-space",13)(17,"button",4),m("click",function(){return u(i),f(t.openInEditor.emit())}),c(18,"nz-icon",14),r(19,"span"),l(20,"\u5728\u7F16\u8F91\u5668\u4E2D\u6253\u5F00"),a()(),r(21,"button",15),m("click",function(){return u(i),f(t.editProject.emit())}),c(22,"nz-icon",16),a(),y(23,eo,2,0,"button",17),r(24,"button",18),m("click",function(){return u(i),f(t.del())}),c(25,"nz-icon",19),a()()()()(),O(26,to,1,1,"ng-template",null,0,W)}if(e&2){let i=V(27);St("open",t.open),s(4),g("nzTheme",t.project!=null&&t.project.isFavorite?"fill":"outline"),s(5),b(t.project==null?null:t.project.name),s(),g("nzPopoverContent",i)("nzPopoverOverlayClassName","project-item-popover"),s(),g("nzStatus",t.hasTasksRunning()?"processing":"default")("nz-tooltip",t.taskBadgeTip()),s(3),b(t.project==null?null:t.project.root),s(9),x(t.project!=null&&t.project.repoPageUrl?23:-1)}},dependencies:[h,E,$,G,L,S,D,j,H,P,v,Ht,Jt,tn,en,Rt,At,et,te],styles:['.project-item[_ngcontent-%COMP%]{border-radius:4px;padding:0;margin:8px 0;transition:all .3s;cursor:pointer}.project-item.open[_ngcontent-%COMP%], .project-item[_ngcontent-%COMP%]:hover{box-shadow:0 4px 12px #0000001a;background:var(--app-primary-3)}.project-item[_ngcontent-%COMP%] .content[_ngcontent-%COMP%]{padding:16px;display:grid;grid-template-columns:auto 1fr auto;grid-template-rows:auto;grid-template-areas:"icon info actions";grid-gap:16px;align-items:center}.project-item[_ngcontent-%COMP%] .content[_ngcontent-%COMP%] .favorite[_ngcontent-%COMP%]{grid-area:icon;display:flex;align-items:center;justify-content:center}.project-item[_ngcontent-%COMP%] .content[_ngcontent-%COMP%] .info[_ngcontent-%COMP%]{grid-area:info;-webkit-user-select:none;user-select:none}.project-item[_ngcontent-%COMP%] .content[_ngcontent-%COMP%] .info[_ngcontent-%COMP%] .list-item-info[_ngcontent-%COMP%]{display:flex;flex-direction:column;align-items:stretch;justify-content:center;gap:4px}.project-item[_ngcontent-%COMP%] .content[_ngcontent-%COMP%] .info[_ngcontent-%COMP%] .list-item-info[_ngcontent-%COMP%] .name[_ngcontent-%COMP%]{flex:auto 0 0}.project-item[_ngcontent-%COMP%] .content[_ngcontent-%COMP%] .info[_ngcontent-%COMP%] .list-item-info[_ngcontent-%COMP%] .name[_ngcontent-%COMP%] .task-popover-trigger[_ngcontent-%COMP%]{display:inline-block;margin-left:8px;cursor:pointer}.project-item[_ngcontent-%COMP%] .content[_ngcontent-%COMP%] .info[_ngcontent-%COMP%] .list-item-info[_ngcontent-%COMP%] .name[_ngcontent-%COMP%] .task-popover-trigger[_ngcontent-%COMP%] nz-badge[_ngcontent-%COMP%]{font-size:18px}.project-item[_ngcontent-%COMP%] .content[_ngcontent-%COMP%] .info[_ngcontent-%COMP%] .list-item-info[_ngcontent-%COMP%] .root-path[_ngcontent-%COMP%]{flex:auto 0 0;opacity:.7;font-size:14px}']})};var vn=o=>({$implicit:o}),no=(o,n)=>n.id;function oo(o,n){o&1&&ct(0)}function io(o,n){if(o&1&&(r(0,"div",6)(1,"h2"),l(2,"\u6536\u85CF\u7684\u9879\u76EE"),a()(),O(3,oo,1,0,"ng-container",7)),o&2){let e=d(),t=V(11);s(3),g("ngTemplateOutlet",t)("ngTemplateOutletContext",mt(2,vn,e.projectState.favoriteProjects()))}}function ro(o,n){o&1&&(r(0,"div",6)(1,"h2"),l(2,"\u66F4\u591A\u9879\u76EE"),a()())}function ao(o,n){o&1&&ct(0)}function po(o,n){o&1&&(r(0,"div",8),c(1,"nz-empty",9),a())}function so(o,n){if(o&1){let e=z();r(0,"app-project-item",12),m("selectProject",function(){let i=u(e).$implicit,p=d(2);return f(p.projectState.selectProject(i))})("toggleFavorite",function(){let i=u(e).$implicit,p=d(2);return f(p.projectState.toggleFavorite(i.id))})("openInEditor",function(){let i=u(e).$implicit,p=d(2);return f(p.projectState.openInEditor(i.id))})("editProject",function(){let i=u(e).$implicit,p=d(2);return f(p.projectState.openEditModal(i))})("deleteProject",function(){let i=u(e).$implicit,p=d(2);return f(p.projectState.deleteProject(i.id))}),a()}if(o&2){let e=n.$implicit,t=d(2);g("project",e)("open",t.projectState.isOpen(e))}}function lo(o,n){if(o&1&&(r(0,"div",10),ae(1,so,1,2,"app-project-item",11,no),a()),o&2){let e=n.$implicit;s(),pe(e)}}var nt=class o{projectState=C(oe);static \u0275fac=function(e){return new(e||o)};static \u0275cmp=M({type:o,selectors:[["app-project-list"]],decls:12,vars:8,consts:[["itemsTpl",""],["nz-row","",1,"page"],["nz-col","","nzSpan","16","nzOffset","4",1,"col"],["nz-col","",1,"topbar"],["nzInputPrefix","","nzType","search",1,"search-icon"],["nz-input","","placeholder","\u641C\u7D22\u9879\u76EE",3,"ngModelChange","ngModel"],[1,"header"],[4,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"no-projects"],["nzNotFoundImage","simple","nzNotFoundContent","\u6682\u65E0\u9879\u76EE\uFF0C\u5FEB\u53BB\u521B\u5EFA\u6216\u5BFC\u5165\u7B2C\u4E00\u4E2A\u9879\u76EE\u5427\uFF01"],[1,"content"],[3,"project","open"],[3,"selectProject","toggleFavorite","openInEditor","editProject","deleteProject","project","open"]],template:function(e,t){if(e&1){let i=z();r(0,"div",1)(1,"div",2)(2,"div",3)(3,"nz-input-wrapper"),c(4,"nz-icon",4),r(5,"input",5),m("ngModelChange",function(_){return u(i),f(t.projectState.keyword.set(_))}),a()()(),y(6,io,4,4),y(7,ro,3,0,"div",6),O(8,ao,1,0,"ng-container",7),y(9,po,2,0,"div",8),a(),O(10,lo,3,0,"ng-template",null,0,W),a()}if(e&2){let i=V(11);s(5),g("ngModel",t.projectState.keyword()),s(),x(t.projectState.favoriteProjects().length>0?6:-1),s(),x(t.projectState.favoriteProjects().length>0?7:-1),s(),g("ngTemplateOutlet",i)("ngTemplateOutletContext",mt(6,vn,t.projectState.moreProjects())),s(),x(t.projectState.projects().length===0?9:-1)}},dependencies:[h,Bt,E,Y,U,q,I,$,G,L,tt,De,be,Q,K,ce,je,P,v],styles:["[_nghost-%COMP%]{display:block;height:100%;overflow:hidden}.page[_ngcontent-%COMP%]{height:100%;overflow-y:auto}.page[_ngcontent-%COMP%] .topbar[_ngcontent-%COMP%]{width:100%;display:flex;justify-content:center;margin-bottom:12px}.page[_ngcontent-%COMP%] .topbar[_ngcontent-%COMP%] nz-input-wrapper[_ngcontent-%COMP%]{width:25%;min-width:200px}.page[_ngcontent-%COMP%] .col[_ngcontent-%COMP%]{display:flex;flex-direction:column}.header[_ngcontent-%COMP%]{padding:12px 0}.header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0;font-weight:600}"]})};function co(o,n){o&1&&(c(0,"nz-icon",8),l(1," \u9879\u76EE "))}function mo(o,n){o&1&&c(0,"app-project-list")}function uo(o,n){o&1&&(c(0,"nz-icon",9),l(1," \u521B\u5EFA "))}function fo(o,n){o&1&&c(0,"app-project-create")}function go(o,n){o&1&&(c(0,"nz-icon",10),l(1," \u5BFC\u5165 "))}function Co(o,n){o&1&&c(0,"app-project-import")}var ot=class o{importState=C(ge);selectedIndex=0;tabIndexChange(n){n===2?this.importState.active.set(!0):this.importState.active.set(!1)}static \u0275fac=function(e){return new(e||o)};static \u0275cmp=M({type:o,selectors:[["app-projects"]],decls:17,vars:4,consts:[["projectTitleTemplate",""],["addTitleTemplate",""],["importTitleTemplate",""],[1,"page"],[1,"header"],["nzCentered","",1,"tabs-container",3,"nzSelectedIndexChange","nzSelectedIndex"],[3,"nzTitle"],["nz-tab",""],["nzType","unordered-list","nzTheme","outline"],["nzType","plus-square","nzTheme","outline"],["nzType","import","nzTheme","outline"]],template:function(e,t){if(e&1){let i=z();r(0,"div",3)(1,"div",4)(2,"h2"),l(3,"\u9879\u76EE\u7BA1\u7406"),a()(),r(4,"nz-tabs",5),T("nzSelectedIndexChange",function(_){return u(i),k(t.selectedIndex,_)||(t.selectedIndex=_),f(_)}),m("nzSelectedIndexChange",function(_){return u(i),f(t.tabIndexChange(_))}),r(5,"nz-tab",6),O(6,co,2,0,"ng-template",null,0,W)(8,mo,1,0,"ng-template",7),a(),r(9,"nz-tab",6),O(10,uo,2,0,"ng-template",null,1,W)(12,fo,1,0,"ng-template",7),a(),r(13,"nz-tab",6),O(14,go,2,0,"ng-template",null,2,W)(16,Co,1,0,"ng-template",7),a()()()}if(e&2){let i=V(7),p=V(11),_=V(15);s(4),w("nzSelectedIndex",t.selectedIndex),s(),g("nzTitle",i),s(4),g("nzTitle",p),s(4),g("nzTitle",_)}},dependencies:[h,cn,ln,sn,pn,P,v,nt,Ke,Xe],styles:[".page[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:100%}.header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;flex:0 0 auto;padding:16px 0}.header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{margin:0}nz-tabs.tabs-container[_ngcontent-%COMP%]{flex:1 1 auto;height:0}nz-tabs.tabs-container[_ngcontent-%COMP%] .ant-tabs-content{height:100%}nz-tabs.tabs-container[_ngcontent-%COMP%] .ant-tabs-content .ant-tabs-tabpane{height:100%}.toolbar[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{flex:1}.current[_ngcontent-%COMP%]{margin:10px 0;opacity:.75}"]})};var _o=[{path:"",component:ot}],it=class o{static \u0275fac=function(e){return new(e||o)};static \u0275mod=ke({type:o});static \u0275inj=ye({imports:[ze.forChild(_o),ze]})};var yn=class o{static \u0275fac=function(e){return new(e||o)};static \u0275mod=ke({type:o});static \u0275inj=ye({imports:[h,it]})};export{yn as ProjectsModule};
@@ -1 +0,0 @@
1
- import{a as l}from"./chunk-KVFR7GFV.js";import{a as A}from"./chunk-5T5KA5PG.js";import{a as E,f as L}from"./chunk-UXXWRMM6.js";import{v as S}from"./chunk-T3KK7ZXB.js";import{O as R,e as U,na as a,sa as I,v as s}from"./chunk-WI67LAOV.js";var F={TASK_NOT_FOUND:{level:"silent"},TASK_ALREADY_RUNNING:{level:"toast",message:"\u4EFB\u52A1\u5DF2\u5728\u8FD0\u884C\u4E2D"},PROCESS_SPAWN_FAILED:{level:"toast",message:"\u4EFB\u52A1\u542F\u52A8\u5931\u8D25"},TASK_SPEC_NOT_FOUND:{level:"toast",message:"\u4EFB\u52A1\u89C4\u683C\u672A\u627E\u5230"},TASK_NOT_RUNNABLE:{level:"toast",message:"\u4EFB\u52A1\u4E0D\u53EF\u8FD0\u884C"},RUN_NOT_FOUND:{level:"toast",message:"\u8FD0\u884C\u5B9E\u4F8B\u672A\u627E\u5230"},TASK_ID_REQUIRED:{level:"toast",message:"\u4EFB\u52A1 ID \u4E3A\u5FC5\u586B\u9879"},COMMAND_NOT_FOUND:{level:"toast",message:"\u547D\u4EE4\u672A\u627E\u5230\uFF0C\u8BF7\u786E\u4FDD\u5DF2\u6B63\u786E\u5B89\u88C5\u6240\u9700\u8F6F\u4EF6"},PROJECT_NOT_FOUND:{level:"toast",message:"\u9879\u76EE\u4E0D\u5B58\u5728"},PROJECT_ROOT_INVALID:{level:"toast",message:"\u9879\u76EE\u6839\u76EE\u5F55\u65E0\u6548"},PROJECT_ALREADY_EXISTS:{level:"toast",message:"\u9879\u76EE\u5DF2\u5B58\u5728"},INVALID_NAME:{level:"toast",message:"\u65E0\u6548\u7684\u9879\u76EE\u540D\u79F0"},TARGET_EXISTS:{level:"toast",message:"\u76EE\u6807\u8DEF\u5F84\u5DF2\u5B58\u5728"},INVALID_REPO_URL:{level:"toast",message:"\u65E0\u6548\u7684\u4ED3\u5E93\u5730\u5740"},GIT_CHECKOUT_FAILED:{level:"toast",message:"Git \u68C0\u51FA\u5931\u8D25"},BOOTSTRAP_NOT_IN_PICK_STATE:{level:"toast",message:"\u5F53\u524D\u4E0D\u5904\u4E8E\u9009\u62E9\u6839\u76EE\u5F55\u72B6\u6001"},BOOTSTRAP_CTX_NOT_FOUND:{level:"toast",message:"\u5F15\u5BFC\u4E0A\u4E0B\u6587\u672A\u627E\u5230"},BOOTSTRAP_INVALID_PICKED_ROOT:{level:"toast",message:"\u9009\u62E9\u7684\u6839\u76EE\u5F55\u65E0\u6548"},BOOTSTRAP_NOT_WAITING_PICK:{level:"toast",message:"\u5F15\u5BFC\u672A\u5904\u4E8E\u7B49\u5F85\u9009\u62E9\u72B6\u6001"},PROJECT_ANGULAR_JSON_INVALID:{level:"toast",message:"angular.json \u65E0\u6548"},PROJECT_ANGULAR_JSON_NOT_FOUND:{level:"toast",message:"angular.json \u672A\u627E\u5230"},PROJECT_VITE_CONFIG_INVALID:{level:"toast",message:"vite \u914D\u7F6E\u65E0\u6548"},PROJECT_VUE_CONFIG_NOT_FOUND:{level:"toast",message:"vite \u914D\u7F6E\u672A\u627E\u5230"},CONFIG_BACKUP_NOT_FOUND:{level:"toast",message:"\u914D\u7F6E\u5907\u4EFD\u672A\u627E\u5230"},CONFIG_READ_FAILED:{level:"toast",message:"\u914D\u7F6E\u8BFB\u53D6\u5931\u8D25\uFF0C\u6587\u4EF6\u53EF\u80FD\u5DF2\u635F\u574F"},CONFIG_CONFLICT:{level:"toast",message:"\u914D\u7F6E\u5DF2\u88AB\u5176\u4ED6\u5730\u65B9\u4FEE\u6539\uFF0C\u8BF7\u5237\u65B0\u91CD\u8BD5"},FS_ALREADY_EXISTS:{level:"toast",message:"\u6587\u4EF6\u6216\u6587\u4EF6\u5939\u5DF2\u5B58\u5728"},FS_PATH_NOT_FOUND:{level:"toast",message:"\u6587\u4EF6\u6216\u6587\u4EF6\u5939\u672A\u627E\u5230"},FS_PERMISSION_DENIED:{level:"toast",message:"\u6587\u4EF6\u7CFB\u7EDF\u6743\u9650\u88AB\u62D2\u7EDD"},FS_EXISTS_FAILED:{level:"toast",message:"\u68C0\u67E5\u8DEF\u5F84\u662F\u5426\u5B58\u5728\u65F6\u51FA\u9519"},FS_INVALID_NAME:{level:"toast",message:"\u65E0\u6548\u7684\u6587\u4EF6\u6216\u6587\u4EF6\u5939\u540D\u79F0"},FS_MKDIR_FAILED:{level:"toast",message:"\u521B\u5EFA\u6587\u4EF6\u5939\u5931\u8D25"},INTERNAL_ERROR:{level:"toast",message:"\u7CFB\u7EDF\u5F02\u5E38\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5"},CONNECTION_LOST:{level:"banner",message:"\u4E0E\u672C\u5730\u670D\u52A1\u7684\u8FDE\u63A5\u5DF2\u65AD\u5F00",action:{retry:!0}},HTTP_ERROR:{level:"toast",message:"\u7F51\u7EDC\u8BF7\u6C42\u5931\u8D25\uFF0C\u8BF7\u68C0\u67E5\u60A8\u7684\u7F51\u7EDC\u8FDE\u63A5"},UNAUTHORIZED:{level:"banner",message:"\u672A\u6388\u6743\u8BBF\u95EE\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55",action:{reload:!0}},UNKNOWN_ERROR:{level:"toast",message:"\u53D1\u751F\u672A\u77E5\u9519\u8BEF\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5"},WS_ERROR:{level:"banner",message:"WebSocket \u8FDE\u63A5\u5F02\u5E38",action:{retry:!0}},WS_CLOSED:{level:"banner",message:"WebSocket \u8FDE\u63A5\u5DF2\u5173\u95ED",action:{retry:!0}},BAD_JSON:{level:"toast",message:"\u6536\u5230\u65E0\u6548\u7684 JSON \u6570\u636E"},BAD_MSG:{level:"toast",message:"\u6536\u5230\u65E0\u6548\u7684\u6D88\u606F\u683C\u5F0F"},OP_NOT_SUPPORTED:{level:"toast",message:"\u64CD\u4F5C\u4E0D\u88AB\u652F\u6301"},HANDLER_FAILED:{level:"toast",message:"\u6D88\u606F\u5904\u7406\u5931\u8D25"},TOPIC_NOT_FOUND:{level:"toast",message:"\u672A\u77E5\u7684\u6D88\u606F\u4E3B\u9898"},OP_NOT_FOUND:{level:"toast",message:"\u672A\u77E5\u7684\u64CD\u4F5C\u7C7B\u578B"},DEP_INSTALL_FAILED:{level:"toast",message:"\u4F9D\u8D56\u5B89\u88C5\u5931\u8D25"},DEP_UNINSTALL_FAILED:{level:"toast",message:"\u4F9D\u8D56\u5378\u8F7D\u5931\u8D25"},DEP_NOT_FOUND:{level:"toast",message:"\u4F9D\u8D56\u672A\u627E\u5230"},DASHBOARD_CONFLICT:{level:"toast",message:"\u4EEA\u8868\u76D8\u5DF2\u88AB\u5176\u4ED6\u5730\u65B9\u4FEE\u6539\uFF0C\u8BF7\u5237\u65B0\u91CD\u8BD5"},WIDGET_NOT_FOUND:{level:"toast",message:"\u90E8\u4EF6\u672A\u627E\u5230"},WIDGET_LOCKED:{level:"toast",message:"\u90E8\u4EF6\u88AB\u9501\u5B9A\uFF0C\u65E0\u6CD5\u4FEE\u6539"},RSS_FETCH_FAILED:{level:"toast",message:"RSS \u6E90\u83B7\u53D6\u5931\u8D25"},INVALID_RSS_URL:{level:"toast",message:"\u65E0\u6548\u7684 RSS \u6E90\u5730\u5740"},KILL_PORT_FAILED:{level:"toast",message:"\u7AEF\u53E3\u91CA\u653E\u5931\u8D25"},INVALID_PORT:{level:"toast",message:"\u65E0\u6548\u7684\u7AEF\u53E3\u53F7"},COLLECTION_NOT_EMPTY:{level:"toast",message:"\u96C6\u5408\u4E0D\u4E3A\u7A7A\uFF0C\u65E0\u6CD5\u5220\u9664"},INVALID_JSON:{level:"dev-only"},INVALID_MSG:{level:"dev-only"}};var D=class O{ui=I(L);dispatch(N,e,t){let _=F[N];if(!_){this.ui.error(e??"\u672A\u77E5\u9519\u8BEF");return}let T=typeof _.message=="function"?_.message(t):_.message??e;switch(_.level){case"silent":return;case"toast":this.ui.error(T??"\u64CD\u4F5C\u5931\u8D25");return;case"banner":this.ui.banner?.(T??"\u7CFB\u7EDF\u5F02\u5E38",_.action);return;case"dev-only":A.production||console.warn("[DEV ERROR]",N,t);return}}static \u0275fac=function(e){return new(e||O)};static \u0275prov=a({token:O,factory:O.\u0275fac,providedIn:"root"})};var m=U(l()),w=(O,N)=>{let e=I(D),t=m.uniqueId("req-");return O=O.clone({setHeaders:{"X-Request-Id":t}}),N(O).pipe(R(_=>{if(A.production||console.error(`[HTTP][${t}] Error:`,_),_ instanceof E)return e.dispatch(_.code,_.message,_.details),s(()=>_);if(_ instanceof S){let T=_.error?.error?.code??"HTTP_ERROR";return e.dispatch(T,_.message,_.error),s(()=>_)}return e.dispatch("INTERNAL_ERROR"),s(()=>_)}))};export{w as a};
@@ -1,2 +0,0 @@
1
- import{a as v,b as f}from"./chunk-JZULA5JV.js";import{a as w}from"./chunk-UQGCUFNM.js";import{b as V}from"./chunk-5T5KA5PG.js";import{d as M}from"./chunk-UXXWRMM6.js";import{Ha as u,a,b as c,hd as p,id as R,l as j,na as h,ra as T,sa as m,y as g,z as I}from"./chunk-WI67LAOV.js";var b=class l{constructor(e,t){this.ws=e;this.runtimeStore=t;this.ws.messages().subscribe(s=>this.onMessage(s)),this.ws.stateChanges().subscribe(s=>{s==="open"&&this.lastWsState!=="open"&&this.replaySubs(),this.lastWsState=s})}outputByTaskId=new Map;event$=new j;subs=new Map;lastWsState="idle";ensureConnected(){this.ws.connect()}subscribeTask(e,t=200){let s=e.trim();if(!s)return;let i=Math.max(0,Math.min(5e3,t|0));this.subs.get(s)!==i&&(this.subs.set(s,i),this.ws.isOpen()&&this.ws.send({op:"sub",topic:"task",taskId:s,tail:i}))}unsubscribeTask(e){let t=e.trim();this.subs.has(t)&&(this.subs.delete(t),this.ws.isOpen()&&this.ws.send({op:"unsub",topic:"task",taskId:t}))}resize(e,t,s){let i=String(e??"").trim();i&&this.ws.isOpen()&&this.ws.send({op:"resize",topic:"task",taskId:i,cols:t,rows:s})}output$(e){return this.ensureOutput(e).asObservable()}events$(){return this.event$.asObservable()}status$(e){return this.runtimeStore.status$(e)}replaySubs(){for(let[e,t]of this.subs.entries())this.ws.send({op:"sub",topic:"task",taskId:e,tail:t})}onMessage(e){let t=e?.op;if(t==="task.output"){let s=e.payload,i=String(s.taskId??"").trim();if(!i)return;this.ensureOutput(i).next(e);return}if(t==="task.event"){let s=e.payload,i=e.type,n=String(s.taskId??"").trim();if(!n)return;this.event$.next(e);let r=this.applyEventToRuntime(i,s);if(r&&this.runtimeStore.setRuntime(r),(i==="exited"||i==="failed")&&setTimeout(()=>this.outputByTaskId.delete(n),300*1e3),i==="failed"){let o=s,y=`[failed] ${o?.error??""}`.trim(),d={runId:o.runId,taskId:n,stream:"stderr",text:y+`
2
- `};this.ensureOutput(n).next({op:"task.output",payload:d,ts:e.ts})}}}ensureOutput(e){let t=String(e??"").trim();return this.outputByTaskId.has(t)||this.outputByTaskId.set(t,new j),this.outputByTaskId.get(t)}applyEventToRuntime(e,t){let s=String(t?.taskId??"").trim(),i=String(t?.runId??"").trim();if(!s||!i)return null;let n=this.runtimeStore.runtimeSignal(s)(),r=n&&n.runId===i?a({},n):{taskId:s,runId:i,projectId:String(t?.projectId??n?.projectId??"").trim(),status:"idle"};switch(e){case"snapshot":let o=t;return r.projectId=String(o?.projectId??r.projectId??"").trim(),r.status=o.status,r.startedAt=o.startedAt,r.stoppedAt=o.stoppedAt,r.pid=o.pid,r.exitCode=o.exitCode,r.signal=o.signal,r;case"started":return r.projectId=String(t?.projectId??r.projectId??"").trim(),r.status="running",r.pid=t?.pid??r.pid,r.startedAt=t?.startedAt??r.startedAt??Date.now(),r.stoppedAt=void 0,r.exitCode=void 0,r.signal=void 0,r;case"stopRequested":return r.status="stopping",r;case"exited":return r.status="stopped",r.exitCode=t?.exitCode??null,r.signal=t?.signal??null,r.stoppedAt=t?.stoppedAt??Date.now(),r;case"failed":return r.status="failed",r.stoppedAt=r.stoppedAt??Date.now(),r.exitCode=r.exitCode??null,r.signal=r.signal??null,r;default:return null}}static \u0275fac=function(t){return new(t||l)(T(V),T(f))};static \u0275prov=h({token:l,factory:l.\u0275fac,providedIn:"root"})};var S=class l{api=m(v);runtimeStore=m(f);state=u({rowsByProject:{},loadingByProject:{},loadedAtByProject:{}});rowsOf(e){let t=(e??"").trim();return p(()=>this.state().rowsByProject[t]??[])}isLoading(e){let t=(e??"").trim();return p(()=>!!this.state().loadingByProject[t])}isLoaded(e){let t=(e??"").trim();return p(()=>this.state().loadedAtByProject[t]!=null)}async ensureLoaded(e,t){let s=(e??"").trim();if(!s)return;let i=this.state(),n=i.loadedAtByProject[s]!=null,r=!!i.loadingByProject[s];if(!(!t?.force&&(n||r))){this.state.update(o=>c(a({},o),{loadingByProject:c(a({},o.loadingByProject),{[s]:!0})}));try{let y=(await I(this.api.getViews(s))??[]).map(d=>({spec:d.spec,runtime:d.runtime?{taskId:d.runtime.taskId,projectId:d.runtime.projectId,runId:d.runtime.runId,status:d.runtime.status,pid:d.runtime.pid,startedAt:d.runtime.startedAt,stoppedAt:d.runtime.stoppedAt,exitCode:d.runtime.exitCode,signal:d.runtime.signal}:void 0}));for(let d of y)d.runtime&&this.runtimeStore.setRuntime(d.runtime);this.state.update(d=>c(a({},d),{rowsByProject:c(a({},d.rowsByProject),{[s]:y}),loadedAtByProject:c(a({},d.loadedAtByProject),{[s]:Date.now()})}))}finally{this.state.update(o=>c(a({},o),{loadingByProject:c(a({},o.loadingByProject),{[s]:!1})}))}}}setRows(e,t){let s=(e??"").trim();if(s){for(let i of t??[])i.runtime&&this.runtimeStore.setRuntime(i.runtime);this.state.update(i=>c(a({},i),{rowsByProject:c(a({},i.rowsByProject),{[s]:t??[]}),loadedAtByProject:c(a({},i.loadedAtByProject),{[s]:Date.now()})}))}}clear(e){let t=(e??"").trim();t&&this.state.update(s=>{let i=a({},s.rowsByProject),n=a({},s.loadingByProject),r=a({},s.loadedAtByProject);return delete i[t],delete n[t],delete r[t],{rowsByProject:i,loadingByProject:n,loadedAtByProject:r}})}static \u0275fac=function(t){return new(t||l)};static \u0275prov=h({token:l,factory:l.\u0275fac,providedIn:"root"})};var k=class l{api=m(M);projectContext=m(w);currentVersion=u(null);availableVersions=u([]);manager=u("none");loading=u(!1);error=u(null);switching=u(!1);switchError=u(null);projectRequirement=u(null);hasVersionManager=u(!1);recommendedVersions=u([]);alreadyInstalled=u(!1);canSwitch=u(!1);getNoManagerMessage(){return"\u8BF7\u5148\u5B89\u88C5 NVM \u6216 Volta \u624D\u80FD\u4F7F\u7528\u81EA\u52A8\u5207\u6362 Node \u7248\u672C\u529F\u80FD"}async getCurrentVersion(){this.loading.set(!0),this.error.set(null);try{let e=await g(this.api.get("/api/node-version/current"));e&&(this.currentVersion.set(e.current),this.availableVersions.set(e.available),this.manager.set(e.manager),this.hasVersionManager.set(e.manager!=="none"),this.canSwitch.set(e.manager!=="none"))}catch(e){this.error.set(e?.message||"\u83B7\u53D6 Node \u7248\u672C\u4FE1\u606F\u5931\u8D25")}finally{this.loading.set(!1)}}async loadProjectRequirement(){let e=this.projectContext.currentProject()?.root;if(!e){this.projectRequirement.set(null);return}try{let t=await g(this.api.post("/api/node-version/project-requirement",{projectPath:e}));this.projectRequirement.set(t)}catch(t){console.error("\u52A0\u8F7D\u9879\u76EE Node \u7248\u672C\u8981\u6C42\u5931\u8D25:",t),this.projectRequirement.set(null)}}async switchVersion(e){if(this.manager()==="none")return this.switchError.set(this.getNoManagerMessage()),!1;this.switching.set(!0),this.switchError.set(null);try{let t=await g(this.api.post("/api/node-version/switch",{version:e}));return t?(this.currentVersion.set(t.current),this.availableVersions.set(t.available),this.manager.set(t.manager),!0):!1}catch(t){let s=t?.error?.message||t?.message||"\u5207\u6362 Node \u7248\u672C\u5931\u8D25";return this.switchError.set(s),!1}finally{this.switching.set(!1)}}clearSwitchError(){this.switchError.set(null)}clearError(){this.error.set(null)}generateRecommendedVersions(e){if(!e)return this.getCommonLTSVersions();let t=n=>{let o=n.replace(/^[\^~>=<]+/,"").match(/^(\d+)\.(\d+)\.(\d+)/);return o?`v${o[1]}.${o[2]}.${o[3]}`:null},s=e.split("||").map(n=>n.trim()),i=new Set;for(let n of s){let r=t(n);r&&i.add(r)}return i.size===0?this.getCommonLTSVersions():Array.from(i)}getCommonLTSVersions(){return["v18.20.0","v20.11.0","v22.11.0"]}async installVersion(e){if(this.manager()==="none")return this.switchError.set(this.getNoManagerMessage()),!1;this.error.set(null);try{let t=await g(this.api.post("/api/node-version/install",{version:e}));return t.success?(this.alreadyInstalled.set(!!t.alreadyInstalled),!0):(this.error.set(t.error||"\u5B89\u88C5\u5931\u8D25"),!1)}catch(t){let s=t?.error?.message||t?.message||"\u5B89\u88C5 Node \u7248\u672C\u5931\u8D25";return this.error.set(s),!1}}async loadRecommendedVersions(){try{let e=await g(this.api.get("/api/node-version/recommended"));this.recommendedVersions.set(e)}catch(e){console.error("\u83B7\u53D6\u63A8\u8350\u7248\u672C\u5931\u8D25:",e),this.recommendedVersions.set(this.getFallbackVersions())}}getFallbackVersions(){return["v18.20.0","v20.11.0","v22.11.0"]}refresh(){this.getCurrentVersion(),this.loadProjectRequirement()}async deleteVersion(e){if(this.manager()==="none")return this.error.set("\u6CA1\u6709\u5B89\u88C5 Node \u7248\u672C\u7BA1\u7406\u5668"),!1;try{return await g(this.api.post("/api/node-version/uninstall",{version:e}))}catch(t){return this.error.set(t?.error?.message||t?.message||"\u5220\u9664\u7248\u672C\u5931\u8D25"),!1}}async writeEngineConfig(e){let t=this.projectContext.currentProject()?.root;if(!t)return this.error.set("\u672A\u627E\u5230\u5F53\u524D\u9879\u76EE"),!1;try{return await g(this.api.post("/api/node-version/write-engine-config",{projectPath:t,version:e}))}catch(s){return this.error.set(s?.error?.message||s?.message||"\u5199\u5165\u914D\u7F6E\u5931\u8D25"),!1}}static \u0275fac=function(t){return new(t||l)};static \u0275prov=h({token:l,factory:l.\u0275fac,providedIn:"root"})};var x=class l{api=m(v);stream=m(b);runtimeStore=m(f);catalog=m(S);nodeVersion=m(k);projectContext=m(w);projectId=u("");keyword=u("");loading=u(!1);selectedTaskId=u("");rows=p(()=>{let e=this.projectId();return e?this.catalog.rowsOf(e)():[]});rowsView=p(()=>this.rows().map(t=>{let s=t.spec.id,i=this.getRuntimeSignal(s);return c(a({},t),{runtime:i??t.runtime})}));rowsViewFiltered=p(()=>{let e=this.keyword().trim().toLowerCase(),t=this.rowsView();return e?t.filter(s=>s.spec.name?.toLowerCase().includes(e)):t});selectedRow=p(()=>{let e=this.selectedTaskId();return this.rowsView().find(t=>t.spec.id===e)??null});selectedRuntimeStatus=p(()=>{let e=this.selectedTaskId();return e?this.getRuntime(e):{status:"idle"}});isRunning=p(()=>this.selectedRuntimeStatus().status==="running");isStopping=p(()=>this.selectedRuntimeStatus().status==="stopping");isStopped=p(()=>{let e=this.selectedRuntimeStatus().status;return e==="idle"||e==="stopped"||e==="failed"||e==="success"});constructor(){R(e=>{let t=this.selectedTaskId();if(!t)return;this.stream.ensureConnected(),this.stream.subscribeTask(t,200);let s=this.runtimeStore.status$(t).subscribe();e(()=>{s.unsubscribe(),this.stream.unsubscribeTask(t)})})}getRuntime(e){return this.runtimeStore.statusSignal(e)()}getRuntimeSignal(e){return this.runtimeStore.runtimeSignal(e)()}async setProject(e){let t=e?.trim();if(!t||this.projectId()===t)return;this.projectId.set(t),this.selectedTaskId.set(""),this.keyword.set(""),await this.catalog.ensureLoaded(t);let s=this.rows()[0];s&&this.select(s.spec.id)}refresh(){let e=this.projectId();e&&(this.loading.set(!0),this.api.refresh(e).subscribe({next:t=>{this.catalog.setRows(e,t??[]),this.loading.set(!1)},error:t=>{this.loading.set(!1)}}),this.api.refreshProjectScripts(e).subscribe({next:t=>{this.projectContext.patchProject(t)},error:()=>{}}))}select(e){this.selectedTaskId.set(e)}toggleTask(){this.isRunning()?this.stopSelected():this.isStopped()&&this.startSelected()}startSelected(e){e=e?.trim()||this.selectedRow()?.spec?.id,e&&this.api.start(e).subscribe({next:()=>{this.nodeVersion.refresh()}})}stopSelected(e){if(e=e?.trim()||this.selectedTaskId(),!e)return;let t=this.getRuntimeSignal(e);t&&this.runtimeStore.setRuntime(c(a({},t),{status:"stopping"})),this.api.stop(e).subscribe({next:()=>{},error:()=>{t&&t.status==="running"&&this.runtimeStore.setRuntime(t)}})}restartSelected(e){e=e?.trim()||this.selectedTaskId(),e&&this.api.restart(e).subscribe()}rowsViewOf(e){return p(()=>{let t=e?.trim();return t?this.catalog.rowsOf(t)().map(i=>{let n=i.spec.id,r=this.getRuntime(n);return c(a({},i),{runtime:c(a({},i.runtime??{}),{status:r.status})})}):[]})}ensureProjectLoaded(e){return this.catalog.ensureLoaded(e)}static \u0275fac=function(t){return new(t||l)};static \u0275prov=h({token:l,factory:l.\u0275fac,providedIn:"root"})};export{b as a,k as b,x as c};