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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/dist/assets/{card-add-form-rpmgjDmO.js → card-add-form-DCedaTn3.js} +1 -1
  2. package/dist/assets/{card-edit-form-DDt4H5WZ.js → card-edit-form-DziEugFc.js} +1 -1
  3. package/dist/assets/{common-CAjixqPD.js → common-1h7wnZKI.js} +4 -4
  4. package/dist/assets/{components-CZGeTZwc.js → components-BrAf-RJg.js} +1 -1
  5. package/dist/assets/{components-ybs_C0a_.js → components-CMK0gDCp.js} +1 -1
  6. package/dist/assets/{components-DtYyzBb1.js → components-C_HvCpT4.js} +1 -1
  7. package/dist/assets/{components-B61e_fOx.js → components-CdF8DZml.js} +1 -1
  8. package/dist/assets/{components-Ib5ZN3nG.js → components-DSqvBTya.js} +2 -2
  9. package/dist/assets/{components-qcxUqWh1.js → components-GWm0hgQh.js} +1 -1
  10. package/dist/assets/{components-Db5KE4En.js → components-_k2VKZQT.js} +1 -1
  11. package/dist/assets/{components-DfLws3Hl.js → components-c1epF7E-.js} +1 -1
  12. package/dist/assets/{composables-CJjb4Vof.js → composables-5JPJUgKe.js} +1 -1
  13. package/dist/assets/{composables-BCgxJQQ0.js → composables-BEEHFlkU.js} +1 -1
  14. package/dist/assets/{composables-CB2IZ-c3.js → composables-BGAbz9D6.js} +1 -1
  15. package/dist/assets/{composables-hcvOq97L.js → composables-B_71n432.js} +1 -1
  16. package/dist/assets/{composables-6BqZcS0K.js → composables-CXPXTZYE.js} +1 -1
  17. package/dist/assets/{composables-BQsL4hHn2.js → composables-DLNfKORz2.js} +1 -1
  18. package/dist/assets/{composables-BiEpf3Vf.js → composables-DO4WyFIN.js} +1 -1
  19. package/dist/assets/{composables-Chd-wBIb.js → composables-DOc8b-Nv.js} +1 -1
  20. package/dist/assets/{composables-ByTSoaPh.js → composables-DfpUdQTp.js} +1 -1
  21. package/dist/assets/{dashboard-BtquI5JS.js → dashboard-Bwl1moRS.js} +2 -2
  22. package/dist/assets/{dashboard.types-DERg24zT.js → dashboard.types-BWvt1eV6.js} +1 -1
  23. package/dist/assets/{data-source-edit-form-CeK134aL.js → data-source-edit-form-Bb8XbcJj.js} +1 -1
  24. package/dist/assets/{drawer-C-mjhitw.js → drawer-9BrwP53p.js} +1 -1
  25. package/dist/assets/{index-CKhXr4W1.js → index-8G_27KRI.js} +4 -4
  26. package/dist/assets/{input-number-Bf9guYbS.js → input-number-DvPtEsoF.js} +1 -1
  27. package/dist/assets/{integration-config-dialog-kjTaU1x_.js → integration-config-dialog-Bjc7Q8Bp.js} +1 -1
  28. package/dist/assets/{layout-config-CCI9pSi9.js → layout-config-CeSZfdZE.js} +1 -1
  29. package/dist/assets/{layout-default-D-MQ3wX2.js → layout-default-BVzpSMUy.js} +1 -1
  30. package/dist/assets/{layout-lock-DAQaH_Xl.js → layout-lock-CF48vqic.js} +1 -1
  31. package/dist/assets/layout-profile-BIxgqLEU.js +1 -0
  32. package/dist/assets/{layout-profile-C7g4wi8x.js → layout-profile-CoFg77uC.js} +1 -1
  33. package/dist/assets/layout-sign-CRwjf2zl.js +1 -0
  34. package/dist/assets/{layout-sign-BCjmshMs.js → layout-sign-D8nAePxS.js} +1 -1
  35. package/dist/assets/{list-data-sources-adjust-BYmztKis.js → list-data-sources-adjust-BH9ogQkA.js} +1 -1
  36. package/dist/assets/{list-locations-D2l6zAcp.js → list-locations-BZxukcZM.js} +1 -1
  37. package/dist/assets/{list-users-DUPp_m6V.js → list-users-lN96y0RG.js} +1 -1
  38. package/dist/assets/{logs-entries.transformers-BL5SU68o.js → logs-entries.transformers-BRvrBqiQ.js} +1 -1
  39. package/dist/assets/{page-configure-DNmaAy-q.js → page-configure-DPaFSSdI.js} +1 -1
  40. package/dist/assets/{page-configure-BAt8rofo.js → page-configure-lWfAVkSz.js} +1 -1
  41. package/dist/assets/{pagination-BQR_fCPb.js → pagination-CZ4jiyxa.js} +1 -1
  42. package/dist/assets/{popover-D0CsKKET.js → popover-BfAst2mZ.js} +1 -1
  43. package/dist/assets/{radio-J7_ilOG9.js → radio-n1KvuN2C.js} +1 -1
  44. package/dist/assets/{scene-add-form-KF7cqowt.js → scene-add-form-DQPVDmeW.js} +1 -1
  45. package/dist/assets/{scene-edit-form-CpkMjqSw.js → scene-edit-form-Cz5aPdlM.js} +1 -1
  46. package/dist/assets/{select-data-source-plugin-COs3N-e9.js → select-data-source-plugin-CAYTXWzW.js} +1 -1
  47. package/dist/assets/{steps-ghWvHHts.js → steps-uN6IlAcu.js} +1 -1
  48. package/dist/assets/{system-CMIgrmXq.js → system-Di-WFuM7.js} +2 -2
  49. package/dist/assets/{table-CoYE5Nil.js → table-F4z-5gbH.js} +1 -1
  50. package/dist/assets/{tile-detail-Bi8cZwwY.js → tile-detail-D-26JTMN.js} +1 -1
  51. package/dist/assets/{tile-edit-form-BHYwkOMu.js → tile-edit-form-DeFggT4B.js} +1 -1
  52. package/dist/assets/{types-CyaFMkVG.js → types-CchA8Wmm.js} +1 -1
  53. package/dist/assets/{useBuddyChat-C5IxxpHH.js → useBuddyChat-CApvAiGE.js} +1 -1
  54. package/dist/assets/{useDataSources-Dq9R1F7b.js → useDataSources-CprVpbHE.js} +1 -1
  55. package/dist/assets/{useDevices-CvgO9qgK.js → useDevices-DxXqJ_nb.js} +1 -1
  56. package/dist/assets/{useGeolocation-BArOLUOZ.js → useGeolocation-DJuwtAxC.js} +1 -1
  57. package/dist/assets/{useLocation-D18T6_bh.js → useLocation-Rrxn6HvJ.js} +1 -1
  58. package/dist/assets/{usePage-DO92F4Cy.js → usePage-BaX0yHPY.js} +1 -1
  59. package/dist/assets/{useSpaces-BL6FcRzt.js → useSpaces-C12q9q5Q.js} +1 -1
  60. package/dist/assets/{view-buddy-chat-D8VQJwQo.js → view-buddy-chat-DW34rzR9.js} +1 -1
  61. package/dist/assets/{view-card-add-DOhbBYdH.js → view-card-add-CieaYa63.js} +1 -1
  62. package/dist/assets/{view-card-edit-t7ZnWdSa.js → view-card-edit-C5umbCIq.js} +1 -1
  63. package/dist/assets/{view-channel-D-nKcLgi.js → view-channel-C-fOWWRX.js} +1 -1
  64. package/dist/assets/{view-channel-add-VIegwFmu.js → view-channel-add-DV7C8y80.js} +1 -1
  65. package/dist/assets/{view-channel-edit-D9LvFLsE.js → view-channel-edit-5--_eck7.js} +1 -1
  66. package/dist/assets/{view-channel-property-add-LTsblKzi.js → view-channel-property-add-wDJXaHo2.js} +1 -1
  67. package/dist/assets/{view-channel-property-edit-mFIYfmYK.js → view-channel-property-edit-B7HA2nnd.js} +1 -1
  68. package/dist/assets/{view-channels-CnQIFIMn.js → view-channels-Db2KuPaM.js} +1 -1
  69. package/dist/assets/{view-config-module-edit-DRCBwNH1.js → view-config-module-edit-IuAZceQY.js} +1 -1
  70. package/dist/assets/{view-config-modules-BCpZs8eU.js → view-config-modules--xgrpao4.js} +1 -1
  71. package/dist/assets/{view-config-plugin-edit-C5aeI9Vr.js → view-config-plugin-edit-Bbwxb7cZ.js} +1 -1
  72. package/dist/assets/{view-config-plugins-CDjhY3-h.js → view-config-plugins-D16Pq90F.js} +1 -1
  73. package/dist/assets/{view-data-source-add-JxKHmcXN.js → view-data-source-add-BvvULVFs.js} +1 -1
  74. package/dist/assets/{view-data-source-add-CZtz8I-k.js → view-data-source-add-DPq16k0M.js} +1 -1
  75. package/dist/assets/{view-data-source-edit-DfYywmt3.js → view-data-source-edit-9MgqKtIH.js} +1 -1
  76. package/dist/assets/{view-data-source-edit-Cn3idpNK.js → view-data-source-edit-DlXyGIbG.js} +1 -1
  77. package/dist/assets/{view-device-CHPlQcOx.js → view-device-DZv1M8Lr.js} +1 -1
  78. package/dist/assets/{view-device-add-BD19ruAf.js → view-device-add-CxewPpiB.js} +1 -1
  79. package/dist/assets/{view-device-control--AG4u44t.js → view-device-control-C180PepT.js} +1 -1
  80. package/dist/assets/{view-device-edit-CVRD3WCQ.js → view-device-edit-Dt84BT5r.js} +1 -1
  81. package/dist/assets/{view-devices-vH94m335.js → view-devices-CCEfFGxO.js} +1 -1
  82. package/dist/assets/{view-display-BLdB5BBM.js → view-display-DCM7oLnE.js} +1 -1
  83. package/dist/assets/{view-display-edit-Mggo1D5E.js → view-display-edit-CfkL-Vgz.js} +1 -1
  84. package/dist/assets/{view-display-tokens-DMzEFrYN.js → view-display-tokens-BZQnvWFN.js} +1 -1
  85. package/dist/assets/{view-displays-wtHXZorg.js → view-displays-DnqZ4It-.js} +1 -1
  86. package/dist/assets/{view-extension-detail-BjOGD_dA.js → view-extension-detail-Cpq-1-vB.js} +1 -1
  87. package/dist/assets/{view-extensions-DYASEQw6.js → view-extensions-B2xiSBmt.js} +1 -1
  88. package/dist/assets/{view-location-add-CJ6srIKB.js → view-location-add-ucbk868d.js} +1 -1
  89. package/dist/assets/{view-location-edit-CmnAWaM8.js → view-location-edit-CV308tlg.js} +1 -1
  90. package/dist/assets/{view-location-CSS2NSC7.js → view-location-w7E7h5dl.js} +1 -1
  91. package/dist/assets/{view-locations-Oegok1b_.js → view-locations-DiHaHPaw.js} +1 -1
  92. package/dist/assets/{view-lock-screen-D5ezGMLC.js → view-lock-screen-D_kKbwJ0.js} +1 -1
  93. package/dist/assets/{view-onboarding-DoHYEBlZ.js → view-onboarding-BpUVrpsJ.js} +1 -1
  94. package/dist/assets/{view-page-C3wQuwJw.js → view-page-CnKMzrK3.js} +1 -1
  95. package/dist/assets/{view-page-add-BeojfoQo.js → view-page-add-Bs37phc4.js} +1 -1
  96. package/dist/assets/{view-page-configure-DNLlVnIC.js → view-page-configure-BnibCrwy.js} +1 -1
  97. package/dist/assets/{view-page-configure-DIotfRv1.js → view-page-configure-CKqBhTXo.js} +1 -1
  98. package/dist/assets/{view-page-data-source-add-DC6l9z58.js → view-page-data-source-add-DQoCLe3r.js} +1 -1
  99. package/dist/assets/{view-page-data-source-edit-B3wblyJb.js → view-page-data-source-edit-9DZ2Z8ED.js} +1 -1
  100. package/dist/assets/{view-page-edit-BWSGtzMi.js → view-page-edit-DHCziJsf.js} +1 -1
  101. package/dist/assets/{view-page-plugin-DoW1V5nf.js → view-page-plugin-B8lpU_yI.js} +1 -1
  102. package/dist/assets/{view-pages-COtGytPt.js → view-pages-WY1tS9F0.js} +1 -1
  103. package/dist/assets/{view-profile-general-DPMtZdx9.js → view-profile-general-CvcqqnT0.js} +1 -1
  104. package/dist/assets/{view-profile-security-BDqUwuQU.js → view-profile-security-BCPrVqHA.js} +1 -1
  105. package/dist/assets/{view-scene-add-CHYbpuxQ.js → view-scene-add-D6BQ-QjZ.js} +1 -1
  106. package/dist/assets/{view-scene-edit-BR-G2_-E.js → view-scene-edit-U01SiuqE.js} +1 -1
  107. package/dist/assets/{view-scenes-BJIG7uRJ.js → view-scenes-U6LOZX5J.js} +1 -1
  108. package/dist/assets/{view-sign-in-CsL_DP69.js → view-sign-in-Dop_D0u1.js} +1 -1
  109. package/dist/assets/{view-sign-up-CliXNi--.js → view-sign-up-CN9FUgS3.js} +1 -1
  110. package/dist/assets/{view-space-P8uRDfN1.js → view-space-CfoK-7op.js} +1 -1
  111. package/dist/assets/{view-space-add-BdRH1_Y0.js → view-space-add-CpMFTOLa.js} +1 -1
  112. package/dist/assets/{view-space-edit-cDZSkaoE.js → view-space-edit-DFsIcG7t.js} +1 -1
  113. package/dist/assets/{view-spaces-qQZ6DOwO.js → view-spaces-6X_ollTy.js} +1 -1
  114. package/dist/assets/{view-spaces-onboarding-BHCX1h9X.js → view-spaces-onboarding-B_Q4z0aj.js} +1 -1
  115. package/dist/assets/{view-stats-7rHmZTQw.js → view-stats-wsrYRdIZ.js} +1 -1
  116. package/dist/assets/{view-system-info-C1B_bnP7.js → view-system-info-Mjmt-jg8.js} +1 -1
  117. package/dist/assets/{view-system-log-detail-BQmtZKI9.js → view-system-log-detail-DjpaSCsY.js} +1 -1
  118. package/dist/assets/{view-system-logs-BD8Gec51.js → view-system-logs-D0KfSCQV.js} +1 -1
  119. package/dist/assets/{view-tile-CTZ7sK0j.js → view-tile-DIRBj4gV.js} +1 -1
  120. package/dist/assets/{view-tile-add-yExCIUXb.js → view-tile-add-BxeM6Ohp.js} +1 -1
  121. package/dist/assets/{view-tile-add-C6BekZq-.js → view-tile-add-DX-JsGxr.js} +1 -1
  122. package/dist/assets/{view-tile-data-source-add-CPnC2t2B.js → view-tile-data-source-add-BV3z8_JV.js} +1 -1
  123. package/dist/assets/{view-tile-data-source-edit-DvKR-IMN.js → view-tile-data-source-edit-COWZ99J9.js} +1 -1
  124. package/dist/assets/{view-tile-edit-kWHw4R97.js → view-tile-edit-BVSVskXZ.js} +1 -1
  125. package/dist/assets/{view-tile-edit-DxKZKsDe.js → view-tile-edit-DNVW7Ry7.js} +1 -1
  126. package/dist/assets/{view-tile-edit-UIXJnBuW.js → view-tile-edit-Dh5GsDmT.js} +1 -1
  127. package/dist/assets/{view-user-add-CfwHZf-t.js → view-user-add--HRflXBU.js} +1 -1
  128. package/dist/assets/{view-user-edit-DUatgiwt.js → view-user-edit-CDeh4OU9.js} +1 -1
  129. package/dist/assets/{view-users-3JeEbpcg.js → view-users-DowokAN0.js} +1 -1
  130. package/dist/assets/{weather-Bo3pWBtv.js → weather-CHc3NgDg.js} +2 -2
  131. package/dist/assets/{weather-forecast.transformers-CIAztGqV.js → weather-forecast.transformers-RDeqCiOa.js} +1 -1
  132. package/dist/index.html +52 -52
  133. package/package.json +1 -1
  134. package/dist/assets/layout-profile-iI8S8zwl.js +0 -1
  135. package/dist/assets/layout-sign-D0GxnDZc.js +0 -1
@@ -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,Ur as _,Vn as v,Wn as y,Yn as b,_ as x,an as S,ba as C,f as w,m as T,pn as E,qn as D,qt as O,wn as k,zn as A}from"./common-CAjixqPD.js";import{t as ee}from"./useSpaces-BL6FcRzt.js";import{o as te,s as j}from"./composables-BCgxJQQ0.js";var M=`scenes`,N=`scenes-module`,P=`ScenesModule.`,F=function(e){return e.TRIGGER_SCENE=`ScenesModule.TriggerScene`,e}({}),I=function(e){return e.TRIGGER_SCENE=`ScenesModule.TriggerSceneHandler`,e}({}),L=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}({}),R=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}({}),z=function(e){return e.NONE=`none`,e.WORKING=`working`,e.ERROR=`error`,e.OK=`ok`,e}({}),B={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`},V={[R.GENERIC]:`mdi:playlist-play`,[R.LIGHTING]:`mdi:lightbulb-group`,[R.CLIMATE]:`mdi:thermostat`,[R.MEDIA]:`mdi:television-play`,[R.WORK]:`mdi:briefcase`,[R.RELAX]:`mdi:sofa`,[R.NIGHT]:`mdi:weather-night`,[R.MORNING]:`mdi:weather-sunset-up`,[R.PARTY]:`mdi:party-popper`,[R.MOVIE]:`mdi:movie-open`,[R.AWAY]:`mdi:home-export-outline`,[R.HOME]:`mdi:home-import-outline`,[R.SECURITY]:`mdi:shield-home`,[R.ENERGY]:`mdi:flash`,[R.CUSTOM]:`mdi:shape-outline`},H=y({search:D().optional(),categories:p(v(R)),primarySpaceId:u([D().uuid(),A(`whole_home`)]).optional(),enabled:f([`all`,`enabled`,`disabled`]).default(`all`)}),U=({id:e})=>{let t=h(),n=t.getStore(j),r=t.getStore(te),{data:i,semaphore:o}=C(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}))}}},W=y({id:D().uuid().optional(),type:D().trim().nonempty(),configuration:d(D(),b()).default({}),order:g().int().min(0).optional(),enabled:c().default(!0)}).catchall(b());y({id:D().uuid(),type:D().trim().nonempty(),configuration:d(D(),b()).optional(),order:g().int().min(0).optional(),enabled:c().optional()}).catchall(b());var G=y({id:D().uuid().optional(),name:D().trim().nonempty(),description:D().trim().transform(e=>e===``?null:e).nullable().optional(),category:v(R).default(R.GENERIC),icon:D().nullable().optional(),enabled:c().default(!0),order:g().optional(),primarySpaceId:D().uuid().nullable().optional().transform(e=>e===``?null:e),actions:p(W).default([])}),K=y({id:D().uuid(),name:D().trim().nonempty().optional(),description:D().trim().transform(e=>e===``?null:e).nullable().optional(),category:v(R).optional(),icon:D().nullable().optional(),enabled:c().optional(),order:g().optional(),primarySpaceId:D().uuid().nullable().optional().transform(e=>e===``?null:e),actions:p(W).default([])}),q=class extends Error{exception;constructor(e,t=null){super(e),this.name=`ScenesException`,this.exception=t}},J=class extends q{code;constructor(e,t=null,n=null){super(e,n),this.name=`ScenesApiException`,this.code=t}},Y=class extends q{constructor(e,t=null){super(e,t),this.name=`ScenesValidationException`}},ne=()=>{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(()=>E(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}}}},X=k(),Z=({id:e})=>{let s=h(),c=s.getStore(j),u=s.getStore(te),{t:d}=r(),f=x(),p=m(),{spaces:g,fetching:_,fetchSpaces:v}=ee(),y=o(z.NONE),b,S=a(()=>Object.values(R).map(e=>({value:e,label:d(`scenes.categories.${e}`),icon:V[e]}))),C=a(()=>{let e=g.value.filter(e=>e.type===l.ROOM).map(e=>({value:e.id,label:e.name,icon:O(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:O(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}),w=n({id:e,category:R.GENERIC,name:``,description:null,icon:null,enabled:!0,primarySpaceId:null,actions:[]}),{options:E,getElement:D}=ne(),k=e=>{let t=e.propertyId;return t&&w.actions.find(e=>e.propertyId===t)?(f.warning(d(`scenes.messages.duplicateAction`)),!1):(w.actions.push(e),!0)},A=e=>{w.actions.splice(e,1)},M=(e,t)=>{e>=0&&e<w.actions.length&&(w.actions[e]=t)},N=e=>D(e)?.components?.sceneActionCard??null,P=e=>D(e)?.components?.sceneActionAddForm??null,F=e=>D(e)?.components?.sceneActionEditForm??null,I=e=>E.value.find(t=>t.value===e)?.label??e,L=T(i(w)),B=o(void 0),H=o(!1),U=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}},W=async()=>{if(B.value.clearValidate(),!await B.value.validate())throw new Y(`Form not valid`);let t=G.safeParse(w);if(!t.success)throw p.error(`Schema validation failed with:`,t.error),new Y(`Failed to validate create scene model.`);y.value=z.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 U(n.id,t.data.actions)}catch(e){throw y.value=z.ERROR,b=window.setTimeout(K,2e3),e instanceof J&&e.code===422?f.error(e.message):f.error(n),e}return y.value=z.OK,b=window.setTimeout(K,2e3),f.success(d(`scenes.messages.created`)),`added`},K=()=>{window.clearTimeout(b),y.value=z.NONE};return t(w,()=>{H.value=!(0,X.isEqual)(i(w),L)}),{categoriesOptions:S,spacesOptionsGrouped:C,model:w,formEl:B,formChanged:H,submit:W,clear:K,formResult:y,loadingSpaces:_,fetchSpaces:v,actionPluginOptions:E,addAction:k,removeAction:A,updateAction:M,getActionCardComponent:N,getActionFormComponent:P,getActionEditFormComponent:F,getPluginLabel:I}},re=({scene:s,messages:c})=>{let u=h(),d=u.getStore(j),f=u.getStore(te),{t:p}=r(),g=x(),_=m(),{spaces:v,fetching:y,fetchSpaces:b}=ee(),S=o(z.NONE),C=a(()=>f.findForScene(s.id)),w=o(T(C.value)),E,D=a(()=>Object.values(R).map(e=>({value:e,label:p(`scenes.categories.${e}`),icon:V[e]}))),k=a(()=>{let e=v.value.filter(e=>e.type===l.ROOM).map(e=>({value:e.id,label:e.name,icon:O(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:O(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}))),M=n({id:s.id,category:s.category,name:s.name,description:s.description,icon:s.icon,enabled:s.enabled,primarySpaceId:s.primarySpaceId,actions:A.value}),{options:N,getElement:P}=ne(),F=e=>{let t=e.propertyId;return t&&M.actions.find(e=>e.propertyId===t)?(g.warning(p(`scenes.messages.duplicateAction`)),!1):(M.actions.push(e),!0)},I=e=>{M.actions.splice(e,1)},L=(e,t)=>{e>=0&&e<M.actions.length&&(M.actions[e]=t)},B=e=>P(e)?.components?.sceneActionCard??null,H=e=>P(e)?.components?.sceneActionAddForm??null,U=e=>P(e)?.components?.sceneActionEditForm??null,W=e=>N.value.find(t=>t.value===e)?.label??e,G=o(void 0),q=o(!1),Z=T(i(M)),re=async(e,t)=>{try{let n=new Set(w.value.map(e=>e.id)),r=new Set(t.filter(e=>e.id).map(e=>e.id));for(let t of w.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=w.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,X.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=M.actions[e];n&&(n.id=t)}w.value=T(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(G.value.clearValidate(),!await G.value.validate())throw new Y(`Form not valid`);let n=K.safeParse(M);if(!n.success)throw _.error(`Schema validation failed with:`,n.error),new Y(`Failed to validate edit scene model.`);S.value=z.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});M.id=e.id,M.category=e.category,M.name=e.name,M.description=e.description,M.icon=e.icon,M.enabled=e.enabled,M.primarySpaceId=e.primarySpaceId,t=e.id}await re(t,n.data.actions)}catch(e){throw S.value=z.ERROR,E=window.setTimeout(Q,2e3),e instanceof J&&e.code===422?g.error(e.message):e instanceof Y||(g.error(t),_.error(`Scene edit failed:`,e)),e}return S.value=z.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})),q.value=!1,Z=T(i(M)),`saved`)},Q=()=>{window.clearTimeout(E),S.value=z.NONE};return t(M,()=>{q.value=!(0,X.isEqual)(i(M),Z)}),e(()=>{Q()}),{categoriesOptions:D,spacesOptionsGrouped:k,model:M,formEl:G,formChanged:q,submit:ie,clear:Q,formResult:S,loadingSpaces:y,fetchSpaces:b,actionPluginOptions:N,addAction:F,removeAction:I,updateAction:L,getActionCardComponent:B,getActionFormComponent:H,getActionEditFormComponent:U,getPluginLabel:W}},ie=({id:e})=>{let t=h().getStore(j);return{icon:a(()=>{let n=t.findById(e);return n?.icon?n.icon:n?.category&&n.category in V?V[n.category]:V[R.GENERIC]})}},Q=()=>{let e=h().getStore(j),{data:t,semaphore:n,firstLoad:r}=C(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(j);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 _.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 _.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 _.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(j),{firstLoad:n,semaphore:r}=C(e),{filters:i,sort:s,pagination:c,reset:l}=w({key:`${N}:scenes:list`,filters:{schema:H,defaults:$},sort:{defaults:[oe]},pagination:{defaults:{page:1,size:10}},syncQuery:!0,version:1}),u=a(()=>i.value.search!==$.search||!(0,X.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 E(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{N as _,re as a,R as b,q as c,I as d,F as f,P as g,B as h,ie as i,Y as l,z as m,ae as n,Z as o,L as p,Q as r,J as s,se as t,U as u,M as v,V 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,Ur as _,Vn as v,Wn as y,Yn as b,_ as x,an as S,ba as C,f as w,m as T,pn as E,qn as D,qt as O,wn as k,zn as A}from"./common-1h7wnZKI.js";import{t as ee}from"./useSpaces-C12q9q5Q.js";import{o as te,s as j}from"./composables-BEEHFlkU.js";var M=`scenes`,N=`scenes-module`,P=`ScenesModule.`,F=function(e){return e.TRIGGER_SCENE=`ScenesModule.TriggerScene`,e}({}),I=function(e){return e.TRIGGER_SCENE=`ScenesModule.TriggerSceneHandler`,e}({}),L=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}({}),R=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}({}),z=function(e){return e.NONE=`none`,e.WORKING=`working`,e.ERROR=`error`,e.OK=`ok`,e}({}),B={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`},V={[R.GENERIC]:`mdi:playlist-play`,[R.LIGHTING]:`mdi:lightbulb-group`,[R.CLIMATE]:`mdi:thermostat`,[R.MEDIA]:`mdi:television-play`,[R.WORK]:`mdi:briefcase`,[R.RELAX]:`mdi:sofa`,[R.NIGHT]:`mdi:weather-night`,[R.MORNING]:`mdi:weather-sunset-up`,[R.PARTY]:`mdi:party-popper`,[R.MOVIE]:`mdi:movie-open`,[R.AWAY]:`mdi:home-export-outline`,[R.HOME]:`mdi:home-import-outline`,[R.SECURITY]:`mdi:shield-home`,[R.ENERGY]:`mdi:flash`,[R.CUSTOM]:`mdi:shape-outline`},H=y({search:D().optional(),categories:p(v(R)),primarySpaceId:u([D().uuid(),A(`whole_home`)]).optional(),enabled:f([`all`,`enabled`,`disabled`]).default(`all`)}),U=({id:e})=>{let t=h(),n=t.getStore(j),r=t.getStore(te),{data:i,semaphore:o}=C(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}))}}},W=y({id:D().uuid().optional(),type:D().trim().nonempty(),configuration:d(D(),b()).default({}),order:g().int().min(0).optional(),enabled:c().default(!0)}).catchall(b());y({id:D().uuid(),type:D().trim().nonempty(),configuration:d(D(),b()).optional(),order:g().int().min(0).optional(),enabled:c().optional()}).catchall(b());var G=y({id:D().uuid().optional(),name:D().trim().nonempty(),description:D().trim().transform(e=>e===``?null:e).nullable().optional(),category:v(R).default(R.GENERIC),icon:D().nullable().optional(),enabled:c().default(!0),order:g().optional(),primarySpaceId:D().uuid().nullable().optional().transform(e=>e===``?null:e),actions:p(W).default([])}),K=y({id:D().uuid(),name:D().trim().nonempty().optional(),description:D().trim().transform(e=>e===``?null:e).nullable().optional(),category:v(R).optional(),icon:D().nullable().optional(),enabled:c().optional(),order:g().optional(),primarySpaceId:D().uuid().nullable().optional().transform(e=>e===``?null:e),actions:p(W).default([])}),q=class extends Error{exception;constructor(e,t=null){super(e),this.name=`ScenesException`,this.exception=t}},J=class extends q{code;constructor(e,t=null,n=null){super(e,n),this.name=`ScenesApiException`,this.code=t}},Y=class extends q{constructor(e,t=null){super(e,t),this.name=`ScenesValidationException`}},ne=()=>{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(()=>E(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}}}},X=k(),Z=({id:e})=>{let s=h(),c=s.getStore(j),u=s.getStore(te),{t:d}=r(),f=x(),p=m(),{spaces:g,fetching:_,fetchSpaces:v}=ee(),y=o(z.NONE),b,S=a(()=>Object.values(R).map(e=>({value:e,label:d(`scenes.categories.${e}`),icon:V[e]}))),C=a(()=>{let e=g.value.filter(e=>e.type===l.ROOM).map(e=>({value:e.id,label:e.name,icon:O(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:O(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}),w=n({id:e,category:R.GENERIC,name:``,description:null,icon:null,enabled:!0,primarySpaceId:null,actions:[]}),{options:E,getElement:D}=ne(),k=e=>{let t=e.propertyId;return t&&w.actions.find(e=>e.propertyId===t)?(f.warning(d(`scenes.messages.duplicateAction`)),!1):(w.actions.push(e),!0)},A=e=>{w.actions.splice(e,1)},M=(e,t)=>{e>=0&&e<w.actions.length&&(w.actions[e]=t)},N=e=>D(e)?.components?.sceneActionCard??null,P=e=>D(e)?.components?.sceneActionAddForm??null,F=e=>D(e)?.components?.sceneActionEditForm??null,I=e=>E.value.find(t=>t.value===e)?.label??e,L=T(i(w)),B=o(void 0),H=o(!1),U=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}},W=async()=>{if(B.value.clearValidate(),!await B.value.validate())throw new Y(`Form not valid`);let t=G.safeParse(w);if(!t.success)throw p.error(`Schema validation failed with:`,t.error),new Y(`Failed to validate create scene model.`);y.value=z.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 U(n.id,t.data.actions)}catch(e){throw y.value=z.ERROR,b=window.setTimeout(K,2e3),e instanceof J&&e.code===422?f.error(e.message):f.error(n),e}return y.value=z.OK,b=window.setTimeout(K,2e3),f.success(d(`scenes.messages.created`)),`added`},K=()=>{window.clearTimeout(b),y.value=z.NONE};return t(w,()=>{H.value=!(0,X.isEqual)(i(w),L)}),{categoriesOptions:S,spacesOptionsGrouped:C,model:w,formEl:B,formChanged:H,submit:W,clear:K,formResult:y,loadingSpaces:_,fetchSpaces:v,actionPluginOptions:E,addAction:k,removeAction:A,updateAction:M,getActionCardComponent:N,getActionFormComponent:P,getActionEditFormComponent:F,getPluginLabel:I}},re=({scene:s,messages:c})=>{let u=h(),d=u.getStore(j),f=u.getStore(te),{t:p}=r(),g=x(),_=m(),{spaces:v,fetching:y,fetchSpaces:b}=ee(),S=o(z.NONE),C=a(()=>f.findForScene(s.id)),w=o(T(C.value)),E,D=a(()=>Object.values(R).map(e=>({value:e,label:p(`scenes.categories.${e}`),icon:V[e]}))),k=a(()=>{let e=v.value.filter(e=>e.type===l.ROOM).map(e=>({value:e.id,label:e.name,icon:O(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:O(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}))),M=n({id:s.id,category:s.category,name:s.name,description:s.description,icon:s.icon,enabled:s.enabled,primarySpaceId:s.primarySpaceId,actions:A.value}),{options:N,getElement:P}=ne(),F=e=>{let t=e.propertyId;return t&&M.actions.find(e=>e.propertyId===t)?(g.warning(p(`scenes.messages.duplicateAction`)),!1):(M.actions.push(e),!0)},I=e=>{M.actions.splice(e,1)},L=(e,t)=>{e>=0&&e<M.actions.length&&(M.actions[e]=t)},B=e=>P(e)?.components?.sceneActionCard??null,H=e=>P(e)?.components?.sceneActionAddForm??null,U=e=>P(e)?.components?.sceneActionEditForm??null,W=e=>N.value.find(t=>t.value===e)?.label??e,G=o(void 0),q=o(!1),Z=T(i(M)),re=async(e,t)=>{try{let n=new Set(w.value.map(e=>e.id)),r=new Set(t.filter(e=>e.id).map(e=>e.id));for(let t of w.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=w.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,X.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=M.actions[e];n&&(n.id=t)}w.value=T(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(G.value.clearValidate(),!await G.value.validate())throw new Y(`Form not valid`);let n=K.safeParse(M);if(!n.success)throw _.error(`Schema validation failed with:`,n.error),new Y(`Failed to validate edit scene model.`);S.value=z.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});M.id=e.id,M.category=e.category,M.name=e.name,M.description=e.description,M.icon=e.icon,M.enabled=e.enabled,M.primarySpaceId=e.primarySpaceId,t=e.id}await re(t,n.data.actions)}catch(e){throw S.value=z.ERROR,E=window.setTimeout(Q,2e3),e instanceof J&&e.code===422?g.error(e.message):e instanceof Y||(g.error(t),_.error(`Scene edit failed:`,e)),e}return S.value=z.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})),q.value=!1,Z=T(i(M)),`saved`)},Q=()=>{window.clearTimeout(E),S.value=z.NONE};return t(M,()=>{q.value=!(0,X.isEqual)(i(M),Z)}),e(()=>{Q()}),{categoriesOptions:D,spacesOptionsGrouped:k,model:M,formEl:G,formChanged:q,submit:ie,clear:Q,formResult:S,loadingSpaces:y,fetchSpaces:b,actionPluginOptions:N,addAction:F,removeAction:I,updateAction:L,getActionCardComponent:B,getActionFormComponent:H,getActionEditFormComponent:U,getPluginLabel:W}},ie=({id:e})=>{let t=h().getStore(j);return{icon:a(()=>{let n=t.findById(e);return n?.icon?n.icon:n?.category&&n.category in V?V[n.category]:V[R.GENERIC]})}},Q=()=>{let e=h().getStore(j),{data:t,semaphore:n,firstLoad:r}=C(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(j);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 _.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 _.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 _.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(j),{firstLoad:n,semaphore:r}=C(e),{filters:i,sort:s,pagination:c,reset:l}=w({key:`${N}:scenes:list`,filters:{schema:H,defaults:$},sort:{defaults:[oe]},pagination:{defaults:{page:1,size:10}},syncQuery:!0,version:1}),u=a(()=>i.value.search!==$.search||!(0,X.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 E(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{N as _,re as a,R as b,q as c,I as d,F as f,P as g,B as h,ie as i,Y as l,z as m,ae as n,Z as o,L as p,Q as r,J as s,se as t,U as u,M as v,V as y};
@@ -1 +1 @@
1
- import"./chunk-DECur_0Z.js";import{Dr as e,Vr as t,Xr as n,d as r,hi as i,mr as a,n as o,si as s,ui as c}from"./icon-with-child-DmQ_XhQy.js";import{Mn as l,S as u,T as d,Ur as f,Wn as p,_ as m,ba as h,cn as g,cr as _,f as v,ln as y,pn as b,qn as x,wt as S,y as C}from"./common-CAjixqPD.js";import{n as w}from"./logs-entries.transformers-BL5SU68o.js";import{n as T,r as E,t as D}from"./extensions.constants-zRRiNzmt.js";var O=class e extends Error{exception;constructor(t,n=null){super(t),this.name=`ExtensionsException`,this.exception=n,Object.setPrototypeOf(this,e.prototype)}},k=class e extends O{code;constructor(t,n=null){super(t),this.name=`ExtensionsApiException`,this.code=n,Object.setPrototypeOf(this,e.prototype)}},A=class e extends O{constructor(t){super(t),this.name=`ExtensionsValidationException`,Object.setPrototypeOf(this,e.prototype)}},j=()=>{let e=C(),t=c([]),n=c(!1),r=c(new Map),i=0;return{actions:t,isLoading:n,executingActions:r,fetchActions:async r=>{let a=++i;n.value=!0;try{let{data:n}=await e.client.GET(`/modules/extensions/extensions/${r}/actions`);if(a!==i)return;n?.data?t.value=n.data:t.value=[]}catch{if(a!==i)return;t.value=[]}finally{a===i&&(n.value=!1)}},executeAction:async(t,n,i)=>{let a=r.value.get(n)??0;r.value.set(n,a+1);try{let{data:r,error:a}=await e.client.POST(`/modules/extensions/extensions/${t}/actions/${n}`,{body:{data:{params:i??{}}}});return r?.data?r.data:{success:!1,message:a?.error?.message??`Action execution failed`}}catch(e){return{success:!1,message:e instanceof Error?e.message:`Action execution failed`}}finally{let e=(r.value.get(n)??1)-1;e<=0?r.value.delete(n):r.value.set(n,e)}}}},M=Symbol(`useActions`),N=()=>{let e=j();return t(M,e),e},P=()=>e(M,null)??j(),F=e=>{let t=d().getStore(g),{semaphore:n,firstLoad:r}=h(t);return{extension:a(()=>t.findByType(i(e.type))),isLoading:a(()=>n.value.fetching.items||!r.value),fetchExtension:async()=>{await t.fetch()}}},I=p({search:x().optional(),kind:l([`all`,E.MODULE,E.PLUGIN]).default(`all`),enabled:l([`all`,`enabled`,`disabled`]).default(`all`),isCore:l([`all`,`core`,`addon`]).default(`all`)}),L={search:void 0,kind:`all`,enabled:`all`,isCore:`all`},R={by:`name`,dir:`asc`},z=()=>{let e=d().getStore(g),{semaphore:t}=h(e),{filters:r,sort:i,pagination:o,viewMode:s,reset:l}=v({key:`${T}:extensions:list`,filters:{schema:I,defaults:L},sort:{defaults:[R]},pagination:{defaults:{page:1,size:10}},viewMode:{options:[`table`,`cards`],default:D},syncQuery:!0,version:1}),u=a({get:()=>s.value??`table`,set:e=>{s.value=e}}),f=a(()=>r.value.search!==L.search||r.value.kind!==L.kind||r.value.enabled!==L.enabled||r.value.isCore!==L.isCore),p=c(o.value.size||10),m=c(o.value.page||1),_=c(i.value.length>0?i.value[0]?.by:void 0),y=c(i.value.length>0?i.value[0]?.dir??null:null),x=a(()=>Object.values(e.data)),S=a(()=>b(x.value.filter(e=>(!r.value.search||e.type.toLowerCase().includes(r.value.search.toLowerCase())||e.name.toLowerCase().includes(r.value.search.toLowerCase())||e.description?.toLowerCase().includes(r.value.search.toLowerCase()))&&(r.value.kind===`all`||e.kind===r.value.kind)&&(r.value.enabled===`all`||r.value.enabled===`enabled`&&e.enabled||r.value.enabled===`disabled`&&!e.enabled)&&(r.value.isCore===`all`||r.value.isCore===`core`&&e.isCore||r.value.isCore===`addon`&&!e.isCore)),[e=>_.value===`enabled`?e.enabled?1:0:e[_.value]??``],[y.value===`asc`?`asc`:`desc`])),C=a(()=>S.value),w=a(()=>{let e=(m.value-1)*p.value,t=e+p.value;return C.value.slice(e,t)}),O=a(()=>S.value.filter(e=>e.kind===E.MODULE)),k=a(()=>S.value.filter(e=>e.kind===E.PLUGIN)),A=async()=>{await e.fetch()},j=a(()=>t.value.fetching.items),M=a(()=>C.value.length);return n(()=>o.value,e=>{m.value=e.page??1,p.value=e.size??10},{deep:!0}),n(()=>m.value,e=>{o.value.page=e}),n(()=>p.value,e=>{o.value.size=e}),n(()=>y.value,e=>{_.value===void 0||e===null?i.value=[]:i.value=[{by:_.value,dir:e}]}),n(()=>_.value,e=>{e===void 0||y.value===null?i.value=[]:i.value=[{by:e,dir:y.value}]}),{extensions:C,extensionsPaginated:w,modules:O,plugins:k,totalRows:M,areLoading:j,fetchExtensions:A,filters:r,filtersActive:f,paginateSize:p,paginatePage:m,sortBy:_,sortDir:y,viewMode:u,resetFilter:l}},B=()=>{let{t:e}=r(),t=d(),n=m(),i=t.getStore(g),a=t.getStore(y);return{toggleEnabled:async(t,r)=>{try{return await i.update({type:t,data:{enabled:r}}),n.success(e(r?`extensionsModule.messages.extensionEnabled`:`extensionsModule.messages.extensionDisabled`)),r&&setTimeout(()=>{a.fetch().then(()=>{let e=a.findAll().filter(e=>e.pluginName===t);for(let t of e)t.lastError&&n.warning(t.lastError)}).catch(()=>{})},1500),!0}catch(t){return t instanceof k&&t.code===400?n.error(e(`extensionsModule.messages.notConfigurableError`)):n.error(e(`extensionsModule.messages.updateError`)),!1}},bulkEnable:async t=>{let r=t.filter(e=>e.canToggleEnabled&&!e.enabled);if(r.length===0){n.info(e(`extensionsModule.messages.noExtensionsToEnable`));return}try{await f.confirm(e(`extensionsModule.messages.confirmBulkEnable`,{count:r.length}),e(`extensionsModule.headings.bulkEnable`),{confirmButtonText:e(`extensionsModule.buttons.yes`),cancelButtonText:e(`extensionsModule.buttons.no`),type:`info`});let t=0,a=0;for(let e of r)try{await i.update({type:e.type,data:{enabled:!0}}),t++}catch{a++}t>0&&n.success(e(`extensionsModule.messages.bulkEnabled`,{count:t})),a>0&&n.error(e(`extensionsModule.messages.bulkEnableFailed`,{count:a}))}catch{n.info(e(`extensionsModule.messages.bulkEnableCanceled`))}},bulkDisable:async t=>{let r=t.filter(e=>e.canToggleEnabled&&e.enabled);if(r.length===0){n.info(e(`extensionsModule.messages.noExtensionsToDisable`));return}try{await f.confirm(e(`extensionsModule.messages.confirmBulkDisable`,{count:r.length}),e(`extensionsModule.headings.bulkDisable`),{confirmButtonText:e(`extensionsModule.buttons.yes`),cancelButtonText:e(`extensionsModule.buttons.no`),type:`warning`});let t=0,a=0;for(let e of r)try{await i.update({type:e.type,data:{enabled:!1}}),t++}catch{a++}t>0&&n.success(e(`extensionsModule.messages.bulkDisabled`,{count:t})),a>0&&n.error(e(`extensionsModule.messages.bulkDisableFailed`,{count:a}))}catch{n.info(e(`extensionsModule.messages.bulkDisableCanceled`))}}}},V=e=>{let t=C(),r=u(),l=c({}),d=c(!1),f=c(!1),p=c(!1),m=c(void 0),h=c(!1),g=c([]),_=c(`all`),v=null,y={"1h":3600*1e3,"6h":360*60*1e3,"24h":1440*60*1e3,"7d":10080*60*1e3,all:0},b=a(()=>Object.values(l.value).sort((e,t)=>new Date(t.ts).getTime()-new Date(e.ts).getTime())),x=a(()=>{let e=b.value;if(g.value.length>0&&(e=e.filter(e=>g.value.includes(e.type))),_.value!==`all`){let t=Date.now()-y[_.value];e=e.filter(e=>new Date(e.ts).getTime()>=t)}return e}),T=a(()=>g.value.length>0||_.value!==`all`),E=()=>{g.value=[],_.value=`all`},D=async()=>{let n=i(e.extensionType);v=n,f.value=!0;try{let{data:e,error:i}=await t.client.GET(`/${o}/${S}/logs`,{params:{query:{extension:n,limit:50}}});if(v!==n)return;e===void 0?i&&r.error(`Failed to fetch extension logs:`,i):(l.value=Object.fromEntries(e.data.map(e=>{let t=w(e);return[t.id,t]})),p.value=!0,d.value=e.metadata.has_more,m.value=e.metadata.next_cursor)}catch(e){v===n&&r.error(`Error fetching extension logs:`,e)}finally{v===n&&(f.value=!1)}},O=async()=>{if(f.value||!d.value||!m.value)return;let n=i(e.extensionType),a=m.value;f.value=!0;try{let{data:e,error:i}=await t.client.GET(`/${o}/${S}/logs`,{params:{query:{extension:n,after_id:a,limit:50}}});if(v!==n)return;if(e!==void 0){let t=Object.fromEntries(e.data.map(e=>{let t=w(e);return[t.id,t]}));l.value={...l.value,...t},d.value=e.metadata.has_more,m.value=e.metadata.next_cursor}else i&&r.error(`Failed to load more extension logs:`,i)}catch(e){v===n&&r.error(`Error loading more extension logs:`,e)}finally{v===n&&(f.value=!1)}},k=async()=>{l.value={},m.value=void 0,d.value=!1,p.value=!1,await D()},A=null;return n(()=>h.value,e=>{A&&=(clearInterval(A),null),e&&(A=setInterval(()=>void D(),3e3))}),s(()=>{A&&=(clearInterval(A),null)}),n(()=>i(e.extensionType),()=>{k()}),{logs:x,hasMore:d,isLoading:f,loaded:p,live:h,filterLevels:g,filterTimeRange:_,filtersActive:T,clearFilters:E,fetchLogs:D,loadMoreLogs:O,refreshLogs:k}},H=()=>{let e=d().getStore(y),{data:t,semaphore:n}=h(e);return{services:a(()=>Object.values(t.value)),areLoading:a(()=>n.value.fetching.items),fetchServices:async()=>{await e.fetch()}}},U=()=>{let{t:e}=r(),t=d(),n=m(),i=t.getStore(y);return{startService:async(t,r)=>{try{let a=await i.start({pluginName:t,serviceId:r});return a.state===_.started?n.success(e(`extensionsModule.services.messages.started`)):a.state===_.starting?n.info(e(`extensionsModule.services.messages.serviceStarting`)):a.lastError?n.warning(a.lastError):n.warning(e(`extensionsModule.services.messages.startError`)),a.state===_.started||a.state===_.starting}catch(t){return t instanceof k,n.error(e(`extensionsModule.services.messages.startError`)),!1}},stopService:async(t,r)=>{try{return await i.stop({pluginName:t,serviceId:r}),n.success(e(`extensionsModule.services.messages.stopped`)),!0}catch(t){return t instanceof k,n.error(e(`extensionsModule.services.messages.stopError`)),!1}},restartService:async(t,r)=>{try{return await i.restart({pluginName:t,serviceId:r}),n.success(e(`extensionsModule.services.messages.restarted`)),!0}catch(t){return t instanceof k,n.error(e(`extensionsModule.services.messages.restartError`)),!1}},isActing:(e,t)=>i.acting(e,t)}};export{z as a,N as c,A as d,B as i,k as l,H as n,F as o,V as r,P as s,U as t,O as u};
1
+ import"./chunk-DECur_0Z.js";import{Dr as e,Vr as t,Xr as n,d as r,hi as i,mr as a,n as o,si as s,ui as c}from"./icon-with-child-DmQ_XhQy.js";import{Mn as l,S as u,T as d,Ur as f,Wn as p,_ as m,ba as h,cn as g,cr as _,f as v,ln as y,pn as b,qn as x,wt as S,y as C}from"./common-1h7wnZKI.js";import{n as w}from"./logs-entries.transformers-BRvrBqiQ.js";import{n as T,r as E,t as D}from"./extensions.constants-zRRiNzmt.js";var O=class e extends Error{exception;constructor(t,n=null){super(t),this.name=`ExtensionsException`,this.exception=n,Object.setPrototypeOf(this,e.prototype)}},k=class e extends O{code;constructor(t,n=null){super(t),this.name=`ExtensionsApiException`,this.code=n,Object.setPrototypeOf(this,e.prototype)}},A=class e extends O{constructor(t){super(t),this.name=`ExtensionsValidationException`,Object.setPrototypeOf(this,e.prototype)}},j=()=>{let e=C(),t=c([]),n=c(!1),r=c(new Map),i=0;return{actions:t,isLoading:n,executingActions:r,fetchActions:async r=>{let a=++i;n.value=!0;try{let{data:n}=await e.client.GET(`/modules/extensions/extensions/${r}/actions`);if(a!==i)return;n?.data?t.value=n.data:t.value=[]}catch{if(a!==i)return;t.value=[]}finally{a===i&&(n.value=!1)}},executeAction:async(t,n,i)=>{let a=r.value.get(n)??0;r.value.set(n,a+1);try{let{data:r,error:a}=await e.client.POST(`/modules/extensions/extensions/${t}/actions/${n}`,{body:{data:{params:i??{}}}});return r?.data?r.data:{success:!1,message:a?.error?.message??`Action execution failed`}}catch(e){return{success:!1,message:e instanceof Error?e.message:`Action execution failed`}}finally{let e=(r.value.get(n)??1)-1;e<=0?r.value.delete(n):r.value.set(n,e)}}}},M=Symbol(`useActions`),N=()=>{let e=j();return t(M,e),e},P=()=>e(M,null)??j(),F=e=>{let t=d().getStore(g),{semaphore:n,firstLoad:r}=h(t);return{extension:a(()=>t.findByType(i(e.type))),isLoading:a(()=>n.value.fetching.items||!r.value),fetchExtension:async()=>{await t.fetch()}}},I=p({search:x().optional(),kind:l([`all`,E.MODULE,E.PLUGIN]).default(`all`),enabled:l([`all`,`enabled`,`disabled`]).default(`all`),isCore:l([`all`,`core`,`addon`]).default(`all`)}),L={search:void 0,kind:`all`,enabled:`all`,isCore:`all`},R={by:`name`,dir:`asc`},z=()=>{let e=d().getStore(g),{semaphore:t}=h(e),{filters:r,sort:i,pagination:o,viewMode:s,reset:l}=v({key:`${T}:extensions:list`,filters:{schema:I,defaults:L},sort:{defaults:[R]},pagination:{defaults:{page:1,size:10}},viewMode:{options:[`table`,`cards`],default:D},syncQuery:!0,version:1}),u=a({get:()=>s.value??`table`,set:e=>{s.value=e}}),f=a(()=>r.value.search!==L.search||r.value.kind!==L.kind||r.value.enabled!==L.enabled||r.value.isCore!==L.isCore),p=c(o.value.size||10),m=c(o.value.page||1),_=c(i.value.length>0?i.value[0]?.by:void 0),y=c(i.value.length>0?i.value[0]?.dir??null:null),x=a(()=>Object.values(e.data)),S=a(()=>b(x.value.filter(e=>(!r.value.search||e.type.toLowerCase().includes(r.value.search.toLowerCase())||e.name.toLowerCase().includes(r.value.search.toLowerCase())||e.description?.toLowerCase().includes(r.value.search.toLowerCase()))&&(r.value.kind===`all`||e.kind===r.value.kind)&&(r.value.enabled===`all`||r.value.enabled===`enabled`&&e.enabled||r.value.enabled===`disabled`&&!e.enabled)&&(r.value.isCore===`all`||r.value.isCore===`core`&&e.isCore||r.value.isCore===`addon`&&!e.isCore)),[e=>_.value===`enabled`?e.enabled?1:0:e[_.value]??``],[y.value===`asc`?`asc`:`desc`])),C=a(()=>S.value),w=a(()=>{let e=(m.value-1)*p.value,t=e+p.value;return C.value.slice(e,t)}),O=a(()=>S.value.filter(e=>e.kind===E.MODULE)),k=a(()=>S.value.filter(e=>e.kind===E.PLUGIN)),A=async()=>{await e.fetch()},j=a(()=>t.value.fetching.items),M=a(()=>C.value.length);return n(()=>o.value,e=>{m.value=e.page??1,p.value=e.size??10},{deep:!0}),n(()=>m.value,e=>{o.value.page=e}),n(()=>p.value,e=>{o.value.size=e}),n(()=>y.value,e=>{_.value===void 0||e===null?i.value=[]:i.value=[{by:_.value,dir:e}]}),n(()=>_.value,e=>{e===void 0||y.value===null?i.value=[]:i.value=[{by:e,dir:y.value}]}),{extensions:C,extensionsPaginated:w,modules:O,plugins:k,totalRows:M,areLoading:j,fetchExtensions:A,filters:r,filtersActive:f,paginateSize:p,paginatePage:m,sortBy:_,sortDir:y,viewMode:u,resetFilter:l}},B=()=>{let{t:e}=r(),t=d(),n=m(),i=t.getStore(g),a=t.getStore(y);return{toggleEnabled:async(t,r)=>{try{return await i.update({type:t,data:{enabled:r}}),n.success(e(r?`extensionsModule.messages.extensionEnabled`:`extensionsModule.messages.extensionDisabled`)),r&&setTimeout(()=>{a.fetch().then(()=>{let e=a.findAll().filter(e=>e.pluginName===t);for(let t of e)t.lastError&&n.warning(t.lastError)}).catch(()=>{})},1500),!0}catch(t){return t instanceof k&&t.code===400?n.error(e(`extensionsModule.messages.notConfigurableError`)):n.error(e(`extensionsModule.messages.updateError`)),!1}},bulkEnable:async t=>{let r=t.filter(e=>e.canToggleEnabled&&!e.enabled);if(r.length===0){n.info(e(`extensionsModule.messages.noExtensionsToEnable`));return}try{await f.confirm(e(`extensionsModule.messages.confirmBulkEnable`,{count:r.length}),e(`extensionsModule.headings.bulkEnable`),{confirmButtonText:e(`extensionsModule.buttons.yes`),cancelButtonText:e(`extensionsModule.buttons.no`),type:`info`});let t=0,a=0;for(let e of r)try{await i.update({type:e.type,data:{enabled:!0}}),t++}catch{a++}t>0&&n.success(e(`extensionsModule.messages.bulkEnabled`,{count:t})),a>0&&n.error(e(`extensionsModule.messages.bulkEnableFailed`,{count:a}))}catch{n.info(e(`extensionsModule.messages.bulkEnableCanceled`))}},bulkDisable:async t=>{let r=t.filter(e=>e.canToggleEnabled&&e.enabled);if(r.length===0){n.info(e(`extensionsModule.messages.noExtensionsToDisable`));return}try{await f.confirm(e(`extensionsModule.messages.confirmBulkDisable`,{count:r.length}),e(`extensionsModule.headings.bulkDisable`),{confirmButtonText:e(`extensionsModule.buttons.yes`),cancelButtonText:e(`extensionsModule.buttons.no`),type:`warning`});let t=0,a=0;for(let e of r)try{await i.update({type:e.type,data:{enabled:!1}}),t++}catch{a++}t>0&&n.success(e(`extensionsModule.messages.bulkDisabled`,{count:t})),a>0&&n.error(e(`extensionsModule.messages.bulkDisableFailed`,{count:a}))}catch{n.info(e(`extensionsModule.messages.bulkDisableCanceled`))}}}},V=e=>{let t=C(),r=u(),l=c({}),d=c(!1),f=c(!1),p=c(!1),m=c(void 0),h=c(!1),g=c([]),_=c(`all`),v=null,y={"1h":3600*1e3,"6h":360*60*1e3,"24h":1440*60*1e3,"7d":10080*60*1e3,all:0},b=a(()=>Object.values(l.value).sort((e,t)=>new Date(t.ts).getTime()-new Date(e.ts).getTime())),x=a(()=>{let e=b.value;if(g.value.length>0&&(e=e.filter(e=>g.value.includes(e.type))),_.value!==`all`){let t=Date.now()-y[_.value];e=e.filter(e=>new Date(e.ts).getTime()>=t)}return e}),T=a(()=>g.value.length>0||_.value!==`all`),E=()=>{g.value=[],_.value=`all`},D=async()=>{let n=i(e.extensionType);v=n,f.value=!0;try{let{data:e,error:i}=await t.client.GET(`/${o}/${S}/logs`,{params:{query:{extension:n,limit:50}}});if(v!==n)return;e===void 0?i&&r.error(`Failed to fetch extension logs:`,i):(l.value=Object.fromEntries(e.data.map(e=>{let t=w(e);return[t.id,t]})),p.value=!0,d.value=e.metadata.has_more,m.value=e.metadata.next_cursor)}catch(e){v===n&&r.error(`Error fetching extension logs:`,e)}finally{v===n&&(f.value=!1)}},O=async()=>{if(f.value||!d.value||!m.value)return;let n=i(e.extensionType),a=m.value;f.value=!0;try{let{data:e,error:i}=await t.client.GET(`/${o}/${S}/logs`,{params:{query:{extension:n,after_id:a,limit:50}}});if(v!==n)return;if(e!==void 0){let t=Object.fromEntries(e.data.map(e=>{let t=w(e);return[t.id,t]}));l.value={...l.value,...t},d.value=e.metadata.has_more,m.value=e.metadata.next_cursor}else i&&r.error(`Failed to load more extension logs:`,i)}catch(e){v===n&&r.error(`Error loading more extension logs:`,e)}finally{v===n&&(f.value=!1)}},k=async()=>{l.value={},m.value=void 0,d.value=!1,p.value=!1,await D()},A=null;return n(()=>h.value,e=>{A&&=(clearInterval(A),null),e&&(A=setInterval(()=>void D(),3e3))}),s(()=>{A&&=(clearInterval(A),null)}),n(()=>i(e.extensionType),()=>{k()}),{logs:x,hasMore:d,isLoading:f,loaded:p,live:h,filterLevels:g,filterTimeRange:_,filtersActive:T,clearFilters:E,fetchLogs:D,loadMoreLogs:O,refreshLogs:k}},H=()=>{let e=d().getStore(y),{data:t,semaphore:n}=h(e);return{services:a(()=>Object.values(t.value)),areLoading:a(()=>n.value.fetching.items),fetchServices:async()=>{await e.fetch()}}},U=()=>{let{t:e}=r(),t=d(),n=m(),i=t.getStore(y);return{startService:async(t,r)=>{try{let a=await i.start({pluginName:t,serviceId:r});return a.state===_.started?n.success(e(`extensionsModule.services.messages.started`)):a.state===_.starting?n.info(e(`extensionsModule.services.messages.serviceStarting`)):a.lastError?n.warning(a.lastError):n.warning(e(`extensionsModule.services.messages.startError`)),a.state===_.started||a.state===_.starting}catch(t){return t instanceof k,n.error(e(`extensionsModule.services.messages.startError`)),!1}},stopService:async(t,r)=>{try{return await i.stop({pluginName:t,serviceId:r}),n.success(e(`extensionsModule.services.messages.stopped`)),!0}catch(t){return t instanceof k,n.error(e(`extensionsModule.services.messages.stopError`)),!1}},restartService:async(t,r)=>{try{return await i.restart({pluginName:t,serviceId:r}),n.success(e(`extensionsModule.services.messages.restarted`)),!0}catch(t){return t instanceof k,n.error(e(`extensionsModule.services.messages.restartError`)),!1}},isActing:(e,t)=>i.acting(e,t)}};export{z as a,N as c,A as d,B as i,k as l,H as n,F as o,V as r,P as s,U as t,O as u};