@fastybird/smart-panel-admin 0.1.0-alpha.5 → 0.1.0-alpha.6

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-C8k05jix.js → card-add-form-Pxgzb_ci.js} +1 -1
  2. package/dist/assets/{card-edit-form-B4Wy_x66.js → card-edit-form-CON4jaIo.js} +1 -1
  3. package/dist/assets/{common-DlW3qRTQ.js → common-DyDAwGBz.js} +4 -4
  4. package/dist/assets/{components-o_FTQqv1.js → components--65VzRQH.js} +1 -1
  5. package/dist/assets/{components-DlofbaXq.js → components-BPdLRVnA.js} +2 -2
  6. package/dist/assets/{components-BFT9ksvz.js → components-BerPwVp-.js} +1 -1
  7. package/dist/assets/{components-DRDcqY-d.js → components-CQOBigIL.js} +1 -1
  8. package/dist/assets/{components-D8PpAJgM.js → components-CgyOM-CC.js} +1 -1
  9. package/dist/assets/{components-tvaQsmsk.js → components-Cvj-jTXV.js} +2 -2
  10. package/dist/assets/{components-DBRr1g1A.js → components-DyHKXGO-.js} +1 -1
  11. package/dist/assets/{components-4pZvmdD8.js → components-mclHZ55p.js} +1 -1
  12. package/dist/assets/{composables-CLHFuu4k.js → composables-B6gv3LxR.js} +1 -1
  13. package/dist/assets/{composables-COu_3hI8.js → composables-Bg2MBx7D.js} +1 -1
  14. package/dist/assets/{composables-CU6q9-8B.js → composables-C9x-efDp.js} +1 -1
  15. package/dist/assets/{composables-m3XA9ZFJ.js → composables-CVFi60Du.js} +1 -1
  16. package/dist/assets/{composables-CzSTR7jk.js → composables-DZYr3rl3.js} +1 -1
  17. package/dist/assets/{composables-Da97cjje.js → composables-DdqAQ2NN.js} +1 -1
  18. package/dist/assets/{composables-BTOG7VNs2.js → composables-EOIIyvfq2.js} +1 -1
  19. package/dist/assets/{composables-Cl0F9F_S.js → composables-UlKjXsBi.js} +1 -1
  20. package/dist/assets/{composables-CjGTzpGj.js → composables-lfdMtVU8.js} +1 -1
  21. package/dist/assets/{dashboard-DilMazDB.js → dashboard-DfhAHLf_.js} +2 -2
  22. package/dist/assets/{dashboard.types-DHlozs9y.js → dashboard.types-Jem1nlEy.js} +1 -1
  23. package/dist/assets/{data-source-edit-form-mTdgdACg.js → data-source-edit-form-DhRIUxuw.js} +1 -1
  24. package/dist/assets/{drawer-Db27jij8.js → drawer-BC8DYcvI.js} +1 -1
  25. package/dist/assets/{index-DW2Q2Ef8.js → index-BDDqdVnT.js} +4 -4
  26. package/dist/assets/{input-number-BF0uWlX2.js → input-number-ZxkWRYbD.js} +1 -1
  27. package/dist/assets/{integration-config-dialog-DCF8K0UE.js → integration-config-dialog-ByYgxK4S.js} +1 -1
  28. package/dist/assets/{layout-config-DkSTscYx.js → layout-config-BNu3S7S4.js} +1 -1
  29. package/dist/assets/{layout-default-LKbviw7y.js → layout-default-BPXnOfmF.js} +1 -1
  30. package/dist/assets/{layout-lock-Cp5xh9ot.js → layout-lock--gkSv3un.js} +1 -1
  31. package/dist/assets/layout-profile-D_3OGioj.js +1 -0
  32. package/dist/assets/{layout-profile-wkO5hDf5.js → layout-profile-sLgAVYMg.js} +1 -1
  33. package/dist/assets/{layout-sign-C8xK52Nq.js → layout-sign-CiXTWrEu.js} +1 -1
  34. package/dist/assets/layout-sign-DjzS064d.js +1 -0
  35. package/dist/assets/{list-data-sources-adjust-Bj-0Adap.js → list-data-sources-adjust-D8QPNWre.js} +1 -1
  36. package/dist/assets/{list-locations-BM5Yvsew.js → list-locations-BFPqF3i-.js} +1 -1
  37. package/dist/assets/{list-users-dBZVseES.js → list-users-CYCm53K6.js} +1 -1
  38. package/dist/assets/{logs-entries.transformers-BRzpY2MS.js → logs-entries.transformers-B17JQgGx.js} +1 -1
  39. package/dist/assets/{page-configure-BLho4eEA.js → page-configure-ChpS6Or7.js} +1 -1
  40. package/dist/assets/{page-configure-1ENlHHe8.js → page-configure-xghKYXvV.js} +1 -1
  41. package/dist/assets/{pagination-BN87kdDs.js → pagination-DejKh2TT.js} +1 -1
  42. package/dist/assets/{popover-DOg0KdzK.js → popover-BW83aJP4.js} +1 -1
  43. package/dist/assets/{radio-BmI00y-5.js → radio-BvpKu4BH.js} +1 -1
  44. package/dist/assets/{scene-add-form-DdmUnhy5.js → scene-add-form-v31kuUJe.js} +1 -1
  45. package/dist/assets/{scene-edit-form-BeXK9ZM1.js → scene-edit-form-CURoaMiA.js} +1 -1
  46. package/dist/assets/{select-data-source-plugin-CtXn9m8K.js → select-data-source-plugin-CvsohGgN.js} +1 -1
  47. package/dist/assets/{slider-YJlo4Ibo.js → slider-CS5SsQJB.js} +1 -1
  48. package/dist/assets/{steps-BIGbhQaO.js → steps-B6e2Hpk1.js} +1 -1
  49. package/dist/assets/{table-5pjI7ihN.js → table-DEzwgEz4.js} +1 -1
  50. package/dist/assets/{tile-detail-COru-nDQ.js → tile-detail-DQXNcHh_.js} +1 -1
  51. package/dist/assets/{tile-edit-form-jjo5FbvD.js → tile-edit-form-BXWm1wW5.js} +1 -1
  52. package/dist/assets/{types-B8upWpl6.js → types-DQmL99Jz.js} +1 -1
  53. package/dist/assets/{useBuddyChat-DREu7Tv5.js → useBuddyChat-CGKBq3sR.js} +1 -1
  54. package/dist/assets/{useDataSources-Bx93bXrZ.js → useDataSources-D1fe9MPt.js} +1 -1
  55. package/dist/assets/{useDevices-CuJhDHbf.js → useDevices-oOyjupML.js} +1 -1
  56. package/dist/assets/{useGeolocation-QxCQnrMH.js → useGeolocation-Bn0Ka28s.js} +1 -1
  57. package/dist/assets/{useLocation-BM-8kEbz.js → useLocation-DmKkc95i.js} +1 -1
  58. package/dist/assets/{usePage-DTL4RY9u.js → usePage-B4kb2gRl.js} +1 -1
  59. package/dist/assets/{useSpaces-DnSZteHf.js → useSpaces-LfBlMH_H.js} +1 -1
  60. package/dist/assets/{view-buddy-chat-DKryg2MX.js → view-buddy-chat-2LOZupni.js} +1 -1
  61. package/dist/assets/{view-card-add-CYZ9eXg5.js → view-card-add-PWabVoVQ.js} +1 -1
  62. package/dist/assets/{view-card-edit-C5zcGDFz.js → view-card-edit-DEJBolH-.js} +1 -1
  63. package/dist/assets/{view-channel-IJiMTDSG.js → view-channel-BHDhS4p-.js} +1 -1
  64. package/dist/assets/{view-channel-add-YCqERQS-.js → view-channel-add-BCtvWXrd.js} +1 -1
  65. package/dist/assets/{view-channel-edit-Dnct_m0O.js → view-channel-edit-BTyoazYZ.js} +1 -1
  66. package/dist/assets/{view-channel-property-add-CoaudIGV.js → view-channel-property-add-ruykaYtd.js} +1 -1
  67. package/dist/assets/{view-channel-property-edit-g0J-yPAY.js → view-channel-property-edit-BnYYqxkX.js} +1 -1
  68. package/dist/assets/{view-channels--BS5J8Ro.js → view-channels-CmrrHeQA.js} +1 -1
  69. package/dist/assets/{view-config-module-edit-RW7YEgut.js → view-config-module-edit-FmOaydgI.js} +1 -1
  70. package/dist/assets/{view-config-modules-Bi5Ib06n.js → view-config-modules-P71Gx-Ox.js} +1 -1
  71. package/dist/assets/{view-config-plugin-edit-CviUNBYF.js → view-config-plugin-edit-C6_fE8lN.js} +1 -1
  72. package/dist/assets/{view-config-plugins-BBxIkmDq.js → view-config-plugins-1dCE5KY4.js} +1 -1
  73. package/dist/assets/{view-data-source-add-3vF7foLh.js → view-data-source-add-COea4cEq.js} +1 -1
  74. package/dist/assets/{view-data-source-add-CNRJiOEl.js → view-data-source-add-Ctkk4rH0.js} +1 -1
  75. package/dist/assets/{view-data-source-edit-5xrflzsE.js → view-data-source-edit-DSVnEdb0.js} +1 -1
  76. package/dist/assets/{view-data-source-edit-BJeCPFQo.js → view-data-source-edit-dwsWJDG4.js} +1 -1
  77. package/dist/assets/{view-device-C6EIYm4K.js → view-device-TNAtLE-u.js} +1 -1
  78. package/dist/assets/{view-device-add-Dtg4hKNb.js → view-device-add-DOMsL_By.js} +1 -1
  79. package/dist/assets/{view-device-control-D14Yf_3B.js → view-device-control-D3bWbQy2.js} +1 -1
  80. package/dist/assets/{view-device-edit-D3wfo1SZ.js → view-device-edit-BSrgYuAM.js} +1 -1
  81. package/dist/assets/{view-devices-CQyYakG6.js → view-devices-D0fUuW0C.js} +1 -1
  82. package/dist/assets/{view-display-BoDjtT_C.js → view-display-CZPK0L_O.js} +1 -1
  83. package/dist/assets/{view-display-edit-DOBx3FR9.js → view-display-edit-gByzGhMs.js} +1 -1
  84. package/dist/assets/{view-display-tokens-ylzZVdwc.js → view-display-tokens-BxHDs6uq.js} +1 -1
  85. package/dist/assets/{view-displays-Bv-jxEGc.js → view-displays-CewYxCVw.js} +1 -1
  86. package/dist/assets/{view-extension-detail-BAuEjk3c.js → view-extension-detail-DSs3NVxd.js} +1 -1
  87. package/dist/assets/{view-extensions-xnAarDlC.js → view-extensions-piIsPNf6.js} +1 -1
  88. package/dist/assets/{view-location-BbOLMWOk.js → view-location-CSl3EEVR.js} +1 -1
  89. package/dist/assets/{view-location-add-B3Bljsk2.js → view-location-add-DAJfdCWA.js} +1 -1
  90. package/dist/assets/{view-location-edit-Csq0lDWt.js → view-location-edit-DzRxnPA5.js} +1 -1
  91. package/dist/assets/{view-locations-DF-FXbjv.js → view-locations-lurkMZH_.js} +1 -1
  92. package/dist/assets/{view-lock-screen-ClIhVZNt.js → view-lock-screen-C2ycj8hs.js} +1 -1
  93. package/dist/assets/{view-onboarding-vZhyo5Yl.js → view-onboarding-dzzRbXxx.js} +1 -1
  94. package/dist/assets/{view-page-DCmbFTnE.js → view-page-71AaAyYY.js} +1 -1
  95. package/dist/assets/{view-page-add-Cpzp9lXV.js → view-page-add-Bf9pNL0Y.js} +1 -1
  96. package/dist/assets/{view-page-configure-b5zQ9PXr.js → view-page-configure-DFlrn4ng.js} +1 -1
  97. package/dist/assets/{view-page-configure-c8DaItoq.js → view-page-configure-DZZgAftY.js} +1 -1
  98. package/dist/assets/{view-page-data-source-add-CJMzSAGm.js → view-page-data-source-add-BumAmlK1.js} +1 -1
  99. package/dist/assets/{view-page-data-source-edit-BI5AXiNz.js → view-page-data-source-edit-CKQj40z8.js} +1 -1
  100. package/dist/assets/{view-page-edit-fw913SDe.js → view-page-edit-DsVBb_0a.js} +1 -1
  101. package/dist/assets/{view-page-plugin-BrlvGuEU.js → view-page-plugin-zbDx-8k2.js} +1 -1
  102. package/dist/assets/{view-pages-DVvpvvkt.js → view-pages-CzrtWNsy.js} +1 -1
  103. package/dist/assets/{view-profile-general-jV0TcOZC.js → view-profile-general-4XvU3hOw.js} +1 -1
  104. package/dist/assets/{view-profile-security-CPgtYKl1.js → view-profile-security-tUXZtBfp.js} +1 -1
  105. package/dist/assets/{view-scene-add-CT1MOXtu.js → view-scene-add-DYx7wqWm.js} +1 -1
  106. package/dist/assets/{view-scene-edit-4B1IzMuu.js → view-scene-edit-BNLlsUWW.js} +1 -1
  107. package/dist/assets/{view-scenes-DoDkd08z.js → view-scenes-DPZBf6hH.js} +1 -1
  108. package/dist/assets/{view-sign-in-CC7zlx9Q.js → view-sign-in-Dn7Sueav.js} +1 -1
  109. package/dist/assets/{view-sign-up-B1l4jvOx.js → view-sign-up-BT4JPoJG.js} +1 -1
  110. package/dist/assets/{view-space-VnVbkvKT.js → view-space-DCq1Iggu.js} +1 -1
  111. package/dist/assets/{view-space-add-DwONNuir.js → view-space-add-DChQBXFH.js} +1 -1
  112. package/dist/assets/{view-space-edit-44iZOBav.js → view-space-edit-BCS0kMTe.js} +1 -1
  113. package/dist/assets/{view-spaces-CuuMx0iT.js → view-spaces-B9N_NjpZ.js} +1 -1
  114. package/dist/assets/{view-spaces-onboarding-CN6qrfN6.js → view-spaces-onboarding-JIX4TcWu.js} +1 -1
  115. package/dist/assets/{view-stats-F8sYkha0.js → view-stats-D3jkSeCi.js} +1 -1
  116. package/dist/assets/{view-system-info-AVyQIUWe.js → view-system-info-Bj795uHO.js} +1 -1
  117. package/dist/assets/{view-system-log-detail-sgFgbNjX.js → view-system-log-detail-BDgL1D5J.js} +1 -1
  118. package/dist/assets/{view-system-logs-eIoNhI5c.js → view-system-logs-DebD3h5V.js} +1 -1
  119. package/dist/assets/{view-tile-add-B7mnK_PA.js → view-tile-add-BNt_lwb1.js} +1 -1
  120. package/dist/assets/{view-tile-add-Yt_KOkky.js → view-tile-add-wMJtoCQn.js} +1 -1
  121. package/dist/assets/{view-tile-data-source-add-DxaZd4Dp.js → view-tile-data-source-add-BQeH_vRs.js} +1 -1
  122. package/dist/assets/{view-tile-data-source-edit-jzGg3dBQ.js → view-tile-data-source-edit-D2d0Esvp.js} +1 -1
  123. package/dist/assets/{view-tile-edit-kHjMhT9e.js → view-tile-edit-CEbfDUeY.js} +1 -1
  124. package/dist/assets/{view-tile-edit-b2LCLrB5.js → view-tile-edit-CH5cKzYp.js} +1 -1
  125. package/dist/assets/{view-tile-edit-hbO-vs_Y.js → view-tile-edit-D9COp79j.js} +1 -1
  126. package/dist/assets/{view-tile-t4cTwgz2.js → view-tile-phBBfQoi.js} +1 -1
  127. package/dist/assets/{view-user-add-CdlbezB7.js → view-user-add-D3EkKSML.js} +1 -1
  128. package/dist/assets/{view-user-edit-S0Up49jC.js → view-user-edit-ColYWEea.js} +1 -1
  129. package/dist/assets/{view-users-B-m50sCU.js → view-users-BmX2uwUd.js} +1 -1
  130. package/dist/assets/{weather-forecast.transformers-CxZiOJKt.js → weather-forecast.transformers-Bq4YleIF.js} +1 -1
  131. package/dist/assets/{weather-751GlpD1.js → weather-ll5NQwKh.js} +2 -2
  132. package/dist/index.html +50 -50
  133. package/package.json +1 -1
  134. package/dist/assets/layout-profile-ByHuBl2Y.js +0 -1
  135. package/dist/assets/layout-sign-CjJVcqWG.js +0 -1
@@ -1 +1 @@
1
- import"./chunk-DECur_0Z.js";import{Xr as e,ci as t,d as n,mr as r,ui as i}from"./icon-with-child-DmQ_XhQy.js";import{T as a,Vr as o,Zn as s,_ as c,m as l,pn as u,va as d,wn as f}from"./common-DlW3qRTQ.js";var p=`users`,m=`users-module`,h=`UsersModule.`,g=function(e){return e.USER_CREATED=`UsersModule.User.Created`,e.USER_UPDATED=`UsersModule.User.Updated`,e.USER_DELETED=`UsersModule.User.Deleted`,e.USER_RESET=`UsersModule.User.Reset`,e.MODULE_RESET=`UsersModule.All.Reset`,e}({}),_=function(e){return e.NONE=`none`,e.WORKING=`working`,e.ERROR=`error`,e.OK=`ok`,e}({}),v={USERS:`users_module-users`,USER_ADD:`users_module-user-add`,USER_EDIT:`users_module-user-edit`},y=Symbol(`FB-Module-Users-UsersStore`),b=class extends Error{exception;constructor(e,t=null){super(e),this.name=`UsersException`,this.exception=t}},x=class extends b{code;constructor(e,t=null,n=null){super(e,n),this.name=`UsersApiException`,this.code=t}},S=class extends b{constructor(e,t=null){super(e,t),this.name=`UsersValidationException`}},C=({id:e})=>{let t=a().getStore(y),{data:n,semaphore:i}=d(t);return{user:r(()=>e===null?null:n.value[e]??null),isLoading:r(()=>i.value.fetching.item.includes(e)?!0:n.value[e]===void 0?i.value.fetching.items:!1),fetchUser:async()=>{n.value[e]?.draft||await t.get({id:e})}}},w=({id:r})=>{let o=a().getStore(y),{t:l}=n(),u=c(),d=i(_.NONE),f,p=t({username:``,password:``,repeatPassword:``,email:``,firstName:``,lastName:``,role:s.user}),m=i(void 0),h=i(!1),g=async()=>{let e=l(`usersModule.messages.notCreated`,{user:p.username});if(m.value.clearValidate(),!await m.value.validate())throw new S(`Form not valid`);d.value=_.WORKING;try{await o.add({id:r,draft:!1,data:{username:p.username,password:p.password,email:p.email?.trim()===``?null:p.email,firstName:p.firstName?.trim()===``?null:p.firstName,lastName:p.lastName?.trim()===``?null:p.lastName,role:p.role}})}catch(t){throw d.value=_.ERROR,f=window.setTimeout(v,2e3),t instanceof x&&t.code===422?u.error(t.message):u.error(e),t}return d.value=_.OK,f=window.setTimeout(v,2e3),u.success(l(`usersModule.messages.created`,{user:p.username})),`added`},v=()=>{window.clearTimeout(f),d.value=_.NONE};return e(p,e=>{e.username===``&&e.password===``&&e.email===``&&e.firstName===``&&e.lastName===``&&e.role===s.user?h.value=!1:h.value=!0}),{model:p,formEl:m,formChanged:h,submit:g,clear:v,formResult:d}},T=({user:r,messages:o})=>{let s=a().getStore(y),{t:l}=n(),u=c(),d=i(_.NONE),f,p=t({username:r.username,password:`secretpassword`,email:r.email||``,firstName:r.firstName||``,lastName:r.lastName||``,role:r.role}),m=i(void 0),h=i(!1),g=async()=>{let e=r.draft,t=o&&o.error?o.error:r.draft?l(`usersModule.messages.notCreated`,{user:r.username}):l(`usersModule.messages.notEdited`,{user:r.username});if(m.value.clearValidate(),!await m.value.validate())throw new S(`Form not valid`);d.value=_.WORKING;try{await s.edit({id:r.id,data:{email:!p.email||p.email.trim()===``?null:p.email,firstName:!p.firstName||p.firstName.trim()===``?null:p.firstName,lastName:!p.lastName||p.lastName.trim()===``?null:p.lastName,role:p.role}}),r.draft&&await s.save({id:r.id})}catch(e){throw d.value=_.ERROR,f=window.setTimeout(v,2e3),e instanceof x&&e.code===422?u.error(e.message):u.error(t),e}return d.value=_.OK,f=window.setTimeout(v,2e3),e?(u.success(l(o&&o.success?o.success:`usersModule.messages.created`,{user:r.username})),`added`):(u.success(l(o&&o.success?o.success:`usersModule.messages.edited`,{user:r.username})),`saved`)},v=()=>{window.clearTimeout(f),d.value=_.NONE};return e(p,e=>{e.email===r.email&&e.firstName===r.firstName&&e.lastName===r.lastName&&e.role===r.role?h.value=!1:h.value=!0}),{model:p,formEl:m,formChanged:h,submit:g,clear:v,formResult:d}},E=({user:r,messages:o})=>{let s=a().getStore(y),{t:l}=n(),u=c(),d=i(_.NONE),f,p=t({password:``,repeatPassword:``}),m=i(void 0),h=i(!1),g=async()=>{let e=o&&o.error?o.error:l(`usersModule.messages.notEdited`,{user:r.username});if(m.value.clearValidate(),!await m.value.validate())throw new S(`Form not valid`);d.value=_.WORKING;try{await s.edit({id:r.id,data:{password:p.password}}),r.draft&&await s.save({id:r.id})}catch(t){throw d.value=_.ERROR,f=window.setTimeout(v,2e3),t instanceof x&&t.code===422?u.error(t.message):u.error(e),t}return d.value=_.OK,f=window.setTimeout(v,2e3),u.success(l(o&&o.success?o.success:`usersModule.messages.edited`,{user:r.username})),`saved`},v=()=>{window.clearTimeout(f),d.value=_.NONE};return e(p,e=>{e.password===``&&e.repeatPassword===``?h.value=!1:h.value=!0}),{model:p,formEl:m,formChanged:h,submit:g,clear:v,formResult:d}},D=({user:r,messages:o})=>{let s=a().getStore(y),{t:l}=n(),u=c(),d=i(_.NONE),f,p=t({username:r.username}),m=i(void 0),h=i(!1),g=async()=>{let e=o&&o.error?o.error:l(`usersModule.messages.notEdited`,{user:r.username});if(m.value.clearValidate(),!await m.value.validate())throw new S(`Form not valid`);d.value=_.WORKING;try{await s.edit({id:r.id,data:{username:p.username}}),r.draft&&await s.save({id:r.id})}catch(t){throw d.value=_.ERROR,f=window.setTimeout(v,2e3),t instanceof x&&t.code===422?u.error(t.message):u.error(e),t}return d.value=_.OK,f=window.setTimeout(v,2e3),u.success(l(o&&o.success?o.success:`usersModule.messages.edited`,{user:r.username})),`saved`},v=()=>{window.clearTimeout(f),d.value=_.NONE};return e(p,e=>{h.value=e.username!==r.username}),{model:p,formEl:m,formChanged:h,submit:g,clear:v,formResult:d}},O=f(),k={search:void 0,roles:[]},A=()=>{let t=a().getStore(y),{firstLoad:n,semaphore:o}=d(t),s=i(10),c=i(1),f=i(l(k)),p=r(()=>f.value.search!==k.search||!(0,O.isEqual)(f.value.roles,k.roles)),m=i(`username`),h=i(`ascending`),g=r(()=>u(t.findAll().filter(e=>!e.draft&&(!f.value.search||e.username.toLowerCase().includes(f.value.search.toLowerCase()))&&(f.value.roles.length===0||f.value.roles.includes(e.role))),[e=>e[m.value]??``],[h.value===`ascending`?`asc`:`desc`])),_=r(()=>{let e=(c.value-1)*s.value,t=e+s.value;return g.value.slice(e,t)}),v=async()=>{await t.fetch()},b=r(()=>o.value.fetching.items||!n.value),x=r(()=>n.value),S=r(()=>t.findAll().filter(e=>!e.draft).length);return e(()=>f.value,()=>{c.value=1},{deep:!0}),{users:g,usersPaginated:_,totalRows:S,areLoading:b,loaded:x,fetchUsers:v,filters:f,filtersActive:p,paginateSize:s,paginatePage:c,sortBy:m,sortDir:h,resetFilter:()=>{f.value=l(k)}}},j=()=>{let{t:e}=n(),t=c(),r=a().getStore(y);return{remove:async n=>{let i=r.findById(n);if(i===null)throw new b(`Something went wrong, user can't be loaded`);o.confirm(e(`usersModule.texts.confirmRemove`,{user:i.username}),e(`usersModule.headings.remove`),{confirmButtonText:e(`usersModule.buttons.yes.title`),cancelButtonText:e(`usersModule.buttons.no.title`),type:`warning`}).then(async()=>{try{await r.remove({id:i.id}),t.success(e(`usersModule.messages.removed`,{user:i.username}))}catch(n){if(n instanceof x&&n.code===404){let n=e(`usersModule.messages.notFound`,{user:i.username});t.error(n)}else if(n instanceof x&&n.code===422)t.error(n.message);else{let n=e(`usersModule.messages.notRemoved`,{user:i.username});t.error(n)}}}).catch(()=>{t.info(e(`usersModule.messages.removeCanceled`,{user:i.username}))})},bulkRemove:async n=>{if(n.length!==0)try{await o.confirm(e(`usersModule.texts.confirmBulkRemove`,{count:n.length}),e(`usersModule.headings.removeBulk`),{confirmButtonText:e(`usersModule.buttons.yes.title`),cancelButtonText:e(`usersModule.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(`usersModule.messages.bulkRemoved`,{count:i})),a>0&&t.error(e(`usersModule.messages.bulkRemoveFailed`,{count:a}))}catch{}}}};export{p as _,T as a,x as c,y as d,g as f,m as g,h,E as i,b as l,v as m,A as n,w as o,_ as p,D as r,C as s,j as t,S as u};
1
+ import"./chunk-DECur_0Z.js";import{Xr as e,ci as t,d as n,mr as r,ui as i}from"./icon-with-child-DmQ_XhQy.js";import{T as a,Vr as o,Zn as s,_ as c,m as l,pn as u,va as d,wn as f}from"./common-DyDAwGBz.js";var p=`users`,m=`users-module`,h=`UsersModule.`,g=function(e){return e.USER_CREATED=`UsersModule.User.Created`,e.USER_UPDATED=`UsersModule.User.Updated`,e.USER_DELETED=`UsersModule.User.Deleted`,e.USER_RESET=`UsersModule.User.Reset`,e.MODULE_RESET=`UsersModule.All.Reset`,e}({}),_=function(e){return e.NONE=`none`,e.WORKING=`working`,e.ERROR=`error`,e.OK=`ok`,e}({}),v={USERS:`users_module-users`,USER_ADD:`users_module-user-add`,USER_EDIT:`users_module-user-edit`},y=Symbol(`FB-Module-Users-UsersStore`),b=class extends Error{exception;constructor(e,t=null){super(e),this.name=`UsersException`,this.exception=t}},x=class extends b{code;constructor(e,t=null,n=null){super(e,n),this.name=`UsersApiException`,this.code=t}},S=class extends b{constructor(e,t=null){super(e,t),this.name=`UsersValidationException`}},C=({id:e})=>{let t=a().getStore(y),{data:n,semaphore:i}=d(t);return{user:r(()=>e===null?null:n.value[e]??null),isLoading:r(()=>i.value.fetching.item.includes(e)?!0:n.value[e]===void 0?i.value.fetching.items:!1),fetchUser:async()=>{n.value[e]?.draft||await t.get({id:e})}}},w=({id:r})=>{let o=a().getStore(y),{t:l}=n(),u=c(),d=i(_.NONE),f,p=t({username:``,password:``,repeatPassword:``,email:``,firstName:``,lastName:``,role:s.user}),m=i(void 0),h=i(!1),g=async()=>{let e=l(`usersModule.messages.notCreated`,{user:p.username});if(m.value.clearValidate(),!await m.value.validate())throw new S(`Form not valid`);d.value=_.WORKING;try{await o.add({id:r,draft:!1,data:{username:p.username,password:p.password,email:p.email?.trim()===``?null:p.email,firstName:p.firstName?.trim()===``?null:p.firstName,lastName:p.lastName?.trim()===``?null:p.lastName,role:p.role}})}catch(t){throw d.value=_.ERROR,f=window.setTimeout(v,2e3),t instanceof x&&t.code===422?u.error(t.message):u.error(e),t}return d.value=_.OK,f=window.setTimeout(v,2e3),u.success(l(`usersModule.messages.created`,{user:p.username})),`added`},v=()=>{window.clearTimeout(f),d.value=_.NONE};return e(p,e=>{e.username===``&&e.password===``&&e.email===``&&e.firstName===``&&e.lastName===``&&e.role===s.user?h.value=!1:h.value=!0}),{model:p,formEl:m,formChanged:h,submit:g,clear:v,formResult:d}},T=({user:r,messages:o})=>{let s=a().getStore(y),{t:l}=n(),u=c(),d=i(_.NONE),f,p=t({username:r.username,password:`secretpassword`,email:r.email||``,firstName:r.firstName||``,lastName:r.lastName||``,role:r.role}),m=i(void 0),h=i(!1),g=async()=>{let e=r.draft,t=o&&o.error?o.error:r.draft?l(`usersModule.messages.notCreated`,{user:r.username}):l(`usersModule.messages.notEdited`,{user:r.username});if(m.value.clearValidate(),!await m.value.validate())throw new S(`Form not valid`);d.value=_.WORKING;try{await s.edit({id:r.id,data:{email:!p.email||p.email.trim()===``?null:p.email,firstName:!p.firstName||p.firstName.trim()===``?null:p.firstName,lastName:!p.lastName||p.lastName.trim()===``?null:p.lastName,role:p.role}}),r.draft&&await s.save({id:r.id})}catch(e){throw d.value=_.ERROR,f=window.setTimeout(v,2e3),e instanceof x&&e.code===422?u.error(e.message):u.error(t),e}return d.value=_.OK,f=window.setTimeout(v,2e3),e?(u.success(l(o&&o.success?o.success:`usersModule.messages.created`,{user:r.username})),`added`):(u.success(l(o&&o.success?o.success:`usersModule.messages.edited`,{user:r.username})),`saved`)},v=()=>{window.clearTimeout(f),d.value=_.NONE};return e(p,e=>{e.email===r.email&&e.firstName===r.firstName&&e.lastName===r.lastName&&e.role===r.role?h.value=!1:h.value=!0}),{model:p,formEl:m,formChanged:h,submit:g,clear:v,formResult:d}},E=({user:r,messages:o})=>{let s=a().getStore(y),{t:l}=n(),u=c(),d=i(_.NONE),f,p=t({password:``,repeatPassword:``}),m=i(void 0),h=i(!1),g=async()=>{let e=o&&o.error?o.error:l(`usersModule.messages.notEdited`,{user:r.username});if(m.value.clearValidate(),!await m.value.validate())throw new S(`Form not valid`);d.value=_.WORKING;try{await s.edit({id:r.id,data:{password:p.password}}),r.draft&&await s.save({id:r.id})}catch(t){throw d.value=_.ERROR,f=window.setTimeout(v,2e3),t instanceof x&&t.code===422?u.error(t.message):u.error(e),t}return d.value=_.OK,f=window.setTimeout(v,2e3),u.success(l(o&&o.success?o.success:`usersModule.messages.edited`,{user:r.username})),`saved`},v=()=>{window.clearTimeout(f),d.value=_.NONE};return e(p,e=>{e.password===``&&e.repeatPassword===``?h.value=!1:h.value=!0}),{model:p,formEl:m,formChanged:h,submit:g,clear:v,formResult:d}},D=({user:r,messages:o})=>{let s=a().getStore(y),{t:l}=n(),u=c(),d=i(_.NONE),f,p=t({username:r.username}),m=i(void 0),h=i(!1),g=async()=>{let e=o&&o.error?o.error:l(`usersModule.messages.notEdited`,{user:r.username});if(m.value.clearValidate(),!await m.value.validate())throw new S(`Form not valid`);d.value=_.WORKING;try{await s.edit({id:r.id,data:{username:p.username}}),r.draft&&await s.save({id:r.id})}catch(t){throw d.value=_.ERROR,f=window.setTimeout(v,2e3),t instanceof x&&t.code===422?u.error(t.message):u.error(e),t}return d.value=_.OK,f=window.setTimeout(v,2e3),u.success(l(o&&o.success?o.success:`usersModule.messages.edited`,{user:r.username})),`saved`},v=()=>{window.clearTimeout(f),d.value=_.NONE};return e(p,e=>{h.value=e.username!==r.username}),{model:p,formEl:m,formChanged:h,submit:g,clear:v,formResult:d}},O=f(),k={search:void 0,roles:[]},A=()=>{let t=a().getStore(y),{firstLoad:n,semaphore:o}=d(t),s=i(10),c=i(1),f=i(l(k)),p=r(()=>f.value.search!==k.search||!(0,O.isEqual)(f.value.roles,k.roles)),m=i(`username`),h=i(`ascending`),g=r(()=>u(t.findAll().filter(e=>!e.draft&&(!f.value.search||e.username.toLowerCase().includes(f.value.search.toLowerCase()))&&(f.value.roles.length===0||f.value.roles.includes(e.role))),[e=>e[m.value]??``],[h.value===`ascending`?`asc`:`desc`])),_=r(()=>{let e=(c.value-1)*s.value,t=e+s.value;return g.value.slice(e,t)}),v=async()=>{await t.fetch()},b=r(()=>o.value.fetching.items||!n.value),x=r(()=>n.value),S=r(()=>t.findAll().filter(e=>!e.draft).length);return e(()=>f.value,()=>{c.value=1},{deep:!0}),{users:g,usersPaginated:_,totalRows:S,areLoading:b,loaded:x,fetchUsers:v,filters:f,filtersActive:p,paginateSize:s,paginatePage:c,sortBy:m,sortDir:h,resetFilter:()=>{f.value=l(k)}}},j=()=>{let{t:e}=n(),t=c(),r=a().getStore(y);return{remove:async n=>{let i=r.findById(n);if(i===null)throw new b(`Something went wrong, user can't be loaded`);o.confirm(e(`usersModule.texts.confirmRemove`,{user:i.username}),e(`usersModule.headings.remove`),{confirmButtonText:e(`usersModule.buttons.yes.title`),cancelButtonText:e(`usersModule.buttons.no.title`),type:`warning`}).then(async()=>{try{await r.remove({id:i.id}),t.success(e(`usersModule.messages.removed`,{user:i.username}))}catch(n){if(n instanceof x&&n.code===404){let n=e(`usersModule.messages.notFound`,{user:i.username});t.error(n)}else if(n instanceof x&&n.code===422)t.error(n.message);else{let n=e(`usersModule.messages.notRemoved`,{user:i.username});t.error(n)}}}).catch(()=>{t.info(e(`usersModule.messages.removeCanceled`,{user:i.username}))})},bulkRemove:async n=>{if(n.length!==0)try{await o.confirm(e(`usersModule.texts.confirmBulkRemove`,{count:n.length}),e(`usersModule.headings.removeBulk`),{confirmButtonText:e(`usersModule.buttons.yes.title`),cancelButtonText:e(`usersModule.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(`usersModule.messages.bulkRemoved`,{count:i})),a>0&&t.error(e(`usersModule.messages.bulkRemoveFailed`,{count:a}))}catch{}}}};export{p as _,T as a,x as c,y as d,g as f,m as g,h,E as i,b as l,v as m,A as n,w as o,_ as p,D as r,C as s,j as t,S 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,ui as a}from"./icon-with-child-DmQ_XhQy.js";import{A as o,Fn as s,Pn as c,S as l,T as u,Un as d,Vr as f,Wn as p,_ as m,an as h,f as g,m as _,n as v,pn as y,qn as b,va as x,wn as S}from"./common-DlW3qRTQ.js";import{a as C,c as w,d as T,i as E,n as D,o as O,r as k,t as A}from"./keys-CGGnS6tq.js";import{i as j,t as M}from"./types-B8upWpl6.js";import{n as N}from"./useDataSources-Bx93bXrZ.js";var P=()=>{let e=o(),{enabled:t}=h(),n=[`pageDetail`,`pageAddForm`,`pageEditForm`],r=[`pageSchema`,`pageAddFormSchema`,`pageEditFormSchema`,`pageCreateReqSchema`,`pageUpdateReqSchema`],a=[`configure`],s=i(()=>e.getPlugins().filter(e=>{if(!(e.modules===void 0||e.modules.includes(`dashboard-module`)))return!1;let t=a.some(t=>e.routes&&t in e.routes)??!0;return(e.elements??[]).some(e=>{if(!(e.modules===void 0||e.modules.includes(`dashboard-module`)))return!1;let i=n.length===0||!!e.components&&n.some(t=>e.components&&t in e.components),a=r.length===0||!!e.schemas&&r.some(t=>e.schemas&&t in e.schemas);return i||a||t})}));return{plugins:s,options:i(()=>y(s.value.flatMap(e=>(e.elements??[]).filter(e=>e.modules===void 0||e.modules.includes(`dashboard-module`)).map(n=>({value:n.type,label:n.name?.trim()?n.name:e.name,disabled:!t(e.type)}))),[e=>e.label],[`asc`])),getByName:e=>s.value.find(t=>t.type===e),getByType:e=>s.value.find(t=>(t.elements??[]).some(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`dashboard-module`)))),getElement:e=>{for(let t of s.value){let n=(t.elements??[]).find(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`dashboard-module`)));if(n)return n}}}},F=()=>{let e=u().getStore(D),{firstLoad:t,semaphore:n}=x(e);return{pages:i(()=>e.findAll().filter(e=>!e.draft)),areLoading:i(()=>!!n.value.fetching.items||!t.value),loaded:i(()=>t.value),fetchPages:async()=>{await e.fetch()}}},I=S(),L={search:void 0,types:[],displays:[]},ee={by:`title`,dir:`asc`},te=()=>{let t=u().getStore(D),{firstLoad:n,semaphore:r}=x(t),{filters:o,sort:s,pagination:c,reset:l}=g({key:`${w}:pages:list`,filters:{schema:j,defaults:L},sort:{defaults:[ee]},pagination:{defaults:{page:1,size:10}},syncQuery:!0,version:1}),d=i(()=>o.value.search!==L.search||!(0,I.isEqual)(o.value.types,L.types)||!(0,I.isEqual)(o.value.displays,L.displays)),f=a(c.value.size||10),p=a(c.value.page||1),m=a(s.value.length>0?s.value[0]?.by:void 0),h=a(s.value.length>0?s.value[0]?.dir??null:null),_=i(()=>y(t.findAll().filter(e=>!e.draft&&(!o.value.search||e.title.toLowerCase().includes(o.value.search.toLowerCase()))&&(o.value.types.length===0||o.value.types.includes(e.type))&&(o.value.displays.length===0||o.value.displays.includes(`all`)&&(e.displays===null||e.displays.length===0)||e.displays!==null&&e.displays.length>0&&e.displays.some(e=>o.value.displays.includes(e)))),[e=>e[m.value]??``],[h.value===`asc`?`asc`:`desc`])),v=i(()=>{let e=(p.value-1)*f.value,t=e+f.value;return _.value.slice(e,t)}),b=async()=>{await t.fetch()},S=i(()=>r.value.fetching.items||!n.value),C=i(()=>n.value),T=i(()=>t.findAll().filter(e=>!e.draft).length);return e(()=>c.value,e=>{p.value=e.page??1,f.value=e.size??10},{deep:!0}),e(()=>p.value,e=>{c.value.page=e}),e(()=>f.value,e=>{c.value.size=e}),e(()=>h.value,e=>{m.value===void 0||e===null?s.value=[]:s.value=[{by:m.value,dir:e}]}),e(()=>m.value,e=>{e===void 0?s.value=[]:s.value=[{by:e,dir:h.value}]}),{pages:_,pagesPaginated:v,totalRows:T,areLoading:S,loaded:C,fetchPages:b,filters:o,filtersActive:d,paginateSize:f,paginatePage:p,sortBy:m,sortDir:h,resetFilter:l}},R=()=>{let{t:e}=n(),t=m(),r=u().getStore(D);return{remove:async n=>{let i=r.findById(n);if(i===null)throw new C(`Something went wrong, page can't be loaded`);f.confirm(e(`dashboardModule.texts.pages.confirmRemove`,{page:i.title}),e(`dashboardModule.headings.pages.remove`),{confirmButtonText:e(`dashboardModule.buttons.yes.title`),cancelButtonText:e(`dashboardModule.buttons.no.title`),type:`warning`}).then(async()=>{try{await r.remove({id:i.id}),t.success(e(`dashboardModule.messages.pages.removed`,{page:i.title}))}catch(n){if(n instanceof E&&n.code===404){let n=e(`dashboardModule.messages.pages.notFound`,{page:i.title});t.error(n)}else if(n instanceof E&&n.code===422)t.error(n.message);else{let n=e(`dashboardModule.messages.pages.notRemoved`,{page:i.title});t.error(n)}}}).catch(()=>{t.info(e(`dashboardModule.messages.pages.removeCanceled`,{page:i.title}))})},bulkRemove:async n=>{if(n.length!==0)try{await f.confirm(e(`dashboardModule.texts.pages.confirmBulkRemove`,{count:n.length}),e(`dashboardModule.headings.pages.bulkRemove`),{confirmButtonText:e(`dashboardModule.buttons.yes.title`),cancelButtonText:e(`dashboardModule.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(`dashboardModule.messages.pages.bulkRemoved`,{count:i})),a>0&&t.error(e(`dashboardModule.messages.pages.bulkRemoveFailed`,{count:a}))}catch{}}}},z=({id:e})=>{let t=u().getStore(D);return{icon:i(()=>`mdi:${t.findById(e)?.icon??`view-dashboard`}`)}},B=p({id:b().uuid().optional(),type:b().trim().nonempty(),title:b().trim().nonempty(),icon:b().trim().transform(e=>e===``?null:e).nullable().optional(),order:d(),showTopBar:s().optional(),displays:c(b().uuid()).nullable().optional()}),V=p({id:b().uuid(),type:b().trim().nonempty(),title:b().trim().nonempty().optional(),icon:b().trim().transform(e=>e===``?null:e).nullable().optional(),order:d().optional(),showTopBar:s().optional(),displays:c(b().uuid()).nullable().optional()}),H=({type:e})=>{let{getByType:t}=P(),n=i(()=>t(e));return{plugin:n,element:i(()=>(n.value?.elements??[]).find(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`dashboard-module`))))}},U=({id:i,type:o})=>{let s=u(),{element:c}=H({type:o}),d=s.getStore(D),{t:f}=n(),p=m(),h=l(),g=a(T.NONE),y,b=t({...v(c.value?.schemas?.pageAddFormSchema||B),id:i,type:o,title:``,icon:``,order:0,showTopBar:!0}),x=_(r(b)),S=a(void 0),C=a(!1),w=async()=>{if(S.value.clearValidate(),!await S.value.validate())throw new O(`Form not valid`);let e=(c.value?.schemas?.pageAddFormSchema||B).safeParse(b);if(!e.success)throw h.error(`Schema validation failed with:`,e.error),new O(`Failed to validate create page model.`);g.value=T.WORKING;let t=f(`dashboardModule.messages.pages.notCreated`,{page:b.title});try{await d.add({id:i,draft:!1,data:{...e.data,type:o}})}catch(e){throw g.value=T.ERROR,y=window.setTimeout(k,2e3),e instanceof E&&e.code===422?p.error(e.message):p.error(t),e}return g.value=T.OK,y=window.setTimeout(k,2e3),p.success(f(`dashboardModule.messages.pages.created`,{page:b.title})),`added`},k=()=>{window.clearTimeout(y),g.value=T.NONE};return e(b,()=>{C.value=!(0,I.isEqual)(r(b),x)}),{model:b,formEl:S,formChanged:C,submit:w,clear:k,formResult:g}},W=({page:i,messages:o})=>{let s=u(),{element:c}=H({type:i.type}),d=s.getStore(D),{t:f}=n(),p=m(),h=l(),g=a(T.NONE),v,y=t(i),b=_(r(y)),x=a(void 0),S=a(!1),C=async()=>{let e=i.draft,t=o&&o.error?o.error:i.draft?f(`dashboardModule.messages.pages.notCreated`,{page:i.title}):f(`dashboardModule.messages.pages.notEdited`,{page:i.title});if(x.value.clearValidate(),!await x.value.validate())throw new O(`Form not valid`);let n=(c.value?.schemas?.pageEditFormSchema||V).safeParse(y);if(!n.success)throw h.error(`Schema validation failed with:`,n.error),new O(`Failed to validate edit page model.`);g.value=T.WORKING;try{let e;if(e=await d.edit({id:i.id,data:{...n.data,type:i.type}}),i.draft&&(e=await d.save({id:i.id})),e){let t=e;Object.assign(y,t)}}catch(e){throw g.value=T.ERROR,v=window.setTimeout(w,2e3),e instanceof E&&e.code===422?p.error(e.message):p.error(t),e}return g.value=T.OK,v=window.setTimeout(w,2e3),e?(p.success(f(o&&o.success?o.success:`dashboardModule.messages.pages.created`,{page:i.title})),`added`):(p.success(f(o&&o.success?o.success:`dashboardModule.messages.pages.edited`,{page:i.title})),S.value=!1,b=_(r(y)),`saved`)},w=()=>{window.clearTimeout(v),g.value=T.NONE};return e(y,()=>{S.value=!(0,I.isEqual)(r(y),b)}),{model:y,formEl:x,formChanged:S,submit:C,clear:w,formResult:g}},G=e=>{let t=u().getStore(k),{firstLoad:n,semaphore:r}=x(t);return{tiles:i(()=>t.findForParent(e.parent,e.parentId)),areLoading:i(()=>r.value.fetching.items.includes(e.parentId)?!0:n.value.includes(e.parentId)?!1:r.value.fetching.items.includes(e.parentId)),loaded:i(()=>n.value.includes(e.parentId)),fetchTiles:async()=>{await t.fetch({parent:{type:e.parent,id:e.parentId}})}}},K=e=>{let{t}=n(),r=m(),i=u().getStore(k);return{findById:(e,t)=>i.findById(e,t),edit:async e=>i.edit(e),save:async e=>i.save(e),remove:async n=>{let a=i.findById(e.parent,n);if(a===null)throw new C(`Something went wrong, tile can't be loaded`);f.confirm(t(`dashboardModule.texts.tiles.confirmRemove`),t(`dashboardModule.headings.tiles.remove`),{confirmButtonText:t(`dashboardModule.buttons.yes.title`),cancelButtonText:t(`dashboardModule.buttons.no.title`),type:`warning`}).then(async()=>{try{await i.remove({id:a.id,parent:{type:e.parent,id:e.parentId}}),r.success(t(`dashboardModule.messages.tiles.removed`))}catch(e){if(e instanceof E&&e.code===404){let e=t(`dashboardModule.messages.tiles.notFound`);r.error(e)}else if(e instanceof E&&e.code===422)r.error(e.message);else{let e=t(`dashboardModule.messages.tiles.notRemoved`);r.error(e)}}}).catch(()=>{r.info(t(`dashboardModule.messages.tiles.removeCanceled`))})},removeDirectly:async e=>i.remove(e)}},q=p({id:b().uuid().optional(),type:b().trim().nonempty(),row:d(),col:d(),rowSpan:d(),colSpan:d(),hidden:s()}),J=p({id:b().uuid(),type:b().trim().nonempty(),row:d().optional(),col:d().optional(),rowSpan:d().optional(),colSpan:d().optional(),hidden:s()}),Y=({id:i,parent:o,parentId:s,type:c,onlyDraft:d=!1})=>{let f=u(),{element:p}=N({type:c}),h=f.getStore(k),{t:g}=n(),y=m(),b=l(),x=a(T.NONE),S,C=t({...v(p.value?.schemas?.tileAddFormSchema||q),id:i,type:c,row:1,col:1,rowSpan:1,colSpan:1,hidden:!1}),w=_(r(C)),D=a(void 0),A=a(!1),j=async()=>{if(D.value.clearValidate(),!await D.value.validate())throw new O(`Form not valid`);let e=(p.value?.schemas?.tileAddFormSchema||q).safeParse(C);if(!e.success)throw b.error(`Schema validation failed with:`,e.error),new O(`Failed to validate create tile model.`);x.value=T.WORKING;let t=g(`dashboardModule.messages.tiles.notCreated`);try{await h.add({id:i,parent:{type:o,id:s},draft:d,data:{...e.data,type:c}})}catch(e){throw x.value=T.ERROR,S=window.setTimeout(M,2e3),e instanceof E&&e.code===422?y.error(e.message):y.error(t),e}return x.value=T.OK,S=window.setTimeout(M,2e3),y.success(g(`dashboardModule.messages.tiles.created`)),`added`},M=()=>{window.clearTimeout(S),x.value=T.NONE};return e(C,()=>{A.value=!(0,I.isEqual)(r(C),w)}),{model:C,formEl:D,formChanged:A,submit:j,clear:M,formResult:x}},X=({tile:i,messages:o,onlyDraft:s=!1})=>{let c=u(),{element:d}=N({type:i.type}),f=c.getStore(k),{t:p}=n(),h=m(),g=l(),v=a(T.NONE),y,b=t(i),x=_(r(b)),S=a(void 0),C=a(!1),w=async()=>{let e=i.draft,t=o&&o.error?o.error:i.draft&&!s?p(`dashboardModule.messages.tiles.notCreated`):p(`dashboardModule.messages.tiles.notEdited`);if(S.value.clearValidate(),!await S.value.validate())throw new O(`Form not valid`);let n=(d.value?.schemas?.tileEditFormSchema||J).safeParse(b);if(!n.success)throw g.error(`Schema validation failed with:`,n.error),new O(`Failed to validate create tile model.`);v.value=T.WORKING;try{await f.edit({id:i.id,parent:i.parent,data:{...n.data,type:i.type}}),i.draft&&!s&&await f.save({id:i.id,parent:i.parent})}catch(e){throw v.value=T.ERROR,y=window.setTimeout(D,2e3),e instanceof E&&e.code===422?h.error(e.message):h.error(t),e}return v.value=T.OK,y=window.setTimeout(D,2e3),e&&!s?(h.success(p(o&&o.success?o.success:`dashboardModule.messages.tiles.created`)),`added`):(h.success(p(o&&o.success?o.success:`dashboardModule.messages.tiles.edited`)),C.value=!1,x=_(r(b)),`saved`)},D=()=>{window.clearTimeout(y),v.value=T.NONE};return e(b,()=>{C.value=!(0,I.isEqual)(r(b),x)}),{model:b,formEl:S,formChanged:C,submit:w,clear:D,formResult:v}},Z=e=>{let{id:t}=e,n=u().getStore(A),{data:r,semaphore:a}=x(n);return{dataSource:i(()=>t===null?null:t in r.value?r.value[t]:null),isLoading:i(()=>a.value.fetching.item.includes(t)?!0:(t in r.value?r.value[t]:null)===null?a.value.fetching.items.includes(e.parentId):!1),fetchDataSource:async()=>{(t in r.value?r.value[t]:null)?.draft||await n.get({id:t,parent:{type:e.parent,id:e.parentId}})}}},Q=p({id:b().uuid().optional(),type:b().trim().nonempty()}),$=p({id:b().uuid(),type:b().trim().nonempty()}),ne=({id:i,type:o,parent:s,parentId:c,onlyDraft:d=!1})=>{let f=u(),{element:p}=M({type:o}),h=f.getStore(A),{t:g}=n(),y=m(),b=l(),x=a(T.NONE),S,C=t({...v(p.value?.schemas?.dataSourceAddFormSchema||Q),id:i,type:o}),w=_(r(C)),D=a(void 0),k=a(!1),j=async()=>{if(D.value.clearValidate(),!await D.value.validate())throw new O(`Form not valid`);let e=(p.value?.schemas?.dataSourceAddFormSchema||Q).safeParse(C);if(!e.success)throw b.error(`Schema validation failed with:`,e.error),new O(`Failed to validate create data source model.`);x.value=T.WORKING;let t=g(`dashboardModule.messages.dataSources.notCreated`);try{await h.add({id:i,parent:{type:s,id:c},draft:d,data:{...e.data,type:o}})}catch(e){throw x.value=T.ERROR,S=window.setTimeout(N,2e3),e instanceof E&&e.code===422?y.error(e.message):y.error(t),e}return x.value=T.OK,S=window.setTimeout(N,2e3),y.success(g(`dashboardModule.messages.dataSources.created`)),`added`},N=()=>{window.clearTimeout(S),x.value=T.NONE};return e(C,()=>{k.value=!(0,I.isEqual)(r(C),w)}),{model:C,formEl:D,formChanged:k,submit:j,clear:N,formResult:x}},re=({dataSource:i,messages:o,onlyDraft:s=!1})=>{let c=u(),{element:d}=M({type:i.type}),f=c.getStore(A),{t:p}=n(),h=m(),g=l(),v=a(T.NONE),y,b=t(i),x=_(r(b)),S=a(void 0),C=a(!1),w=async()=>{let e=i.draft,t=o&&o.error?o.error:i.draft&&!s?p(`dashboardModule.messages.dataSources.notCreated`):p(`dashboardModule.messages.dataSources.notEdited`);if(S.value.clearValidate(),!await S.value.validate())throw new O(`Form not valid`);let n=(d.value?.schemas?.dataSourceEditFormSchema||$).safeParse(b);if(!n.success)throw g.error(`Schema validation failed with:`,n.error),new O(`Failed to validate create dataSource model.`);v.value=T.WORKING;try{await f.edit({id:i.id,parent:i.parent,data:{...n.data,type:i.type}}),i.draft&&!s&&await f.save({id:i.id,parent:i.parent})}catch(e){throw v.value=T.ERROR,y=window.setTimeout(D,2e3),e instanceof E&&e.code===422?h.error(e.message):h.error(t),e}return v.value=T.OK,y=window.setTimeout(D,2e3),e&&!s?(h.success(p(o&&o.success?o.success:`dashboardModule.messages.dataSources.created`)),`added`):(h.success(p(o&&o.success?o.success:`dashboardModule.messages.dataSources.edited`)),C.value=!1,x=_(r(b)),`saved`)},D=()=>{window.clearTimeout(y),v.value=T.NONE};return e(b,()=>{C.value=!(0,I.isEqual)(r(b),x)}),{model:b,formEl:S,formChanged:C,submit:w,clear:D,formResult:v}};export{z as _,Z as a,F as b,q as c,G as d,W as f,V as g,B as h,$ as i,J as l,H as m,ne as n,X as o,U as p,Q as r,Y as s,re as t,K as u,R as v,P as x,te as y};
1
+ import"./chunk-DECur_0Z.js";import{Xr as e,ci as t,d as n,fi as r,mr as i,ui as a}from"./icon-with-child-DmQ_XhQy.js";import{A as o,Fn as s,Pn as c,S as l,T as u,Un as d,Vr as f,Wn as p,_ as m,an as h,f as g,m as _,n as v,pn as y,qn as b,va as x,wn as S}from"./common-DyDAwGBz.js";import{a as C,c as w,d as T,i as E,n as D,o as O,r as k,t as A}from"./keys-CGGnS6tq.js";import{i as j,t as M}from"./types-DQmL99Jz.js";import{n as N}from"./useDataSources-D1fe9MPt.js";var P=()=>{let e=o(),{enabled:t}=h(),n=[`pageDetail`,`pageAddForm`,`pageEditForm`],r=[`pageSchema`,`pageAddFormSchema`,`pageEditFormSchema`,`pageCreateReqSchema`,`pageUpdateReqSchema`],a=[`configure`],s=i(()=>e.getPlugins().filter(e=>{if(!(e.modules===void 0||e.modules.includes(`dashboard-module`)))return!1;let t=a.some(t=>e.routes&&t in e.routes)??!0;return(e.elements??[]).some(e=>{if(!(e.modules===void 0||e.modules.includes(`dashboard-module`)))return!1;let i=n.length===0||!!e.components&&n.some(t=>e.components&&t in e.components),a=r.length===0||!!e.schemas&&r.some(t=>e.schemas&&t in e.schemas);return i||a||t})}));return{plugins:s,options:i(()=>y(s.value.flatMap(e=>(e.elements??[]).filter(e=>e.modules===void 0||e.modules.includes(`dashboard-module`)).map(n=>({value:n.type,label:n.name?.trim()?n.name:e.name,disabled:!t(e.type)}))),[e=>e.label],[`asc`])),getByName:e=>s.value.find(t=>t.type===e),getByType:e=>s.value.find(t=>(t.elements??[]).some(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`dashboard-module`)))),getElement:e=>{for(let t of s.value){let n=(t.elements??[]).find(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`dashboard-module`)));if(n)return n}}}},F=()=>{let e=u().getStore(D),{firstLoad:t,semaphore:n}=x(e);return{pages:i(()=>e.findAll().filter(e=>!e.draft)),areLoading:i(()=>!!n.value.fetching.items||!t.value),loaded:i(()=>t.value),fetchPages:async()=>{await e.fetch()}}},I=S(),L={search:void 0,types:[],displays:[]},ee={by:`title`,dir:`asc`},te=()=>{let t=u().getStore(D),{firstLoad:n,semaphore:r}=x(t),{filters:o,sort:s,pagination:c,reset:l}=g({key:`${w}:pages:list`,filters:{schema:j,defaults:L},sort:{defaults:[ee]},pagination:{defaults:{page:1,size:10}},syncQuery:!0,version:1}),d=i(()=>o.value.search!==L.search||!(0,I.isEqual)(o.value.types,L.types)||!(0,I.isEqual)(o.value.displays,L.displays)),f=a(c.value.size||10),p=a(c.value.page||1),m=a(s.value.length>0?s.value[0]?.by:void 0),h=a(s.value.length>0?s.value[0]?.dir??null:null),_=i(()=>y(t.findAll().filter(e=>!e.draft&&(!o.value.search||e.title.toLowerCase().includes(o.value.search.toLowerCase()))&&(o.value.types.length===0||o.value.types.includes(e.type))&&(o.value.displays.length===0||o.value.displays.includes(`all`)&&(e.displays===null||e.displays.length===0)||e.displays!==null&&e.displays.length>0&&e.displays.some(e=>o.value.displays.includes(e)))),[e=>e[m.value]??``],[h.value===`asc`?`asc`:`desc`])),v=i(()=>{let e=(p.value-1)*f.value,t=e+f.value;return _.value.slice(e,t)}),b=async()=>{await t.fetch()},S=i(()=>r.value.fetching.items||!n.value),C=i(()=>n.value),T=i(()=>t.findAll().filter(e=>!e.draft).length);return e(()=>c.value,e=>{p.value=e.page??1,f.value=e.size??10},{deep:!0}),e(()=>p.value,e=>{c.value.page=e}),e(()=>f.value,e=>{c.value.size=e}),e(()=>h.value,e=>{m.value===void 0||e===null?s.value=[]:s.value=[{by:m.value,dir:e}]}),e(()=>m.value,e=>{e===void 0?s.value=[]:s.value=[{by:e,dir:h.value}]}),{pages:_,pagesPaginated:v,totalRows:T,areLoading:S,loaded:C,fetchPages:b,filters:o,filtersActive:d,paginateSize:f,paginatePage:p,sortBy:m,sortDir:h,resetFilter:l}},R=()=>{let{t:e}=n(),t=m(),r=u().getStore(D);return{remove:async n=>{let i=r.findById(n);if(i===null)throw new C(`Something went wrong, page can't be loaded`);f.confirm(e(`dashboardModule.texts.pages.confirmRemove`,{page:i.title}),e(`dashboardModule.headings.pages.remove`),{confirmButtonText:e(`dashboardModule.buttons.yes.title`),cancelButtonText:e(`dashboardModule.buttons.no.title`),type:`warning`}).then(async()=>{try{await r.remove({id:i.id}),t.success(e(`dashboardModule.messages.pages.removed`,{page:i.title}))}catch(n){if(n instanceof E&&n.code===404){let n=e(`dashboardModule.messages.pages.notFound`,{page:i.title});t.error(n)}else if(n instanceof E&&n.code===422)t.error(n.message);else{let n=e(`dashboardModule.messages.pages.notRemoved`,{page:i.title});t.error(n)}}}).catch(()=>{t.info(e(`dashboardModule.messages.pages.removeCanceled`,{page:i.title}))})},bulkRemove:async n=>{if(n.length!==0)try{await f.confirm(e(`dashboardModule.texts.pages.confirmBulkRemove`,{count:n.length}),e(`dashboardModule.headings.pages.bulkRemove`),{confirmButtonText:e(`dashboardModule.buttons.yes.title`),cancelButtonText:e(`dashboardModule.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(`dashboardModule.messages.pages.bulkRemoved`,{count:i})),a>0&&t.error(e(`dashboardModule.messages.pages.bulkRemoveFailed`,{count:a}))}catch{}}}},z=({id:e})=>{let t=u().getStore(D);return{icon:i(()=>`mdi:${t.findById(e)?.icon??`view-dashboard`}`)}},B=p({id:b().uuid().optional(),type:b().trim().nonempty(),title:b().trim().nonempty(),icon:b().trim().transform(e=>e===``?null:e).nullable().optional(),order:d(),showTopBar:s().optional(),displays:c(b().uuid()).nullable().optional()}),V=p({id:b().uuid(),type:b().trim().nonempty(),title:b().trim().nonempty().optional(),icon:b().trim().transform(e=>e===``?null:e).nullable().optional(),order:d().optional(),showTopBar:s().optional(),displays:c(b().uuid()).nullable().optional()}),H=({type:e})=>{let{getByType:t}=P(),n=i(()=>t(e));return{plugin:n,element:i(()=>(n.value?.elements??[]).find(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`dashboard-module`))))}},U=({id:i,type:o})=>{let s=u(),{element:c}=H({type:o}),d=s.getStore(D),{t:f}=n(),p=m(),h=l(),g=a(T.NONE),y,b=t({...v(c.value?.schemas?.pageAddFormSchema||B),id:i,type:o,title:``,icon:``,order:0,showTopBar:!0}),x=_(r(b)),S=a(void 0),C=a(!1),w=async()=>{if(S.value.clearValidate(),!await S.value.validate())throw new O(`Form not valid`);let e=(c.value?.schemas?.pageAddFormSchema||B).safeParse(b);if(!e.success)throw h.error(`Schema validation failed with:`,e.error),new O(`Failed to validate create page model.`);g.value=T.WORKING;let t=f(`dashboardModule.messages.pages.notCreated`,{page:b.title});try{await d.add({id:i,draft:!1,data:{...e.data,type:o}})}catch(e){throw g.value=T.ERROR,y=window.setTimeout(k,2e3),e instanceof E&&e.code===422?p.error(e.message):p.error(t),e}return g.value=T.OK,y=window.setTimeout(k,2e3),p.success(f(`dashboardModule.messages.pages.created`,{page:b.title})),`added`},k=()=>{window.clearTimeout(y),g.value=T.NONE};return e(b,()=>{C.value=!(0,I.isEqual)(r(b),x)}),{model:b,formEl:S,formChanged:C,submit:w,clear:k,formResult:g}},W=({page:i,messages:o})=>{let s=u(),{element:c}=H({type:i.type}),d=s.getStore(D),{t:f}=n(),p=m(),h=l(),g=a(T.NONE),v,y=t(i),b=_(r(y)),x=a(void 0),S=a(!1),C=async()=>{let e=i.draft,t=o&&o.error?o.error:i.draft?f(`dashboardModule.messages.pages.notCreated`,{page:i.title}):f(`dashboardModule.messages.pages.notEdited`,{page:i.title});if(x.value.clearValidate(),!await x.value.validate())throw new O(`Form not valid`);let n=(c.value?.schemas?.pageEditFormSchema||V).safeParse(y);if(!n.success)throw h.error(`Schema validation failed with:`,n.error),new O(`Failed to validate edit page model.`);g.value=T.WORKING;try{let e;if(e=await d.edit({id:i.id,data:{...n.data,type:i.type}}),i.draft&&(e=await d.save({id:i.id})),e){let t=e;Object.assign(y,t)}}catch(e){throw g.value=T.ERROR,v=window.setTimeout(w,2e3),e instanceof E&&e.code===422?p.error(e.message):p.error(t),e}return g.value=T.OK,v=window.setTimeout(w,2e3),e?(p.success(f(o&&o.success?o.success:`dashboardModule.messages.pages.created`,{page:i.title})),`added`):(p.success(f(o&&o.success?o.success:`dashboardModule.messages.pages.edited`,{page:i.title})),S.value=!1,b=_(r(y)),`saved`)},w=()=>{window.clearTimeout(v),g.value=T.NONE};return e(y,()=>{S.value=!(0,I.isEqual)(r(y),b)}),{model:y,formEl:x,formChanged:S,submit:C,clear:w,formResult:g}},G=e=>{let t=u().getStore(k),{firstLoad:n,semaphore:r}=x(t);return{tiles:i(()=>t.findForParent(e.parent,e.parentId)),areLoading:i(()=>r.value.fetching.items.includes(e.parentId)?!0:n.value.includes(e.parentId)?!1:r.value.fetching.items.includes(e.parentId)),loaded:i(()=>n.value.includes(e.parentId)),fetchTiles:async()=>{await t.fetch({parent:{type:e.parent,id:e.parentId}})}}},K=e=>{let{t}=n(),r=m(),i=u().getStore(k);return{findById:(e,t)=>i.findById(e,t),edit:async e=>i.edit(e),save:async e=>i.save(e),remove:async n=>{let a=i.findById(e.parent,n);if(a===null)throw new C(`Something went wrong, tile can't be loaded`);f.confirm(t(`dashboardModule.texts.tiles.confirmRemove`),t(`dashboardModule.headings.tiles.remove`),{confirmButtonText:t(`dashboardModule.buttons.yes.title`),cancelButtonText:t(`dashboardModule.buttons.no.title`),type:`warning`}).then(async()=>{try{await i.remove({id:a.id,parent:{type:e.parent,id:e.parentId}}),r.success(t(`dashboardModule.messages.tiles.removed`))}catch(e){if(e instanceof E&&e.code===404){let e=t(`dashboardModule.messages.tiles.notFound`);r.error(e)}else if(e instanceof E&&e.code===422)r.error(e.message);else{let e=t(`dashboardModule.messages.tiles.notRemoved`);r.error(e)}}}).catch(()=>{r.info(t(`dashboardModule.messages.tiles.removeCanceled`))})},removeDirectly:async e=>i.remove(e)}},q=p({id:b().uuid().optional(),type:b().trim().nonempty(),row:d(),col:d(),rowSpan:d(),colSpan:d(),hidden:s()}),J=p({id:b().uuid(),type:b().trim().nonempty(),row:d().optional(),col:d().optional(),rowSpan:d().optional(),colSpan:d().optional(),hidden:s()}),Y=({id:i,parent:o,parentId:s,type:c,onlyDraft:d=!1})=>{let f=u(),{element:p}=N({type:c}),h=f.getStore(k),{t:g}=n(),y=m(),b=l(),x=a(T.NONE),S,C=t({...v(p.value?.schemas?.tileAddFormSchema||q),id:i,type:c,row:1,col:1,rowSpan:1,colSpan:1,hidden:!1}),w=_(r(C)),D=a(void 0),A=a(!1),j=async()=>{if(D.value.clearValidate(),!await D.value.validate())throw new O(`Form not valid`);let e=(p.value?.schemas?.tileAddFormSchema||q).safeParse(C);if(!e.success)throw b.error(`Schema validation failed with:`,e.error),new O(`Failed to validate create tile model.`);x.value=T.WORKING;let t=g(`dashboardModule.messages.tiles.notCreated`);try{await h.add({id:i,parent:{type:o,id:s},draft:d,data:{...e.data,type:c}})}catch(e){throw x.value=T.ERROR,S=window.setTimeout(M,2e3),e instanceof E&&e.code===422?y.error(e.message):y.error(t),e}return x.value=T.OK,S=window.setTimeout(M,2e3),y.success(g(`dashboardModule.messages.tiles.created`)),`added`},M=()=>{window.clearTimeout(S),x.value=T.NONE};return e(C,()=>{A.value=!(0,I.isEqual)(r(C),w)}),{model:C,formEl:D,formChanged:A,submit:j,clear:M,formResult:x}},X=({tile:i,messages:o,onlyDraft:s=!1})=>{let c=u(),{element:d}=N({type:i.type}),f=c.getStore(k),{t:p}=n(),h=m(),g=l(),v=a(T.NONE),y,b=t(i),x=_(r(b)),S=a(void 0),C=a(!1),w=async()=>{let e=i.draft,t=o&&o.error?o.error:i.draft&&!s?p(`dashboardModule.messages.tiles.notCreated`):p(`dashboardModule.messages.tiles.notEdited`);if(S.value.clearValidate(),!await S.value.validate())throw new O(`Form not valid`);let n=(d.value?.schemas?.tileEditFormSchema||J).safeParse(b);if(!n.success)throw g.error(`Schema validation failed with:`,n.error),new O(`Failed to validate create tile model.`);v.value=T.WORKING;try{await f.edit({id:i.id,parent:i.parent,data:{...n.data,type:i.type}}),i.draft&&!s&&await f.save({id:i.id,parent:i.parent})}catch(e){throw v.value=T.ERROR,y=window.setTimeout(D,2e3),e instanceof E&&e.code===422?h.error(e.message):h.error(t),e}return v.value=T.OK,y=window.setTimeout(D,2e3),e&&!s?(h.success(p(o&&o.success?o.success:`dashboardModule.messages.tiles.created`)),`added`):(h.success(p(o&&o.success?o.success:`dashboardModule.messages.tiles.edited`)),C.value=!1,x=_(r(b)),`saved`)},D=()=>{window.clearTimeout(y),v.value=T.NONE};return e(b,()=>{C.value=!(0,I.isEqual)(r(b),x)}),{model:b,formEl:S,formChanged:C,submit:w,clear:D,formResult:v}},Z=e=>{let{id:t}=e,n=u().getStore(A),{data:r,semaphore:a}=x(n);return{dataSource:i(()=>t===null?null:t in r.value?r.value[t]:null),isLoading:i(()=>a.value.fetching.item.includes(t)?!0:(t in r.value?r.value[t]:null)===null?a.value.fetching.items.includes(e.parentId):!1),fetchDataSource:async()=>{(t in r.value?r.value[t]:null)?.draft||await n.get({id:t,parent:{type:e.parent,id:e.parentId}})}}},Q=p({id:b().uuid().optional(),type:b().trim().nonempty()}),$=p({id:b().uuid(),type:b().trim().nonempty()}),ne=({id:i,type:o,parent:s,parentId:c,onlyDraft:d=!1})=>{let f=u(),{element:p}=M({type:o}),h=f.getStore(A),{t:g}=n(),y=m(),b=l(),x=a(T.NONE),S,C=t({...v(p.value?.schemas?.dataSourceAddFormSchema||Q),id:i,type:o}),w=_(r(C)),D=a(void 0),k=a(!1),j=async()=>{if(D.value.clearValidate(),!await D.value.validate())throw new O(`Form not valid`);let e=(p.value?.schemas?.dataSourceAddFormSchema||Q).safeParse(C);if(!e.success)throw b.error(`Schema validation failed with:`,e.error),new O(`Failed to validate create data source model.`);x.value=T.WORKING;let t=g(`dashboardModule.messages.dataSources.notCreated`);try{await h.add({id:i,parent:{type:s,id:c},draft:d,data:{...e.data,type:o}})}catch(e){throw x.value=T.ERROR,S=window.setTimeout(N,2e3),e instanceof E&&e.code===422?y.error(e.message):y.error(t),e}return x.value=T.OK,S=window.setTimeout(N,2e3),y.success(g(`dashboardModule.messages.dataSources.created`)),`added`},N=()=>{window.clearTimeout(S),x.value=T.NONE};return e(C,()=>{k.value=!(0,I.isEqual)(r(C),w)}),{model:C,formEl:D,formChanged:k,submit:j,clear:N,formResult:x}},re=({dataSource:i,messages:o,onlyDraft:s=!1})=>{let c=u(),{element:d}=M({type:i.type}),f=c.getStore(A),{t:p}=n(),h=m(),g=l(),v=a(T.NONE),y,b=t(i),x=_(r(b)),S=a(void 0),C=a(!1),w=async()=>{let e=i.draft,t=o&&o.error?o.error:i.draft&&!s?p(`dashboardModule.messages.dataSources.notCreated`):p(`dashboardModule.messages.dataSources.notEdited`);if(S.value.clearValidate(),!await S.value.validate())throw new O(`Form not valid`);let n=(d.value?.schemas?.dataSourceEditFormSchema||$).safeParse(b);if(!n.success)throw g.error(`Schema validation failed with:`,n.error),new O(`Failed to validate create dataSource model.`);v.value=T.WORKING;try{await f.edit({id:i.id,parent:i.parent,data:{...n.data,type:i.type}}),i.draft&&!s&&await f.save({id:i.id,parent:i.parent})}catch(e){throw v.value=T.ERROR,y=window.setTimeout(D,2e3),e instanceof E&&e.code===422?h.error(e.message):h.error(t),e}return v.value=T.OK,y=window.setTimeout(D,2e3),e&&!s?(h.success(p(o&&o.success?o.success:`dashboardModule.messages.dataSources.created`)),`added`):(h.success(p(o&&o.success?o.success:`dashboardModule.messages.dataSources.edited`)),C.value=!1,x=_(r(b)),`saved`)},D=()=>{window.clearTimeout(y),v.value=T.NONE};return e(b,()=>{C.value=!(0,I.isEqual)(r(b),x)}),{model:b,formEl:S,formChanged:C,submit:w,clear:D,formResult:v}};export{z as _,Z as a,F as b,q as c,G as d,W as f,V as g,B as h,$ as i,J as l,H as m,ne as n,X as o,U as p,Q as r,Y as s,re as t,K as u,R as v,P as x,te as y};
@@ -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,ui as o}from"./icon-with-child-DmQ_XhQy.js";import{A as s,Fn as c,Ht as l,Jn as u,Kn as d,Mn as f,Pn as p,S as m,T as h,Un as g,Vn as _,Vr as v,Wn as y,Yn as b,_ as x,an as S,f as C,m as w,pn as T,qn as E,qt as D,va as O,wn as k,zn as A}from"./common-DlW3qRTQ.js";import{t as ee}from"./useSpaces-DnSZteHf.js";import{o as j,s as M}from"./composables-Cl0F9F_S.js";var N=`scenes`,P=`scenes-module`,F=`ScenesModule.`,I=function(e){return e.TRIGGER_SCENE=`ScenesModule.TriggerScene`,e}({}),L=function(e){return e.TRIGGER_SCENE=`ScenesModule.TriggerSceneHandler`,e}({}),R=function(e){return e.SCENE_CREATED=`ScenesModule.Scene.Created`,e.SCENE_UPDATED=`ScenesModule.Scene.Updated`,e.SCENE_DELETED=`ScenesModule.Scene.Deleted`,e.SCENE_TRIGGERED=`ScenesModule.Scene.Triggered`,e.SCENE_EXECUTION_STARTED=`ScenesModule.Scene.ExecutionStarted`,e.SCENE_EXECUTION_COMPLETED=`ScenesModule.Scene.ExecutionCompleted`,e.SCENE_EXECUTION_FAILED=`ScenesModule.Scene.ExecutionFailed`,e.SCENE_ACTION_CREATED=`ScenesModule.SceneAction.Created`,e.SCENE_ACTION_UPDATED=`ScenesModule.SceneAction.Updated`,e.SCENE_ACTION_DELETED=`ScenesModule.SceneAction.Deleted`,e}({}),z=function(e){return e.GENERIC=`generic`,e.LIGHTING=`lighting`,e.CLIMATE=`climate`,e.MEDIA=`media`,e.WORK=`work`,e.RELAX=`relax`,e.NIGHT=`night`,e.MORNING=`morning`,e.PARTY=`party`,e.MOVIE=`movie`,e.AWAY=`away`,e.HOME=`home`,e.SECURITY=`security`,e.ENERGY=`energy`,e.CUSTOM=`custom`,e}({}),B=function(e){return e.NONE=`none`,e.WORKING=`working`,e.ERROR=`error`,e.OK=`ok`,e}({}),V={SCENES:`scenes_module-scenes`,SCENES_ADD:`scenes_module-scenes_add`,SCENES_EDIT:`scenes_module-scenes_edit`,SCENE:`scenes_module-scene`,SCENE_EDIT:`scenes_module-scene_edit`,SCENE_ADD_ACTION:`scenes_module-scene_add_action`,SCENE_EDIT_ACTION:`scenes_module-scene_edit_action`},H={[z.GENERIC]:`mdi:playlist-play`,[z.LIGHTING]:`mdi:lightbulb-group`,[z.CLIMATE]:`mdi:thermostat`,[z.MEDIA]:`mdi:television-play`,[z.WORK]:`mdi:briefcase`,[z.RELAX]:`mdi:sofa`,[z.NIGHT]:`mdi:weather-night`,[z.MORNING]:`mdi:weather-sunset-up`,[z.PARTY]:`mdi:party-popper`,[z.MOVIE]:`mdi:movie-open`,[z.AWAY]:`mdi:home-export-outline`,[z.HOME]:`mdi:home-import-outline`,[z.SECURITY]:`mdi:shield-home`,[z.ENERGY]:`mdi:flash`,[z.CUSTOM]:`mdi:shape-outline`},U=y({search:E().optional(),categories:p(_(z)),primarySpaceId:u([E().uuid(),A(`whole_home`)]).optional(),enabled:f([`all`,`enabled`,`disabled`]).default(`all`)}),W=({id:e})=>{let t=h(),n=t.getStore(M),r=t.getStore(j),{data:i,semaphore:o}=O(n);return{scene:a(()=>e===null?null:i.value.get(e)??null),isLoading:a(()=>o.value.fetching.item.includes(e)?!0:i.value.get(e)===void 0?o.value.fetching.items:!1),fetchScene:async()=>{i.value.get(e)?.draft||(await n.get({id:e}),await r.fetch({sceneId:e}))}}},G=y({id:E().uuid().optional(),type:E().trim().nonempty(),configuration:d(E(),b()).default({}),order:g().int().min(0).optional(),enabled:c().default(!0)}).catchall(b());y({id:E().uuid(),type:E().trim().nonempty(),configuration:d(E(),b()).optional(),order:g().int().min(0).optional(),enabled:c().optional()}).catchall(b());var K=y({id:E().uuid().optional(),name:E().trim().nonempty(),description:E().trim().transform(e=>e===``?null:e).nullable().optional(),category:_(z).default(z.GENERIC),enabled:c().default(!0),order:g().optional(),primarySpaceId:E().uuid().nullable().optional().transform(e=>e===``?null:e),actions:p(G).default([])}),q=y({id:E().uuid(),name:E().trim().nonempty().optional(),description:E().trim().transform(e=>e===``?null:e).nullable().optional(),category:_(z).optional(),enabled:c().optional(),order:g().optional(),primarySpaceId:E().uuid().nullable().optional().transform(e=>e===``?null:e),actions:p(G).default([])}),J=class extends Error{exception;constructor(e,t=null){super(e),this.name=`ScenesException`,this.exception=t}},Y=class extends J{code;constructor(e,t=null,n=null){super(e,n),this.name=`ScenesApiException`,this.code=t}},X=class extends J{constructor(e,t=null){super(e,t),this.name=`ScenesValidationException`}},te=()=>{let e=s(),{enabled:t}=S(),n=[`sceneActionAddForm`,`sceneActionEditForm`,`sceneActionCard`],r=[`sceneActionSchema`,`sceneActionAddFormSchema`,`sceneActionEditFormSchema`,`sceneActionCreateReqSchema`,`sceneActionUpdateReqSchema`],i=a(()=>e.getPlugins().filter(e=>e.modules===void 0||e.modules.includes(`scenes-module`)?(e.elements??[]).some(e=>{if(!(e.modules===void 0||e.modules.includes(`scenes-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:i,options:a(()=>T(i.value.flatMap(e=>(e.elements??[]).filter(e=>{let t=e.modules===void 0||e.modules.includes(`scenes-module`),r=!!e.components&&n.some(t=>e.components&&t in e.components);return t&&r}).map(n=>({value:n.type,label:n.name?.trim()?n.name:e.name,disabled:!t(e.type)}))),[e=>e.label],[`asc`])),getByName:e=>i.value.find(t=>t.type===e),getByType:e=>i.value.find(t=>(t.elements??[]).some(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`scenes-module`)))),getElement:e=>{for(let t of i.value){let n=(t.elements??[]).find(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`scenes-module`)));if(n)return n}}}},Z=k(),ne=({id:e})=>{let s=h(),c=s.getStore(M),u=s.getStore(j),{t:d}=r(),f=x(),p=m(),{spaces:g,fetching:_,fetchSpaces:v}=ee(),y=o(B.NONE),b,S=a(()=>Object.values(z).map(e=>({value:e,label:d(`scenes.categories.${e}`),icon:H[e]}))),C=a(()=>{let e=g.value.filter(e=>e.type===l.ROOM).map(e=>({value:e.id,label:e.name,icon:D(e)})).sort((e,t)=>e.label.localeCompare(t.label)),t=g.value.filter(e=>e.type===l.ZONE).map(e=>({value:e.id,label:e.name,icon:D(e)})).sort((e,t)=>e.label.localeCompare(t.label)),n=[];return e.length>0&&n.push({type:l.ROOM,label:d(`scenes.form.spaceGroups.rooms`),icon:`mdi:door`,options:e}),t.length>0&&n.push({type:l.ZONE,label:d(`scenes.form.spaceGroups.zones`),icon:`mdi:map-marker-radius`,options:t}),n}),T=n({id:e,category:z.GENERIC,name:``,description:null,enabled:!0,primarySpaceId:null,actions:[]}),{options:E,getElement:O}=te(),k=e=>{let t=e.propertyId;return t&&T.actions.find(e=>e.propertyId===t)?(f.warning(d(`scenes.messages.duplicateAction`)),!1):(T.actions.push(e),!0)},A=e=>{T.actions.splice(e,1)},N=(e,t)=>{e>=0&&e<T.actions.length&&(T.actions[e]=t)},P=e=>O(e)?.components?.sceneActionCard??null,F=e=>O(e)?.components?.sceneActionAddForm??null,I=e=>O(e)?.components?.sceneActionEditForm??null,L=e=>E.value.find(t=>t.value===e)?.label??e,R=w(i(T)),V=o(void 0),U=o(!1),W=async(e,t)=>{try{for(let n=0;n<t.length;n++){let r=t[n];r&&await u.add({sceneId:e,data:{...r,order:n,enabled:r.enabled??!0}})}}catch(e){throw p.error(`Error syncing scene actions:`,e),e}},G=async()=>{if(V.value.clearValidate(),!await V.value.validate())throw new X(`Form not valid`);let t=K.safeParse(T);if(!t.success)throw p.error(`Schema validation failed with:`,t.error),new X(`Failed to validate create scene model.`);y.value=B.WORKING;let n=d(`scenes.messages.createFailed`);try{let n=await c.add({id:e,draft:!1,data:t.data});t.data.actions.length>0&&await W(n.id,t.data.actions)}catch(e){throw y.value=B.ERROR,b=window.setTimeout(q,2e3),e instanceof Y&&e.code===422?f.error(e.message):f.error(n),e}return y.value=B.OK,b=window.setTimeout(q,2e3),f.success(d(`scenes.messages.created`)),`added`},q=()=>{window.clearTimeout(b),y.value=B.NONE};return t(T,()=>{U.value=!(0,Z.isEqual)(i(T),R)}),{categoriesOptions:S,spacesOptionsGrouped:C,model:T,formEl:V,formChanged:U,submit:G,clear:q,formResult:y,loadingSpaces:_,fetchSpaces:v,actionPluginOptions:E,addAction:k,removeAction:A,updateAction:N,getActionCardComponent:P,getActionFormComponent:F,getActionEditFormComponent:I,getPluginLabel:L}},re=({scene:s,messages:c})=>{let u=h(),d=u.getStore(M),f=u.getStore(j),{t:p}=r(),g=x(),_=m(),{spaces:v,fetching:y,fetchSpaces:b}=ee(),S=o(B.NONE),C=a(()=>f.findForScene(s.id)),T=o(w(C.value)),E,O=a(()=>Object.values(z).map(e=>({value:e,label:p(`scenes.categories.${e}`),icon:H[e]}))),k=a(()=>{let e=v.value.filter(e=>e.type===l.ROOM).map(e=>({value:e.id,label:e.name,icon:D(e)})).sort((e,t)=>e.label.localeCompare(t.label)),t=v.value.filter(e=>e.type===l.ZONE).map(e=>({value:e.id,label:e.name,icon:D(e)})).sort((e,t)=>e.label.localeCompare(t.label)),n=[];return e.length>0&&n.push({type:l.ROOM,label:p(`scenes.form.spaceGroups.rooms`),icon:`mdi:door`,options:e}),t.length>0&&n.push({type:l.ZONE,label:p(`scenes.form.spaceGroups.zones`),icon:`mdi:map-marker-radius`,options:t}),n}),A=a(()=>C.value.map(e=>({...e}))),N=n({id:s.id,category:s.category,name:s.name,description:s.description,enabled:s.enabled,primarySpaceId:s.primarySpaceId,actions:A.value}),{options:P,getElement:F}=te(),I=e=>{let t=e.propertyId;return t&&N.actions.find(e=>e.propertyId===t)?(g.warning(p(`scenes.messages.duplicateAction`)),!1):(N.actions.push(e),!0)},L=e=>{N.actions.splice(e,1)},R=(e,t)=>{e>=0&&e<N.actions.length&&(N.actions[e]=t)},V=e=>F(e)?.components?.sceneActionCard??null,U=e=>F(e)?.components?.sceneActionAddForm??null,W=e=>F(e)?.components?.sceneActionEditForm??null,G=e=>P.value.find(t=>t.value===e)?.label??e,K=o(void 0),J=o(!1),ne=w(i(N)),re=async(e,t)=>{try{let n=new Set(T.value.map(e=>e.id)),r=new Set(t.filter(e=>e.id).map(e=>e.id));for(let t of T.value)r.has(t.id)||await f.remove({id:t.id,sceneId:e});let i=new Map;for(let r=0;r<t.length;r++){let a=t[r];if(!a)continue;let o=a.id;if(!o||!n.has(o)){let t=await f.add({sceneId:e,data:{...a,order:r,enabled:a.enabled??!0}});i.set(r,t.id)}else{let t=T.value.find(e=>e.id===o);if(t){let n=new Set([`id`,`draft`,`createdAt`,`updatedAt`,`scene`]),i=e=>Object.fromEntries(Object.entries(e).filter(([e])=>!n.has(e)));(0,Z.isEqual)(i(t),{...i(a),order:r})||await f.edit({id:o,sceneId:e,data:{...a,order:r}})}}}for(let[e,t]of i){let n=N.actions[e];n&&(n.id=t)}T.value=w(f.findForScene(e))}catch(e){throw _.error(`Error syncing scene actions:`,e),e}},ie=async()=>{let e=s.draft,t=c&&c.error?c.error:s.draft?p(`scenes.messages.createFailed`):p(`scenes.messages.editFailed`,{scene:s.name});if(K.value.clearValidate(),!await K.value.validate())throw new X(`Form not valid`);let n=q.safeParse(N);if(!n.success)throw _.error(`Schema validation failed with:`,n.error),new X(`Failed to validate edit scene model.`);S.value=B.WORKING;try{await d.edit({id:s.id,data:n.data});let t=s.id;if(e){let e=await d.save({id:s.id});N.id=e.id,N.category=e.category,N.name=e.name,N.description=e.description,N.enabled=e.enabled,N.primarySpaceId=e.primarySpaceId,t=e.id}await re(t,n.data.actions)}catch(e){throw S.value=B.ERROR,E=window.setTimeout(Q,2e3),e instanceof Y&&e.code===422?g.error(e.message):e instanceof X||(g.error(t),_.error(`Scene edit failed:`,e)),e}return S.value=B.OK,E=window.setTimeout(Q,2e3),e?(g.success(p(c&&c.success?c.success:`scenes.messages.created`)),`added`):(g.success(p(c&&c.success?c.success:`scenes.messages.edited`,{scene:s.name})),J.value=!1,ne=w(i(N)),`saved`)},Q=()=>{window.clearTimeout(E),S.value=B.NONE};return t(N,()=>{J.value=!(0,Z.isEqual)(i(N),ne)}),e(()=>{Q()}),{categoriesOptions:O,spacesOptionsGrouped:k,model:N,formEl:K,formChanged:J,submit:ie,clear:Q,formResult:S,loadingSpaces:y,fetchSpaces:b,actionPluginOptions:P,addAction:I,removeAction:L,updateAction:R,getActionCardComponent:V,getActionFormComponent:U,getActionEditFormComponent:W,getPluginLabel:G}},ie=({id:e})=>{let t=h().getStore(M);return{icon:a(()=>{let n=t.findById(e);return n?.category&&n.category in H?H[n.category]:H[z.GENERIC]})}},Q=()=>{let e=h().getStore(M),{data:t,semaphore:n,firstLoad:r}=O(e);return{scenes:a(()=>Array.from(t.value.values()).sort((e,t)=>e.name.localeCompare(t.name))),fetching:a(()=>n.value.fetching.items),loaded:a(()=>r.value),fetchScenes:async()=>e.fetch(),getScene:async t=>e.get({id:t}),findById:t=>e.findById(t),findBySpace:t=>e.findBySpace(t),triggerScene:async(t,n)=>{await e.trigger({id:t,source:n})},removeScene:async t=>{await e.remove({id:t})}}},ae=()=>{let{t:e}=r(),t=x(),n=h().getStore(M);return{addScene:async e=>n.add(e),editScene:async e=>n.edit(e),removeScene:async e=>{await n.remove({id:e})},bulkRemove:async r=>{if(r.length!==0)try{await v.confirm(e(`scenes.texts.confirmBulkRemove`,{count:r.length}),e(`scenes.headings.bulkRemove`),{confirmButtonText:e(`scenes.buttons.yes.title`),cancelButtonText:e(`scenes.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(`scenes.messages.bulkRemoved`,{count:i})),a>0&&t.error(e(`scenes.messages.bulkRemoveFailed`,{count:a}))}catch{}},bulkEnable:async r=>{if(r.length!==0)try{await v.confirm(e(`scenes.texts.confirmBulkEnable`,{count:r.length}),e(`scenes.headings.bulkEnable`),{confirmButtonText:e(`scenes.buttons.yes.title`),cancelButtonText:e(`scenes.buttons.no.title`),type:`info`});let i=0,a=0;for(let e of r)try{await n.edit({id:e.id,data:{enabled:!0}}),i++}catch{a++}i>0&&t.success(e(`scenes.messages.bulkEnabled`,{count:i})),a>0&&t.error(e(`scenes.messages.bulkEnableFailed`,{count:a}))}catch{t.info(e(`scenes.messages.bulkEnableCanceled`))}},bulkDisable:async r=>{if(r.length!==0)try{await v.confirm(e(`scenes.texts.confirmBulkDisable`,{count:r.length}),e(`scenes.headings.bulkDisable`),{confirmButtonText:e(`scenes.buttons.yes.title`),cancelButtonText:e(`scenes.buttons.no.title`),type:`warning`});let i=0,a=0;for(let e of r)try{await n.edit({id:e.id,data:{enabled:!1}}),i++}catch{a++}i>0&&t.success(e(`scenes.messages.bulkDisabled`,{count:i})),a>0&&t.error(e(`scenes.messages.bulkDisableFailed`,{count:a}))}catch{t.info(e(`scenes.messages.bulkDisableCanceled`))}}}},$={search:void 0,categories:[],primarySpaceId:void 0,enabled:`all`},oe={by:`name`,dir:`asc`},se=()=>{let e=h().getStore(M),{firstLoad:n,semaphore:r}=O(e),{filters:i,sort:s,pagination:c,reset:l}=C({key:`${P}:scenes:list`,filters:{schema:U,defaults:$},sort:{defaults:[oe]},pagination:{defaults:{page:1,size:10}},syncQuery:!0,version:1}),u=a(()=>i.value.search!==$.search||!(0,Z.isEqual)(i.value.categories,$.categories)||i.value.primarySpaceId!==$.primarySpaceId||i.value.enabled!==$.enabled),d=o(c.value.size||10),f=o(c.value.page||1),p=o(s.value.length>0?s.value[0]?.by:void 0),m=o(s.value.length>0?s.value[0]?.dir??null:null),g=(e,t)=>t?t===`whole_home`?!e:e===t:!0,_=a(()=>{let t=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.categories.length===0||i.value.categories.includes(e.category))&&g(e.primarySpaceId,i.value.primarySpaceId)&&(i.value.enabled===`all`||i.value.enabled===`enabled`&&e.enabled||i.value.enabled===`disabled`&&!e.enabled)),n=p.value??`order`;return T(t,[e=>e[n]??``],[m.value??`asc`])}),v=a(()=>{let e=(f.value-1)*d.value,t=e+d.value;return _.value.slice(e,t)}),y=async()=>{await e.fetch()},b=a(()=>r.value.fetching.items||!n.value),x=a(()=>n.value),S=a(()=>e.findAll().filter(e=>!e.draft).length);return t(()=>c.value,e=>{f.value=e.page??1,d.value=e.size??10},{deep:!0}),t(()=>f.value,e=>{c.value.page=e}),t(()=>d.value,e=>{c.value.size=e}),t(()=>m.value,e=>{p.value===void 0||e===null?s.value=[]:s.value=[{by:p.value,dir:e}]}),t(()=>p.value,e=>{e===void 0||m.value===null?s.value=[]:s.value=[{by:e,dir:m.value}]}),t(()=>i.value,()=>{f.value=1},{deep:!0}),{scenes:_,scenesPaginated:v,totalRows:S,areLoading:b,loaded:x,fetchScenes:y,filters:i,filtersActive:u,paginateSize:d,paginatePage:f,sortBy:p,sortDir:m,resetFilter:l}};export{P as _,re as a,z as b,J as c,L as d,I as f,F as g,V as h,ie as i,X as l,B as m,ae as n,ne as o,R as p,Q as r,Y as s,se as t,W as u,N as v,H as y};
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,ui as o}from"./icon-with-child-DmQ_XhQy.js";import{A as s,Fn as c,Ht as l,Jn as u,Kn as d,Mn as f,Pn as p,S as m,T as h,Un as g,Vn as _,Vr as v,Wn as y,Yn as b,_ as x,an as S,f as C,m as w,pn as T,qn as E,qt as D,va as O,wn as k,zn as A}from"./common-DyDAwGBz.js";import{t as ee}from"./useSpaces-LfBlMH_H.js";import{o as j,s as M}from"./composables-UlKjXsBi.js";var N=`scenes`,P=`scenes-module`,F=`ScenesModule.`,I=function(e){return e.TRIGGER_SCENE=`ScenesModule.TriggerScene`,e}({}),L=function(e){return e.TRIGGER_SCENE=`ScenesModule.TriggerSceneHandler`,e}({}),R=function(e){return e.SCENE_CREATED=`ScenesModule.Scene.Created`,e.SCENE_UPDATED=`ScenesModule.Scene.Updated`,e.SCENE_DELETED=`ScenesModule.Scene.Deleted`,e.SCENE_TRIGGERED=`ScenesModule.Scene.Triggered`,e.SCENE_EXECUTION_STARTED=`ScenesModule.Scene.ExecutionStarted`,e.SCENE_EXECUTION_COMPLETED=`ScenesModule.Scene.ExecutionCompleted`,e.SCENE_EXECUTION_FAILED=`ScenesModule.Scene.ExecutionFailed`,e.SCENE_ACTION_CREATED=`ScenesModule.SceneAction.Created`,e.SCENE_ACTION_UPDATED=`ScenesModule.SceneAction.Updated`,e.SCENE_ACTION_DELETED=`ScenesModule.SceneAction.Deleted`,e}({}),z=function(e){return e.GENERIC=`generic`,e.LIGHTING=`lighting`,e.CLIMATE=`climate`,e.MEDIA=`media`,e.WORK=`work`,e.RELAX=`relax`,e.NIGHT=`night`,e.MORNING=`morning`,e.PARTY=`party`,e.MOVIE=`movie`,e.AWAY=`away`,e.HOME=`home`,e.SECURITY=`security`,e.ENERGY=`energy`,e.CUSTOM=`custom`,e}({}),B=function(e){return e.NONE=`none`,e.WORKING=`working`,e.ERROR=`error`,e.OK=`ok`,e}({}),V={SCENES:`scenes_module-scenes`,SCENES_ADD:`scenes_module-scenes_add`,SCENES_EDIT:`scenes_module-scenes_edit`,SCENE:`scenes_module-scene`,SCENE_EDIT:`scenes_module-scene_edit`,SCENE_ADD_ACTION:`scenes_module-scene_add_action`,SCENE_EDIT_ACTION:`scenes_module-scene_edit_action`},H={[z.GENERIC]:`mdi:playlist-play`,[z.LIGHTING]:`mdi:lightbulb-group`,[z.CLIMATE]:`mdi:thermostat`,[z.MEDIA]:`mdi:television-play`,[z.WORK]:`mdi:briefcase`,[z.RELAX]:`mdi:sofa`,[z.NIGHT]:`mdi:weather-night`,[z.MORNING]:`mdi:weather-sunset-up`,[z.PARTY]:`mdi:party-popper`,[z.MOVIE]:`mdi:movie-open`,[z.AWAY]:`mdi:home-export-outline`,[z.HOME]:`mdi:home-import-outline`,[z.SECURITY]:`mdi:shield-home`,[z.ENERGY]:`mdi:flash`,[z.CUSTOM]:`mdi:shape-outline`},U=y({search:E().optional(),categories:p(_(z)),primarySpaceId:u([E().uuid(),A(`whole_home`)]).optional(),enabled:f([`all`,`enabled`,`disabled`]).default(`all`)}),W=({id:e})=>{let t=h(),n=t.getStore(M),r=t.getStore(j),{data:i,semaphore:o}=O(n);return{scene:a(()=>e===null?null:i.value.get(e)??null),isLoading:a(()=>o.value.fetching.item.includes(e)?!0:i.value.get(e)===void 0?o.value.fetching.items:!1),fetchScene:async()=>{i.value.get(e)?.draft||(await n.get({id:e}),await r.fetch({sceneId:e}))}}},G=y({id:E().uuid().optional(),type:E().trim().nonempty(),configuration:d(E(),b()).default({}),order:g().int().min(0).optional(),enabled:c().default(!0)}).catchall(b());y({id:E().uuid(),type:E().trim().nonempty(),configuration:d(E(),b()).optional(),order:g().int().min(0).optional(),enabled:c().optional()}).catchall(b());var K=y({id:E().uuid().optional(),name:E().trim().nonempty(),description:E().trim().transform(e=>e===``?null:e).nullable().optional(),category:_(z).default(z.GENERIC),enabled:c().default(!0),order:g().optional(),primarySpaceId:E().uuid().nullable().optional().transform(e=>e===``?null:e),actions:p(G).default([])}),q=y({id:E().uuid(),name:E().trim().nonempty().optional(),description:E().trim().transform(e=>e===``?null:e).nullable().optional(),category:_(z).optional(),enabled:c().optional(),order:g().optional(),primarySpaceId:E().uuid().nullable().optional().transform(e=>e===``?null:e),actions:p(G).default([])}),J=class extends Error{exception;constructor(e,t=null){super(e),this.name=`ScenesException`,this.exception=t}},Y=class extends J{code;constructor(e,t=null,n=null){super(e,n),this.name=`ScenesApiException`,this.code=t}},X=class extends J{constructor(e,t=null){super(e,t),this.name=`ScenesValidationException`}},te=()=>{let e=s(),{enabled:t}=S(),n=[`sceneActionAddForm`,`sceneActionEditForm`,`sceneActionCard`],r=[`sceneActionSchema`,`sceneActionAddFormSchema`,`sceneActionEditFormSchema`,`sceneActionCreateReqSchema`,`sceneActionUpdateReqSchema`],i=a(()=>e.getPlugins().filter(e=>e.modules===void 0||e.modules.includes(`scenes-module`)?(e.elements??[]).some(e=>{if(!(e.modules===void 0||e.modules.includes(`scenes-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:i,options:a(()=>T(i.value.flatMap(e=>(e.elements??[]).filter(e=>{let t=e.modules===void 0||e.modules.includes(`scenes-module`),r=!!e.components&&n.some(t=>e.components&&t in e.components);return t&&r}).map(n=>({value:n.type,label:n.name?.trim()?n.name:e.name,disabled:!t(e.type)}))),[e=>e.label],[`asc`])),getByName:e=>i.value.find(t=>t.type===e),getByType:e=>i.value.find(t=>(t.elements??[]).some(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`scenes-module`)))),getElement:e=>{for(let t of i.value){let n=(t.elements??[]).find(t=>t.type===e&&(t.modules===void 0||t.modules.includes(`scenes-module`)));if(n)return n}}}},Z=k(),ne=({id:e})=>{let s=h(),c=s.getStore(M),u=s.getStore(j),{t:d}=r(),f=x(),p=m(),{spaces:g,fetching:_,fetchSpaces:v}=ee(),y=o(B.NONE),b,S=a(()=>Object.values(z).map(e=>({value:e,label:d(`scenes.categories.${e}`),icon:H[e]}))),C=a(()=>{let e=g.value.filter(e=>e.type===l.ROOM).map(e=>({value:e.id,label:e.name,icon:D(e)})).sort((e,t)=>e.label.localeCompare(t.label)),t=g.value.filter(e=>e.type===l.ZONE).map(e=>({value:e.id,label:e.name,icon:D(e)})).sort((e,t)=>e.label.localeCompare(t.label)),n=[];return e.length>0&&n.push({type:l.ROOM,label:d(`scenes.form.spaceGroups.rooms`),icon:`mdi:door`,options:e}),t.length>0&&n.push({type:l.ZONE,label:d(`scenes.form.spaceGroups.zones`),icon:`mdi:map-marker-radius`,options:t}),n}),T=n({id:e,category:z.GENERIC,name:``,description:null,enabled:!0,primarySpaceId:null,actions:[]}),{options:E,getElement:O}=te(),k=e=>{let t=e.propertyId;return t&&T.actions.find(e=>e.propertyId===t)?(f.warning(d(`scenes.messages.duplicateAction`)),!1):(T.actions.push(e),!0)},A=e=>{T.actions.splice(e,1)},N=(e,t)=>{e>=0&&e<T.actions.length&&(T.actions[e]=t)},P=e=>O(e)?.components?.sceneActionCard??null,F=e=>O(e)?.components?.sceneActionAddForm??null,I=e=>O(e)?.components?.sceneActionEditForm??null,L=e=>E.value.find(t=>t.value===e)?.label??e,R=w(i(T)),V=o(void 0),U=o(!1),W=async(e,t)=>{try{for(let n=0;n<t.length;n++){let r=t[n];r&&await u.add({sceneId:e,data:{...r,order:n,enabled:r.enabled??!0}})}}catch(e){throw p.error(`Error syncing scene actions:`,e),e}},G=async()=>{if(V.value.clearValidate(),!await V.value.validate())throw new X(`Form not valid`);let t=K.safeParse(T);if(!t.success)throw p.error(`Schema validation failed with:`,t.error),new X(`Failed to validate create scene model.`);y.value=B.WORKING;let n=d(`scenes.messages.createFailed`);try{let n=await c.add({id:e,draft:!1,data:t.data});t.data.actions.length>0&&await W(n.id,t.data.actions)}catch(e){throw y.value=B.ERROR,b=window.setTimeout(q,2e3),e instanceof Y&&e.code===422?f.error(e.message):f.error(n),e}return y.value=B.OK,b=window.setTimeout(q,2e3),f.success(d(`scenes.messages.created`)),`added`},q=()=>{window.clearTimeout(b),y.value=B.NONE};return t(T,()=>{U.value=!(0,Z.isEqual)(i(T),R)}),{categoriesOptions:S,spacesOptionsGrouped:C,model:T,formEl:V,formChanged:U,submit:G,clear:q,formResult:y,loadingSpaces:_,fetchSpaces:v,actionPluginOptions:E,addAction:k,removeAction:A,updateAction:N,getActionCardComponent:P,getActionFormComponent:F,getActionEditFormComponent:I,getPluginLabel:L}},re=({scene:s,messages:c})=>{let u=h(),d=u.getStore(M),f=u.getStore(j),{t:p}=r(),g=x(),_=m(),{spaces:v,fetching:y,fetchSpaces:b}=ee(),S=o(B.NONE),C=a(()=>f.findForScene(s.id)),T=o(w(C.value)),E,O=a(()=>Object.values(z).map(e=>({value:e,label:p(`scenes.categories.${e}`),icon:H[e]}))),k=a(()=>{let e=v.value.filter(e=>e.type===l.ROOM).map(e=>({value:e.id,label:e.name,icon:D(e)})).sort((e,t)=>e.label.localeCompare(t.label)),t=v.value.filter(e=>e.type===l.ZONE).map(e=>({value:e.id,label:e.name,icon:D(e)})).sort((e,t)=>e.label.localeCompare(t.label)),n=[];return e.length>0&&n.push({type:l.ROOM,label:p(`scenes.form.spaceGroups.rooms`),icon:`mdi:door`,options:e}),t.length>0&&n.push({type:l.ZONE,label:p(`scenes.form.spaceGroups.zones`),icon:`mdi:map-marker-radius`,options:t}),n}),A=a(()=>C.value.map(e=>({...e}))),N=n({id:s.id,category:s.category,name:s.name,description:s.description,enabled:s.enabled,primarySpaceId:s.primarySpaceId,actions:A.value}),{options:P,getElement:F}=te(),I=e=>{let t=e.propertyId;return t&&N.actions.find(e=>e.propertyId===t)?(g.warning(p(`scenes.messages.duplicateAction`)),!1):(N.actions.push(e),!0)},L=e=>{N.actions.splice(e,1)},R=(e,t)=>{e>=0&&e<N.actions.length&&(N.actions[e]=t)},V=e=>F(e)?.components?.sceneActionCard??null,U=e=>F(e)?.components?.sceneActionAddForm??null,W=e=>F(e)?.components?.sceneActionEditForm??null,G=e=>P.value.find(t=>t.value===e)?.label??e,K=o(void 0),J=o(!1),ne=w(i(N)),re=async(e,t)=>{try{let n=new Set(T.value.map(e=>e.id)),r=new Set(t.filter(e=>e.id).map(e=>e.id));for(let t of T.value)r.has(t.id)||await f.remove({id:t.id,sceneId:e});let i=new Map;for(let r=0;r<t.length;r++){let a=t[r];if(!a)continue;let o=a.id;if(!o||!n.has(o)){let t=await f.add({sceneId:e,data:{...a,order:r,enabled:a.enabled??!0}});i.set(r,t.id)}else{let t=T.value.find(e=>e.id===o);if(t){let n=new Set([`id`,`draft`,`createdAt`,`updatedAt`,`scene`]),i=e=>Object.fromEntries(Object.entries(e).filter(([e])=>!n.has(e)));(0,Z.isEqual)(i(t),{...i(a),order:r})||await f.edit({id:o,sceneId:e,data:{...a,order:r}})}}}for(let[e,t]of i){let n=N.actions[e];n&&(n.id=t)}T.value=w(f.findForScene(e))}catch(e){throw _.error(`Error syncing scene actions:`,e),e}},ie=async()=>{let e=s.draft,t=c&&c.error?c.error:s.draft?p(`scenes.messages.createFailed`):p(`scenes.messages.editFailed`,{scene:s.name});if(K.value.clearValidate(),!await K.value.validate())throw new X(`Form not valid`);let n=q.safeParse(N);if(!n.success)throw _.error(`Schema validation failed with:`,n.error),new X(`Failed to validate edit scene model.`);S.value=B.WORKING;try{await d.edit({id:s.id,data:n.data});let t=s.id;if(e){let e=await d.save({id:s.id});N.id=e.id,N.category=e.category,N.name=e.name,N.description=e.description,N.enabled=e.enabled,N.primarySpaceId=e.primarySpaceId,t=e.id}await re(t,n.data.actions)}catch(e){throw S.value=B.ERROR,E=window.setTimeout(Q,2e3),e instanceof Y&&e.code===422?g.error(e.message):e instanceof X||(g.error(t),_.error(`Scene edit failed:`,e)),e}return S.value=B.OK,E=window.setTimeout(Q,2e3),e?(g.success(p(c&&c.success?c.success:`scenes.messages.created`)),`added`):(g.success(p(c&&c.success?c.success:`scenes.messages.edited`,{scene:s.name})),J.value=!1,ne=w(i(N)),`saved`)},Q=()=>{window.clearTimeout(E),S.value=B.NONE};return t(N,()=>{J.value=!(0,Z.isEqual)(i(N),ne)}),e(()=>{Q()}),{categoriesOptions:O,spacesOptionsGrouped:k,model:N,formEl:K,formChanged:J,submit:ie,clear:Q,formResult:S,loadingSpaces:y,fetchSpaces:b,actionPluginOptions:P,addAction:I,removeAction:L,updateAction:R,getActionCardComponent:V,getActionFormComponent:U,getActionEditFormComponent:W,getPluginLabel:G}},ie=({id:e})=>{let t=h().getStore(M);return{icon:a(()=>{let n=t.findById(e);return n?.category&&n.category in H?H[n.category]:H[z.GENERIC]})}},Q=()=>{let e=h().getStore(M),{data:t,semaphore:n,firstLoad:r}=O(e);return{scenes:a(()=>Array.from(t.value.values()).sort((e,t)=>e.name.localeCompare(t.name))),fetching:a(()=>n.value.fetching.items),loaded:a(()=>r.value),fetchScenes:async()=>e.fetch(),getScene:async t=>e.get({id:t}),findById:t=>e.findById(t),findBySpace:t=>e.findBySpace(t),triggerScene:async(t,n)=>{await e.trigger({id:t,source:n})},removeScene:async t=>{await e.remove({id:t})}}},ae=()=>{let{t:e}=r(),t=x(),n=h().getStore(M);return{addScene:async e=>n.add(e),editScene:async e=>n.edit(e),removeScene:async e=>{await n.remove({id:e})},bulkRemove:async r=>{if(r.length!==0)try{await v.confirm(e(`scenes.texts.confirmBulkRemove`,{count:r.length}),e(`scenes.headings.bulkRemove`),{confirmButtonText:e(`scenes.buttons.yes.title`),cancelButtonText:e(`scenes.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(`scenes.messages.bulkRemoved`,{count:i})),a>0&&t.error(e(`scenes.messages.bulkRemoveFailed`,{count:a}))}catch{}},bulkEnable:async r=>{if(r.length!==0)try{await v.confirm(e(`scenes.texts.confirmBulkEnable`,{count:r.length}),e(`scenes.headings.bulkEnable`),{confirmButtonText:e(`scenes.buttons.yes.title`),cancelButtonText:e(`scenes.buttons.no.title`),type:`info`});let i=0,a=0;for(let e of r)try{await n.edit({id:e.id,data:{enabled:!0}}),i++}catch{a++}i>0&&t.success(e(`scenes.messages.bulkEnabled`,{count:i})),a>0&&t.error(e(`scenes.messages.bulkEnableFailed`,{count:a}))}catch{t.info(e(`scenes.messages.bulkEnableCanceled`))}},bulkDisable:async r=>{if(r.length!==0)try{await v.confirm(e(`scenes.texts.confirmBulkDisable`,{count:r.length}),e(`scenes.headings.bulkDisable`),{confirmButtonText:e(`scenes.buttons.yes.title`),cancelButtonText:e(`scenes.buttons.no.title`),type:`warning`});let i=0,a=0;for(let e of r)try{await n.edit({id:e.id,data:{enabled:!1}}),i++}catch{a++}i>0&&t.success(e(`scenes.messages.bulkDisabled`,{count:i})),a>0&&t.error(e(`scenes.messages.bulkDisableFailed`,{count:a}))}catch{t.info(e(`scenes.messages.bulkDisableCanceled`))}}}},$={search:void 0,categories:[],primarySpaceId:void 0,enabled:`all`},oe={by:`name`,dir:`asc`},se=()=>{let e=h().getStore(M),{firstLoad:n,semaphore:r}=O(e),{filters:i,sort:s,pagination:c,reset:l}=C({key:`${P}:scenes:list`,filters:{schema:U,defaults:$},sort:{defaults:[oe]},pagination:{defaults:{page:1,size:10}},syncQuery:!0,version:1}),u=a(()=>i.value.search!==$.search||!(0,Z.isEqual)(i.value.categories,$.categories)||i.value.primarySpaceId!==$.primarySpaceId||i.value.enabled!==$.enabled),d=o(c.value.size||10),f=o(c.value.page||1),p=o(s.value.length>0?s.value[0]?.by:void 0),m=o(s.value.length>0?s.value[0]?.dir??null:null),g=(e,t)=>t?t===`whole_home`?!e:e===t:!0,_=a(()=>{let t=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.categories.length===0||i.value.categories.includes(e.category))&&g(e.primarySpaceId,i.value.primarySpaceId)&&(i.value.enabled===`all`||i.value.enabled===`enabled`&&e.enabled||i.value.enabled===`disabled`&&!e.enabled)),n=p.value??`order`;return T(t,[e=>e[n]??``],[m.value??`asc`])}),v=a(()=>{let e=(f.value-1)*d.value,t=e+d.value;return _.value.slice(e,t)}),y=async()=>{await e.fetch()},b=a(()=>r.value.fetching.items||!n.value),x=a(()=>n.value),S=a(()=>e.findAll().filter(e=>!e.draft).length);return t(()=>c.value,e=>{f.value=e.page??1,d.value=e.size??10},{deep:!0}),t(()=>f.value,e=>{c.value.page=e}),t(()=>d.value,e=>{c.value.size=e}),t(()=>m.value,e=>{p.value===void 0||e===null?s.value=[]:s.value=[{by:p.value,dir:e}]}),t(()=>p.value,e=>{e===void 0||m.value===null?s.value=[]:s.value=[{by:e,dir:m.value}]}),t(()=>i.value,()=>{f.value=1},{deep:!0}),{scenes:_,scenesPaginated:v,totalRows:S,areLoading:b,loaded:x,fetchScenes:y,filters:i,filtersActive:u,paginateSize:d,paginatePage:f,sortBy:p,sortDir:m,resetFilter:l}};export{P as _,re as a,z as b,J as c,L as d,I as f,F as g,V as h,ie as i,X as l,B as m,ae as n,ne as o,R as p,Q as r,Y as s,se as t,W as u,N as v,H as y};
@@ -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,Ut as C,Vn as w,Vr as T,Vt as E,Wn as D,Yt as O,Zt as k,_ as A,dr as j,f as M,kt as ee,l as te,m as N,pn as P,qn as F,va as I,wn as ne,y as L,zn as re,zt as ie}from"./common-DlW3qRTQ.js";import{t as ae}from"./keys-DHSxrtbW.js";import{a as R,i as z,n as oe}from"./useSpaces-DnSZteHf.js";import{a as se}from"./keys-Cm97UJHM.js";var ce=e=>{let t=x().getStore(y),{data:n,semaphore:r}=I(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:F().optional(),type:f([w(d),re(`all`)]).default(`all`)}),B=D({name:F().min(1),description:F().nullable().optional(),category:f([w(E),w(C)]).nullable().optional(),icon:F().nullable().optional(),displayOrder:S().int().min(0).default(0),parentId:F().uuid().nullable().optional()}),ue=B.extend({id:F().uuid(),type:w(d).default(d.ROOM)}),de=B.extend({id:F().uuid(),type:w(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}=I(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}=I(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?T.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 T.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}=I(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 j.room:return d.ROOM;case j.zone:return d.ZONE;default:return d.ROOM}},Q=e=>{switch(e){case d.ROOM:return j.room;case d.ZONE:return j.zone;default:return j.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,Ut as C,Vn as w,Vr as T,Vt as E,Wn as D,Yt as O,Zt as k,_ as A,dr as j,f as M,kt as ee,l as te,m as N,pn as P,qn as F,va as I,wn as ne,y as L,zn as re,zt as ie}from"./common-DyDAwGBz.js";import{t as ae}from"./keys-DHSxrtbW.js";import{a as R,i as z,n as oe}from"./useSpaces-LfBlMH_H.js";import{a as se}from"./keys-Cm97UJHM.js";var ce=e=>{let t=x().getStore(y),{data:n,semaphore:r}=I(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:F().optional(),type:f([w(d),re(`all`)]).default(`all`)}),B=D({name:F().min(1),description:F().nullable().optional(),category:f([w(E),w(C)]).nullable().optional(),icon:F().nullable().optional(),displayOrder:S().int().min(0).default(0),parentId:F().uuid().nullable().optional()}),ue=B.extend({id:F().uuid(),type:w(d).default(d.ROOM)}),de=B.extend({id:F().uuid(),type:w(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}=I(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}=I(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?T.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 T.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}=I(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 j.room:return d.ROOM;case j.zone:return d.ZONE;default:return d.ROOM}},Q=e=>{switch(e){case d.ROOM:return j.room;case d.ZONE:return j.zone;default:return j.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{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{Fr as c,Mn as l,Pn as u,S as d,T as f,Vr as p,Wn as m,_ as h,f as g,m as _,pn as v,qn as y,va as b,wn as x,y as S}from"./common-DlW3qRTQ.js";import{t as C}from"./keys-DHSxrtbW.js";var w=e=>{let n=f().getStore(C),{tokenRefreshTriggers:r}=b(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=_(i(m)),v=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(!v.value)throw new N(`Form element is not available`);if(v.value.clearValidate(),!await v.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=_(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:v,formChanged:y,submit:b,clear:x,formResult:d}},L=()=>{let e=f().getStore(C),{firstLoad:t}=b(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:y().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}=b(e),{filters:i,sort:o,pagination:c,reset:l}=g({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),_=a(()=>v(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`])),y=a(()=>{let e=(p.value-1)*d.value,t=e+d.value;return _.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:_,displaysPaginated:y,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{Fr as c,Mn as l,Pn as u,S as d,T as f,Vr as p,Wn as m,_ as h,f as g,m as _,pn as v,qn as y,va as b,wn as x,y as S}from"./common-DyDAwGBz.js";import{t as C}from"./keys-DHSxrtbW.js";var w=e=>{let n=f().getStore(C),{tokenRefreshTriggers:r}=b(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=_(i(m)),v=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(!v.value)throw new N(`Form element is not available`);if(v.value.clearValidate(),!await v.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=_(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:v,formChanged:y,submit:b,clear:x,formResult:d}},L=()=>{let e=f().getStore(C),{firstLoad:t}=b(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:y().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}=b(e),{filters:i,sort:o,pagination:c,reset:l}=g({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),_=a(()=>v(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`])),y=a(()=>{let e=(p.value-1)*d.value,t=e+d.value;return _.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:_,displaysPaginated:y,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};