homebridge-config-ui-x 5.12.1-beta.5 → 5.12.1-beta.7

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 (160) hide show
  1. package/dist/bin/platforms/linux.js.map +1 -1
  2. package/package.json +2 -2
  3. package/public/3rdpartylicenses.txt +13 -1
  4. package/public/chunk-2F2PDTDB.js +1 -0
  5. package/public/{chunk-HMF2EYMY.js → chunk-2JLK533I.js} +1 -1
  6. package/public/{chunk-MAJDTCMY.js → chunk-2QUH2FXS.js} +1 -1
  7. package/public/{chunk-TR77UVYU.js → chunk-2R4HORTN.js} +1 -1
  8. package/public/{chunk-E55EDX5Y.js → chunk-3RTPACYF.js} +1 -1
  9. package/public/chunk-3T6KISS2.js +1 -0
  10. package/public/chunk-3VAD7GQK.js +1 -0
  11. package/public/chunk-3WNDNRRB.js +1 -0
  12. package/public/{chunk-4BX7KSQH.js → chunk-3X54YJUZ.js} +1 -1
  13. package/public/{chunk-VFMCVZHO.js → chunk-4J3J7FSY.js} +1 -1
  14. package/public/chunk-4RSOPME5.js +1 -0
  15. package/public/{chunk-2DRLNNDM.js → chunk-55DZYJHI.js} +1 -1
  16. package/public/chunk-57L4H7AA.js +1 -0
  17. package/public/chunk-5G2OIZ66.js +1 -0
  18. package/public/{chunk-LR2GN2Y2.js → chunk-5GNJNTLA.js} +1 -1
  19. package/public/{chunk-BZLBFDQG.js → chunk-5VXOT5GC.js} +1 -1
  20. package/public/{chunk-M3DSUNBG.js → chunk-6P53ACWC.js} +1 -1
  21. package/public/{chunk-IHAA5URA.js → chunk-6VNMVWFY.js} +1 -1
  22. package/public/chunk-732GW26P.js +1 -0
  23. package/public/{chunk-VWUZDCBZ.js → chunk-7AD56BSX.js} +2 -2
  24. package/public/{chunk-6U3YEWBO.js → chunk-7LOFSGZK.js} +1 -1
  25. package/public/{chunk-AHIRH7NQ.js → chunk-7LZXNMQ7.js} +1 -1
  26. package/public/chunk-7QNFIL7X.js +1 -0
  27. package/public/{chunk-3BODPB3K.js → chunk-ALTMINMJ.js} +1 -1
  28. package/public/{chunk-XUP37AHQ.js → chunk-ARR3OK4P.js} +5 -5
  29. package/public/{chunk-XTQWZF3J.js → chunk-AYPSIX2K.js} +1 -1
  30. package/public/chunk-B37HWUCD.js +1 -0
  31. package/public/{chunk-GDBXX4WT.js → chunk-BADNEAHD.js} +2 -2
  32. package/public/{chunk-RDHUW73W.js → chunk-BNNKKGLH.js} +1 -1
  33. package/public/{chunk-J56ZFHCF.js → chunk-BT3EMPD7.js} +1 -1
  34. package/public/chunk-BWJIQBIJ.js +1 -0
  35. package/public/{chunk-S2GJNEOI.js → chunk-C5UZ5BUH.js} +1 -1
  36. package/public/{chunk-X66UFY6K.js → chunk-CU6MTMVY.js} +1 -1
  37. package/public/{chunk-TV5ACJCB.js → chunk-D3QQAOPW.js} +1 -1
  38. package/public/chunk-DRY2ILHE.js +1 -0
  39. package/public/chunk-DSI2TVUT.js +1 -0
  40. package/public/{chunk-BRGXDZZE.js → chunk-EKYMLGZU.js} +1 -1
  41. package/public/{chunk-CAY6MDP6.js → chunk-F332UHUK.js} +1 -1
  42. package/public/{chunk-DUPASTS2.js → chunk-FDGOZLRL.js} +1 -1
  43. package/public/chunk-G5C66QEU.js +1 -0
  44. package/public/{chunk-CP2QJXVO.js → chunk-GFJO2QTW.js} +1 -1
  45. package/public/{chunk-C64AHVUO.js → chunk-GIBUKDL3.js} +1 -1
  46. package/public/{chunk-NPMJGEDY.js → chunk-HOHCTPYN.js} +1 -1
  47. package/public/{chunk-HH2FDI7W.js → chunk-HOWYXHPL.js} +1 -1
  48. package/public/chunk-HZA5LDUU.js +19 -0
  49. package/public/{chunk-UVWXUC5Y.js → chunk-I5AP453W.js} +1 -1
  50. package/public/chunk-I7YFJOCI.js +1 -0
  51. package/public/{chunk-3NHWMCB7.js → chunk-IBPLHJH5.js} +1 -1
  52. package/public/chunk-IMAK4R64.js +1 -0
  53. package/public/chunk-IRXJL347.js +1 -0
  54. package/public/{chunk-YDYBCBXX.js → chunk-IVGUGJ5O.js} +1 -1
  55. package/public/{chunk-KIFEAONI.js → chunk-IXSMCZ5A.js} +1 -1
  56. package/public/{chunk-QGJKMFM5.js → chunk-J3GYRR3Q.js} +1 -1
  57. package/public/{chunk-F5MBSCH4.js → chunk-JJ5CEM72.js} +3 -3
  58. package/public/chunk-JNPGEJ3W.js +1 -0
  59. package/public/{chunk-4OEYZBSF.js → chunk-JTQQTKY7.js} +1 -1
  60. package/public/{chunk-5QHRLSAE.js → chunk-K73S26T3.js} +1 -1
  61. package/public/{chunk-UH3C2FAE.js → chunk-KAPGBFLJ.js} +1 -1
  62. package/public/{chunk-2QSUQ4VI.js → chunk-KDNXPUO5.js} +1 -1
  63. package/public/chunk-KLWYBXMO.js +5 -0
  64. package/public/chunk-LMQIRO2C.js +1 -0
  65. package/public/chunk-LMWHU5BN.js +1 -0
  66. package/public/{chunk-5QQ2XMII.js → chunk-LVC2MQ7H.js} +1 -1
  67. package/public/{chunk-F2HGBWZZ.js → chunk-MM3ZUHP2.js} +1 -1
  68. package/public/{chunk-Z2RGI4BU.js → chunk-MOTTUPLZ.js} +1 -1
  69. package/public/chunk-MQWN43LI.js +1 -0
  70. package/public/{chunk-5A2G7KDR.js → chunk-MRHB36HC.js} +1 -1
  71. package/public/{chunk-ATJM3XYR.js → chunk-MTYIEY2M.js} +1 -1
  72. package/public/chunk-MW5T6P3D.js +1 -0
  73. package/public/chunk-MXDOJJGQ.js +1 -0
  74. package/public/chunk-NO3WWNTD.js +1 -0
  75. package/public/chunk-ON7YXJNY.js +1 -0
  76. package/public/{chunk-IXMOGLOS.js → chunk-P4ODKUQK.js} +1 -1
  77. package/public/{chunk-NYEZF6Y3.js → chunk-PQPDMNKK.js} +1 -1
  78. package/public/{chunk-3LY5FRVV.js → chunk-PSSWIPLS.js} +1 -1
  79. package/public/chunk-PSTNNJB4.js +1 -0
  80. package/public/chunk-Q2RBJQKF.js +36 -0
  81. package/public/chunk-QJULMVF4.js +1 -0
  82. package/public/{chunk-V45KU64F.js → chunk-QMHMKWPA.js} +1 -1
  83. package/public/{chunk-65AW3ZMH.js → chunk-QPIMSYGY.js} +1 -1
  84. package/public/{chunk-VCWYDWAJ.js → chunk-R2AXYPVZ.js} +1 -1
  85. package/public/{chunk-WGTVNYII.js → chunk-RGRPV7TK.js} +1 -1
  86. package/public/{chunk-4P4VAV7I.js → chunk-S3E6JDMS.js} +1 -1
  87. package/public/{chunk-VV4S6PBO.js → chunk-S5H22WRF.js} +1 -1
  88. package/public/{chunk-RWABUVQY.js → chunk-SCW535TW.js} +1 -1
  89. package/public/{chunk-OTMZDL7S.js → chunk-SGI3H2QJ.js} +1 -1
  90. package/public/{chunk-Y6B4ENQ3.js → chunk-UCTE5J3F.js} +1 -1
  91. package/public/chunk-UKJBJA6I.js +1 -0
  92. package/public/chunk-URPE4YWQ.js +1 -0
  93. package/public/{chunk-DJGU4NTG.js → chunk-UU7UROHF.js} +1 -1
  94. package/public/{chunk-UHG23NUX.js → chunk-UUDM2ZE6.js} +1 -1
  95. package/public/{chunk-H7F7H5MW.js → chunk-V62JRIHN.js} +1 -1
  96. package/public/{chunk-FNRDBHYN.js → chunk-V6SS3LLE.js} +1 -1
  97. package/public/{chunk-RMDVYT7X.js → chunk-VFZPU4ZL.js} +1 -1
  98. package/public/chunk-VJN6YUS2.js +1 -0
  99. package/public/{chunk-664C4LX2.js → chunk-VY4NTNG3.js} +1 -1
  100. package/public/{chunk-DOJGHPYJ.js → chunk-WVBGE4PG.js} +1 -1
  101. package/public/{chunk-JPAZUSRO.js → chunk-WZXTVC6W.js} +1 -1
  102. package/public/{chunk-PTJ3UZME.js → chunk-X35N33BQ.js} +1 -1
  103. package/public/{chunk-YCASP3MF.js → chunk-X5XGTC24.js} +1 -1
  104. package/public/chunk-YASBCOYX.js +1 -0
  105. package/public/{chunk-FLCYKKEZ.js → chunk-YBWJOGCK.js} +1 -1
  106. package/public/{chunk-QSXJHCTT.js → chunk-YD4U26CQ.js} +1 -1
  107. package/public/chunk-YIHVWXAX.js +92 -0
  108. package/public/chunk-YKLNKZD5.js +2 -0
  109. package/public/chunk-YLQLLNQ6.js +1 -0
  110. package/public/{chunk-A5JF6PDD.js → chunk-YQXFTYEI.js} +1 -1
  111. package/public/chunk-YWTJYVRK.js +1 -0
  112. package/public/{chunk-Q5X66PGK.js → chunk-YXAXWARF.js} +1 -1
  113. package/public/{chunk-NTQWCIIF.js → chunk-ZBOWFMAD.js} +1 -1
  114. package/public/{chunk-2K66PSKD.js → chunk-ZH3VNDIS.js} +1 -1
  115. package/public/{chunk-3YXAYQFV.js → chunk-ZIFXCMBJ.js} +1 -1
  116. package/public/{chunk-AY35X64S.js → chunk-ZMEMMUUF.js} +1 -1
  117. package/public/{chunk-DCBZUBGA.js → chunk-ZONYERCP.js} +1 -1
  118. package/public/{chunk-KEESKHLN.js → chunk-ZRGZJ2SE.js} +1 -1
  119. package/public/index.html +2 -2
  120. package/public/{main-QHHXZV7U.js → main-XUQ5G5JD.js} +1 -1
  121. package/public/styles-SBKKVTID.css +1 -0
  122. package/public/chunk-2FKL7WTN.js +0 -1
  123. package/public/chunk-3B3NAPXD.js +0 -1
  124. package/public/chunk-3BOXIXZY.js +0 -1
  125. package/public/chunk-3N3RJBS3.js +0 -19
  126. package/public/chunk-6KHLSYCO.js +0 -1
  127. package/public/chunk-7GUHWJ4X.js +0 -1
  128. package/public/chunk-7JD74YRM.js +0 -1
  129. package/public/chunk-AST2OLG2.js +0 -1
  130. package/public/chunk-AZLCZPTC.js +0 -1
  131. package/public/chunk-B4AJQJMI.js +0 -1
  132. package/public/chunk-BJV2F6QZ.js +0 -1
  133. package/public/chunk-BMOLDRJ3.js +0 -9
  134. package/public/chunk-BUZBTHD2.js +0 -1
  135. package/public/chunk-C5CMRH2U.js +0 -1
  136. package/public/chunk-CXSRVC7V.js +0 -1
  137. package/public/chunk-DQVHBQLA.js +0 -1
  138. package/public/chunk-FH62LNHX.js +0 -35
  139. package/public/chunk-GYM2PPGX.js +0 -1
  140. package/public/chunk-H2UKSDHZ.js +0 -1
  141. package/public/chunk-HBK7LF6W.js +0 -1
  142. package/public/chunk-JBILFYTL.js +0 -1
  143. package/public/chunk-K3WEJJSS.js +0 -2
  144. package/public/chunk-KDXP3F5S.js +0 -1
  145. package/public/chunk-KYBKIBTT.js +0 -1
  146. package/public/chunk-LINXSUG2.js +0 -1
  147. package/public/chunk-LPJ4GDP3.js +0 -1
  148. package/public/chunk-LPWY3RKY.js +0 -1
  149. package/public/chunk-MUHHYXFN.js +0 -1
  150. package/public/chunk-MVT3BOGV.js +0 -5
  151. package/public/chunk-N6F32H34.js +0 -1
  152. package/public/chunk-NPABPWX3.js +0 -1
  153. package/public/chunk-OU66C3M2.js +0 -1
  154. package/public/chunk-P67JXXO4.js +0 -1
  155. package/public/chunk-UPP5DT2A.js +0 -1
  156. package/public/chunk-VV4LXPCS.js +0 -1
  157. package/public/chunk-XYVW562Y.js +0 -1
  158. package/public/chunk-ZPKMGNNM.js +0 -1
  159. package/public/chunk-ZVU2KU6A.js +0 -1
  160. package/public/styles-WJHG5ONB.css +0 -1
@@ -0,0 +1 @@
1
+ import{a as Ee}from"./chunk-CU6MTMVY.js";import{a as ae}from"./chunk-YKLNKZD5.js";import{a as Se}from"./chunk-PSSWIPLS.js";import{n as R,o as ie}from"./chunk-HOWYXHPL.js";import{a as ne}from"./chunk-I5AP453W.js";import{s as I,t as we}from"./chunk-BNNKKGLH.js";import{c as Ce}from"./chunk-F332UHUK.js";import{a as xe}from"./chunk-GIBUKDL3.js";import{b as K}from"./chunk-VY4NTNG3.js";import{B as ge,C as G,D as L,b as W,c as j,d as g,e as P,f as X,g as q,j as S,m as Y,q as Z,r as ee,s as te}from"./chunk-WZXTVC6W.js";import{a as Ie,b as he}from"./chunk-2QUH2FXS.js";import{C as k,D as M,F,I as B}from"./chunk-7AD56BSX.js";import{Ab as h,Cb as de,Db as pe,Dc as o,Eb as ce,Ec as s,Fb as E,Fc as ve,Gb as r,Hb as a,Ib as d,Jb as D,Kb as T,Kc as oe,Lb as z,Rb as N,Sb as re,Xb as _,Yb as O,Za as e,Zb as v,aa as p,ea as le,ga as A,ha as V,hc as ue,ic as $,jc as Q,kc as m,lc as u,ma as me,mb as J,mc as c,nb as U,nc as fe,sa as y,xc as be,yb as f,yc as _e,zb as C}from"./chunk-JJ5CEM72.js";import{g as Be,h as w}from"./chunk-VJN6YUS2.js";function Ae(n,x){n&1&&(r(0,"ngb-alert",13)(1,"p",20),m(2),o(3,"translate"),a()()),n&2&&(E("dismissible",!1),e(2),u(s(3,2,"login.invalid_password")))}var ye=(()=>{class n{$activeModal=p(I);$api=p(B);$toastr=p(F);$translate=p(k);invalidCredentials=y(!1);formGroup=new q({password:new S("",[g.required])});disable2fa(){return w(this,null,function*(){this.invalidCredentials.set(!1);try{yield this.$api.post("/users/otp/deactivate",this.formGroup.value),this.$activeModal.close()}catch{this.formGroup.setValue({password:""}),this.invalidCredentials.set(!0)}})}dismissModal(){this.$activeModal.dismiss("Dismiss")}static \u0275fac=function(l){return new(l||n)};static \u0275cmp=U({type:n,selectors:[["ng-component"]],decls:34,vars:27,consts:[[1,"modal-content",2,"min-height","300px"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body"],[1,"text-center","mb-3"],[1,"fas","fa-key","primary-text",2,"font-size","75px"],[1,"mb-3"],[1,"list-group","list-group-box","mb-0"],[1,"list-group-item","d-flex","flex-column","flex-md-row","align-items-center"],[1,"mb-2","mb-md-0","w-100","w-md-50"],[1,"text-start","text-md-end","w-100","w-md-50"],["type","password","autocomplete","current-password",1,"form-control","custom-input",3,"formControl","placeholder"],["type","error",1,"mt-3","mb-0",3,"dismissible"],[1,"modal-footer","justify-content-between"],[1,"text-start"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"text-center"],[1,"text-end"],["type","button","data-bs-dismiss","modal",1,"btn","btn-danger",3,"click","disabled"],[1,"mb-0"]],template:function(l,i){l&1&&(r(0,"div",0)(1,"div",1)(2,"h5",2),m(3),o(4,"translate"),a(),r(5,"button",3),o(6,"translate"),_("click",function(){return i.dismissModal()}),a()(),r(7,"div",4)(8,"div",5),d(9,"i",6),a(),r(10,"ul",7)(11,"li"),m(12),o(13,"translate"),a()(),r(14,"ul",8)(15,"li",9)(16,"label",10),m(17),o(18,"translate"),a(),r(19,"div",11),d(20,"input",12),o(21,"translate"),a()()(),C(22,Ae,4,4,"ngb-alert",13),a(),r(23,"div",14)(24,"div",15)(25,"button",16),o(26,"translate"),_("click",function(){return i.dismissModal()}),m(27),o(28,"translate"),a()(),d(29,"div",17),r(30,"div",18)(31,"button",19),_("click",function(){return i.disable2fa()}),m(32),o(33,"translate"),a()()()()),l&2&&(e(3),u(s(4,11,"users.setup_2fa_disable")),e(2),f("aria-label",s(6,13,"form.button_close")),e(7),u(s(13,15,"users.setup_2fa_disable_current_password")),e(5),u(s(18,17,"users.label_password")),e(3),E("formControl",i.formGroup.controls.password)("placeholder",s(21,19,"users.label_password")),e(2),h(i.invalidCredentials()&&!i.formGroup.controls.password.value?22:-1),e(3),f("aria-label",s(26,21,"form.button_close")),e(2),c(" ",s(28,23,"form.button_close")," "),e(4),E("disabled",i.formGroup.invalid),e(),c(" ",s(33,25,"form.button_continue")," "))},dependencies:[G,j,P,L,Z,ne,M],encapsulation:2})}return n})();var Ue=Be(Ie(),1);var Ve=n=>({timeDiffError:n});function Ne(n,x){n&1&&(r(0,"li"),m(1),o(2,"translate"),a()),n&2&&(e(),u(s(2,1,"users.setup_2fa_scan_qr_code")))}function Fe(n,x){if(n&1&&(r(0,"ngb-alert",8)(1,"p",16),m(2),o(3,"translate"),a(),r(4,"p",17),m(5),o(6,"translate"),a()()),n&2){let t=v();E("dismissible",!1),e(2),u(s(3,3,"users.setup_2fa_cannot_setup_2fa")),e(3),u(ve(6,5,"users.setup_2fa_server_time_out",be(8,Ve,t.timeDiffError())))}}function je(n,x){n&1&&d(0,"i",27)}function Pe(n,x){n&1&&d(0,"i",28)}function qe(n,x){if(n&1){let t=N();r(0,"div",21),m(1),o(2,"translate"),d(3,"br"),m(4),r(5,"a",26),_("click",function(){A(t);let i=v(2);return V(i.copySecretToClipboard())}),C(6,je,1,0,"i",27)(7,Pe,1,0,"i",28),a()()}if(n&2){let t=v(2);e(),c(" ",s(2,3,"users.setup_2fa_scan_qr_manual")),e(3),c(" ",t.otpSecret()," "),e(2),h(t.secretCopied()?6:7)}}function Ge(n,x){if(n&1&&(r(0,"ul",9)(1,"li",18)(2,"div",19),d(3,"app-qrcode",20),a(),C(4,qe,8,5,"div",21),a(),r(5,"li",22)(6,"label",23),m(7),o(8,"translate"),a(),r(9,"div",24),d(10,"input",25),a()()()),n&2){let t=v();e(3),E("data",t.otpString()),e(),h(t.otpSecret()?4:-1),e(3),u(s(8,4,"users.setup_2fa_enter_code")),e(3),E("formControl",t.formGroup.controls.code)}}function Le(n,x){if(n&1){let t=N();r(0,"button",29),o(1,"translate"),_("click",function(){A(t);let i=v();return V(i.dismissModal())}),m(2),o(3,"translate"),a()}n&2&&(f("aria-label",s(1,2,"form.button_close")),e(2),c(" ",s(3,4,"form.button_close")," "))}function Re(n,x){if(n&1){let t=N();r(0,"button",29),o(1,"translate"),_("click",function(){A(t);let i=v();return V(i.dismissModal())}),m(2),o(3,"translate"),a()}n&2&&(f("aria-label",s(1,2,"form.button_close")),e(2),c(" ",s(3,4,"form.button_close")," "))}function ze(n,x){if(n&1){let t=N();r(0,"button",30),_("click",function(){A(t);let i=v();return V(i.enable2fa())}),m(1),o(2,"translate"),a()}if(n&2){let t=v();E("disabled",t.formGroup.invalid),e(),c(" ",s(2,2,"form.button_continue")," ")}}var Me=(()=>{class n{$activeModal=p(I);$api=p(B);$toastr=p(F);$translate=p(k);modalData=p(R);user=this.modalData.user;timeDiffError=y(null);otpString=y(void 0);otpSecret=y(void 0);secretCopied=y(!1);copyTimeout=null;formGroup=new q({code:new S("",[g.required,g.minLength(6),g.maxLength(6)])});ngOnInit(){this.initialize()}initialize(){return w(this,null,function*(){try{let t=yield this.$api.post("/users/otp/setup",{});this.checkTimeDiff(t.timestamp),this.timeDiffError()||(this.otpString.set(t.otpauth),this.otpSecret.set(new URL(t.otpauth).searchParams.get("secret")||""))}catch(t){this.$activeModal.dismiss(),console.error(t),this.$toastr.error(this.$translate.instant("users.setup_2fa_enable_error"),this.$translate.instant("toast.title_error"))}})}enable2fa(){return w(this,null,function*(){try{yield this.$api.post("/users/otp/activate",this.formGroup.value),this.$activeModal.close()}catch(t){console.error(t),this.$toastr.error(this.$translate.instant("users.setup_2fa_activate_error"),this.$translate.instant("toast.title_error"))}})}copySecretToClipboard(){return w(this,null,function*(){let t=this.otpSecret();t&&(yield navigator.clipboard.writeText(t),this.secretCopied.set(!0),this.copyTimeout&&clearTimeout(this.copyTimeout),this.copyTimeout=setTimeout(()=>{this.secretCopied.set(!1)},3e3))})}dismissModal(){this.$activeModal.dismiss("Dismiss")}checkTimeDiff(t){let l=(0,Ue.default)(t).diff(new Date,"millisecond");l<-5e3||l>5e3?this.timeDiffError.set(l):this.timeDiffError.set(null)}static \u0275fac=function(l){return new(l||n)};static \u0275cmp=U({type:n,selectors:[["ng-component"]],decls:24,vars:15,consts:[[1,"modal-content","setup2fa"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body"],[1,"text-center","mb-3"],[1,"fas","fa-key","primary-text",2,"font-size","75px"],[1,"mb-3"],["type","error",1,"mb-0",3,"dismissible"],[1,"list-group","list-group-box","mb-0"],[1,"modal-footer","justify-content-between"],[1,"text-start"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant"],[1,"text-center"],[1,"text-end"],["type","button","data-bs-dismiss","modal",1,"btn","btn-primary",3,"disabled"],[1,"fw-bold","mb-1"],[1,"mb-0"],[1,"list-group-item","text-center"],[1,"text-center","w-100","d-flex","justify-content-center","my-2"],[1,"mx-auto",2,"width","175px","height","175px",3,"data"],[1,"grey-text","small","mt-0","mb-1"],[1,"list-group-item","d-flex","flex-column","flex-md-row","align-items-center"],[1,"mb-2","mb-md-0","w-100","w-md-50"],[1,"text-start","text-md-end","w-100","w-md-50"],["type","text","placeholder","eg. 123456","autocomplete","one-time-code","autocapitalize","none","inputmode","numeric","pattern","[0-9]*",1,"form-control","custom-input",3,"formControl"],["href","javascript:void(0)",1,"ms-1","text-primary",3,"click"],[1,"fas","fa-check","green-text"],[1,"fas","fa-copy"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],["type","button","data-bs-dismiss","modal",1,"btn","btn-primary",3,"click","disabled"]],template:function(l,i){l&1&&(r(0,"div",0)(1,"div",1)(2,"h5",2),m(3),o(4,"translate"),a(),r(5,"button",3),o(6,"translate"),_("click",function(){return i.dismissModal()}),a()(),r(7,"div",4)(8,"div",5),d(9,"i",6),a(),r(10,"ul",7)(11,"li"),m(12),o(13,"translate"),a(),C(14,Ne,3,3,"li"),a(),C(15,Fe,7,10,"ngb-alert",8),C(16,Ge,11,6,"ul",9),a(),r(17,"div",10)(18,"div",11),C(19,Le,4,6,"button",12),a(),r(20,"div",13),C(21,Re,4,6,"button",12),a(),r(22,"div",14),C(23,ze,3,4,"button",15),a()()()),l&2&&(e(3),u(s(4,9,"users.setup_2fa")),e(2),f("aria-label",s(6,11,"form.button_close")),e(7),u(s(13,13,"users.setup_2fa_warning")),e(2),h(i.timeDiffError()?-1:14),e(),h(i.timeDiffError()?15:-1),e(),h(i.timeDiffError()?-1:16),e(3),h(i.timeDiffError()?-1:19),e(2),h(i.timeDiffError()?21:-1),e(2),h(i.timeDiffError()?-1:23))},dependencies:[ne,Ee,G,j,P,ge,L,Z,M],encapsulation:2})}return n})();var De=(()=>{class n{$activeModal=p(I);$api=p(B);$toastr=p(F);$translate=p(k);modalData=p(ie);existingUsers=this.modalData.existingUsers;form=new q({username:new S("",[g.required]),name:new S("",[g.required]),password:new S("",[g.compose([g.required,g.minLength(4)])]),passwordConfirm:new S("",[g.required]),admin:new S(!0)},this.matchPassword);ngOnInit(){this.form.controls.username.addValidators(this.duplicateUsernameValidator.bind(this)),this.form.controls.username.updateValueAndValidity()}onSubmit(l){return w(this,arguments,function*({value:t}){try{yield this.$api.post("/users",t),this.$activeModal.close()}catch(i){this.$toastr.error(i.error?.message||i.message,this.$translate.instant("toast.title_error"))}})}dismissModal(){this.$activeModal.dismiss("Dismiss")}duplicateUsernameValidator(t){if(!t.value)return null;let l=t.value.trim();return l&&this.existingUsers.some(b=>b.username===l)?{duplicateUsername:!0}:null}matchPassword(t){let l=t.get("password")?.value,i=t.get("passwordConfirm")?.value;return l!==i?(t.get("passwordConfirm")?.setErrors({matchPassword:!0}),{matchPassword:!0}):null}static \u0275fac=function(l){return new(l||n)};static \u0275cmp=U({type:n,selectors:[["ng-component"]],decls:63,vars:52,consts:[[1,"modal-content"],["novalidate","",3,"ngSubmit","formGroup"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body"],[1,"text-center","mb-3"],[1,"fas","fa-user-plus","primary-text",2,"font-size","75px"],[1,"list-group","list-group-box","mb-0"],[1,"list-group-item","d-flex","flex-column","flex-md-row","align-items-center"],["for","form-username",1,"mb-2","mb-md-0","w-100","w-md-50"],[1,"text-start","text-md-end","w-100","w-md-50"],["formControlName","username","type","text","id","form-username","autofocus","","autocomplete","username","autocapitalize","none",1,"form-control","custom-input"],["for","form-name",1,"mb-2","mb-md-0","w-100","w-md-50"],["formControlName","name","type","text","id","form-name","autocomplete","name",1,"form-control","custom-input"],["for","form-pass",1,"mb-2","mb-md-0","w-100","w-md-50"],["formControlName","password","type","password","autocomplete","new-password","id","form-pass",1,"form-control","custom-input"],["for","form-pass-confirm",1,"mb-2","mb-md-0","w-100","w-md-50"],["formControlName","passwordConfirm","type","password","autocomplete","new-password","id","form-pass-confirm",1,"form-control","custom-input"],[1,"list-group-item","d-flex","justify-content-between","align-items-center","flex-row","pb-2"],[1,"text-start"],[1,"text-end","grey-text","d-flex","align-items-center"],["formControlName","admin","type","checkbox","id","isAdmin",1,"rendux-input"],["for","isAdmin",1,"rendux-label","ms-3"],[1,"modal-footer","justify-content-between"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"text-center"],[1,"text-end"],["type","submit",1,"btn","btn-primary",3,"disabled"]],template:function(l,i){l&1&&(r(0,"div",0)(1,"form",1),_("ngSubmit",function(){return i.onSubmit(i.form)}),r(2,"div",2)(3,"h5",3),m(4),o(5,"translate"),a(),r(6,"button",4),o(7,"translate"),_("click",function(){return i.dismissModal()}),a()(),r(8,"div",5)(9,"div",6),d(10,"i",7),a(),r(11,"ul",8)(12,"li",9)(13,"label",10),m(14),o(15,"translate"),d(16,"app-required-indicator"),a(),r(17,"div",11),d(18,"input",12),o(19,"translate"),a()(),r(20,"li",9)(21,"label",13),m(22),o(23,"translate"),d(24,"app-required-indicator"),a(),r(25,"div",11),d(26,"input",14),o(27,"translate"),a()(),r(28,"li",9)(29,"label",15),m(30),o(31,"translate"),d(32,"app-required-indicator"),a(),r(33,"div",11),d(34,"input",16),o(35,"translate"),a()(),r(36,"li",9)(37,"label",17),m(38),o(39,"translate"),d(40,"app-required-indicator"),a(),r(41,"div",11),d(42,"input",18),o(43,"translate"),a()(),r(44,"li",19)(45,"span",20),m(46),o(47,"translate"),d(48,"app-required-indicator"),a(),r(49,"div",21),d(50,"input",22),o(51,"translate"),d(52,"label",23),a()()()(),r(53,"div",24)(54,"div",20)(55,"button",25),_("click",function(){return i.dismissModal()}),m(56),o(57,"translate"),a()(),d(58,"div",26),r(59,"div",27)(60,"button",28),m(61),o(62,"translate"),a()()()()()),l&2&&(e(),E("formGroup",i.form),e(3),u(s(5,24,"users.title_add_user")),e(2),f("aria-label",s(7,26,"form.button_close")),e(8),c(" ",s(15,28,"users.label_username")),e(4),$("is-invalid",i.form.controls.username.touched&&i.form.controls.username.invalid),f("aria-label",s(19,30,"users.label_username")),e(4),c(" ",s(23,32,"users.label_full_name")),e(4),$("is-invalid",i.form.controls.name.touched&&i.form.controls.name.invalid),f("aria-label",s(27,34,"users.label_full_name")),e(4),c(" ",s(31,36,"users.label_password")),e(4),$("is-invalid",i.form.controls.password.touched&&i.form.controls.password.invalid),f("aria-label",s(35,38,"users.label_password")),e(4),c(" ",s(39,40,"users.label_confirm_password")),e(4),$("is-invalid",i.form.controls.passwordConfirm.touched&&i.form.controls.passwordConfirm.invalid),f("aria-label",s(43,42,"users.label_confirm_password")),e(4),c(" ",s(47,44,"users.label_admin_user")),e(4),f("aria-label",s(51,46,"users.label_admin_user")),e(6),c(" ",s(57,48,"form.button_close")," "),e(4),E("disabled",!i.form.valid),e(),c(" ",s(62,50,"form.button_save")," "))},dependencies:[G,Y,j,W,P,X,L,te,ee,ae,M],encapsulation:2})}return n})();function Oe(n,x){n&1&&d(0,"app-required-indicator")}function Je(n,x){if(n&1&&(r(0,"li",9)(1,"label",29),m(2),o(3,"translate"),d(4,"app-required-indicator"),a(),r(5,"div",11),d(6,"input",30),o(7,"translate"),a()()),n&2){let t=v();e(2),c(" ",s(3,4,"users.label_confirm_password")),e(4),$("is-invalid",t.form.controls.passwordConfirm.touched&&t.form.controls.passwordConfirm.invalid),f("aria-label",s(7,6,"users.label_confirm_password"))}}function Qe(n,x){n&1&&(r(0,"div",22)(1,"div",25),m(2),o(3,"translate"),a()()),n&2&&(e(2),u(s(3,1,"common.phrases.are_you_sure")))}var Te=(()=>{class n{$activeModal=p(I);$api=p(B);$auth=p(K);$toastr=p(F);$translate=p(k);modalData=p(R);user=this.modalData.user;existingUsers=this.modalData.existingUsers||[];isCurrentUser=y(!1);deleteMode=y(!1);initialFormValue={};form=new q({username:new S("",[g.required]),name:new S("",[g.required]),password:new S("",[g.minLength(4)]),passwordConfirm:new S(""),admin:new S(!0)},this.matchPassword);isLastAdmin=oe(()=>this.user?.admin?this.existingUsers.filter(l=>l.admin).length<=1:!1);canDelete=oe(()=>!this.isCurrentUser()&&!this.isLastAdmin());ngOnInit(){this.user&&(this.isCurrentUser.set(this.$auth.user.username===this.user.username),this.form.patchValue(this.user),this.initialFormValue=this.form.getRawValue(),this.form.controls.username.addValidators(this.duplicateUsernameValidator.bind(this)),this.form.controls.username.updateValueAndValidity(),this.isLastAdmin()&&this.form.controls.admin.disable())}onSubmit(l){return w(this,arguments,function*({value:t}){if(this.user){if(this.deleteMode()){try{yield this.$api.delete(`/users/${this.user.id}`),this.$activeModal.close()}catch(i){console.error(i),this.$toastr.error(i.error?.message||i.message,this.$translate.instant("toast.title_error"))}return}try{yield this.$api.patch(`/users/${this.user.id}`,t),this.$activeModal.close(),this.isCurrentUser()&&t.username!==this.$auth.user.username&&this.$auth.logout()}catch(i){console.error(i),this.$toastr.error(i.error?.message||i.message,this.$translate.instant("toast.title_error"))}}})}toggleDeleteMode(t){this.deleteMode.set(!this.deleteMode()),this.deleteMode()?this.form.disable():(this.form.enable(),this.isLastAdmin()&&this.form.controls.admin.disable()),t.target.blur()}isFormUnchanged(){return this.form.controls.password.value?!1:JSON.stringify(this.form.getRawValue())===JSON.stringify(this.initialFormValue)}duplicateUsernameValidator(t){if(!t.value)return null;let l=t.value.trim();return l&&this.existingUsers.some(b=>b.id!==this.user.id&&b.username===l)?{duplicateUsername:!0}:null}dismissModal(){this.$activeModal.dismiss("Dismiss")}matchPassword(t){let l=t.get("password")?.value,i=t.get("passwordConfirm")?.value;return l!==i?(t.get("passwordConfirm")?.setErrors({matchPassword:!0}),{matchPassword:!0}):null}static \u0275fac=function(l){return new(l||n)};static \u0275cmp=U({type:n,selectors:[["ng-component"]],decls:60,vars:57,consts:[[1,"modal-content"],["novalidate","",3,"ngSubmit","formGroup"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body"],[1,"text-center","mb-3"],[1,"fas","fa-user-pen","primary-text",2,"font-size","75px"],[1,"list-group","list-group-box","mb-0"],[1,"list-group-item","d-flex","flex-column","flex-md-row","align-items-center"],["for","form-username",1,"mb-2","mb-md-0","w-100","w-md-50"],[1,"text-start","text-md-end","w-100","w-md-50"],["formControlName","username","type","text","id","form-username","autocomplete","off","autocapitalize","none",1,"form-control","custom-input"],["for","form-name",1,"mb-2","mb-md-0","w-100","w-md-50"],["formControlName","name","type","text","id","form-name","autocomplete","name",1,"form-control","custom-input"],["for","form-pass",1,"mb-2","mb-md-0","w-100","w-md-50"],["formControlName","password","type","password","autocomplete","new-password","id","form-pass",1,"form-control","custom-input"],[1,"list-group-item","d-flex","justify-content-between","align-items-center","flex-row","pb-2"],[1,"text-start"],[1,"text-end","grey-text","d-flex","align-items-center"],["type","checkbox","formControlName","admin","id","isAdmin",1,"rendux-input"],["for","isAdmin",1,"rendux-label","ms-3"],[1,"alert","alert-warning","mt-3","mb-0"],[1,"modal-footer","justify-content-between"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"text-center"],[1,"text-end"],["type","button",1,"btn","btn-elegant","me-2",3,"click","disabled"],["type","submit",1,"btn",3,"disabled"],["for","form-pass-confirm",1,"mb-2","mb-md-0","w-100","w-md-50"],["formControlName","passwordConfirm","type","password","autocomplete","new-password","id","form-pass-confirm",1,"form-control","custom-input"]],template:function(l,i){l&1&&(r(0,"div",0)(1,"form",1),_("ngSubmit",function(){return i.onSubmit(i.form)}),r(2,"div",2)(3,"h5",3),m(4),o(5,"translate"),a(),r(6,"button",4),o(7,"translate"),_("click",function(){return i.dismissModal()}),a()(),r(8,"div",5)(9,"div",6),d(10,"i",7),a(),r(11,"ul",8)(12,"li",9)(13,"label",10),m(14),o(15,"translate"),d(16,"app-required-indicator"),a(),r(17,"div",11),d(18,"input",12),o(19,"translate"),a()(),r(20,"li",9)(21,"label",13),m(22),o(23,"translate"),d(24,"app-required-indicator"),a(),r(25,"div",11),d(26,"input",14),o(27,"translate"),a()(),r(28,"li",9)(29,"label",15),m(30),o(31,"translate"),C(32,Oe,1,0,"app-required-indicator"),a(),r(33,"div",11),d(34,"input",16),o(35,"translate"),a()(),C(36,Je,8,8,"li",9),r(37,"li",17)(38,"span",18),m(39),o(40,"translate"),d(41,"app-required-indicator"),a(),r(42,"div",19),d(43,"input",20),o(44,"translate"),d(45,"label",21),a()()(),C(46,Qe,4,3,"div",22),a(),r(47,"div",23)(48,"div",18)(49,"button",24),_("click",function(){return i.dismissModal()}),m(50),o(51,"translate"),a()(),d(52,"div",25),r(53,"div",26)(54,"button",27),o(55,"translate"),_("click",function(ke){return i.toggleDeleteMode(ke)}),d(56,"i"),a(),r(57,"button",28),m(58),o(59,"translate"),a()()()()()),l&2&&(e(),E("formGroup",i.form),e(3),u(s(5,31,"users.title_edit_user")),e(2),f("aria-label",s(7,33,"form.button_close")),e(5),ue("opacity",i.deleteMode()?"0.25":"1"),e(3),c(" ",s(15,35,"users.label_username")),e(4),$("is-invalid",i.form.controls.username.touched&&i.form.controls.username.invalid),f("aria-label",s(19,37,"users.label_username")),e(4),c(" ",s(23,39,"users.label_full_name")),e(4),$("is-invalid",i.form.controls.name.touched&&i.form.controls.name.invalid),f("aria-label",s(27,41,"users.label_full_name")),e(4),c(" ",s(31,43,"users.label_new_password")),e(2),h(i.form.controls.password.value?32:-1),e(2),$("is-invalid",i.form.controls.password.touched&&i.form.controls.password.invalid),f("aria-label",s(35,45,"users.label_new_password")),e(2),h(i.form.controls.password.value?36:-1),e(3),c(" ",s(40,47,"users.label_admin_user")),e(4),f("aria-label",s(44,49,"users.label_admin_user")),e(3),h(i.deleteMode()?46:-1),e(4),c(" ",s(51,51,"form.button_close")," "),e(4),E("disabled",!i.canDelete()),f("aria-label",s(55,53,"users.button_delete_user")),e(2),Q(i.deleteMode()?"fas fa-undo":"fas fa-trash"),e(),Q(i.deleteMode()?"btn-danger":"btn-primary"),E("disabled",!i.deleteMode()&&(!i.form.valid||i.isFormUnchanged())),e(),c(" ",s(59,55,i.deleteMode()?"form.button_delete":"form.button_save")," "))},dependencies:[G,Y,j,W,P,X,L,te,ee,ae,M],encapsulation:2})}return n})();var $e=(()=>{class n{$activeModal=p(I);dismissModal(){this.$activeModal.dismiss("Dismiss")}static \u0275fac=function(l){return new(l||n)};static \u0275cmp=U({type:n,selectors:[["ng-component"]],decls:46,vars:36,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click"],[1,"modal-body"],[1,"text-center","mb-3"],[1,"fa","fa-question-circle-o","primary-text",2,"font-size","75px"],[1,"ms-2"],[1,"mb-0"],[1,"mb-2","grey-text"],[1,"modal-footer","justify-content-between"],[1,"text-start"],[1,"text-center"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click"],[1,"text-end"]],template:function(l,i){l&1&&(r(0,"div",0)(1,"form")(2,"div",1)(3,"h5",2),m(4),o(5,"translate"),a(),r(6,"button",3),o(7,"translate"),_("click",function(){return i.dismissModal()}),a()(),r(8,"div",4)(9,"div",5),d(10,"i",6),a(),r(11,"h5",7),m(12),o(13,"translate"),a(),r(14,"ul",8)(15,"li"),m(16),o(17,"translate"),a(),r(18,"ul",9)(19,"li"),m(20),o(21,"translate"),a(),r(22,"li"),m(23),o(24,"translate"),a(),r(25,"li"),m(26),o(27,"translate"),o(28,"translate"),a(),r(29,"li"),m(30),o(31,"translate"),a(),r(32,"li"),m(33),o(34,"translate"),a()(),r(35,"li"),m(36),o(37,"translate"),a()(),d(38,"app-support-banner"),a(),r(39,"div",10),d(40,"div",11),r(41,"div",12)(42,"button",13),_("click",function(){return i.dismissModal()}),m(43),o(44,"translate"),a()(),d(45,"div",14),a()()()),l&2&&(e(4),u(s(5,12,"support.title")),e(2),f("aria-label",s(7,14,"form.button_close")),e(6),u(s(13,16,"users.title_users")),e(4),u(s(17,18,"users.support.acc_1")),e(4),u(s(21,20,"menu.label_status")),e(3),u(s(24,22,"menu.label_plugins")),e(3),fe("",s(27,24,"menu.label_accessories")," (",s(28,26,"users.support.control"),")"),e(4),u(s(31,28,"menu.linux.label_logs")),e(3),u(s(34,30,"support.title")),e(3),u(s(37,32,"users.support.acc_2")),e(7),c(" ",s(44,34,"form.button_close")," "))},dependencies:[Se,M],encapsulation:2})}return n})();var He=(n,x)=>({"fa-user-secret":n,"fa-user":x});function Ke(n,x){if(n&1){let t=N();D(0,"button",21),O("click",function(){A(t);let i=v(2).$implicit,b=v();return V(b.disable2fa(i))}),m(1),o(2,"translate"),T()}if(n&2){let t=v(2).$implicit,l=v();re("disabled",t.username!==l.username),e(),c(" ",s(2,2,"users.setup_2fa_disable")," ")}}function We(n,x){if(n&1){let t=N();D(0,"button",22),O("click",function(){A(t);let i=v(2).$implicit,b=v();return V(b.setup2fa(i))}),m(1),o(2,"translate"),T()}if(n&2){let t=v(2).$implicit,l=v();re("disabled",t.username!==l.username),e(),c(" ",s(2,2,"users.setup_2fa")," ")}}function Xe(n,x){if(n&1&&C(0,Ke,3,4,"button",19)(1,We,3,4,"button",20),n&2){let t=v().$implicit;h(t.otpActive?0:1)}}function Ye(n,x){n&1&&z(0,"div")}function Ze(n,x){if(n&1){let t=N();D(0,"div",9)(1,"div",10)(2,"div",11)(3,"div",12)(4,"span",13)(5,"h4"),m(6),T(),D(7,"h5",14),z(8,"i",15),m(9),T()()(),D(10,"div",16),C(11,Xe,2,1)(12,Ye,1,0,"div"),D(13,"div")(14,"button",17),o(15,"translate"),O("click",function(){let i=A(t).$implicit,b=v();return V(b.openEditUser(i))}),z(16,"i",18),T()()()()()()}if(n&2){let t=x.$implicit;e(6),u(t.name),e(2),Q(_e(8,He,t.admin,!t.admin)),e(),c(" ",t.username," "),e(2),h(t.admin?11:12),e(3),f("aria-label",s(15,6,"form.button_edit"))}}var ci=(()=>{class n{injector=p(le);destroyRef=p(me);$api=p(B);$auth=p(K);$modal=p(we);$route=p(Ce);$settings=p(he);$translate=p(k);homebridgeUsers=y([]);username=this.$auth.user.username;isAdmin=this.$auth.user.admin;ngOnInit(){let t=this.$translate.instant("users.title_users");this.$settings.setPageTitle(t),this.$route.data.pipe(xe(this.destroyRef)).subscribe(l=>{this.homebridgeUsers.set(l.homebridgeUsers)})}reloadUsers(){return w(this,null,function*(){let t=yield this.$api.get("/users");this.homebridgeUsers.set(t)})}openAddNewUser(){return w(this,null,function*(){let t=J([{provide:ie,useValue:{existingUsers:this.homebridgeUsers()}}],this.injector),l=this.$modal.open(De,{size:"lg",backdrop:"static",injector:t});try{yield l.result,this.reloadUsers()}catch{}})}openEditUser(t){return w(this,null,function*(){let l=J([{provide:R,useValue:{user:t,existingUsers:this.homebridgeUsers()}}],this.injector),i=this.$modal.open(Te,{size:"lg",backdrop:"static",injector:l});try{yield i.result,this.reloadUsers()}catch{}})}setup2fa(t){return w(this,null,function*(){let l=J([{provide:R,useValue:{user:t}}],this.injector),i=this.$modal.open(Me,{size:"lg",backdrop:"static",injector:l});try{yield i.result,this.reloadUsers()}catch{}})}disable2fa(t){return w(this,null,function*(){let l=J([{provide:R,useValue:{user:t}}],this.injector),i=this.$modal.open(ye,{size:"lg",backdrop:"static",injector:l});try{yield i.result,this.reloadUsers()}catch{}})}openSupport(){this.$modal.open($e,{size:"lg",backdrop:"static"})}static \u0275fac=function(l){return new(l||n)};static \u0275cmp=U({type:n,selectors:[["app-users"]],decls:15,vars:9,consts:[[1,"row","mb-3"],[1,"col-6"],[1,"primary-text","m-0"],[1,"col-6","text-end"],[1,"btn","btn-elegant","waves-effect","m-0","me-2",3,"click"],[1,"fas","fa-user-plus"],["type","button",1,"btn","btn-elegant","my-0","me-0",3,"click"],[1,"fa","fa-question-circle-o"],[1,"row"],[1,"col-md-6","mb-4"],[1,"card","card-body"],[1,"d-flex","flex-column"],[1,"d-flex","flex-row","mb-3"],[1,"me-auto","my-0"],[1,"small","text-truncate","grey-text"],[1,"fas"],[1,"d-flex","flex-row","justify-content-between"],[1,"btn","btn-elegant","m-0",3,"click"],[1,"fas","fa-user-pen"],[1,"btn","btn-elegant","m-0",3,"disabled"],[1,"btn","btn-primary","m-0",3,"disabled"],[1,"btn","btn-elegant","m-0",3,"click","disabled"],[1,"btn","btn-primary","m-0",3,"click","disabled"]],template:function(l,i){l&1&&(D(0,"div",0)(1,"div",1)(2,"h3",2),m(3),o(4,"translate"),T()(),D(5,"div",3)(6,"button",4),o(7,"translate"),O("click",function(){return i.openAddNewUser()}),z(8,"i",5),T(),D(9,"button",6),o(10,"translate"),O("click",function(){return i.openSupport()}),z(11,"i",7),T()()(),D(12,"div",8),pe(13,Ze,17,11,"div",9,de),T()),l&2&&(e(3),u(s(4,3,"users.title_users")),e(3),f("aria-label",s(7,5,"users.button_add_user")),e(3),f("aria-label",s(10,7,"support.title")),e(4),ce(i.homebridgeUsers()))},dependencies:[M],encapsulation:2})}return n})();export{ci as UsersComponent};
@@ -1 +1 @@
1
- import{a as d}from"./chunk-H7F7H5MW.js";import{C as n,F as c,I as p}from"./chunk-VWUZDCBZ.js";import{X as r,aa as a}from"./chunk-F5MBSCH4.js";import{g as b,h as s}from"./chunk-B4AJQJMI.js";var m=b(d(),1);var v=(()=>{class e{$api=a(p);$toastr=a(c);$translate=a(n);downloadBackup(){return s(this,null,function*(){let t=yield this.$api.get("/backup/download",{observe:"response",responseType:"blob"}),i=t.headers.get("File-Name")||"homebridge-backup.tar.gz",o=t.body.size;if(o>globalThis.backup.maxBackupSize){let l=this.$translate.instant("backup.backup_exceeds_max_size",{maxBackupSizeText:globalThis.backup.maxBackupSizeText,size:`${(o/1048576).toFixed(1)}MB`});this.$toastr.warning(l,this.$translate.instant("toast.title_warning"))}(0,m.saveAs)(t.body,i)})}static \u0275fac=function(i){return new(i||e)};static \u0275prov=r({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();export{v as a};
1
+ import{a as d}from"./chunk-V62JRIHN.js";import{C as n,F as c,I as p}from"./chunk-7AD56BSX.js";import{X as r,aa as a}from"./chunk-JJ5CEM72.js";import{g as b,h as s}from"./chunk-VJN6YUS2.js";var m=b(d(),1);var v=(()=>{class e{$api=a(p);$toastr=a(c);$translate=a(n);downloadBackup(){return s(this,null,function*(){let t=yield this.$api.get("/backup/download",{observe:"response",responseType:"blob"}),i=t.headers.get("File-Name")||"homebridge-backup.tar.gz",o=t.body.size;if(o>globalThis.backup.maxBackupSize){let l=this.$translate.instant("backup.backup_exceeds_max_size",{maxBackupSizeText:globalThis.backup.maxBackupSizeText,size:`${(o/1048576).toFixed(1)}MB`});this.$toastr.warning(l,this.$translate.instant("toast.title_warning"))}(0,m.saveAs)(t.body,i)})}static \u0275fac=function(i){return new(i||e)};static \u0275prov=r({token:e,factory:e.\u0275fac,providedIn:"root"})}return e})();export{v as a};
@@ -1 +1 @@
1
- import{b as c}from"./chunk-664C4LX2.js";import{H as r}from"./chunk-VWUZDCBZ.js";import{X as a,aa as o}from"./chunk-F5MBSCH4.js";import{h as i}from"./chunk-B4AJQJMI.js";var h=(()=>{class t{cache=null;CACHE_DURATION_MS=6e4;getToken(){let n=Date.now();if(this.cache&&n-this.cache.timestamp<this.CACHE_DURATION_MS)return this.cache.token;let e=window.localStorage.getItem(r.jwt.tokenKey);return this.cache={token:e,timestamp:n},e}invalidateCache(){this.cache=null}static \u0275fac=function(e){return new(e||t)};static \u0275prov=a({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var p=(()=>{class t{$auth=o(c);$tokenCache=o(h);isAuthenticated(){return i(this,null,function*(){if(!this.$tokenCache.getToken())return this.$auth.token=null,this.$auth.user={},this.$tokenCache.invalidateCache(),!1;try{let e=this.$auth.isLoggedIn();return e||(this.$auth.token=null,this.$auth.user={},this.$tokenCache.invalidateCache()),e}catch{return console.warn("Token validation error, clearing auth state"),this.$auth.logout(),this.$tokenCache.invalidateCache(),!1}})}static \u0275fac=function(e){return new(e||t)};static \u0275prov=a({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();export{p as a};
1
+ import{b as c}from"./chunk-VY4NTNG3.js";import{H as r}from"./chunk-7AD56BSX.js";import{X as a,aa as o}from"./chunk-JJ5CEM72.js";import{h as i}from"./chunk-VJN6YUS2.js";var h=(()=>{class t{cache=null;CACHE_DURATION_MS=6e4;getToken(){let n=Date.now();if(this.cache&&n-this.cache.timestamp<this.CACHE_DURATION_MS)return this.cache.token;let e=window.localStorage.getItem(r.jwt.tokenKey);return this.cache={token:e,timestamp:n},e}invalidateCache(){this.cache=null}static \u0275fac=function(e){return new(e||t)};static \u0275prov=a({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();var p=(()=>{class t{$auth=o(c);$tokenCache=o(h);isAuthenticated(){return i(this,null,function*(){if(!this.$tokenCache.getToken())return this.$auth.token=null,this.$auth.user={},this.$tokenCache.invalidateCache(),!1;try{let e=this.$auth.isLoggedIn();return e||(this.$auth.token=null,this.$auth.user={},this.$tokenCache.invalidateCache()),e}catch{return console.warn("Token validation error, clearing auth state"),this.$auth.logout(),this.$tokenCache.invalidateCache(),!1}})}static \u0275fac=function(e){return new(e||t)};static \u0275prov=a({token:t,factory:t.\u0275fac,providedIn:"root"})}return t})();export{p as a};
@@ -1,4 +1,4 @@
1
- import{a as vt,b as $t,c as Ht,d as St}from"./chunk-CP2QJXVO.js";import{a as Ct}from"./chunk-UHG23NUX.js";import{a as Ot}from"./chunk-H7F7H5MW.js";import{u as U,x as wt}from"./chunk-HH2FDI7W.js";import{a as Et}from"./chunk-FNRDBHYN.js";import{b as B}from"./chunk-ZCGZM7LU.js";import{a as kt,b as xt}from"./chunk-NYEZF6Y3.js";import{a as q}from"./chunk-OTMZDL7S.js";import{s as _t,t as yt}from"./chunk-RDHUW73W.js";import{c as pt,e as I}from"./chunk-CAY6MDP6.js";import{C as ut,D as bt,c as mt,e as ft,l as ht}from"./chunk-JPAZUSRO.js";import{b as gt}from"./chunk-MAJDTCMY.js";import{C as O,D as H,F as N,I as F,h as ct}from"./chunk-VWUZDCBZ.js";import{Ab as S,Cb as rt,Db as at,Dc as r,Eb as lt,Ec as l,Fb as _,Fc as X,Gb as a,Hb as d,Ib as m,Rb as E,Xb as y,Za as o,Zb as p,aa as g,ea as st,ga as u,ha as b,hb as ot,ic as dt,jc as Y,kc as C,lc as M,mb as G,mc as V,n as nt,nb as R,sa as k,yb as $,yc as Q,zb as x}from"./chunk-F5MBSCH4.js";import{a as j,b as K,d as et,g as it,h as w}from"./chunk-B4AJQJMI.js";var Dt=it(Ht(),1);var Mt=it(Ot(),1);var Tt=(s,v)=>({"fa-trash":s,"fa-circle-notch fa-spin":v});function Ft(s,v){s&1&&(a(0,"div",13),m(1,"i",20),d())}function Ut(s,v){if(s&1){let t=E();a(0,"li",9)(1,"span"),C(2),r(3,"date"),m(4,"br"),a(5,"span",21),C(6),r(7,"date"),d()(),a(8,"span",22)(9,"button",25),r(10,"translate"),r(11,"translate"),y("click",function(){let i=u(t).$implicit,n=p(2);return b(n.restore(i.id))}),m(12,"i",26),d(),a(13,"button",27),r(14,"translate"),r(15,"translate"),y("click",function(){let i=u(t).$implicit,n=p(2);return b(n.download(i.id))}),m(16,"i",28),d(),a(17,"button",23),r(18,"translate"),r(19,"translate"),y("click",function(){let i=u(t).$implicit,n=p(2);return b(n.delete(i.id))}),m(20,"i",24),d()()()}if(s&2){let t=v.$implicit,e=p(2);o(2),V(" ",X(3,16,t.timestamp,"mediumDate")),o(4),M(X(7,19,t.timestamp,"shortTime")),o(3),_("disabled",e.clicked()||e.deleting())("ngbTooltip",l(10,22,"config.restore.copy_to_editor"))("openDelay",150),$("aria-label",l(11,24,"config.restore.copy_to_editor")),o(4),_("disabled",e.clicked()||e.deleting())("ngbTooltip",l(14,26,"form.button_download"))("openDelay",150),$("aria-label",l(15,28,"form.button_download")),o(4),_("disabled",e.clicked()||e.deleting())("ngbTooltip",l(18,30,"form.button_delete"))("openDelay",150),$("aria-label",l(19,32,"form.button_delete")),o(3),Y(Q(34,Tt,t.id!==e.deleting(),t.id===e.deleting()))}}function qt(s,v){if(s&1){let t=E();a(0,"ul",14),at(1,Ut,21,37,"li",9,rt),a(3,"li",9)(4,"span"),C(5),r(6,"translate"),m(7,"br"),a(8,"span",21),C(9),r(10,"translate"),d()(),a(11,"span",22)(12,"button",23),r(13,"translate"),r(14,"translate"),y("click",function(){u(t);let i=p();return b(i.deleteAllBackups())}),m(15,"i",24),d()()()()}if(s&2){let t=p();o(),lt(t.backupList()),o(4),V(" ",l(6,8,"form.button_delete_all")),o(4),M(l(10,10,"common.labels.no_confirmation")),o(3),_("disabled",t.clicked()||t.deleting())("ngbTooltip",l(13,12,"form.button_delete_all"))("openDelay",150),$("aria-label",l(14,14,"form.button_delete")),o(3),Y(Q(16,Tt,t.deleting()!=="all",t.deleting()==="all"))}}var Bt=(()=>{class s{$activeModal=g(_t);$api=g(F);$router=g(I);$toastr=g(N);$translate=g(O);modalData=g(U);currentConfig=this.modalData.currentConfig;fromSettings=this.modalData.fromSettings??!1;loading=k(!0);backupList=k([]);clicked=k(!1);deleting=k(null);ngOnInit(){this.getConfigBackups()}getConfigBackups(){return w(this,null,function*(){try{let t=yield this.$api.get("/config-editor/backups");this.loading.set(!1),this.backupList.set(t)}catch(t){this.loading.set(!1),console.error(t),this.$toastr.error(t.error?.message||t.message,this.$translate.instant("toast.title_error")),this.dismissModal()}})}restore(t){return this.$activeModal.close(t)}download(t){return w(this,null,function*(){this.clicked.set(!0);try{let e=yield this.$api.get(`/config-editor/backups/${t}`),i=JSON.stringify(e,null,4),n=new Blob([i],{type:"application/json"}),f=`config-backup-${t}.json`;(0,Mt.saveAs)(n,f),this.clicked.set(!1)}catch(e){this.clicked.set(!1),this.$toastr.error(e.error?.message||e.message,this.$translate.instant("toast.title_error")),console.error(e)}})}downloadCurrentConfig(){let t=`data:text/json;charset=utf-8,${encodeURIComponent(this.currentConfig)}`,e=document.createElement("a");e.setAttribute("href",t),e.setAttribute("download","config.json"),document.body.appendChild(e),e.click(),e.remove()}delete(t){return w(this,null,function*(){this.deleting.set(t);try{yield this.$api.delete(`/config-editor/backups/${t}`),yield this.getConfigBackups(),this.deleting.set(null)}catch(e){this.deleting.set(null),this.$toastr.error(e.error?.message||e.message,this.$translate.instant("toast.title_error")),console.error(e)}})}deleteAllBackups(){return w(this,null,function*(){this.deleting.set("all");try{yield this.$api.delete("/config-editor/backups"),this.$toastr.success(this.$translate.instant("config.restore.toast_backups_deleted"),this.$translate.instant("toast.title_success")),this.backupList.set([]),this.deleting.set(null)}catch(t){this.$toastr.error(t.error?.message||t.message,this.$translate.instant("toast.title_error")),console.error(t),this.deleting.set(null)}})}dismissModal(){this.fromSettings&&this.$router.navigate(["/settings"]),this.$activeModal.dismiss("Dismiss")}static \u0275fac=function(e){return new(e||s)};static \u0275cmp=R({type:s,selectors:[["ng-component"]],decls:40,vars:31,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click","disabled"],[1,"modal-body"],[1,"text-center","mb-3"],[1,"fas","fa-history","primary-text",2,"font-size","75px"],[1,"mb-3"],[1,"list-group","list-group-box","mb-0"],[1,"list-group-item","d-flex","justify-content-between","align-items-center"],[1,"grey-text"],[1,"btn","btn-primary","m-0","ms-3","py-1",3,"click","disabled"],[1,"fas","fa-arrow-right"],[1,"text-center","primary-text"],[1,"list-group","list-group-box","mt-3"],[1,"modal-footer","justify-content-between"],[1,"text-start"],[1,"text-center"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click","disabled"],[1,"text-end"],[1,"fa","fa-circle-notch","fa-spin","mt-3",2,"font-size","75px"],[1,"grey-text","small"],[2,"display","flex","flex-wrap","nowrap"],["placement","bottom","container","modal","triggers","hover",1,"btn","btn-danger","m-0","ms-2",3,"click","disabled","ngbTooltip","openDelay"],[1,"fas"],["placement","bottom","container","modal","triggers","hover",1,"btn","btn-primary","m-0","ms-3","py-1",3,"click","disabled","ngbTooltip","openDelay"],[1,"fas","fa-history"],["placement","bottom","container","modal","triggers","hover",1,"btn","btn-primary","m-0","ms-2",3,"click","disabled","ngbTooltip","openDelay"],[1,"fas","fa-download"]],template:function(e,i){e&1&&(a(0,"div",0)(1,"div",1)(2,"h5",2),C(3),r(4,"translate"),d(),a(5,"button",3),r(6,"translate"),y("click",function(){return i.dismissModal()}),d()(),a(7,"div",4)(8,"div",5),m(9,"i",6),d(),a(10,"ul",7)(11,"li"),C(12),r(13,"translate"),d(),a(14,"li"),C(15),r(16,"translate"),d()(),a(17,"ul",8)(18,"li",9)(19,"div")(20,"span"),C(21),r(22,"translate"),d(),m(23,"br"),a(24,"small",10),C(25),r(26,"translate"),d()(),a(27,"button",11),r(28,"translate"),y("click",function(){return i.downloadCurrentConfig()}),m(29,"i",12),d()()(),x(30,Ft,2,0,"div",13)(31,qt,16,19,"ul",14),d(),a(32,"div",15),m(33,"div",16),a(34,"div",17)(35,"button",18),r(36,"translate"),y("click",function(){return i.dismissModal()}),C(37),r(38,"translate"),d()(),m(39,"div",19),d()()),e&2&&(o(3),M(l(4,13,"config.restore.title")),o(2),_("disabled",i.clicked()||i.deleting()),$("aria-label",l(6,15,"form.button_close")),o(7),M(l(13,17,"config.restore.help_1")),o(3),M(l(16,19,"config.restore.help_2")),o(6),M(l(22,21,"form.button_download")),o(4),M(l(26,23,"config.restore.download")),o(2),_("disabled",i.clicked()||i.deleting()),$("aria-label",l(28,25,"backup.backup_now")),o(3),S(i.loading()?30:i.backupList().length?31:-1),o(5),_("disabled",i.clicked()||i.deleting()),$("aria-label",l(36,27,"form.button_close")),o(2),V(" ",l(38,29,"form.button_close")," "))},dependencies:[q,bt,ct,H],encapsulation:2})}return s})();function zt(s,v){if(s&1){let t=E();a(0,"button",13),r(1,"translate"),r(2,"translate"),y("click",function(){u(t);let i=p();return b(i.onCancelRestore())}),m(3,"i",14),d()}if(s&2){let t=p();_("disabled",t.saveInProgress())("openDelay",150)("ngbTooltip",l(1,4,"form.button_cancel")),$("aria-label",l(2,6,"form.button_cancel"))}}function Lt(s,v){if(s&1){let t=E();a(0,"button",15),r(1,"translate"),r(2,"translate"),y("click",function(){u(t);let i=p();return b(i.onRestore())}),m(3,"i",16),d()}s&2&&(_("openDelay",150)("ngbTooltip",l(1,3,"form.button_restore")),$("aria-label",l(2,5,"form.button_restore")))}function Jt(s,v){if(s&1){let t=E();a(0,"button",15),r(1,"translate"),r(2,"translate"),y("click",function(){u(t);let i=p();return b(i.toggleSideBySide())}),m(3,"i",17),d()}if(s&2){let t=p();_("openDelay",150)("ngbTooltip",l(1,7,t.renderSideBySide()?"config.restore.view_inline":"config.restore.view_side_by_side")),$("aria-label",l(2,9,t.renderSideBySide()?"config.restore.view_inline":"config.restore.view_side_by_side")),o(3),dt("fa-columns",!t.renderSideBySide())("fa-bars",t.renderSideBySide())}}function Wt(s,v){s&1&&m(0,"i",8)}function Kt(s,v){s&1&&m(0,"i",9)}function Gt(s,v){if(s&1){let t=E();a(0,"ngx-monaco-editor",18),y("onInit",function(i){u(t);let n=p();return b(n.onEditorInit(i))})("keydown.control.s",function(i){u(t);let n=p();return i.preventDefault(),b(n.onSave())})("keydown.meta.s",function(i){u(t);let n=p();return i.preventDefault(),b(n.onSave())}),d()}if(s&2){let t=p();_("options",t.editorOptions)("model",t.monacoEditorModel)}}function Yt(s,v){if(s&1){let t=E();a(0,"ngx-monaco-diff-editor",19),y("onInit",function(i){u(t);let n=p();return b(n.onInitDiffEditor(i))})("keydown.control.s",function(i){u(t);let n=p();return i.preventDefault(),b(n.onSave())})("keydown.meta.s",function(i){u(t);let n=p();return i.preventDefault(),b(n.onSave())}),d()}if(s&2){let t=p();_("options",t.editorOptions)("originalModel",t.diffOriginalModel)("modifiedModel",t.diffModifiedModel)}}function Qt(s,v){if(s&1){let t=E();a(0,"textarea",20),y("ngModelChange",function(i){u(t);let n=p();return b(n.homebridgeConfig.set(i))}),C(1," "),d()}if(s&2){let t=p();_("ngModel",t.homebridgeConfig())}}var Pe=(()=>{class s{injector=g(st);$api=g(F);$md=g(Ct);$modal=g(yt);$monacoEditor=g(Et);$renderer=g(ot);$route=g(pt);$router=g(I);$settings=g(gt);$toastr=g(N);$translate=g(O);editorDecorations=[];lastHeight;visualViewPortEventCallback;latestSavedConfig;childBridgesToRestart=[];hbPendingRestart=!1;isDebugModeEnabled=this.$settings.isFeatureEnabled("childBridgeDebugMode");isMatterSupported=this.$settings.isFeatureEnabled("matterSupport");homebridgeConfig=k("");originalConfig=k("");saveInProgress=k(!1);isMobile=k(!1);monacoEditor;editorOptions;monacoEditorModel;diffOriginalModel;diffModifiedModel;renderSideBySide=k(!1);constructor(){this.isMobile.set(!!this.$md.detect.mobile())}ngOnInit(){let t=this.$translate.instant("menu.config_json_editor");this.$settings.setPageTitle(t),this.editorOptions={language:"json",theme:this.$settings.actualLightingMode==="dark"?"vs-dark":"vs-light",renderSideBySide:this.renderSideBySide(),renderIndicators:!0,ignoreTrimWhitespace:!1,glyphMargin:!0};let e=document.querySelector(".content");this.$renderer.setStyle(e,"height","100%"),this.visualViewPortEventCallback=()=>this.visualViewPortChanged(),this.lastHeight=window.innerHeight,window.visualViewport&&!this.isMobile()&&(window.visualViewport.addEventListener("resize",this.visualViewPortEventCallback,!0),this.$md.disableTouchMove()),this.visualViewPortEventCallback=()=>this.visualViewPortChanged(),this.lastHeight=window.innerHeight,window.visualViewport&&!this.isMobile()&&(window.visualViewport.addEventListener("resize",this.visualViewPortEventCallback,!0),this.$md.disableTouchMove()),this.$route.data.subscribe(n=>{this.homebridgeConfig.set(n.config),this.latestSavedConfig=JSON.parse(n.config),this.diffModifiedModel&&this.updateDiffModels()}),this.monacoEditorModel={value:"{}",language:"json",uri:window.monaco?window.monaco.Uri.parse("a://homebridge/config.json"):void 0},this.diffOriginalModel={code:"",language:"json"},this.diffModifiedModel={code:this.homebridgeConfig()||"{}",language:"json"},window.monaco?this.setMonacoEditorModel():this.waitForMonaco();let{action:i}=this.$router.parseUrl(this.$router.url).queryParams;if(i){switch(i){case"restore":{this.onRestore(!0);break}}this.$router.navigate([],{queryParams:{},replaceUrl:!0,queryParamsHandling:""})}}waitForMonaco(){return w(this,null,function*(){try{yield nt(this.$monacoEditor.readyEvent),this.setMonacoEditorModel()}catch(t){console.error("Failed to wait for monaco ready event:",t)}})}onEditorInit(t){window.editor=t,this.monacoEditor=t;let e=this.monacoEditor.getModel();e&&e.setValue(this.homebridgeConfig())}onInitDiffEditor(t){this.monacoEditor=t.getModifiedEditor(),this.updateDiffModels(),window.editor=t}updateDiffModels(){if(this.diffOriginalModel&&(this.diffOriginalModel.code=this.originalConfig()||""),this.diffModifiedModel&&(this.diffModifiedModel.code=this.homebridgeConfig()||"{}"),window.editor&&window.editor.getOriginalEditor){let t=window.editor.getOriginalEditor(),e=window.editor.getModifiedEditor();if(t&&e){let i=t.getModel(),n=e.getModel();i&&i.setValue(this.originalConfig()||""),n&&n.setValue(this.homebridgeConfig()||"{}")}}}onSave(){return w(this,null,function*(){if(!this.saveInProgress()){this.monacoEditor&&(this.editorDecorations=this.monacoEditor.deltaDecorations(this.editorDecorations,[])),this.saveInProgress.set(!0);try{if(!this.isMobile()){yield this.monacoEditor.getAction("editor.action.formatDocument").run();let e=window.monaco.editor.getModelMarkers({owner:"json"});for(let i of e)if(i.message==="Duplicate object key"){this.saveInProgress.set(!1),this.$toastr.error(this.$translate.instant("config.config_invalid_json"),this.$translate.instant("toast.title_error"));return}this.homebridgeConfig.set(this.monacoEditor.getModel().getValue())}let t=this.parseConfigFromEditor();this.homebridgeConfig.set(JSON.stringify(t,null,4)),typeof t.bridge!="object"?this.$toastr.error(this.$translate.instant("config.config_bridge_missing"),this.$translate.instant("toast.title_error")):/^(?:[0-9A-F]{2}:){5}[0-9A-F]{2}$/i.test(t.bridge.username)?t.accessories&&!Array.isArray(t.accessories)?this.$toastr.error(this.$translate.instant("config.config_accessory_must_be_array"),this.$translate.instant("toast.title_error")):t.platforms&&!Array.isArray(t.platforms)?this.$toastr.error(this.$translate.instant("config.config_platform_must_be_array"),this.$translate.instant("toast.title_error")):t.platforms&&Array.isArray(t.platforms)&&!this.validateSection(t.platforms,"platform")||t.accessories&&Array.isArray(t.accessories)&&!this.validateSection(t.accessories,"accessory")||t.plugins&&Array.isArray(t.plugins)&&!this.validatePlugins(t.plugins,"plugins")||t.disabledPlugins&&Array.isArray(t.disabledPlugins)&&!this.validatePlugins(t.disabledPlugins,"disabledPlugins")||(yield this.saveConfig(t),this.originalConfig.set("")):this.$toastr.error(this.$translate.instant("config.config_username_error"),this.$translate.instant("toast.title_error"))}catch(t){console.error(t),this.$toastr.error(this.$translate.instant("config.config_invalid_json"),this.$translate.instant("toast.title_error"))}this.saveInProgress.set(!1)}})}onRestore(t=!1){return w(this,null,function*(){let e=G([{provide:U,useValue:{currentConfig:this.homebridgeConfig(),fromSettings:t}}],this.injector),i=this.$modal.open(Bt,{size:"lg",backdrop:"static",injector:e});try{let n=yield i.result;try{this.originalConfig()||(this.originalConfig.set(this.homebridgeConfig()),this.updateDiffModels());let f=yield this.$api.get(`/config-editor/backups/${n}`);this.$toastr.info(this.$translate.instant("config.restore.confirm"),this.$translate.instant("config.title_backup_loaded")),this.homebridgeConfig.set(JSON.stringify(f,null,4)),this.updateDiffModels(),this.monacoEditor&&window.editor.modifiedEditor&&(this.editorDecorations=this.monacoEditor.deltaDecorations(this.editorDecorations,[]),this.monacoEditor.executeEdits("beautifier",[{identifier:"delete",range:new monaco.Range(1,1,this.monacoEditor.getModel().getLineCount()+10,1),text:"",forceMoveMarkers:!0}]),this.monacoEditor.executeEdits("beautifier",[{identifier:"insert",range:new monaco.Range(1,1,1,1),text:this.homebridgeConfig(),forceMoveMarkers:!0}]))}catch(f){console.error(f);let h=f?.error?.message||this.$translate.instant("backup.load_error");this.$toastr.error(h,this.$translate.instant("toast.title_error"))}}catch{}})}onCancelRestore(){if(window.editor&&window.editor.dispose)try{window.editor.dispose(),window.editor=void 0}catch{}this.homebridgeConfig.set(this.originalConfig()),this.originalConfig.set(""),this.renderSideBySide()&&this.toggleSideBySide(),this.updateDiffModels(),this.onRestore()}toggleSideBySide(){this.renderSideBySide.set(!this.renderSideBySide()),this.editorOptions=K(j({},this.editorOptions),{renderSideBySide:this.renderSideBySide()})}ngOnDestroy(){let t=document.querySelector(".content");this.$renderer.removeStyle(t,"height"),window.visualViewport&&(window.visualViewport.removeEventListener("resize",this.visualViewPortEventCallback,!0),this.$md.enableTouchMove());try{if(window.editor&&window.editor.dispose&&(window.editor.dispose(),window.editor=void 0),window.monaco){let e=window.monaco.Uri.parse("file:///original.json"),i=window.monaco.Uri.parse("file:///modified.json"),n=window.monaco.editor.getModel(e);n&&n.dispose();let f=window.monaco.editor.getModel(i);f&&f.dispose();let T=(window.monaco.languages.json.jsonDefaults.diagnosticsOptions.schemas||[]).filter(D=>D.uri!=="http://homebridge/config.json");window.monaco.languages.json.jsonDefaults.setDiagnosticsOptions({validate:!0,allowComments:!1,schemas:T})}this.monacoEditor&&this.monacoEditor.dispose()}catch{}}validateSection(t,e){for(let i of t){if(typeof i!="object"||i===null||Array.isArray(i))return this.$toastr.error(this.$translate.instant("config.error_blocks_objects",{type:e}),this.$translate.instant("toast.title_error")),this.highlightOffendingArrayItem(JSON.stringify(i)),!1;if(!(e in i))return this.$toastr.error(this.$translate.instant("config.error_blocks_type",{type:e}),this.$translate.instant("toast.title_error")),this.highlightOffendingArrayItem(JSON.stringify(i)),!1;if(typeof i[e]!="string")return this.$toastr.error(this.$translate.instant("config.error_string_type",{type:e}),this.$translate.instant("toast.title_error")),this.highlightOffendingArrayItem(JSON.stringify(i)),!1}return!0}validatePlugins(t,e){for(let i of t)if(typeof i!="string")return this.$toastr.error(this.$translate.instant("config.error_string_array",{key:e}),this.$translate.instant("toast.title_error")),!1;return!0}highlightOffendingArrayItem(t){this.monacoEditor&&(t=JSON.stringify(t,null,4).split(`
1
+ import{a as vt,b as $t,c as Ht,d as St}from"./chunk-GFJO2QTW.js";import{a as Ct}from"./chunk-UUDM2ZE6.js";import{a as Ot}from"./chunk-V62JRIHN.js";import{u as U,x as wt}from"./chunk-HOWYXHPL.js";import{a as Et}from"./chunk-V6SS3LLE.js";import{b as B}from"./chunk-ZCGZM7LU.js";import{a as kt,b as xt}from"./chunk-PQPDMNKK.js";import{a as q}from"./chunk-SGI3H2QJ.js";import{s as _t,t as yt}from"./chunk-BNNKKGLH.js";import{c as pt,e as I}from"./chunk-F332UHUK.js";import{C as ut,D as bt,c as mt,e as ft,l as ht}from"./chunk-WZXTVC6W.js";import{b as gt}from"./chunk-2QUH2FXS.js";import{C as O,D as H,F as N,I as F,h as ct}from"./chunk-7AD56BSX.js";import{Ab as S,Cb as rt,Db as at,Dc as r,Eb as lt,Ec as l,Fb as _,Fc as X,Gb as a,Hb as d,Ib as m,Rb as E,Xb as y,Za as o,Zb as p,aa as g,ea as st,ga as u,ha as b,hb as ot,ic as dt,jc as Y,kc as C,lc as M,mb as G,mc as V,n as nt,nb as R,sa as k,yb as $,yc as Q,zb as x}from"./chunk-JJ5CEM72.js";import{a as j,b as K,d as et,g as it,h as w}from"./chunk-VJN6YUS2.js";var Dt=it(Ht(),1);var Mt=it(Ot(),1);var Tt=(s,v)=>({"fa-trash":s,"fa-circle-notch fa-spin":v});function Ft(s,v){s&1&&(a(0,"div",13),m(1,"i",20),d())}function Ut(s,v){if(s&1){let t=E();a(0,"li",9)(1,"span"),C(2),r(3,"date"),m(4,"br"),a(5,"span",21),C(6),r(7,"date"),d()(),a(8,"span",22)(9,"button",25),r(10,"translate"),r(11,"translate"),y("click",function(){let i=u(t).$implicit,n=p(2);return b(n.restore(i.id))}),m(12,"i",26),d(),a(13,"button",27),r(14,"translate"),r(15,"translate"),y("click",function(){let i=u(t).$implicit,n=p(2);return b(n.download(i.id))}),m(16,"i",28),d(),a(17,"button",23),r(18,"translate"),r(19,"translate"),y("click",function(){let i=u(t).$implicit,n=p(2);return b(n.delete(i.id))}),m(20,"i",24),d()()()}if(s&2){let t=v.$implicit,e=p(2);o(2),V(" ",X(3,16,t.timestamp,"mediumDate")),o(4),M(X(7,19,t.timestamp,"shortTime")),o(3),_("disabled",e.clicked()||e.deleting())("ngbTooltip",l(10,22,"config.restore.copy_to_editor"))("openDelay",150),$("aria-label",l(11,24,"config.restore.copy_to_editor")),o(4),_("disabled",e.clicked()||e.deleting())("ngbTooltip",l(14,26,"form.button_download"))("openDelay",150),$("aria-label",l(15,28,"form.button_download")),o(4),_("disabled",e.clicked()||e.deleting())("ngbTooltip",l(18,30,"form.button_delete"))("openDelay",150),$("aria-label",l(19,32,"form.button_delete")),o(3),Y(Q(34,Tt,t.id!==e.deleting(),t.id===e.deleting()))}}function qt(s,v){if(s&1){let t=E();a(0,"ul",14),at(1,Ut,21,37,"li",9,rt),a(3,"li",9)(4,"span"),C(5),r(6,"translate"),m(7,"br"),a(8,"span",21),C(9),r(10,"translate"),d()(),a(11,"span",22)(12,"button",23),r(13,"translate"),r(14,"translate"),y("click",function(){u(t);let i=p();return b(i.deleteAllBackups())}),m(15,"i",24),d()()()()}if(s&2){let t=p();o(),lt(t.backupList()),o(4),V(" ",l(6,8,"form.button_delete_all")),o(4),M(l(10,10,"common.labels.no_confirmation")),o(3),_("disabled",t.clicked()||t.deleting())("ngbTooltip",l(13,12,"form.button_delete_all"))("openDelay",150),$("aria-label",l(14,14,"form.button_delete")),o(3),Y(Q(16,Tt,t.deleting()!=="all",t.deleting()==="all"))}}var Bt=(()=>{class s{$activeModal=g(_t);$api=g(F);$router=g(I);$toastr=g(N);$translate=g(O);modalData=g(U);currentConfig=this.modalData.currentConfig;fromSettings=this.modalData.fromSettings??!1;loading=k(!0);backupList=k([]);clicked=k(!1);deleting=k(null);ngOnInit(){this.getConfigBackups()}getConfigBackups(){return w(this,null,function*(){try{let t=yield this.$api.get("/config-editor/backups");this.loading.set(!1),this.backupList.set(t)}catch(t){this.loading.set(!1),console.error(t),this.$toastr.error(t.error?.message||t.message,this.$translate.instant("toast.title_error")),this.dismissModal()}})}restore(t){return this.$activeModal.close(t)}download(t){return w(this,null,function*(){this.clicked.set(!0);try{let e=yield this.$api.get(`/config-editor/backups/${t}`),i=JSON.stringify(e,null,4),n=new Blob([i],{type:"application/json"}),f=`config-backup-${t}.json`;(0,Mt.saveAs)(n,f),this.clicked.set(!1)}catch(e){this.clicked.set(!1),this.$toastr.error(e.error?.message||e.message,this.$translate.instant("toast.title_error")),console.error(e)}})}downloadCurrentConfig(){let t=`data:text/json;charset=utf-8,${encodeURIComponent(this.currentConfig)}`,e=document.createElement("a");e.setAttribute("href",t),e.setAttribute("download","config.json"),document.body.appendChild(e),e.click(),e.remove()}delete(t){return w(this,null,function*(){this.deleting.set(t);try{yield this.$api.delete(`/config-editor/backups/${t}`),yield this.getConfigBackups(),this.deleting.set(null)}catch(e){this.deleting.set(null),this.$toastr.error(e.error?.message||e.message,this.$translate.instant("toast.title_error")),console.error(e)}})}deleteAllBackups(){return w(this,null,function*(){this.deleting.set("all");try{yield this.$api.delete("/config-editor/backups"),this.$toastr.success(this.$translate.instant("config.restore.toast_backups_deleted"),this.$translate.instant("toast.title_success")),this.backupList.set([]),this.deleting.set(null)}catch(t){this.$toastr.error(t.error?.message||t.message,this.$translate.instant("toast.title_error")),console.error(t),this.deleting.set(null)}})}dismissModal(){this.fromSettings&&this.$router.navigate(["/settings"]),this.$activeModal.dismiss("Dismiss")}static \u0275fac=function(e){return new(e||s)};static \u0275cmp=R({type:s,selectors:[["ng-component"]],decls:40,vars:31,consts:[[1,"modal-content"],[1,"modal-header"],[1,"modal-title"],["type","button","data-bs-dismiss","modal",1,"btn-close",3,"click","disabled"],[1,"modal-body"],[1,"text-center","mb-3"],[1,"fas","fa-history","primary-text",2,"font-size","75px"],[1,"mb-3"],[1,"list-group","list-group-box","mb-0"],[1,"list-group-item","d-flex","justify-content-between","align-items-center"],[1,"grey-text"],[1,"btn","btn-primary","m-0","ms-3","py-1",3,"click","disabled"],[1,"fas","fa-arrow-right"],[1,"text-center","primary-text"],[1,"list-group","list-group-box","mt-3"],[1,"modal-footer","justify-content-between"],[1,"text-start"],[1,"text-center"],["type","button","data-bs-dismiss","modal",1,"btn","btn-elegant",3,"click","disabled"],[1,"text-end"],[1,"fa","fa-circle-notch","fa-spin","mt-3",2,"font-size","75px"],[1,"grey-text","small"],[2,"display","flex","flex-wrap","nowrap"],["placement","bottom","container","modal","triggers","hover",1,"btn","btn-danger","m-0","ms-2",3,"click","disabled","ngbTooltip","openDelay"],[1,"fas"],["placement","bottom","container","modal","triggers","hover",1,"btn","btn-primary","m-0","ms-3","py-1",3,"click","disabled","ngbTooltip","openDelay"],[1,"fas","fa-history"],["placement","bottom","container","modal","triggers","hover",1,"btn","btn-primary","m-0","ms-2",3,"click","disabled","ngbTooltip","openDelay"],[1,"fas","fa-download"]],template:function(e,i){e&1&&(a(0,"div",0)(1,"div",1)(2,"h5",2),C(3),r(4,"translate"),d(),a(5,"button",3),r(6,"translate"),y("click",function(){return i.dismissModal()}),d()(),a(7,"div",4)(8,"div",5),m(9,"i",6),d(),a(10,"ul",7)(11,"li"),C(12),r(13,"translate"),d(),a(14,"li"),C(15),r(16,"translate"),d()(),a(17,"ul",8)(18,"li",9)(19,"div")(20,"span"),C(21),r(22,"translate"),d(),m(23,"br"),a(24,"small",10),C(25),r(26,"translate"),d()(),a(27,"button",11),r(28,"translate"),y("click",function(){return i.downloadCurrentConfig()}),m(29,"i",12),d()()(),x(30,Ft,2,0,"div",13)(31,qt,16,19,"ul",14),d(),a(32,"div",15),m(33,"div",16),a(34,"div",17)(35,"button",18),r(36,"translate"),y("click",function(){return i.dismissModal()}),C(37),r(38,"translate"),d()(),m(39,"div",19),d()()),e&2&&(o(3),M(l(4,13,"config.restore.title")),o(2),_("disabled",i.clicked()||i.deleting()),$("aria-label",l(6,15,"form.button_close")),o(7),M(l(13,17,"config.restore.help_1")),o(3),M(l(16,19,"config.restore.help_2")),o(6),M(l(22,21,"form.button_download")),o(4),M(l(26,23,"config.restore.download")),o(2),_("disabled",i.clicked()||i.deleting()),$("aria-label",l(28,25,"backup.backup_now")),o(3),S(i.loading()?30:i.backupList().length?31:-1),o(5),_("disabled",i.clicked()||i.deleting()),$("aria-label",l(36,27,"form.button_close")),o(2),V(" ",l(38,29,"form.button_close")," "))},dependencies:[q,bt,ct,H],encapsulation:2})}return s})();function zt(s,v){if(s&1){let t=E();a(0,"button",13),r(1,"translate"),r(2,"translate"),y("click",function(){u(t);let i=p();return b(i.onCancelRestore())}),m(3,"i",14),d()}if(s&2){let t=p();_("disabled",t.saveInProgress())("openDelay",150)("ngbTooltip",l(1,4,"form.button_cancel")),$("aria-label",l(2,6,"form.button_cancel"))}}function Lt(s,v){if(s&1){let t=E();a(0,"button",15),r(1,"translate"),r(2,"translate"),y("click",function(){u(t);let i=p();return b(i.onRestore())}),m(3,"i",16),d()}s&2&&(_("openDelay",150)("ngbTooltip",l(1,3,"form.button_restore")),$("aria-label",l(2,5,"form.button_restore")))}function Jt(s,v){if(s&1){let t=E();a(0,"button",15),r(1,"translate"),r(2,"translate"),y("click",function(){u(t);let i=p();return b(i.toggleSideBySide())}),m(3,"i",17),d()}if(s&2){let t=p();_("openDelay",150)("ngbTooltip",l(1,7,t.renderSideBySide()?"config.restore.view_inline":"config.restore.view_side_by_side")),$("aria-label",l(2,9,t.renderSideBySide()?"config.restore.view_inline":"config.restore.view_side_by_side")),o(3),dt("fa-columns",!t.renderSideBySide())("fa-bars",t.renderSideBySide())}}function Wt(s,v){s&1&&m(0,"i",8)}function Kt(s,v){s&1&&m(0,"i",9)}function Gt(s,v){if(s&1){let t=E();a(0,"ngx-monaco-editor",18),y("onInit",function(i){u(t);let n=p();return b(n.onEditorInit(i))})("keydown.control.s",function(i){u(t);let n=p();return i.preventDefault(),b(n.onSave())})("keydown.meta.s",function(i){u(t);let n=p();return i.preventDefault(),b(n.onSave())}),d()}if(s&2){let t=p();_("options",t.editorOptions)("model",t.monacoEditorModel)}}function Yt(s,v){if(s&1){let t=E();a(0,"ngx-monaco-diff-editor",19),y("onInit",function(i){u(t);let n=p();return b(n.onInitDiffEditor(i))})("keydown.control.s",function(i){u(t);let n=p();return i.preventDefault(),b(n.onSave())})("keydown.meta.s",function(i){u(t);let n=p();return i.preventDefault(),b(n.onSave())}),d()}if(s&2){let t=p();_("options",t.editorOptions)("originalModel",t.diffOriginalModel)("modifiedModel",t.diffModifiedModel)}}function Qt(s,v){if(s&1){let t=E();a(0,"textarea",20),y("ngModelChange",function(i){u(t);let n=p();return b(n.homebridgeConfig.set(i))}),C(1," "),d()}if(s&2){let t=p();_("ngModel",t.homebridgeConfig())}}var Pe=(()=>{class s{injector=g(st);$api=g(F);$md=g(Ct);$modal=g(yt);$monacoEditor=g(Et);$renderer=g(ot);$route=g(pt);$router=g(I);$settings=g(gt);$toastr=g(N);$translate=g(O);editorDecorations=[];lastHeight;visualViewPortEventCallback;latestSavedConfig;childBridgesToRestart=[];hbPendingRestart=!1;isDebugModeEnabled=this.$settings.isFeatureEnabled("childBridgeDebugMode");isMatterSupported=this.$settings.isFeatureEnabled("matterSupport");homebridgeConfig=k("");originalConfig=k("");saveInProgress=k(!1);isMobile=k(!1);monacoEditor;editorOptions;monacoEditorModel;diffOriginalModel;diffModifiedModel;renderSideBySide=k(!1);constructor(){this.isMobile.set(!!this.$md.detect.mobile())}ngOnInit(){let t=this.$translate.instant("menu.config_json_editor");this.$settings.setPageTitle(t),this.editorOptions={language:"json",theme:this.$settings.actualLightingMode==="dark"?"vs-dark":"vs-light",renderSideBySide:this.renderSideBySide(),renderIndicators:!0,ignoreTrimWhitespace:!1,glyphMargin:!0};let e=document.querySelector(".content");this.$renderer.setStyle(e,"height","100%"),this.visualViewPortEventCallback=()=>this.visualViewPortChanged(),this.lastHeight=window.innerHeight,window.visualViewport&&!this.isMobile()&&(window.visualViewport.addEventListener("resize",this.visualViewPortEventCallback,!0),this.$md.disableTouchMove()),this.visualViewPortEventCallback=()=>this.visualViewPortChanged(),this.lastHeight=window.innerHeight,window.visualViewport&&!this.isMobile()&&(window.visualViewport.addEventListener("resize",this.visualViewPortEventCallback,!0),this.$md.disableTouchMove()),this.$route.data.subscribe(n=>{this.homebridgeConfig.set(n.config),this.latestSavedConfig=JSON.parse(n.config),this.diffModifiedModel&&this.updateDiffModels()}),this.monacoEditorModel={value:"{}",language:"json",uri:window.monaco?window.monaco.Uri.parse("a://homebridge/config.json"):void 0},this.diffOriginalModel={code:"",language:"json"},this.diffModifiedModel={code:this.homebridgeConfig()||"{}",language:"json"},window.monaco?this.setMonacoEditorModel():this.waitForMonaco();let{action:i}=this.$router.parseUrl(this.$router.url).queryParams;if(i){switch(i){case"restore":{this.onRestore(!0);break}}this.$router.navigate([],{queryParams:{},replaceUrl:!0,queryParamsHandling:""})}}waitForMonaco(){return w(this,null,function*(){try{yield nt(this.$monacoEditor.readyEvent),this.setMonacoEditorModel()}catch(t){console.error("Failed to wait for monaco ready event:",t)}})}onEditorInit(t){window.editor=t,this.monacoEditor=t;let e=this.monacoEditor.getModel();e&&e.setValue(this.homebridgeConfig())}onInitDiffEditor(t){this.monacoEditor=t.getModifiedEditor(),this.updateDiffModels(),window.editor=t}updateDiffModels(){if(this.diffOriginalModel&&(this.diffOriginalModel.code=this.originalConfig()||""),this.diffModifiedModel&&(this.diffModifiedModel.code=this.homebridgeConfig()||"{}"),window.editor&&window.editor.getOriginalEditor){let t=window.editor.getOriginalEditor(),e=window.editor.getModifiedEditor();if(t&&e){let i=t.getModel(),n=e.getModel();i&&i.setValue(this.originalConfig()||""),n&&n.setValue(this.homebridgeConfig()||"{}")}}}onSave(){return w(this,null,function*(){if(!this.saveInProgress()){this.monacoEditor&&(this.editorDecorations=this.monacoEditor.deltaDecorations(this.editorDecorations,[])),this.saveInProgress.set(!0);try{if(!this.isMobile()){yield this.monacoEditor.getAction("editor.action.formatDocument").run();let e=window.monaco.editor.getModelMarkers({owner:"json"});for(let i of e)if(i.message==="Duplicate object key"){this.saveInProgress.set(!1),this.$toastr.error(this.$translate.instant("config.config_invalid_json"),this.$translate.instant("toast.title_error"));return}this.homebridgeConfig.set(this.monacoEditor.getModel().getValue())}let t=this.parseConfigFromEditor();this.homebridgeConfig.set(JSON.stringify(t,null,4)),typeof t.bridge!="object"?this.$toastr.error(this.$translate.instant("config.config_bridge_missing"),this.$translate.instant("toast.title_error")):/^(?:[0-9A-F]{2}:){5}[0-9A-F]{2}$/i.test(t.bridge.username)?t.accessories&&!Array.isArray(t.accessories)?this.$toastr.error(this.$translate.instant("config.config_accessory_must_be_array"),this.$translate.instant("toast.title_error")):t.platforms&&!Array.isArray(t.platforms)?this.$toastr.error(this.$translate.instant("config.config_platform_must_be_array"),this.$translate.instant("toast.title_error")):t.platforms&&Array.isArray(t.platforms)&&!this.validateSection(t.platforms,"platform")||t.accessories&&Array.isArray(t.accessories)&&!this.validateSection(t.accessories,"accessory")||t.plugins&&Array.isArray(t.plugins)&&!this.validatePlugins(t.plugins,"plugins")||t.disabledPlugins&&Array.isArray(t.disabledPlugins)&&!this.validatePlugins(t.disabledPlugins,"disabledPlugins")||(yield this.saveConfig(t),this.originalConfig.set("")):this.$toastr.error(this.$translate.instant("config.config_username_error"),this.$translate.instant("toast.title_error"))}catch(t){console.error(t),this.$toastr.error(this.$translate.instant("config.config_invalid_json"),this.$translate.instant("toast.title_error"))}this.saveInProgress.set(!1)}})}onRestore(t=!1){return w(this,null,function*(){let e=G([{provide:U,useValue:{currentConfig:this.homebridgeConfig(),fromSettings:t}}],this.injector),i=this.$modal.open(Bt,{size:"lg",backdrop:"static",injector:e});try{let n=yield i.result;try{this.originalConfig()||(this.originalConfig.set(this.homebridgeConfig()),this.updateDiffModels());let f=yield this.$api.get(`/config-editor/backups/${n}`);this.$toastr.info(this.$translate.instant("config.restore.confirm"),this.$translate.instant("config.title_backup_loaded")),this.homebridgeConfig.set(JSON.stringify(f,null,4)),this.updateDiffModels(),this.monacoEditor&&window.editor.modifiedEditor&&(this.editorDecorations=this.monacoEditor.deltaDecorations(this.editorDecorations,[]),this.monacoEditor.executeEdits("beautifier",[{identifier:"delete",range:new monaco.Range(1,1,this.monacoEditor.getModel().getLineCount()+10,1),text:"",forceMoveMarkers:!0}]),this.monacoEditor.executeEdits("beautifier",[{identifier:"insert",range:new monaco.Range(1,1,1,1),text:this.homebridgeConfig(),forceMoveMarkers:!0}]))}catch(f){console.error(f);let h=f?.error?.message||this.$translate.instant("backup.load_error");this.$toastr.error(h,this.$translate.instant("toast.title_error"))}}catch{}})}onCancelRestore(){if(window.editor&&window.editor.dispose)try{window.editor.dispose(),window.editor=void 0}catch{}this.homebridgeConfig.set(this.originalConfig()),this.originalConfig.set(""),this.renderSideBySide()&&this.toggleSideBySide(),this.updateDiffModels(),this.onRestore()}toggleSideBySide(){this.renderSideBySide.set(!this.renderSideBySide()),this.editorOptions=K(j({},this.editorOptions),{renderSideBySide:this.renderSideBySide()})}ngOnDestroy(){let t=document.querySelector(".content");this.$renderer.removeStyle(t,"height"),window.visualViewport&&(window.visualViewport.removeEventListener("resize",this.visualViewPortEventCallback,!0),this.$md.enableTouchMove());try{if(window.editor&&window.editor.dispose&&(window.editor.dispose(),window.editor=void 0),window.monaco){let e=window.monaco.Uri.parse("file:///original.json"),i=window.monaco.Uri.parse("file:///modified.json"),n=window.monaco.editor.getModel(e);n&&n.dispose();let f=window.monaco.editor.getModel(i);f&&f.dispose();let T=(window.monaco.languages.json.jsonDefaults.diagnosticsOptions.schemas||[]).filter(D=>D.uri!=="http://homebridge/config.json");window.monaco.languages.json.jsonDefaults.setDiagnosticsOptions({validate:!0,allowComments:!1,schemas:T})}this.monacoEditor&&this.monacoEditor.dispose()}catch{}}validateSection(t,e){for(let i of t){if(typeof i!="object"||i===null||Array.isArray(i))return this.$toastr.error(this.$translate.instant("config.error_blocks_objects",{type:e}),this.$translate.instant("toast.title_error")),this.highlightOffendingArrayItem(JSON.stringify(i)),!1;if(!(e in i))return this.$toastr.error(this.$translate.instant("config.error_blocks_type",{type:e}),this.$translate.instant("toast.title_error")),this.highlightOffendingArrayItem(JSON.stringify(i)),!1;if(typeof i[e]!="string")return this.$toastr.error(this.$translate.instant("config.error_string_type",{type:e}),this.$translate.instant("toast.title_error")),this.highlightOffendingArrayItem(JSON.stringify(i)),!1}return!0}validatePlugins(t,e){for(let i of t)if(typeof i!="string")return this.$toastr.error(this.$translate.instant("config.error_string_array",{key:e}),this.$translate.instant("toast.title_error")),!1;return!0}highlightOffendingArrayItem(t){this.monacoEditor&&(t=JSON.stringify(t,null,4).split(`
2
2
  `).map(e=>` ${e}`).join(`
3
3
  `),requestAnimationFrame(()=>{let e=this.monacoEditor.getModel().findMatches(t);if(e.length){let i=e[0].range,n=new monaco.Range(i.startLineNumber,i.startColumn,i.endLineNumber,i.endColumn);this.editorDecorations=this.monacoEditor.deltaDecorations(this.editorDecorations,[{range:n,options:{isWholeLine:!0,linesDecorationsClassName:"hb-monaco-editor-line-error"}}])}}))}setMonacoEditorModel(){if(window.monaco.languages.json.jsonDefaults.diagnosticsOptions.schemas.some(i=>i.uri==="http://homebridge/config.json"))return;let t=monaco.Uri.parse("a://homebridge/config.json"),e=St(this.$translate,{isDebugModeEnabled:this.isDebugModeEnabled,isMatterSupported:this.isMatterSupported});window.monaco.languages.json.jsonDefaults.setDiagnosticsOptions({allowComments:!1,validate:!0,schemas:[{uri:"http://homebridge/config.json",fileMatch:[t.toString()],schema:{type:"object",additionalProperties:!1,required:["bridge"],properties:{bridge:{type:"object",additionalProperties:!1,required:["name","username","port","pin"],properties:j({name:{type:"string",title:this.$translate.instant("settings.name"),description:`The Homebridge instance name.
4
4
  This should be unique if you are running multiple instances of Homebridge.`,default:"Homebridge"},username:{type:"string",title:this.$translate.instant("users.label_username"),description:`Homebridge username must be 6 pairs of colon-separated hexadecimal characters (A-F 0-9).
@@ -1 +1 @@
1
- import{a as W}from"./chunk-H2UKSDHZ.js";import{e as T}from"./chunk-CAY6MDP6.js";import{a as C}from"./chunk-C64AHVUO.js";import"./chunk-664C4LX2.js";import{b as P}from"./chunk-MAJDTCMY.js";import{C as A,D as B,F as N,I as U}from"./chunk-VWUZDCBZ.js";import{Ab as v,Dc as c,Ec as l,Jb as o,Kb as n,Kc as E,Lb as f,Qc as M,Rb as O,Yb as R,Za as e,Zb as h,aa as m,ga as y,ha as I,ic as D,jc as b,kc as a,lc as d,ma as S,mc as g,nb as k,sa as p,w as x,zb as u}from"./chunk-F5MBSCH4.js";import{h as w}from"./chunk-B4AJQJMI.js";function j(i,_){if(i&1&&(o(0,"div",7),a(1),n()),i&2){let t=h();e(),d(t.error())}}function q(i,_){if(i&1&&(o(0,"p",9),a(1),c(2,"translate"),n(),o(3,"div",10)(4,"div",11)(5,"span"),f(6,"i"),a(7),c(8,"translate"),n()(),o(9,"div",11)(10,"span"),f(11,"i"),a(12),c(13,"translate"),n()()()),i&2){let t=h();e(),d(l(2,9,"restart.please_wait_while_server_restarts")),e(5),b(t.uiIcon()),e(),g(" ",l(8,11,"restart.ui_online")," "),e(3),D("grey-text",!t.uiOnline()),e(),b(t.serviceIcon()),e(),g(" ",l(13,13,"restart.service_ready")," ")}}function z(i,_){if(i&1){let t=O();o(0,"p",14)(1,"button",15),R("click",function(){y(t);let s=h(2);return I(s.viewLogs())}),a(2),c(3,"translate"),n()()}i&2&&(e(2),d(l(3,1,"menu.tooltip_view_logs")))}function L(i,_){if(i&1&&(o(0,"div",8)(1,"p"),a(2),c(3,"translate"),n(),o(4,"p",12),a(5),c(6,"translate"),o(7,"span",13),a(8),n()(),u(9,z,4,3,"p",14),n()),i&2){let t=h();e(2),d(l(3,4,"restart.server_is_taking_long_time_to_restart")),e(3),g(" ",l(6,6,"restart.label_restart_command_executed"),": "),e(3),d(t.resp().command||"End Process"),e(),v(t.uiOnline()?9:-1)}}var et=(()=>{class i{$api=m(U);$router=m(T);$settings=m(P);$toastr=m(N);$translate=m(A);$ws=m(W);destroyRef=m(S);uiOnline=p(!1);error=p(!1);resp=p({});timeout=p(!1);uiIcon=E(()=>this.uiOnline()?"far fa-check-circle":"fas fa-circle-notch fa-spin");serviceIcon=E(()=>this.uiOnline()?"fas fa-circle-notch fa-spin":"far fa-circle");io;webrootChanged=!1;statusCheckActive=p(!1);ngOnInit(){this.io=this.$ws.connectToNamespace("status"),this.io.connected.subscribe(()=>{this.io.socket.emit("monitor-server-status"),this.$settings.getAppSettings().catch(()=>{})}),this.io.socket.connected&&(this.io.socket.emit("monitor-server-status"),this.$settings.getAppSettings().catch(()=>{})),this.io.socket.on("homebridge-status",s=>{if(this.statusCheckActive()&&(this.uiOnline.set(!0),s.status==="ok"||s.status==="pending"))if(this.$toastr.success(this.$translate.instant("restart.toast_server_restarted"),this.$translate.instant("toast.title_success")),this.webrootChanged&&!M()){let $=this.$settings.webroot?.replace(/^\/+|\/+$/g,"")||"";window.location.href=$?`/${$}/`:"/"}else this.$router.navigate(["/"])}),this.$router.parseUrl(this.$router.url).queryParams.restarting==="true"?(this.uiOnline.set(!0),this.checkIfServerUp()):this.performRestart()}ngOnDestroy(){this.io.end(),this.statusCheckActive.set(!1)}viewLogs(){this.$router.navigate(["/logs"])}performRestart(){return w(this,null,function*(){try{let t=this.$settings.originalWebroot||"",r=this.$settings.webroot||"";this.webrootChanged=t!==r&&t!==globalThis.webroot.errorCode,this.webrootChanged&&(yield this.$api.put("/server/webroot",{webroot:r}));try{let s=yield this.$api.put("/server/restart",{});this.resp.set(s),this.checkIfServerUp(),s.restartingUI||this.uiOnline.set(!0)}catch(s){console.error(s),this.error.set(this.$translate.instant("restart.toast_server_restart_error")),this.$toastr.error(this.$translate.instant("restart.toast_server_restart_error"),this.$translate.instant("toast.title_error"))}}catch(t){console.error("Failed to update webroot:",t);try{let r=yield this.$api.put("/server/restart",{});this.resp.set(r),this.checkIfServerUp(),r.restartingUI||this.uiOnline.set(!0)}catch(r){console.error(r),this.error.set(this.$translate.instant("restart.toast_server_restart_error")),this.$toastr.error(this.$translate.instant("restart.toast_server_restart_error"),this.$translate.instant("toast.title_error"))}}})}checkIfServerUp(){x(7e3).pipe(C(this.destroyRef)).subscribe(()=>{this.statusCheckActive.set(!0)}),x(4e4).pipe(C(this.destroyRef)).subscribe(()=>{this.$toastr.warning(this.$translate.instant("restart.toast_server_restart_timeout"),this.$translate.instant("toast.title_warning"),{timeOut:1e4}),this.timeout.set(!0)})}static \u0275fac=function(r){return new(r||i)};static \u0275cmp=k({type:i,selectors:[["ng-component"]],decls:14,vars:8,consts:[[1,"d-flex","justify-content-between"],[1,"primary-text","m-0"],[1,"my-4","align-items-center",2,"max-width","1000px","margin","auto"],[1,"w-100","text-center","primary-text","mb-5"],[1,"fas","fa-power-off",2,"font-size","75px"],[1,"text-center"],[1,"primary-text","mb-4"],[1,"alert","alert-error","my-4"],[1,"alert","alert-warning","my-4"],[1,"grey-text"],[1,"justify-content-center","my-4"],[1,"restart-progress-box","primary-text"],[1,"grey-text","mb-0"],[1,"font-monospace"],[1,"mt-2","mb-0"],[1,"btn","btn-primary","mb-0",3,"click"]],template:function(r,s){r&1&&(o(0,"div",0)(1,"h3",1),a(2),c(3,"translate"),n()(),o(4,"div",2)(5,"div",3),f(6,"i",4),n(),o(7,"div",5)(8,"h4",6),a(9),c(10,"translate"),n(),u(11,j,2,1,"div",7)(12,q,14,15),u(13,L,10,8,"div",8),n()()),r&2&&(e(2),d(l(3,4,"menu.restart.title")),e(7),d(l(10,6,"restart.title_restart")),e(2),v(s.error()?11:12),e(2),v(s.timeout()?13:-1))},dependencies:[B],styles:[".restart-progress-box[_ngcontent-%COMP%]{font-size:22px;font-weight:300;margin-top:15px}"]})}return i})();export{et as RestartComponent};
1
+ import{a as W}from"./chunk-G5C66QEU.js";import{e as T}from"./chunk-F332UHUK.js";import{a as C}from"./chunk-GIBUKDL3.js";import"./chunk-VY4NTNG3.js";import{b as P}from"./chunk-2QUH2FXS.js";import{C as A,D as B,F as N,I as U}from"./chunk-7AD56BSX.js";import{Ab as v,Dc as c,Ec as l,Jb as o,Kb as n,Kc as E,Lb as f,Qc as M,Rb as O,Yb as R,Za as e,Zb as h,aa as m,ga as y,ha as I,ic as D,jc as b,kc as a,lc as d,ma as S,mc as g,nb as k,sa as p,w as x,zb as u}from"./chunk-JJ5CEM72.js";import{h as w}from"./chunk-VJN6YUS2.js";function j(i,_){if(i&1&&(o(0,"div",7),a(1),n()),i&2){let t=h();e(),d(t.error())}}function q(i,_){if(i&1&&(o(0,"p",9),a(1),c(2,"translate"),n(),o(3,"div",10)(4,"div",11)(5,"span"),f(6,"i"),a(7),c(8,"translate"),n()(),o(9,"div",11)(10,"span"),f(11,"i"),a(12),c(13,"translate"),n()()()),i&2){let t=h();e(),d(l(2,9,"restart.please_wait_while_server_restarts")),e(5),b(t.uiIcon()),e(),g(" ",l(8,11,"restart.ui_online")," "),e(3),D("grey-text",!t.uiOnline()),e(),b(t.serviceIcon()),e(),g(" ",l(13,13,"restart.service_ready")," ")}}function z(i,_){if(i&1){let t=O();o(0,"p",14)(1,"button",15),R("click",function(){y(t);let s=h(2);return I(s.viewLogs())}),a(2),c(3,"translate"),n()()}i&2&&(e(2),d(l(3,1,"menu.tooltip_view_logs")))}function L(i,_){if(i&1&&(o(0,"div",8)(1,"p"),a(2),c(3,"translate"),n(),o(4,"p",12),a(5),c(6,"translate"),o(7,"span",13),a(8),n()(),u(9,z,4,3,"p",14),n()),i&2){let t=h();e(2),d(l(3,4,"restart.server_is_taking_long_time_to_restart")),e(3),g(" ",l(6,6,"restart.label_restart_command_executed"),": "),e(3),d(t.resp().command||"End Process"),e(),v(t.uiOnline()?9:-1)}}var et=(()=>{class i{$api=m(U);$router=m(T);$settings=m(P);$toastr=m(N);$translate=m(A);$ws=m(W);destroyRef=m(S);uiOnline=p(!1);error=p(!1);resp=p({});timeout=p(!1);uiIcon=E(()=>this.uiOnline()?"far fa-check-circle":"fas fa-circle-notch fa-spin");serviceIcon=E(()=>this.uiOnline()?"fas fa-circle-notch fa-spin":"far fa-circle");io;webrootChanged=!1;statusCheckActive=p(!1);ngOnInit(){this.io=this.$ws.connectToNamespace("status"),this.io.connected.subscribe(()=>{this.io.socket.emit("monitor-server-status"),this.$settings.getAppSettings().catch(()=>{})}),this.io.socket.connected&&(this.io.socket.emit("monitor-server-status"),this.$settings.getAppSettings().catch(()=>{})),this.io.socket.on("homebridge-status",s=>{if(this.statusCheckActive()&&(this.uiOnline.set(!0),s.status==="ok"||s.status==="pending"))if(this.$toastr.success(this.$translate.instant("restart.toast_server_restarted"),this.$translate.instant("toast.title_success")),this.webrootChanged&&!M()){let $=this.$settings.webroot?.replace(/^\/+|\/+$/g,"")||"";window.location.href=$?`/${$}/`:"/"}else this.$router.navigate(["/"])}),this.$router.parseUrl(this.$router.url).queryParams.restarting==="true"?(this.uiOnline.set(!0),this.checkIfServerUp()):this.performRestart()}ngOnDestroy(){this.io.end(),this.statusCheckActive.set(!1)}viewLogs(){this.$router.navigate(["/logs"])}performRestart(){return w(this,null,function*(){try{let t=this.$settings.originalWebroot||"",r=this.$settings.webroot||"";this.webrootChanged=t!==r&&t!==globalThis.webroot.errorCode,this.webrootChanged&&(yield this.$api.put("/server/webroot",{webroot:r}));try{let s=yield this.$api.put("/server/restart",{});this.resp.set(s),this.checkIfServerUp(),s.restartingUI||this.uiOnline.set(!0)}catch(s){console.error(s),this.error.set(this.$translate.instant("restart.toast_server_restart_error")),this.$toastr.error(this.$translate.instant("restart.toast_server_restart_error"),this.$translate.instant("toast.title_error"))}}catch(t){console.error("Failed to update webroot:",t);try{let r=yield this.$api.put("/server/restart",{});this.resp.set(r),this.checkIfServerUp(),r.restartingUI||this.uiOnline.set(!0)}catch(r){console.error(r),this.error.set(this.$translate.instant("restart.toast_server_restart_error")),this.$toastr.error(this.$translate.instant("restart.toast_server_restart_error"),this.$translate.instant("toast.title_error"))}}})}checkIfServerUp(){x(7e3).pipe(C(this.destroyRef)).subscribe(()=>{this.statusCheckActive.set(!0)}),x(4e4).pipe(C(this.destroyRef)).subscribe(()=>{this.$toastr.warning(this.$translate.instant("restart.toast_server_restart_timeout"),this.$translate.instant("toast.title_warning"),{timeOut:1e4}),this.timeout.set(!0)})}static \u0275fac=function(r){return new(r||i)};static \u0275cmp=k({type:i,selectors:[["ng-component"]],decls:14,vars:8,consts:[[1,"d-flex","justify-content-between"],[1,"primary-text","m-0"],[1,"my-4","align-items-center",2,"max-width","1000px","margin","auto"],[1,"w-100","text-center","primary-text","mb-5"],[1,"fas","fa-power-off",2,"font-size","75px"],[1,"text-center"],[1,"primary-text","mb-4"],[1,"alert","alert-error","my-4"],[1,"alert","alert-warning","my-4"],[1,"grey-text"],[1,"justify-content-center","my-4"],[1,"restart-progress-box","primary-text"],[1,"grey-text","mb-0"],[1,"font-monospace"],[1,"mt-2","mb-0"],[1,"btn","btn-primary","mb-0",3,"click"]],template:function(r,s){r&1&&(o(0,"div",0)(1,"h3",1),a(2),c(3,"translate"),n()(),o(4,"div",2)(5,"div",3),f(6,"i",4),n(),o(7,"div",5)(8,"h4",6),a(9),c(10,"translate"),n(),u(11,j,2,1,"div",7)(12,q,14,15),u(13,L,10,8,"div",8),n()()),r&2&&(e(2),d(l(3,4,"menu.restart.title")),e(7),d(l(10,6,"restart.title_restart")),e(2),v(s.error()?11:12),e(2),v(s.timeout()?13:-1))},dependencies:[B],styles:[".restart-progress-box[_ngcontent-%COMP%]{font-size:22px;font-weight:300;margin-top:15px}"]})}return i})();export{et as RestartComponent};
@@ -0,0 +1,5 @@
1
+ import{a as d,b as l,c as m}from"./chunk-Q2RBJQKF.js";import{a as z}from"./chunk-G5C66QEU.js";import{I as f}from"./chunk-7AD56BSX.js";import{F as o,R as r,X as p,aa as a,d as e}from"./chunk-JJ5CEM72.js";import{h as c}from"./chunk-VJN6YUS2.js";var R=(()=>{class n{$ws=a(z);$api=a(f);io;fitAddon;webLinksAddon;resize;elementResize;dataDisposable=null;isInitializing=!1;hasUserTyped=!1;destroy$=new e;term;destroyTerminal(){this.destroy$.next(),this.destroy$.complete(),this.dataDisposable&&(this.dataDisposable.dispose(),this.dataDisposable=null),this.io&&this.io.end(),this.term&&(this.term.dispose(),this.term=null),this.resize&&this.resize.complete(),this.elementResize&&this.elementResize.complete(),this.destroy$=new e,this.isInitializing=!1,this.hasUserTyped=!1}destroyPersistentSession(){return c(this,null,function*(){this.destroyTerminal();try{yield this.$api.post("/platform-tools/terminal/destroy-persistent-session",{})}catch(t){console.error("Failed to destroy persistent session:",t)}})}detachTerminal(){this.destroy$.next(),this.destroy$.complete(),this.dataDisposable&&(this.dataDisposable.dispose(),this.dataDisposable=null),this.term&&this.term.dispose(),this.resize&&this.resize.complete(),this.elementResize&&this.elementResize.complete(),this.destroy$=new e,this.isInitializing=!1}hasActiveSession(){return this.io&&this.io.socket&&this.io.socket.connected}hasUserTypedInSession(){return this.hasUserTyped}isTerminalReady(){return this.term&&!this.isInitializing}reconnectTerminal(t,s={},h){if(this.isInitializing)return!1;this.isInitializing=!0,this.elementResize=h,this.io&&this.io.socket&&this.io.socket.connected?(this.term=new m(s),this.fitAddon=new d,this.webLinksAddon=new l,setTimeout(()=>{this.term.loadAddon(this.fitAddon),this.term.loadAddon(this.webLinksAddon)}),this.resize=new e,this.term.open(t.nativeElement),setTimeout(()=>{this.fitAddon.activate(this.term),this.fitAddon.fit()}),this.io.socket.removeAllListeners("stdout"),this.io.socket.removeAllListeners("process-exit"),this.io.socket.on("stdout",i=>{this.term.write(i)}),this.io.socket.on("process-exit",()=>{this.startSession()}),this.dataDisposable&&this.dataDisposable.dispose(),this.dataDisposable=this.term.onData(i=>{this.hasUserTyped=!0,this.io.socket.emit("stdin",i)}),this.term.onResize(i=>{this.resize.next(i)}),this.resize.pipe(o(500),r(this.destroy$)).subscribe(i=>{this.io.socket.emit("resize",i)}),this.elementResize&&this.elementResize.pipe(o(100),r(this.destroy$)).subscribe({next:()=>{this.fitAddon.fit()}}),this.io.socket.emit("start-session",{cols:this.term.cols,rows:this.term.rows}),this.isInitializing=!1):this.startTerminal(t,s,h)}startTerminal(t,s={},h){return this.isInitializing?!1:(this.isInitializing=!0,this.elementResize=h,this.io=this.$ws.connectToNamespace("platform-tools/terminal"),this.term=new m(s),setTimeout(()=>{this.term.loadAddon(this.fitAddon),this.term.loadAddon(this.webLinksAddon)}),this.fitAddon=new d,this.webLinksAddon=new l,this.resize=new e,this.term.open(t.nativeElement),setTimeout(()=>{this.fitAddon.activate(this.term),this.fitAddon.fit()}),this.io.connected.pipe(o(200),r(this.destroy$)).subscribe(()=>{this.startSession()}),this.io.socket.on("disconnect",()=>{this.term.write(`
2
+ \r
3
+ \rTerminal disconnected. Is the server running?
4
+ \r
5
+ \r`)}),this.io.socket.on("process-exit",()=>{this.startSession()}),this.resize.pipe(o(500),r(this.destroy$)).subscribe(i=>{this.io.socket.emit("resize",i)}),this.io.socket.on("stdout",i=>{this.term.write(i)}),this.dataDisposable=this.term.onData(i=>{this.hasUserTyped=!0,this.io.socket.emit("stdin",i)}),this.term.onResize(i=>{this.resize.next(i)}),this.elementResize&&this.elementResize.pipe(o(100),r(this.destroy$)).subscribe({next:()=>{this.fitAddon.fit()}}),!0)}startSession(){this.term.reset(),this.hasUserTyped=!1,this.io.socket.emit("start-session",{cols:this.term.cols,rows:this.term.rows}),this.resize.next({cols:this.term.cols,rows:this.term.rows}),this.isInitializing=!1}static \u0275fac=function(s){return new(s||n)};static \u0275prov=p({token:n,factory:n.\u0275fac,providedIn:"root"})}return n})();export{R as a};
@@ -0,0 +1 @@
1
+ import{a}from"./chunk-5GNJNTLA.js";import"./chunk-VJN6YUS2.js";export default a();
@@ -0,0 +1 @@
1
+ import{a}from"./chunk-BT3EMPD7.js";import"./chunk-VJN6YUS2.js";export default a();
@@ -1 +1 @@
1
- import{$ as ye,Aa as Oe,X as Me,Y as Ce,a as Q,d as Z,ib as te,o as we,oa as Se,ob as De,pb as ke,xa as xe,z as ee}from"./chunk-F5MBSCH4.js";import{e as $,g as yt}from"./chunk-B4AJQJMI.js";var $e=$((Jt,Ie)=>{Ie.exports=function(n,r){return Array.prototype.slice.call(n,r)}});var Ne=$((Qt,Re)=>{var St=typeof setImmediate=="function",re;St?re=function(t){setImmediate(t)}:re=function(t){setTimeout(t,0)};Re.exports=re});var Ye=$((Zt,Xe)=>{"use strict";var xt=Ne();Xe.exports=function(n,r,e){n&&xt(function(){n.apply(e||null,r||[])})}});var Be=$((er,je)=>{"use strict";var Fe=$e(),Ot=Ye();je.exports=function(n,r){var e=r||{},a={};return n===void 0&&(n={}),n.on=function(o,s){return a[o]?a[o].push(s):a[o]=[s],n},n.once=function(o,s){return s._once=!0,n.on(o,s),n},n.off=function(o,s){var l=arguments.length;if(l===1)delete a[o];else if(l===0)a={};else{var h=a[o];if(!h)return n;h.splice(h.indexOf(s),1)}return n},n.emit=function(){var o=Fe(arguments);return n.emitterSnapshot(o.shift()).apply(this,o)},n.emitterSnapshot=function(o){var s=(a[o]||[]).slice(0);return function(){var l=Fe(arguments),h=this||n;if(o==="error"&&e.throws!==!1&&!s.length)throw l.length===1?l[0]:l;return s.forEach(function(g){e.async?Ot(g,l,h):g.apply(h,l),g._once&&n.off(o,g)}),n}},n}});var _e=$((tr,Ae)=>{var Pe=global.CustomEvent;function Dt(){try{var t=new Pe("cat",{detail:{foo:"bar"}});return t.type==="cat"&&t.detail.foo==="bar"}catch{}return!1}Ae.exports=Dt()?Pe:typeof document<"u"&&typeof document.createEvent=="function"?function(n,r){var e=document.createEvent("CustomEvent");return r?e.initCustomEvent(n,r.bubbles,r.cancelable,r.detail):e.initCustomEvent(n,!1,!1,void 0),e}:function(n,r){var e=document.createEventObject();return e.type=n,r?(e.bubbles=!!r.bubbles,e.cancelable=!!r.cancelable,e.detail=r.detail):(e.bubbles=!1,e.cancelable=!1,e.detail=void 0),e}});var Ve=$((rr,Te)=>{"use strict";var qe=[],ne="",kt=/^on/;for(ne in global)kt.test(ne)&&qe.push(ne.slice(2));Te.exports=qe});var Ke=$((nr,ze)=>{"use strict";var It=_e(),$t=Ve(),G=global.document,Ge=Rt,He=Xt,_=[];global.addEventListener||(Ge=Nt,He=Yt);ze.exports={add:Ge,remove:He,fabricate:Ft};function Rt(t,n,r,e){return t.addEventListener(n,r,e)}function Nt(t,n,r){return t.attachEvent("on"+n,Bt(t,n,r))}function Xt(t,n,r,e){return t.removeEventListener(n,r,e)}function Yt(t,n,r){var e=Le(t,n,r);if(e)return t.detachEvent("on"+n,e)}function Ft(t,n,r){var e=$t.indexOf(n)===-1?o():a();t.dispatchEvent?t.dispatchEvent(e):t.fireEvent("on"+n,e);function a(){var s;return G.createEvent?(s=G.createEvent("Event"),s.initEvent(n,!0,!0)):G.createEventObject&&(s=G.createEventObject()),s}function o(){return new It(n,{detail:r})}}function jt(t,n,r){return function(a){var o=a||global.event;o.target=o.target||o.srcElement,o.preventDefault=o.preventDefault||function(){o.returnValue=!1},o.stopPropagation=o.stopPropagation||function(){o.cancelBubble=!0},o.which=o.which||o.keyCode,r.call(t,o)}}function Bt(t,n,r){var e=Le(t,n,r)||jt(t,n,r);return _.push({wrapper:e,element:t,type:n,fn:r}),e}function Le(t,n,r){var e=Pt(t,n,r);if(e){var a=_[e].wrapper;return _.splice(e,1),a}}function Pt(t,n,r){var e,a;for(e=0;e<_.length;e++)if(a=_[e],a.element===t&&a.type===n&&a.fn===r)return e}});var Qe=$((ir,Je)=>{"use strict";var Ue={},At="(?:^|\\s)",_t="(?:\\s|$)";function We(t){var n=Ue[t];return n?n.lastIndex=0:Ue[t]=n=new RegExp(At+t+_t,"g"),n}function qt(t,n){var r=t.className;r.length?We(n).test(r)||(t.className+=" "+n):t.className=n}function Tt(t,n){t.className=t.className.replace(We(n)," ").trim()}Je.exports={add:qt,rm:Tt}});var ut=$((or,st)=>{"use strict";var Vt=Be(),P=Ke(),X=Qe(),A=document,k=A.documentElement;function Gt(t,n){var r=arguments.length;r===1&&Array.isArray(t)===!1&&(n=t,t=[]);var e,a,o,s,l,h,b,g,w,f,D,M=null,I,c=n||{};c.moves===void 0&&(c.moves=rt),c.accepts===void 0&&(c.accepts=rt),c.invalid===void 0&&(c.invalid=ht),c.containers===void 0&&(c.containers=t||[]),c.isContainer===void 0&&(c.isContainer=Lt),c.copy===void 0&&(c.copy=!1),c.copySortSource===void 0&&(c.copySortSource=!1),c.revertOnSpill===void 0&&(c.revertOnSpill=!1),c.removeOnSpill===void 0&&(c.removeOnSpill=!1),c.direction===void 0&&(c.direction="vertical"),c.ignoreInputTextSelection===void 0&&(c.ignoreInputTextSelection=!0),c.mirrorContainer===void 0&&(c.mirrorContainer=A.body);var p=Vt({containers:c.containers,start:vt,end:fe,cancel:pe,remove:me,destroy:ct,canMove:ft,dragging:!1});return c.removeOnSpill===!0&&p.on("over",mt).on("out",pt),ue(),p;function H(i){return p.containers.indexOf(i)!==-1||c.isContainer(i)}function ue(i){var u=i?"remove":"add";q(k,u,"mousedown",lt),q(k,u,"mouseup",K)}function L(i){var u=i?"remove":"add";q(k,u,"mousemove",dt)}function ce(i){var u=i?"remove":"add";P[u](k,"selectstart",le),P[u](k,"click",le)}function ct(){ue(!0),K({})}function le(i){I&&i.preventDefault()}function lt(i){h=i.clientX,b=i.clientY;var u=Ze(i)!==1||i.metaKey||i.ctrlKey;if(!u){var d=i.target,m=z(d);m&&(I=m,L(),i.type==="mousedown"&&(ot(d)?d.focus():i.preventDefault()))}}function dt(i){if(I){if(Ze(i)===0){K({});return}if(!(i.clientX!==void 0&&Math.abs(i.clientX-h)<=(c.slideFactorX||0)&&i.clientY!==void 0&&Math.abs(i.clientY-b)<=(c.slideFactorY||0))){if(c.ignoreInputTextSelection){var u=Y("clientX",i)||0,d=Y("clientY",i)||0,m=A.elementFromPoint(u,d);if(ot(m))return}var y=I;L(!0),ce(),fe(),de(y);var E=Ht(o);s=Y("pageX",i)-E.left,l=Y("pageY",i)-E.top,X.add(f||o,"gu-transit"),gt(),J(i)}}}function z(i){if(!(p.dragging&&e)&&!H(i)){for(var u=i;S(i)&&H(S(i))===!1;)if(c.invalid(i,u)||(i=S(i),!i))return;var d=S(i);if(d&&!c.invalid(i,u)){var m=c.moves(i,d,u,T(i));if(m)return{item:i,source:d}}}}function ft(i){return!!z(i)}function vt(i){var u=z(i);u&&de(u)}function de(i){Et(i.item,i.source)&&(f=i.item.cloneNode(!0),p.emit("cloned",f,i.item,"copy")),a=i.source,o=i.item,g=w=T(i.item),p.dragging=!0,p.emit("drag",o,a)}function ht(){return!1}function fe(){if(p.dragging){var i=f||o;he(i,S(i))}}function ve(){I=!1,L(!0),ce(!0)}function K(i){if(ve(),!!p.dragging){var u=f||o,d=Y("clientX",i)||0,m=Y("clientY",i)||0,y=tt(e,d,m),E=ge(y,d,m);E&&(f&&c.copySortSource||!f||E!==a)?he(u,E):c.removeOnSpill?me():pe()}}function he(i,u){var d=S(i);f&&c.copySortSource&&u===a&&d.removeChild(o),W(u)?p.emit("cancel",i,a,a):p.emit("drop",i,u,a,w),U()}function me(){if(p.dragging){var i=f||o,u=S(i);u&&u.removeChild(i),p.emit(f?"cancel":"remove",i,u,a),U()}}function pe(i){if(p.dragging){var u=arguments.length>0?i:c.revertOnSpill,d=f||o,m=S(d),y=W(m);y===!1&&u&&(f?m&&m.removeChild(f):a.insertBefore(d,g)),y||u?p.emit("cancel",d,a,a):p.emit("drop",d,m,a,w),U()}}function U(){var i=f||o;ve(),bt(),i&&X.rm(i,"gu-transit"),D&&clearTimeout(D),p.dragging=!1,M&&p.emit("out",i,M,a),p.emit("dragend",i),a=o=f=g=w=D=M=null}function W(i,u){var d;return u!==void 0?d=u:e?d=w:d=T(f||o),i===a&&d===g}function ge(i,u,d){for(var m=i;m&&!y();)m=S(m);return m;function y(){var E=H(m);if(E===!1)return!1;var B=be(m,i),C=Ee(m,B,u,d),R=W(m,C);return R?!0:c.accepts(o,m,a,C)}}function J(i){if(!e)return;i.preventDefault();var u=Y("clientX",i)||0,d=Y("clientY",i)||0,m=u-s,y=d-l;e.style.left=m+"px",e.style.top=y+"px";var E=f||o,B=tt(e,u,d),C=ge(B,u,d),R=C!==null&&C!==M;(R||C===null)&&(Mt(),M=C,wt());var x=S(E);if(C===a&&f&&!c.copySortSource){x&&x.removeChild(E);return}var O,F=be(C,B);if(F!==null)O=Ee(C,F,u,d);else if(c.revertOnSpill===!0&&!f)O=g,C=a;else{f&&x&&x.removeChild(E);return}(O===null&&R||O!==E&&O!==T(E))&&(w=O,C.insertBefore(E,O),p.emit("shadow",E,C,a));function N(Ct){p.emit(Ct,E,M,a)}function wt(){R&&N("over")}function Mt(){M&&N("out")}}function mt(i){X.rm(i,"gu-hide")}function pt(i){p.dragging&&X.add(i,"gu-hide")}function gt(){if(!e){var i=o.getBoundingClientRect();e=o.cloneNode(!0),e.style.width=nt(i)+"px",e.style.height=it(i)+"px",X.rm(e,"gu-transit"),X.add(e,"gu-mirror"),c.mirrorContainer.appendChild(e),q(k,"add","mousemove",J),X.add(c.mirrorContainer,"gu-unselectable"),p.emit("cloned",e,o,"mirror")}}function bt(){e&&(X.rm(c.mirrorContainer,"gu-unselectable"),q(k,"remove","mousemove",J),S(e).removeChild(e),e=null)}function be(i,u){for(var d=u;d!==i&&S(d)!==i;)d=S(d);return d===k?null:d}function Ee(i,u,d,m){var y=c.direction==="horizontal",E=u!==i?C():B();return E;function B(){var x=i.children.length,O,F,N;for(O=0;O<x;O++)if(F=i.children[O],N=F.getBoundingClientRect(),y&&N.left+N.width/2>d||!y&&N.top+N.height/2>m)return F;return null}function C(){var x=u.getBoundingClientRect();return R(y?d>x.left+nt(x)/2:m>x.top+it(x)/2)}function R(x){return x?T(u):u}}function Et(i,u){return typeof c.copy=="boolean"?c.copy:c.copy(i,u)}}function q(t,n,r,e){var a={mouseup:"touchend",mousedown:"touchstart",mousemove:"touchmove"},o={mouseup:"pointerup",mousedown:"pointerdown",mousemove:"pointermove"},s={mouseup:"MSPointerUp",mousedown:"MSPointerDown",mousemove:"MSPointerMove"};global.navigator.pointerEnabled?P[n](t,o[r],e):global.navigator.msPointerEnabled?P[n](t,s[r],e):(P[n](t,a[r],e),P[n](t,r,e))}function Ze(t){if(t.touches!==void 0)return t.touches.length;if(t.which!==void 0&&t.which!==0)return t.which;if(t.buttons!==void 0)return t.buttons;var n=t.button;if(n!==void 0)return n&1?1:n&2?3:n&4?2:0}function Ht(t){var n=t.getBoundingClientRect();return{left:n.left+et("scrollLeft","pageXOffset"),top:n.top+et("scrollTop","pageYOffset")}}function et(t,n){return typeof global[n]<"u"?global[n]:k.clientHeight?k[t]:A.body[t]}function tt(t,n,r){t=t||{};var e=t.className||"",a;return t.className+=" gu-hide",a=A.elementFromPoint(n,r),t.className=e,a}function Lt(){return!1}function rt(){return!0}function nt(t){return t.width||t.right-t.left}function it(t){return t.height||t.bottom-t.top}function S(t){return t.parentNode===A?null:t.parentNode}function ot(t){return t.tagName==="INPUT"||t.tagName==="TEXTAREA"||t.tagName==="SELECT"||at(t)}function at(t){return!t||t.contentEditable==="false"?!1:t.contentEditable==="true"?!0:at(S(t))}function T(t){return t.nextElementSibling||n();function n(){var r=t;do r=r.nextSibling;while(r&&r.nodeType!==1);return r}}function zt(t){return t.targetTouches&&t.targetTouches.length?t.targetTouches[0]:t.changedTouches&&t.changedTouches.length?t.changedTouches[0]:t}function Y(t,n){var r=zt(n),e={pageX:"clientX",pageY:"clientY"};return t in e&&!(t in r)&&e[t]in r&&(t=e[t]),r[t]}st.exports=Gt});var se=yt(ut(),1),ie=class{constructor(n,r,e){this.name=n,this.drake=r,this.options=e,this.initEvents=!1}},v=(function(t){return t.Cancel="cancel",t.Cloned="cloned",t.Drag="drag",t.DragEnd="dragend",t.Drop="drop",t.Out="out",t.Over="over",t.Remove="remove",t.Shadow="shadow",t.DropModel="dropModel",t.RemoveModel="removeModel",t})(v||{}),Kt=Object.keys(v).map(t=>v[t]),Ut=se.default||se,V=class{constructor(n=Ut){this.build=n}},j=(t,n,r)=>e=>e.pipe(ee(({event:a,name:o})=>a===t&&(n===void 0||o===n)),we(({name:a,args:o})=>r(a,o))),Wt=(t,[n,r,e])=>({name:t,el:n,container:r,source:e}),oe=(()=>{class t{constructor(r){this.drakeFactory=r,this.groups={},this.dispatch$=new Z,this.elContainerSource=e=>a=>this.dispatch$.pipe(j(e,a,Wt)),this.cancel=this.elContainerSource(v.Cancel),this.remove=this.elContainerSource(v.Remove),this.shadow=this.elContainerSource(v.Shadow),this.over=this.elContainerSource(v.Over),this.out=this.elContainerSource(v.Out),this.drag=e=>this.dispatch$.pipe(j(v.Drag,e,(a,[o,s])=>({name:a,el:o,source:s}))),this.dragend=e=>this.dispatch$.pipe(j(v.DragEnd,e,(a,[o])=>({name:a,el:o}))),this.drop=e=>this.dispatch$.pipe(j(v.Drop,e,(a,[o,s,l,h])=>({name:a,el:o,target:s,source:l,sibling:h}))),this.cloned=e=>this.dispatch$.pipe(j(v.Cloned,e,(a,[o,s,l])=>({name:a,clone:o,original:s,cloneType:l}))),this.dropModel=e=>this.dispatch$.pipe(j(v.DropModel,e,(a,[o,s,l,h,b,g,w,f,D])=>({name:a,el:o,target:s,source:l,sibling:h,item:b,sourceModel:g,targetModel:w,sourceIndex:f,targetIndex:D}))),this.removeModel=e=>this.dispatch$.pipe(j(v.RemoveModel,e,(a,[o,s,l,h,b,g])=>({name:a,el:o,container:s,source:l,item:h,sourceModel:b,sourceIndex:g}))),(this.drakeFactory===null||this.drakeFactory===void 0)&&(this.drakeFactory=new V)}add(r){if(this.find(r.name))throw new Error('Group named: "'+r.name+'" already exists.');return this.groups[r.name]=r,this.handleModels(r),this.setupEvents(r),r}find(r){return this.groups[r]}destroy(r){let e=this.find(r);e&&(e.drake&&e.drake.destroy(),delete this.groups[r])}createGroup(r,e){return this.add(new ie(r,this.drakeFactory.build([],e),e))}handleModels({name:r,drake:e,options:a}){let o,s,l;e.on("remove",(h,b,g)=>{if(!e.models)return;let w=e.models[e.containers.indexOf(g)];w=w.slice(0);let f=w.splice(s,1)[0];this.dispatch$.next({event:v.RemoveModel,name:r,args:[h,b,g,f,w,s]})}),e.on("drag",(h,b)=>{e.models&&(o=h,s=this.domIndexOf(h,b))}),e.on("drop",(h,b,g,w)=>{if(!e.models||!b)return;l=this.domIndexOf(h,b);let f=e.models[e.containers.indexOf(g)],D=e.models[e.containers.indexOf(b)],M;if(b===g)f=f.slice(0),M=f.splice(s,1)[0],f.splice(l,0,M),D=f;else{let I=o!==h;if(M=f[s],I){if(!a.copyItem)throw new Error("If you have enabled `copy` on a group, you must provide a `copyItem` function.");M=a.copyItem(M)}if(I||(f=f.slice(0),f.splice(s,1)),D=D.slice(0),D.splice(l,0,M),I)try{b.removeChild(h)}catch{}}this.dispatch$.next({event:v.DropModel,name:r,args:[h,b,g,w,M,f,D,s,l]})})}setupEvents(r){if(r.initEvents)return;r.initEvents=!0;let e=r.name,a=this,o=s=>{switch(s){case v.Drag:r.drake.on(s,(...l)=>{this.dispatch$.next({event:s,name:e,args:l})});break;case v.Drop:r.drake.on(s,(...l)=>{this.dispatch$.next({event:s,name:e,args:l})});break;case v.DragEnd:r.drake.on(s,(...l)=>{this.dispatch$.next({event:s,name:e,args:l})});break;case v.Cancel:case v.Remove:case v.Shadow:case v.Over:case v.Out:r.drake.on(s,(...l)=>{this.dispatch$.next({event:s,name:e,args:l})});break;case v.Cloned:r.drake.on(s,(...l)=>{this.dispatch$.next({event:s,name:e,args:l})});break;case v.DropModel:r.drake.on(s,(...l)=>{this.dispatch$.next({event:s,name:e,args:l})});break;case v.RemoveModel:r.drake.on(s,(...l)=>{this.dispatch$.next({event:s,name:e,args:l})});break;default:break}};Kt.forEach(o)}domIndexOf(r,e){if(e)return Array.prototype.indexOf.call(e.children,r)}static{this.\u0275fac=function(e){return new(e||t)(ye(V,8))}}static{this.\u0275prov=Me({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})(),pr=(()=>{class t{get container(){return this.el&&this.el.nativeElement}constructor(r,e){this.el=r,this.dragulaService=e,this.dragulaModelChange=new Se}ngOnChanges(r){if(r&&r.dragula){let{previousValue:e,currentValue:a}=r.dragula,o=!!e,s=!!a;o&&this.teardown(e),s&&this.setup()}else if(r&&r.dragulaModel){let{previousValue:e,currentValue:a}=r.dragulaModel,o=this.group?.drake;if(this.dragula&&o){o.models=o.models||[];let s=o.models.indexOf(e);s!==-1?(o.models.splice(s,1),a&&o.models.splice(s,0,a)):a&&o.models.push(a)}}}setup(){let r=a=>{this.dragulaModel&&(a.drake?.models?a.drake?.models?.push(this.dragulaModel):a.drake&&(a.drake.models=[this.dragulaModel]))};if(!this.dragula)return;let e=this.dragulaService.find(this.dragula);if(!e){let a={};e=this.dragulaService.createGroup(this.dragula,a)}r(e),e.drake?.containers.push(this.container),this.subscribe(this.dragula),this.group=e}subscribe(r){this.subs=new Q,this.subs.add(this.dragulaService.dropModel(r).subscribe(({source:e,target:a,sourceModel:o,targetModel:s})=>{e===this.el.nativeElement?this.dragulaModelChange.emit(o):a===this.el.nativeElement&&this.dragulaModelChange.emit(s)})),this.subs.add(this.dragulaService.removeModel(r).subscribe(({source:e,sourceModel:a})=>{e===this.el.nativeElement&&this.dragulaModelChange.emit(a)}))}teardown(r){this.subs?.unsubscribe();let e=this.dragulaService.find(r);if(e){let a=e.drake?.containers.indexOf(this.el.nativeElement);if(a!==-1&&e.drake?.containers.splice(a,1),this.dragulaModel&&e.drake&&e.drake.models){let o=e.drake.models.indexOf(this.dragulaModel);o!==-1&&e.drake.models.splice(o,1)}}}ngOnDestroy(){this.dragula&&this.teardown(this.dragula)}static{this.\u0275fac=function(e){return new(e||t)(te(Oe),te(oe))}}static{this.\u0275dir=ke({type:t,selectors:[["","dragula",""]],inputs:{dragula:"dragula",dragulaModel:"dragulaModel"},outputs:{dragulaModelChange:"dragulaModelChange"},standalone:!1,features:[xe]})}}return t})(),gr=(()=>{class t{static forRoot(){return{ngModule:t,providers:[oe]}}static{this.\u0275fac=function(e){return new(e||t)}}static{this.\u0275mod=De({type:t})}static{this.\u0275inj=Ce({providers:[oe]})}}return t})(),br=new V((t,n)=>new ae(t,n)),ae=class{constructor(n=[],r={},e){this.containers=n,this.options=r,this.models=e,this.emitter$=new Z,this.subs=new Q,this.dragging=!1}on(n,r){this.subs.add(this.emitter$.pipe(ee(({eventType:e})=>e===n)).subscribe(({eventType:e,args:a})=>{if(e===v.Drag){let o=Array.from(a),s=o[0],l=o[1];r(s,l);return}if(e===v.Drop){let o=Array.from(a),s=o[0],l=o[1],h=o[2],b=o[3];r(s,l,h,b);return}if(e===v.Remove){let o=Array.from(a),s=o[0],l=o[1],h=o[2];r(s,l,h);return}r(a)}))}start(n){this.dragging=!0}end(){this.dragging=!1}cancel(n){this.dragging=!1}canMove(n){return this.options.accepts?this.options.accepts(n):!1}remove(){this.dragging=!1}destroy(){this.subs.unsubscribe()}emit(n,...r){this.emitter$.next({eventType:n,args:r})}};export{oe as a,pr as b,gr as c};
1
+ import{$ as ye,Aa as Oe,X as Me,Y as Ce,a as Q,d as Z,ib as te,o as we,oa as Se,ob as De,pb as ke,xa as xe,z as ee}from"./chunk-JJ5CEM72.js";import{e as $,g as yt}from"./chunk-VJN6YUS2.js";var $e=$((Jt,Ie)=>{Ie.exports=function(n,r){return Array.prototype.slice.call(n,r)}});var Ne=$((Qt,Re)=>{var St=typeof setImmediate=="function",re;St?re=function(t){setImmediate(t)}:re=function(t){setTimeout(t,0)};Re.exports=re});var Ye=$((Zt,Xe)=>{"use strict";var xt=Ne();Xe.exports=function(n,r,e){n&&xt(function(){n.apply(e||null,r||[])})}});var Be=$((er,je)=>{"use strict";var Fe=$e(),Ot=Ye();je.exports=function(n,r){var e=r||{},a={};return n===void 0&&(n={}),n.on=function(o,s){return a[o]?a[o].push(s):a[o]=[s],n},n.once=function(o,s){return s._once=!0,n.on(o,s),n},n.off=function(o,s){var l=arguments.length;if(l===1)delete a[o];else if(l===0)a={};else{var h=a[o];if(!h)return n;h.splice(h.indexOf(s),1)}return n},n.emit=function(){var o=Fe(arguments);return n.emitterSnapshot(o.shift()).apply(this,o)},n.emitterSnapshot=function(o){var s=(a[o]||[]).slice(0);return function(){var l=Fe(arguments),h=this||n;if(o==="error"&&e.throws!==!1&&!s.length)throw l.length===1?l[0]:l;return s.forEach(function(g){e.async?Ot(g,l,h):g.apply(h,l),g._once&&n.off(o,g)}),n}},n}});var _e=$((tr,Ae)=>{var Pe=global.CustomEvent;function Dt(){try{var t=new Pe("cat",{detail:{foo:"bar"}});return t.type==="cat"&&t.detail.foo==="bar"}catch{}return!1}Ae.exports=Dt()?Pe:typeof document<"u"&&typeof document.createEvent=="function"?function(n,r){var e=document.createEvent("CustomEvent");return r?e.initCustomEvent(n,r.bubbles,r.cancelable,r.detail):e.initCustomEvent(n,!1,!1,void 0),e}:function(n,r){var e=document.createEventObject();return e.type=n,r?(e.bubbles=!!r.bubbles,e.cancelable=!!r.cancelable,e.detail=r.detail):(e.bubbles=!1,e.cancelable=!1,e.detail=void 0),e}});var Ve=$((rr,Te)=>{"use strict";var qe=[],ne="",kt=/^on/;for(ne in global)kt.test(ne)&&qe.push(ne.slice(2));Te.exports=qe});var Ke=$((nr,ze)=>{"use strict";var It=_e(),$t=Ve(),G=global.document,Ge=Rt,He=Xt,_=[];global.addEventListener||(Ge=Nt,He=Yt);ze.exports={add:Ge,remove:He,fabricate:Ft};function Rt(t,n,r,e){return t.addEventListener(n,r,e)}function Nt(t,n,r){return t.attachEvent("on"+n,Bt(t,n,r))}function Xt(t,n,r,e){return t.removeEventListener(n,r,e)}function Yt(t,n,r){var e=Le(t,n,r);if(e)return t.detachEvent("on"+n,e)}function Ft(t,n,r){var e=$t.indexOf(n)===-1?o():a();t.dispatchEvent?t.dispatchEvent(e):t.fireEvent("on"+n,e);function a(){var s;return G.createEvent?(s=G.createEvent("Event"),s.initEvent(n,!0,!0)):G.createEventObject&&(s=G.createEventObject()),s}function o(){return new It(n,{detail:r})}}function jt(t,n,r){return function(a){var o=a||global.event;o.target=o.target||o.srcElement,o.preventDefault=o.preventDefault||function(){o.returnValue=!1},o.stopPropagation=o.stopPropagation||function(){o.cancelBubble=!0},o.which=o.which||o.keyCode,r.call(t,o)}}function Bt(t,n,r){var e=Le(t,n,r)||jt(t,n,r);return _.push({wrapper:e,element:t,type:n,fn:r}),e}function Le(t,n,r){var e=Pt(t,n,r);if(e){var a=_[e].wrapper;return _.splice(e,1),a}}function Pt(t,n,r){var e,a;for(e=0;e<_.length;e++)if(a=_[e],a.element===t&&a.type===n&&a.fn===r)return e}});var Qe=$((ir,Je)=>{"use strict";var Ue={},At="(?:^|\\s)",_t="(?:\\s|$)";function We(t){var n=Ue[t];return n?n.lastIndex=0:Ue[t]=n=new RegExp(At+t+_t,"g"),n}function qt(t,n){var r=t.className;r.length?We(n).test(r)||(t.className+=" "+n):t.className=n}function Tt(t,n){t.className=t.className.replace(We(n)," ").trim()}Je.exports={add:qt,rm:Tt}});var ut=$((or,st)=>{"use strict";var Vt=Be(),P=Ke(),X=Qe(),A=document,k=A.documentElement;function Gt(t,n){var r=arguments.length;r===1&&Array.isArray(t)===!1&&(n=t,t=[]);var e,a,o,s,l,h,b,g,w,f,D,M=null,I,c=n||{};c.moves===void 0&&(c.moves=rt),c.accepts===void 0&&(c.accepts=rt),c.invalid===void 0&&(c.invalid=ht),c.containers===void 0&&(c.containers=t||[]),c.isContainer===void 0&&(c.isContainer=Lt),c.copy===void 0&&(c.copy=!1),c.copySortSource===void 0&&(c.copySortSource=!1),c.revertOnSpill===void 0&&(c.revertOnSpill=!1),c.removeOnSpill===void 0&&(c.removeOnSpill=!1),c.direction===void 0&&(c.direction="vertical"),c.ignoreInputTextSelection===void 0&&(c.ignoreInputTextSelection=!0),c.mirrorContainer===void 0&&(c.mirrorContainer=A.body);var p=Vt({containers:c.containers,start:vt,end:fe,cancel:pe,remove:me,destroy:ct,canMove:ft,dragging:!1});return c.removeOnSpill===!0&&p.on("over",mt).on("out",pt),ue(),p;function H(i){return p.containers.indexOf(i)!==-1||c.isContainer(i)}function ue(i){var u=i?"remove":"add";q(k,u,"mousedown",lt),q(k,u,"mouseup",K)}function L(i){var u=i?"remove":"add";q(k,u,"mousemove",dt)}function ce(i){var u=i?"remove":"add";P[u](k,"selectstart",le),P[u](k,"click",le)}function ct(){ue(!0),K({})}function le(i){I&&i.preventDefault()}function lt(i){h=i.clientX,b=i.clientY;var u=Ze(i)!==1||i.metaKey||i.ctrlKey;if(!u){var d=i.target,m=z(d);m&&(I=m,L(),i.type==="mousedown"&&(ot(d)?d.focus():i.preventDefault()))}}function dt(i){if(I){if(Ze(i)===0){K({});return}if(!(i.clientX!==void 0&&Math.abs(i.clientX-h)<=(c.slideFactorX||0)&&i.clientY!==void 0&&Math.abs(i.clientY-b)<=(c.slideFactorY||0))){if(c.ignoreInputTextSelection){var u=Y("clientX",i)||0,d=Y("clientY",i)||0,m=A.elementFromPoint(u,d);if(ot(m))return}var y=I;L(!0),ce(),fe(),de(y);var E=Ht(o);s=Y("pageX",i)-E.left,l=Y("pageY",i)-E.top,X.add(f||o,"gu-transit"),gt(),J(i)}}}function z(i){if(!(p.dragging&&e)&&!H(i)){for(var u=i;S(i)&&H(S(i))===!1;)if(c.invalid(i,u)||(i=S(i),!i))return;var d=S(i);if(d&&!c.invalid(i,u)){var m=c.moves(i,d,u,T(i));if(m)return{item:i,source:d}}}}function ft(i){return!!z(i)}function vt(i){var u=z(i);u&&de(u)}function de(i){Et(i.item,i.source)&&(f=i.item.cloneNode(!0),p.emit("cloned",f,i.item,"copy")),a=i.source,o=i.item,g=w=T(i.item),p.dragging=!0,p.emit("drag",o,a)}function ht(){return!1}function fe(){if(p.dragging){var i=f||o;he(i,S(i))}}function ve(){I=!1,L(!0),ce(!0)}function K(i){if(ve(),!!p.dragging){var u=f||o,d=Y("clientX",i)||0,m=Y("clientY",i)||0,y=tt(e,d,m),E=ge(y,d,m);E&&(f&&c.copySortSource||!f||E!==a)?he(u,E):c.removeOnSpill?me():pe()}}function he(i,u){var d=S(i);f&&c.copySortSource&&u===a&&d.removeChild(o),W(u)?p.emit("cancel",i,a,a):p.emit("drop",i,u,a,w),U()}function me(){if(p.dragging){var i=f||o,u=S(i);u&&u.removeChild(i),p.emit(f?"cancel":"remove",i,u,a),U()}}function pe(i){if(p.dragging){var u=arguments.length>0?i:c.revertOnSpill,d=f||o,m=S(d),y=W(m);y===!1&&u&&(f?m&&m.removeChild(f):a.insertBefore(d,g)),y||u?p.emit("cancel",d,a,a):p.emit("drop",d,m,a,w),U()}}function U(){var i=f||o;ve(),bt(),i&&X.rm(i,"gu-transit"),D&&clearTimeout(D),p.dragging=!1,M&&p.emit("out",i,M,a),p.emit("dragend",i),a=o=f=g=w=D=M=null}function W(i,u){var d;return u!==void 0?d=u:e?d=w:d=T(f||o),i===a&&d===g}function ge(i,u,d){for(var m=i;m&&!y();)m=S(m);return m;function y(){var E=H(m);if(E===!1)return!1;var B=be(m,i),C=Ee(m,B,u,d),R=W(m,C);return R?!0:c.accepts(o,m,a,C)}}function J(i){if(!e)return;i.preventDefault();var u=Y("clientX",i)||0,d=Y("clientY",i)||0,m=u-s,y=d-l;e.style.left=m+"px",e.style.top=y+"px";var E=f||o,B=tt(e,u,d),C=ge(B,u,d),R=C!==null&&C!==M;(R||C===null)&&(Mt(),M=C,wt());var x=S(E);if(C===a&&f&&!c.copySortSource){x&&x.removeChild(E);return}var O,F=be(C,B);if(F!==null)O=Ee(C,F,u,d);else if(c.revertOnSpill===!0&&!f)O=g,C=a;else{f&&x&&x.removeChild(E);return}(O===null&&R||O!==E&&O!==T(E))&&(w=O,C.insertBefore(E,O),p.emit("shadow",E,C,a));function N(Ct){p.emit(Ct,E,M,a)}function wt(){R&&N("over")}function Mt(){M&&N("out")}}function mt(i){X.rm(i,"gu-hide")}function pt(i){p.dragging&&X.add(i,"gu-hide")}function gt(){if(!e){var i=o.getBoundingClientRect();e=o.cloneNode(!0),e.style.width=nt(i)+"px",e.style.height=it(i)+"px",X.rm(e,"gu-transit"),X.add(e,"gu-mirror"),c.mirrorContainer.appendChild(e),q(k,"add","mousemove",J),X.add(c.mirrorContainer,"gu-unselectable"),p.emit("cloned",e,o,"mirror")}}function bt(){e&&(X.rm(c.mirrorContainer,"gu-unselectable"),q(k,"remove","mousemove",J),S(e).removeChild(e),e=null)}function be(i,u){for(var d=u;d!==i&&S(d)!==i;)d=S(d);return d===k?null:d}function Ee(i,u,d,m){var y=c.direction==="horizontal",E=u!==i?C():B();return E;function B(){var x=i.children.length,O,F,N;for(O=0;O<x;O++)if(F=i.children[O],N=F.getBoundingClientRect(),y&&N.left+N.width/2>d||!y&&N.top+N.height/2>m)return F;return null}function C(){var x=u.getBoundingClientRect();return R(y?d>x.left+nt(x)/2:m>x.top+it(x)/2)}function R(x){return x?T(u):u}}function Et(i,u){return typeof c.copy=="boolean"?c.copy:c.copy(i,u)}}function q(t,n,r,e){var a={mouseup:"touchend",mousedown:"touchstart",mousemove:"touchmove"},o={mouseup:"pointerup",mousedown:"pointerdown",mousemove:"pointermove"},s={mouseup:"MSPointerUp",mousedown:"MSPointerDown",mousemove:"MSPointerMove"};global.navigator.pointerEnabled?P[n](t,o[r],e):global.navigator.msPointerEnabled?P[n](t,s[r],e):(P[n](t,a[r],e),P[n](t,r,e))}function Ze(t){if(t.touches!==void 0)return t.touches.length;if(t.which!==void 0&&t.which!==0)return t.which;if(t.buttons!==void 0)return t.buttons;var n=t.button;if(n!==void 0)return n&1?1:n&2?3:n&4?2:0}function Ht(t){var n=t.getBoundingClientRect();return{left:n.left+et("scrollLeft","pageXOffset"),top:n.top+et("scrollTop","pageYOffset")}}function et(t,n){return typeof global[n]<"u"?global[n]:k.clientHeight?k[t]:A.body[t]}function tt(t,n,r){t=t||{};var e=t.className||"",a;return t.className+=" gu-hide",a=A.elementFromPoint(n,r),t.className=e,a}function Lt(){return!1}function rt(){return!0}function nt(t){return t.width||t.right-t.left}function it(t){return t.height||t.bottom-t.top}function S(t){return t.parentNode===A?null:t.parentNode}function ot(t){return t.tagName==="INPUT"||t.tagName==="TEXTAREA"||t.tagName==="SELECT"||at(t)}function at(t){return!t||t.contentEditable==="false"?!1:t.contentEditable==="true"?!0:at(S(t))}function T(t){return t.nextElementSibling||n();function n(){var r=t;do r=r.nextSibling;while(r&&r.nodeType!==1);return r}}function zt(t){return t.targetTouches&&t.targetTouches.length?t.targetTouches[0]:t.changedTouches&&t.changedTouches.length?t.changedTouches[0]:t}function Y(t,n){var r=zt(n),e={pageX:"clientX",pageY:"clientY"};return t in e&&!(t in r)&&e[t]in r&&(t=e[t]),r[t]}st.exports=Gt});var se=yt(ut(),1),ie=class{constructor(n,r,e){this.name=n,this.drake=r,this.options=e,this.initEvents=!1}},v=(function(t){return t.Cancel="cancel",t.Cloned="cloned",t.Drag="drag",t.DragEnd="dragend",t.Drop="drop",t.Out="out",t.Over="over",t.Remove="remove",t.Shadow="shadow",t.DropModel="dropModel",t.RemoveModel="removeModel",t})(v||{}),Kt=Object.keys(v).map(t=>v[t]),Ut=se.default||se,V=class{constructor(n=Ut){this.build=n}},j=(t,n,r)=>e=>e.pipe(ee(({event:a,name:o})=>a===t&&(n===void 0||o===n)),we(({name:a,args:o})=>r(a,o))),Wt=(t,[n,r,e])=>({name:t,el:n,container:r,source:e}),oe=(()=>{class t{constructor(r){this.drakeFactory=r,this.groups={},this.dispatch$=new Z,this.elContainerSource=e=>a=>this.dispatch$.pipe(j(e,a,Wt)),this.cancel=this.elContainerSource(v.Cancel),this.remove=this.elContainerSource(v.Remove),this.shadow=this.elContainerSource(v.Shadow),this.over=this.elContainerSource(v.Over),this.out=this.elContainerSource(v.Out),this.drag=e=>this.dispatch$.pipe(j(v.Drag,e,(a,[o,s])=>({name:a,el:o,source:s}))),this.dragend=e=>this.dispatch$.pipe(j(v.DragEnd,e,(a,[o])=>({name:a,el:o}))),this.drop=e=>this.dispatch$.pipe(j(v.Drop,e,(a,[o,s,l,h])=>({name:a,el:o,target:s,source:l,sibling:h}))),this.cloned=e=>this.dispatch$.pipe(j(v.Cloned,e,(a,[o,s,l])=>({name:a,clone:o,original:s,cloneType:l}))),this.dropModel=e=>this.dispatch$.pipe(j(v.DropModel,e,(a,[o,s,l,h,b,g,w,f,D])=>({name:a,el:o,target:s,source:l,sibling:h,item:b,sourceModel:g,targetModel:w,sourceIndex:f,targetIndex:D}))),this.removeModel=e=>this.dispatch$.pipe(j(v.RemoveModel,e,(a,[o,s,l,h,b,g])=>({name:a,el:o,container:s,source:l,item:h,sourceModel:b,sourceIndex:g}))),(this.drakeFactory===null||this.drakeFactory===void 0)&&(this.drakeFactory=new V)}add(r){if(this.find(r.name))throw new Error('Group named: "'+r.name+'" already exists.');return this.groups[r.name]=r,this.handleModels(r),this.setupEvents(r),r}find(r){return this.groups[r]}destroy(r){let e=this.find(r);e&&(e.drake&&e.drake.destroy(),delete this.groups[r])}createGroup(r,e){return this.add(new ie(r,this.drakeFactory.build([],e),e))}handleModels({name:r,drake:e,options:a}){let o,s,l;e.on("remove",(h,b,g)=>{if(!e.models)return;let w=e.models[e.containers.indexOf(g)];w=w.slice(0);let f=w.splice(s,1)[0];this.dispatch$.next({event:v.RemoveModel,name:r,args:[h,b,g,f,w,s]})}),e.on("drag",(h,b)=>{e.models&&(o=h,s=this.domIndexOf(h,b))}),e.on("drop",(h,b,g,w)=>{if(!e.models||!b)return;l=this.domIndexOf(h,b);let f=e.models[e.containers.indexOf(g)],D=e.models[e.containers.indexOf(b)],M;if(b===g)f=f.slice(0),M=f.splice(s,1)[0],f.splice(l,0,M),D=f;else{let I=o!==h;if(M=f[s],I){if(!a.copyItem)throw new Error("If you have enabled `copy` on a group, you must provide a `copyItem` function.");M=a.copyItem(M)}if(I||(f=f.slice(0),f.splice(s,1)),D=D.slice(0),D.splice(l,0,M),I)try{b.removeChild(h)}catch{}}this.dispatch$.next({event:v.DropModel,name:r,args:[h,b,g,w,M,f,D,s,l]})})}setupEvents(r){if(r.initEvents)return;r.initEvents=!0;let e=r.name,a=this,o=s=>{switch(s){case v.Drag:r.drake.on(s,(...l)=>{this.dispatch$.next({event:s,name:e,args:l})});break;case v.Drop:r.drake.on(s,(...l)=>{this.dispatch$.next({event:s,name:e,args:l})});break;case v.DragEnd:r.drake.on(s,(...l)=>{this.dispatch$.next({event:s,name:e,args:l})});break;case v.Cancel:case v.Remove:case v.Shadow:case v.Over:case v.Out:r.drake.on(s,(...l)=>{this.dispatch$.next({event:s,name:e,args:l})});break;case v.Cloned:r.drake.on(s,(...l)=>{this.dispatch$.next({event:s,name:e,args:l})});break;case v.DropModel:r.drake.on(s,(...l)=>{this.dispatch$.next({event:s,name:e,args:l})});break;case v.RemoveModel:r.drake.on(s,(...l)=>{this.dispatch$.next({event:s,name:e,args:l})});break;default:break}};Kt.forEach(o)}domIndexOf(r,e){if(e)return Array.prototype.indexOf.call(e.children,r)}static{this.\u0275fac=function(e){return new(e||t)(ye(V,8))}}static{this.\u0275prov=Me({token:t,factory:t.\u0275fac,providedIn:"root"})}}return t})(),pr=(()=>{class t{get container(){return this.el&&this.el.nativeElement}constructor(r,e){this.el=r,this.dragulaService=e,this.dragulaModelChange=new Se}ngOnChanges(r){if(r&&r.dragula){let{previousValue:e,currentValue:a}=r.dragula,o=!!e,s=!!a;o&&this.teardown(e),s&&this.setup()}else if(r&&r.dragulaModel){let{previousValue:e,currentValue:a}=r.dragulaModel,o=this.group?.drake;if(this.dragula&&o){o.models=o.models||[];let s=o.models.indexOf(e);s!==-1?(o.models.splice(s,1),a&&o.models.splice(s,0,a)):a&&o.models.push(a)}}}setup(){let r=a=>{this.dragulaModel&&(a.drake?.models?a.drake?.models?.push(this.dragulaModel):a.drake&&(a.drake.models=[this.dragulaModel]))};if(!this.dragula)return;let e=this.dragulaService.find(this.dragula);if(!e){let a={};e=this.dragulaService.createGroup(this.dragula,a)}r(e),e.drake?.containers.push(this.container),this.subscribe(this.dragula),this.group=e}subscribe(r){this.subs=new Q,this.subs.add(this.dragulaService.dropModel(r).subscribe(({source:e,target:a,sourceModel:o,targetModel:s})=>{e===this.el.nativeElement?this.dragulaModelChange.emit(o):a===this.el.nativeElement&&this.dragulaModelChange.emit(s)})),this.subs.add(this.dragulaService.removeModel(r).subscribe(({source:e,sourceModel:a})=>{e===this.el.nativeElement&&this.dragulaModelChange.emit(a)}))}teardown(r){this.subs?.unsubscribe();let e=this.dragulaService.find(r);if(e){let a=e.drake?.containers.indexOf(this.el.nativeElement);if(a!==-1&&e.drake?.containers.splice(a,1),this.dragulaModel&&e.drake&&e.drake.models){let o=e.drake.models.indexOf(this.dragulaModel);o!==-1&&e.drake.models.splice(o,1)}}}ngOnDestroy(){this.dragula&&this.teardown(this.dragula)}static{this.\u0275fac=function(e){return new(e||t)(te(Oe),te(oe))}}static{this.\u0275dir=ke({type:t,selectors:[["","dragula",""]],inputs:{dragula:"dragula",dragulaModel:"dragulaModel"},outputs:{dragulaModelChange:"dragulaModelChange"},standalone:!1,features:[xe]})}}return t})(),gr=(()=>{class t{static forRoot(){return{ngModule:t,providers:[oe]}}static{this.\u0275fac=function(e){return new(e||t)}}static{this.\u0275mod=De({type:t})}static{this.\u0275inj=Ce({providers:[oe]})}}return t})(),br=new V((t,n)=>new ae(t,n)),ae=class{constructor(n=[],r={},e){this.containers=n,this.options=r,this.models=e,this.emitter$=new Z,this.subs=new Q,this.dragging=!1}on(n,r){this.subs.add(this.emitter$.pipe(ee(({eventType:e})=>e===n)).subscribe(({eventType:e,args:a})=>{if(e===v.Drag){let o=Array.from(a),s=o[0],l=o[1];r(s,l);return}if(e===v.Drop){let o=Array.from(a),s=o[0],l=o[1],h=o[2],b=o[3];r(s,l,h,b);return}if(e===v.Remove){let o=Array.from(a),s=o[0],l=o[1],h=o[2];r(s,l,h);return}r(a)}))}start(n){this.dragging=!0}end(){this.dragging=!1}cancel(n){this.dragging=!1}canMove(n){return this.options.accepts?this.options.accepts(n):!1}remove(){this.dragging=!1}destroy(){this.subs.unsubscribe()}emit(n,...r){this.emitter$.next({eventType:n,args:r})}};export{oe as a,pr as b,gr as c};