@fastybird/smart-panel-admin 0.6.0-alpha.0 → 0.8.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/dist/assets/{card-add-form-mkeZmTRy.js → card-add-form-DCedaTn3.js} +1 -1
  2. package/dist/assets/{card-edit-form-CnHdvEnw.js → card-edit-form-DziEugFc.js} +1 -1
  3. package/dist/assets/{common-eNbjMqa7.js → common-1h7wnZKI.js} +4 -4
  4. package/dist/assets/{components-CzsqHlrP.js → components-BrAf-RJg.js} +1 -1
  5. package/dist/assets/{components-dAMbqTCO.js → components-CMK0gDCp.js} +1 -1
  6. package/dist/assets/{components-ClN_6D6Z.js → components-C_HvCpT4.js} +1 -1
  7. package/dist/assets/{components-DLkKG8LM.js → components-CdF8DZml.js} +1 -1
  8. package/dist/assets/{components-CyBjWIQF.js → components-DSqvBTya.js} +2 -2
  9. package/dist/assets/{components-CXfubMCf.js → components-GWm0hgQh.js} +1 -1
  10. package/dist/assets/{components-DM9n4jUc.js → components-_k2VKZQT.js} +1 -1
  11. package/dist/assets/{components-DUmBehbt.js → components-c1epF7E-.js} +1 -1
  12. package/dist/assets/{composables-hZSiwJOw.js → composables-5JPJUgKe.js} +1 -1
  13. package/dist/assets/{composables-DMwxCD04.js → composables-BEEHFlkU.js} +1 -1
  14. package/dist/assets/{composables-nU1gQk0D.js → composables-BGAbz9D6.js} +1 -1
  15. package/dist/assets/{composables-BdrPdjy2.js → composables-B_71n432.js} +1 -1
  16. package/dist/assets/{composables-BG8tL1oG.js → composables-CXPXTZYE.js} +1 -1
  17. package/dist/assets/{composables-BhTE9oa12.js → composables-DLNfKORz2.js} +1 -1
  18. package/dist/assets/{composables-Dv1aLUZv.js → composables-DO4WyFIN.js} +1 -1
  19. package/dist/assets/{composables-DE--zRcP.js → composables-DOc8b-Nv.js} +1 -1
  20. package/dist/assets/{composables-CuLSlAxi.js → composables-DfpUdQTp.js} +1 -1
  21. package/dist/assets/{dashboard-DpW-46uh.js → dashboard-Bwl1moRS.js} +2 -2
  22. package/dist/assets/{dashboard.types-BiuiFJLT.js → dashboard.types-BWvt1eV6.js} +1 -1
  23. package/dist/assets/{data-source-edit-form-DqlTKqC3.js → data-source-edit-form-Bb8XbcJj.js} +1 -1
  24. package/dist/assets/{drawer-c8xl1RGj.js → drawer-9BrwP53p.js} +1 -1
  25. package/dist/assets/{index-Qy3q3-DI.js → index-8G_27KRI.js} +4 -4
  26. package/dist/assets/{input-number-DTuIcGPn.js → input-number-DvPtEsoF.js} +1 -1
  27. package/dist/assets/{integration-config-dialog-CzyWHcFt.js → integration-config-dialog-Bjc7Q8Bp.js} +1 -1
  28. package/dist/assets/{layout-config-C8rjua93.js → layout-config-CeSZfdZE.js} +1 -1
  29. package/dist/assets/{layout-default-UhgTVBgf.js → layout-default-BVzpSMUy.js} +1 -1
  30. package/dist/assets/{layout-lock-Bk2Yet8L.js → layout-lock-CF48vqic.js} +1 -1
  31. package/dist/assets/layout-profile-BIxgqLEU.js +1 -0
  32. package/dist/assets/{layout-profile-Uhar8Avd.js → layout-profile-CoFg77uC.js} +1 -1
  33. package/dist/assets/layout-sign-CRwjf2zl.js +1 -0
  34. package/dist/assets/{layout-sign-BanYndlc.js → layout-sign-D8nAePxS.js} +1 -1
  35. package/dist/assets/{list-data-sources-adjust-BalmtLtY.js → list-data-sources-adjust-BH9ogQkA.js} +1 -1
  36. package/dist/assets/{list-locations-S6xJrPFO.js → list-locations-BZxukcZM.js} +1 -1
  37. package/dist/assets/{list-users-BK7oVhfz.js → list-users-lN96y0RG.js} +1 -1
  38. package/dist/assets/{logs-entries.transformers-T6TO6-Qt.js → logs-entries.transformers-BRvrBqiQ.js} +1 -1
  39. package/dist/assets/{page-configure-BCBYmarD.js → page-configure-DPaFSSdI.js} +1 -1
  40. package/dist/assets/{page-configure-Cs8JZS6d.js → page-configure-lWfAVkSz.js} +1 -1
  41. package/dist/assets/{pagination-DR3UUBj5.js → pagination-CZ4jiyxa.js} +1 -1
  42. package/dist/assets/{popover-D2enS9Mn.js → popover-BfAst2mZ.js} +1 -1
  43. package/dist/assets/{radio-CgHsMybH.js → radio-n1KvuN2C.js} +1 -1
  44. package/dist/assets/{scene-add-form-DSbtyr9Z.js → scene-add-form-DQPVDmeW.js} +1 -1
  45. package/dist/assets/{scene-edit-form-BKbgu70w.js → scene-edit-form-Cz5aPdlM.js} +1 -1
  46. package/dist/assets/{select-data-source-plugin-3BIyqAA_.js → select-data-source-plugin-CAYTXWzW.js} +1 -1
  47. package/dist/assets/{steps-S_VipJNv.js → steps-uN6IlAcu.js} +1 -1
  48. package/dist/assets/{system-CB5ajK1X.js → system-Di-WFuM7.js} +2 -2
  49. package/dist/assets/{table-DSgeJAfG.js → table-F4z-5gbH.js} +1 -1
  50. package/dist/assets/{tile-detail-CQCiyBag.js → tile-detail-D-26JTMN.js} +1 -1
  51. package/dist/assets/{tile-edit-form-CESgeiAZ.js → tile-edit-form-DeFggT4B.js} +1 -1
  52. package/dist/assets/{types-YJUL3wVH.js → types-CchA8Wmm.js} +1 -1
  53. package/dist/assets/{useBuddyChat-DizStCFL.js → useBuddyChat-CApvAiGE.js} +1 -1
  54. package/dist/assets/{useDataSources-BmdTYiuG.js → useDataSources-CprVpbHE.js} +1 -1
  55. package/dist/assets/{useDevices-DRWPHwba.js → useDevices-DxXqJ_nb.js} +1 -1
  56. package/dist/assets/{useGeolocation-DR0ZFPyH.js → useGeolocation-DJuwtAxC.js} +1 -1
  57. package/dist/assets/{useLocation-CHR8SAgg.js → useLocation-Rrxn6HvJ.js} +1 -1
  58. package/dist/assets/{usePage-CbB5l9X8.js → usePage-BaX0yHPY.js} +1 -1
  59. package/dist/assets/{useSpaces-CUEzfGD-.js → useSpaces-C12q9q5Q.js} +1 -1
  60. package/dist/assets/{view-buddy-chat-B8EXbqLp.js → view-buddy-chat-DW34rzR9.js} +1 -1
  61. package/dist/assets/{view-card-add-m3oindzC.js → view-card-add-CieaYa63.js} +1 -1
  62. package/dist/assets/{view-card-edit-Bme1NY2E.js → view-card-edit-C5umbCIq.js} +1 -1
  63. package/dist/assets/{view-channel-Di0esGl3.js → view-channel-C-fOWWRX.js} +1 -1
  64. package/dist/assets/{view-channel-add-CNcsYjTD.js → view-channel-add-DV7C8y80.js} +1 -1
  65. package/dist/assets/{view-channel-edit-DXxJqZaD.js → view-channel-edit-5--_eck7.js} +1 -1
  66. package/dist/assets/{view-channel-property-add-Bv9WuR_H.js → view-channel-property-add-wDJXaHo2.js} +1 -1
  67. package/dist/assets/{view-channel-property-edit-C8zJIwQB.js → view-channel-property-edit-B7HA2nnd.js} +1 -1
  68. package/dist/assets/{view-channels-EhIjH_lb.js → view-channels-Db2KuPaM.js} +1 -1
  69. package/dist/assets/{view-config-module-edit-D3vpSL_v.js → view-config-module-edit-IuAZceQY.js} +1 -1
  70. package/dist/assets/{view-config-modules-DsiCt_Zq.js → view-config-modules--xgrpao4.js} +1 -1
  71. package/dist/assets/{view-config-plugin-edit-5zS5wce_.js → view-config-plugin-edit-Bbwxb7cZ.js} +1 -1
  72. package/dist/assets/{view-config-plugins-BMMJ63_B.js → view-config-plugins-D16Pq90F.js} +1 -1
  73. package/dist/assets/{view-data-source-add-Bl4k1qhy.js → view-data-source-add-BvvULVFs.js} +1 -1
  74. package/dist/assets/{view-data-source-add-C_MPoPWz.js → view-data-source-add-DPq16k0M.js} +1 -1
  75. package/dist/assets/{view-data-source-edit-BvK2T0ND.js → view-data-source-edit-9MgqKtIH.js} +1 -1
  76. package/dist/assets/{view-data-source-edit-BqYDqqRL.js → view-data-source-edit-DlXyGIbG.js} +1 -1
  77. package/dist/assets/{view-device-CdWqgGkd.js → view-device-DZv1M8Lr.js} +1 -1
  78. package/dist/assets/{view-device-add-BehkXt2O.js → view-device-add-CxewPpiB.js} +1 -1
  79. package/dist/assets/{view-device-control-MmPP7sqF.js → view-device-control-C180PepT.js} +1 -1
  80. package/dist/assets/{view-device-edit-D_jzgh8v.js → view-device-edit-Dt84BT5r.js} +1 -1
  81. package/dist/assets/{view-devices-DrfBaXjf.js → view-devices-CCEfFGxO.js} +1 -1
  82. package/dist/assets/{view-display-Cxr0T8d8.js → view-display-DCM7oLnE.js} +1 -1
  83. package/dist/assets/{view-display-edit-DxW8Cgm5.js → view-display-edit-CfkL-Vgz.js} +1 -1
  84. package/dist/assets/{view-display-tokens-B8QeFi1c.js → view-display-tokens-BZQnvWFN.js} +1 -1
  85. package/dist/assets/{view-displays-D1u9-geb.js → view-displays-DnqZ4It-.js} +1 -1
  86. package/dist/assets/{view-extension-detail-51DgRSIi.js → view-extension-detail-Cpq-1-vB.js} +1 -1
  87. package/dist/assets/{view-extensions-BCETClaW.js → view-extensions-B2xiSBmt.js} +1 -1
  88. package/dist/assets/{view-location-add-DUu_SD3R.js → view-location-add-ucbk868d.js} +1 -1
  89. package/dist/assets/{view-location-edit-C5JM0sgz.js → view-location-edit-CV308tlg.js} +1 -1
  90. package/dist/assets/{view-location-BGvNijYs.js → view-location-w7E7h5dl.js} +1 -1
  91. package/dist/assets/{view-locations-BeLTmk7s.js → view-locations-DiHaHPaw.js} +1 -1
  92. package/dist/assets/{view-lock-screen-DCrkqieV.js → view-lock-screen-D_kKbwJ0.js} +1 -1
  93. package/dist/assets/{view-onboarding-DAWcBqFI.js → view-onboarding-BpUVrpsJ.js} +1 -1
  94. package/dist/assets/{view-page-CWTbvTaM.js → view-page-CnKMzrK3.js} +1 -1
  95. package/dist/assets/{view-page-add-BRk5S0fm.js → view-page-add-Bs37phc4.js} +1 -1
  96. package/dist/assets/{view-page-configure-DS9wMCwU.js → view-page-configure-BnibCrwy.js} +1 -1
  97. package/dist/assets/{view-page-configure-BkY-6cIL.js → view-page-configure-CKqBhTXo.js} +1 -1
  98. package/dist/assets/{view-page-data-source-add--iJMc8Q8.js → view-page-data-source-add-DQoCLe3r.js} +1 -1
  99. package/dist/assets/{view-page-data-source-edit-CgZAxX2a.js → view-page-data-source-edit-9DZ2Z8ED.js} +1 -1
  100. package/dist/assets/{view-page-edit-oc7bIbbX.js → view-page-edit-DHCziJsf.js} +1 -1
  101. package/dist/assets/{view-page-plugin-IJ52HPtg.js → view-page-plugin-B8lpU_yI.js} +1 -1
  102. package/dist/assets/{view-pages-CrtnLuQ9.js → view-pages-WY1tS9F0.js} +1 -1
  103. package/dist/assets/{view-profile-general-TKTVfP70.js → view-profile-general-CvcqqnT0.js} +1 -1
  104. package/dist/assets/{view-profile-security-DFplv1NL.js → view-profile-security-BCPrVqHA.js} +1 -1
  105. package/dist/assets/{view-scene-add-B7wOkekt.js → view-scene-add-D6BQ-QjZ.js} +1 -1
  106. package/dist/assets/{view-scene-edit-BLUs61D5.js → view-scene-edit-U01SiuqE.js} +1 -1
  107. package/dist/assets/{view-scenes-DZDbviFI.js → view-scenes-U6LOZX5J.js} +1 -1
  108. package/dist/assets/{view-sign-in-C-I7VUdI.js → view-sign-in-Dop_D0u1.js} +1 -1
  109. package/dist/assets/{view-sign-up-DRsfDAlN.js → view-sign-up-CN9FUgS3.js} +1 -1
  110. package/dist/assets/{view-space-DOWBleom.js → view-space-CfoK-7op.js} +1 -1
  111. package/dist/assets/{view-space-add-Dt6fT2av.js → view-space-add-CpMFTOLa.js} +1 -1
  112. package/dist/assets/{view-space-edit-Bt_4NPoE.js → view-space-edit-DFsIcG7t.js} +1 -1
  113. package/dist/assets/{view-spaces-CiIiM8WD.js → view-spaces-6X_ollTy.js} +1 -1
  114. package/dist/assets/{view-spaces-onboarding-BesyGp0O.js → view-spaces-onboarding-B_Q4z0aj.js} +1 -1
  115. package/dist/assets/{view-stats-LJpWkOzd.js → view-stats-wsrYRdIZ.js} +1 -1
  116. package/dist/assets/{view-system-info-D0AqmZIo.js → view-system-info-Mjmt-jg8.js} +1 -1
  117. package/dist/assets/{view-system-log-detail-CxOY3fCx.js → view-system-log-detail-DjpaSCsY.js} +1 -1
  118. package/dist/assets/{view-system-logs-BX5gvehj.js → view-system-logs-D0KfSCQV.js} +1 -1
  119. package/dist/assets/{view-tile-38_0YNBE.js → view-tile-DIRBj4gV.js} +1 -1
  120. package/dist/assets/{view-tile-add-D12ny8FQ.js → view-tile-add-BxeM6Ohp.js} +1 -1
  121. package/dist/assets/{view-tile-add-DP1XNhV8.js → view-tile-add-DX-JsGxr.js} +1 -1
  122. package/dist/assets/{view-tile-data-source-add-DRmWHgw6.js → view-tile-data-source-add-BV3z8_JV.js} +1 -1
  123. package/dist/assets/{view-tile-data-source-edit-DdmHHBN-.js → view-tile-data-source-edit-COWZ99J9.js} +1 -1
  124. package/dist/assets/{view-tile-edit-xAfqFJIH.js → view-tile-edit-BVSVskXZ.js} +1 -1
  125. package/dist/assets/{view-tile-edit-BCoE--MQ.js → view-tile-edit-DNVW7Ry7.js} +1 -1
  126. package/dist/assets/{view-tile-edit-XdjIXHOk.js → view-tile-edit-Dh5GsDmT.js} +1 -1
  127. package/dist/assets/{view-user-add-B1GGIzKM.js → view-user-add--HRflXBU.js} +1 -1
  128. package/dist/assets/{view-user-edit-Bai5QAwI.js → view-user-edit-CDeh4OU9.js} +1 -1
  129. package/dist/assets/{view-users-pEJE9dlQ.js → view-users-DowokAN0.js} +1 -1
  130. package/dist/assets/{weather-DsCxpz8C.js → weather-CHc3NgDg.js} +2 -2
  131. package/dist/assets/{weather-forecast.transformers-Cv2QqnvT.js → weather-forecast.transformers-RDeqCiOa.js} +1 -1
  132. package/dist/index.html +52 -52
  133. package/package.json +1 -1
  134. package/dist/assets/layout-profile-BBmfYStQ.js +0 -1
  135. package/dist/assets/layout-sign-JVo3NhJJ.js +0 -1
@@ -1 +1 @@
1
- import"./chunk-DECur_0Z.js";import{$r as e,Ai as t,Br as n,Hr as r,Lr as i,Mr as a,Nr as o,O as s,Oi as c,Qr as l,Sr as u,Xr as d,_i as f,_r as p,ai as m,br as h,ci as g,d as _,f as v,g as y,gr as b,h as x,hr as S,ji as C,kr as w,lr as T,m as E,mr as D,p as O,pi as k,pt as A,sr as j,t as M,ui as N,vr as P,xr as F,yr as I}from"./icon-with-child-DmQ_XhQy.js";import{$r as L,Ai as R,Br as ee,Di as z,Ei as B,Fi as V,Fr as H,Gr as U,H as te,Ii as ne,Jr as re,Li as W,Nr as G,On as ie,Pr as ae,Qr as K,Rr as oe,Si as q,Ti as se,Ur as ce,Vr as le,Wr as ue,Zr as de,cr as J,fi as fe,pi as pe,ti as me,vi as Y,xi as he,yi as ge,yr as X,zr as _e}from"./common-eNbjMqa7.js";import{n as Z,t as ve}from"./table-DSgeJAfG.js";import{t as ye}from"./skeleton-DMwdgp1r.js";import{t as be}from"./input-number-DTuIcGPn.js";import{n as Q,r as xe}from"./radio-CgHsMybH.js";import{t as Se}from"./drawer-c8xl1RGj.js";import{t as Ce}from"./empty-C13Ke09q.js";import{t as we}from"./pagination-DR3UUBj5.js";import{r as $}from"./extensions.constants-zRRiNzmt.js";import{r as Te,s as Ee}from"./composables-BhTE9oa12.js";var De={class:`p-4`},Oe={class:`text-sm font-semibold uppercase tracking-wide mb-2 text-gray-500`},ke={class:`grid grid-cols-1 gap-3`},Ae={class:`flex items-start gap-3`},je={key:0,class:`shrink-0 mt-1`},Me={class:`flex-1 min-w-0`},Ne={class:`flex items-center gap-2 mb-1`},Pe={class:`font-medium`},Fe={key:0,class:`text-sm text-gray-500 m-0 mb-3`},Ie={class:`shrink-0`},Le=u({name:`ExtensionActions`,__name:`extension-actions`,props:{extensionType:{}},setup(e){let t=e,{t:i}=_(),{actions:a,isLoading:o,executingActions:s,executeAction:c}=Ee(),u=g({}),m=g({}),v=e=>(u[e]||(u[e]={}),u[e]),y=(e,t)=>v(e)[t],w=(e,t,n)=>{v(e)[t]=n},E=(e,t)=>v(e)[t],k=(e,t,n)=>{v(e)[t]=n},A=(e,t)=>{let n=v(e)[t];return typeof n==`boolean`?n:!1},j=(e,t,n)=>{v(e)[t]=n},M=(e,t)=>{let n=v(e)[t];return Array.isArray(n)?void 0:n},N=(e,t,n)=>{v(e)[t]=n},L=(e,t)=>{let n=v(e)[t];return Array.isArray(n)?n:[]},ee=(e,t,n)=>{v(e)[t]=n},B=()=>{let e=new Set(a.value.map(e=>e.id));for(let t of Object.keys(u))e.has(t)||delete u[t];for(let t of Object.keys(m))e.has(t)||delete m[t];for(let e of a.value){u[e.id]={};for(let t of e.parameters??[])t.default!==void 0&&(u[e.id][t.name]=t.default)}},H=D(()=>{let e={};for(let t of a.value){let n=t.category??`general`;e[n]||(e[n]=[]),e[n].push(t)}return Object.entries(e).map(([e,t])=>({name:e,actions:t}))}),te=async e=>{if(e.dangerous)try{await ce.confirm(i(`extensionsModule.actions.messages.confirmDangerous`),e.label,{confirmButtonText:i(`extensionsModule.actions.buttons.confirm`),cancelButtonText:i(`extensionsModule.actions.buttons.cancel`),type:`warning`})}catch{return}delete m[e.id];let n=u[e.id]??{},r=await c(t.extensionType,e.id,n);m[e.id]=r};return d(a,()=>{B()},{immediate:!0}),(e,t)=>(n(),P(`div`,De,[f(o)?(n(),b(f(ye),{key:0,rows:4,animated:``})):f(a).length===0?(n(),b(f(Ce),{key:1,description:f(i)(`extensionsModule.actions.messages.noActions`)},null,8,[`description`])):(n(!0),P(T,{key:2},r(H.value,e=>(n(),P(`div`,{key:e.name,class:`mb-4`},[S(`h4`,Oe,C(f(i)(`extensionsModule.actions.labels.category.${e.name}`)),1),S(`div`,ke,[(n(!0),P(T,null,r(e.actions,e=>(n(),b(f(Y),{key:e.id,shadow:`hover`,"body-class":`p-4!`},{default:l(()=>[S(`div`,Ae,[e.icon?(n(),P(`div`,je,[F(f(O),{icon:e.icon,class:`w-6 h-6 text-gray-500`},null,8,[`icon`])])):p(``,!0),S(`div`,Me,[S(`div`,Ne,[S(`span`,Pe,C(e.label),1),e.mode===`interactive`?(n(),b(f(q),{key:0,size:`small`,type:`info`},{default:l(()=>[h(C(f(i)(`extensionsModule.actions.labels.comingSoon`)),1)]),_:1})):p(``,!0),e.dangerous?(n(),b(f(q),{key:1,size:`small`,type:`danger`},{default:l(()=>[h(C(f(i)(`extensionsModule.actions.labels.dangerous`)),1)]),_:1})):p(``,!0)]),e.description?(n(),P(`p`,Fe,C(e.description),1)):p(``,!0),e.mode===`immediate`&&e.parameters?.length?(n(),b(f(V),{key:1,model:v(e.id),"label-position":`top`,class:`mb-3`,size:`small`},{default:l(()=>[(n(!0),P(T,null,r(e.parameters,i=>(n(),b(f(ne),{key:i.name,label:i.label,class:`mb-2!`},I({default:l(()=>[i.type===`string`?(n(),b(f(z),{key:0,"model-value":y(e.id,i.name),placeholder:i.label,"onUpdate:modelValue":t=>w(e.id,i.name,t)},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`])):i.type===`number`?(n(),b(f(be),{key:1,"model-value":E(e.id,i.name),min:i.validation?.min,max:i.validation?.max,"controls-position":`right`,class:`w-full!`,"onUpdate:modelValue":t=>k(e.id,i.name,t)},null,8,[`model-value`,`min`,`max`,`onUpdate:modelValue`])):i.type===`boolean`?(n(),b(f(re),{key:2,"model-value":A(e.id,i.name),"onUpdate:modelValue":t=>j(e.id,i.name,!!t)},null,8,[`model-value`,`onUpdate:modelValue`])):i.type===`select`?(n(),b(f(he),{key:3,"model-value":M(e.id,i.name),placeholder:i.label,class:`w-full!`,"onUpdate:modelValue":t=>N(e.id,i.name,t)},{default:l(()=>[(n(!0),P(T,null,r(i.options,e=>(n(),b(f(ge),{key:String(e.value),label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:2},1032,[`model-value`,`placeholder`,`onUpdate:modelValue`])):i.type===`multi_select`?(n(),b(f(he),{key:4,"model-value":L(e.id,i.name),placeholder:i.label,multiple:``,class:`w-full!`,"onUpdate:modelValue":t=>ee(e.id,i.name,t)},{default:l(()=>[(n(!0),P(T,null,r(i.options,e=>(n(),b(f(ge),{key:String(e.value),label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:2},1032,[`model-value`,`placeholder`,`onUpdate:modelValue`])):p(``,!0)]),_:2},[i.description||i.required?{name:`label`,fn:l(()=>[S(`span`,null,C(i.label),1),i.required?(n(),b(f(U),{key:0,type:`danger`,class:`ml-1`},{default:l(()=>[...t[0]||=[h(` * `,-1)]]),_:1})):p(``,!0),i.description?(n(),b(f(U),{key:1,class:`block text-xs! font-normal`,type:`info`},{default:l(()=>[h(C(i.description),1)]),_:2},1024)):p(``,!0)]),key:`0`}:void 0]),1032,[`label`]))),128))]),_:2},1032,[`model`])):p(``,!0),m[e.id]?(n(),b(f(W),{key:2,type:m[e.id].success?`success`:`error`,title:m[e.id].message||(m[e.id].success?f(i)(`extensionsModule.actions.messages.success`):f(i)(`extensionsModule.actions.messages.error`)),"show-icon":``,closable:``,class:`mb-2`,onClose:t=>delete m[e.id]},null,8,[`type`,`title`,`onClose`])):p(``,!0)]),S(`div`,Ie,[e.mode===`immediate`?(n(),b(f(x),{key:0,type:`primary`,loading:f(s).has(e.id),disabled:f(s).has(e.id),onClick:t=>te(e)},{icon:l(()=>[F(f(O),{icon:`mdi:play`})]),default:l(()=>[h(` `+C(f(i)(`extensionsModule.actions.buttons.run`)),1)]),_:1},8,[`loading`,`disabled`,`onClick`])):(n(),b(f(R),{key:1,content:f(i)(`extensionsModule.actions.messages.interactiveNotAvailable`)},{default:l(()=>[F(f(x),{disabled:``},{icon:l(()=>[F(f(O),{icon:`mdi:console`})]),default:l(()=>[h(` `+C(f(i)(`extensionsModule.actions.buttons.run`)),1)]),_:1})]),_:1},8,[`content`]))])])]),_:2},1024))),128))])]))),128))]))}}),Re={class:`extension-card__header`},ze={class:`extension-card__header-content`},Be={class:`extension-card__title`},Ve={class:`extension-card__tags`},He={class:`extension-card__content`},Ue={key:0,class:`extension-card__description`},We={key:1,class:`extension-card__description extension-card__description--empty`},Ge={class:`extension-card__meta`},Ke={key:0,class:`extension-card__meta-item`},qe={key:1,class:`extension-card__author`},Je={class:`extension-card__footer`},Ye={class:`extension-card__links`},Xe={class:`flex items-center w-full`},Ze={class:`flex items-center w-full`},Qe=v(u({name:`ExtensionCard`,__name:`extension-card`,props:{extension:{}},emits:[`toggle-enabled`,`detail`],setup(e,{emit:t}){let r=e,i=t,{t:a}=_(),o=D(()=>r.extension.kind===$.MODULE?`mdi:package-variant`:`mdi:toy-brick`),s=D(()=>r.extension.isCore&&r.extension.kind===$.MODULE?a(`extensionsModule.tooltips.coreModuleCannotBeDisabled`):a(`extensionsModule.tooltips.cannotToggleEnabled`)),u=D(()=>r.extension.isCore?a(`extensionsModule.tooltips.coreCannotBeRemoved`):a(`extensionsModule.tooltips.removeNotSupported`)),d=()=>{i(`detail`,r.extension.type)},m=e=>{switch(e){case`enable`:i(`toggle-enabled`,r.extension.type,!0);break;case`disable`:i(`toggle-enabled`,r.extension.type,!1);break;case`delete`:break}},g=e=>{window.open(e,`_blank`,`noopener,noreferrer`)};return(t,r)=>(n(),b(f(Y),{class:c([`extension-card`,{"extension-card--disabled":!e.extension.enabled}]),shadow:`hover`,"header-class":`py-2!`,"body-class":`py-3!`,"footer-class":`py-2! px-4!`},{header:l(()=>[S(`div`,Re,[F(f(O),{icon:o.value,class:`extension-card__icon`},null,8,[`icon`]),S(`div`,ze,[S(`h3`,Be,C(e.extension.name),1),S(`div`,Ve,[F(f(q),{type:e.extension.kind===f($).MODULE?`primary`:`success`,size:`small`},{default:l(()=>[h(C(e.extension.kind===f($).MODULE?f(a)(`extensionsModule.labels.module`):f(a)(`extensionsModule.labels.plugin`)),1)]),_:1},8,[`type`]),e.extension.isCore?(n(),b(f(q),{key:0,type:`warning`,size:`small`},{default:l(()=>[h(C(f(a)(`extensionsModule.labels.core`)),1)]),_:1})):p(``,!0),F(f(q),{type:e.extension.enabled?`success`:`info`,size:`small`},{default:l(()=>[h(C(e.extension.enabled?f(a)(`extensionsModule.labels.enabled`):f(a)(`extensionsModule.labels.disabled`)),1)]),_:1},8,[`type`])])])])]),footer:l(()=>[S(`div`,Je,[S(`div`,Ye,[e.extension.links?.documentation?(n(),b(f(x),{key:0,type:`primary`,size:`small`,link:``,onClick:r[0]||=j(t=>g(e.extension.links.documentation),[`stop`])},{default:l(()=>[F(f(O),{icon:`mdi:book-open-page-variant`,class:`mr-1`}),h(` `+C(f(a)(`extensionsModule.buttons.documentation`)),1)]),_:1})):p(``,!0),e.extension.links?.repository?(n(),b(f(x),{key:1,type:`primary`,size:`small`,link:``,onClick:r[1]||=j(t=>g(e.extension.links.repository),[`stop`])},{default:l(()=>[F(f(O),{icon:`mdi:github`,class:`mr-1`}),h(` `+C(f(a)(`extensionsModule.buttons.repository`)),1)]),_:1})):p(``,!0),e.extension.links?.bugsTracking?(n(),b(f(x),{key:2,type:`primary`,size:`small`,link:``,onClick:r[2]||=j(t=>g(e.extension.links.bugsTracking),[`stop`])},{default:l(()=>[F(f(O),{icon:`mdi:bug`,class:`mr-1`}),h(` `+C(f(a)(`extensionsModule.buttons.issues`)),1)]),_:1})):p(``,!0)]),F(f(de),{"split-button":``,size:`small`,trigger:`click`,onClick:d,onCommand:m},{dropdown:l(()=>[F(f(L),null,{default:l(()=>[F(f(K),{command:e.extension.enabled?`disable`:`enable`,disabled:!e.extension.canToggleEnabled},{default:l(()=>[F(f(R),{content:s.value,disabled:e.extension.canToggleEnabled,placement:`left`},{default:l(()=>[S(`span`,Xe,[F(f(O),{icon:e.extension.enabled?`mdi:toggle-switch-off`:`mdi:toggle-switch`,class:`mr-2`},null,8,[`icon`]),h(` `+C(e.extension.enabled?f(a)(`extensionsModule.buttons.disable`):f(a)(`extensionsModule.buttons.enable`)),1)])]),_:1},8,[`content`,`disabled`])]),_:1},8,[`command`,`disabled`]),F(f(K),{command:`delete`,disabled:``,divided:``},{default:l(()=>[F(f(R),{content:u.value,placement:`left`},{default:l(()=>[S(`span`,Ze,[F(f(O),{icon:`mdi:delete`,class:`mr-2`}),h(` `+C(f(a)(`extensionsModule.buttons.remove`)),1)])]),_:1},8,[`content`])]),_:1})]),_:1})]),default:l(()=>[h(C(f(a)(`extensionsModule.buttons.detail.title`))+` `,1)]),_:1})])]),default:l(()=>[S(`div`,He,[e.extension.description?(n(),P(`p`,Ue,C(e.extension.description),1)):(n(),P(`p`,We,C(f(a)(`extensionsModule.messages.noDescription`)),1)),S(`div`,Ge,[e.extension.version?(n(),P(`div`,Ke,[F(f(O),{icon:`mdi:tag`,class:`extension-card__meta-icon`}),S(`span`,null,C(e.extension.version),1)])):p(``,!0),e.extension.author?(n(),P(`div`,qe,[F(f(O),{icon:`mdi:account`,class:`extension-card__author-icon`}),S(`span`,null,C(e.extension.author),1)])):p(``,!0)])])]),_:1},8,[`class`]))}}),[[`__scopeId`,`data-v-f13b0a97`]]),$e={class:`h-full w-full flex flex-col`},et={class:`flex items-center justify-between p-2 border-b`},tt={class:`flex items-center gap-2`},nt={class:`flex items-center gap-2`},rt={key:0,class:`flex-1 flex items-center justify-center`},it={key:1,class:`flex-1 flex items-center justify-center`},at={key:2,class:`flex-1 flex items-center justify-center`},ot=[`onClick`],st={class:`grid grid-cols-[140px_70px_1fr] gap-3 items-center`},ct={class:`font-mono text-xs`},lt={class:`truncate text-sm`},ut={class:`py-3 text-center`},dt={key:0,class:`text-xs text-gray-400`},ft={class:`flex flex-col h-full`},pt={class:`flex flex-col overflow-hidden h-full`},mt=u({name:`ExtensionLogs`,__name:`extension-logs`,props:{extensionType:{},live:{type:Boolean}},emits:[`update:live`],setup(t,{emit:i}){let o=t,c=i,{t:u}=_(),{logs:g,hasMore:v,isLoading:y,loaded:A,live:j,filterLevels:I,filterTimeRange:L,filtersActive:z,clearFilters:V,fetchLogs:U,loadMoreLogs:te,refreshLogs:ne}=Te({extensionType:k(()=>o.extensionType)}),W=H(o,`live`,c,{defaultValue:!1}),G=N(null),K=D({get:()=>G.value!==null,set:e=>{e||(G.value=null)}}),se=[X.error,X.warn,X.info,X.debug,X.fatal,X.log,X.success,X.fail],ce=D(()=>[{value:`all`,label:u(`extensionsModule.texts.logs.timeRange.all`)},{value:`1h`,label:u(`extensionsModule.texts.logs.timeRange.1h`)},{value:`6h`,label:u(`extensionsModule.texts.logs.timeRange.6h`)},{value:`24h`,label:u(`extensionsModule.texts.logs.timeRange.24h`)},{value:`7d`,label:u(`extensionsModule.texts.logs.timeRange.7d`)}]);d(W,e=>{j.value=e},{immediate:!0}),d(j,e=>{W.value=e});let de=()=>{ne()},J=()=>{te()},fe=e=>ae(new Date(e)),pe=e=>new Date(e).toISOString(),me=e=>{let t=e.toLowerCase();return[`fatal`,`error`,`fail`].includes(t)?{type:`danger`,effect:`light`}:[`warn`,`box`].includes(t)?{type:`warning`,effect:`light`}:[`success`,`ready`,`start`,`info`,`log`].includes(t)?{type:`success`,effect:`light`}:{effect:`plain`,class:`tag-neutral`}};return a(()=>{U()}),(t,i)=>(n(),P(`div`,$e,[S(`div`,et,[S(`div`,tt,[F(f(x),{size:`small`,onClick:de},{icon:l(()=>[F(f(O),{icon:`mdi:refresh`})]),default:l(()=>[h(` `+C(f(u)(`extensionsModule.buttons.refresh`)),1)]),_:1}),F(f(re),{modelValue:f(W),"onUpdate:modelValue":i[0]||=e=>m(W)?W.value=e:null,size:`small`,"active-text":f(u)(`extensionsModule.labels.live`)},null,8,[`modelValue`,`active-text`])]),S(`div`,nt,[F(f(he),{modelValue:f(I),"onUpdate:modelValue":i[1]||=e=>m(I)?I.value=e:null,size:`small`,class:`w-[200px]!`,clearable:``,multiple:``,"collapse-tags":``,"collapse-tags-tooltip":``,placeholder:f(u)(`extensionsModule.texts.logs.allLevels`)},{default:l(()=>[(n(),P(T,null,r(se,e=>F(f(ge),{key:e,label:f(u)(`systemModule.levels.${e}`),value:e},null,8,[`label`,`value`])),64))]),_:1},8,[`modelValue`,`placeholder`]),F(f(he),{modelValue:f(L),"onUpdate:modelValue":i[2]||=e=>m(L)?L.value=e:null,size:`small`,class:`w-[140px]!`},{default:l(()=>[(n(!0),P(T,null,r(ce.value,e=>(n(),b(f(ge),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),f(z)?(n(),b(f(x),{key:0,size:`small`,onClick:f(V)},{icon:l(()=>[F(f(O),{icon:`mdi:filter-off`})]),default:l(()=>[h(` `+C(f(u)(`extensionsModule.buttons.resetFilters.title`)),1)]),_:1},8,[`onClick`])):p(``,!0)])]),!f(A)&&f(y)?(n(),P(`div`,rt,[F(f(E),null,{icon:l(()=>[F(f(M),{size:80},{primary:l(()=>[F(f(O),{icon:`mdi:console`})]),secondary:l(()=>[F(f(O),{icon:`mdi:database-refresh`})]),_:1})]),_:1})])):f(z)&&f(g).length===0?(n(),P(`div`,it,[F(f(E),null,{icon:l(()=>[F(f(M),{size:80},{primary:l(()=>[F(f(O),{icon:`mdi:console`})]),secondary:l(()=>[F(f(O),{icon:`mdi:filter-multiple`})]),_:1})]),title:l(()=>[h(C(f(u)(`extensionsModule.texts.logs.noFilteredLogs`)),1)]),"sub-title":l(()=>[F(f(x),{type:`primary`,plain:``,class:`mt-2`,onClick:f(V)},{icon:l(()=>[F(f(O),{icon:`mdi:filter-off`})]),default:l(()=>[h(` `+C(f(u)(`extensionsModule.buttons.resetFilters.title`)),1)]),_:1},8,[`onClick`])]),_:1})])):f(g).length===0?(n(),P(`div`,at,[F(f(E),null,{icon:l(()=>[F(f(M),{size:80},{primary:l(()=>[F(f(O),{icon:`mdi:console`})]),secondary:l(()=>[F(f(O),{icon:`mdi:information`})]),_:1})]),title:l(()=>[h(C(f(u)(`extensionsModule.texts.logs.noLogs`)),1)]),"sub-title":l(()=>[h(C(f(u)(`extensionsModule.texts.logs.noLogsDescription`)),1)]),_:1})])):e((n(),b(f(B),{key:3,class:`flex-1`},{default:l(()=>[S(`div`,null,[(n(!0),P(T,null,r(f(g),e=>(n(),P(`div`,{key:e.id,class:`px-3 py-2 border-b hover:bg-[var(--el-fill-color-light)] cursor-pointer`,onClick:t=>G.value=e},[S(`div`,st,[S(`span`,ct,[F(f(R),{content:pe(e.ts),placement:`top-start`},{default:l(()=>[h(C(fe(e.ts)),1)]),_:2},1032,[`content`])]),F(f(q),w({ref_for:!0},me(e.type),{size:`small`,class:`justify-self-start`}),{default:l(()=>[h(C(e.type),1)]),_:2},1040),S(`div`,lt,C(e.message??f(u)(`extensionsModule.texts.logs.noMessage`)),1)])],8,ot))),128)),S(`div`,ut,[f(v)?p(``,!0):(n(),P(`span`,dt,C(f(u)(`extensionsModule.texts.logs.noMoreEntries`)),1)),f(v)?(n(),b(f(x),{key:1,loading:f(y),onClick:J},{icon:l(()=>[F(f(O),{icon:`mdi:chevron-down`})]),default:l(()=>[h(` `+C(f(u)(`extensionsModule.buttons.loadMore`)),1)]),_:1},8,[`loading`])):p(``,!0)])])]),_:1})),[[f(ue),f(y)&&f(g).length>0]]),F(f(Se),{modelValue:K.value,"onUpdate:modelValue":i[4]||=e=>K.value=e,"show-close":!1,"with-header":!1,direction:`rtl`,size:`40%`},{default:l(()=>[S(`div`,ft,[F(f(le),{"menu-button-hidden":``},{"button-right":l(()=>[F(f(_e),{align:f(ee).RIGHT,class:`mr-2`,onClick:i[3]||=e=>G.value=null},{icon:l(()=>[F(f(s),null,{default:l(()=>[F(f(O),{icon:`mdi:close`})]),_:1})]),_:1},8,[`align`])]),_:1}),F(f(oe),{teleport:``},{icon:l(()=>[F(f(O),{icon:`mdi:note-text-outline`,class:`w[20px] h[20px]`})]),title:l(()=>[h(C(f(u)(`systemModule.headings.systemLogs.detail`)),1)]),subtitle:l(()=>[h(C(f(u)(`systemModule.subHeadings.systemLogs.detail`)),1)]),_:1}),S(`div`,pt,[G.value?(n(),b(f(B),{key:0,class:`grow-1 p-2 md:px-4`},{default:l(()=>[F(f(ie),{"system-log":G.value},null,8,[`system-log`])]),_:1})):p(``,!0)])])]),_:1},8,[`modelValue`])]))}}),ht={key:2,class:`grid grid-cols-[repeat(auto-fill,minmax(350px,1fr))] max-sm:grid-cols-1 gap-3`},gt=u({name:`ExtensionsCards`,__name:`extensions-cards`,props:{items:{},loading:{type:Boolean,default:!1},filtersActive:{type:Boolean,default:!1}},emits:[`toggle-enabled`,`detail`,`reset-filters`],setup(e,{emit:t}){let i=e,a=t,{t:o}=_(),s=D(()=>[...i.items].sort((e,t)=>e.isCore&&!t.isCore?-1:!e.isCore&&t.isCore?1:e.name.localeCompare(t.name))),c=D(()=>i.filtersActive?o(`extensionsModule.messages.noMatchingExtensions`):o(`extensionsModule.messages.noExtensions`)),u=(e,t)=>{a(`toggle-enabled`,e,t)},d=e=>{a(`detail`,e)};return(t,i)=>(n(),b(f(B),{class:`h-full`},{default:l(()=>[e.loading&&e.items.length===0?(n(),b(f(ye),{key:0,rows:5,animated:``})):e.items.length===0?(n(),b(f(E),{key:1,icon:`info`,title:c.value},null,8,[`title`])):(n(),P(`div`,ht,[(n(!0),P(T,null,r(s.value,e=>(n(),b(Qe,{key:e.type,extension:e,onToggleEnabled:u,onDetail:d},null,8,[`extension`]))),128))]))]),_:1}))}}),_t={class:`flex w-full items-center justify-center`},vt=v(u({name:`ExtensionsFilter`,__name:`extensions-filter`,props:{filters:{},filtersActive:{type:Boolean},viewMode:{default:`table`},selectedCount:{},bulkActions:{}},emits:[`update:filters`,`update:view-mode`,`reset-filters`,`adjust-list`,`bulk-action`],setup(e,{emit:t}){let r=e,i=t,a=A(`extensions-filter`),{t:o}=_(),u=H(r,`filters`,i),m=H(r,`viewMode`,i),h=N(void 0);return d(()=>u.value.search,e=>{e===``&&(u.value.search=void 0)}),(e,t)=>(n(),P(`div`,_t,[F(f(V),{ref_key:`filterFormEl`,ref:h,inline:!0,model:f(u),class:c([[f(a).b()],`grow-1`])},{default:l(()=>[F(f(z),{modelValue:f(u).search,"onUpdate:modelValue":t[0]||=e=>f(u).search=e,placeholder:f(o)(`extensionsModule.fields.search.placeholder`),class:`max-w[280px] p-1`,clearable:``},{suffix:l(()=>[F(f(s),null,{default:l(()=>[F(f(O),{icon:`mdi:magnify`})]),_:1})]),_:1},8,[`modelValue`,`placeholder`]),F(f(me),{direction:`vertical`}),F(f(ne),{label:f(o)(`extensionsModule.filters.kind.title`),class:c([[f(a).e(`extension-kind`)],`p-1 m-0!`])},{default:l(()=>[F(f(xe),{modelValue:f(u).kind,"onUpdate:modelValue":t[1]||=e=>f(u).kind=e},{default:l(()=>[F(f(Q),{label:f(o)(`extensionsModule.labels.module`),value:`module`},null,8,[`label`]),F(f(Q),{label:f(o)(`extensionsModule.labels.plugin`),value:`plugin`},null,8,[`label`]),F(f(Q),{label:f(o)(`extensionsModule.states.all`),value:`all`},null,8,[`label`])]),_:1},8,[`modelValue`])]),_:1},8,[`label`,`class`])]),_:1},8,[`model`,`class`]),F(f(te),{"selected-count":r.selectedCount,actions:r.bulkActions,onAction:t[2]||=e=>i(`bulk-action`,e)},null,8,[`selected-count`,`actions`]),F(f(y),{class:`mr-3`},{default:l(()=>[F(f(x),{type:f(m)===`table`?`primary`:void 0,plain:``,class:`px-2!`,onClick:t[3]||=e=>m.value=`table`},{default:l(()=>[F(f(O),{icon:`mdi:table`})]),_:1},8,[`type`]),F(f(x),{type:f(m)===`cards`?`primary`:void 0,plain:``,class:`px-2!`,onClick:t[4]||=e=>m.value=`cards`},{default:l(()=>[F(f(O),{icon:`mdi:view-grid`})]),_:1},8,[`type`])]),_:1}),r.filtersActive?(n(),b(f(x),{key:0,plain:``,class:`px-2! p-1`,onClick:t[5]||=e=>i(`reset-filters`)},{default:l(()=>[F(f(O),{icon:`mdi:filter-off`})]),_:1})):p(``,!0),F(f(x),{plain:``,class:`px-2! p-1`,onClick:t[6]||=e=>i(`adjust-list`)},{default:l(()=>[F(f(O),{icon:`mdi:slider`})]),_:1})]))}}),[[`__scopeId`,`data-v-7de8e0d9`]]),yt={key:0,class:`h-full w-full leading-normal`},bt={key:1,class:`h-full w-full leading-normal`},xt={key:2,class:`h-full w-full leading-normal`},St={class:`block`},Ct=u({name:`ExtensionsTable`,__name:`extensions-table`,props:{items:{},totalRows:{},loading:{type:Boolean},filtersActive:{type:Boolean},tableHeight:{},sortBy:{},sortDir:{}},emits:[`detail`,`toggle-enabled`,`reset-filters`,`selected-changes`,`update:sort-by`,`update:sort-dir`],setup(r,{emit:i}){let a=r,o=i,{t:s}=_(),{isMDDevice:c}=G(),u=D(()=>a.totalRows===0),d=D(()=>a.items),m=({prop:e,order:t})=>{o(`update:sort-by`,e),o(`update:sort-dir`,t===`descending`?`desc`:t===`ascending`?`asc`:null)},g=e=>{o(`detail`,e.type)},v=(e,t)=>{o(`toggle-enabled`,e,t)},y=e=>{o(`selected-changes`,e)};return(i,_)=>e((n(),b(f(ve),{"element-loading-text":f(s)(`extensionsModule.texts.loadingExtensions`),data:d.value,"default-sort":a.sortBy!==void 0&&a.sortDir!==null?{prop:a.sortBy,order:a.sortDir===`desc`?`descending`:`ascending`}:void 0,"table-layout":`fixed`,"row-key":`type`,class:`flex-grow`,style:t({maxHeight:r.tableHeight+`px`}),"max-height":r.tableHeight,onSortChange:m,onSelectionChange:y,onRowClick:g},{empty:l(()=>[a.loading?(n(),P(`div`,yt,[F(f(E),{class:`h-full w-full`},{icon:l(()=>[F(f(M),{size:80},{primary:l(()=>[F(f(O),{icon:`mdi:puzzle`})]),secondary:l(()=>[F(f(O),{icon:`mdi:database-refresh`})]),_:1})]),_:1})])):u.value&&!a.loading?(n(),P(`div`,bt,[F(f(E),{class:`h-full w-full`},{icon:l(()=>[F(f(M),{size:80},{primary:l(()=>[F(f(O),{icon:`mdi:puzzle`})]),secondary:l(()=>[F(f(O),{icon:`mdi:information`})]),_:1})]),title:l(()=>[h(C(f(s)(`extensionsModule.texts.noExtensions`)),1)]),_:1})])):a.filtersActive&&!a.loading?(n(),P(`div`,xt,[F(f(E),{class:`h-full w-full`},{icon:l(()=>[F(f(M),{size:80},{primary:l(()=>[F(f(O),{icon:`mdi:puzzle`})]),secondary:l(()=>[F(f(O),{icon:`mdi:filter-multiple`})]),_:1})]),title:l(()=>[F(f(U),{class:`block`},{default:l(()=>[h(C(f(s)(`extensionsModule.texts.noFilteredExtensions`)),1)]),_:1}),F(f(x),{type:`primary`,plain:``,class:`mt-4`,onClick:_[0]||=e=>o(`reset-filters`)},{icon:l(()=>[F(f(O),{icon:`mdi:filter-off`})]),default:l(()=>[h(` `+C(f(s)(`extensionsModule.buttons.resetFilters.title`)),1)]),_:1})]),_:1})])):p(``,!0)]),default:l(()=>[f(c)?(n(),b(f(Z),{key:0,type:`selection`,width:30})):p(``,!0),F(f(Z),{width:60,align:`center`},{default:l(e=>[F(f(se),{size:32},{default:l(()=>[F(f(O),{icon:e.row.kind===f($).MODULE?`mdi:package-variant`:`mdi:toy-brick`,class:`w[20px] h[20px]`},null,8,[`icon`])]),_:2},1024)]),_:1}),F(f(Z),{label:f(s)(`extensionsModule.table.columns.name.title`),prop:`name`,sortable:`custom`,"sort-orders":[`ascending`,`descending`],"min-width":200,"class-name":`py-0!`},{default:l(e=>[e.row.description?(n(),P(T,{key:0},[S(`strong`,St,C(e.row.name),1),F(f(U),{size:`small`,class:`block leading-4`,truncated:``},{default:l(()=>[h(C(e.row.description),1)]),_:2},1024)],64)):(n(),P(T,{key:1},[h(C(e.row.name),1)],64))]),_:1},8,[`label`]),F(f(Z),{label:f(s)(`extensionsModule.table.columns.type.title`),prop:`type`,sortable:`custom`,"sort-orders":[`ascending`,`descending`],width:200},{default:l(e=>[F(f(R),{content:e.row.type,placement:`top`,"show-after":500},{default:l(()=>[F(f(U),{size:`small`,type:`info`,class:`block max-w-[180px]`,truncated:``},{default:l(()=>[h(C(e.row.type),1)]),_:2},1024)]),_:2},1032,[`content`])]),_:1},8,[`label`]),F(f(Z),{label:f(s)(`extensionsModule.table.columns.kind.title`),prop:`kind`,sortable:`custom`,"sort-orders":[`ascending`,`descending`],width:120},{default:l(e=>[F(f(q),{type:e.row.kind===f($).MODULE?`primary`:`success`,size:`small`},{default:l(()=>[h(C(e.row.kind===f($).MODULE?f(s)(`extensionsModule.labels.module`):f(s)(`extensionsModule.labels.plugin`)),1)]),_:2},1032,[`type`])]),_:1},8,[`label`]),F(f(Z),{label:f(s)(`extensionsModule.table.columns.version.title`),prop:`version`,width:100},{default:l(e=>[e.row.version?(n(),b(f(U),{key:0,size:`small`},{default:l(()=>[h(C(e.row.version),1)]),_:2},1024)):(n(),b(f(U),{key:1,size:`small`,type:`info`},{default:l(()=>[..._[3]||=[h(` - `,-1)]]),_:1}))]),_:1},8,[`label`]),F(f(Z),{label:f(s)(`extensionsModule.table.columns.core.title`),prop:`isCore`,width:100},{default:l(e=>[e.row.isCore?(n(),b(f(q),{key:0,type:`warning`,size:`small`},{default:l(()=>[h(C(f(s)(`extensionsModule.labels.core`)),1)]),_:1})):(n(),b(f(q),{key:1,type:`info`,size:`small`},{default:l(()=>[h(C(f(s)(`extensionsModule.labels.addon`)),1)]),_:1}))]),_:1},8,[`label`]),F(f(Z),{label:f(s)(`extensionsModule.table.columns.enabled.title`),prop:`enabled`,sortable:`custom`,"sort-orders":[`ascending`,`descending`],width:120},{default:l(e=>[F(f(re),{"model-value":e.row.enabled,disabled:!e.row.canToggleEnabled,size:`small`,onClick:_[1]||=j(()=>{},[`stop`]),onChange:t=>v(e.row.type,t)},null,8,[`model-value`,`disabled`,`onChange`])]),_:1},8,[`label`]),F(f(Z),{width:100,align:`right`},{default:l(e=>[S(`div`,{onClick:_[2]||=j(()=>{},[`stop`])},[F(f(x),{size:`small`,plain:``,"data-test-id":`detail-extension`,onClick:t=>o(`detail`,e.row.type)},{icon:l(()=>[F(f(O),{icon:`mdi:file-search-outline`})]),default:l(()=>[h(` `+C(f(s)(`extensionsModule.buttons.detail.title`)),1)]),_:1},8,[`onClick`])])]),_:1})]),_:1},8,[`element-loading-text`,`data`,`default-sort`,`style`,`max-height`])),[[f(ue),a.loading]])}}),wt=u({name:`ListExtensions`,__name:`list-extensions`,props:{items:{},allItems:{},totalRows:{},loading:{type:Boolean},filtersActive:{type:Boolean},filters:{},viewMode:{},paginateSize:{},paginatePage:{},sortBy:{},sortDir:{}},emits:[`detail`,`toggle-enabled`,`adjust-list`,`reset-filters`,`update:filters`,`update:view-mode`,`update:paginate-size`,`update:paginate-page`,`update:sort-by`,`update:sort-dir`,`bulk-action`],setup(e,{emit:t}){let r=e,a=t,{t:s}=_(),{isMDDevice:c}=G(),u=null,p=N(null),h=N(null),g=H(r,`filters`,a),v=H(r,`viewMode`,a),y=N(r.sortBy),x=N(r.sortDir??null),C=N(r.paginatePage),w=N(r.paginateSize),E=N(250),O=N([]),k=D(()=>[{key:`enable`,label:s(`application.bulkActions.enable`),icon:`mdi:check-circle-outline`,type:`success`},{key:`disable`,label:s(`application.bulkActions.disable`),icon:`mdi:close-circle-outline`,type:`warning`}]),A=e=>{a(`detail`,e)},j=(e,t)=>{a(`toggle-enabled`,e,t)},M=()=>{a(`reset-filters`)},I=e=>{a(`update:paginate-size`,e)},L=e=>{a(`update:paginate-page`,e)},R=e=>{O.value=e},ee=e=>{a(`bulk-action`,e,O.value)},z=()=>{if(!p.value)return;let e=v.value===`table`?h.value?.clientHeight??60:0;E.value=p.value.clientHeight-e};return i(()=>{p.value&&(typeof window<`u`&&`ResizeObserver`in window&&(u=new ResizeObserver(z),u.observe(p.value)),z())}),o(()=>{u&&p.value&&u.unobserve(p.value)}),d(()=>y.value,e=>{a(`update:sort-by`,e)}),d(()=>x.value,e=>{a(`update:sort-dir`,e)}),d(()=>r.paginatePage,e=>{C.value=e}),d(()=>r.paginateSize,e=>{w.value=e}),d(()=>r.sortDir,e=>{x.value=e??null}),d(()=>r.sortBy,e=>{y.value=e}),d(()=>v.value,e=>{e===`cards`&&(O.value=[]),setTimeout(z,50)}),d(()=>c.value,e=>{e||(O.value=[])}),(e,t)=>(n(),P(T,null,[F(f(Y),{shadow:`never`,class:`px-1 py-2 shrink-0`,"body-class":`p-0!`},{default:l(()=>[F(vt,{filters:f(g),"onUpdate:filters":t[0]||=e=>m(g)?g.value=e:null,"view-mode":f(v),"onUpdate:viewMode":t[1]||=e=>m(v)?v.value=e:null,"filters-active":r.filtersActive,"selected-count":O.value.length,"bulk-actions":k.value,onResetFilters:t[2]||=e=>a(`reset-filters`),onAdjustList:t[3]||=e=>a(`adjust-list`),onBulkAction:ee},null,8,[`filters`,`view-mode`,`filters-active`,`selected-count`,`bulk-actions`])]),_:1}),S(`div`,{ref_key:`wrapper`,ref:p,class:`grow-1 overflow-hidden`},[f(v)===`table`?(n(),b(f(Y),{key:0,shadow:`never`,class:`max-h-full flex flex-col overflow-hidden box-border`,"body-class":`p-0! grow-1 max-h-full overflow-hidden flex flex-col`},{default:l(()=>[F(Ct,{"sort-by":y.value,"onUpdate:sortBy":t[4]||=e=>y.value=e,"sort-dir":x.value,"onUpdate:sortDir":t[5]||=e=>x.value=e,items:r.items,"total-rows":r.totalRows,loading:r.loading,"filters-active":r.filtersActive,"table-height":E.value,onDetail:A,onToggleEnabled:j,onResetFilters:M,onSelectedChanges:R},null,8,[`sort-by`,`sort-dir`,`items`,`total-rows`,`loading`,`filters-active`,`table-height`]),S(`div`,{ref_key:`paginator`,ref:h,class:`flex justify-center w-full py-4 shrink-0`},[F(f(we),{"current-page":C.value,"onUpdate:currentPage":t[6]||=e=>C.value=e,"page-size":w.value,"onUpdate:pageSize":t[7]||=e=>w.value=e,layout:f(c)?`total, sizes, prev, pager, next, jumper`:`total, sizes, prev, pager, next`,total:r.allItems.length,onSizeChange:I,onCurrentChange:L},null,8,[`current-page`,`page-size`,`layout`,`total`])],512)]),_:1})):(n(),b(gt,{key:1,items:r.allItems,loading:r.loading,"filters-active":r.filtersActive,onDetail:A,onToggleEnabled:j,onResetFilters:M},null,8,[`items`,`loading`,`filters-active`]))],512)],64))}}),Tt={class:`px-2`},Et={class:`px-2`},Dt={class:`px-2`},Ot={class:`px-5 py-2 text-center`},kt=v(u({name:`ListExtensionsAdjust`,__name:`list-extensions-adjust`,props:{filters:{},filtersActive:{type:Boolean}},emits:[`update:filters`,`reset-filters`],setup(e,{emit:t}){let r=e,i=t,a=A(`list-extensions-adjust`),{t:o}=_(),s=N([`kind`,`enabled`,`isCore`]),u=H(r,`filters`,i);return(e,t)=>(n(),P(T,null,[F(f(oe),{teleport:``},{icon:l(()=>[F(f(O),{icon:`mdi:filter`})]),title:l(()=>[h(C(f(o)(`extensionsModule.headings.adjustFilters`)),1)]),subtitle:l(()=>[h(C(f(o)(`extensionsModule.subHeadings.adjustFilters`)),1)]),_:1}),S(`div`,{class:c([[f(a).b()],`flex flex-col h-full w-full overflow-hidden`])},[F(f(B),{class:`flex-grow`},{default:l(()=>[F(f(fe),{modelValue:s.value,"onUpdate:modelValue":t[3]||=e=>s.value=e},{default:l(()=>[F(f(pe),{name:`kind`,class:c([f(a).e(`filter-item`)])},{title:l(()=>[F(f(U),{class:`!px-2`},{default:l(()=>[h(C(f(o)(`extensionsModule.filters.kind.title`)),1)]),_:1})]),default:l(()=>[S(`div`,Tt,[F(f(xe),{modelValue:f(u).kind,"onUpdate:modelValue":t[0]||=e=>f(u).kind=e},{default:l(()=>[F(f(Q),{label:f(o)(`extensionsModule.states.all`),value:`all`},null,8,[`label`]),F(f(Q),{label:f(o)(`extensionsModule.labels.module`),value:`module`},null,8,[`label`]),F(f(Q),{label:f(o)(`extensionsModule.labels.plugin`),value:`plugin`},null,8,[`label`])]),_:1},8,[`modelValue`])])]),_:1},8,[`class`]),F(f(pe),{name:`enabled`,class:c([f(a).e(`filter-item`)])},{title:l(()=>[F(f(U),{class:`!px-2`},{default:l(()=>[h(C(f(o)(`extensionsModule.filters.enabled.title`)),1)]),_:1})]),default:l(()=>[S(`div`,Et,[F(f(xe),{modelValue:f(u).enabled,"onUpdate:modelValue":t[1]||=e=>f(u).enabled=e},{default:l(()=>[F(f(Q),{label:f(o)(`extensionsModule.states.all`),value:`all`},null,8,[`label`]),F(f(Q),{label:f(o)(`extensionsModule.labels.enabled`),value:`enabled`},null,8,[`label`]),F(f(Q),{label:f(o)(`extensionsModule.labels.disabled`),value:`disabled`},null,8,[`label`])]),_:1},8,[`modelValue`])])]),_:1},8,[`class`]),F(f(pe),{name:`isCore`,class:c([f(a).e(`filter-item`)])},{title:l(()=>[F(f(U),{class:`!px-2`},{default:l(()=>[h(C(f(o)(`extensionsModule.filters.type.title`)),1)]),_:1})]),default:l(()=>[S(`div`,Dt,[F(f(xe),{modelValue:f(u).isCore,"onUpdate:modelValue":t[2]||=e=>f(u).isCore=e},{default:l(()=>[F(f(Q),{label:f(o)(`extensionsModule.states.all`),value:`all`},null,8,[`label`]),F(f(Q),{label:f(o)(`extensionsModule.labels.core`),value:`core`},null,8,[`label`]),F(f(Q),{label:f(o)(`extensionsModule.labels.addon`),value:`addon`},null,8,[`label`])]),_:1},8,[`modelValue`])])]),_:1},8,[`class`])]),_:1},8,[`modelValue`])]),_:1}),S(`div`,Ot,[F(f(x),{disabled:!r.filtersActive,onClick:t[4]||=e=>i(`reset-filters`)},{icon:l(()=>[F(f(O),{icon:`mdi:filter-remove`})]),default:l(()=>[h(` `+C(f(o)(`extensionsModule.buttons.reset.title`)),1)]),_:1},8,[`disabled`])])],2)],64))}}),[[`__scopeId`,`data-v-1f502633`]]),At={class:`flex flex-col gap-3`},jt={class:`flex items-center justify-between gap-4`},Mt={class:`flex items-center gap-3 min-w-0 flex-1`},Nt={class:`flex items-center justify-center w-10 h-10 rounded-lg bg-gray-100 dark:bg-gray-800`},Pt={class:`min-w-0 flex-1`},Ft={class:`flex items-center gap-2 flex-wrap`},It={class:`font-medium text-base truncate`},Lt={class:`flex items-center gap-2 mt-1`},Rt={class:`flex items-center gap-1`},zt={class:`flex items-center gap-2`},Bt={class:`flex items-center gap-6 text-sm text-gray-500 dark:text-gray-400 flex-wrap`},Vt={key:0,class:`flex items-center gap-1`},Ht={key:1,class:`flex items-center gap-1`},Ut={key:2,class:`flex items-center gap-1`},Wt=u({name:`ServiceItem`,__name:`service-item`,props:{service:{},acting:{type:Boolean}},emits:[`start`,`stop`,`restart`],setup(e,{emit:t}){let r=e,i=t,{t:a}=_(),o=D(()=>r.service.state===J.starting||r.service.state===J.stopping),s=D(()=>r.service.state===J.stopped||r.service.state===J.error),u=D(()=>r.service.state===J.started||r.service.state===J.starting),d=D(()=>s.value),m=D(()=>u.value),g=D(()=>r.service.state===J.started),v=D(()=>d.value&&r.service.enabled&&!o.value&&!r.acting),y=D(()=>m.value&&r.service.state!==J.stopping&&!r.acting),w=D(()=>g.value&&r.service.enabled&&!o.value&&!r.acting),T=D(()=>r.service.enabled?o.value?a(`extensionsModule.services.tooltips.transitioning`):a(`extensionsModule.services.tooltips.startService`):a(`extensionsModule.services.tooltips.disabledPlugin`)),E=D(()=>r.service.state===J.stopping?a(`extensionsModule.services.tooltips.transitioning`):a(`extensionsModule.services.tooltips.stopService`)),k=D(()=>r.service.enabled?o.value?a(`extensionsModule.services.tooltips.transitioning`):a(`extensionsModule.services.tooltips.restartService`):a(`extensionsModule.services.tooltips.disabledPlugin`)),A=D(()=>{let e=r.service.state;return a(`extensionsModule.services.states.${e}`)}),j=D(()=>{switch(r.service.state){case J.started:return`success`;case J.stopped:return`info`;case J.starting:case J.stopping:return`warning`;case J.error:return`danger`;default:return`info`}}),M=D(()=>{switch(r.service.state){case J.started:return`mdi:check-circle`;case J.stopped:return`mdi:stop-circle`;case J.starting:case J.stopping:return`mdi:loading`;case J.error:return`mdi:alert-circle`;default:return`mdi:help-circle`}}),N=D(()=>{switch(r.service.state){case J.started:return`text-green-500`;case J.stopped:return`text-gray-400`;case J.starting:case J.stopping:return`text-yellow-500 animate-spin`;case J.error:return`text-red-500`;default:return`text-gray-400`}}),I=D(()=>{if(r.service.uptimeMs===void 0)return`-`;let e=Math.floor(r.service.uptimeMs/1e3),t=Math.floor(e/86400),n=Math.floor(e%86400/3600),i=Math.floor(e%3600/60),a=[];return t>0&&a.push(`${t}d`),n>0&&a.push(`${n}h`),(i>0||a.length===0)&&a.push(`${i}m`),a.join(` `)}),L=D(()=>r.service.lastStartedAt?new Date(r.service.lastStartedAt).toLocaleString():`-`),ee=()=>{i(`start`)},z=()=>{i(`stop`)},B=()=>{i(`restart`)};return(t,r)=>(n(),b(f(Y),{shadow:`never`,class:`service-item`,"body-class":`p-3!`},{default:l(()=>[S(`div`,At,[S(`div`,jt,[S(`div`,Mt,[S(`div`,Nt,[F(f(O),{icon:M.value,class:c([`w-5 h-5`,N.value])},null,8,[`icon`,`class`])]),S(`div`,Pt,[S(`div`,Ft,[S(`span`,It,C(e.service.pluginName),1),F(f(q),{size:`small`,type:`info`},{default:l(()=>[h(C(e.service.serviceId),1)]),_:1})]),S(`div`,Lt,[F(f(q),{type:j.value,size:`small`,effect:`light`},{default:l(()=>[S(`div`,Rt,[o.value?(n(),b(f(O),{key:0,icon:`mdi:loading`,class:`animate-spin w-3 h-3`})):p(``,!0),h(` `+C(A.value),1)])]),_:1},8,[`type`]),e.service.enabled?p(``,!0):(n(),b(f(q),{key:0,type:`warning`,size:`small`,effect:`light`},{default:l(()=>[h(C(f(a)(`extensionsModule.services.texts.pluginDisabled`)),1)]),_:1})),e.service.healthy===void 0?p(``,!0):(n(),b(f(q),{key:1,type:e.service.healthy?`success`:`danger`,size:`small`,effect:`light`},{default:l(()=>[h(C(e.service.healthy?f(a)(`extensionsModule.services.labels.healthy`):f(a)(`extensionsModule.services.labels.unhealthy`)),1)]),_:1},8,[`type`]))])])]),S(`div`,zt,[d.value?(n(),b(f(R),{key:0,content:T.value,placement:`top`},{default:l(()=>[F(f(x),{type:`success`,size:`small`,plain:``,disabled:!v.value,loading:e.acting,onClick:ee},{icon:l(()=>[F(f(O),{icon:`mdi:play`})]),default:l(()=>[h(` `+C(f(a)(`extensionsModule.services.buttons.start`)),1)]),_:1},8,[`disabled`,`loading`])]),_:1},8,[`content`])):p(``,!0),m.value?(n(),b(f(R),{key:1,content:E.value,placement:`top`},{default:l(()=>[F(f(x),{type:`danger`,size:`small`,plain:``,disabled:!y.value,loading:e.acting,onClick:z},{icon:l(()=>[F(f(O),{icon:`mdi:stop`})]),default:l(()=>[h(` `+C(f(a)(`extensionsModule.services.buttons.stop`)),1)]),_:1},8,[`disabled`,`loading`])]),_:1},8,[`content`])):p(``,!0),g.value?(n(),b(f(R),{key:2,content:k.value,placement:`top`},{default:l(()=>[F(f(x),{type:`primary`,size:`small`,plain:``,disabled:!w.value,loading:e.acting,onClick:B},{icon:l(()=>[F(f(O),{icon:`mdi:restart`})]),default:l(()=>[h(` `+C(f(a)(`extensionsModule.services.buttons.restart`)),1)]),_:1},8,[`disabled`,`loading`])]),_:1},8,[`content`])):p(``,!0)])]),S(`div`,Bt,[e.service.state===`started`&&e.service.uptimeMs!==void 0?(n(),P(`div`,Vt,[F(f(O),{icon:`mdi:clock-outline`,class:`w-4 h-4`}),S(`span`,null,C(f(a)(`extensionsModule.services.labels.uptime`))+`: `+C(I.value),1)])):p(``,!0),e.service.startCount>0?(n(),P(`div`,Ht,[F(f(O),{icon:`mdi:counter`,class:`w-4 h-4`}),S(`span`,null,C(f(a)(`extensionsModule.services.labels.startCount`))+`: `+C(e.service.startCount),1)])):p(``,!0),e.service.lastStartedAt?(n(),P(`div`,Ut,[F(f(O),{icon:`mdi:play-circle-outline`,class:`w-4 h-4`}),S(`span`,null,C(f(a)(`extensionsModule.services.labels.lastStarted`))+`: `+C(L.value),1)])):p(``,!0)]),e.service.lastError?(n(),b(f(W),{key:0,type:e.service.state===f(J).error?`error`:`warning`,title:f(a)(`extensionsModule.services.labels.lastError`),description:e.service.lastError,"show-icon":``,closable:!1},null,8,[`type`,`title`,`description`])):p(``,!0)])]),_:1}))}}),Gt={key:2,class:`flex flex-col gap-3`},Kt=u({name:`ServicesList`,__name:`services-list`,props:{services:{},loading:{type:Boolean},isActing:{type:Function}},emits:[`start`,`stop`,`restart`],setup(e,{emit:t}){let i=t,{t:a}=_(),o=(e,t)=>{i(`start`,e,t)},s=(e,t)=>{i(`stop`,e,t)},c=(e,t)=>{i(`restart`,e,t)};return(t,i)=>(n(),b(f(B),{class:`h-full`},{default:l(()=>[e.loading&&e.services.length===0?(n(),b(f(ye),{key:0,rows:5,animated:``})):e.services.length===0?(n(),b(f(E),{key:1,icon:`info`,title:f(a)(`extensionsModule.services.texts.noServices`)},null,8,[`title`])):(n(),P(`div`,Gt,[(n(!0),P(T,null,r(e.services,t=>(n(),b(Wt,{key:`${t.pluginName}:${t.serviceId}`,service:t,acting:e.isActing(t.pluginName,t.serviceId),onStart:e=>o(t.pluginName,t.serviceId),onStop:e=>s(t.pluginName,t.serviceId),onRestart:e=>c(t.pluginName,t.serviceId)},null,8,[`service`,`acting`,`onStart`,`onStop`,`onRestart`]))),128))]))]),_:1}))}});export{Le as a,mt as i,kt as n,wt as r,Kt as t};
1
+ import"./chunk-DECur_0Z.js";import{$r as e,Ai as t,Br as n,Hr as r,Lr as i,Mr as a,Nr as o,O as s,Oi as c,Qr as l,Sr as u,Xr as d,_i as f,_r as p,ai as m,br as h,ci as g,d as _,f as v,g as y,gr as b,h as x,hr as S,ji as C,kr as w,lr as T,m as E,mr as D,p as O,pi as k,pt as A,sr as j,t as M,ui as N,vr as P,xr as F,yr as I}from"./icon-with-child-DmQ_XhQy.js";import{$r as L,Ai as R,Br as ee,Di as z,Ei as B,Fi as V,Fr as H,Gr as U,H as te,Ii as ne,Jr as re,Li as W,Nr as G,On as ie,Pr as ae,Qr as K,Rr as oe,Si as q,Ti as se,Ur as ce,Vr as le,Wr as ue,Zr as de,cr as J,fi as fe,pi as pe,ti as me,vi as Y,xi as he,yi as ge,yr as X,zr as _e}from"./common-1h7wnZKI.js";import{n as Z,t as ve}from"./table-F4z-5gbH.js";import{t as ye}from"./skeleton-DMwdgp1r.js";import{t as be}from"./input-number-DvPtEsoF.js";import{n as Q,r as xe}from"./radio-n1KvuN2C.js";import{t as Se}from"./drawer-9BrwP53p.js";import{t as Ce}from"./empty-C13Ke09q.js";import{t as we}from"./pagination-CZ4jiyxa.js";import{r as $}from"./extensions.constants-zRRiNzmt.js";import{r as Te,s as Ee}from"./composables-DLNfKORz2.js";var De={class:`p-4`},Oe={class:`text-sm font-semibold uppercase tracking-wide mb-2 text-gray-500`},ke={class:`grid grid-cols-1 gap-3`},Ae={class:`flex items-start gap-3`},je={key:0,class:`shrink-0 mt-1`},Me={class:`flex-1 min-w-0`},Ne={class:`flex items-center gap-2 mb-1`},Pe={class:`font-medium`},Fe={key:0,class:`text-sm text-gray-500 m-0 mb-3`},Ie={class:`shrink-0`},Le=u({name:`ExtensionActions`,__name:`extension-actions`,props:{extensionType:{}},setup(e){let t=e,{t:i}=_(),{actions:a,isLoading:o,executingActions:s,executeAction:c}=Ee(),u=g({}),m=g({}),v=e=>(u[e]||(u[e]={}),u[e]),y=(e,t)=>v(e)[t],w=(e,t,n)=>{v(e)[t]=n},E=(e,t)=>v(e)[t],k=(e,t,n)=>{v(e)[t]=n},A=(e,t)=>{let n=v(e)[t];return typeof n==`boolean`?n:!1},j=(e,t,n)=>{v(e)[t]=n},M=(e,t)=>{let n=v(e)[t];return Array.isArray(n)?void 0:n},N=(e,t,n)=>{v(e)[t]=n},L=(e,t)=>{let n=v(e)[t];return Array.isArray(n)?n:[]},ee=(e,t,n)=>{v(e)[t]=n},B=()=>{let e=new Set(a.value.map(e=>e.id));for(let t of Object.keys(u))e.has(t)||delete u[t];for(let t of Object.keys(m))e.has(t)||delete m[t];for(let e of a.value){u[e.id]={};for(let t of e.parameters??[])t.default!==void 0&&(u[e.id][t.name]=t.default)}},H=D(()=>{let e={};for(let t of a.value){let n=t.category??`general`;e[n]||(e[n]=[]),e[n].push(t)}return Object.entries(e).map(([e,t])=>({name:e,actions:t}))}),te=async e=>{if(e.dangerous)try{await ce.confirm(i(`extensionsModule.actions.messages.confirmDangerous`),e.label,{confirmButtonText:i(`extensionsModule.actions.buttons.confirm`),cancelButtonText:i(`extensionsModule.actions.buttons.cancel`),type:`warning`})}catch{return}delete m[e.id];let n=u[e.id]??{},r=await c(t.extensionType,e.id,n);m[e.id]=r};return d(a,()=>{B()},{immediate:!0}),(e,t)=>(n(),P(`div`,De,[f(o)?(n(),b(f(ye),{key:0,rows:4,animated:``})):f(a).length===0?(n(),b(f(Ce),{key:1,description:f(i)(`extensionsModule.actions.messages.noActions`)},null,8,[`description`])):(n(!0),P(T,{key:2},r(H.value,e=>(n(),P(`div`,{key:e.name,class:`mb-4`},[S(`h4`,Oe,C(f(i)(`extensionsModule.actions.labels.category.${e.name}`)),1),S(`div`,ke,[(n(!0),P(T,null,r(e.actions,e=>(n(),b(f(Y),{key:e.id,shadow:`hover`,"body-class":`p-4!`},{default:l(()=>[S(`div`,Ae,[e.icon?(n(),P(`div`,je,[F(f(O),{icon:e.icon,class:`w-6 h-6 text-gray-500`},null,8,[`icon`])])):p(``,!0),S(`div`,Me,[S(`div`,Ne,[S(`span`,Pe,C(e.label),1),e.mode===`interactive`?(n(),b(f(q),{key:0,size:`small`,type:`info`},{default:l(()=>[h(C(f(i)(`extensionsModule.actions.labels.comingSoon`)),1)]),_:1})):p(``,!0),e.dangerous?(n(),b(f(q),{key:1,size:`small`,type:`danger`},{default:l(()=>[h(C(f(i)(`extensionsModule.actions.labels.dangerous`)),1)]),_:1})):p(``,!0)]),e.description?(n(),P(`p`,Fe,C(e.description),1)):p(``,!0),e.mode===`immediate`&&e.parameters?.length?(n(),b(f(V),{key:1,model:v(e.id),"label-position":`top`,class:`mb-3`,size:`small`},{default:l(()=>[(n(!0),P(T,null,r(e.parameters,i=>(n(),b(f(ne),{key:i.name,label:i.label,class:`mb-2!`},I({default:l(()=>[i.type===`string`?(n(),b(f(z),{key:0,"model-value":y(e.id,i.name),placeholder:i.label,"onUpdate:modelValue":t=>w(e.id,i.name,t)},null,8,[`model-value`,`placeholder`,`onUpdate:modelValue`])):i.type===`number`?(n(),b(f(be),{key:1,"model-value":E(e.id,i.name),min:i.validation?.min,max:i.validation?.max,"controls-position":`right`,class:`w-full!`,"onUpdate:modelValue":t=>k(e.id,i.name,t)},null,8,[`model-value`,`min`,`max`,`onUpdate:modelValue`])):i.type===`boolean`?(n(),b(f(re),{key:2,"model-value":A(e.id,i.name),"onUpdate:modelValue":t=>j(e.id,i.name,!!t)},null,8,[`model-value`,`onUpdate:modelValue`])):i.type===`select`?(n(),b(f(he),{key:3,"model-value":M(e.id,i.name),placeholder:i.label,class:`w-full!`,"onUpdate:modelValue":t=>N(e.id,i.name,t)},{default:l(()=>[(n(!0),P(T,null,r(i.options,e=>(n(),b(f(ge),{key:String(e.value),label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:2},1032,[`model-value`,`placeholder`,`onUpdate:modelValue`])):i.type===`multi_select`?(n(),b(f(he),{key:4,"model-value":L(e.id,i.name),placeholder:i.label,multiple:``,class:`w-full!`,"onUpdate:modelValue":t=>ee(e.id,i.name,t)},{default:l(()=>[(n(!0),P(T,null,r(i.options,e=>(n(),b(f(ge),{key:String(e.value),label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:2},1032,[`model-value`,`placeholder`,`onUpdate:modelValue`])):p(``,!0)]),_:2},[i.description||i.required?{name:`label`,fn:l(()=>[S(`span`,null,C(i.label),1),i.required?(n(),b(f(U),{key:0,type:`danger`,class:`ml-1`},{default:l(()=>[...t[0]||=[h(` * `,-1)]]),_:1})):p(``,!0),i.description?(n(),b(f(U),{key:1,class:`block text-xs! font-normal`,type:`info`},{default:l(()=>[h(C(i.description),1)]),_:2},1024)):p(``,!0)]),key:`0`}:void 0]),1032,[`label`]))),128))]),_:2},1032,[`model`])):p(``,!0),m[e.id]?(n(),b(f(W),{key:2,type:m[e.id].success?`success`:`error`,title:m[e.id].message||(m[e.id].success?f(i)(`extensionsModule.actions.messages.success`):f(i)(`extensionsModule.actions.messages.error`)),"show-icon":``,closable:``,class:`mb-2`,onClose:t=>delete m[e.id]},null,8,[`type`,`title`,`onClose`])):p(``,!0)]),S(`div`,Ie,[e.mode===`immediate`?(n(),b(f(x),{key:0,type:`primary`,loading:f(s).has(e.id),disabled:f(s).has(e.id),onClick:t=>te(e)},{icon:l(()=>[F(f(O),{icon:`mdi:play`})]),default:l(()=>[h(` `+C(f(i)(`extensionsModule.actions.buttons.run`)),1)]),_:1},8,[`loading`,`disabled`,`onClick`])):(n(),b(f(R),{key:1,content:f(i)(`extensionsModule.actions.messages.interactiveNotAvailable`)},{default:l(()=>[F(f(x),{disabled:``},{icon:l(()=>[F(f(O),{icon:`mdi:console`})]),default:l(()=>[h(` `+C(f(i)(`extensionsModule.actions.buttons.run`)),1)]),_:1})]),_:1},8,[`content`]))])])]),_:2},1024))),128))])]))),128))]))}}),Re={class:`extension-card__header`},ze={class:`extension-card__header-content`},Be={class:`extension-card__title`},Ve={class:`extension-card__tags`},He={class:`extension-card__content`},Ue={key:0,class:`extension-card__description`},We={key:1,class:`extension-card__description extension-card__description--empty`},Ge={class:`extension-card__meta`},Ke={key:0,class:`extension-card__meta-item`},qe={key:1,class:`extension-card__author`},Je={class:`extension-card__footer`},Ye={class:`extension-card__links`},Xe={class:`flex items-center w-full`},Ze={class:`flex items-center w-full`},Qe=v(u({name:`ExtensionCard`,__name:`extension-card`,props:{extension:{}},emits:[`toggle-enabled`,`detail`],setup(e,{emit:t}){let r=e,i=t,{t:a}=_(),o=D(()=>r.extension.kind===$.MODULE?`mdi:package-variant`:`mdi:toy-brick`),s=D(()=>r.extension.isCore&&r.extension.kind===$.MODULE?a(`extensionsModule.tooltips.coreModuleCannotBeDisabled`):a(`extensionsModule.tooltips.cannotToggleEnabled`)),u=D(()=>r.extension.isCore?a(`extensionsModule.tooltips.coreCannotBeRemoved`):a(`extensionsModule.tooltips.removeNotSupported`)),d=()=>{i(`detail`,r.extension.type)},m=e=>{switch(e){case`enable`:i(`toggle-enabled`,r.extension.type,!0);break;case`disable`:i(`toggle-enabled`,r.extension.type,!1);break;case`delete`:break}},g=e=>{window.open(e,`_blank`,`noopener,noreferrer`)};return(t,r)=>(n(),b(f(Y),{class:c([`extension-card`,{"extension-card--disabled":!e.extension.enabled}]),shadow:`hover`,"header-class":`py-2!`,"body-class":`py-3!`,"footer-class":`py-2! px-4!`},{header:l(()=>[S(`div`,Re,[F(f(O),{icon:o.value,class:`extension-card__icon`},null,8,[`icon`]),S(`div`,ze,[S(`h3`,Be,C(e.extension.name),1),S(`div`,Ve,[F(f(q),{type:e.extension.kind===f($).MODULE?`primary`:`success`,size:`small`},{default:l(()=>[h(C(e.extension.kind===f($).MODULE?f(a)(`extensionsModule.labels.module`):f(a)(`extensionsModule.labels.plugin`)),1)]),_:1},8,[`type`]),e.extension.isCore?(n(),b(f(q),{key:0,type:`warning`,size:`small`},{default:l(()=>[h(C(f(a)(`extensionsModule.labels.core`)),1)]),_:1})):p(``,!0),F(f(q),{type:e.extension.enabled?`success`:`info`,size:`small`},{default:l(()=>[h(C(e.extension.enabled?f(a)(`extensionsModule.labels.enabled`):f(a)(`extensionsModule.labels.disabled`)),1)]),_:1},8,[`type`])])])])]),footer:l(()=>[S(`div`,Je,[S(`div`,Ye,[e.extension.links?.documentation?(n(),b(f(x),{key:0,type:`primary`,size:`small`,link:``,onClick:r[0]||=j(t=>g(e.extension.links.documentation),[`stop`])},{default:l(()=>[F(f(O),{icon:`mdi:book-open-page-variant`,class:`mr-1`}),h(` `+C(f(a)(`extensionsModule.buttons.documentation`)),1)]),_:1})):p(``,!0),e.extension.links?.repository?(n(),b(f(x),{key:1,type:`primary`,size:`small`,link:``,onClick:r[1]||=j(t=>g(e.extension.links.repository),[`stop`])},{default:l(()=>[F(f(O),{icon:`mdi:github`,class:`mr-1`}),h(` `+C(f(a)(`extensionsModule.buttons.repository`)),1)]),_:1})):p(``,!0),e.extension.links?.bugsTracking?(n(),b(f(x),{key:2,type:`primary`,size:`small`,link:``,onClick:r[2]||=j(t=>g(e.extension.links.bugsTracking),[`stop`])},{default:l(()=>[F(f(O),{icon:`mdi:bug`,class:`mr-1`}),h(` `+C(f(a)(`extensionsModule.buttons.issues`)),1)]),_:1})):p(``,!0)]),F(f(de),{"split-button":``,size:`small`,trigger:`click`,onClick:d,onCommand:m},{dropdown:l(()=>[F(f(L),null,{default:l(()=>[F(f(K),{command:e.extension.enabled?`disable`:`enable`,disabled:!e.extension.canToggleEnabled},{default:l(()=>[F(f(R),{content:s.value,disabled:e.extension.canToggleEnabled,placement:`left`},{default:l(()=>[S(`span`,Xe,[F(f(O),{icon:e.extension.enabled?`mdi:toggle-switch-off`:`mdi:toggle-switch`,class:`mr-2`},null,8,[`icon`]),h(` `+C(e.extension.enabled?f(a)(`extensionsModule.buttons.disable`):f(a)(`extensionsModule.buttons.enable`)),1)])]),_:1},8,[`content`,`disabled`])]),_:1},8,[`command`,`disabled`]),F(f(K),{command:`delete`,disabled:``,divided:``},{default:l(()=>[F(f(R),{content:u.value,placement:`left`},{default:l(()=>[S(`span`,Ze,[F(f(O),{icon:`mdi:delete`,class:`mr-2`}),h(` `+C(f(a)(`extensionsModule.buttons.remove`)),1)])]),_:1},8,[`content`])]),_:1})]),_:1})]),default:l(()=>[h(C(f(a)(`extensionsModule.buttons.detail.title`))+` `,1)]),_:1})])]),default:l(()=>[S(`div`,He,[e.extension.description?(n(),P(`p`,Ue,C(e.extension.description),1)):(n(),P(`p`,We,C(f(a)(`extensionsModule.messages.noDescription`)),1)),S(`div`,Ge,[e.extension.version?(n(),P(`div`,Ke,[F(f(O),{icon:`mdi:tag`,class:`extension-card__meta-icon`}),S(`span`,null,C(e.extension.version),1)])):p(``,!0),e.extension.author?(n(),P(`div`,qe,[F(f(O),{icon:`mdi:account`,class:`extension-card__author-icon`}),S(`span`,null,C(e.extension.author),1)])):p(``,!0)])])]),_:1},8,[`class`]))}}),[[`__scopeId`,`data-v-f13b0a97`]]),$e={class:`h-full w-full flex flex-col`},et={class:`flex items-center justify-between p-2 border-b`},tt={class:`flex items-center gap-2`},nt={class:`flex items-center gap-2`},rt={key:0,class:`flex-1 flex items-center justify-center`},it={key:1,class:`flex-1 flex items-center justify-center`},at={key:2,class:`flex-1 flex items-center justify-center`},ot=[`onClick`],st={class:`grid grid-cols-[140px_70px_1fr] gap-3 items-center`},ct={class:`font-mono text-xs`},lt={class:`truncate text-sm`},ut={class:`py-3 text-center`},dt={key:0,class:`text-xs text-gray-400`},ft={class:`flex flex-col h-full`},pt={class:`flex flex-col overflow-hidden h-full`},mt=u({name:`ExtensionLogs`,__name:`extension-logs`,props:{extensionType:{},live:{type:Boolean}},emits:[`update:live`],setup(t,{emit:i}){let o=t,c=i,{t:u}=_(),{logs:g,hasMore:v,isLoading:y,loaded:A,live:j,filterLevels:I,filterTimeRange:L,filtersActive:z,clearFilters:V,fetchLogs:U,loadMoreLogs:te,refreshLogs:ne}=Te({extensionType:k(()=>o.extensionType)}),W=H(o,`live`,c,{defaultValue:!1}),G=N(null),K=D({get:()=>G.value!==null,set:e=>{e||(G.value=null)}}),se=[X.error,X.warn,X.info,X.debug,X.fatal,X.log,X.success,X.fail],ce=D(()=>[{value:`all`,label:u(`extensionsModule.texts.logs.timeRange.all`)},{value:`1h`,label:u(`extensionsModule.texts.logs.timeRange.1h`)},{value:`6h`,label:u(`extensionsModule.texts.logs.timeRange.6h`)},{value:`24h`,label:u(`extensionsModule.texts.logs.timeRange.24h`)},{value:`7d`,label:u(`extensionsModule.texts.logs.timeRange.7d`)}]);d(W,e=>{j.value=e},{immediate:!0}),d(j,e=>{W.value=e});let de=()=>{ne()},J=()=>{te()},fe=e=>ae(new Date(e)),pe=e=>new Date(e).toISOString(),me=e=>{let t=e.toLowerCase();return[`fatal`,`error`,`fail`].includes(t)?{type:`danger`,effect:`light`}:[`warn`,`box`].includes(t)?{type:`warning`,effect:`light`}:[`success`,`ready`,`start`,`info`,`log`].includes(t)?{type:`success`,effect:`light`}:{effect:`plain`,class:`tag-neutral`}};return a(()=>{U()}),(t,i)=>(n(),P(`div`,$e,[S(`div`,et,[S(`div`,tt,[F(f(x),{size:`small`,onClick:de},{icon:l(()=>[F(f(O),{icon:`mdi:refresh`})]),default:l(()=>[h(` `+C(f(u)(`extensionsModule.buttons.refresh`)),1)]),_:1}),F(f(re),{modelValue:f(W),"onUpdate:modelValue":i[0]||=e=>m(W)?W.value=e:null,size:`small`,"active-text":f(u)(`extensionsModule.labels.live`)},null,8,[`modelValue`,`active-text`])]),S(`div`,nt,[F(f(he),{modelValue:f(I),"onUpdate:modelValue":i[1]||=e=>m(I)?I.value=e:null,size:`small`,class:`w-[200px]!`,clearable:``,multiple:``,"collapse-tags":``,"collapse-tags-tooltip":``,placeholder:f(u)(`extensionsModule.texts.logs.allLevels`)},{default:l(()=>[(n(),P(T,null,r(se,e=>F(f(ge),{key:e,label:f(u)(`systemModule.levels.${e}`),value:e},null,8,[`label`,`value`])),64))]),_:1},8,[`modelValue`,`placeholder`]),F(f(he),{modelValue:f(L),"onUpdate:modelValue":i[2]||=e=>m(L)?L.value=e:null,size:`small`,class:`w-[140px]!`},{default:l(()=>[(n(!0),P(T,null,r(ce.value,e=>(n(),b(f(ge),{key:e.value,label:e.label,value:e.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`]),f(z)?(n(),b(f(x),{key:0,size:`small`,onClick:f(V)},{icon:l(()=>[F(f(O),{icon:`mdi:filter-off`})]),default:l(()=>[h(` `+C(f(u)(`extensionsModule.buttons.resetFilters.title`)),1)]),_:1},8,[`onClick`])):p(``,!0)])]),!f(A)&&f(y)?(n(),P(`div`,rt,[F(f(E),null,{icon:l(()=>[F(f(M),{size:80},{primary:l(()=>[F(f(O),{icon:`mdi:console`})]),secondary:l(()=>[F(f(O),{icon:`mdi:database-refresh`})]),_:1})]),_:1})])):f(z)&&f(g).length===0?(n(),P(`div`,it,[F(f(E),null,{icon:l(()=>[F(f(M),{size:80},{primary:l(()=>[F(f(O),{icon:`mdi:console`})]),secondary:l(()=>[F(f(O),{icon:`mdi:filter-multiple`})]),_:1})]),title:l(()=>[h(C(f(u)(`extensionsModule.texts.logs.noFilteredLogs`)),1)]),"sub-title":l(()=>[F(f(x),{type:`primary`,plain:``,class:`mt-2`,onClick:f(V)},{icon:l(()=>[F(f(O),{icon:`mdi:filter-off`})]),default:l(()=>[h(` `+C(f(u)(`extensionsModule.buttons.resetFilters.title`)),1)]),_:1},8,[`onClick`])]),_:1})])):f(g).length===0?(n(),P(`div`,at,[F(f(E),null,{icon:l(()=>[F(f(M),{size:80},{primary:l(()=>[F(f(O),{icon:`mdi:console`})]),secondary:l(()=>[F(f(O),{icon:`mdi:information`})]),_:1})]),title:l(()=>[h(C(f(u)(`extensionsModule.texts.logs.noLogs`)),1)]),"sub-title":l(()=>[h(C(f(u)(`extensionsModule.texts.logs.noLogsDescription`)),1)]),_:1})])):e((n(),b(f(B),{key:3,class:`flex-1`},{default:l(()=>[S(`div`,null,[(n(!0),P(T,null,r(f(g),e=>(n(),P(`div`,{key:e.id,class:`px-3 py-2 border-b hover:bg-[var(--el-fill-color-light)] cursor-pointer`,onClick:t=>G.value=e},[S(`div`,st,[S(`span`,ct,[F(f(R),{content:pe(e.ts),placement:`top-start`},{default:l(()=>[h(C(fe(e.ts)),1)]),_:2},1032,[`content`])]),F(f(q),w({ref_for:!0},me(e.type),{size:`small`,class:`justify-self-start`}),{default:l(()=>[h(C(e.type),1)]),_:2},1040),S(`div`,lt,C(e.message??f(u)(`extensionsModule.texts.logs.noMessage`)),1)])],8,ot))),128)),S(`div`,ut,[f(v)?p(``,!0):(n(),P(`span`,dt,C(f(u)(`extensionsModule.texts.logs.noMoreEntries`)),1)),f(v)?(n(),b(f(x),{key:1,loading:f(y),onClick:J},{icon:l(()=>[F(f(O),{icon:`mdi:chevron-down`})]),default:l(()=>[h(` `+C(f(u)(`extensionsModule.buttons.loadMore`)),1)]),_:1},8,[`loading`])):p(``,!0)])])]),_:1})),[[f(ue),f(y)&&f(g).length>0]]),F(f(Se),{modelValue:K.value,"onUpdate:modelValue":i[4]||=e=>K.value=e,"show-close":!1,"with-header":!1,direction:`rtl`,size:`40%`},{default:l(()=>[S(`div`,ft,[F(f(le),{"menu-button-hidden":``},{"button-right":l(()=>[F(f(_e),{align:f(ee).RIGHT,class:`mr-2`,onClick:i[3]||=e=>G.value=null},{icon:l(()=>[F(f(s),null,{default:l(()=>[F(f(O),{icon:`mdi:close`})]),_:1})]),_:1},8,[`align`])]),_:1}),F(f(oe),{teleport:``},{icon:l(()=>[F(f(O),{icon:`mdi:note-text-outline`,class:`w[20px] h[20px]`})]),title:l(()=>[h(C(f(u)(`systemModule.headings.systemLogs.detail`)),1)]),subtitle:l(()=>[h(C(f(u)(`systemModule.subHeadings.systemLogs.detail`)),1)]),_:1}),S(`div`,pt,[G.value?(n(),b(f(B),{key:0,class:`grow-1 p-2 md:px-4`},{default:l(()=>[F(f(ie),{"system-log":G.value},null,8,[`system-log`])]),_:1})):p(``,!0)])])]),_:1},8,[`modelValue`])]))}}),ht={key:2,class:`grid grid-cols-[repeat(auto-fill,minmax(350px,1fr))] max-sm:grid-cols-1 gap-3`},gt=u({name:`ExtensionsCards`,__name:`extensions-cards`,props:{items:{},loading:{type:Boolean,default:!1},filtersActive:{type:Boolean,default:!1}},emits:[`toggle-enabled`,`detail`,`reset-filters`],setup(e,{emit:t}){let i=e,a=t,{t:o}=_(),s=D(()=>[...i.items].sort((e,t)=>e.isCore&&!t.isCore?-1:!e.isCore&&t.isCore?1:e.name.localeCompare(t.name))),c=D(()=>i.filtersActive?o(`extensionsModule.messages.noMatchingExtensions`):o(`extensionsModule.messages.noExtensions`)),u=(e,t)=>{a(`toggle-enabled`,e,t)},d=e=>{a(`detail`,e)};return(t,i)=>(n(),b(f(B),{class:`h-full`},{default:l(()=>[e.loading&&e.items.length===0?(n(),b(f(ye),{key:0,rows:5,animated:``})):e.items.length===0?(n(),b(f(E),{key:1,icon:`info`,title:c.value},null,8,[`title`])):(n(),P(`div`,ht,[(n(!0),P(T,null,r(s.value,e=>(n(),b(Qe,{key:e.type,extension:e,onToggleEnabled:u,onDetail:d},null,8,[`extension`]))),128))]))]),_:1}))}}),_t={class:`flex w-full items-center justify-center`},vt=v(u({name:`ExtensionsFilter`,__name:`extensions-filter`,props:{filters:{},filtersActive:{type:Boolean},viewMode:{default:`table`},selectedCount:{},bulkActions:{}},emits:[`update:filters`,`update:view-mode`,`reset-filters`,`adjust-list`,`bulk-action`],setup(e,{emit:t}){let r=e,i=t,a=A(`extensions-filter`),{t:o}=_(),u=H(r,`filters`,i),m=H(r,`viewMode`,i),h=N(void 0);return d(()=>u.value.search,e=>{e===``&&(u.value.search=void 0)}),(e,t)=>(n(),P(`div`,_t,[F(f(V),{ref_key:`filterFormEl`,ref:h,inline:!0,model:f(u),class:c([[f(a).b()],`grow-1`])},{default:l(()=>[F(f(z),{modelValue:f(u).search,"onUpdate:modelValue":t[0]||=e=>f(u).search=e,placeholder:f(o)(`extensionsModule.fields.search.placeholder`),class:`max-w[280px] p-1`,clearable:``},{suffix:l(()=>[F(f(s),null,{default:l(()=>[F(f(O),{icon:`mdi:magnify`})]),_:1})]),_:1},8,[`modelValue`,`placeholder`]),F(f(me),{direction:`vertical`}),F(f(ne),{label:f(o)(`extensionsModule.filters.kind.title`),class:c([[f(a).e(`extension-kind`)],`p-1 m-0!`])},{default:l(()=>[F(f(xe),{modelValue:f(u).kind,"onUpdate:modelValue":t[1]||=e=>f(u).kind=e},{default:l(()=>[F(f(Q),{label:f(o)(`extensionsModule.labels.module`),value:`module`},null,8,[`label`]),F(f(Q),{label:f(o)(`extensionsModule.labels.plugin`),value:`plugin`},null,8,[`label`]),F(f(Q),{label:f(o)(`extensionsModule.states.all`),value:`all`},null,8,[`label`])]),_:1},8,[`modelValue`])]),_:1},8,[`label`,`class`])]),_:1},8,[`model`,`class`]),F(f(te),{"selected-count":r.selectedCount,actions:r.bulkActions,onAction:t[2]||=e=>i(`bulk-action`,e)},null,8,[`selected-count`,`actions`]),F(f(y),{class:`mr-3`},{default:l(()=>[F(f(x),{type:f(m)===`table`?`primary`:void 0,plain:``,class:`px-2!`,onClick:t[3]||=e=>m.value=`table`},{default:l(()=>[F(f(O),{icon:`mdi:table`})]),_:1},8,[`type`]),F(f(x),{type:f(m)===`cards`?`primary`:void 0,plain:``,class:`px-2!`,onClick:t[4]||=e=>m.value=`cards`},{default:l(()=>[F(f(O),{icon:`mdi:view-grid`})]),_:1},8,[`type`])]),_:1}),r.filtersActive?(n(),b(f(x),{key:0,plain:``,class:`px-2! p-1`,onClick:t[5]||=e=>i(`reset-filters`)},{default:l(()=>[F(f(O),{icon:`mdi:filter-off`})]),_:1})):p(``,!0),F(f(x),{plain:``,class:`px-2! p-1`,onClick:t[6]||=e=>i(`adjust-list`)},{default:l(()=>[F(f(O),{icon:`mdi:slider`})]),_:1})]))}}),[[`__scopeId`,`data-v-7de8e0d9`]]),yt={key:0,class:`h-full w-full leading-normal`},bt={key:1,class:`h-full w-full leading-normal`},xt={key:2,class:`h-full w-full leading-normal`},St={class:`block`},Ct=u({name:`ExtensionsTable`,__name:`extensions-table`,props:{items:{},totalRows:{},loading:{type:Boolean},filtersActive:{type:Boolean},tableHeight:{},sortBy:{},sortDir:{}},emits:[`detail`,`toggle-enabled`,`reset-filters`,`selected-changes`,`update:sort-by`,`update:sort-dir`],setup(r,{emit:i}){let a=r,o=i,{t:s}=_(),{isMDDevice:c}=G(),u=D(()=>a.totalRows===0),d=D(()=>a.items),m=({prop:e,order:t})=>{o(`update:sort-by`,e),o(`update:sort-dir`,t===`descending`?`desc`:t===`ascending`?`asc`:null)},g=e=>{o(`detail`,e.type)},v=(e,t)=>{o(`toggle-enabled`,e,t)},y=e=>{o(`selected-changes`,e)};return(i,_)=>e((n(),b(f(ve),{"element-loading-text":f(s)(`extensionsModule.texts.loadingExtensions`),data:d.value,"default-sort":a.sortBy!==void 0&&a.sortDir!==null?{prop:a.sortBy,order:a.sortDir===`desc`?`descending`:`ascending`}:void 0,"table-layout":`fixed`,"row-key":`type`,class:`flex-grow`,style:t({maxHeight:r.tableHeight+`px`}),"max-height":r.tableHeight,onSortChange:m,onSelectionChange:y,onRowClick:g},{empty:l(()=>[a.loading?(n(),P(`div`,yt,[F(f(E),{class:`h-full w-full`},{icon:l(()=>[F(f(M),{size:80},{primary:l(()=>[F(f(O),{icon:`mdi:puzzle`})]),secondary:l(()=>[F(f(O),{icon:`mdi:database-refresh`})]),_:1})]),_:1})])):u.value&&!a.loading?(n(),P(`div`,bt,[F(f(E),{class:`h-full w-full`},{icon:l(()=>[F(f(M),{size:80},{primary:l(()=>[F(f(O),{icon:`mdi:puzzle`})]),secondary:l(()=>[F(f(O),{icon:`mdi:information`})]),_:1})]),title:l(()=>[h(C(f(s)(`extensionsModule.texts.noExtensions`)),1)]),_:1})])):a.filtersActive&&!a.loading?(n(),P(`div`,xt,[F(f(E),{class:`h-full w-full`},{icon:l(()=>[F(f(M),{size:80},{primary:l(()=>[F(f(O),{icon:`mdi:puzzle`})]),secondary:l(()=>[F(f(O),{icon:`mdi:filter-multiple`})]),_:1})]),title:l(()=>[F(f(U),{class:`block`},{default:l(()=>[h(C(f(s)(`extensionsModule.texts.noFilteredExtensions`)),1)]),_:1}),F(f(x),{type:`primary`,plain:``,class:`mt-4`,onClick:_[0]||=e=>o(`reset-filters`)},{icon:l(()=>[F(f(O),{icon:`mdi:filter-off`})]),default:l(()=>[h(` `+C(f(s)(`extensionsModule.buttons.resetFilters.title`)),1)]),_:1})]),_:1})])):p(``,!0)]),default:l(()=>[f(c)?(n(),b(f(Z),{key:0,type:`selection`,width:30})):p(``,!0),F(f(Z),{width:60,align:`center`},{default:l(e=>[F(f(se),{size:32},{default:l(()=>[F(f(O),{icon:e.row.kind===f($).MODULE?`mdi:package-variant`:`mdi:toy-brick`,class:`w[20px] h[20px]`},null,8,[`icon`])]),_:2},1024)]),_:1}),F(f(Z),{label:f(s)(`extensionsModule.table.columns.name.title`),prop:`name`,sortable:`custom`,"sort-orders":[`ascending`,`descending`],"min-width":200,"class-name":`py-0!`},{default:l(e=>[e.row.description?(n(),P(T,{key:0},[S(`strong`,St,C(e.row.name),1),F(f(U),{size:`small`,class:`block leading-4`,truncated:``},{default:l(()=>[h(C(e.row.description),1)]),_:2},1024)],64)):(n(),P(T,{key:1},[h(C(e.row.name),1)],64))]),_:1},8,[`label`]),F(f(Z),{label:f(s)(`extensionsModule.table.columns.type.title`),prop:`type`,sortable:`custom`,"sort-orders":[`ascending`,`descending`],width:200},{default:l(e=>[F(f(R),{content:e.row.type,placement:`top`,"show-after":500},{default:l(()=>[F(f(U),{size:`small`,type:`info`,class:`block max-w-[180px]`,truncated:``},{default:l(()=>[h(C(e.row.type),1)]),_:2},1024)]),_:2},1032,[`content`])]),_:1},8,[`label`]),F(f(Z),{label:f(s)(`extensionsModule.table.columns.kind.title`),prop:`kind`,sortable:`custom`,"sort-orders":[`ascending`,`descending`],width:120},{default:l(e=>[F(f(q),{type:e.row.kind===f($).MODULE?`primary`:`success`,size:`small`},{default:l(()=>[h(C(e.row.kind===f($).MODULE?f(s)(`extensionsModule.labels.module`):f(s)(`extensionsModule.labels.plugin`)),1)]),_:2},1032,[`type`])]),_:1},8,[`label`]),F(f(Z),{label:f(s)(`extensionsModule.table.columns.version.title`),prop:`version`,width:100},{default:l(e=>[e.row.version?(n(),b(f(U),{key:0,size:`small`},{default:l(()=>[h(C(e.row.version),1)]),_:2},1024)):(n(),b(f(U),{key:1,size:`small`,type:`info`},{default:l(()=>[..._[3]||=[h(` - `,-1)]]),_:1}))]),_:1},8,[`label`]),F(f(Z),{label:f(s)(`extensionsModule.table.columns.core.title`),prop:`isCore`,width:100},{default:l(e=>[e.row.isCore?(n(),b(f(q),{key:0,type:`warning`,size:`small`},{default:l(()=>[h(C(f(s)(`extensionsModule.labels.core`)),1)]),_:1})):(n(),b(f(q),{key:1,type:`info`,size:`small`},{default:l(()=>[h(C(f(s)(`extensionsModule.labels.addon`)),1)]),_:1}))]),_:1},8,[`label`]),F(f(Z),{label:f(s)(`extensionsModule.table.columns.enabled.title`),prop:`enabled`,sortable:`custom`,"sort-orders":[`ascending`,`descending`],width:120},{default:l(e=>[F(f(re),{"model-value":e.row.enabled,disabled:!e.row.canToggleEnabled,size:`small`,onClick:_[1]||=j(()=>{},[`stop`]),onChange:t=>v(e.row.type,t)},null,8,[`model-value`,`disabled`,`onChange`])]),_:1},8,[`label`]),F(f(Z),{width:100,align:`right`},{default:l(e=>[S(`div`,{onClick:_[2]||=j(()=>{},[`stop`])},[F(f(x),{size:`small`,plain:``,"data-test-id":`detail-extension`,onClick:t=>o(`detail`,e.row.type)},{icon:l(()=>[F(f(O),{icon:`mdi:file-search-outline`})]),default:l(()=>[h(` `+C(f(s)(`extensionsModule.buttons.detail.title`)),1)]),_:1},8,[`onClick`])])]),_:1})]),_:1},8,[`element-loading-text`,`data`,`default-sort`,`style`,`max-height`])),[[f(ue),a.loading]])}}),wt=u({name:`ListExtensions`,__name:`list-extensions`,props:{items:{},allItems:{},totalRows:{},loading:{type:Boolean},filtersActive:{type:Boolean},filters:{},viewMode:{},paginateSize:{},paginatePage:{},sortBy:{},sortDir:{}},emits:[`detail`,`toggle-enabled`,`adjust-list`,`reset-filters`,`update:filters`,`update:view-mode`,`update:paginate-size`,`update:paginate-page`,`update:sort-by`,`update:sort-dir`,`bulk-action`],setup(e,{emit:t}){let r=e,a=t,{t:s}=_(),{isMDDevice:c}=G(),u=null,p=N(null),h=N(null),g=H(r,`filters`,a),v=H(r,`viewMode`,a),y=N(r.sortBy),x=N(r.sortDir??null),C=N(r.paginatePage),w=N(r.paginateSize),E=N(250),O=N([]),k=D(()=>[{key:`enable`,label:s(`application.bulkActions.enable`),icon:`mdi:check-circle-outline`,type:`success`},{key:`disable`,label:s(`application.bulkActions.disable`),icon:`mdi:close-circle-outline`,type:`warning`}]),A=e=>{a(`detail`,e)},j=(e,t)=>{a(`toggle-enabled`,e,t)},M=()=>{a(`reset-filters`)},I=e=>{a(`update:paginate-size`,e)},L=e=>{a(`update:paginate-page`,e)},R=e=>{O.value=e},ee=e=>{a(`bulk-action`,e,O.value)},z=()=>{if(!p.value)return;let e=v.value===`table`?h.value?.clientHeight??60:0;E.value=p.value.clientHeight-e};return i(()=>{p.value&&(typeof window<`u`&&`ResizeObserver`in window&&(u=new ResizeObserver(z),u.observe(p.value)),z())}),o(()=>{u&&p.value&&u.unobserve(p.value)}),d(()=>y.value,e=>{a(`update:sort-by`,e)}),d(()=>x.value,e=>{a(`update:sort-dir`,e)}),d(()=>r.paginatePage,e=>{C.value=e}),d(()=>r.paginateSize,e=>{w.value=e}),d(()=>r.sortDir,e=>{x.value=e??null}),d(()=>r.sortBy,e=>{y.value=e}),d(()=>v.value,e=>{e===`cards`&&(O.value=[]),setTimeout(z,50)}),d(()=>c.value,e=>{e||(O.value=[])}),(e,t)=>(n(),P(T,null,[F(f(Y),{shadow:`never`,class:`px-1 py-2 shrink-0`,"body-class":`p-0!`},{default:l(()=>[F(vt,{filters:f(g),"onUpdate:filters":t[0]||=e=>m(g)?g.value=e:null,"view-mode":f(v),"onUpdate:viewMode":t[1]||=e=>m(v)?v.value=e:null,"filters-active":r.filtersActive,"selected-count":O.value.length,"bulk-actions":k.value,onResetFilters:t[2]||=e=>a(`reset-filters`),onAdjustList:t[3]||=e=>a(`adjust-list`),onBulkAction:ee},null,8,[`filters`,`view-mode`,`filters-active`,`selected-count`,`bulk-actions`])]),_:1}),S(`div`,{ref_key:`wrapper`,ref:p,class:`grow-1 overflow-hidden`},[f(v)===`table`?(n(),b(f(Y),{key:0,shadow:`never`,class:`max-h-full flex flex-col overflow-hidden box-border`,"body-class":`p-0! grow-1 max-h-full overflow-hidden flex flex-col`},{default:l(()=>[F(Ct,{"sort-by":y.value,"onUpdate:sortBy":t[4]||=e=>y.value=e,"sort-dir":x.value,"onUpdate:sortDir":t[5]||=e=>x.value=e,items:r.items,"total-rows":r.totalRows,loading:r.loading,"filters-active":r.filtersActive,"table-height":E.value,onDetail:A,onToggleEnabled:j,onResetFilters:M,onSelectedChanges:R},null,8,[`sort-by`,`sort-dir`,`items`,`total-rows`,`loading`,`filters-active`,`table-height`]),S(`div`,{ref_key:`paginator`,ref:h,class:`flex justify-center w-full py-4 shrink-0`},[F(f(we),{"current-page":C.value,"onUpdate:currentPage":t[6]||=e=>C.value=e,"page-size":w.value,"onUpdate:pageSize":t[7]||=e=>w.value=e,layout:f(c)?`total, sizes, prev, pager, next, jumper`:`total, sizes, prev, pager, next`,total:r.allItems.length,onSizeChange:I,onCurrentChange:L},null,8,[`current-page`,`page-size`,`layout`,`total`])],512)]),_:1})):(n(),b(gt,{key:1,items:r.allItems,loading:r.loading,"filters-active":r.filtersActive,onDetail:A,onToggleEnabled:j,onResetFilters:M},null,8,[`items`,`loading`,`filters-active`]))],512)],64))}}),Tt={class:`px-2`},Et={class:`px-2`},Dt={class:`px-2`},Ot={class:`px-5 py-2 text-center`},kt=v(u({name:`ListExtensionsAdjust`,__name:`list-extensions-adjust`,props:{filters:{},filtersActive:{type:Boolean}},emits:[`update:filters`,`reset-filters`],setup(e,{emit:t}){let r=e,i=t,a=A(`list-extensions-adjust`),{t:o}=_(),s=N([`kind`,`enabled`,`isCore`]),u=H(r,`filters`,i);return(e,t)=>(n(),P(T,null,[F(f(oe),{teleport:``},{icon:l(()=>[F(f(O),{icon:`mdi:filter`})]),title:l(()=>[h(C(f(o)(`extensionsModule.headings.adjustFilters`)),1)]),subtitle:l(()=>[h(C(f(o)(`extensionsModule.subHeadings.adjustFilters`)),1)]),_:1}),S(`div`,{class:c([[f(a).b()],`flex flex-col h-full w-full overflow-hidden`])},[F(f(B),{class:`flex-grow`},{default:l(()=>[F(f(fe),{modelValue:s.value,"onUpdate:modelValue":t[3]||=e=>s.value=e},{default:l(()=>[F(f(pe),{name:`kind`,class:c([f(a).e(`filter-item`)])},{title:l(()=>[F(f(U),{class:`!px-2`},{default:l(()=>[h(C(f(o)(`extensionsModule.filters.kind.title`)),1)]),_:1})]),default:l(()=>[S(`div`,Tt,[F(f(xe),{modelValue:f(u).kind,"onUpdate:modelValue":t[0]||=e=>f(u).kind=e},{default:l(()=>[F(f(Q),{label:f(o)(`extensionsModule.states.all`),value:`all`},null,8,[`label`]),F(f(Q),{label:f(o)(`extensionsModule.labels.module`),value:`module`},null,8,[`label`]),F(f(Q),{label:f(o)(`extensionsModule.labels.plugin`),value:`plugin`},null,8,[`label`])]),_:1},8,[`modelValue`])])]),_:1},8,[`class`]),F(f(pe),{name:`enabled`,class:c([f(a).e(`filter-item`)])},{title:l(()=>[F(f(U),{class:`!px-2`},{default:l(()=>[h(C(f(o)(`extensionsModule.filters.enabled.title`)),1)]),_:1})]),default:l(()=>[S(`div`,Et,[F(f(xe),{modelValue:f(u).enabled,"onUpdate:modelValue":t[1]||=e=>f(u).enabled=e},{default:l(()=>[F(f(Q),{label:f(o)(`extensionsModule.states.all`),value:`all`},null,8,[`label`]),F(f(Q),{label:f(o)(`extensionsModule.labels.enabled`),value:`enabled`},null,8,[`label`]),F(f(Q),{label:f(o)(`extensionsModule.labels.disabled`),value:`disabled`},null,8,[`label`])]),_:1},8,[`modelValue`])])]),_:1},8,[`class`]),F(f(pe),{name:`isCore`,class:c([f(a).e(`filter-item`)])},{title:l(()=>[F(f(U),{class:`!px-2`},{default:l(()=>[h(C(f(o)(`extensionsModule.filters.type.title`)),1)]),_:1})]),default:l(()=>[S(`div`,Dt,[F(f(xe),{modelValue:f(u).isCore,"onUpdate:modelValue":t[2]||=e=>f(u).isCore=e},{default:l(()=>[F(f(Q),{label:f(o)(`extensionsModule.states.all`),value:`all`},null,8,[`label`]),F(f(Q),{label:f(o)(`extensionsModule.labels.core`),value:`core`},null,8,[`label`]),F(f(Q),{label:f(o)(`extensionsModule.labels.addon`),value:`addon`},null,8,[`label`])]),_:1},8,[`modelValue`])])]),_:1},8,[`class`])]),_:1},8,[`modelValue`])]),_:1}),S(`div`,Ot,[F(f(x),{disabled:!r.filtersActive,onClick:t[4]||=e=>i(`reset-filters`)},{icon:l(()=>[F(f(O),{icon:`mdi:filter-remove`})]),default:l(()=>[h(` `+C(f(o)(`extensionsModule.buttons.reset.title`)),1)]),_:1},8,[`disabled`])])],2)],64))}}),[[`__scopeId`,`data-v-1f502633`]]),At={class:`flex flex-col gap-3`},jt={class:`flex items-center justify-between gap-4`},Mt={class:`flex items-center gap-3 min-w-0 flex-1`},Nt={class:`flex items-center justify-center w-10 h-10 rounded-lg bg-gray-100 dark:bg-gray-800`},Pt={class:`min-w-0 flex-1`},Ft={class:`flex items-center gap-2 flex-wrap`},It={class:`font-medium text-base truncate`},Lt={class:`flex items-center gap-2 mt-1`},Rt={class:`flex items-center gap-1`},zt={class:`flex items-center gap-2`},Bt={class:`flex items-center gap-6 text-sm text-gray-500 dark:text-gray-400 flex-wrap`},Vt={key:0,class:`flex items-center gap-1`},Ht={key:1,class:`flex items-center gap-1`},Ut={key:2,class:`flex items-center gap-1`},Wt=u({name:`ServiceItem`,__name:`service-item`,props:{service:{},acting:{type:Boolean}},emits:[`start`,`stop`,`restart`],setup(e,{emit:t}){let r=e,i=t,{t:a}=_(),o=D(()=>r.service.state===J.starting||r.service.state===J.stopping),s=D(()=>r.service.state===J.stopped||r.service.state===J.error),u=D(()=>r.service.state===J.started||r.service.state===J.starting),d=D(()=>s.value),m=D(()=>u.value),g=D(()=>r.service.state===J.started),v=D(()=>d.value&&r.service.enabled&&!o.value&&!r.acting),y=D(()=>m.value&&r.service.state!==J.stopping&&!r.acting),w=D(()=>g.value&&r.service.enabled&&!o.value&&!r.acting),T=D(()=>r.service.enabled?o.value?a(`extensionsModule.services.tooltips.transitioning`):a(`extensionsModule.services.tooltips.startService`):a(`extensionsModule.services.tooltips.disabledPlugin`)),E=D(()=>r.service.state===J.stopping?a(`extensionsModule.services.tooltips.transitioning`):a(`extensionsModule.services.tooltips.stopService`)),k=D(()=>r.service.enabled?o.value?a(`extensionsModule.services.tooltips.transitioning`):a(`extensionsModule.services.tooltips.restartService`):a(`extensionsModule.services.tooltips.disabledPlugin`)),A=D(()=>{let e=r.service.state;return a(`extensionsModule.services.states.${e}`)}),j=D(()=>{switch(r.service.state){case J.started:return`success`;case J.stopped:return`info`;case J.starting:case J.stopping:return`warning`;case J.error:return`danger`;default:return`info`}}),M=D(()=>{switch(r.service.state){case J.started:return`mdi:check-circle`;case J.stopped:return`mdi:stop-circle`;case J.starting:case J.stopping:return`mdi:loading`;case J.error:return`mdi:alert-circle`;default:return`mdi:help-circle`}}),N=D(()=>{switch(r.service.state){case J.started:return`text-green-500`;case J.stopped:return`text-gray-400`;case J.starting:case J.stopping:return`text-yellow-500 animate-spin`;case J.error:return`text-red-500`;default:return`text-gray-400`}}),I=D(()=>{if(r.service.uptimeMs===void 0)return`-`;let e=Math.floor(r.service.uptimeMs/1e3),t=Math.floor(e/86400),n=Math.floor(e%86400/3600),i=Math.floor(e%3600/60),a=[];return t>0&&a.push(`${t}d`),n>0&&a.push(`${n}h`),(i>0||a.length===0)&&a.push(`${i}m`),a.join(` `)}),L=D(()=>r.service.lastStartedAt?new Date(r.service.lastStartedAt).toLocaleString():`-`),ee=()=>{i(`start`)},z=()=>{i(`stop`)},B=()=>{i(`restart`)};return(t,r)=>(n(),b(f(Y),{shadow:`never`,class:`service-item`,"body-class":`p-3!`},{default:l(()=>[S(`div`,At,[S(`div`,jt,[S(`div`,Mt,[S(`div`,Nt,[F(f(O),{icon:M.value,class:c([`w-5 h-5`,N.value])},null,8,[`icon`,`class`])]),S(`div`,Pt,[S(`div`,Ft,[S(`span`,It,C(e.service.pluginName),1),F(f(q),{size:`small`,type:`info`},{default:l(()=>[h(C(e.service.serviceId),1)]),_:1})]),S(`div`,Lt,[F(f(q),{type:j.value,size:`small`,effect:`light`},{default:l(()=>[S(`div`,Rt,[o.value?(n(),b(f(O),{key:0,icon:`mdi:loading`,class:`animate-spin w-3 h-3`})):p(``,!0),h(` `+C(A.value),1)])]),_:1},8,[`type`]),e.service.enabled?p(``,!0):(n(),b(f(q),{key:0,type:`warning`,size:`small`,effect:`light`},{default:l(()=>[h(C(f(a)(`extensionsModule.services.texts.pluginDisabled`)),1)]),_:1})),e.service.healthy===void 0?p(``,!0):(n(),b(f(q),{key:1,type:e.service.healthy?`success`:`danger`,size:`small`,effect:`light`},{default:l(()=>[h(C(e.service.healthy?f(a)(`extensionsModule.services.labels.healthy`):f(a)(`extensionsModule.services.labels.unhealthy`)),1)]),_:1},8,[`type`]))])])]),S(`div`,zt,[d.value?(n(),b(f(R),{key:0,content:T.value,placement:`top`},{default:l(()=>[F(f(x),{type:`success`,size:`small`,plain:``,disabled:!v.value,loading:e.acting,onClick:ee},{icon:l(()=>[F(f(O),{icon:`mdi:play`})]),default:l(()=>[h(` `+C(f(a)(`extensionsModule.services.buttons.start`)),1)]),_:1},8,[`disabled`,`loading`])]),_:1},8,[`content`])):p(``,!0),m.value?(n(),b(f(R),{key:1,content:E.value,placement:`top`},{default:l(()=>[F(f(x),{type:`danger`,size:`small`,plain:``,disabled:!y.value,loading:e.acting,onClick:z},{icon:l(()=>[F(f(O),{icon:`mdi:stop`})]),default:l(()=>[h(` `+C(f(a)(`extensionsModule.services.buttons.stop`)),1)]),_:1},8,[`disabled`,`loading`])]),_:1},8,[`content`])):p(``,!0),g.value?(n(),b(f(R),{key:2,content:k.value,placement:`top`},{default:l(()=>[F(f(x),{type:`primary`,size:`small`,plain:``,disabled:!w.value,loading:e.acting,onClick:B},{icon:l(()=>[F(f(O),{icon:`mdi:restart`})]),default:l(()=>[h(` `+C(f(a)(`extensionsModule.services.buttons.restart`)),1)]),_:1},8,[`disabled`,`loading`])]),_:1},8,[`content`])):p(``,!0)])]),S(`div`,Bt,[e.service.state===`started`&&e.service.uptimeMs!==void 0?(n(),P(`div`,Vt,[F(f(O),{icon:`mdi:clock-outline`,class:`w-4 h-4`}),S(`span`,null,C(f(a)(`extensionsModule.services.labels.uptime`))+`: `+C(I.value),1)])):p(``,!0),e.service.startCount>0?(n(),P(`div`,Ht,[F(f(O),{icon:`mdi:counter`,class:`w-4 h-4`}),S(`span`,null,C(f(a)(`extensionsModule.services.labels.startCount`))+`: `+C(e.service.startCount),1)])):p(``,!0),e.service.lastStartedAt?(n(),P(`div`,Ut,[F(f(O),{icon:`mdi:play-circle-outline`,class:`w-4 h-4`}),S(`span`,null,C(f(a)(`extensionsModule.services.labels.lastStarted`))+`: `+C(L.value),1)])):p(``,!0)]),e.service.lastError?(n(),b(f(W),{key:0,type:e.service.state===f(J).error?`error`:`warning`,title:f(a)(`extensionsModule.services.labels.lastError`),description:e.service.lastError,"show-icon":``,closable:!1},null,8,[`type`,`title`,`description`])):p(``,!0)])]),_:1}))}}),Gt={key:2,class:`flex flex-col gap-3`},Kt=u({name:`ServicesList`,__name:`services-list`,props:{services:{},loading:{type:Boolean},isActing:{type:Function}},emits:[`start`,`stop`,`restart`],setup(e,{emit:t}){let i=t,{t:a}=_(),o=(e,t)=>{i(`start`,e,t)},s=(e,t)=>{i(`stop`,e,t)},c=(e,t)=>{i(`restart`,e,t)};return(t,i)=>(n(),b(f(B),{class:`h-full`},{default:l(()=>[e.loading&&e.services.length===0?(n(),b(f(ye),{key:0,rows:5,animated:``})):e.services.length===0?(n(),b(f(E),{key:1,icon:`info`,title:f(a)(`extensionsModule.services.texts.noServices`)},null,8,[`title`])):(n(),P(`div`,Gt,[(n(!0),P(T,null,r(e.services,t=>(n(),b(Wt,{key:`${t.pluginName}:${t.serviceId}`,service:t,acting:e.isActing(t.pluginName,t.serviceId),onStart:e=>o(t.pluginName,t.serviceId),onStop:e=>s(t.pluginName,t.serviceId),onRestart:e=>c(t.pluginName,t.serviceId)},null,8,[`service`,`acting`,`onStart`,`onStop`,`onRestart`]))),128))]))]),_:1}))}});export{Le as a,mt as i,kt as n,wt as r,Kt as t};
@@ -1 +1 @@
1
- import"./chunk-DECur_0Z.js";import{Br as e,Hr as t,Lr as n,Qr as r,Sr as i,Xr as a,_i as o,br as s,c,ci as l,d as u,gr as d,h as f,hr as p,ji as m,lr as h,or as g,sr as _,ui as v,vr as y,xr as b}from"./icon-with-child-DmQ_XhQy.js";import{$t as x,Di as S,Dr as C,Fi as w,Ii as T,K as E,T as D,_ as O,at as k,ot as A,xi as j,yi as M}from"./common-eNbjMqa7.js";import{a as N,l as P,s as F}from"./auth.constants-BtlHaDRV.js";var I=i({name:`SettingsProfileForm`,__name:`settings-profile-form`,props:{profile:{},remoteFormSubmit:{type:Boolean,default:!1},remoteFormResult:{default:N.NONE},remoteFormReset:{type:Boolean,default:!1},layout:{default:F.DEFAULT}},emits:[`update:remoteFormSubmit`,`update:remoteFormResult`,`update:remoteFormReset`],setup(n,{emit:i}){let s=n,c=i,{t:f,locale:p}=u(),m=O(),g=D().getStore(x),_=v(void 0),C=l({email:[{required:!1,message:f(`authModule.fields.email.validation.required`),trigger:`change`},{type:`email`,message:f(`authModule.fields.email.validation.email`),trigger:`change`}],firstName:[{required:!1,message:f(`authModule.fields.firstName.validation.required`),trigger:`change`}],lastName:[{required:!1,message:f(`authModule.fields.lastName.validation.required`),trigger:`change`}]}),P=A,I=e=>e?k[e]??null:null,L=e=>e?e.split(`-`)[0]:null,R=l({email:s.profile.email??`@`,firstName:s.profile.firstName,lastName:s.profile.lastName,language:I(s.profile.language??null)}),z,B=()=>{window.clearTimeout(z),c(`update:remoteFormResult`,N.NONE)};return a(()=>s.remoteFormSubmit,async e=>{e&&(c(`update:remoteFormSubmit`,!1),_.value.clearValidate(),_.value.validate(async e=>{if(!e)return;c(`update:remoteFormResult`,N.WORKING);let t=f(`authModule.messages.profileNotEdited`);try{await g.edit({id:s.profile.id,data:{firstName:R.firstName,lastName:R.lastName,email:R.email,language:L(R.language)}}),R.language&&(p.value=R.language,E(R.language)),c(`update:remoteFormResult`,N.OK),m.success(f(`authModule.messages.profileEdited`)),z=window.setTimeout(B,2e3)}catch(e){e instanceof Error&&`exception`in e&&e.exception instanceof Error?m.exception(t):m.error(t),c(`update:remoteFormResult`,N.ERROR),z=window.setTimeout(B,2e3)}}))}),a(()=>s.remoteFormReset,e=>{c(`update:remoteFormReset`,!1),e&&(R.email=s.profile.email??`@`,R.firstName=s.profile.firstName,R.lastName=s.profile.lastName,R.language=I(s.profile.language??null))}),(n,i)=>(e(),d(o(w),{ref_key:`profileFormEl`,ref:_,model:R,rules:C,"label-position":s.layout===o(F).PHONE?`top`:`right`,"label-width":180,"status-icon":``},{default:r(()=>[b(o(T),{label:o(f)(`authModule.fields.email.title`),prop:`email`},{default:r(()=>[b(o(S),{modelValue:R.email,"onUpdate:modelValue":i[0]||=e=>R.email=e,name:`email`},null,8,[`modelValue`])]),_:1},8,[`label`]),b(o(T),{label:o(f)(`authModule.fields.firstName.title`),prop:`firstName`},{default:r(()=>[b(o(S),{modelValue:R.firstName,"onUpdate:modelValue":i[1]||=e=>R.firstName=e,name:`firstName`},null,8,[`modelValue`])]),_:1},8,[`label`]),b(o(T),{label:o(f)(`authModule.fields.lastName.title`),prop:`lastName`},{default:r(()=>[b(o(S),{modelValue:R.lastName,"onUpdate:modelValue":i[2]||=e=>R.lastName=e,name:`lastName`},null,8,[`modelValue`])]),_:1},8,[`label`]),b(o(T),{label:o(f)(`authModule.fields.language.title`),prop:`language`},{default:r(()=>[b(o(j),{modelValue:R.language,"onUpdate:modelValue":i[3]||=e=>R.language=e,placeholder:o(f)(`authModule.fields.language.placeholder`),clearable:``},{default:r(()=>[(e(!0),y(h,null,t(o(P),t=>(e(),d(o(M),{key:t.value,label:`${t.flag} ${t.label}`,value:t.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`,`label-position`]))}}),L=i({name:`SettingsPasswordForm`,__name:`settings-password-form`,props:{profile:{},remoteFormSubmit:{type:Boolean,default:!1},remoteFormResult:{default:N.NONE},remoteFormReset:{type:Boolean,default:!1},layout:{default:F.DEFAULT}},emits:[`update:remoteFormSubmit`,`update:remoteFormResult`,`update:remoteFormReset`],setup(t,{emit:n}){let i=t,s=n,{t:c}=u(),f=O(),p=D().getStore(x),m=v(void 0),h=l({currentPassword:[{required:!0,message:c(`authModule.fields.currentPassword.validation.required`),trigger:`change`}],newPassword:[{required:!0,message:c(`authModule.fields.newPassword.validation.required`),trigger:`change`}],repeatPassword:[{validator:(e,t,n)=>{t===``?n(Error(c(`authModule.fields.repeatPassword.validation.required`))):t===g.newPassword?n():n(Error(c(`authModule.fields.repeatPassword.validation.different`)))},trigger:`change`}]}),g=l({currentPassword:``,newPassword:``,repeatPassword:``}),_,y=()=>{window.clearTimeout(_),s(`update:remoteFormResult`,N.NONE)};return a(()=>i.remoteFormSubmit,async e=>{e&&(s(`update:remoteFormSubmit`,!1),m.value.clearValidate(),m.value.validate(async e=>{if(!e)return;s(`update:remoteFormResult`,N.WORKING);let t=c(`authModule.messages.passwordNotEdited`);try{await p.edit({id:i.profile.id,data:{password:{current:g.currentPassword,new:g.newPassword}}}),s(`update:remoteFormResult`,N.OK),f.success(c(`authModule.messages.passwordEdited`)),_=window.setTimeout(y,2e3)}catch(e){e instanceof Error&&`exception`in e&&e.exception instanceof Error?f.exception(t):f.error(t),s(`update:remoteFormResult`,N.ERROR),_=window.setTimeout(y,2e3)}}))}),a(()=>i.remoteFormReset,e=>{s(`update:remoteFormReset`,!1),e&&(m.value?.resetFields(),g.currentPassword=``,g.newPassword=``,g.repeatPassword=``)}),(t,n)=>(e(),d(o(w),{ref_key:`passwordFormEl`,ref:m,model:g,rules:h,"label-position":i.layout===o(F).PHONE?`top`:`right`,"label-width":180,"status-icon":``},{default:r(()=>[b(o(T),{label:o(c)(`authModule.fields.currentPassword.title`),prop:`currentPassword`},{default:r(()=>[b(o(S),{modelValue:g.currentPassword,"onUpdate:modelValue":n[0]||=e=>g.currentPassword=e,name:`currentPassword`,type:`password`,"show-password":``},null,8,[`modelValue`])]),_:1},8,[`label`]),b(o(T),{label:o(c)(`authModule.fields.newPassword.title`),prop:`newPassword`},{default:r(()=>[b(o(S),{modelValue:g.newPassword,"onUpdate:modelValue":n[1]||=e=>g.newPassword=e,name:`newPassword`,type:`password`,"show-password":``},null,8,[`modelValue`])]),_:1},8,[`label`]),b(o(T),{label:o(c)(`authModule.fields.repeatPassword.title`),prop:`repeatPassword`},{default:r(()=>[b(o(S),{modelValue:g.repeatPassword,"onUpdate:modelValue":n[2]||=e=>g.repeatPassword=e,name:`repeatPassword`,type:`password`,"show-password":``},null,8,[`modelValue`])]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`,`label-position`]))}}),R=i({name:`SignInForm`,__name:`sign-in-form`,props:{remoteFormSubmit:{type:Boolean},remoteFormResult:{default:N.NONE},remoteFormReset:{type:Boolean,default:!1}},emits:[`update:remoteFormResult`,`update:remoteFormReset`],setup(t,{emit:n}){let i=t,c=n,{t:p}=u(),h=O(),y=D().getStore(x),C=v(void 0),E=v(void 0),k=l({username:[{required:!0,message:p(`authModule.fields.username.validation.required`),trigger:`change`}],password:[{required:!0,message:p(`authModule.fields.password.validation.required`),trigger:`change`}]}),A=l({username:``,password:``}),j=async e=>{e&&await e.validate(async e=>{if(e){c(`update:remoteFormResult`,N.WORKING);try{await y.create({data:{username:A.username,password:A.password}}),c(`update:remoteFormResult`,N.OK)}catch(e){c(`update:remoteFormResult`,N.ERROR);let t=p(`authModule.messages.requestError`);e instanceof Error&&`exception`in e&&e.exception instanceof Error?h.exception(t):h.error(t)}}})},M=()=>{E.value?.focus()},P=()=>{j(C.value)};return a(()=>i.remoteFormReset,e=>{if(c(`update:remoteFormReset`,!1),e){if(!C.value)return;C.value.resetFields()}}),(t,n)=>(e(),d(o(w),{ref_key:`signFormEl`,ref:C,model:A,rules:k,"label-position":`top`,"status-icon":``,class:`px-5`,onSubmit:_(j,[`prevent`])},{default:r(()=>[b(o(T),{label:o(p)(`authModule.fields.username.title`),prop:`username`,class:`mb-5`},{default:r(()=>[b(o(S),{modelValue:A.username,"onUpdate:modelValue":n[0]||=e=>A.username=e,name:`username`,onKeyup:g(M,[`enter`])},null,8,[`modelValue`])]),_:1},8,[`label`]),b(o(T),{label:o(p)(`authModule.fields.password.title`),prop:`password`,class:`mb-5`},{default:r(()=>[b(o(S),{ref_key:`passwordInputEl`,ref:E,modelValue:A.password,"onUpdate:modelValue":n[1]||=e=>A.password=e,type:`password`,name:`password`,"show-password":``,onKeyup:g(P,[`enter`])},null,8,[`modelValue`])]),_:1},8,[`label`]),b(o(f),{type:`primary`,size:`large`,class:`block w-full`,onClick:n[2]||=e=>j(C.value)},{default:r(()=>[s(m(o(p)(`authModule.buttons.signIn.title`)),1)]),_:1})]),_:1},8,[`model`,`rules`]))}}),z={class:`flex flex-row flex-nowrap gap-5`},B={class:`mb-5`},V={class:`mb-5`},H={class:`mb-10`},U={class:`mt-5 px-5`},W=i({name:`SignUpForm`,__name:`sign-up-form`,props:{remoteFormSubmit:{type:Boolean,default:!1},remoteFormResult:{default:N.NONE},remoteFormReset:{type:Boolean,default:!1}},emits:[`update:remoteFormResult`,`update:remoteFormReset`],setup(t,{emit:n}){let i=t,d=n,{t:g}=u(),C=O(),E=c(),k=D().getStore(x),A=v(void 0),j=l({email:[{required:!0,message:g(`authModule.fields.email.validation.required`),trigger:`change`},{type:`email`,message:g(`authModule.fields.email.validation.email`),trigger:`change`}],firstName:[{required:!0,message:g(`authModule.fields.firstName.validation.required`),trigger:`change`}],lastName:[{required:!0,message:g(`authModule.fields.lastName.validation.required`),trigger:`change`}],username:[{required:!0,message:g(`authModule.fields.username.validation.required`),trigger:`change`}],password:[{required:!0,message:g(`authModule.fields.password.validation.required`),trigger:`change`}]}),M=l({username:``,password:``,email:``,firstName:``,lastName:``}),F=async e=>{e&&await e.validate(async e=>{if(e){d(`update:remoteFormResult`,N.WORKING);try{await k.register({data:{username:M.username,password:M.password,firstName:M.firstName,lastName:M.lastName,email:M.email}}),d(`update:remoteFormResult`,N.OK)}catch(e){d(`update:remoteFormResult`,N.ERROR);let t=g(`authModule.messages.requestError`);e instanceof Error&&`exception`in e&&e.exception instanceof Error?C.exception(t):C.error(t)}}})},I=()=>{E.push({name:P.SIGN_IN})};return a(()=>i.remoteFormReset,e=>{if(d(`update:remoteFormReset`,!1),e){if(!A.value)return;A.value.resetFields()}}),(t,n)=>(e(),y(h,null,[b(o(w),{ref_key:`signFormEl`,ref:A,model:M,rules:j,"label-position":`top`,"status-icon":``,class:`px-5`,onSubmit:_(F,[`prevent`])},{default:r(()=>[p(`div`,z,[b(o(T),{label:o(g)(`authModule.fields.firstName.title`),prop:`firstName`},{default:r(()=>[b(o(S),{modelValue:M.firstName,"onUpdate:modelValue":n[0]||=e=>M.firstName=e,placeholder:o(g)(`authModule.fields.firstName.placeholder`),name:`firstName`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),b(o(T),{label:o(g)(`authModule.fields.lastName.title`),prop:`lastName`},{default:r(()=>[b(o(S),{modelValue:M.lastName,"onUpdate:modelValue":n[1]||=e=>M.lastName=e,palceholder:o(g)(`authModule.fields.lastName.placeholder`),name:`lastName`},null,8,[`modelValue`,`palceholder`])]),_:1},8,[`label`])]),p(`div`,B,[b(o(T),{label:o(g)(`authModule.fields.email.title`),prop:`email`},{default:r(()=>[b(o(S),{modelValue:M.email,"onUpdate:modelValue":n[2]||=e=>M.email=e,palceholder:o(g)(`authModule.fields.email.placeholder`),name:`email`},null,8,[`modelValue`,`palceholder`])]),_:1},8,[`label`])]),p(`div`,V,[b(o(T),{label:o(g)(`authModule.fields.username.title`),prop:`username`},{default:r(()=>[b(o(S),{modelValue:M.username,"onUpdate:modelValue":n[3]||=e=>M.username=e,"show-password":``,name:`username`,type:`text`},null,8,[`modelValue`])]),_:1},8,[`label`])]),p(`div`,H,[b(o(T),{label:o(g)(`authModule.fields.password.title`),prop:`password`},{default:r(()=>[b(o(S),{modelValue:M.password,"onUpdate:modelValue":n[4]||=e=>M.password=e,"show-password":``,name:`password`,type:`password`},null,8,[`modelValue`])]),_:1},8,[`label`])]),b(o(f),{type:`primary`,size:`large`,class:`block w-full`,onClick:n[5]||=e=>F(A.value)},{default:r(()=>[s(m(o(g)(`authModule.buttons.signUp.title`)),1)]),_:1})]),_:1},8,[`model`,`rules`]),p(`div`,U,[b(o(f),{class:`block w-full`,onClick:n[6]||=e=>I()},{default:r(()=>[s(m(o(g)(`authModule.buttons.backToSignIn.title`)),1)]),_:1})])],64))}}),G={class:`flex flex-row justify-center items-center mt-4`},K=i({name:`UnlockForm`,__name:`unlock-form`,props:{remoteFormSubmit:{type:Boolean},remoteFormResult:{default:N.NONE},remoteFormReset:{type:Boolean,default:!1}},emits:[`update:remoteFormResult`,`update:remoteFormReset`,`signOut`],setup(t,{emit:i}){let c=t,h=i,{t:y}=u(),x=O(),E=C(),D=v(void 0),k=v(void 0),A=l({password:[{required:!0,message:y(`authModule.fields.password.validation.required`),trigger:`change`}]}),j=l({password:``}),M=async e=>{e&&await e.validate(async e=>{if(e){let e=E?.details.value?.username;if(!e){h(`update:remoteFormResult`,N.ERROR),x.error(y(`authModule.messages.requestError`));return}h(`update:remoteFormResult`,N.WORKING);try{await E.signIn({username:e,password:j.password})?h(`update:remoteFormResult`,N.OK):(h(`update:remoteFormResult`,N.ERROR),x.error(y(`authModule.messages.invalidPassword`)))}catch{h(`update:remoteFormResult`,N.ERROR),x.error(y(`authModule.messages.invalidPassword`))}}})},P=()=>{h(`signOut`)};return n(()=>{k.value?.focus()}),a(()=>c.remoteFormReset,e=>{if(h(`update:remoteFormReset`,!1),e){if(!D.value)return;D.value.resetFields()}}),(t,n)=>(e(),d(o(w),{ref_key:`unlockFormEl`,ref:D,model:j,rules:A,"label-position":`top`,"status-icon":``,class:`px-5`,onSubmit:_(M,[`prevent`])},{default:r(()=>[b(o(T),{label:o(y)(`authModule.fields.password.title`),prop:`password`,class:`mb-5`},{default:r(()=>[b(o(S),{ref_key:`passwordInputEl`,ref:k,modelValue:j.password,"onUpdate:modelValue":n[0]||=e=>j.password=e,type:`password`,name:`password`,"show-password":``,onKeyup:n[1]||=g(e=>M(D.value),[`enter`])},null,8,[`modelValue`])]),_:1},8,[`label`]),b(o(f),{type:`primary`,size:`large`,class:`block w-full mb-3`,onClick:n[2]||=e=>M(D.value)},{default:r(()=>[s(m(o(y)(`authModule.buttons.unlock.title`)),1)]),_:1}),p(`div`,G,[b(o(f),{type:`danger`,link:``,onClick:P},{default:r(()=>[s(m(o(y)(`authModule.buttons.signOut.title`)),1)]),_:1})])]),_:1},8,[`model`,`rules`]))}});export{I as a,L as i,W as n,R as r,K as t};
1
+ import"./chunk-DECur_0Z.js";import{Br as e,Hr as t,Lr as n,Qr as r,Sr as i,Xr as a,_i as o,br as s,c,ci as l,d as u,gr as d,h as f,hr as p,ji as m,lr as h,or as g,sr as _,ui as v,vr as y,xr as b}from"./icon-with-child-DmQ_XhQy.js";import{$t as x,Di as S,Dr as C,Fi as w,Ii as T,K as E,T as D,_ as O,at as k,ot as A,xi as j,yi as M}from"./common-1h7wnZKI.js";import{a as N,l as P,s as F}from"./auth.constants-BtlHaDRV.js";var I=i({name:`SettingsProfileForm`,__name:`settings-profile-form`,props:{profile:{},remoteFormSubmit:{type:Boolean,default:!1},remoteFormResult:{default:N.NONE},remoteFormReset:{type:Boolean,default:!1},layout:{default:F.DEFAULT}},emits:[`update:remoteFormSubmit`,`update:remoteFormResult`,`update:remoteFormReset`],setup(n,{emit:i}){let s=n,c=i,{t:f,locale:p}=u(),m=O(),g=D().getStore(x),_=v(void 0),C=l({email:[{required:!1,message:f(`authModule.fields.email.validation.required`),trigger:`change`},{type:`email`,message:f(`authModule.fields.email.validation.email`),trigger:`change`}],firstName:[{required:!1,message:f(`authModule.fields.firstName.validation.required`),trigger:`change`}],lastName:[{required:!1,message:f(`authModule.fields.lastName.validation.required`),trigger:`change`}]}),P=A,I=e=>e?k[e]??null:null,L=e=>e?e.split(`-`)[0]:null,R=l({email:s.profile.email??`@`,firstName:s.profile.firstName,lastName:s.profile.lastName,language:I(s.profile.language??null)}),z,B=()=>{window.clearTimeout(z),c(`update:remoteFormResult`,N.NONE)};return a(()=>s.remoteFormSubmit,async e=>{e&&(c(`update:remoteFormSubmit`,!1),_.value.clearValidate(),_.value.validate(async e=>{if(!e)return;c(`update:remoteFormResult`,N.WORKING);let t=f(`authModule.messages.profileNotEdited`);try{await g.edit({id:s.profile.id,data:{firstName:R.firstName,lastName:R.lastName,email:R.email,language:L(R.language)}}),R.language&&(p.value=R.language,E(R.language)),c(`update:remoteFormResult`,N.OK),m.success(f(`authModule.messages.profileEdited`)),z=window.setTimeout(B,2e3)}catch(e){e instanceof Error&&`exception`in e&&e.exception instanceof Error?m.exception(t):m.error(t),c(`update:remoteFormResult`,N.ERROR),z=window.setTimeout(B,2e3)}}))}),a(()=>s.remoteFormReset,e=>{c(`update:remoteFormReset`,!1),e&&(R.email=s.profile.email??`@`,R.firstName=s.profile.firstName,R.lastName=s.profile.lastName,R.language=I(s.profile.language??null))}),(n,i)=>(e(),d(o(w),{ref_key:`profileFormEl`,ref:_,model:R,rules:C,"label-position":s.layout===o(F).PHONE?`top`:`right`,"label-width":180,"status-icon":``},{default:r(()=>[b(o(T),{label:o(f)(`authModule.fields.email.title`),prop:`email`},{default:r(()=>[b(o(S),{modelValue:R.email,"onUpdate:modelValue":i[0]||=e=>R.email=e,name:`email`},null,8,[`modelValue`])]),_:1},8,[`label`]),b(o(T),{label:o(f)(`authModule.fields.firstName.title`),prop:`firstName`},{default:r(()=>[b(o(S),{modelValue:R.firstName,"onUpdate:modelValue":i[1]||=e=>R.firstName=e,name:`firstName`},null,8,[`modelValue`])]),_:1},8,[`label`]),b(o(T),{label:o(f)(`authModule.fields.lastName.title`),prop:`lastName`},{default:r(()=>[b(o(S),{modelValue:R.lastName,"onUpdate:modelValue":i[2]||=e=>R.lastName=e,name:`lastName`},null,8,[`modelValue`])]),_:1},8,[`label`]),b(o(T),{label:o(f)(`authModule.fields.language.title`),prop:`language`},{default:r(()=>[b(o(j),{modelValue:R.language,"onUpdate:modelValue":i[3]||=e=>R.language=e,placeholder:o(f)(`authModule.fields.language.placeholder`),clearable:``},{default:r(()=>[(e(!0),y(h,null,t(o(P),t=>(e(),d(o(M),{key:t.value,label:`${t.flag} ${t.label}`,value:t.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`])]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`,`label-position`]))}}),L=i({name:`SettingsPasswordForm`,__name:`settings-password-form`,props:{profile:{},remoteFormSubmit:{type:Boolean,default:!1},remoteFormResult:{default:N.NONE},remoteFormReset:{type:Boolean,default:!1},layout:{default:F.DEFAULT}},emits:[`update:remoteFormSubmit`,`update:remoteFormResult`,`update:remoteFormReset`],setup(t,{emit:n}){let i=t,s=n,{t:c}=u(),f=O(),p=D().getStore(x),m=v(void 0),h=l({currentPassword:[{required:!0,message:c(`authModule.fields.currentPassword.validation.required`),trigger:`change`}],newPassword:[{required:!0,message:c(`authModule.fields.newPassword.validation.required`),trigger:`change`}],repeatPassword:[{validator:(e,t,n)=>{t===``?n(Error(c(`authModule.fields.repeatPassword.validation.required`))):t===g.newPassword?n():n(Error(c(`authModule.fields.repeatPassword.validation.different`)))},trigger:`change`}]}),g=l({currentPassword:``,newPassword:``,repeatPassword:``}),_,y=()=>{window.clearTimeout(_),s(`update:remoteFormResult`,N.NONE)};return a(()=>i.remoteFormSubmit,async e=>{e&&(s(`update:remoteFormSubmit`,!1),m.value.clearValidate(),m.value.validate(async e=>{if(!e)return;s(`update:remoteFormResult`,N.WORKING);let t=c(`authModule.messages.passwordNotEdited`);try{await p.edit({id:i.profile.id,data:{password:{current:g.currentPassword,new:g.newPassword}}}),s(`update:remoteFormResult`,N.OK),f.success(c(`authModule.messages.passwordEdited`)),_=window.setTimeout(y,2e3)}catch(e){e instanceof Error&&`exception`in e&&e.exception instanceof Error?f.exception(t):f.error(t),s(`update:remoteFormResult`,N.ERROR),_=window.setTimeout(y,2e3)}}))}),a(()=>i.remoteFormReset,e=>{s(`update:remoteFormReset`,!1),e&&(m.value?.resetFields(),g.currentPassword=``,g.newPassword=``,g.repeatPassword=``)}),(t,n)=>(e(),d(o(w),{ref_key:`passwordFormEl`,ref:m,model:g,rules:h,"label-position":i.layout===o(F).PHONE?`top`:`right`,"label-width":180,"status-icon":``},{default:r(()=>[b(o(T),{label:o(c)(`authModule.fields.currentPassword.title`),prop:`currentPassword`},{default:r(()=>[b(o(S),{modelValue:g.currentPassword,"onUpdate:modelValue":n[0]||=e=>g.currentPassword=e,name:`currentPassword`,type:`password`,"show-password":``},null,8,[`modelValue`])]),_:1},8,[`label`]),b(o(T),{label:o(c)(`authModule.fields.newPassword.title`),prop:`newPassword`},{default:r(()=>[b(o(S),{modelValue:g.newPassword,"onUpdate:modelValue":n[1]||=e=>g.newPassword=e,name:`newPassword`,type:`password`,"show-password":``},null,8,[`modelValue`])]),_:1},8,[`label`]),b(o(T),{label:o(c)(`authModule.fields.repeatPassword.title`),prop:`repeatPassword`},{default:r(()=>[b(o(S),{modelValue:g.repeatPassword,"onUpdate:modelValue":n[2]||=e=>g.repeatPassword=e,name:`repeatPassword`,type:`password`,"show-password":``},null,8,[`modelValue`])]),_:1},8,[`label`])]),_:1},8,[`model`,`rules`,`label-position`]))}}),R=i({name:`SignInForm`,__name:`sign-in-form`,props:{remoteFormSubmit:{type:Boolean},remoteFormResult:{default:N.NONE},remoteFormReset:{type:Boolean,default:!1}},emits:[`update:remoteFormResult`,`update:remoteFormReset`],setup(t,{emit:n}){let i=t,c=n,{t:p}=u(),h=O(),y=D().getStore(x),C=v(void 0),E=v(void 0),k=l({username:[{required:!0,message:p(`authModule.fields.username.validation.required`),trigger:`change`}],password:[{required:!0,message:p(`authModule.fields.password.validation.required`),trigger:`change`}]}),A=l({username:``,password:``}),j=async e=>{e&&await e.validate(async e=>{if(e){c(`update:remoteFormResult`,N.WORKING);try{await y.create({data:{username:A.username,password:A.password}}),c(`update:remoteFormResult`,N.OK)}catch(e){c(`update:remoteFormResult`,N.ERROR);let t=p(`authModule.messages.requestError`);e instanceof Error&&`exception`in e&&e.exception instanceof Error?h.exception(t):h.error(t)}}})},M=()=>{E.value?.focus()},P=()=>{j(C.value)};return a(()=>i.remoteFormReset,e=>{if(c(`update:remoteFormReset`,!1),e){if(!C.value)return;C.value.resetFields()}}),(t,n)=>(e(),d(o(w),{ref_key:`signFormEl`,ref:C,model:A,rules:k,"label-position":`top`,"status-icon":``,class:`px-5`,onSubmit:_(j,[`prevent`])},{default:r(()=>[b(o(T),{label:o(p)(`authModule.fields.username.title`),prop:`username`,class:`mb-5`},{default:r(()=>[b(o(S),{modelValue:A.username,"onUpdate:modelValue":n[0]||=e=>A.username=e,name:`username`,onKeyup:g(M,[`enter`])},null,8,[`modelValue`])]),_:1},8,[`label`]),b(o(T),{label:o(p)(`authModule.fields.password.title`),prop:`password`,class:`mb-5`},{default:r(()=>[b(o(S),{ref_key:`passwordInputEl`,ref:E,modelValue:A.password,"onUpdate:modelValue":n[1]||=e=>A.password=e,type:`password`,name:`password`,"show-password":``,onKeyup:g(P,[`enter`])},null,8,[`modelValue`])]),_:1},8,[`label`]),b(o(f),{type:`primary`,size:`large`,class:`block w-full`,onClick:n[2]||=e=>j(C.value)},{default:r(()=>[s(m(o(p)(`authModule.buttons.signIn.title`)),1)]),_:1})]),_:1},8,[`model`,`rules`]))}}),z={class:`flex flex-row flex-nowrap gap-5`},B={class:`mb-5`},V={class:`mb-5`},H={class:`mb-10`},U={class:`mt-5 px-5`},W=i({name:`SignUpForm`,__name:`sign-up-form`,props:{remoteFormSubmit:{type:Boolean,default:!1},remoteFormResult:{default:N.NONE},remoteFormReset:{type:Boolean,default:!1}},emits:[`update:remoteFormResult`,`update:remoteFormReset`],setup(t,{emit:n}){let i=t,d=n,{t:g}=u(),C=O(),E=c(),k=D().getStore(x),A=v(void 0),j=l({email:[{required:!0,message:g(`authModule.fields.email.validation.required`),trigger:`change`},{type:`email`,message:g(`authModule.fields.email.validation.email`),trigger:`change`}],firstName:[{required:!0,message:g(`authModule.fields.firstName.validation.required`),trigger:`change`}],lastName:[{required:!0,message:g(`authModule.fields.lastName.validation.required`),trigger:`change`}],username:[{required:!0,message:g(`authModule.fields.username.validation.required`),trigger:`change`}],password:[{required:!0,message:g(`authModule.fields.password.validation.required`),trigger:`change`}]}),M=l({username:``,password:``,email:``,firstName:``,lastName:``}),F=async e=>{e&&await e.validate(async e=>{if(e){d(`update:remoteFormResult`,N.WORKING);try{await k.register({data:{username:M.username,password:M.password,firstName:M.firstName,lastName:M.lastName,email:M.email}}),d(`update:remoteFormResult`,N.OK)}catch(e){d(`update:remoteFormResult`,N.ERROR);let t=g(`authModule.messages.requestError`);e instanceof Error&&`exception`in e&&e.exception instanceof Error?C.exception(t):C.error(t)}}})},I=()=>{E.push({name:P.SIGN_IN})};return a(()=>i.remoteFormReset,e=>{if(d(`update:remoteFormReset`,!1),e){if(!A.value)return;A.value.resetFields()}}),(t,n)=>(e(),y(h,null,[b(o(w),{ref_key:`signFormEl`,ref:A,model:M,rules:j,"label-position":`top`,"status-icon":``,class:`px-5`,onSubmit:_(F,[`prevent`])},{default:r(()=>[p(`div`,z,[b(o(T),{label:o(g)(`authModule.fields.firstName.title`),prop:`firstName`},{default:r(()=>[b(o(S),{modelValue:M.firstName,"onUpdate:modelValue":n[0]||=e=>M.firstName=e,placeholder:o(g)(`authModule.fields.firstName.placeholder`),name:`firstName`},null,8,[`modelValue`,`placeholder`])]),_:1},8,[`label`]),b(o(T),{label:o(g)(`authModule.fields.lastName.title`),prop:`lastName`},{default:r(()=>[b(o(S),{modelValue:M.lastName,"onUpdate:modelValue":n[1]||=e=>M.lastName=e,palceholder:o(g)(`authModule.fields.lastName.placeholder`),name:`lastName`},null,8,[`modelValue`,`palceholder`])]),_:1},8,[`label`])]),p(`div`,B,[b(o(T),{label:o(g)(`authModule.fields.email.title`),prop:`email`},{default:r(()=>[b(o(S),{modelValue:M.email,"onUpdate:modelValue":n[2]||=e=>M.email=e,palceholder:o(g)(`authModule.fields.email.placeholder`),name:`email`},null,8,[`modelValue`,`palceholder`])]),_:1},8,[`label`])]),p(`div`,V,[b(o(T),{label:o(g)(`authModule.fields.username.title`),prop:`username`},{default:r(()=>[b(o(S),{modelValue:M.username,"onUpdate:modelValue":n[3]||=e=>M.username=e,"show-password":``,name:`username`,type:`text`},null,8,[`modelValue`])]),_:1},8,[`label`])]),p(`div`,H,[b(o(T),{label:o(g)(`authModule.fields.password.title`),prop:`password`},{default:r(()=>[b(o(S),{modelValue:M.password,"onUpdate:modelValue":n[4]||=e=>M.password=e,"show-password":``,name:`password`,type:`password`},null,8,[`modelValue`])]),_:1},8,[`label`])]),b(o(f),{type:`primary`,size:`large`,class:`block w-full`,onClick:n[5]||=e=>F(A.value)},{default:r(()=>[s(m(o(g)(`authModule.buttons.signUp.title`)),1)]),_:1})]),_:1},8,[`model`,`rules`]),p(`div`,U,[b(o(f),{class:`block w-full`,onClick:n[6]||=e=>I()},{default:r(()=>[s(m(o(g)(`authModule.buttons.backToSignIn.title`)),1)]),_:1})])],64))}}),G={class:`flex flex-row justify-center items-center mt-4`},K=i({name:`UnlockForm`,__name:`unlock-form`,props:{remoteFormSubmit:{type:Boolean},remoteFormResult:{default:N.NONE},remoteFormReset:{type:Boolean,default:!1}},emits:[`update:remoteFormResult`,`update:remoteFormReset`,`signOut`],setup(t,{emit:i}){let c=t,h=i,{t:y}=u(),x=O(),E=C(),D=v(void 0),k=v(void 0),A=l({password:[{required:!0,message:y(`authModule.fields.password.validation.required`),trigger:`change`}]}),j=l({password:``}),M=async e=>{e&&await e.validate(async e=>{if(e){let e=E?.details.value?.username;if(!e){h(`update:remoteFormResult`,N.ERROR),x.error(y(`authModule.messages.requestError`));return}h(`update:remoteFormResult`,N.WORKING);try{await E.signIn({username:e,password:j.password})?h(`update:remoteFormResult`,N.OK):(h(`update:remoteFormResult`,N.ERROR),x.error(y(`authModule.messages.invalidPassword`)))}catch{h(`update:remoteFormResult`,N.ERROR),x.error(y(`authModule.messages.invalidPassword`))}}})},P=()=>{h(`signOut`)};return n(()=>{k.value?.focus()}),a(()=>c.remoteFormReset,e=>{if(h(`update:remoteFormReset`,!1),e){if(!D.value)return;D.value.resetFields()}}),(t,n)=>(e(),d(o(w),{ref_key:`unlockFormEl`,ref:D,model:j,rules:A,"label-position":`top`,"status-icon":``,class:`px-5`,onSubmit:_(M,[`prevent`])},{default:r(()=>[b(o(T),{label:o(y)(`authModule.fields.password.title`),prop:`password`,class:`mb-5`},{default:r(()=>[b(o(S),{ref_key:`passwordInputEl`,ref:k,modelValue:j.password,"onUpdate:modelValue":n[0]||=e=>j.password=e,type:`password`,name:`password`,"show-password":``,onKeyup:n[1]||=g(e=>M(D.value),[`enter`])},null,8,[`modelValue`])]),_:1},8,[`label`]),b(o(f),{type:`primary`,size:`large`,class:`block w-full mb-3`,onClick:n[2]||=e=>M(D.value)},{default:r(()=>[s(m(o(y)(`authModule.buttons.unlock.title`)),1)]),_:1}),p(`div`,G,[b(o(f),{type:`danger`,link:``,onClick:P},{default:r(()=>[s(m(o(y)(`authModule.buttons.signOut.title`)),1)]),_:1})])]),_:1},8,[`model`,`rules`]))}});export{I as a,L as i,W as n,R as r,K as t};
@@ -1 +1 @@
1
- import{mr as e}from"./icon-with-child-DmQ_XhQy.js";import{$t as t,T as n,ba as r}from"./common-eNbjMqa7.js";var i=()=>{let i=n().getStore(t),{profile:a}=r(i);return{profile:e(()=>a.value),isSignedIn:e(()=>i.isSignedIn())}};export{i as t};
1
+ import{mr as e}from"./icon-with-child-DmQ_XhQy.js";import{$t as t,T as n,ba as r}from"./common-1h7wnZKI.js";var i=()=>{let i=n().getStore(t),{profile:a}=r(i);return{profile:e(()=>a.value),isSignedIn:e(()=>i.isSignedIn())}};export{i as t};
@@ -1 +1 @@
1
- import"./chunk-DECur_0Z.js";import{Dr as e,Xr as t,_i as n,ci as r,d as i,fi as a,mr as o,n as s,ui as c}from"./icon-with-child-DmQ_XhQy.js";import{Fn as l,Gt as u,Ht as d,Jn as f,Jt as p,Kt as m,L as h,Lt as g,Nt as _,Pn as v,Qt as y,Rt as b,T as x,Un as S,Ur as C,Ut as w,Vn as T,Vt as E,Wn as D,Yt as O,Zt as k,_ as A,ba as j,f as M,kt as ee,l as te,m as N,pn as P,pr as F,qn as I,wn as ne,y as L,zn as re,zt as ie}from"./common-eNbjMqa7.js";import{t as ae}from"./keys-DWeeqbdi.js";import{a as R,i as z,n as oe}from"./useSpaces-CUEzfGD-.js";import{a as se}from"./keys-o2K4DVjh.js";var ce=e=>{let t=x().getStore(y),{data:n,semaphore:r}=j(t);return{space:o(()=>e.value?n.value[e.value]??null:null),fetching:o(()=>e.value?r.value.fetching.item.includes(e.value):!1),fetchSpace:async()=>e.value?t.get({id:e.value}):null,editSpace:async n=>{if(!e.value)throw Error(`Space ID is required`);return t.edit({id:e.value,data:n})},removeSpace:async()=>{if(!e.value)throw Error(`Space ID is required`);return t.remove({id:e.value})}}},le=D({search:I().optional(),type:f([T(d),re(`all`)]).default(`all`)}),B=D({name:I().min(1),description:I().nullable().optional(),category:f([T(E),T(w)]).nullable().optional(),icon:I().nullable().optional(),displayOrder:S().int().min(0).default(0),parentId:I().uuid().nullable().optional()}),ue=B.extend({id:I().uuid(),type:T(d).default(d.ROOM)}),de=B.extend({id:I().uuid(),type:T(d),suggestionsEnabled:l().default(!0),statusWidgets:v(oe).nullable().optional()}),V=ne(),H=({id:e})=>{let n=x().getStore(y),{t:o}=i(),s=A(),l=c(_.NONE),u=c(null),f,p=r({id:e,type:d.ROOM,name:``,description:null,category:null,icon:null,displayOrder:0,parentId:null}),m=N(a(p)),h=c(void 0),g=c(!1),v=async()=>{if(h.value.clearValidate(),!await h.value.validate())throw Error(`Form not valid`);let t=ue.safeParse(p);if(!t.success)throw Error(`Failed to validate create space model.`);l.value=_.WORKING;let r=o(`spacesModule.messages.notCreated`,{space:p.name});try{u.value=await n.add({id:e,data:{name:t.data.name,type:t.data.type,category:t.data.category??null,description:t.data.description??null,icon:t.data.icon??null,displayOrder:t.data.displayOrder,parentId:t.data.parentId??null}})}catch(e){throw l.value=_.ERROR,u.value=null,f=window.setTimeout(b,2e3),s.error(r),e}return l.value=_.OK,f=window.setTimeout(b,2e3),s.success(o(`spacesModule.messages.created`,{space:p.name})),`added`},b=()=>{window.clearTimeout(f),l.value=_.NONE,u.value=null};return t(p,()=>{g.value=!(0,V.isEqual)(a(p),m)}),{model:p,formEl:h,formChanged:g,submit:v,clear:b,formResult:l,createdSpace:u}};function fe(e){let t=e=>{let t=u(e);return e===d.ROOM?[...t].sort((e,t)=>e.localeCompare(t)):t},r=e=>{let t=m(e);return t&&t.length>0?t:null};return{getCategoryOptions:t,getCategoryGroups:r,getCategoryTemplates:e=>p(e),categoryOptions:o(()=>t(n(e)??d.ROOM)),categoryGroups:o(()=>r(n(e)??d.ROOM)),currentTemplates:o(()=>p(n(e)??d.ROOM))}}var pe=(e,t)=>{let n=x(),r=n.getStore(se),i=n.getStore(y),{semaphore:a,firstLoad:s}=j(r),l=c(!1);return{devices:o(()=>{if(!e.value||!t.value)return[];let n=r.findAll().filter(e=>!e.draft),i;return i=t.value===d.ROOM?n.filter(t=>t.roomId===e.value):n.filter(t=>t.zoneIds.includes(e.value)),i.sort((e,t)=>e.name.localeCompare(t.name))}),loading:o(()=>!!(l.value||a.value.fetching.items||!s.value)),firstLoadFinished:o(()=>s.value),fetchDevices:async()=>{await r.fetch()},addDevice:async n=>{if(!e.value||!t.value)throw Error(`Space ID and type are required`);l.value=!0;try{if(t.value===d.ROOM){let t=r.findById(n);if(!t)throw Error(`Device not found`);await r.edit({id:n,data:{type:t.type,roomId:e.value}})}else{let t=i.findById(e.value);if(t&&O(t.category))throw Error(`Cannot assign devices to floor zones. Floor membership is derived from room assignment.`);await r.addZone({id:n,zoneId:e.value})}}finally{l.value=!1}},removeDevice:async n=>{if(!e.value||!t.value)throw Error(`Space ID and type are required`);l.value=!0;try{if(t.value===d.ROOM){let e=r.findById(n);if(!e)throw Error(`Device not found`);await r.edit({id:n,data:{type:e.type,roomId:null}})}else await r.removeZone({id:n,zoneId:e.value})}finally{l.value=!1}},reassignDevice:async(e,t)=>{l.value=!0;try{let n=r.findById(e);if(!n)throw Error(`Device not found`);await r.edit({id:e,data:{type:n.type,roomId:t}})}finally{l.value=!1}}}},me=e=>{let t=x().getStore(ae),n=c(!1);return{displays:o(()=>e.value?t.findAll().filter(t=>t.roomId===e.value).sort((e,t)=>(e.name||e.macAddress).localeCompare(t.name||t.macAddress)):[]),loading:o(()=>n.value?!0:t.fetching()),fetchDisplays:async()=>{await t.fetch()},reassignDisplay:async(e,r)=>{n.value=!0;try{await t.edit({id:e,data:{roomId:r}})}finally{n.value=!1}},removeDisplay:async e=>{n.value=!0;try{await t.edit({id:e,data:{roomId:null}})}finally{n.value=!1}}}},he=({space:e})=>{let n=()=>`value`in e?e.value:e,o=n(),s=x().getStore(y),{t:l}=i(),u=A(),d=c(_.NONE),f,p=r({id:o.id,type:o.type,name:o.name,description:o.description,category:o.category,icon:o.icon,displayOrder:o.displayOrder,parentId:o.parentId,suggestionsEnabled:o.suggestionsEnabled,statusWidgets:o.statusWidgets?[...o.statusWidgets.map(e=>({...e,settings:{...e.settings}}))]:null}),m=N(a(p)),h=c(void 0),g=c(!1),v=async()=>{if(h.value.clearValidate(),!await h.value.validate())throw Error(`Form not valid`);let e=de.safeParse(p);if(!e.success)throw Error(`Failed to validate edit space model.`);d.value=_.WORKING;let t=l(`spacesModule.messages.notEdited`,{space:p.name});try{await s.edit({id:o.id,data:{name:e.data.name,type:e.data.type,category:e.data.category??null,description:e.data.description??null,icon:e.data.icon??null,displayOrder:e.data.displayOrder,parentId:e.data.parentId??null,suggestionsEnabled:e.data.suggestionsEnabled,statusWidgets:e.data.statusWidgets??null}})}catch(e){throw d.value=_.ERROR,f=window.setTimeout(b,2e3),u.error(t),e}return d.value=_.OK,f=window.setTimeout(b,2e3),g.value=!1,m=N(a(p)),`saved`},b=()=>{window.clearTimeout(f),d.value=_.NONE};return t(p,()=>{g.value=!(0,V.isEqual)(a(p),m)}),t(()=>n(),e=>{e&&(p.id=e.id,p.type=e.type,p.name=e.name,p.description=e.description,p.category=e.category,p.icon=e.icon,p.displayOrder=e.displayOrder,p.parentId=e.parentId,p.suggestionsEnabled=e.suggestionsEnabled,p.statusWidgets=e.statusWidgets?[...e.statusWidgets.map(e=>({...e,settings:{...e.settings}}))]:null,m=N(a(p)),g.value=!1)},{deep:!0}),{model:p,formEl:h,formChanged:g,submit:v,clear:b,formResult:d}},ge=e=>({propertyId:e.property_id??e.propertyId,dataType:e.data_type??e.dataType,format:e.format??null}),_e=e=>{let t=e.capabilities??{},n=e.links??{},r={};return(n.input_select||n.inputSelect)&&(r.inputSelect=ge(n.input_select??n.inputSelect)),{endpointId:e.endpoint_id,spaceId:e.space_id,deviceId:e.device_id,type:e.type,name:e.name,capabilities:{power:t.power??!1,volume:t.volume??!1,mute:t.mute??!1,playback:t.playback??!1,track:t.track??!1,inputSelect:t.input_select??!1,remoteCommands:t.remote_commands??!1},links:r}},U=e=>({id:e.id,spaceId:e.space_id,activityKey:e.activity_key,displayEndpointId:e.display_endpoint_id??null,audioEndpointId:e.audio_endpoint_id??null,sourceEndpointId:e.source_endpoint_id??null,remoteEndpointId:e.remote_endpoint_id??null,displayInputId:e.display_input_id??null,audioInputId:e.audio_input_id??null,sourceInputId:e.source_input_id??null,audioVolumePreset:e.audio_volume_preset??null,createdAt:e.created_at,updatedAt:e.updated_at??null}),W=e=>({stepIndex:e.step_index??e.stepIndex??0,critical:e.critical??!1,reason:e.reason??``,targetDeviceId:e.target_device_id??e.targetDeviceId,kind:e.kind,propertyId:e.property_id??e.propertyId,commandId:e.command_id??e.commandId,label:e.label,timestamp:e.timestamp}),G=e=>({displayDeviceId:e.display_device_id??e.displayDeviceId,audioDeviceId:e.audio_device_id??e.audioDeviceId,sourceDeviceId:e.source_device_id??e.sourceDeviceId,remoteDeviceId:e.remote_device_id??e.remoteDeviceId}),K=e=>({stepsTotal:e.steps_total??e.stepsTotal??0,stepsSucceeded:e.steps_succeeded??e.stepsSucceeded??0,stepsFailed:e.steps_failed??e.stepsFailed??0,failures:Array.isArray(e.failures)?e.failures.map(W):void 0,warnings:Array.isArray(e.warnings)?e.warnings.map(W):void 0,errors:Array.isArray(e.errors)?e.errors.map(W):void 0,warningCount:e.warning_count??e.warningCount??0,errorCount:e.error_count??e.errorCount??0}),ve=e=>{let t=e.action??{};return{targetDeviceId:e.target_device_id??e.targetDeviceId??``,action:{kind:t.kind??`unknown`,propertyId:t.property_id??t.propertyId,value:t.value},critical:e.critical??!1,label:e.label}},ye=e=>{let t=e.resolved,n=e.plan??[],r=e.warnings??[];return{spaceId:e.space_id??e.spaceId??``,activityKey:e.activity_key??e.activityKey??``,resolved:t?G(t):{},plan:n.map(ve),warnings:r.map(e=>({label:e.label??``}))}},q=e=>{let t=e.resolved,n=e.summary;return{activityKey:e.activity_key??null,state:e.state??`deactivated`,resolved:t?G(t):void 0,summary:n?K(n):void 0,warnings:e.warnings}},be=e=>{let t,n;if(e.resolved)try{t=G(typeof e.resolved==`string`?JSON.parse(e.resolved):e.resolved)}catch{}if(e.last_result)try{n=K(typeof e.last_result==`string`?JSON.parse(e.last_result):e.last_result)}catch{}return{activityKey:e.activity_key??null,state:e.state??`deactivated`,resolved:t,summary:n,warnings:e.warnings,activatedAt:e.activated_at??null,updatedAt:e.updated_at??null}},xe=e=>{switch(e){case`watch`:return`primary`;case`listen`:return`success`;case`gaming`:return`danger`;case`background`:return`info`;default:return`info`}},Se=e=>{switch(e){case`watch`:return`mdi:television-play`;case`listen`:return`mdi:music`;case`gaming`:return`mdi:controller`;case`background`:return`mdi:music-note`;default:return`mdi:help-circle`}},Ce=e=>{let t=L(),n=c([]),r=c([]),i=c(null),a=c(!1),l=c(!1),u=c(!1),d=c(!1),f=c(!1),p=c(!1),m=c(!1),h=c(null),g=c(null),_=c(null),v=c(!1),y=c(null),x=c(null),S=o(()=>n.value),C=o(()=>r.value),w=async()=>{if(!(!e.value||a.value)){a.value=!0,h.value=null;try{let{data:r,error:i}=await t.client.GET(`/${s}/${b}/spaces/{id}/media/endpoints`,{params:{path:{id:e.value}}});if(i||!r)throw Error(`Failed to fetch media endpoints`);n.value=((r.data??{}).endpoints??[]).map(_e)}catch(e){h.value=e instanceof Error?e.message:`Unknown error`}finally{a.value=!1}}},T=async()=>{if(!(!e.value||l.value)){l.value=!0,g.value=null;try{let{data:n,error:i}=await t.client.GET(`/${s}/${b}/spaces/{id}/media/bindings`,{params:{path:{id:e.value}}});if(i||!n)throw Error(`Failed to fetch media bindings`);r.value=(n.data??[]).map(U)}catch(e){g.value=e instanceof Error?e.message:`Unknown error`}finally{l.value=!1}}},E=async(n,i)=>{if(!e.value)throw Error(`Space ID is required`);p.value=!0,_.value=null;try{let{data:a,error:o}=await t.client.PATCH(`/${s}/${b}/spaces/{id}/media/bindings/{bindingId}`,{params:{path:{id:e.value,bindingId:n}},body:{data:{display_endpoint_id:i.displayEndpointId,audio_endpoint_id:i.audioEndpointId,source_endpoint_id:i.sourceEndpointId,remote_endpoint_id:i.remoteEndpointId,display_input_id:i.displayInputId,audio_input_id:i.audioInputId,source_input_id:i.sourceInputId,audio_volume_preset:i.audioVolumePreset}}});if(o||!a||!a.data){let e=o?.message??`Failed to save binding`;throw Error(e)}let c=U(a.data),l=r.value.findIndex(e=>e.id===c.id);return l>=0&&(r.value[l]=c),c}catch(e){throw _.value=e instanceof Error?e.message:`Unknown error`,e}finally{p.value=!1}},D=async(n,i)=>{if(!e.value)throw Error(`Space ID is required`);p.value=!0,_.value=null;try{let{data:a,error:o}=await t.client.POST(`/${s}/${b}/spaces/{id}/media/bindings`,{params:{path:{id:e.value}},body:{data:{activity_key:n,display_endpoint_id:i.displayEndpointId??void 0,audio_endpoint_id:i.audioEndpointId??void 0,source_endpoint_id:i.sourceEndpointId??void 0,remote_endpoint_id:i.remoteEndpointId??void 0,display_input_id:i.displayInputId??void 0,audio_input_id:i.audioInputId??void 0,source_input_id:i.sourceInputId??void 0,audio_volume_preset:i.audioVolumePreset??void 0}}});if(o||!a||!a.data){let e=o?.message??`Failed to create binding`;throw Error(e)}let c=U(a.data);return r.value.push(c),c}catch(e){throw _.value=e instanceof Error?e.message:`Unknown error`,e}finally{p.value=!1}},O=async n=>{if(!e.value)throw Error(`Space ID is required`);p.value=!0,_.value=null;try{let{error:i}=await t.client.DELETE(`/${s}/${b}/spaces/{id}/media/bindings/{bindingId}`,{params:{path:{id:e.value,bindingId:n}}});if(i){let e=i?.message??`Failed to delete binding`;throw Error(e)}r.value=r.value.filter(e=>e.id!==n)}catch(e){throw _.value=e instanceof Error?e.message:`Unknown error`,e}finally{p.value=!1}},k=async()=>{if(e.value){m.value=!0;try{let{data:n,error:i}=await t.client.POST(`/${s}/${b}/spaces/{id}/media/bindings/apply-defaults`,{params:{path:{id:e.value}}});if(i||!n)throw Error(`Failed to apply defaults`);r.value=(n.data??[]).map(U)}catch(e){throw g.value=e instanceof Error?e.message:`Unknown error`,e}finally{m.value=!1}}},A=async()=>{if(!(!e.value||u.value)){u.value=!0,y.value=null,x.value=null;try{let{data:n,error:r}=await t.client.GET(`/${s}/${b}/spaces/{id}/media/activities/active`,{params:{path:{id:e.value}}});if(r||!n)throw Error(`Failed to fetch active state`);let a=n.data;i.value=a?be(a):null}catch(e){y.value=e instanceof Error?e.message:`Unknown error`,x.value=`fetch`}finally{u.value=!1}}},j=async(e=3,t=1e3)=>{for(let n=0;n<e&&(await new Promise(e=>setTimeout(e,t)),await A(),!(i.value?.state===`active`||i.value?.state===`failed`||i.value?.state===`deactivated`));n++);};return{endpoints:S,bindings:C,activeState:i,fetchingEndpoints:a,fetchingBindings:l,fetchingActiveState:u,activating:d,deactivating:f,previewing:v,savingBinding:p,applyingDefaults:m,endpointsError:h,bindingsError:g,saveError:_,activationError:y,activationErrorSource:x,fetchEndpoints:w,fetchBindings:T,fetchActiveState:A,activate:async n=>{if(!e.value)throw Error(`Space ID is required`);d.value=!0,y.value=null,x.value=null,i.value={activityKey:n,state:`activating`};try{let{data:r,error:a}=await t.client.POST(`/${s}/${b}/spaces/{id}/media/activities/{activityKey}/activate`,{params:{path:{id:e.value,activityKey:n}}});if(a||!r||!r.data){let e=a?.message??`Failed to activate activity`;throw Error(e)}let o=q(r.data);return i.value=o,o.state===`activating`&&await j(),i.value??o}catch(e){throw y.value=e instanceof Error?e.message:`Unknown error`,x.value=`activate`,i.value={activityKey:n,state:`failed`},e}finally{d.value=!1}},preview:async n=>{if(!e.value)throw Error(`Space ID is required`);v.value=!0;try{let{data:r,error:i}=await t.client.POST(`/${s}/${b}/spaces/{id}/media/activities/{activityKey}/preview`,{params:{path:{id:e.value,activityKey:n}}});if(i||!r||!r.data){let e=i?.message??`Failed to preview activity`;throw Error(e)}return ye(r.data)}finally{v.value=!1}},deactivate:async()=>{if(!e.value)throw Error(`Space ID is required`);f.value=!0,y.value=null,x.value=null;try{let{data:n,error:r}=await t.client.POST(`/${s}/${b}/spaces/{id}/media/activities/deactivate`,{params:{path:{id:e.value}}});if(r||!n||!n.data){let e=r?.message??`Failed to deactivate`;throw Error(e)}let a=q(n.data);return i.value=a,a}catch(e){throw y.value=e instanceof Error?e.message:`Unknown error`,x.value=`deactivate`,e}finally{f.value=!1}},saveBinding:E,createBinding:D,deleteBinding:O,applyDefaults:k,endpointsByType:e=>o(()=>n.value.filter(t=>t.type===e)),findBindingByActivity:e=>r.value.find(t=>t.activityKey===e)}},J=Symbol(`FB-Module-Scenes-ScenesStore`),we=Symbol(`FB-Module-Scenes-ScenesActionsStore`),Y=e=>{let t=x().getStore(J),{semaphore:n,firstLoad:r}=j(t),i=c(!1);return{scenes:o(()=>e.value?t.findBySpace(e.value).filter(e=>!e.draft).sort((e,t)=>e.name.localeCompare(t.name)):[]),loading:o(()=>!!(i.value||n.value.fetching.items||!r.value)),firstLoadFinished:o(()=>r.value),fetchScenes:async()=>{await t.fetch()},reassignScene:async(e,n)=>{i.value=!0;try{await t.edit({id:e,data:{primarySpaceId:n}})}finally{i.value=!1}},removeScene:async e=>{i.value=!0;try{await t.edit({id:e,data:{primarySpaceId:null}})}finally{i.value=!1}}}},Te=()=>{let{t:e}=i(),t=A(),n=x().getStore(y);return{remove:async r=>{let i=n.findById(r);return i?C.confirm(e(`spacesModule.messages.confirmRemove`,{name:i.name}),e(`spacesModule.headings.removeSpace`),{confirmButtonText:e(`spacesModule.buttons.yes.title`),cancelButtonText:e(`spacesModule.buttons.no.title`),type:`warning`}).then(async()=>{try{return await n.remove({id:r}),t.success(e(`spacesModule.messages.removed`,{space:i.name})),!0}catch(e){return e instanceof R&&t.error(e.message),!1}}).catch(()=>(t.info(e(`spacesModule.messages.removeCanceled`,{space:i.name})),!1)):(t.error(e(`spacesModule.messages.notFound`)),!1)},bulkRemove:async r=>{if(r.length!==0)try{await C.confirm(e(`spacesModule.messages.confirmBulkRemove`,{count:r.length}),e(`spacesModule.headings.bulkRemoveSpace`),{confirmButtonText:e(`spacesModule.buttons.yes.title`),cancelButtonText:e(`spacesModule.buttons.no.title`),type:`warning`});let i=0,a=0;for(let e of r)try{await n.remove({id:e.id}),i++}catch{a++}i>0&&t.success(e(`spacesModule.messages.bulkRemoved`,{count:i})),a>0&&t.error(e(`spacesModule.messages.bulkRemoveFailed`,{count:a}))}catch{}}}},X={search:void 0,type:`all`},Ee={by:`name`,dir:`asc`},De=()=>{let e=x().getStore(y),{firstLoad:n,semaphore:r}=j(e),{filters:i,sort:a,pagination:s,reset:l}=M({key:`${g}:spaces:list`,filters:{schema:le,defaults:X},sort:{defaults:[Ee]},pagination:{defaults:{page:1,size:10}},syncQuery:!0,version:1}),u=o(()=>i.value.search!==X.search||!(0,V.isEqual)(i.value.type,X.type)),f=c(s.value.size||10),p=c(s.value.page||1),m=c(a.value.length>0?a.value[0]?.by:void 0),h=c(a.value.length>0?a.value[0]?.dir??null:null),_=o(()=>P(e.findAll().filter(e=>!e.draft&&(!i.value.search||e.id.toLowerCase().includes(i.value.search.toLowerCase())||e.name?.toLowerCase().includes(i.value.search.toLowerCase())||e.description?.toLowerCase().includes(i.value.search.toLowerCase()))&&(i.value.type===`all`||i.value.type===d.ROOM&&e.type===d.ROOM||i.value.type===d.ZONE&&e.type===d.ZONE)),[e=>{switch(m.value){case`name`:return e.name;case`type`:return e.type;case`displayOrder`:return e.displayOrder;default:return e.displayOrder}}],[h.value??`asc`])),v=o(()=>{let e=(p.value-1)*f.value,t=e+f.value;return _.value.slice(e,t)}),b=async()=>{await e.fetch()},S=o(()=>!!(r.value.fetching.items||!n.value)),C=o(()=>n.value),w=o(()=>e.findAll().filter(e=>!e.draft).length);return t(()=>s.value,e=>{p.value=e.page??1,f.value=e.size??10},{deep:!0}),t(()=>p.value,e=>{s.value.page=e}),t(()=>f.value,e=>{s.value.size=e}),t(()=>h.value,e=>{m.value===void 0||e===null?a.value=[]:a.value=[{by:m.value,dir:e}]}),t(()=>m.value,e=>{e===void 0?a.value=[]:a.value=[{by:e,dir:h.value}]}),{spaces:_,spacesPaginated:v,totalRows:w,areLoading:S,loaded:C,fetchSpaces:b,filters:i,filtersActive:u,paginateSize:f,paginatePage:p,sortBy:m,sortDir:h,resetFilter:l}};function Z(e){return e.trim().toLowerCase().replace(/[-_]/g,` `).replace(/\s+/g,` `).normalize(`NFD`).replace(/[\u0300-\u036f]/g,``)}var Oe=e=>{switch(e){case F.room:return d.ROOM;case F.zone:return d.ZONE;default:return d.ROOM}},Q=e=>{switch(e){case d.ROOM:return F.room;case d.ZONE:return F.zone;default:return F.room}},ke=e=>e||null,$=e=>{if(e)return e},Ae=()=>{let e=h(),{generate:t}=te(),n=r({currentStep:0,existingSpaces:[],spaces:[],proposedSpaces:[],customSpaces:[],matchedSpaces:[],deviceAssignments:{},displayAssignments:{},zoneAssignments:{},showAdvancedZones:!1,isLoading:!1,error:null}),i=o(()=>n.isLoading),a=o(()=>n.error),s=o(()=>n.currentStep),c=o(()=>n.existingSpaces),l=o(()=>n.spaces),u=o(()=>n.proposedSpaces),f=o(()=>n.customSpaces),p=o(()=>n.matchedSpaces),m=o(()=>n.deviceAssignments),g=o(()=>n.displayAssignments),_=o(()=>n.zoneAssignments),v=o({get:()=>n.showAdvancedZones,set:e=>{n.showAdvancedZones=e}}),y=o(()=>x.value.filter(e=>e.type===d.ZONE&&e.category&&ee.includes(e.category))),b=o(()=>n.proposedSpaces.filter(e=>!n.matchedSpaces.some(t=>Z(t.proposedName)===Z(e.name)))),x=o(()=>{let e=new Map;for(let t of n.existingSpaces)e.set(t.id,t);for(let t of n.spaces)e.set(t.id,t);return Array.from(e.values())}),S=async()=>{n.isLoading=!0,n.error=null;try{let r=await e.GET(`/modules/spaces/spaces/propose`);if(r.error||!r.data?.data)throw new R(`Failed to fetch proposed spaces`);let i=r.data.data.map(e=>{let n=ke(e.category),r=n?ie[n]:null,i=r?.description??null,a=r?.icon??null,o=e.name??``;return{name:o,description:i,icon:a,deviceIds:e.device_ids??[],deviceCount:e.device_count??0,selected:!0,type:e.type?Oe(e.type):d.ROOM,category:n,draftId:t(),editing:!1,editName:o}});n.matchedSpaces=[];let a=[];for(let e of i){let t=Z(e.name),r=n.existingSpaces.find(e=>Z(e.name)===t);r?n.matchedSpaces.push({proposedName:e.name,existingSpace:r,deviceIds:e.deviceIds,deviceCount:e.deviceCount}):a.push(e)}n.proposedSpaces=a}catch(e){throw n.error=e instanceof Error?e.message:`Unknown error`,e}finally{n.isLoading=!1}},C=()=>{let e=[],t=n.proposedSpaces.filter(e=>e.selected),r=n.customSpaces.filter(e=>e.selected);for(let e of n.matchedSpaces)if(e.existingSpace.type===d.ROOM)for(let t of e.deviceIds)n.deviceAssignments[t]||(n.deviceAssignments[t]=e.existingSpace.id);for(let r of t){let t=n.spaces.find(e=>e.id===r.draftId);if(t){if(r.type===d.ROOM)for(let e of r.deviceIds)n.deviceAssignments[e]||(n.deviceAssignments[e]=t.id);continue}let i={id:r.draftId,name:r.name,description:r.description,type:r.type,category:r.category,icon:r.icon,displayOrder:0,parentId:null,suggestionsEnabled:!0,statusWidgets:null,createdAt:new Date,updatedAt:null,draft:!0};if(n.spaces=[...n.spaces,i],e.push(i),r.type===d.ROOM)for(let e of r.deviceIds)n.deviceAssignments[e]=i.id}for(let t of r){if(n.spaces.find(e=>e.id===t.draftId))continue;let r={id:t.draftId,name:t.name,description:t.description,type:t.type,category:t.category,icon:t.icon,displayOrder:0,parentId:null,suggestionsEnabled:!0,statusWidgets:null,createdAt:new Date,updatedAt:null,draft:!0};n.spaces=[...n.spaces,r],e.push(r)}return e},w=async()=>{n.isLoading=!0,n.error=null;let t=[];try{let r=n.spaces.filter(e=>e.draft),i=new Set(n.proposedSpaces.filter(e=>e.selected).map(e=>e.name)),a=new Set(n.customSpaces.map(e=>e.name)),o=new Set([...Object.values(n.deviceAssignments),...Object.values(n.displayAssignments)].filter(e=>e!==null));for(let s of r){let r=i.has(s.name),c=a.has(s.name),l=o.has(s.id);if(!r&&!c&&!l){n.spaces=n.spaces.filter(e=>e.id!==s.id);continue}let u=await e.POST(`/modules/spaces/spaces`,{body:{data:{name:s.name,description:s.description,icon:s.icon,type:Q(s.type),category:$(s.category)}}});if(u.error||!u.data?.data)throw new R(`Failed to create space: ${s.name}`);let d=z(u.data.data);for(let[e,t]of Object.entries(n.deviceAssignments))t===s.id&&(n.deviceAssignments[e]=d.id);for(let[e,t]of Object.entries(n.displayAssignments))t===s.id&&(n.displayAssignments[e]=d.id);for(let[e,t]of Object.entries(n.zoneAssignments))n.zoneAssignments[e]=t.map(e=>e===s.id?d.id:e);let f=n.spaces.findIndex(e=>e.id===s.id);f===-1?n.spaces=[...n.spaces,d]:n.spaces[f]=d,t.push(d)}return t}catch(e){throw n.error=e instanceof Error?e.message:`Unknown error`,e}finally{n.isLoading=!1}},T=async t=>{n.isLoading=!0,n.error=null;try{let r=await e.POST(`/modules/spaces/spaces`,{body:{data:{name:t.name,description:t.description,type:Q(t.type),category:$(t.category),icon:t.icon,display_order:t.displayOrder}}});if(r.error||!r.data?.data)throw new R(`Failed to create space`);let i=z(r.data.data);return n.spaces.push(i),i}catch(e){throw n.error=e instanceof Error?e.message:`Unknown error`,e}finally{n.isLoading=!1}},E=(e,t)=>{n.deviceAssignments[e]=t},D=(e,t)=>{n.displayAssignments[e]=t},O=async()=>{n.isLoading=!0,n.error=null;let t=0,r=0,i=0;try{let a={};for(let[e,t]of Object.entries(n.deviceAssignments))t&&(a[t]||(a[t]={deviceIds:[],displayIds:[]}),a[t].deviceIds.push(e));for(let[e,t]of Object.entries(n.displayAssignments))t&&(a[t]||(a[t]={deviceIds:[],displayIds:[]}),a[t].displayIds.push(e));for(let[n,i]of Object.entries(a)){let a=await e.POST(`/modules/spaces/spaces/{id}/assign`,{params:{path:{id:n}},body:{data:{device_ids:i.deviceIds,display_ids:i.displayIds}}});if(a.error)throw new R(`Failed to assign items to space ${n}`);a.data?.data&&(t+=a.data.data.devices_assigned??0,r+=a.data.data.displays_assigned??0)}for(let[t,r]of Object.entries(n.zoneAssignments))for(let n of r){if((await e.POST(`/modules/devices/devices/{id}/zones/{zoneId}`,{params:{path:{id:t,zoneId:n}}})).error)throw new R(`Failed to assign device ${t} to zone ${n}`);i++}return{devicesAssigned:t,displaysAssigned:r,zonesAssigned:i}}catch(e){throw n.error=e instanceof Error?e.message:`Unknown error`,e}finally{n.isLoading=!1}},k=e=>{n.currentStep=e},A=()=>{n.currentStep++},j=()=>{n.currentStep>0&&n.currentStep--},M=e=>{for(let[t,r]of Object.entries(n.deviceAssignments))r===e&&(n.deviceAssignments[t]=null);for(let[t,r]of Object.entries(n.displayAssignments))r===e&&(n.displayAssignments[t]=null)},N=e=>{let t=n.proposedSpaces[e];t&&(t.selected=!t.selected,t.selected||(n.spaces=n.spaces.filter(e=>e.id!==t.draftId),M(t.draftId)))},P=e=>{let t=n.customSpaces[e];t&&(t.selected=!t.selected,t.selected||(n.spaces=n.spaces.filter(e=>e.id!==t.draftId),M(t.draftId)))},F=e=>{let t=Z(e),r=n.existingSpaces.find(e=>Z(e.name)===t);if(r)return r.name;let i=n.proposedSpaces.find(e=>Z(e.name)===t);if(i)return i.name;let a=n.customSpaces.find(e=>Z(e.name)===t);return a?a.name:null};return{isLoading:i,error:a,currentStep:s,existingSpaces:c,spaces:l,proposedSpaces:u,customSpaces:f,matchedSpaces:p,unmatchedProposals:b,availableSpaces:x,deviceAssignments:m,displayAssignments:g,zoneAssignments:_,showAdvancedZones:v,assignableZones:y,fetchProposedSpaces:S,fetchDevices:async()=>{n.isLoading=!0,n.error=null;try{let t=await e.GET(`/modules/devices/devices`);if(t.error||!t.data?.data)throw new R(`Failed to fetch devices`);return t.data.data.map(e=>({id:e.id,name:e.name,description:e.description??null,spaceId:e.room_id??null}))}catch(e){throw n.error=e instanceof Error?e.message:`Unknown error`,e}finally{n.isLoading=!1}},fetchDisplays:async()=>{n.isLoading=!0,n.error=null;try{let t=await e.GET(`/modules/displays/displays`);if(t.error||!t.data?.data)throw new R(`Failed to fetch displays`);return t.data.data.map(e=>({id:e.id,name:e.name??null,macAddress:e.mac_address??``,role:e.role??`room`,roomId:e.room_id??null}))}catch(e){throw n.error=e instanceof Error?e.message:`Unknown error`,e}finally{n.isLoading=!1}},fetchExistingSpaces:async()=>{n.isLoading=!0,n.error=null;try{let t=await e.GET(`/modules/spaces/spaces`);if(t.error||!t.data?.data)throw new R(`Failed to fetch spaces`);let r=t.data.data.map(e=>z(e));return n.existingSpaces=r,r}catch(e){throw n.error=e instanceof Error?e.message:`Unknown error`,e}finally{n.isLoading=!1}},createDraftSpacesFromProposals:C,createSpacesFromProposals:w,createSpace:T,setDeviceAssignment:E,setDisplayAssignment:D,setDeviceZones:(e,t)=>{n.zoneAssignments[e]=t},applyAssignments:O,setStep:k,nextStep:A,prevStep:j,toggleProposedSpace:N,toggleCustomSpace:P,addManualSpace:e=>{let r=F(e);return r?{success:!1,duplicateOf:r}:(n.customSpaces.push({name:e,description:null,icon:null,selected:!0,type:d.ROOM,category:null,draftId:t(),editing:!1,editName:e}),{success:!0})},checkDuplicateSpaceName:F,removeProposedSpace:e=>{let t=n.proposedSpaces[e];t&&(n.spaces=n.spaces.filter(e=>e.id!==t.draftId),M(t.draftId)),n.proposedSpaces.splice(e,1)},removeCustomSpace:e=>{let t=n.customSpaces[e];t&&(n.spaces=n.spaces.filter(e=>e.id!==t.draftId),M(t.draftId)),n.customSpaces.splice(e,1)},startEditingProposedName:e=>{let t=n.proposedSpaces[e];t&&(t.editing=!0,t.editName=t.name)},confirmProposedNameEdit:e=>{let t=n.proposedSpaces[e];if(!t)return{success:!1};let r=t.editName.trim();if(!r)return t.editing=!1,t.editName=t.name,{success:!1};if(r===t.name)return t.editing=!1,{success:!0};let i=Z(r),a=n.existingSpaces.find(e=>Z(e.name)===i);if(a)return n.matchedSpaces.push({proposedName:r,existingSpace:a,deviceIds:t.deviceIds,deviceCount:t.deviceCount}),n.proposedSpaces.splice(e,1),{success:!0,convertedToMatch:!0};let o=n.proposedSpaces.find((t,n)=>n!==e&&Z(t.name)===i);if(o)return t.editing=!1,t.editName=t.name,{success:!1,duplicateOf:o.name};let s=n.customSpaces.find(e=>Z(e.name)===i);if(s)return t.editing=!1,t.editName=t.name,{success:!1,duplicateOf:s.name};t.name=r,t.editing=!1;let c=n.spaces.find(e=>e.id===t.draftId);return c&&(c.name=r),{success:!0}},discardProposedNameEdit:e=>{let t=n.proposedSpaces[e];t&&(t.editing=!1,t.editName=t.name)},startEditingCustomName:e=>{let t=n.customSpaces[e];t&&(t.editing=!0,t.editName=t.name)},confirmCustomNameEdit:e=>{let t=n.customSpaces[e];if(!t)return{success:!1};let r=t.editName.trim();if(!r)return t.editing=!1,t.editName=t.name,{success:!1};if(r===t.name)return t.editing=!1,{success:!0};let i=Z(r),a=n.existingSpaces.find(e=>Z(e.name)===i);if(a)return n.matchedSpaces.push({proposedName:r,existingSpace:a,deviceIds:[],deviceCount:0}),n.customSpaces.splice(e,1),{success:!0,convertedToMatch:!0};let o=n.proposedSpaces.find(e=>Z(e.name)===i);if(o)return t.editing=!1,t.editName=t.name,{success:!1,duplicateOf:o.name};let s=n.customSpaces.find((t,n)=>n!==e&&Z(t.name)===i);if(s)return t.editing=!1,t.editName=t.name,{success:!1,duplicateOf:s.name};t.name=r,t.editing=!1;let c=n.spaces.find(e=>e.id===t.draftId);return c&&(c.name=r),{success:!0}},discardCustomNameEdit:e=>{let t=n.customSpaces[e];t&&(t.editing=!1,t.editName=t.name)},initializeFromExistingSpaces:e=>{n.existingSpaces=[...e]},initializeDeviceAssignments:e=>{for(let t of e)n.deviceAssignments[t.id]=t.spaceId??null},initializeDisplayAssignments:e=>{for(let t of e)n.displayAssignments[t.id]=t.roomId??null},summary:o(()=>{let e=n.existingSpaces.length+n.spaces.length,t=Object.values(n.deviceAssignments).filter(e=>e!==null).length,r=Object.values(n.displayAssignments).filter(e=>e!==null).length,i=Object.values(n.deviceAssignments).filter(e=>e===null).length,a=Object.values(n.displayAssignments).filter(e=>e===null).length,o={},s={};for(let e of Object.values(n.deviceAssignments))e&&(o[e]=(o[e]??0)+1);for(let e of Object.values(n.zoneAssignments))for(let t of e)o[t]=(o[t]??0)+1;for(let e of Object.values(n.displayAssignments))e&&(s[e]=(s[e]??0)+1);return{spaceCount:e,assignedDevices:t,assignedDisplays:r,unassignedDevices:i,unassignedDisplays:a,devicesBySpace:o,displaysBySpace:s}})}},je=()=>{let t=e(k);return{climateSignal:t?.climate,lightingSignal:t?.lighting,coversSignal:t?.covers,sensorSignal:t?.sensor,climateStateSignal:t?.climateState,lightingStateSignal:t?.lightingState,coversStateSignal:t?.coversState,sensorStateSignal:t?.sensorState}};export{Y as a,xe as c,he as d,me as f,ce as g,H as h,Te as i,Se as l,fe as m,Ae as n,we as o,pe as p,De as r,J as s,je as t,Ce as u};
1
+ import"./chunk-DECur_0Z.js";import{Dr as e,Xr as t,_i as n,ci as r,d as i,fi as a,mr as o,n as s,ui as c}from"./icon-with-child-DmQ_XhQy.js";import{Fn as l,Gt as u,Ht as d,Jn as f,Jt as p,Kt as m,L as h,Lt as g,Nt as _,Pn as v,Qt as y,Rt as b,T as x,Un as S,Ur as C,Ut as w,Vn as T,Vt as E,Wn as D,Yt as O,Zt as k,_ as A,ba as j,f as M,kt as ee,l as te,m as N,pn as P,pr as F,qn as I,wn as ne,y as L,zn as re,zt as ie}from"./common-1h7wnZKI.js";import{t as ae}from"./keys-DWeeqbdi.js";import{a as R,i as z,n as oe}from"./useSpaces-C12q9q5Q.js";import{a as se}from"./keys-o2K4DVjh.js";var ce=e=>{let t=x().getStore(y),{data:n,semaphore:r}=j(t);return{space:o(()=>e.value?n.value[e.value]??null:null),fetching:o(()=>e.value?r.value.fetching.item.includes(e.value):!1),fetchSpace:async()=>e.value?t.get({id:e.value}):null,editSpace:async n=>{if(!e.value)throw Error(`Space ID is required`);return t.edit({id:e.value,data:n})},removeSpace:async()=>{if(!e.value)throw Error(`Space ID is required`);return t.remove({id:e.value})}}},le=D({search:I().optional(),type:f([T(d),re(`all`)]).default(`all`)}),B=D({name:I().min(1),description:I().nullable().optional(),category:f([T(E),T(w)]).nullable().optional(),icon:I().nullable().optional(),displayOrder:S().int().min(0).default(0),parentId:I().uuid().nullable().optional()}),ue=B.extend({id:I().uuid(),type:T(d).default(d.ROOM)}),de=B.extend({id:I().uuid(),type:T(d),suggestionsEnabled:l().default(!0),statusWidgets:v(oe).nullable().optional()}),V=ne(),H=({id:e})=>{let n=x().getStore(y),{t:o}=i(),s=A(),l=c(_.NONE),u=c(null),f,p=r({id:e,type:d.ROOM,name:``,description:null,category:null,icon:null,displayOrder:0,parentId:null}),m=N(a(p)),h=c(void 0),g=c(!1),v=async()=>{if(h.value.clearValidate(),!await h.value.validate())throw Error(`Form not valid`);let t=ue.safeParse(p);if(!t.success)throw Error(`Failed to validate create space model.`);l.value=_.WORKING;let r=o(`spacesModule.messages.notCreated`,{space:p.name});try{u.value=await n.add({id:e,data:{name:t.data.name,type:t.data.type,category:t.data.category??null,description:t.data.description??null,icon:t.data.icon??null,displayOrder:t.data.displayOrder,parentId:t.data.parentId??null}})}catch(e){throw l.value=_.ERROR,u.value=null,f=window.setTimeout(b,2e3),s.error(r),e}return l.value=_.OK,f=window.setTimeout(b,2e3),s.success(o(`spacesModule.messages.created`,{space:p.name})),`added`},b=()=>{window.clearTimeout(f),l.value=_.NONE,u.value=null};return t(p,()=>{g.value=!(0,V.isEqual)(a(p),m)}),{model:p,formEl:h,formChanged:g,submit:v,clear:b,formResult:l,createdSpace:u}};function fe(e){let t=e=>{let t=u(e);return e===d.ROOM?[...t].sort((e,t)=>e.localeCompare(t)):t},r=e=>{let t=m(e);return t&&t.length>0?t:null};return{getCategoryOptions:t,getCategoryGroups:r,getCategoryTemplates:e=>p(e),categoryOptions:o(()=>t(n(e)??d.ROOM)),categoryGroups:o(()=>r(n(e)??d.ROOM)),currentTemplates:o(()=>p(n(e)??d.ROOM))}}var pe=(e,t)=>{let n=x(),r=n.getStore(se),i=n.getStore(y),{semaphore:a,firstLoad:s}=j(r),l=c(!1);return{devices:o(()=>{if(!e.value||!t.value)return[];let n=r.findAll().filter(e=>!e.draft),i;return i=t.value===d.ROOM?n.filter(t=>t.roomId===e.value):n.filter(t=>t.zoneIds.includes(e.value)),i.sort((e,t)=>e.name.localeCompare(t.name))}),loading:o(()=>!!(l.value||a.value.fetching.items||!s.value)),firstLoadFinished:o(()=>s.value),fetchDevices:async()=>{await r.fetch()},addDevice:async n=>{if(!e.value||!t.value)throw Error(`Space ID and type are required`);l.value=!0;try{if(t.value===d.ROOM){let t=r.findById(n);if(!t)throw Error(`Device not found`);await r.edit({id:n,data:{type:t.type,roomId:e.value}})}else{let t=i.findById(e.value);if(t&&O(t.category))throw Error(`Cannot assign devices to floor zones. Floor membership is derived from room assignment.`);await r.addZone({id:n,zoneId:e.value})}}finally{l.value=!1}},removeDevice:async n=>{if(!e.value||!t.value)throw Error(`Space ID and type are required`);l.value=!0;try{if(t.value===d.ROOM){let e=r.findById(n);if(!e)throw Error(`Device not found`);await r.edit({id:n,data:{type:e.type,roomId:null}})}else await r.removeZone({id:n,zoneId:e.value})}finally{l.value=!1}},reassignDevice:async(e,t)=>{l.value=!0;try{let n=r.findById(e);if(!n)throw Error(`Device not found`);await r.edit({id:e,data:{type:n.type,roomId:t}})}finally{l.value=!1}}}},me=e=>{let t=x().getStore(ae),n=c(!1);return{displays:o(()=>e.value?t.findAll().filter(t=>t.roomId===e.value).sort((e,t)=>(e.name||e.macAddress).localeCompare(t.name||t.macAddress)):[]),loading:o(()=>n.value?!0:t.fetching()),fetchDisplays:async()=>{await t.fetch()},reassignDisplay:async(e,r)=>{n.value=!0;try{await t.edit({id:e,data:{roomId:r}})}finally{n.value=!1}},removeDisplay:async e=>{n.value=!0;try{await t.edit({id:e,data:{roomId:null}})}finally{n.value=!1}}}},he=({space:e})=>{let n=()=>`value`in e?e.value:e,o=n(),s=x().getStore(y),{t:l}=i(),u=A(),d=c(_.NONE),f,p=r({id:o.id,type:o.type,name:o.name,description:o.description,category:o.category,icon:o.icon,displayOrder:o.displayOrder,parentId:o.parentId,suggestionsEnabled:o.suggestionsEnabled,statusWidgets:o.statusWidgets?[...o.statusWidgets.map(e=>({...e,settings:{...e.settings}}))]:null}),m=N(a(p)),h=c(void 0),g=c(!1),v=async()=>{if(h.value.clearValidate(),!await h.value.validate())throw Error(`Form not valid`);let e=de.safeParse(p);if(!e.success)throw Error(`Failed to validate edit space model.`);d.value=_.WORKING;let t=l(`spacesModule.messages.notEdited`,{space:p.name});try{await s.edit({id:o.id,data:{name:e.data.name,type:e.data.type,category:e.data.category??null,description:e.data.description??null,icon:e.data.icon??null,displayOrder:e.data.displayOrder,parentId:e.data.parentId??null,suggestionsEnabled:e.data.suggestionsEnabled,statusWidgets:e.data.statusWidgets??null}})}catch(e){throw d.value=_.ERROR,f=window.setTimeout(b,2e3),u.error(t),e}return d.value=_.OK,f=window.setTimeout(b,2e3),g.value=!1,m=N(a(p)),`saved`},b=()=>{window.clearTimeout(f),d.value=_.NONE};return t(p,()=>{g.value=!(0,V.isEqual)(a(p),m)}),t(()=>n(),e=>{e&&(p.id=e.id,p.type=e.type,p.name=e.name,p.description=e.description,p.category=e.category,p.icon=e.icon,p.displayOrder=e.displayOrder,p.parentId=e.parentId,p.suggestionsEnabled=e.suggestionsEnabled,p.statusWidgets=e.statusWidgets?[...e.statusWidgets.map(e=>({...e,settings:{...e.settings}}))]:null,m=N(a(p)),g.value=!1)},{deep:!0}),{model:p,formEl:h,formChanged:g,submit:v,clear:b,formResult:d}},ge=e=>({propertyId:e.property_id??e.propertyId,dataType:e.data_type??e.dataType,format:e.format??null}),_e=e=>{let t=e.capabilities??{},n=e.links??{},r={};return(n.input_select||n.inputSelect)&&(r.inputSelect=ge(n.input_select??n.inputSelect)),{endpointId:e.endpoint_id,spaceId:e.space_id,deviceId:e.device_id,type:e.type,name:e.name,capabilities:{power:t.power??!1,volume:t.volume??!1,mute:t.mute??!1,playback:t.playback??!1,track:t.track??!1,inputSelect:t.input_select??!1,remoteCommands:t.remote_commands??!1},links:r}},U=e=>({id:e.id,spaceId:e.space_id,activityKey:e.activity_key,displayEndpointId:e.display_endpoint_id??null,audioEndpointId:e.audio_endpoint_id??null,sourceEndpointId:e.source_endpoint_id??null,remoteEndpointId:e.remote_endpoint_id??null,displayInputId:e.display_input_id??null,audioInputId:e.audio_input_id??null,sourceInputId:e.source_input_id??null,audioVolumePreset:e.audio_volume_preset??null,createdAt:e.created_at,updatedAt:e.updated_at??null}),W=e=>({stepIndex:e.step_index??e.stepIndex??0,critical:e.critical??!1,reason:e.reason??``,targetDeviceId:e.target_device_id??e.targetDeviceId,kind:e.kind,propertyId:e.property_id??e.propertyId,commandId:e.command_id??e.commandId,label:e.label,timestamp:e.timestamp}),G=e=>({displayDeviceId:e.display_device_id??e.displayDeviceId,audioDeviceId:e.audio_device_id??e.audioDeviceId,sourceDeviceId:e.source_device_id??e.sourceDeviceId,remoteDeviceId:e.remote_device_id??e.remoteDeviceId}),K=e=>({stepsTotal:e.steps_total??e.stepsTotal??0,stepsSucceeded:e.steps_succeeded??e.stepsSucceeded??0,stepsFailed:e.steps_failed??e.stepsFailed??0,failures:Array.isArray(e.failures)?e.failures.map(W):void 0,warnings:Array.isArray(e.warnings)?e.warnings.map(W):void 0,errors:Array.isArray(e.errors)?e.errors.map(W):void 0,warningCount:e.warning_count??e.warningCount??0,errorCount:e.error_count??e.errorCount??0}),ve=e=>{let t=e.action??{};return{targetDeviceId:e.target_device_id??e.targetDeviceId??``,action:{kind:t.kind??`unknown`,propertyId:t.property_id??t.propertyId,value:t.value},critical:e.critical??!1,label:e.label}},ye=e=>{let t=e.resolved,n=e.plan??[],r=e.warnings??[];return{spaceId:e.space_id??e.spaceId??``,activityKey:e.activity_key??e.activityKey??``,resolved:t?G(t):{},plan:n.map(ve),warnings:r.map(e=>({label:e.label??``}))}},q=e=>{let t=e.resolved,n=e.summary;return{activityKey:e.activity_key??null,state:e.state??`deactivated`,resolved:t?G(t):void 0,summary:n?K(n):void 0,warnings:e.warnings}},be=e=>{let t,n;if(e.resolved)try{t=G(typeof e.resolved==`string`?JSON.parse(e.resolved):e.resolved)}catch{}if(e.last_result)try{n=K(typeof e.last_result==`string`?JSON.parse(e.last_result):e.last_result)}catch{}return{activityKey:e.activity_key??null,state:e.state??`deactivated`,resolved:t,summary:n,warnings:e.warnings,activatedAt:e.activated_at??null,updatedAt:e.updated_at??null}},xe=e=>{switch(e){case`watch`:return`primary`;case`listen`:return`success`;case`gaming`:return`danger`;case`background`:return`info`;default:return`info`}},Se=e=>{switch(e){case`watch`:return`mdi:television-play`;case`listen`:return`mdi:music`;case`gaming`:return`mdi:controller`;case`background`:return`mdi:music-note`;default:return`mdi:help-circle`}},Ce=e=>{let t=L(),n=c([]),r=c([]),i=c(null),a=c(!1),l=c(!1),u=c(!1),d=c(!1),f=c(!1),p=c(!1),m=c(!1),h=c(null),g=c(null),_=c(null),v=c(!1),y=c(null),x=c(null),S=o(()=>n.value),C=o(()=>r.value),w=async()=>{if(!(!e.value||a.value)){a.value=!0,h.value=null;try{let{data:r,error:i}=await t.client.GET(`/${s}/${b}/spaces/{id}/media/endpoints`,{params:{path:{id:e.value}}});if(i||!r)throw Error(`Failed to fetch media endpoints`);n.value=((r.data??{}).endpoints??[]).map(_e)}catch(e){h.value=e instanceof Error?e.message:`Unknown error`}finally{a.value=!1}}},T=async()=>{if(!(!e.value||l.value)){l.value=!0,g.value=null;try{let{data:n,error:i}=await t.client.GET(`/${s}/${b}/spaces/{id}/media/bindings`,{params:{path:{id:e.value}}});if(i||!n)throw Error(`Failed to fetch media bindings`);r.value=(n.data??[]).map(U)}catch(e){g.value=e instanceof Error?e.message:`Unknown error`}finally{l.value=!1}}},E=async(n,i)=>{if(!e.value)throw Error(`Space ID is required`);p.value=!0,_.value=null;try{let{data:a,error:o}=await t.client.PATCH(`/${s}/${b}/spaces/{id}/media/bindings/{bindingId}`,{params:{path:{id:e.value,bindingId:n}},body:{data:{display_endpoint_id:i.displayEndpointId,audio_endpoint_id:i.audioEndpointId,source_endpoint_id:i.sourceEndpointId,remote_endpoint_id:i.remoteEndpointId,display_input_id:i.displayInputId,audio_input_id:i.audioInputId,source_input_id:i.sourceInputId,audio_volume_preset:i.audioVolumePreset}}});if(o||!a||!a.data){let e=o?.message??`Failed to save binding`;throw Error(e)}let c=U(a.data),l=r.value.findIndex(e=>e.id===c.id);return l>=0&&(r.value[l]=c),c}catch(e){throw _.value=e instanceof Error?e.message:`Unknown error`,e}finally{p.value=!1}},D=async(n,i)=>{if(!e.value)throw Error(`Space ID is required`);p.value=!0,_.value=null;try{let{data:a,error:o}=await t.client.POST(`/${s}/${b}/spaces/{id}/media/bindings`,{params:{path:{id:e.value}},body:{data:{activity_key:n,display_endpoint_id:i.displayEndpointId??void 0,audio_endpoint_id:i.audioEndpointId??void 0,source_endpoint_id:i.sourceEndpointId??void 0,remote_endpoint_id:i.remoteEndpointId??void 0,display_input_id:i.displayInputId??void 0,audio_input_id:i.audioInputId??void 0,source_input_id:i.sourceInputId??void 0,audio_volume_preset:i.audioVolumePreset??void 0}}});if(o||!a||!a.data){let e=o?.message??`Failed to create binding`;throw Error(e)}let c=U(a.data);return r.value.push(c),c}catch(e){throw _.value=e instanceof Error?e.message:`Unknown error`,e}finally{p.value=!1}},O=async n=>{if(!e.value)throw Error(`Space ID is required`);p.value=!0,_.value=null;try{let{error:i}=await t.client.DELETE(`/${s}/${b}/spaces/{id}/media/bindings/{bindingId}`,{params:{path:{id:e.value,bindingId:n}}});if(i){let e=i?.message??`Failed to delete binding`;throw Error(e)}r.value=r.value.filter(e=>e.id!==n)}catch(e){throw _.value=e instanceof Error?e.message:`Unknown error`,e}finally{p.value=!1}},k=async()=>{if(e.value){m.value=!0;try{let{data:n,error:i}=await t.client.POST(`/${s}/${b}/spaces/{id}/media/bindings/apply-defaults`,{params:{path:{id:e.value}}});if(i||!n)throw Error(`Failed to apply defaults`);r.value=(n.data??[]).map(U)}catch(e){throw g.value=e instanceof Error?e.message:`Unknown error`,e}finally{m.value=!1}}},A=async()=>{if(!(!e.value||u.value)){u.value=!0,y.value=null,x.value=null;try{let{data:n,error:r}=await t.client.GET(`/${s}/${b}/spaces/{id}/media/activities/active`,{params:{path:{id:e.value}}});if(r||!n)throw Error(`Failed to fetch active state`);let a=n.data;i.value=a?be(a):null}catch(e){y.value=e instanceof Error?e.message:`Unknown error`,x.value=`fetch`}finally{u.value=!1}}},j=async(e=3,t=1e3)=>{for(let n=0;n<e&&(await new Promise(e=>setTimeout(e,t)),await A(),!(i.value?.state===`active`||i.value?.state===`failed`||i.value?.state===`deactivated`));n++);};return{endpoints:S,bindings:C,activeState:i,fetchingEndpoints:a,fetchingBindings:l,fetchingActiveState:u,activating:d,deactivating:f,previewing:v,savingBinding:p,applyingDefaults:m,endpointsError:h,bindingsError:g,saveError:_,activationError:y,activationErrorSource:x,fetchEndpoints:w,fetchBindings:T,fetchActiveState:A,activate:async n=>{if(!e.value)throw Error(`Space ID is required`);d.value=!0,y.value=null,x.value=null,i.value={activityKey:n,state:`activating`};try{let{data:r,error:a}=await t.client.POST(`/${s}/${b}/spaces/{id}/media/activities/{activityKey}/activate`,{params:{path:{id:e.value,activityKey:n}}});if(a||!r||!r.data){let e=a?.message??`Failed to activate activity`;throw Error(e)}let o=q(r.data);return i.value=o,o.state===`activating`&&await j(),i.value??o}catch(e){throw y.value=e instanceof Error?e.message:`Unknown error`,x.value=`activate`,i.value={activityKey:n,state:`failed`},e}finally{d.value=!1}},preview:async n=>{if(!e.value)throw Error(`Space ID is required`);v.value=!0;try{let{data:r,error:i}=await t.client.POST(`/${s}/${b}/spaces/{id}/media/activities/{activityKey}/preview`,{params:{path:{id:e.value,activityKey:n}}});if(i||!r||!r.data){let e=i?.message??`Failed to preview activity`;throw Error(e)}return ye(r.data)}finally{v.value=!1}},deactivate:async()=>{if(!e.value)throw Error(`Space ID is required`);f.value=!0,y.value=null,x.value=null;try{let{data:n,error:r}=await t.client.POST(`/${s}/${b}/spaces/{id}/media/activities/deactivate`,{params:{path:{id:e.value}}});if(r||!n||!n.data){let e=r?.message??`Failed to deactivate`;throw Error(e)}let a=q(n.data);return i.value=a,a}catch(e){throw y.value=e instanceof Error?e.message:`Unknown error`,x.value=`deactivate`,e}finally{f.value=!1}},saveBinding:E,createBinding:D,deleteBinding:O,applyDefaults:k,endpointsByType:e=>o(()=>n.value.filter(t=>t.type===e)),findBindingByActivity:e=>r.value.find(t=>t.activityKey===e)}},J=Symbol(`FB-Module-Scenes-ScenesStore`),we=Symbol(`FB-Module-Scenes-ScenesActionsStore`),Y=e=>{let t=x().getStore(J),{semaphore:n,firstLoad:r}=j(t),i=c(!1);return{scenes:o(()=>e.value?t.findBySpace(e.value).filter(e=>!e.draft).sort((e,t)=>e.name.localeCompare(t.name)):[]),loading:o(()=>!!(i.value||n.value.fetching.items||!r.value)),firstLoadFinished:o(()=>r.value),fetchScenes:async()=>{await t.fetch()},reassignScene:async(e,n)=>{i.value=!0;try{await t.edit({id:e,data:{primarySpaceId:n}})}finally{i.value=!1}},removeScene:async e=>{i.value=!0;try{await t.edit({id:e,data:{primarySpaceId:null}})}finally{i.value=!1}}}},Te=()=>{let{t:e}=i(),t=A(),n=x().getStore(y);return{remove:async r=>{let i=n.findById(r);return i?C.confirm(e(`spacesModule.messages.confirmRemove`,{name:i.name}),e(`spacesModule.headings.removeSpace`),{confirmButtonText:e(`spacesModule.buttons.yes.title`),cancelButtonText:e(`spacesModule.buttons.no.title`),type:`warning`}).then(async()=>{try{return await n.remove({id:r}),t.success(e(`spacesModule.messages.removed`,{space:i.name})),!0}catch(e){return e instanceof R&&t.error(e.message),!1}}).catch(()=>(t.info(e(`spacesModule.messages.removeCanceled`,{space:i.name})),!1)):(t.error(e(`spacesModule.messages.notFound`)),!1)},bulkRemove:async r=>{if(r.length!==0)try{await C.confirm(e(`spacesModule.messages.confirmBulkRemove`,{count:r.length}),e(`spacesModule.headings.bulkRemoveSpace`),{confirmButtonText:e(`spacesModule.buttons.yes.title`),cancelButtonText:e(`spacesModule.buttons.no.title`),type:`warning`});let i=0,a=0;for(let e of r)try{await n.remove({id:e.id}),i++}catch{a++}i>0&&t.success(e(`spacesModule.messages.bulkRemoved`,{count:i})),a>0&&t.error(e(`spacesModule.messages.bulkRemoveFailed`,{count:a}))}catch{}}}},X={search:void 0,type:`all`},Ee={by:`name`,dir:`asc`},De=()=>{let e=x().getStore(y),{firstLoad:n,semaphore:r}=j(e),{filters:i,sort:a,pagination:s,reset:l}=M({key:`${g}:spaces:list`,filters:{schema:le,defaults:X},sort:{defaults:[Ee]},pagination:{defaults:{page:1,size:10}},syncQuery:!0,version:1}),u=o(()=>i.value.search!==X.search||!(0,V.isEqual)(i.value.type,X.type)),f=c(s.value.size||10),p=c(s.value.page||1),m=c(a.value.length>0?a.value[0]?.by:void 0),h=c(a.value.length>0?a.value[0]?.dir??null:null),_=o(()=>P(e.findAll().filter(e=>!e.draft&&(!i.value.search||e.id.toLowerCase().includes(i.value.search.toLowerCase())||e.name?.toLowerCase().includes(i.value.search.toLowerCase())||e.description?.toLowerCase().includes(i.value.search.toLowerCase()))&&(i.value.type===`all`||i.value.type===d.ROOM&&e.type===d.ROOM||i.value.type===d.ZONE&&e.type===d.ZONE)),[e=>{switch(m.value){case`name`:return e.name;case`type`:return e.type;case`displayOrder`:return e.displayOrder;default:return e.displayOrder}}],[h.value??`asc`])),v=o(()=>{let e=(p.value-1)*f.value,t=e+f.value;return _.value.slice(e,t)}),b=async()=>{await e.fetch()},S=o(()=>!!(r.value.fetching.items||!n.value)),C=o(()=>n.value),w=o(()=>e.findAll().filter(e=>!e.draft).length);return t(()=>s.value,e=>{p.value=e.page??1,f.value=e.size??10},{deep:!0}),t(()=>p.value,e=>{s.value.page=e}),t(()=>f.value,e=>{s.value.size=e}),t(()=>h.value,e=>{m.value===void 0||e===null?a.value=[]:a.value=[{by:m.value,dir:e}]}),t(()=>m.value,e=>{e===void 0?a.value=[]:a.value=[{by:e,dir:h.value}]}),{spaces:_,spacesPaginated:v,totalRows:w,areLoading:S,loaded:C,fetchSpaces:b,filters:i,filtersActive:u,paginateSize:f,paginatePage:p,sortBy:m,sortDir:h,resetFilter:l}};function Z(e){return e.trim().toLowerCase().replace(/[-_]/g,` `).replace(/\s+/g,` `).normalize(`NFD`).replace(/[\u0300-\u036f]/g,``)}var Oe=e=>{switch(e){case F.room:return d.ROOM;case F.zone:return d.ZONE;default:return d.ROOM}},Q=e=>{switch(e){case d.ROOM:return F.room;case d.ZONE:return F.zone;default:return F.room}},ke=e=>e||null,$=e=>{if(e)return e},Ae=()=>{let e=h(),{generate:t}=te(),n=r({currentStep:0,existingSpaces:[],spaces:[],proposedSpaces:[],customSpaces:[],matchedSpaces:[],deviceAssignments:{},displayAssignments:{},zoneAssignments:{},showAdvancedZones:!1,isLoading:!1,error:null}),i=o(()=>n.isLoading),a=o(()=>n.error),s=o(()=>n.currentStep),c=o(()=>n.existingSpaces),l=o(()=>n.spaces),u=o(()=>n.proposedSpaces),f=o(()=>n.customSpaces),p=o(()=>n.matchedSpaces),m=o(()=>n.deviceAssignments),g=o(()=>n.displayAssignments),_=o(()=>n.zoneAssignments),v=o({get:()=>n.showAdvancedZones,set:e=>{n.showAdvancedZones=e}}),y=o(()=>x.value.filter(e=>e.type===d.ZONE&&e.category&&ee.includes(e.category))),b=o(()=>n.proposedSpaces.filter(e=>!n.matchedSpaces.some(t=>Z(t.proposedName)===Z(e.name)))),x=o(()=>{let e=new Map;for(let t of n.existingSpaces)e.set(t.id,t);for(let t of n.spaces)e.set(t.id,t);return Array.from(e.values())}),S=async()=>{n.isLoading=!0,n.error=null;try{let r=await e.GET(`/modules/spaces/spaces/propose`);if(r.error||!r.data?.data)throw new R(`Failed to fetch proposed spaces`);let i=r.data.data.map(e=>{let n=ke(e.category),r=n?ie[n]:null,i=r?.description??null,a=r?.icon??null,o=e.name??``;return{name:o,description:i,icon:a,deviceIds:e.device_ids??[],deviceCount:e.device_count??0,selected:!0,type:e.type?Oe(e.type):d.ROOM,category:n,draftId:t(),editing:!1,editName:o}});n.matchedSpaces=[];let a=[];for(let e of i){let t=Z(e.name),r=n.existingSpaces.find(e=>Z(e.name)===t);r?n.matchedSpaces.push({proposedName:e.name,existingSpace:r,deviceIds:e.deviceIds,deviceCount:e.deviceCount}):a.push(e)}n.proposedSpaces=a}catch(e){throw n.error=e instanceof Error?e.message:`Unknown error`,e}finally{n.isLoading=!1}},C=()=>{let e=[],t=n.proposedSpaces.filter(e=>e.selected),r=n.customSpaces.filter(e=>e.selected);for(let e of n.matchedSpaces)if(e.existingSpace.type===d.ROOM)for(let t of e.deviceIds)n.deviceAssignments[t]||(n.deviceAssignments[t]=e.existingSpace.id);for(let r of t){let t=n.spaces.find(e=>e.id===r.draftId);if(t){if(r.type===d.ROOM)for(let e of r.deviceIds)n.deviceAssignments[e]||(n.deviceAssignments[e]=t.id);continue}let i={id:r.draftId,name:r.name,description:r.description,type:r.type,category:r.category,icon:r.icon,displayOrder:0,parentId:null,suggestionsEnabled:!0,statusWidgets:null,createdAt:new Date,updatedAt:null,draft:!0};if(n.spaces=[...n.spaces,i],e.push(i),r.type===d.ROOM)for(let e of r.deviceIds)n.deviceAssignments[e]=i.id}for(let t of r){if(n.spaces.find(e=>e.id===t.draftId))continue;let r={id:t.draftId,name:t.name,description:t.description,type:t.type,category:t.category,icon:t.icon,displayOrder:0,parentId:null,suggestionsEnabled:!0,statusWidgets:null,createdAt:new Date,updatedAt:null,draft:!0};n.spaces=[...n.spaces,r],e.push(r)}return e},w=async()=>{n.isLoading=!0,n.error=null;let t=[];try{let r=n.spaces.filter(e=>e.draft),i=new Set(n.proposedSpaces.filter(e=>e.selected).map(e=>e.name)),a=new Set(n.customSpaces.map(e=>e.name)),o=new Set([...Object.values(n.deviceAssignments),...Object.values(n.displayAssignments)].filter(e=>e!==null));for(let s of r){let r=i.has(s.name),c=a.has(s.name),l=o.has(s.id);if(!r&&!c&&!l){n.spaces=n.spaces.filter(e=>e.id!==s.id);continue}let u=await e.POST(`/modules/spaces/spaces`,{body:{data:{name:s.name,description:s.description,icon:s.icon,type:Q(s.type),category:$(s.category)}}});if(u.error||!u.data?.data)throw new R(`Failed to create space: ${s.name}`);let d=z(u.data.data);for(let[e,t]of Object.entries(n.deviceAssignments))t===s.id&&(n.deviceAssignments[e]=d.id);for(let[e,t]of Object.entries(n.displayAssignments))t===s.id&&(n.displayAssignments[e]=d.id);for(let[e,t]of Object.entries(n.zoneAssignments))n.zoneAssignments[e]=t.map(e=>e===s.id?d.id:e);let f=n.spaces.findIndex(e=>e.id===s.id);f===-1?n.spaces=[...n.spaces,d]:n.spaces[f]=d,t.push(d)}return t}catch(e){throw n.error=e instanceof Error?e.message:`Unknown error`,e}finally{n.isLoading=!1}},T=async t=>{n.isLoading=!0,n.error=null;try{let r=await e.POST(`/modules/spaces/spaces`,{body:{data:{name:t.name,description:t.description,type:Q(t.type),category:$(t.category),icon:t.icon,display_order:t.displayOrder}}});if(r.error||!r.data?.data)throw new R(`Failed to create space`);let i=z(r.data.data);return n.spaces.push(i),i}catch(e){throw n.error=e instanceof Error?e.message:`Unknown error`,e}finally{n.isLoading=!1}},E=(e,t)=>{n.deviceAssignments[e]=t},D=(e,t)=>{n.displayAssignments[e]=t},O=async()=>{n.isLoading=!0,n.error=null;let t=0,r=0,i=0;try{let a={};for(let[e,t]of Object.entries(n.deviceAssignments))t&&(a[t]||(a[t]={deviceIds:[],displayIds:[]}),a[t].deviceIds.push(e));for(let[e,t]of Object.entries(n.displayAssignments))t&&(a[t]||(a[t]={deviceIds:[],displayIds:[]}),a[t].displayIds.push(e));for(let[n,i]of Object.entries(a)){let a=await e.POST(`/modules/spaces/spaces/{id}/assign`,{params:{path:{id:n}},body:{data:{device_ids:i.deviceIds,display_ids:i.displayIds}}});if(a.error)throw new R(`Failed to assign items to space ${n}`);a.data?.data&&(t+=a.data.data.devices_assigned??0,r+=a.data.data.displays_assigned??0)}for(let[t,r]of Object.entries(n.zoneAssignments))for(let n of r){if((await e.POST(`/modules/devices/devices/{id}/zones/{zoneId}`,{params:{path:{id:t,zoneId:n}}})).error)throw new R(`Failed to assign device ${t} to zone ${n}`);i++}return{devicesAssigned:t,displaysAssigned:r,zonesAssigned:i}}catch(e){throw n.error=e instanceof Error?e.message:`Unknown error`,e}finally{n.isLoading=!1}},k=e=>{n.currentStep=e},A=()=>{n.currentStep++},j=()=>{n.currentStep>0&&n.currentStep--},M=e=>{for(let[t,r]of Object.entries(n.deviceAssignments))r===e&&(n.deviceAssignments[t]=null);for(let[t,r]of Object.entries(n.displayAssignments))r===e&&(n.displayAssignments[t]=null)},N=e=>{let t=n.proposedSpaces[e];t&&(t.selected=!t.selected,t.selected||(n.spaces=n.spaces.filter(e=>e.id!==t.draftId),M(t.draftId)))},P=e=>{let t=n.customSpaces[e];t&&(t.selected=!t.selected,t.selected||(n.spaces=n.spaces.filter(e=>e.id!==t.draftId),M(t.draftId)))},F=e=>{let t=Z(e),r=n.existingSpaces.find(e=>Z(e.name)===t);if(r)return r.name;let i=n.proposedSpaces.find(e=>Z(e.name)===t);if(i)return i.name;let a=n.customSpaces.find(e=>Z(e.name)===t);return a?a.name:null};return{isLoading:i,error:a,currentStep:s,existingSpaces:c,spaces:l,proposedSpaces:u,customSpaces:f,matchedSpaces:p,unmatchedProposals:b,availableSpaces:x,deviceAssignments:m,displayAssignments:g,zoneAssignments:_,showAdvancedZones:v,assignableZones:y,fetchProposedSpaces:S,fetchDevices:async()=>{n.isLoading=!0,n.error=null;try{let t=await e.GET(`/modules/devices/devices`);if(t.error||!t.data?.data)throw new R(`Failed to fetch devices`);return t.data.data.map(e=>({id:e.id,name:e.name,description:e.description??null,spaceId:e.room_id??null}))}catch(e){throw n.error=e instanceof Error?e.message:`Unknown error`,e}finally{n.isLoading=!1}},fetchDisplays:async()=>{n.isLoading=!0,n.error=null;try{let t=await e.GET(`/modules/displays/displays`);if(t.error||!t.data?.data)throw new R(`Failed to fetch displays`);return t.data.data.map(e=>({id:e.id,name:e.name??null,macAddress:e.mac_address??``,role:e.role??`room`,roomId:e.room_id??null}))}catch(e){throw n.error=e instanceof Error?e.message:`Unknown error`,e}finally{n.isLoading=!1}},fetchExistingSpaces:async()=>{n.isLoading=!0,n.error=null;try{let t=await e.GET(`/modules/spaces/spaces`);if(t.error||!t.data?.data)throw new R(`Failed to fetch spaces`);let r=t.data.data.map(e=>z(e));return n.existingSpaces=r,r}catch(e){throw n.error=e instanceof Error?e.message:`Unknown error`,e}finally{n.isLoading=!1}},createDraftSpacesFromProposals:C,createSpacesFromProposals:w,createSpace:T,setDeviceAssignment:E,setDisplayAssignment:D,setDeviceZones:(e,t)=>{n.zoneAssignments[e]=t},applyAssignments:O,setStep:k,nextStep:A,prevStep:j,toggleProposedSpace:N,toggleCustomSpace:P,addManualSpace:e=>{let r=F(e);return r?{success:!1,duplicateOf:r}:(n.customSpaces.push({name:e,description:null,icon:null,selected:!0,type:d.ROOM,category:null,draftId:t(),editing:!1,editName:e}),{success:!0})},checkDuplicateSpaceName:F,removeProposedSpace:e=>{let t=n.proposedSpaces[e];t&&(n.spaces=n.spaces.filter(e=>e.id!==t.draftId),M(t.draftId)),n.proposedSpaces.splice(e,1)},removeCustomSpace:e=>{let t=n.customSpaces[e];t&&(n.spaces=n.spaces.filter(e=>e.id!==t.draftId),M(t.draftId)),n.customSpaces.splice(e,1)},startEditingProposedName:e=>{let t=n.proposedSpaces[e];t&&(t.editing=!0,t.editName=t.name)},confirmProposedNameEdit:e=>{let t=n.proposedSpaces[e];if(!t)return{success:!1};let r=t.editName.trim();if(!r)return t.editing=!1,t.editName=t.name,{success:!1};if(r===t.name)return t.editing=!1,{success:!0};let i=Z(r),a=n.existingSpaces.find(e=>Z(e.name)===i);if(a)return n.matchedSpaces.push({proposedName:r,existingSpace:a,deviceIds:t.deviceIds,deviceCount:t.deviceCount}),n.proposedSpaces.splice(e,1),{success:!0,convertedToMatch:!0};let o=n.proposedSpaces.find((t,n)=>n!==e&&Z(t.name)===i);if(o)return t.editing=!1,t.editName=t.name,{success:!1,duplicateOf:o.name};let s=n.customSpaces.find(e=>Z(e.name)===i);if(s)return t.editing=!1,t.editName=t.name,{success:!1,duplicateOf:s.name};t.name=r,t.editing=!1;let c=n.spaces.find(e=>e.id===t.draftId);return c&&(c.name=r),{success:!0}},discardProposedNameEdit:e=>{let t=n.proposedSpaces[e];t&&(t.editing=!1,t.editName=t.name)},startEditingCustomName:e=>{let t=n.customSpaces[e];t&&(t.editing=!0,t.editName=t.name)},confirmCustomNameEdit:e=>{let t=n.customSpaces[e];if(!t)return{success:!1};let r=t.editName.trim();if(!r)return t.editing=!1,t.editName=t.name,{success:!1};if(r===t.name)return t.editing=!1,{success:!0};let i=Z(r),a=n.existingSpaces.find(e=>Z(e.name)===i);if(a)return n.matchedSpaces.push({proposedName:r,existingSpace:a,deviceIds:[],deviceCount:0}),n.customSpaces.splice(e,1),{success:!0,convertedToMatch:!0};let o=n.proposedSpaces.find(e=>Z(e.name)===i);if(o)return t.editing=!1,t.editName=t.name,{success:!1,duplicateOf:o.name};let s=n.customSpaces.find((t,n)=>n!==e&&Z(t.name)===i);if(s)return t.editing=!1,t.editName=t.name,{success:!1,duplicateOf:s.name};t.name=r,t.editing=!1;let c=n.spaces.find(e=>e.id===t.draftId);return c&&(c.name=r),{success:!0}},discardCustomNameEdit:e=>{let t=n.customSpaces[e];t&&(t.editing=!1,t.editName=t.name)},initializeFromExistingSpaces:e=>{n.existingSpaces=[...e]},initializeDeviceAssignments:e=>{for(let t of e)n.deviceAssignments[t.id]=t.spaceId??null},initializeDisplayAssignments:e=>{for(let t of e)n.displayAssignments[t.id]=t.roomId??null},summary:o(()=>{let e=n.existingSpaces.length+n.spaces.length,t=Object.values(n.deviceAssignments).filter(e=>e!==null).length,r=Object.values(n.displayAssignments).filter(e=>e!==null).length,i=Object.values(n.deviceAssignments).filter(e=>e===null).length,a=Object.values(n.displayAssignments).filter(e=>e===null).length,o={},s={};for(let e of Object.values(n.deviceAssignments))e&&(o[e]=(o[e]??0)+1);for(let e of Object.values(n.zoneAssignments))for(let t of e)o[t]=(o[t]??0)+1;for(let e of Object.values(n.displayAssignments))e&&(s[e]=(s[e]??0)+1);return{spaceCount:e,assignedDevices:t,assignedDisplays:r,unassignedDevices:i,unassignedDisplays:a,devicesBySpace:o,displaysBySpace:s}})}},je=()=>{let t=e(k);return{climateSignal:t?.climate,lightingSignal:t?.lighting,coversSignal:t?.covers,sensorSignal:t?.sensor,climateStateSignal:t?.climateState,lightingStateSignal:t?.lightingState,coversStateSignal:t?.coversState,sensorStateSignal:t?.sensorState}};export{Y as a,xe as c,he as d,me as f,ce as g,H as h,Te as i,Se as l,fe as m,Ae as n,we as o,pe as p,De as r,J as s,je as t,Ce as u};
@@ -1 +1 @@
1
- import"./chunk-DECur_0Z.js";import{Xr as e,ci as t,d as n,fi as r,mr as i,n as a,ui as o}from"./icon-with-child-DmQ_XhQy.js";import{A as s,Bn as c,Fn as l,In as u,Jn as d,Pn as f,S as p,T as m,Tn as h,Un as g,Ur as _,Wn as v,Yn as y,_ as b,an as x,ba as S,d as C,m as w,pn as T,qn as E,wn as D,y as O}from"./common-eNbjMqa7.js";import{c as k,d as A,f as j,h as M,i as N,n as P,o as F,p as ee}from"./useLocation-CHR8SAgg.js";var I=()=>{let e=m().getStore(ee),{data:t,semaphore:n}=S(e);return{weatherDay:i(()=>t.value),isLoading:i(()=>t.value===null?n.value.getting:!1),fetchWeatherDay:async()=>{await e.get()}}},L=()=>{let e=m().getStore(M),{firstLoad:t,semaphore:n}=S(e);return{locations:i(()=>e.findAll().filter(e=>!e.draft)),areLoading:i(()=>n.value.fetching.items),loaded:i(()=>t.value),fetchLocations:async()=>{await e.fetch()}}},R={search:void 0,types:[],primary:`all`},z=()=>{let t=m().getStore(M),{firstLoad:n,semaphore:r}=S(t),{configModule:a}=h({type:A}),s=i(()=>a.value?.primaryLocationId??null),c=o(10),l=o(1),u=o({...R}),d=i(()=>u.value.search!==R.search||u.value.types.length>0||u.value.primary!==R.primary),f=o(`name`),p=o(`ascending`),g=i(()=>{let e=t.findAll().filter(e=>!(e.draft||u.value.search&&!e.name.toLowerCase().includes(u.value.search.toLowerCase())||u.value.types.length>0&&!u.value.types.includes(e.type)||u.value.primary===`primary`&&e.id!==s.value||u.value.primary===`secondary`&&e.id===s.value));return p.value===null?e:T(e,[e=>e[f.value]??``],[p.value===`ascending`?`asc`:`desc`])}),_=i(()=>{let e=(l.value-1)*c.value,t=e+c.value;return g.value.slice(e,t)}),v=async()=>{await t.fetch()},y=i(()=>r.value.fetching.items||!n.value),b=i(()=>n.value),x=i(()=>t.findAll().filter(e=>!e.draft).length);return e(()=>u.value,()=>{l.value=1},{deep:!0}),{locations:g,locationsPaginated:_,totalRows:x,areLoading:y,loaded:b,fetchLocations:v,filters:u,filtersActive:d,paginateSize:c,paginatePage:l,sortBy:f,sortDir:p,resetFilter:()=>{u.value={...R}},primaryLocationId:s}},B=()=>{let e=O(),t=p(),n=o({}),r=o(!1),s=o(!1),c=o(!1);return{weatherByLocation:i(()=>n.value),isLoading:r,hasError:s,fetchCompleted:c,fetchLocationsWeather:async()=>{if(!r.value){r.value=!0,s.value=!1;try{let{data:r,error:i,response:o}=await e.client.GET(`/${a}/${j}/weather`,{});if(r!==void 0&&Array.isArray(r.data)){let e={};for(let n of r.data)if(n.location_id)try{let t=P(n.current),r=n.location;e[n.location_id]={current:t,locationName:r?.name??``,country:r?.country??null}}catch(e){t.error(`[WEATHER] Failed to transform weather data for location ${n.location_id}`,e)}n.value=e,Object.keys(e).length===0&&(s.value=!0);return}let c=`Failed to fetch locations weather.`;throw i&&(c=i.message??c),new N(c,o?.status??500)}catch(e){if(s.value=!0,e instanceof N)throw e;t.error(`[WEATHER] Failed to fetch locations weather`,e)}finally{r.value=!1,c.value=!0}}}}},V=()=>{let{t:e}=n(),t=b(),r=m().getStore(M);return{add:async e=>r.add(e),edit:async e=>r.edit(e),remove:async n=>{let i=r.findById(n);if(i)try{await _.confirm(e(`weatherModule.messages.locations.confirmDeleteLocation`,{name:i.name}),e(`weatherModule.headings.deleteLocation`),{confirmButtonText:e(`weatherModule.buttons.yes.title`),cancelButtonText:e(`weatherModule.buttons.no.title`),type:`warning`});try{await r.remove({id:n}),t.success(e(`weatherModule.messages.locations.deleted`))}catch{t.error(e(`weatherModule.messages.locations.notDeleted`))}}catch{t.info(e(`weatherModule.messages.locations.deleteCanceled`,{location:i.name}))}},bulkRemove:async n=>{if(n.length!==0)try{await _.confirm(e(`weatherModule.messages.locations.confirmBulkDelete`,{count:n.length}),e(`weatherModule.headings.bulkDeleteLocations`),{confirmButtonText:e(`weatherModule.buttons.yes.title`),cancelButtonText:e(`weatherModule.buttons.no.title`),type:`warning`});let i=0,a=0;for(let e of n)try{await r.remove({id:e.id}),i++}catch{a++}i>0&&t.success(e(`weatherModule.messages.locations.bulkDeleted`,{count:i})),a>0&&t.error(e(`weatherModule.messages.locations.bulkDeleteFailed`,{count:a}))}catch{t.info(e(`weatherModule.messages.locations.bulkDeleteCanceled`))}}}},H=E().uuid(),U=v({id:H,draft:l().default(!1),type:E().trim().nonempty(),name:E().trim().nonempty(),order:g().int().nonnegative().default(0),createdAt:d([E().datetime({offset:!0}),u()]).transform(e=>e instanceof Date?e:new Date(e)),updatedAt:d([E().datetime({offset:!0}),u()]).transform(e=>e instanceof Date?e:new Date(e)).optional().nullable().default(null)}).catchall(y());v({fetching:v({items:l().default(!1),item:f(H)}),creating:f(H),updating:f(H),deleting:f(H)}),v({id:H,type:E().trim().nonempty(),data:c({})}),v({id:H,data:v({type:E().trim().nonempty(),name:E().trim().nonempty()}).catchall(y())}),v({id:H}),v({id:H});var W=v({id:H.optional().default(C()),draft:l().optional().default(!1),data:v({type:E().trim().nonempty(),name:E().trim().nonempty()}).catchall(y())}),G=v({id:H,data:v({type:E().trim().nonempty(),name:E().trim().optional()}).catchall(y())});v({id:H}),v({id:H});var K=v({id:E().uuid().optional(),type:E().trim().nonempty(),name:E().trim().nonempty()}).catchall(y()),q=v({type:E().trim().nonempty(),name:E().trim().nonempty().optional()}).catchall(y());v({id:E().uuid(),type:E(),name:E().trim().nonempty(),order:g().int().nonnegative().default(0),created_at:E(),updated_at:E().nullable()}).catchall(y()),v({id:H,type:E().trim().nonempty(),name:E().trim().min(1,`Name is required`)});var J=v({name:E().trim().min(1,`Name is required`)}),Y=U,X=K,Z=q,Q=D(),te=({id:i})=>{let a=m().getStore(M),{t:s}=n(),c=b(),l=p(),u=o(k.NONE),d,f=t({name:a.findById(i.value)?.name??``}),h=w(r(f)),g=o(void 0),_=o(!1),v=async()=>{if(g.value.clearValidate(),!await g.value.validate())throw new F(`Form not valid`);let e=J.safeParse(f);if(!e.success)throw l.error(`[WEATHER_MODULE] Schema validation failed:`,e.error),new F(`Failed to validate update location model.`);u.value=k.WORKING;let t=a.findById(i.value);if(!t)throw new F(`Location not found.`);let n=s(`weatherModule.messages.locations.notUpdated`,{location:f.name});try{await a.edit({id:i.value,data:{type:t.type,...e.data}}),u.value=k.OK,c.success(s(`weatherModule.messages.locations.updated`,{location:f.name})),Object.assign(h,w(r(f))),_.value=!1}catch(e){throw u.value=k.ERROR,d=window.setTimeout(y,2e3),e instanceof N&&e.code===422?c.error(e.message):c.error(n),e}},y=()=>{window.clearTimeout(d),u.value=k.NONE};return e(()=>f,()=>{_.value=!(0,Q.isEqual)(r(f),h)},{deep:!0}),e(()=>a.findById(i.value),e=>{e&&!_.value&&(f.name=e.name,Object.assign(h,w(r(f))))}),{model:f,formEl:g,formChanged:_,submit:v}},$=()=>{let e=s(),{enabled:t}=x(),n=[`locationAddForm`,`locationEditForm`],r=[`locationSchema`,`locationAddFormSchema`,`locationEditFormSchema`,`locationCreateReqSchema`,`locationUpdateReqSchema`],a=i(()=>e.getPlugins().filter(e=>e.modules===void 0||e.modules.includes(`weather-module`)?(e.elements??[]).some(e=>{if(!(e.modules===void 0||e.modules.includes(`weather-module`)))return!1;let t=n.length===0||!!e.components&&n.some(t=>e.components&&t in e.components),i=r.length===0||!!e.schemas&&r.some(t=>e.schemas&&t in e.schemas);return t||i}):!1));return{plugins:a,options:i(()=>T(a.value.flatMap(e=>(e.elements??[]).filter(e=>e.modules===void 0||e.modules.includes(`weather-module`)).map(n=>({value:n.type,label:n.name?.trim()?n.name:e.name,disabled:!t(e.type)}))),[e=>e.label],[`asc`])),getByName:e=>a.value.find(t=>t.type===e),getByType:e=>a.value.find(t=>(t.elements??[]).some(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`weather-module`)))),getElement:e=>{for(let t of a.value){let n=(t.elements??[]).find(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`weather-module`)));if(n)return n}}}},ne=({type:e})=>{let{getByType:t}=$(),n=i(()=>t(e));return{plugin:n,element:i(()=>(n.value?.elements??[]).find(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`weather-module`))))}};export{I as _,Y as a,U as c,G as d,H as f,L as g,z as h,X as i,q as l,B as m,$ as n,Z as o,V as p,te as r,K as s,ne as t,W as u};
1
+ import"./chunk-DECur_0Z.js";import{Xr as e,ci as t,d as n,fi as r,mr as i,n as a,ui as o}from"./icon-with-child-DmQ_XhQy.js";import{A as s,Bn as c,Fn as l,In as u,Jn as d,Pn as f,S as p,T as m,Tn as h,Un as g,Ur as _,Wn as v,Yn as y,_ as b,an as x,ba as S,d as C,m as w,pn as T,qn as E,wn as D,y as O}from"./common-1h7wnZKI.js";import{c as k,d as A,f as j,h as M,i as N,n as P,o as F,p as ee}from"./useLocation-Rrxn6HvJ.js";var I=()=>{let e=m().getStore(ee),{data:t,semaphore:n}=S(e);return{weatherDay:i(()=>t.value),isLoading:i(()=>t.value===null?n.value.getting:!1),fetchWeatherDay:async()=>{await e.get()}}},L=()=>{let e=m().getStore(M),{firstLoad:t,semaphore:n}=S(e);return{locations:i(()=>e.findAll().filter(e=>!e.draft)),areLoading:i(()=>n.value.fetching.items),loaded:i(()=>t.value),fetchLocations:async()=>{await e.fetch()}}},R={search:void 0,types:[],primary:`all`},z=()=>{let t=m().getStore(M),{firstLoad:n,semaphore:r}=S(t),{configModule:a}=h({type:A}),s=i(()=>a.value?.primaryLocationId??null),c=o(10),l=o(1),u=o({...R}),d=i(()=>u.value.search!==R.search||u.value.types.length>0||u.value.primary!==R.primary),f=o(`name`),p=o(`ascending`),g=i(()=>{let e=t.findAll().filter(e=>!(e.draft||u.value.search&&!e.name.toLowerCase().includes(u.value.search.toLowerCase())||u.value.types.length>0&&!u.value.types.includes(e.type)||u.value.primary===`primary`&&e.id!==s.value||u.value.primary===`secondary`&&e.id===s.value));return p.value===null?e:T(e,[e=>e[f.value]??``],[p.value===`ascending`?`asc`:`desc`])}),_=i(()=>{let e=(l.value-1)*c.value,t=e+c.value;return g.value.slice(e,t)}),v=async()=>{await t.fetch()},y=i(()=>r.value.fetching.items||!n.value),b=i(()=>n.value),x=i(()=>t.findAll().filter(e=>!e.draft).length);return e(()=>u.value,()=>{l.value=1},{deep:!0}),{locations:g,locationsPaginated:_,totalRows:x,areLoading:y,loaded:b,fetchLocations:v,filters:u,filtersActive:d,paginateSize:c,paginatePage:l,sortBy:f,sortDir:p,resetFilter:()=>{u.value={...R}},primaryLocationId:s}},B=()=>{let e=O(),t=p(),n=o({}),r=o(!1),s=o(!1),c=o(!1);return{weatherByLocation:i(()=>n.value),isLoading:r,hasError:s,fetchCompleted:c,fetchLocationsWeather:async()=>{if(!r.value){r.value=!0,s.value=!1;try{let{data:r,error:i,response:o}=await e.client.GET(`/${a}/${j}/weather`,{});if(r!==void 0&&Array.isArray(r.data)){let e={};for(let n of r.data)if(n.location_id)try{let t=P(n.current),r=n.location;e[n.location_id]={current:t,locationName:r?.name??``,country:r?.country??null}}catch(e){t.error(`[WEATHER] Failed to transform weather data for location ${n.location_id}`,e)}n.value=e,Object.keys(e).length===0&&(s.value=!0);return}let c=`Failed to fetch locations weather.`;throw i&&(c=i.message??c),new N(c,o?.status??500)}catch(e){if(s.value=!0,e instanceof N)throw e;t.error(`[WEATHER] Failed to fetch locations weather`,e)}finally{r.value=!1,c.value=!0}}}}},V=()=>{let{t:e}=n(),t=b(),r=m().getStore(M);return{add:async e=>r.add(e),edit:async e=>r.edit(e),remove:async n=>{let i=r.findById(n);if(i)try{await _.confirm(e(`weatherModule.messages.locations.confirmDeleteLocation`,{name:i.name}),e(`weatherModule.headings.deleteLocation`),{confirmButtonText:e(`weatherModule.buttons.yes.title`),cancelButtonText:e(`weatherModule.buttons.no.title`),type:`warning`});try{await r.remove({id:n}),t.success(e(`weatherModule.messages.locations.deleted`))}catch{t.error(e(`weatherModule.messages.locations.notDeleted`))}}catch{t.info(e(`weatherModule.messages.locations.deleteCanceled`,{location:i.name}))}},bulkRemove:async n=>{if(n.length!==0)try{await _.confirm(e(`weatherModule.messages.locations.confirmBulkDelete`,{count:n.length}),e(`weatherModule.headings.bulkDeleteLocations`),{confirmButtonText:e(`weatherModule.buttons.yes.title`),cancelButtonText:e(`weatherModule.buttons.no.title`),type:`warning`});let i=0,a=0;for(let e of n)try{await r.remove({id:e.id}),i++}catch{a++}i>0&&t.success(e(`weatherModule.messages.locations.bulkDeleted`,{count:i})),a>0&&t.error(e(`weatherModule.messages.locations.bulkDeleteFailed`,{count:a}))}catch{t.info(e(`weatherModule.messages.locations.bulkDeleteCanceled`))}}}},H=E().uuid(),U=v({id:H,draft:l().default(!1),type:E().trim().nonempty(),name:E().trim().nonempty(),order:g().int().nonnegative().default(0),createdAt:d([E().datetime({offset:!0}),u()]).transform(e=>e instanceof Date?e:new Date(e)),updatedAt:d([E().datetime({offset:!0}),u()]).transform(e=>e instanceof Date?e:new Date(e)).optional().nullable().default(null)}).catchall(y());v({fetching:v({items:l().default(!1),item:f(H)}),creating:f(H),updating:f(H),deleting:f(H)}),v({id:H,type:E().trim().nonempty(),data:c({})}),v({id:H,data:v({type:E().trim().nonempty(),name:E().trim().nonempty()}).catchall(y())}),v({id:H}),v({id:H});var W=v({id:H.optional().default(C()),draft:l().optional().default(!1),data:v({type:E().trim().nonempty(),name:E().trim().nonempty()}).catchall(y())}),G=v({id:H,data:v({type:E().trim().nonempty(),name:E().trim().optional()}).catchall(y())});v({id:H}),v({id:H});var K=v({id:E().uuid().optional(),type:E().trim().nonempty(),name:E().trim().nonempty()}).catchall(y()),q=v({type:E().trim().nonempty(),name:E().trim().nonempty().optional()}).catchall(y());v({id:E().uuid(),type:E(),name:E().trim().nonempty(),order:g().int().nonnegative().default(0),created_at:E(),updated_at:E().nullable()}).catchall(y()),v({id:H,type:E().trim().nonempty(),name:E().trim().min(1,`Name is required`)});var J=v({name:E().trim().min(1,`Name is required`)}),Y=U,X=K,Z=q,Q=D(),te=({id:i})=>{let a=m().getStore(M),{t:s}=n(),c=b(),l=p(),u=o(k.NONE),d,f=t({name:a.findById(i.value)?.name??``}),h=w(r(f)),g=o(void 0),_=o(!1),v=async()=>{if(g.value.clearValidate(),!await g.value.validate())throw new F(`Form not valid`);let e=J.safeParse(f);if(!e.success)throw l.error(`[WEATHER_MODULE] Schema validation failed:`,e.error),new F(`Failed to validate update location model.`);u.value=k.WORKING;let t=a.findById(i.value);if(!t)throw new F(`Location not found.`);let n=s(`weatherModule.messages.locations.notUpdated`,{location:f.name});try{await a.edit({id:i.value,data:{type:t.type,...e.data}}),u.value=k.OK,c.success(s(`weatherModule.messages.locations.updated`,{location:f.name})),Object.assign(h,w(r(f))),_.value=!1}catch(e){throw u.value=k.ERROR,d=window.setTimeout(y,2e3),e instanceof N&&e.code===422?c.error(e.message):c.error(n),e}},y=()=>{window.clearTimeout(d),u.value=k.NONE};return e(()=>f,()=>{_.value=!(0,Q.isEqual)(r(f),h)},{deep:!0}),e(()=>a.findById(i.value),e=>{e&&!_.value&&(f.name=e.name,Object.assign(h,w(r(f))))}),{model:f,formEl:g,formChanged:_,submit:v}},$=()=>{let e=s(),{enabled:t}=x(),n=[`locationAddForm`,`locationEditForm`],r=[`locationSchema`,`locationAddFormSchema`,`locationEditFormSchema`,`locationCreateReqSchema`,`locationUpdateReqSchema`],a=i(()=>e.getPlugins().filter(e=>e.modules===void 0||e.modules.includes(`weather-module`)?(e.elements??[]).some(e=>{if(!(e.modules===void 0||e.modules.includes(`weather-module`)))return!1;let t=n.length===0||!!e.components&&n.some(t=>e.components&&t in e.components),i=r.length===0||!!e.schemas&&r.some(t=>e.schemas&&t in e.schemas);return t||i}):!1));return{plugins:a,options:i(()=>T(a.value.flatMap(e=>(e.elements??[]).filter(e=>e.modules===void 0||e.modules.includes(`weather-module`)).map(n=>({value:n.type,label:n.name?.trim()?n.name:e.name,disabled:!t(e.type)}))),[e=>e.label],[`asc`])),getByName:e=>a.value.find(t=>t.type===e),getByType:e=>a.value.find(t=>(t.elements??[]).some(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`weather-module`)))),getElement:e=>{for(let t of a.value){let n=(t.elements??[]).find(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`weather-module`)));if(n)return n}}}},ne=({type:e})=>{let{getByType:t}=$(),n=i(()=>t(e));return{plugin:n,element:i(()=>(n.value?.elements??[]).find(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`weather-module`))))}};export{I as _,Y as a,U as c,G as d,H as f,L as g,z as h,X as i,q as l,B as m,$ as n,Z as o,V as p,te as r,K as s,ne as t,W as u};
@@ -1 +1 @@
1
- import"./chunk-DECur_0Z.js";import{Nr as e,Xr as t,ci as n,d as r,fi as i,mr as a,n as o,ui as s}from"./icon-with-child-DmQ_XhQy.js";import{Lr as c,Mn as l,Pn as u,S as d,T as f,Ur as p,Wn as m,_ as h,ba as g,f as _,m as v,pn as y,qn as b,wn as x,y as S}from"./common-eNbjMqa7.js";import{t as C}from"./keys-DWeeqbdi.js";var w=e=>{let n=f().getStore(C),{tokenRefreshTriggers:r}=g(n),i=d(),o=s([]),l=a(()=>e.value===null?null:n?.findById(e.value)??null),u=a(()=>e.value===null?!1:n?.getting(e.value)??!1),p=async()=>{if(e.value!==null)try{await n?.get({id:e.value})}catch(e){i.error(`Failed to fetch display:`,e)}},m=async()=>{if(e.value!==null)try{o.value=await n?.getTokens({id:e.value})??[]}catch(e){i.error(`Failed to fetch display tokens:`,e),o.value=[]}};return c(a(()=>{if(e.value===null||!n)return 0;let t=r.value;return!t||typeof t!=`object`?0:t[e.value]??0}),async()=>{if(e.value!==null)try{await m()}catch(e){i.error(`Failed to refresh tokens:`,e)}},{debounce:300}),t(()=>e.value,async e=>{if(e!==null&&n?.findById(e)===null)try{await p()}catch(e){i.error(`Failed to fetch display on id change:`,e)}},{immediate:!0}),{display:l,tokens:o,isLoading:u,fetchDisplay:p,fetchTokens:m,revokeToken:async()=>{if(e.value===null)return!1;let t=await n?.revokeToken({id:e.value});return t&&(o.value=[]),t??!1}}},T=`displays`,E=`displays-module`,D=`DisplaysModule.`,O=function(e){return e.DISPLAY_CREATED=`DisplaysModule.Display.Created`,e.DISPLAY_UPDATED=`DisplaysModule.Display.Updated`,e.DISPLAY_DELETED=`DisplaysModule.Display.Deleted`,e.DISPLAY_TOKEN_REVOKED=`DisplaysModule.Display.TokenRevoked`,e}({}),k=function(e){return e.NONE=`none`,e.WORKING=`working`,e.ERROR=`error`,e.OK=`ok`,e}({}),A={DISPLAYS:`displays_module-displays`,DISPLAYS_EDIT:`displays_module-displays_edit`,DISPLAY:`displays_module-display`,DISPLAY_EDIT:`displays_module-display_edit`,DISPLAY_TOKENS:`displays_module-display_tokens`},j=[{value:15,labelKey:`15s`},{value:30,labelKey:`30s`},{value:60,labelKey:`1min`},{value:120,labelKey:`2min`},{value:300,labelKey:`5min`},{value:600,labelKey:`10min`},{value:1800,labelKey:`30min`},{value:0,labelKey:`never`}],M=class extends Error{exception;constructor(e,t=null){super(e),this.name=`DisplaysException`,this.exception=t}},N=class extends M{constructor(e,t=null){super(e,t),this.name=`DisplaysValidationException`}},P=class extends M{code;constructor(e,t=null,n=null){super(e,n),this.name=`DisplaysApiException`,this.code=t}},F=x(),I=({display:a,messages:o})=>{let c=f().getStore(C),{t:l}=r(),u=h(),d=s(k.NONE),p,m=n({id:a.id,name:a.name,role:a.role,roomId:a.roomId,unitSize:a.unitSize,rows:a.rows,cols:a.cols,brightness:a.brightness,screenLockDuration:a.screenLockDuration,darkMode:a.darkMode,screenSaver:a.screenSaver,screenPowerOff:a.screenPowerOff,speaker:a.speaker,speakerVolume:a.speakerVolume,microphone:a.microphone,microphoneVolume:a.microphoneVolume,homeMode:a.homeMode,homePageId:a.homePageId,numberFormat:a.numberFormat??``,temperatureUnit:a.temperatureUnit??``,windSpeedUnit:a.windSpeedUnit??``,pressureUnit:a.pressureUnit??``,precipitationUnit:a.precipitationUnit??``,distanceUnit:a.distanceUnit??``,weatherLocationId:a.weatherLocationId??null}),g=v(i(m)),_=s(void 0),y=s(!1),b=async()=>{let e=o&&o.error?o.error:l(`displaysModule.messages.notEdited`,{display:a.name||a.macAddress});if(!_.value)throw new N(`Form element is not available`);if(_.value.clearValidate(),!await _.value.validate())throw new N(`Form not valid`);d.value=k.WORKING;try{let e={name:m.name||null,role:m.role,roomId:m.role===`room`?m.roomId:null,unitSize:m.unitSize,rows:m.rows,cols:m.cols,brightness:m.brightness,screenLockDuration:m.screenLockDuration,darkMode:m.darkMode,screenSaver:m.screenSaver,screenPowerOff:m.screenPowerOff,homeMode:m.homeMode,homePageId:m.homeMode===`explicit`?m.homePageId:null,numberFormat:m.numberFormat||null,temperatureUnit:m.temperatureUnit||null,windSpeedUnit:m.windSpeedUnit||null,pressureUnit:m.pressureUnit||null,precipitationUnit:m.precipitationUnit||null,distanceUnit:m.distanceUnit||null,weatherLocationId:m.weatherLocationId||null};a.audioOutputSupported&&(e.speaker=m.speaker,e.speakerVolume=m.speakerVolume),a.audioInputSupported&&(e.microphone=m.microphone,e.microphoneVolume=m.microphoneVolume),await c.edit({id:a.id,data:e})}catch(t){throw d.value=k.ERROR,p=window.setTimeout(x,2e3),t instanceof P&&t.code===422?u.error(t.message):u.error(e),t}return d.value=k.OK,p=window.setTimeout(x,2e3),u.success(l(o&&o.success?o.success:`displaysModule.messages.edited`,{display:a.name||a.macAddress})),y.value=!1,g=v(i(m)),`saved`},x=()=>{p!==void 0&&(window.clearTimeout(p),p=void 0),d.value=k.NONE};return t(m,()=>{y.value=!(0,F.isEqual)(i(m),g)}),e(()=>{x()}),{model:m,formEl:_,formChanged:y,submit:b,clear:x,formResult:d}},L=()=>{let e=f().getStore(C),{firstLoad:t}=g(e),n=a(()=>e?.findAll()??[]);return{displays:n,isLoading:a(()=>e?.fetching()??!1),isLoaded:a(()=>t.value),fetchDisplays:async()=>{await e?.fetch()},options:a(()=>n.value.map(e=>({value:e.id,label:e.name||e.macAddress})))}},R=m({search:b().optional(),darkMode:l([`all`,`enabled`,`disabled`]).default(`all`),screenSaver:l([`all`,`enabled`,`disabled`]).default(`all`),state:l([`all`,`offline`,`online`]).default(`all`),states:u(l([`connected`,`disconnected`,`lost`,`unknown`]))}),z={search:void 0,darkMode:`all`,screenSaver:`all`,state:`all`,states:[]},B={by:`name`,dir:`asc`},V=()=>{let e=f().getStore(C),{firstLoad:n,semaphore:r}=g(e),{filters:i,sort:o,pagination:c,reset:l}=_({key:`${E}:displays:list`,filters:{schema:R,defaults:z},sort:{defaults:[B]},pagination:{defaults:{page:1,size:10}},syncQuery:!0,version:1}),u=a(()=>i.value.search!==z.search||!(0,F.isEqual)(i.value.darkMode,z.darkMode)||!(0,F.isEqual)(i.value.screenSaver,z.screenSaver)||!(0,F.isEqual)(i.value.state,z.state)||!(0,F.isEqual)(i.value.states,z.states)),d=s(c.value.size||10),p=s(c.value.page||1),m=s(o.value.length>0?o.value[0]?.by:void 0),h=s(o.value.length>0?o.value[0]?.dir??null:null),v=a(()=>y(e.findAll().filter(e=>!e.draft&&(!i.value.search||e.id.toLowerCase().includes(i.value.search.toLowerCase())||e.name?.toLowerCase().includes(i.value.search.toLowerCase())||e.macAddress.toLowerCase().includes(i.value.search.toLowerCase())||e.version.toLowerCase().includes(i.value.search.toLowerCase()))&&(i.value.darkMode===`all`||i.value.darkMode===`enabled`&&e.darkMode||i.value.darkMode===`disabled`&&!e.darkMode)&&(i.value.screenSaver===`all`||i.value.screenSaver===`enabled`&&e.screenSaver||i.value.screenSaver===`disabled`&&!e.screenSaver)&&(!i.value.states||i.value.states.length===0||i.value.states.includes(e.status??`unknown`))&&(i.value.state===`all`||i.value.state===`online`&&e.status===`connected`||i.value.state===`offline`&&[`disconnected`,`lost`,`unknown`].includes(e.status??`unknown`))),[e=>{switch(m.value){case`name`:return e.name||e.macAddress;case`version`:return e.version;case`screenWidth`:return e.screenWidth??0;case`status`:return e.status??`unknown`;default:return e.name||e.macAddress}}],[h.value===`asc`?`asc`:`desc`])),b=a(()=>{let e=(p.value-1)*d.value,t=e+d.value;return v.value.slice(e,t)}),x=async()=>{await e.fetch()},S=a(()=>r.value.fetching.items||!n.value),w=a(()=>n.value),T=a(()=>e.findAll().filter(e=>!e.draft).length);return t(()=>c.value,e=>{p.value=e.page??1,d.value=e.size??10},{deep:!0}),t(()=>p.value,e=>{c.value.page=e}),t(()=>d.value,e=>{c.value.size=e}),t(()=>h.value,e=>{m.value===void 0||e===null?o.value=[]:o.value=[{by:m.value,dir:e}]}),t(()=>m.value,e=>{e===void 0?o.value=[]:o.value=[{by:e,dir:h.value}]}),{displays:v,displaysPaginated:b,totalRows:T,areLoading:S,loaded:w,fetchDisplays:x,filters:i,filtersActive:u,paginateSize:d,paginatePage:p,sortBy:m,sortDir:h,resetFilter:l}},H=()=>{let e=f().getStore(C),{t}=r(),n=h();return{remove:async r=>{let i=e?.findById(r);if(!i){n.error(t(`displaysModule.messages.notFound`));return}try{await p.confirm(t(`displaysModule.messages.confirmRemove`,{name:i.name||i.macAddress}),t(`displaysModule.headings.removeDisplay`),{confirmButtonText:t(`displaysModule.buttons.yes.title`),cancelButtonText:t(`displaysModule.buttons.no.title`),type:`warning`}),await e.remove({id:r}),n.success(t(`displaysModule.messages.removed`))}catch{}},bulkRemove:async r=>{if(r.length!==0)try{await p.confirm(t(`displaysModule.messages.confirmBulkRemove`,{count:r.length}),t(`displaysModule.headings.removeBulkDisplays`),{confirmButtonText:t(`displaysModule.buttons.yes.title`),cancelButtonText:t(`displaysModule.buttons.no.title`),type:`warning`});let i=0,a=0;for(let t of r)try{await e.remove({id:t.id}),i++}catch{a++}i>0&&n.success(t(`displaysModule.messages.bulkRemoved`,{count:i})),a>0&&n.error(t(`displaysModule.messages.bulkRemoveFailed`,{count:a}))}catch{}}}},U=()=>{let e=S(),t=d(),n=s(null),r=s(!1),i=s(!1),c=a(()=>n.value?.available??!1),l=a(()=>n.value?.active??!1),u=a(()=>n.value?.deploymentMode??`combined`),f=a(()=>n.value?.remainingTime??null),p=a(()=>{let e=f.value;return e===null?0:Math.ceil(e/1e3)}),m=a(()=>{let e=p.value;return e<=0?`0:00`:`${Math.floor(e/60)}:${(e%60).toString().padStart(2,`0`)}`}),h=async()=>{try{r.value=!0;let{data:t}=await e.client.GET(`/${o}/${T}/displays/permit-join/status`);if(t?.data){let e=t.data;n.value={active:e.active??!1,expiresAt:e.expires_at?new Date(e.expires_at):null,remainingTime:e.remaining_time??null,deploymentMode:e.deployment_mode??`combined`,available:e.available??!1}}}catch(e){throw t.error(`Failed to fetch permit join status`,e),new M(`Failed to fetch permit join status`)}finally{r.value=!1}};return{status:n,loading:r,activating:i,isAvailable:c,isActive:l,deploymentMode:u,remainingTime:f,remainingTimeSeconds:p,remainingTimeFormatted:m,fetchStatus:h,activate:async()=>{try{i.value=!0,await e.client.POST(`/${o}/${T}/displays/permit-join`),await h()}catch(e){throw t.error(`Failed to activate permit join`,e),new M(`Failed to activate permit join`)}finally{i.value=!1}},deactivate:async()=>{try{i.value=!0,await e.client.DELETE(`/${o}/${T}/displays/permit-join`,{}),await h()}catch(e){throw t.error(`Failed to deactivate permit join`,e),new M(`Failed to deactivate permit join`)}finally{i.value=!1}}}};export{I as a,N as c,T as d,O as f,w as g,j as h,L as i,D as l,A as m,H as n,P as o,k as p,V as r,M as s,U as t,E as u};
1
+ import"./chunk-DECur_0Z.js";import{Nr as e,Xr as t,ci as n,d as r,fi as i,mr as a,n as o,ui as s}from"./icon-with-child-DmQ_XhQy.js";import{Lr as c,Mn as l,Pn as u,S as d,T as f,Ur as p,Wn as m,_ as h,ba as g,f as _,m as v,pn as y,qn as b,wn as x,y as S}from"./common-1h7wnZKI.js";import{t as C}from"./keys-DWeeqbdi.js";var w=e=>{let n=f().getStore(C),{tokenRefreshTriggers:r}=g(n),i=d(),o=s([]),l=a(()=>e.value===null?null:n?.findById(e.value)??null),u=a(()=>e.value===null?!1:n?.getting(e.value)??!1),p=async()=>{if(e.value!==null)try{await n?.get({id:e.value})}catch(e){i.error(`Failed to fetch display:`,e)}},m=async()=>{if(e.value!==null)try{o.value=await n?.getTokens({id:e.value})??[]}catch(e){i.error(`Failed to fetch display tokens:`,e),o.value=[]}};return c(a(()=>{if(e.value===null||!n)return 0;let t=r.value;return!t||typeof t!=`object`?0:t[e.value]??0}),async()=>{if(e.value!==null)try{await m()}catch(e){i.error(`Failed to refresh tokens:`,e)}},{debounce:300}),t(()=>e.value,async e=>{if(e!==null&&n?.findById(e)===null)try{await p()}catch(e){i.error(`Failed to fetch display on id change:`,e)}},{immediate:!0}),{display:l,tokens:o,isLoading:u,fetchDisplay:p,fetchTokens:m,revokeToken:async()=>{if(e.value===null)return!1;let t=await n?.revokeToken({id:e.value});return t&&(o.value=[]),t??!1}}},T=`displays`,E=`displays-module`,D=`DisplaysModule.`,O=function(e){return e.DISPLAY_CREATED=`DisplaysModule.Display.Created`,e.DISPLAY_UPDATED=`DisplaysModule.Display.Updated`,e.DISPLAY_DELETED=`DisplaysModule.Display.Deleted`,e.DISPLAY_TOKEN_REVOKED=`DisplaysModule.Display.TokenRevoked`,e}({}),k=function(e){return e.NONE=`none`,e.WORKING=`working`,e.ERROR=`error`,e.OK=`ok`,e}({}),A={DISPLAYS:`displays_module-displays`,DISPLAYS_EDIT:`displays_module-displays_edit`,DISPLAY:`displays_module-display`,DISPLAY_EDIT:`displays_module-display_edit`,DISPLAY_TOKENS:`displays_module-display_tokens`},j=[{value:15,labelKey:`15s`},{value:30,labelKey:`30s`},{value:60,labelKey:`1min`},{value:120,labelKey:`2min`},{value:300,labelKey:`5min`},{value:600,labelKey:`10min`},{value:1800,labelKey:`30min`},{value:0,labelKey:`never`}],M=class extends Error{exception;constructor(e,t=null){super(e),this.name=`DisplaysException`,this.exception=t}},N=class extends M{constructor(e,t=null){super(e,t),this.name=`DisplaysValidationException`}},P=class extends M{code;constructor(e,t=null,n=null){super(e,n),this.name=`DisplaysApiException`,this.code=t}},F=x(),I=({display:a,messages:o})=>{let c=f().getStore(C),{t:l}=r(),u=h(),d=s(k.NONE),p,m=n({id:a.id,name:a.name,role:a.role,roomId:a.roomId,unitSize:a.unitSize,rows:a.rows,cols:a.cols,brightness:a.brightness,screenLockDuration:a.screenLockDuration,darkMode:a.darkMode,screenSaver:a.screenSaver,screenPowerOff:a.screenPowerOff,speaker:a.speaker,speakerVolume:a.speakerVolume,microphone:a.microphone,microphoneVolume:a.microphoneVolume,homeMode:a.homeMode,homePageId:a.homePageId,numberFormat:a.numberFormat??``,temperatureUnit:a.temperatureUnit??``,windSpeedUnit:a.windSpeedUnit??``,pressureUnit:a.pressureUnit??``,precipitationUnit:a.precipitationUnit??``,distanceUnit:a.distanceUnit??``,weatherLocationId:a.weatherLocationId??null}),g=v(i(m)),_=s(void 0),y=s(!1),b=async()=>{let e=o&&o.error?o.error:l(`displaysModule.messages.notEdited`,{display:a.name||a.macAddress});if(!_.value)throw new N(`Form element is not available`);if(_.value.clearValidate(),!await _.value.validate())throw new N(`Form not valid`);d.value=k.WORKING;try{let e={name:m.name||null,role:m.role,roomId:m.role===`room`?m.roomId:null,unitSize:m.unitSize,rows:m.rows,cols:m.cols,brightness:m.brightness,screenLockDuration:m.screenLockDuration,darkMode:m.darkMode,screenSaver:m.screenSaver,screenPowerOff:m.screenPowerOff,homeMode:m.homeMode,homePageId:m.homeMode===`explicit`?m.homePageId:null,numberFormat:m.numberFormat||null,temperatureUnit:m.temperatureUnit||null,windSpeedUnit:m.windSpeedUnit||null,pressureUnit:m.pressureUnit||null,precipitationUnit:m.precipitationUnit||null,distanceUnit:m.distanceUnit||null,weatherLocationId:m.weatherLocationId||null};a.audioOutputSupported&&(e.speaker=m.speaker,e.speakerVolume=m.speakerVolume),a.audioInputSupported&&(e.microphone=m.microphone,e.microphoneVolume=m.microphoneVolume),await c.edit({id:a.id,data:e})}catch(t){throw d.value=k.ERROR,p=window.setTimeout(x,2e3),t instanceof P&&t.code===422?u.error(t.message):u.error(e),t}return d.value=k.OK,p=window.setTimeout(x,2e3),u.success(l(o&&o.success?o.success:`displaysModule.messages.edited`,{display:a.name||a.macAddress})),y.value=!1,g=v(i(m)),`saved`},x=()=>{p!==void 0&&(window.clearTimeout(p),p=void 0),d.value=k.NONE};return t(m,()=>{y.value=!(0,F.isEqual)(i(m),g)}),e(()=>{x()}),{model:m,formEl:_,formChanged:y,submit:b,clear:x,formResult:d}},L=()=>{let e=f().getStore(C),{firstLoad:t}=g(e),n=a(()=>e?.findAll()??[]);return{displays:n,isLoading:a(()=>e?.fetching()??!1),isLoaded:a(()=>t.value),fetchDisplays:async()=>{await e?.fetch()},options:a(()=>n.value.map(e=>({value:e.id,label:e.name||e.macAddress})))}},R=m({search:b().optional(),darkMode:l([`all`,`enabled`,`disabled`]).default(`all`),screenSaver:l([`all`,`enabled`,`disabled`]).default(`all`),state:l([`all`,`offline`,`online`]).default(`all`),states:u(l([`connected`,`disconnected`,`lost`,`unknown`]))}),z={search:void 0,darkMode:`all`,screenSaver:`all`,state:`all`,states:[]},B={by:`name`,dir:`asc`},V=()=>{let e=f().getStore(C),{firstLoad:n,semaphore:r}=g(e),{filters:i,sort:o,pagination:c,reset:l}=_({key:`${E}:displays:list`,filters:{schema:R,defaults:z},sort:{defaults:[B]},pagination:{defaults:{page:1,size:10}},syncQuery:!0,version:1}),u=a(()=>i.value.search!==z.search||!(0,F.isEqual)(i.value.darkMode,z.darkMode)||!(0,F.isEqual)(i.value.screenSaver,z.screenSaver)||!(0,F.isEqual)(i.value.state,z.state)||!(0,F.isEqual)(i.value.states,z.states)),d=s(c.value.size||10),p=s(c.value.page||1),m=s(o.value.length>0?o.value[0]?.by:void 0),h=s(o.value.length>0?o.value[0]?.dir??null:null),v=a(()=>y(e.findAll().filter(e=>!e.draft&&(!i.value.search||e.id.toLowerCase().includes(i.value.search.toLowerCase())||e.name?.toLowerCase().includes(i.value.search.toLowerCase())||e.macAddress.toLowerCase().includes(i.value.search.toLowerCase())||e.version.toLowerCase().includes(i.value.search.toLowerCase()))&&(i.value.darkMode===`all`||i.value.darkMode===`enabled`&&e.darkMode||i.value.darkMode===`disabled`&&!e.darkMode)&&(i.value.screenSaver===`all`||i.value.screenSaver===`enabled`&&e.screenSaver||i.value.screenSaver===`disabled`&&!e.screenSaver)&&(!i.value.states||i.value.states.length===0||i.value.states.includes(e.status??`unknown`))&&(i.value.state===`all`||i.value.state===`online`&&e.status===`connected`||i.value.state===`offline`&&[`disconnected`,`lost`,`unknown`].includes(e.status??`unknown`))),[e=>{switch(m.value){case`name`:return e.name||e.macAddress;case`version`:return e.version;case`screenWidth`:return e.screenWidth??0;case`status`:return e.status??`unknown`;default:return e.name||e.macAddress}}],[h.value===`asc`?`asc`:`desc`])),b=a(()=>{let e=(p.value-1)*d.value,t=e+d.value;return v.value.slice(e,t)}),x=async()=>{await e.fetch()},S=a(()=>r.value.fetching.items||!n.value),w=a(()=>n.value),T=a(()=>e.findAll().filter(e=>!e.draft).length);return t(()=>c.value,e=>{p.value=e.page??1,d.value=e.size??10},{deep:!0}),t(()=>p.value,e=>{c.value.page=e}),t(()=>d.value,e=>{c.value.size=e}),t(()=>h.value,e=>{m.value===void 0||e===null?o.value=[]:o.value=[{by:m.value,dir:e}]}),t(()=>m.value,e=>{e===void 0?o.value=[]:o.value=[{by:e,dir:h.value}]}),{displays:v,displaysPaginated:b,totalRows:T,areLoading:S,loaded:w,fetchDisplays:x,filters:i,filtersActive:u,paginateSize:d,paginatePage:p,sortBy:m,sortDir:h,resetFilter:l}},H=()=>{let e=f().getStore(C),{t}=r(),n=h();return{remove:async r=>{let i=e?.findById(r);if(!i){n.error(t(`displaysModule.messages.notFound`));return}try{await p.confirm(t(`displaysModule.messages.confirmRemove`,{name:i.name||i.macAddress}),t(`displaysModule.headings.removeDisplay`),{confirmButtonText:t(`displaysModule.buttons.yes.title`),cancelButtonText:t(`displaysModule.buttons.no.title`),type:`warning`}),await e.remove({id:r}),n.success(t(`displaysModule.messages.removed`))}catch{}},bulkRemove:async r=>{if(r.length!==0)try{await p.confirm(t(`displaysModule.messages.confirmBulkRemove`,{count:r.length}),t(`displaysModule.headings.removeBulkDisplays`),{confirmButtonText:t(`displaysModule.buttons.yes.title`),cancelButtonText:t(`displaysModule.buttons.no.title`),type:`warning`});let i=0,a=0;for(let t of r)try{await e.remove({id:t.id}),i++}catch{a++}i>0&&n.success(t(`displaysModule.messages.bulkRemoved`,{count:i})),a>0&&n.error(t(`displaysModule.messages.bulkRemoveFailed`,{count:a}))}catch{}}}},U=()=>{let e=S(),t=d(),n=s(null),r=s(!1),i=s(!1),c=a(()=>n.value?.available??!1),l=a(()=>n.value?.active??!1),u=a(()=>n.value?.deploymentMode??`combined`),f=a(()=>n.value?.remainingTime??null),p=a(()=>{let e=f.value;return e===null?0:Math.ceil(e/1e3)}),m=a(()=>{let e=p.value;return e<=0?`0:00`:`${Math.floor(e/60)}:${(e%60).toString().padStart(2,`0`)}`}),h=async()=>{try{r.value=!0;let{data:t}=await e.client.GET(`/${o}/${T}/displays/permit-join/status`);if(t?.data){let e=t.data;n.value={active:e.active??!1,expiresAt:e.expires_at?new Date(e.expires_at):null,remainingTime:e.remaining_time??null,deploymentMode:e.deployment_mode??`combined`,available:e.available??!1}}}catch(e){throw t.error(`Failed to fetch permit join status`,e),new M(`Failed to fetch permit join status`)}finally{r.value=!1}};return{status:n,loading:r,activating:i,isAvailable:c,isActive:l,deploymentMode:u,remainingTime:f,remainingTimeSeconds:p,remainingTimeFormatted:m,fetchStatus:h,activate:async()=>{try{i.value=!0,await e.client.POST(`/${o}/${T}/displays/permit-join`),await h()}catch(e){throw t.error(`Failed to activate permit join`,e),new M(`Failed to activate permit join`)}finally{i.value=!1}},deactivate:async()=>{try{i.value=!0,await e.client.DELETE(`/${o}/${T}/displays/permit-join`,{}),await h()}catch(e){throw t.error(`Failed to deactivate permit join`,e),new M(`Failed to deactivate permit join`)}finally{i.value=!1}}}};export{I as a,N as c,T as d,O as f,w as g,j as h,L as i,D as l,A as m,H as n,P as o,k as p,V as r,M as s,U as t,E as u};