@camera.ui/server 0.0.95 → 0.0.97

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 (203) hide show
  1. package/dist/interface/assets/{404-Clo6qjGo.js → 404-4LnwoCjV.js} +1 -1
  2. package/dist/interface/assets/{About-Bfjj72u5.js → About-bvLBtUy2.js} +1 -1
  3. package/dist/interface/assets/{Adminpanel-B_SQSHyD.js → Adminpanel-CWb2ZPPG.js} +1 -1
  4. package/dist/interface/assets/{Automation-CQm0ZHfh.js → Automation-C25AZETJ.js} +2 -2
  5. package/dist/interface/assets/{Automations-Dbs6NMx-.js → Automations-BpLZVUAZ.js} +1 -1
  6. package/dist/interface/assets/Camera-1ii5b47V.js +2 -0
  7. package/dist/interface/assets/CameraConsole-ep5CUZNu.js +7 -0
  8. package/dist/interface/assets/Cameras-DTL-BCYT.css +1 -0
  9. package/dist/interface/assets/Cameras-vPU6uknc.js +656 -0
  10. package/dist/interface/assets/Camview-D2ON2UGk.js +1 -0
  11. package/dist/interface/assets/{Camview-C0yJPOLo.css → Camview-O0phps-e.css} +1 -1
  12. package/dist/interface/assets/{Config-Dc7jeUIy.js → Config-BQQkw0Ol.js} +1 -1
  13. package/dist/interface/assets/{ConfigActionCameraControl-aMa-699v.js → ConfigActionCameraControl-BIwMf0Pc.js} +1 -1
  14. package/dist/interface/assets/{ConfigActionDelay-DGdVeQDT.js → ConfigActionDelay-B8IeqrQl.js} +1 -1
  15. package/dist/interface/assets/{ConfigActionHttp-B3tZHdsR.js → ConfigActionHttp-ChmRoLGn.js} +1 -1
  16. package/dist/interface/assets/{ConfigActionImageInput-BN7Iwsa-.js → ConfigActionImageInput-BXGvomRn.js} +1 -1
  17. package/dist/interface/assets/{ConfigActionNotification-D_4Y919Q.js → ConfigActionNotification-IyTVckPy.js} +1 -1
  18. package/dist/interface/assets/{ConfigActionOutput-Bd84SbZE.js → ConfigActionOutput-puWLDmCK.js} +1 -1
  19. package/dist/interface/assets/{ConfigActionPlugin-DMAUig6Q.js → ConfigActionPlugin-CJcmszAL.js} +1 -1
  20. package/dist/interface/assets/{ConfigActionSensor-DuHOX22J.js → ConfigActionSensor-TP-clDuT.js} +1 -1
  21. package/dist/interface/assets/{ConfigActionSnapshot-Dtde_3hQ.js → ConfigActionSnapshot-D9qfVi25.js} +1 -1
  22. package/dist/interface/assets/{ConfigActionVariable-D4fNkkoL.js → ConfigActionVariable-m9pSdZRi.js} +1 -1
  23. package/dist/interface/assets/{ConfigConditionIfElse-D5EjxXMg.js → ConfigConditionIfElse-qGQl3t_X.js} +1 -1
  24. package/dist/interface/assets/{ConfigConditionSensorState-CyPhwS7K.js → ConfigConditionSensorState-BbYFiyQO.js} +1 -1
  25. package/dist/interface/assets/{ConfigConditionSwitch-CIJ64bNh.js → ConfigConditionSwitch-Fmxop0ZO.js} +1 -1
  26. package/dist/interface/assets/{ConfigConditionTime-CBShDqBo.js → ConfigConditionTime-pVizMny5.js} +1 -1
  27. package/dist/interface/assets/{ConfigTriggerDetection-C7RtR75f.js → ConfigTriggerDetection-5qawJGDL.js} +1 -1
  28. package/dist/interface/assets/{ConfigTriggerGeofence-CDU2jx7z.js → ConfigTriggerGeofence-D7xWoEKp.js} +1 -1
  29. package/dist/interface/assets/{ConfigTriggerManual-CoImkqag.js → ConfigTriggerManual-Cdl-639w.js} +1 -1
  30. package/dist/interface/assets/{ConfigTriggerSchedule-BJSgt14u.js → ConfigTriggerSchedule-BeMgx20W.js} +1 -1
  31. package/dist/interface/assets/{ConfigTriggerSensor-t0MTHl1T.js → ConfigTriggerSensor-CdMpLf9A.js} +1 -1
  32. package/dist/interface/assets/{ConfigTriggerSystem-DXCusYWo.js → ConfigTriggerSystem-Df5J0gpZ.js} +1 -1
  33. package/dist/interface/assets/{ConfigTriggerWebhook-4yHSEfMK.js → ConfigTriggerWebhook-Cbl7Xnqa.js} +1 -1
  34. package/dist/interface/assets/{Console-D32_FF2q.js → Console-C9gkw0lo.js} +1 -1
  35. package/dist/interface/assets/{CuiActionButton-BTl3-QUV.js → CuiActionButton-vWfTn9v6.js} +1 -1
  36. package/dist/interface/assets/{CuiAvatar-DQfgB_0j.js → CuiAvatar-CgMxEmy_.js} +1 -1
  37. package/dist/interface/assets/{CuiBBoxPlayground-BYZaz-7W.js → CuiBBoxPlayground-JxlxAwEH.js} +1 -1
  38. package/dist/interface/assets/CuiBottomSheet-Crtral92.js +1 -0
  39. package/dist/interface/assets/{CuiBottomSheet-Cgbt7aQP.js → CuiBottomSheet-DeatNfwe.js} +1 -1
  40. package/dist/interface/assets/CuiCameraCard-BQpPhbFu.js +1 -0
  41. package/dist/interface/assets/{CuiCameraPipCard-CLa09t5W.js → CuiCameraPipCard-mI-fq1HA.js} +1 -1
  42. package/dist/interface/assets/CuiCameraRecordings-DdHzzlQ0.js +1 -0
  43. package/dist/interface/assets/{CuiCameraShares-BCTN3Ie-.js → CuiCameraShares-Ccl_R18x.js} +1 -1
  44. package/dist/interface/assets/CuiCameraSnapshot-BSHFq9Wu.js +1 -0
  45. package/dist/interface/assets/{CuiCameraTable-DMKLoisE.js → CuiCameraTable-vtE18b9O.js} +1 -1
  46. package/dist/interface/assets/{CuiFloatingButton-C1-fhCxw.js → CuiFloatingButton-C4icz7qO.js} +1 -1
  47. package/dist/interface/assets/{CuiImage-Ab94PYIg.js → CuiImage-BW_rXmKP.js} +1 -1
  48. package/dist/interface/assets/{CuiMenu-CX2XxBmg.js → CuiMenu-BnlDnhe4.js} +1 -1
  49. package/dist/interface/assets/{CuiPluginCard-DQXny68Q.js → CuiPluginCard-BjIla0Lh.js} +2 -2
  50. package/dist/interface/assets/{CuiPluginOAuthButton-BvRVOPAt.js → CuiPluginOAuthButton-BjITZzrH.js} +2 -2
  51. package/dist/interface/assets/{CuiQRCode-DOVuTNfQ.js → CuiQRCode-CdXrr9fF.js} +1 -1
  52. package/dist/interface/assets/CuiRecordingsGrid-DEMp6jb1.js +1 -0
  53. package/dist/interface/assets/{CuiSchema-L35JTZ5Y.js → CuiSchema-B5BebPPL.js} +1 -1
  54. package/dist/interface/assets/{CuiTopNavbarItem-dBqQ0_Wd.js → CuiTopNavbarItem-C1Jf6-v6.js} +1 -1
  55. package/dist/interface/assets/{CuiTopbarSlot-Bf3keW8N.js → CuiTopbarSlot-DBQggZ_k.js} +1 -1
  56. package/dist/interface/assets/{Faces-DLdVxTYg.js → Faces-BuDpT1bS.js} +1 -1
  57. package/dist/interface/assets/{FirstSteps-c4m_l-s9.js → FirstSteps-BA2GcdeZ.js} +1 -1
  58. package/dist/interface/assets/{Instances-BE8EkRQ4.js → Instances-CRywvMB3.js} +1 -1
  59. package/dist/interface/assets/{Menu-BK9rk_sp.js → Menu-D7K5vheb.js} +1 -1
  60. package/dist/interface/assets/{OAuthDeviceFlow-DwoyMn6e.js → OAuthDeviceFlow-hX46XrKS.js} +1 -1
  61. package/dist/interface/assets/Plugin-LKueZ7Bz.css +1 -0
  62. package/dist/interface/assets/Plugin-fmS65xcP.js +1 -0
  63. package/dist/interface/assets/PluginConsole-BlNqePgI.js +7 -0
  64. package/dist/interface/assets/{PluginSchema-7qwKEn6c.js → PluginSchema-0aNy8YQq.js} +1 -1
  65. package/dist/interface/assets/{Plugins-CFXvg0P-.js → Plugins-DprSQtTi.js} +2 -2
  66. package/dist/interface/assets/Recordings-DX54fvB1.js +1 -0
  67. package/dist/interface/assets/{Settings-CnGCN9cC.js → Settings-CLAZVcfy.js} +1 -1
  68. package/dist/interface/assets/{SettingsAccount-lIy74Kjh.js → SettingsAccount-C1SbeJeY.js} +1 -1
  69. package/dist/interface/assets/SettingsAccount-CXmg2Mcz.js +1 -0
  70. package/dist/interface/assets/{SettingsAppearance-DLnlx8bM.js → SettingsAppearance-BNnf1b_H.js} +1 -1
  71. package/dist/interface/assets/SettingsAppearance-C8m7xHUu.js +1 -0
  72. package/dist/interface/assets/SettingsBackup-DPBoJMtH.js +1 -0
  73. package/dist/interface/assets/{SettingsNotifications-di325j-b.js → SettingsNotifications-CLJy9x9n.js} +1 -1
  74. package/dist/interface/assets/{SettingsRecordings-DvNlji2N.js → SettingsRecordings-N7Z5TfSc.js} +1 -1
  75. package/dist/interface/assets/{SettingsRemote-Kb-ichM0.js → SettingsRemote-COUnUIJS.js} +1 -1
  76. package/dist/interface/assets/{SettingsSystem-C0OHXycw.js → SettingsSystem-DQpLhvrZ.js} +2 -2
  77. package/dist/interface/assets/{SettingsUsers-Dx8Fm2QE.js → SettingsUsers-YTqxZlmG.js} +1 -1
  78. package/dist/interface/assets/{Terminal-BR9InMiL.js → Terminal-Bw7lYJBM.js} +1 -1
  79. package/dist/interface/assets/{VariableInput-B4E4nh-i.js → VariableInput-Djug7qo2.js} +1 -1
  80. package/dist/interface/assets/{VariableSuggestions-BvuF7Ezf.js → VariableSuggestions-BIqdHoyn.js} +1 -1
  81. package/dist/interface/assets/VersionsHandler-BxEnoZuK.js +7 -0
  82. package/dist/interface/assets/{Workers-BINNsLDU.js → Workers-eBjEKjQP.js} +1 -1
  83. package/dist/interface/assets/{api-D23Y8GEd.js → api-BRFaSK8y.js} +1 -1
  84. package/dist/interface/assets/api-CxmpI477.js +2 -0
  85. package/dist/interface/assets/{auth-CeN6oTgU.js → auth-BXBwiBIH.js} +1 -1
  86. package/dist/interface/assets/{automations-CBmYKozI.js → automations-Cg4kEME7.js} +1 -1
  87. package/dist/interface/assets/{automations-G3fWqK-C.js → automations-Z2hMedMg.js} +1 -1
  88. package/dist/interface/assets/{backup-KFYNv85J.js → backup-yOGR7lqI.js} +1 -1
  89. package/dist/interface/assets/bell-cSRUkOne.js +1 -0
  90. package/dist/interface/assets/{cameras-DeAGPYqb.js → cameras-DHOi-zot.js} +1 -1
  91. package/dist/interface/assets/{cameras.schema-BSB78_gg.js → cameras.schema-fPR1KOyp.js} +1 -1
  92. package/dist/interface/assets/cloudHandoff-BJ8olRtK.js +1 -0
  93. package/dist/interface/assets/{deviceId-CgRNCVsl.js → deviceId-Bn_6G8Gz.js} +1 -1
  94. package/dist/interface/assets/{hasPermission-nr9uI1sh.js → hasPermission-DjEBddex.js} +1 -1
  95. package/dist/interface/assets/{instances-Cz4DJwNc.js → instances-CGhiomVU.js} +1 -1
  96. package/dist/interface/assets/{locale-fNpCK2bH.js → locale-CKgqENB3.js} +1 -1
  97. package/dist/interface/assets/main-8r8D2YqX.js +3 -0
  98. package/dist/interface/assets/{notifications-euShmBTH.js → notifications-DDYgdk1C.js} +1 -1
  99. package/dist/interface/assets/plugins-DFu-PyaK.js +1 -0
  100. package/dist/interface/assets/{round-restart-alt-AXgxJgvx.js → round-restart-alt-X9I15hRL.js} +1 -1
  101. package/dist/interface/assets/router-DMYEhxdj.js +2 -0
  102. package/dist/interface/assets/{routerState-ByPqbiUl.js → routerState-B_z68YwD.js} +1 -1
  103. package/dist/interface/assets/{server-CfW4FWmD.js → server-BpIPZq5L.js} +1 -1
  104. package/dist/interface/assets/{shares-CifP6qUz.js → shares-TtxtbPZt.js} +1 -1
  105. package/dist/interface/assets/{theme-3K07RHLA.js → theme-MOk5mCsC.js} +1 -1
  106. package/dist/interface/assets/types-CRlXpmFA.js +1 -0
  107. package/dist/interface/assets/{ui-Cfq-tG-U.js → ui-CY2-_evw.js} +1 -1
  108. package/dist/interface/assets/{useBiometricCredentials-DS-lOPkp.js → useBiometricCredentials-Boyb2klA.js} +1 -1
  109. package/dist/interface/assets/{useCameraOptions-CO9VqYVT.js → useCameraOptions-BOSJBPuE.js} +1 -1
  110. package/dist/interface/assets/{useCuiCameraDrawer-Cmh9A6-k.js → useCuiCameraDrawer-BmdGPeEe.js} +1 -1
  111. package/dist/interface/assets/{useCuiDialog-BlhSS0jk.js → useCuiDialog-DOcwIZA3.js} +1 -1
  112. package/dist/interface/assets/{useFileDownload-DEM9UhjP.js → useFileDownload-CRB3k3lW.js} +1 -1
  113. package/dist/interface/assets/{useLogsSocket-CNAQ1g8I.js → useLogsSocket-B1L7x9fB.js} +1 -1
  114. package/dist/interface/assets/{useSharedComposables-Dyso8kmC.js → useSharedComposables-THEdrAoU.js} +1 -1
  115. package/dist/interface/assets/{useStreamStatus-Bn6gxutk.js → useStreamStatus-OmVyef54.js} +1 -1
  116. package/dist/interface/assets/{users.schema-D9OMoaax.js → users.schema-DXBgo_V0.js} +1 -1
  117. package/dist/interface/assets/{vendor-cameraui-CeENiq5U.js → vendor-cameraui-CUPAufpt.js} +21 -21
  118. package/dist/interface/assets/{vendor-core-D8xC2dee.js → vendor-core-Cmu2BAxm.js} +1 -1
  119. package/dist/interface/assets/{vendor-primevue-D-xm-xIu.js → vendor-primevue-Bs3kBqxF.js} +1 -1
  120. package/dist/interface/assets/view-grid-C9udm-L-.js +1 -0
  121. package/dist/interface/assets/view-grid-CdZOfBph.css +1 -0
  122. package/dist/interface/index.html +43 -42
  123. package/dist/interface/sw.js +1 -1
  124. package/dist/server/package.json +5 -5
  125. package/dist/server/requirements.txt +1 -1
  126. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/notifier.py +7 -0
  127. package/dist/server/src/api/controllers/cameras.controller.js +6 -6
  128. package/dist/server/src/api/controllers/cameras.controller.js.map +1 -1
  129. package/dist/server/src/api/controllers/plugins.controller.d.ts +2 -0
  130. package/dist/server/src/api/controllers/plugins.controller.js +48 -11
  131. package/dist/server/src/api/controllers/plugins.controller.js.map +1 -1
  132. package/dist/server/src/api/database/checks.d.ts +0 -8
  133. package/dist/server/src/api/database/checks.js +0 -49
  134. package/dist/server/src/api/database/checks.js.map +1 -1
  135. package/dist/server/src/api/database/selfcheck.d.ts +2 -38
  136. package/dist/server/src/api/database/selfcheck.js +79 -276
  137. package/dist/server/src/api/database/selfcheck.js.map +1 -1
  138. package/dist/server/src/api/index.js +3 -1
  139. package/dist/server/src/api/index.js.map +1 -1
  140. package/dist/server/src/api/routes/plugins.routes.js +25 -1
  141. package/dist/server/src/api/routes/plugins.routes.js.map +1 -1
  142. package/dist/server/src/api/schemas/backup.schema.js +2 -2
  143. package/dist/server/src/api/schemas/backup.schema.js.map +1 -1
  144. package/dist/server/src/api/schemas/plugins.schema.d.ts +4 -0
  145. package/dist/server/src/api/schemas/plugins.schema.js +3 -0
  146. package/dist/server/src/api/schemas/plugins.schema.js.map +1 -1
  147. package/dist/server/src/api/services/backup.service.js +16 -8
  148. package/dist/server/src/api/services/backup.service.js.map +1 -1
  149. package/dist/server/src/api/types/index.d.ts +9 -0
  150. package/dist/server/src/api/websocket/nsp/cameras.d.ts +3 -0
  151. package/dist/server/src/api/websocket/nsp/cameras.js +30 -0
  152. package/dist/server/src/api/websocket/nsp/cameras.js.map +1 -1
  153. package/dist/server/src/api/websocket/nsp/server.d.ts +3 -0
  154. package/dist/server/src/api/websocket/nsp/server.js +14 -2
  155. package/dist/server/src/api/websocket/nsp/server.js.map +1 -1
  156. package/dist/server/src/camera/streaming/rtp-session.js +1 -0
  157. package/dist/server/src/camera/streaming/rtp-session.js.map +1 -1
  158. package/dist/server/src/go2rtc/types.d.ts +3 -3
  159. package/dist/server/src/manager/discoveryManager.d.ts +5 -2
  160. package/dist/server/src/manager/discoveryManager.js +69 -61
  161. package/dist/server/src/manager/discoveryManager.js.map +1 -1
  162. package/dist/server/src/plugins/index.d.ts +1 -0
  163. package/dist/server/src/plugins/index.js +37 -4
  164. package/dist/server/src/plugins/index.js.map +1 -1
  165. package/dist/server/src/plugins/plugin.js +9 -14
  166. package/dist/server/src/plugins/plugin.js.map +1 -1
  167. package/dist/server/src/services/config/index.d.ts +4 -2
  168. package/dist/server/src/services/config/index.js +14 -4
  169. package/dist/server/src/services/config/index.js.map +1 -1
  170. package/dist/server/src/utils/engines.d.ts +2 -0
  171. package/dist/server/src/utils/engines.js +23 -0
  172. package/dist/server/src/utils/engines.js.map +1 -0
  173. package/dist/server/src/utils/interface-cache.d.ts +1 -0
  174. package/dist/server/src/utils/interface-cache.js +103 -0
  175. package/dist/server/src/utils/interface-cache.js.map +1 -0
  176. package/package.json +5 -5
  177. package/dist/interface/assets/Camera-CTIUE1PX.js +0 -2
  178. package/dist/interface/assets/CameraConsole-BQVlxqb1.js +0 -7
  179. package/dist/interface/assets/Cameras-BE9SEK9h.css +0 -1
  180. package/dist/interface/assets/Cameras-CyZMjvQu.js +0 -656
  181. package/dist/interface/assets/Camview-BnpJaGfI.js +0 -1
  182. package/dist/interface/assets/CuiBottomSheet-HO59nDTz.js +0 -1
  183. package/dist/interface/assets/CuiCameraCard-BJpi9GYb.js +0 -1
  184. package/dist/interface/assets/CuiCameraRecordings-DbPr4N27.js +0 -1
  185. package/dist/interface/assets/CuiCameraSnapshot-fX1tTzWs.js +0 -1
  186. package/dist/interface/assets/CuiRecordingsGrid-CS01gjpz.js +0 -1
  187. package/dist/interface/assets/Plugin-B4UvyHA4.js +0 -1
  188. package/dist/interface/assets/Plugin-DoxdkvWR.css +0 -1
  189. package/dist/interface/assets/PluginConsole-00dw-HUB.js +0 -7
  190. package/dist/interface/assets/Recordings-MSRod46b.js +0 -1
  191. package/dist/interface/assets/SettingsAccount-DoFSZhI5.js +0 -1
  192. package/dist/interface/assets/SettingsAppearance-DA8ON3Ts.js +0 -1
  193. package/dist/interface/assets/SettingsBackup-CpBqig7H.js +0 -1
  194. package/dist/interface/assets/VersionsHandler-J7N_cZBS.js +0 -7
  195. package/dist/interface/assets/api-DjhIYzsF.js +0 -2
  196. package/dist/interface/assets/cloudHandoff-Di9OHN7W.js +0 -1
  197. package/dist/interface/assets/main-sGc9j7q_.js +0 -3
  198. package/dist/interface/assets/plugins-DsiC2cVL.js +0 -1
  199. package/dist/interface/assets/router-BLvVFGz9.js +0 -2
  200. package/dist/interface/assets/types-C1BeYYUs.js +0 -1
  201. package/dist/interface/assets/view-grid-BUBP-PlR.css +0 -1
  202. package/dist/interface/assets/view-grid-Cg2Wk0qw.js +0 -1
  203. /package/dist/interface/assets/{error-256-DLKVOU2S.png → logo-512-DLKVOU2S.png} +0 -0
@@ -1 +1 @@
1
- import{A as e,S as t,b as n,w as r}from"./api-DjhIYzsF.js";import{$n as i,F as a,sr as o,z as s}from"./vendor-TwHhULaP.js";async function c({cameraData:t}){return(await e.post(`/cameras`,t)).data}async function l({cameraData:t}){return(await e.post(`/cameras/pair`,t)).data}async function u({cameraData:t}){return(await e.post(`/cameras/preview`,t)).data}async function d({signal:t}){return(await e.get(`/cameras/rooms`,{signal:t})).data}async function f({cameraname:t,signal:n}){return(await e.get(`/cameras/${t}`,{signal:n})).data}async function p({cameraname:t}){return(await e.delete(`/cameras/${t}/log`)).data}async function m({cameraname:t,signal:n}){return(await e.get(`/cameras/${t}/log/download`,{signal:n})).data}async function h({cameraname:t,sourcename:n,signal:r}){return(await e.get(`/cameras/${t}/info/${n}`,{signal:r})).data}async function g({cameraname:t,sourcename:n,probeConfig:r,force:i,signal:a}){return(await e.get(`/cameras/${t}/probe/${n}`,{params:{...r,...i?{refresh:!0}:{}},signal:a})).data}async function _({cameraname:t,forceNew:n,signal:r}){return(await e.get(`/cameras/${t}/snapshot`,{signal:r,params:{forceNew:n}})).data}async function v({parameter:t,signal:n}){return(await e.get(`/cameras`,{params:t,signal:n})).data}async function y({cameraname:t,cameraData:n}){return(await e.patch(`/cameras/${t}`,n)).data}async function b({cameraname:t,signal:n}){return(await e.get(`/cameras/${t}/extensions`,{signal:n})).data}async function x({cameraname:t,pluginname:n,signal:r}){return(await e.get(`/cameras/${t}/${n}/config`,{signal:r})).data}async function S({cameraname:t,pluginname:n,configData:r}){return(await e.patch(`/cameras/${t}/${n}/config`,r)).data}async function C({cameraname:t,pluginname:n,configData:r}){return(await e.put(`/cameras/${t}/${n}/config`,r)).data}async function w({cameraname:t,pluginname:n,configData:r}){return(await e.post(`/cameras/${t}/${n}/config`,r)).data}async function T({cameraname:t,pluginname:n,sensorId:r,signal:i}){return(await e.get(`/cameras/${t}/${n}/sensor/${r}/config`,{signal:i})).data}async function E({cameraname:t,pluginname:n,sensorId:r,configData:i}){return(await e.patch(`/cameras/${t}/${n}/sensor/${r}/config`,i)).data}async function D({cameraname:t,pluginname:n,sensorId:r,configData:i}){return(await e.put(`/cameras/${t}/${n}/sensor/${r}/config`,i)).data}async function O({cameraname:t,pluginname:n,sensorId:r,configData:i}){return(await e.post(`/cameras/${t}/${n}/sensor/${r}/config`,i)).data}async function k({cameraname:t,pluginname:n,type:r}){return(await e.put(`/cameras/${t}/${n}/enable`,null,{params:{type:r}})).data}async function A({cameraname:t,pluginname:n,type:r}){return(await e.put(`/cameras/${t}/${n}/disable`,null,{params:{type:r}})).data}async function j({cameraname:t,pluginname:n,type:r}){return(await e.post(`/cameras/${t}/${n}`,null,{params:{type:r}})).data}async function M({cameraname:t,pluginname:n,type:r}){return(await e.delete(`/cameras/${t}/${n}`,{params:{type:r}})).data}async function N({cameraname:t,pluginname:n}){return(await e.post(`/cameras/${t}/${n}/activate`)).data}async function P({cameraname:t,pluginname:n}){return(await e.delete(`/cameras/${t}/${n}/deactivate`)).data}async function F({cameraname:t,signal:n}){return(await e.get(`/cameras/${t}/zones`,{signal:n})).data}async function I({cameraname:t,zoneData:n}){return(await e.patch(`/cameras/${t}/zones`,n)).data}async function L({cameraname:t,lineData:n}){return(await e.patch(`/cameras/${t}/lines`,n)).data}async function R({cameraname:t}){return(await e.delete(`/cameras/${t}`)).data}async function z(){return(await e.delete(`/cameras`)).data}var B=class{_queryClient=s();t=r.global.t;toast=t();queryActivator=i([{name:`getCameraQuery`,enabled:!0},{name:`getCamerasQuery`,enabled:!0},{name:`getCameraSnapshotQuery`,enabled:!0},{name:`getCameraExtensionsQuery`,enabled:!0},{name:`getCameraExtensionConfigQuery`,enabled:!0},{name:`getZonesQuery`,enabled:!0},{name:`streamSourceInfoQuery`,enabled:!0},{name:`probeCameraSourceQuery`,enabled:!0},{name:`downloadLogQuery`,enabled:!0},{name:`getSensorConfigQuery`,enabled:!0}]);get queryClient(){return this._queryClient}createCameraQuery(){return a({mutationFn:c,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`camerasList`]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.camera_added`),life:3e3})}})}pairCameraQuery(){return a({mutationFn:l,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`camerasList`]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.camera_added`),life:3e3})}})}previewCameraQuery(){return a({mutationFn:u})}getCameraQuery(e){return n({queryKey:[`cameras`,e],queryFn:({signal:t})=>f({cameraname:o(e),signal:t}),initialData:()=>{let t=o(e),n=this._queryClient.getQueriesData({queryKey:[`camerasList`]});for(let[,e]of n){let n=e?.result?.find(e=>e.name===t);if(n)return n}},initialDataUpdatedAt:0,enabled:()=>this.queryActivator.value.some(e=>e.name===`getCameraQuery`&&e.enabled)})}getCameraExtensionsQuery(e){return n({queryKey:[`camerasExtensions`,e],queryFn:({signal:t})=>b({cameraname:o(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getCameraExtensionsQuery`&&e.enabled)})}streamSourceInfoQuery(e,t){return n({queryKey:[`cameras`,e,`info`,t],queryFn:({signal:n})=>h({cameraname:o(e),sourcename:o(t),signal:n}),enabled:()=>this.queryActivator.value.some(e=>e.name===`streamSourceInfoQuery`&&e.enabled)})}probeCameraSourceQuery(e,t,r){return n({queryKey:[`cameras`,e,`probe`,t],queryFn:({signal:n})=>g({cameraname:o(e),sourcename:o(t),probeConfig:o(r),signal:n}),enabled:()=>this.queryActivator.value.some(e=>e.name===`probeCameraSourceQuery`&&e.enabled)})}getCameraSnapshotQuery(e,t){return n({queryKey:[`camerasSnapshot`,e],queryFn:({signal:n})=>_({cameraname:o(e),forceNew:o(t),signal:n}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getCameraSnapshotQuery`&&e.enabled),retry:!1})}getCamerasQuery(e){return n({queryKey:[`camerasList`,e],queryFn:({signal:t})=>v({parameter:o(e),signal:t}),placeholderData:e=>e,enabled:()=>this.queryActivator.value.some(e=>e.name===`getCamerasQuery`&&e.enabled)})}getRoomsQuery(){return n({queryKey:[`camerasRooms`],queryFn:({signal:e})=>d({signal:e})})}patchCameraQuery(){return a({mutationFn:y,onSuccess:async(e,t)=>{let n=t.cameraData.name&&t.cameraData.name!==t.cameraname,r=t.cameraData.room!==void 0;if(n){let e=t.cameraname;await this._queryClient.invalidateQueries({queryKey:[e]}),await this._queryClient.refetchQueries({queryKey:[`camerasList`]})}else await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`camerasExtensions`,t.cameraname]}),await this._queryClient.refetchQueries({queryKey:[`cameras`,`extensions`,t.cameraname],type:`active`}),r&&(await this._queryClient.refetchQueries({queryKey:[`camerasList`]}),await this._queryClient.refetchQueries({queryKey:[`camerasRooms`]}));this.toast.add({severity:`success`,detail:this.t(`components.toast.camera_updated`),life:3e3})}})}getCameraExtensionConfigQuery(e,t,r){return n({queryKey:[`cameras`,`extensions`,e,t],queryFn:({signal:n})=>x({cameraname:o(e),pluginname:o(t),signal:n}),enabled:()=>!!o(t)&&this.queryActivator.value.some(e=>e.name===`getCameraExtensionConfigQuery`&&e.enabled),refetchInterval(){if(r.value)return 1e4},retry:10,retryDelay:500,staleTime:0})}patchCameraExtensionConfigQuery(){return a({mutationFn:S,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`cameras`,`extensions`,t.cameraname],type:`active`}),await this._queryClient.refetchQueries({queryKey:[`camerasExtensions`,t.cameraname]})}})}setCameraExtensionConfigQuery(){return a({mutationFn:C,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`cameras`,`extensions`,t.cameraname],type:`active`}),await this._queryClient.refetchQueries({queryKey:[`camerasExtensions`,t.cameraname]})}})}submitCameraExtensionConfigQuery(){return a({mutationFn:w,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`cameras`,`extensions`,t.cameraname],type:`active`}),await this._queryClient.refetchQueries({queryKey:[`camerasExtensions`,t.cameraname]})}})}getSensorConfigQuery(e,t,r,i){return n({queryKey:[`cameras`,`sensor`,e,t,r],queryFn:({signal:n})=>T({cameraname:o(e),pluginname:o(t),sensorId:o(r),signal:n}),enabled:()=>{let e=o(t),n=o(r);return!e||!n?!1:this.queryActivator.value.some(e=>e.name===`getSensorConfigQuery`&&e.enabled)},refetchInterval(){if(i.value)return 1e4},retry:3,retryDelay:500,staleTime:0})}patchSensorConfigQuery(){return a({mutationFn:E,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`cameras`,`sensor`,t.cameraname,t.pluginname,t.sensorId]})}})}setSensorConfigQuery(){return a({mutationFn:D,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`cameras`,`sensor`,t.cameraname,t.pluginname,t.sensorId]})}})}submitSensorConfigQuery(){return a({mutationFn:O,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`cameras`,`sensor`,t.cameraname,t.pluginname,t.sensorId]})}})}enableCameraExtensionQuery(){return a({mutationFn:k,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`camerasExtensions`,t.cameraname]})}})}disableCameraExtensionQuery(){return a({mutationFn:A,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`camerasExtensions`,t.cameraname]})}})}addCameraExtensionQuery(){return a({mutationFn:j,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`camerasExtensions`,t.cameraname]})}})}activateCameraExtensionQuery(){return a({mutationFn:N,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`camerasExtensions`,t.cameraname]})}})}deactivateCameraExtensionQuery(){return a({mutationFn:P,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`camerasExtensions`,t.cameraname]})}})}getZonesQuery(e){return n({queryKey:[`cameras`,e,`zones`],queryFn:({signal:t})=>F({cameraname:o(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getZonesQuery`&&e.enabled)})}patchZonesQuery(){return a({mutationFn:I,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),this.toast.add({severity:`success`,detail:this.t(`components.toast.zone_updated`),life:3e3})}})}patchLinesQuery(){return a({mutationFn:L,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),this.toast.add({severity:`success`,detail:this.t(`components.toast.line_updated`),life:3e3})}})}removeCameraExtensionQuery(){return a({mutationFn:M,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`camerasExtensions`,t.cameraname]})}})}removeCameraQuery(){return a({mutationFn:R,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`camerasList`]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.camera_removed`),life:3e3})}})}removeCamerasQuery(){return a({mutationFn:z,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`camerasList`]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.cameras_removed`),life:3e3})}})}downloadLogQuery(e){return n({queryKey:[`logs`,e],queryFn:({signal:t})=>m({cameraname:o(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`downloadLogQuery`&&e.enabled)})}clearLogQuery(){return a({mutationFn:p,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`logs`,t.cameraname],exact:!0}),this.toast.add({severity:`success`,detail:this.t(`components.toast.log_cleared`),life:3e3})}})}toggleQueryActivator(e,t){let n=this.queryActivator.value.find(t=>t.name===e);return n&&(n.enabled=t),this}};export{f as n,g as r,B as t};
1
+ import{A as e,S as t,b as n,w as r}from"./api-CxmpI477.js";import{$n as i,F as a,sr as o,z as s}from"./vendor-TwHhULaP.js";async function c({cameraData:t}){return(await e.post(`/cameras`,t)).data}async function l({cameraData:t}){return(await e.post(`/cameras/pair`,t)).data}async function u({cameraData:t}){return(await e.post(`/cameras/preview`,t)).data}async function d({signal:t}){return(await e.get(`/cameras/rooms`,{signal:t})).data}async function f({cameraname:t,signal:n}){return(await e.get(`/cameras/${t}`,{signal:n})).data}async function p({cameraname:t}){return(await e.delete(`/cameras/${t}/log`)).data}async function m({cameraname:t,signal:n}){return(await e.get(`/cameras/${t}/log/download`,{signal:n})).data}async function h({cameraname:t,sourcename:n,signal:r}){return(await e.get(`/cameras/${t}/info/${n}`,{signal:r})).data}async function g({cameraname:t,sourcename:n,probeConfig:r,force:i,signal:a}){return(await e.get(`/cameras/${t}/probe/${n}`,{params:{...r,...i?{refresh:!0}:{}},signal:a})).data}async function _({cameraname:t,forceNew:n,signal:r}){return(await e.get(`/cameras/${t}/snapshot`,{signal:r,params:{forceNew:n}})).data}async function v({parameter:t,signal:n}){return(await e.get(`/cameras`,{params:t,signal:n})).data}async function y({cameraname:t,cameraData:n}){return(await e.patch(`/cameras/${t}`,n)).data}async function b({cameraname:t,signal:n}){return(await e.get(`/cameras/${t}/extensions`,{signal:n})).data}async function x({cameraname:t,pluginname:n,signal:r}){return(await e.get(`/cameras/${t}/${n}/config`,{signal:r})).data}async function S({cameraname:t,pluginname:n,configData:r}){return(await e.patch(`/cameras/${t}/${n}/config`,r)).data}async function C({cameraname:t,pluginname:n,configData:r}){return(await e.put(`/cameras/${t}/${n}/config`,r)).data}async function w({cameraname:t,pluginname:n,configData:r}){return(await e.post(`/cameras/${t}/${n}/config`,r)).data}async function T({cameraname:t,pluginname:n,sensorId:r,signal:i}){return(await e.get(`/cameras/${t}/${n}/sensor/${r}/config`,{signal:i})).data}async function E({cameraname:t,pluginname:n,sensorId:r,configData:i}){return(await e.patch(`/cameras/${t}/${n}/sensor/${r}/config`,i)).data}async function D({cameraname:t,pluginname:n,sensorId:r,configData:i}){return(await e.put(`/cameras/${t}/${n}/sensor/${r}/config`,i)).data}async function O({cameraname:t,pluginname:n,sensorId:r,configData:i}){return(await e.post(`/cameras/${t}/${n}/sensor/${r}/config`,i)).data}async function k({cameraname:t,pluginname:n,type:r}){return(await e.put(`/cameras/${t}/${n}/enable`,null,{params:{type:r}})).data}async function A({cameraname:t,pluginname:n,type:r}){return(await e.put(`/cameras/${t}/${n}/disable`,null,{params:{type:r}})).data}async function j({cameraname:t,pluginname:n,type:r}){return(await e.post(`/cameras/${t}/${n}`,null,{params:{type:r}})).data}async function M({cameraname:t,pluginname:n,type:r}){return(await e.delete(`/cameras/${t}/${n}`,{params:{type:r}})).data}async function N({cameraname:t,pluginname:n}){return(await e.post(`/cameras/${t}/${n}/activate`)).data}async function P({cameraname:t,pluginname:n}){return(await e.delete(`/cameras/${t}/${n}/deactivate`)).data}async function F({cameraname:t,signal:n}){return(await e.get(`/cameras/${t}/zones`,{signal:n})).data}async function I({cameraname:t,zoneData:n}){return(await e.patch(`/cameras/${t}/zones`,n)).data}async function L({cameraname:t,lineData:n}){return(await e.patch(`/cameras/${t}/lines`,n)).data}async function R({cameraname:t}){return(await e.delete(`/cameras/${t}`)).data}async function z(){return(await e.delete(`/cameras`)).data}var B=class{_queryClient=s();t=r.global.t;toast=t();queryActivator=i([{name:`getCameraQuery`,enabled:!0},{name:`getCamerasQuery`,enabled:!0},{name:`getCameraSnapshotQuery`,enabled:!0},{name:`getCameraExtensionsQuery`,enabled:!0},{name:`getCameraExtensionConfigQuery`,enabled:!0},{name:`getZonesQuery`,enabled:!0},{name:`streamSourceInfoQuery`,enabled:!0},{name:`probeCameraSourceQuery`,enabled:!0},{name:`downloadLogQuery`,enabled:!0},{name:`getSensorConfigQuery`,enabled:!0}]);get queryClient(){return this._queryClient}createCameraQuery(){return a({mutationFn:c,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`camerasList`]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.camera_added`),life:3e3})}})}pairCameraQuery(){return a({mutationFn:l,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`camerasList`]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.camera_added`),life:3e3})}})}previewCameraQuery(){return a({mutationFn:u})}getCameraQuery(e){return n({queryKey:[`cameras`,e],queryFn:({signal:t})=>f({cameraname:o(e),signal:t}),initialData:()=>{let t=o(e),n=this._queryClient.getQueriesData({queryKey:[`camerasList`]});for(let[,e]of n){let n=e?.result?.find(e=>e.name===t);if(n)return n}},initialDataUpdatedAt:0,enabled:()=>this.queryActivator.value.some(e=>e.name===`getCameraQuery`&&e.enabled)})}getCameraExtensionsQuery(e){return n({queryKey:[`camerasExtensions`,e],queryFn:({signal:t})=>b({cameraname:o(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getCameraExtensionsQuery`&&e.enabled)})}streamSourceInfoQuery(e,t){return n({queryKey:[`cameras`,e,`info`,t],queryFn:({signal:n})=>h({cameraname:o(e),sourcename:o(t),signal:n}),enabled:()=>this.queryActivator.value.some(e=>e.name===`streamSourceInfoQuery`&&e.enabled)})}probeCameraSourceQuery(e,t,r){return n({queryKey:[`cameras`,e,`probe`,t],queryFn:({signal:n})=>g({cameraname:o(e),sourcename:o(t),probeConfig:o(r),signal:n}),enabled:()=>this.queryActivator.value.some(e=>e.name===`probeCameraSourceQuery`&&e.enabled)})}getCameraSnapshotQuery(e,t){return n({queryKey:[`camerasSnapshot`,e],queryFn:({signal:n})=>_({cameraname:o(e),forceNew:o(t),signal:n}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getCameraSnapshotQuery`&&e.enabled),retry:!1})}getCamerasQuery(e){return n({queryKey:[`camerasList`,e],queryFn:({signal:t})=>v({parameter:o(e),signal:t}),placeholderData:e=>e,enabled:()=>this.queryActivator.value.some(e=>e.name===`getCamerasQuery`&&e.enabled)})}getRoomsQuery(){return n({queryKey:[`camerasRooms`],queryFn:({signal:e})=>d({signal:e})})}patchCameraQuery(){return a({mutationFn:y,onSuccess:async(e,t)=>{let n=t.cameraData.name&&t.cameraData.name!==t.cameraname,r=t.cameraData.room!==void 0;if(n){let e=t.cameraname;await this._queryClient.invalidateQueries({queryKey:[e]}),await this._queryClient.refetchQueries({queryKey:[`camerasList`]})}else await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`camerasExtensions`,t.cameraname]}),await this._queryClient.refetchQueries({queryKey:[`cameras`,`extensions`,t.cameraname],type:`active`}),r&&(await this._queryClient.refetchQueries({queryKey:[`camerasList`]}),await this._queryClient.refetchQueries({queryKey:[`camerasRooms`]}));this.toast.add({severity:`success`,detail:this.t(`components.toast.camera_updated`),life:3e3})}})}getCameraExtensionConfigQuery(e,t,r){return n({queryKey:[`cameras`,`extensions`,e,t],queryFn:({signal:n})=>x({cameraname:o(e),pluginname:o(t),signal:n}),enabled:()=>!!o(t)&&this.queryActivator.value.some(e=>e.name===`getCameraExtensionConfigQuery`&&e.enabled),refetchInterval(){if(r.value)return 1e4},retry:10,retryDelay:500,staleTime:0})}patchCameraExtensionConfigQuery(){return a({mutationFn:S,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`cameras`,`extensions`,t.cameraname],type:`active`}),await this._queryClient.refetchQueries({queryKey:[`camerasExtensions`,t.cameraname]})}})}setCameraExtensionConfigQuery(){return a({mutationFn:C,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`cameras`,`extensions`,t.cameraname],type:`active`}),await this._queryClient.refetchQueries({queryKey:[`camerasExtensions`,t.cameraname]})}})}submitCameraExtensionConfigQuery(){return a({mutationFn:w,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`cameras`,`extensions`,t.cameraname],type:`active`}),await this._queryClient.refetchQueries({queryKey:[`camerasExtensions`,t.cameraname]})}})}getSensorConfigQuery(e,t,r,i){return n({queryKey:[`cameras`,`sensor`,e,t,r],queryFn:({signal:n})=>T({cameraname:o(e),pluginname:o(t),sensorId:o(r),signal:n}),enabled:()=>{let e=o(t),n=o(r);return!e||!n?!1:this.queryActivator.value.some(e=>e.name===`getSensorConfigQuery`&&e.enabled)},refetchInterval(){if(i.value)return 1e4},retry:3,retryDelay:500,staleTime:0})}patchSensorConfigQuery(){return a({mutationFn:E,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`cameras`,`sensor`,t.cameraname,t.pluginname,t.sensorId]})}})}setSensorConfigQuery(){return a({mutationFn:D,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`cameras`,`sensor`,t.cameraname,t.pluginname,t.sensorId]})}})}submitSensorConfigQuery(){return a({mutationFn:O,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`cameras`,`sensor`,t.cameraname,t.pluginname,t.sensorId]})}})}enableCameraExtensionQuery(){return a({mutationFn:k,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`camerasExtensions`,t.cameraname]})}})}disableCameraExtensionQuery(){return a({mutationFn:A,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`camerasExtensions`,t.cameraname]})}})}addCameraExtensionQuery(){return a({mutationFn:j,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`camerasExtensions`,t.cameraname]})}})}activateCameraExtensionQuery(){return a({mutationFn:N,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`camerasExtensions`,t.cameraname]})}})}deactivateCameraExtensionQuery(){return a({mutationFn:P,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`camerasExtensions`,t.cameraname]})}})}getZonesQuery(e){return n({queryKey:[`cameras`,e,`zones`],queryFn:({signal:t})=>F({cameraname:o(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getZonesQuery`&&e.enabled)})}patchZonesQuery(){return a({mutationFn:I,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),this.toast.add({severity:`success`,detail:this.t(`components.toast.zone_updated`),life:3e3})}})}patchLinesQuery(){return a({mutationFn:L,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),this.toast.add({severity:`success`,detail:this.t(`components.toast.line_updated`),life:3e3})}})}removeCameraExtensionQuery(){return a({mutationFn:M,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`cameras`,t.cameraname],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`camerasExtensions`,t.cameraname]})}})}removeCameraQuery(){return a({mutationFn:R,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`camerasList`]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.camera_removed`),life:3e3})}})}removeCamerasQuery(){return a({mutationFn:z,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`camerasList`]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.cameras_removed`),life:3e3})}})}downloadLogQuery(e){return n({queryKey:[`logs`,e],queryFn:({signal:t})=>m({cameraname:o(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`downloadLogQuery`&&e.enabled)})}clearLogQuery(){return a({mutationFn:p,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`logs`,t.cameraname],exact:!0}),this.toast.add({severity:`success`,detail:this.t(`components.toast.log_cleared`),life:3e3})}})}toggleQueryActivator(e,t){let n=this.queryActivator.value.find(t=>t.name===e);return n&&(n.enabled=t),this}};export{f as n,g as r,B as t};
@@ -1 +1 @@
1
- import{$n as e,$t as t,Jn as n,Xt as r,dr as i,in as a,on as o,sr as s,wn as c}from"./vendor-TwHhULaP.js";import{et as l}from"./vendor-cameraui-CeENiq5U.js";import{C as u,S as d,w as f}from"./vendor-zod-V2qTUMVc.js";import{$ as p,J as m,Q as h,X as g,Y as _,Z as v}from"./types-C1BeYYUs.js";var y={class:`flex flex-col gap-2 w-full`},b={for:`roomName`,class:`cui-label`},x=o({__name:`CreateRoom`,setup(o,{expose:u}){let d=e(``);return u({onConfirm:async()=>d.value.trim()||null}),(e,o)=>{let u=l;return c(),t(`div`,y,[r(`label`,b,i(e.$t(`components.form.label.name`)),1),a(u,{id:`roomName`,modelValue:s(d),"onUpdate:modelValue":o[0]||=e=>n(d)?d.value=e:null,class:`w-full`,placeholder:e.$t(`components.form.hint.room_select`),autofocus:``},null,8,[`modelValue`,`placeholder`])])}}}),S=u({protocol:v,url:f().trim().min(1,`Camera Source is required`).array().nonempty(`Camera Source is required`)}).strict(),C=u({name:f().trim().min(1,`Camera Source Name is required`),urls:S.array(),role:h,useForSnapshot:d().default(!1),hotMode:d().default(!0),preload:d().default(!0),prebuffer:d().default(!1),childSourceId:f().trim().optional()}).strict(),w=u({...m.shape,sources:C.array().refine(e=>e.some(e=>e.role===`high-resolution`||e.role===`mid-resolution`||e.role===`low-resolution`),{path:[`sources[].role`],message:`One of the roles "high-resolution", "mid-resolution" or "low-resolution" is required`}).refine(e=>e.filter(e=>e.useForSnapshot).length<=1,{message:`Only one source can be used for snapshot`,path:[`sources`]}).refine(e=>e.filter(e=>e.role===`snapshot`).every(e=>!e.useForSnapshot),{message:`Snapshot source can not be used with useForSnapshot`,path:[`sources`]}).refine(e=>e.filter(e=>e.role===`snapshot`).every(e=>!e.hotMode),{message:`Snapshot source can not be used with hotMode`}).refine(e=>e.filter(e=>e.role===`snapshot`).every(e=>!e.preload),{message:`Snapshot source can not be used with preload`}).refine(e=>e.filter(e=>e.role===`snapshot`).every(e=>!e.prebuffer),{message:`Snapshot source can not be used with prebuffer`}).refine(e=>{let t=e.map(e=>e.role).filter(Boolean);return new Set(t).size===t.length},{message:`Each source role can be assigned to only one source`,path:[`sources`]})}).strict(),T=p,E=g,D=_;export{x as a,T as i,E as n,w as r,D as t};
1
+ import{$n as e,$t as t,Jn as n,Xt as r,dr as i,in as a,on as o,sr as s,wn as c}from"./vendor-TwHhULaP.js";import{et as l}from"./vendor-cameraui-CUPAufpt.js";import{C as u,S as d,w as f}from"./vendor-zod-V2qTUMVc.js";import{$ as p,J as m,Q as h,X as g,Y as _,Z as v}from"./types-CRlXpmFA.js";var y={class:`flex flex-col gap-2 w-full`},b={for:`roomName`,class:`cui-label`},x=o({__name:`CreateRoom`,setup(o,{expose:u}){let d=e(``);return u({onConfirm:async()=>d.value.trim()||null}),(e,o)=>{let u=l;return c(),t(`div`,y,[r(`label`,b,i(e.$t(`components.form.label.name`)),1),a(u,{id:`roomName`,modelValue:s(d),"onUpdate:modelValue":o[0]||=e=>n(d)?d.value=e:null,class:`w-full`,placeholder:e.$t(`components.form.hint.room_select`),autofocus:``},null,8,[`modelValue`,`placeholder`])])}}}),S=u({protocol:v,url:f().trim().min(1,`Camera Source is required`).array().nonempty(`Camera Source is required`)}).strict(),C=u({name:f().trim().min(1,`Camera Source Name is required`),urls:S.array(),role:h,useForSnapshot:d().default(!1),hotMode:d().default(!0),preload:d().default(!0),prebuffer:d().default(!1),childSourceId:f().trim().optional()}).strict(),w=u({...m.shape,sources:C.array().refine(e=>e.some(e=>e.role===`high-resolution`||e.role===`mid-resolution`||e.role===`low-resolution`),{path:[`sources[].role`],message:`One of the roles "high-resolution", "mid-resolution" or "low-resolution" is required`}).refine(e=>e.filter(e=>e.useForSnapshot).length<=1,{message:`Only one source can be used for snapshot`,path:[`sources`]}).refine(e=>e.filter(e=>e.role===`snapshot`).every(e=>!e.useForSnapshot),{message:`Snapshot source can not be used with useForSnapshot`,path:[`sources`]}).refine(e=>e.filter(e=>e.role===`snapshot`).every(e=>!e.hotMode),{message:`Snapshot source can not be used with hotMode`}).refine(e=>e.filter(e=>e.role===`snapshot`).every(e=>!e.preload),{message:`Snapshot source can not be used with preload`}).refine(e=>e.filter(e=>e.role===`snapshot`).every(e=>!e.prebuffer),{message:`Snapshot source can not be used with prebuffer`}).refine(e=>{let t=e.map(e=>e.role).filter(Boolean);return new Set(t).size===t.length},{message:`Each source role can be assigned to only one source`,path:[`sources`]})}).strict(),T=p,E=g,D=_;export{x as a,T as i,E as n,w as r,D as t};
@@ -0,0 +1 @@
1
+ import{f as e}from"./api-CxmpI477.js";export{e as bounceToCloudFrontend};
@@ -1 +1 @@
1
- import"./api-DjhIYzsF.js";import"./vendor-TwHhULaP.js";var e=`cameraui:web-push-id`;function t(){if(typeof crypto<`u`&&typeof crypto.randomUUID==`function`)return crypto.randomUUID();if(typeof window<`u`&&window.crypto!==void 0&&typeof window.crypto.randomUUID==`function`)return window.crypto.randomUUID();let e=new Uint8Array(16);crypto.getRandomValues(e),e[6]=e[6]&15|64,e[8]=e[8]&63|128;let t=[...e].map(e=>e.toString(16).padStart(2,`0`)).join(``);return`${t.slice(0,8)}-${t.slice(8,12)}-${t.slice(12,16)}-${t.slice(16,20)}-${t.slice(20)}`}async function n(){let n=localStorage.getItem(e);return n||(n=t(),localStorage.setItem(e,n)),n}export{n,t};
1
+ import"./api-CxmpI477.js";import"./vendor-TwHhULaP.js";var e=`cameraui:web-push-id`;function t(){if(typeof crypto<`u`&&typeof crypto.randomUUID==`function`)return crypto.randomUUID();if(typeof window<`u`&&window.crypto!==void 0&&typeof window.crypto.randomUUID==`function`)return window.crypto.randomUUID();let e=new Uint8Array(16);crypto.getRandomValues(e),e[6]=e[6]&15|64,e[8]=e[8]&63|128;let t=[...e].map(e=>e.toString(16).padStart(2,`0`)).join(``);return`${t.slice(0,8)}-${t.slice(8,12)}-${t.slice(12,16)}-${t.slice(16,20)}-${t.slice(20)}`}async function n(){let n=localStorage.getItem(e);return n||(n=t(),localStorage.setItem(e,n)),n}export{n,t};
@@ -1 +1 @@
1
- import{d as e}from"./api-DjhIYzsF.js";import{c as t,f as n}from"./vendor-core-D8xC2dee.js";var r={user:0,admin:1,master:2};function i(e,t){return(r[e]??0)>=(r[t]??0)}function a(r,a,o){let{user:s}=n(e()),c=s.value?.role??`user`;if(a&&!r)return o?c===a:i(c,a);r??=t();let l=!r?.meta?.auth||r?.meta?.auth.requiresAuth===!1,u=a??r.meta?.auth?.role??`user`;return l||u===`none`?!0:o?c===u:i(c,u)}export{a as t};
1
+ import{d as e}from"./api-CxmpI477.js";import{c as t,f as n}from"./vendor-core-Cmu2BAxm.js";var r={user:0,admin:1,master:2};function i(e,t){return(r[e]??0)>=(r[t]??0)}function a(r,a,o){let{user:s}=n(e()),c=s.value?.role??`user`;if(a&&!r)return o?c===a:i(c,a);r??=t();let l=!r?.meta?.auth||r?.meta?.auth.requiresAuth===!1,u=a??r.meta?.auth?.role??`user`;return l||u===`none`?!0:o?c===u:i(c,u)}export{a as t};
@@ -1 +1 @@
1
- import{A as e,N as t,S as n,b as r,d as i,j as a,w as o}from"./api-DjhIYzsF.js";import{$n as s,$t as c,F as l,I as u,Qn as d,Xt as f,Yn as p,Yt as m,or as h,wn as g,z as _}from"./vendor-TwHhULaP.js";import{Di as v,J as ee,Li as y,O as b,kt as x}from"./vendor-cameraui-CeENiq5U.js";import{d as S,l as C}from"./vendor-core-D8xC2dee.js";import{t as te}from"./hasPermission-nr9uI1sh.js";import{t as w}from"./useCuiDialog-BlhSS0jk.js";var T={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function E(e,t){return g(),c(`svg`,T,[...t[0]||=[f(`path`,{fill:`currentColor`,d:`M20.916 9.564a1 1 0 0 0-.513-1.316L7.328 2.492c-.995-.438-2.22.051-2.645 1.042l-2.21 5.154a2 2 0 0 0 1.052 2.624L9.563 13.9L8.323 17H4v-3H2v8h2v-3h4.323c.823 0 1.552-.494 1.856-1.258l1.222-3.054l5.205 2.23a1 1 0 0 0 1.31-.517l.312-.71l1.701.68l2-5l-1.536-.613zm-4.434 5.126L4.313 9.475l2.208-5.152l12.162 5.354z`},null,-1)]])}var D=p({name:`bx-cctv`,render:E}),O={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function k(e,t){return g(),c(`svg`,O,[...t[0]||=[f(`path`,{fill:`currentColor`,d:`M20 3H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2m-5 5h-2V6h2zm4 0h-2V6h2zm1 5H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2m-5 5h-2v-2h2zm4 0h-2v-2h2z`},null,-1)]])}var A=p({name:`bxs-server`,render:k});async function j(t){return(await e.get(`/instances`,{signal:t})).data}async function M(t){return(await e.post(`/instances`,t)).data}async function N({id:t,data:n}){return(await e.put(`/instances/${t}`,n)).data}async function P(t){await e.delete(`/instances/${t}`)}async function F(t){return(await e.patch(`/instances/${t}/favorite`)).data}async function I(t){return(await e.post(`/instances/${t}/login`)).data}async function L(t,n){return(await e.get(`/instances/${t}/status`,{signal:n})).data}var R=class{_queryClient=_();toast=n();t=o.global.t;listQuery(){return r({queryKey:[`instances`],queryFn:({signal:e})=>j(e)})}statusQueries(e){return u({queries:m(()=>h(e).map(e=>({queryKey:[`instances`,e.id,`status`],queryFn:({signal:t})=>L(e.id,t),refetchInterval:15e3,retry:!1})))})}createMutation(){return l({mutationFn:M,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`instances`]}),this.toast.add({severity:`success`,detail:this.t(`views.settings.instances.added`),life:3e3})}})}updateMutation(){return l({mutationFn:N,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`instances`]}),this.toast.add({severity:`success`,detail:this.t(`views.settings.instances.updated`),life:3e3})}})}deleteMutation(){return l({mutationFn:async e=>{await P(e),await this._queryClient.cancelQueries({queryKey:[`instances`,e,`status`]}),this._queryClient.removeQueries({queryKey:[`instances`,e,`status`]})},onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`instances`]}),this.toast.add({severity:`success`,detail:this.t(`views.settings.instances.removed`),life:3e3})}})}toggleFavoriteMutation(){return l({mutationFn:F,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`instances`]})}})}loginMutation(){return l({mutationFn:I,onError:()=>{}})}};function z(e){let{prefix:t,enabled:n}=e;function r(e,r,i,a){if(!n)return;let o=new Date,s=`[${t} ${String(o.getHours()).padStart(2,`0`)}:${String(o.getMinutes()).padStart(2,`0`)}:${String(o.getSeconds()).padStart(2,`0`)}.${String(o.getMilliseconds()).padStart(3,`0`)}]`;a===void 0?console[e](s,`[${r}]`,i):console[e](s,`[${r}]`,i,a)}return{info:(e,t,n)=>r(`log`,e,t,n),event:(e,t,n)=>r(`log`,e,`[Event] ${t}`,n),warn:(e,t,n)=>r(`warn`,e,t,n),error:(e,t,n)=>r(`error`,e,t,n)}}var B=3e4,V=5e3,H=`__home__`,U=new Set([`localhost`,`127.0.0.1`,`::1`]),W=z({prefix:`Instances`,enabled:!0});async function G(e,t){try{let n=AbortSignal.timeout(V),r=t?AbortSignal.any([n,t]):n,i=await fetch(`${e}/api/health`,{signal:r});return W.event(`probe`,`${e} → ${i.ok?`OK`:`HTTP ${i.status}`}`),i.ok}catch(t){let n=t instanceof Error?t.message:String(t);return W.event(`probe`,`${e} → FAIL`,n),!1}}function K(e){return{access:e.access_token,accessExpiresAt:e.access_token_expires_at,refresh:e.refresh_token,refreshExpiresAt:e.refresh_token_expires_at}}function q(e,t){return{_id:t?._id??``,username:t?.username??``,email:t?.email,role:t?.role??``,firstLogin:t?.firstLogin,avatar:t?.avatar,access_token:e.access,refresh_token:e.refresh??``,token_type:`Bearer`,access_token_expires_at:e.accessExpiresAt??0,refresh_token_expires_at:e.refreshExpiresAt??0,internalAddresses:[],externalAddresses:[]}}var J=S(`instances`,()=>{let e=i(),r=C(),c=n(),l=w(),u=_(),{t:f}=o.global,p=v(`instanceTokens`,{}),h=v(`activeInstanceId`,null),g=s(!1),S=s(null),T=s(0),E=0,D=s(null),O=s([]),k=y(`redirectInfo`,null,{serializer:{read:e=>e?JSON.parse(e):null,write:e=>JSON.stringify(e)}}),A=m(()=>h.value===null),L=m(()=>h.value===null?null:O.value.find(e=>e.id===h.value)?.url??null);async function R(){try{if(!te(void 0,`admin`))return;let e=await j();O.value=e.instances,D.value=e.homeId,W.info(`fetch`,`loaded ${e.instances.length} instances`,{homeId:e.homeId})}catch(e){W.warn(`fetch`,`failed`,e)}}let z=m(()=>{let e=D.value;return O.value.filter(t=>!(e&&t.remoteHomeId&&t.remoteHomeId===e)).map(e=>{let t=p.value[e.id];return{id:e.id,name:e.name,url:e.url,hasCredentials:!!e.credentials,favorite:e.favorite??!0,userData:t?.userData??null,lastConnectedAt:t?.lastConnectedAt??null,isHome:!1}})});function V(){let e=p.value[H],t=h.value===null?a().target.value?.endpoint.url??e?.url??window.location.origin:e?.url??window.location.origin;return{id:`home`,name:f(`navigation.home`),url:t,hasCredentials:!1,favorite:!1,userData:e?.userData??null,lastConnectedAt:e?.lastConnectedAt??null,isHome:!0}}let J=m(()=>{if(h.value!==null){let e=z.value.find(e=>e.id===h.value);if(e)return e}return V()}),Y=m(()=>z.value.filter(e=>e.favorite)),X=m(()=>Y.value.length>0||h.value!==null||k.value!==null);function Z(e){return O.value.find(t=>t.id===e)?.favorite??!0}async function ne(e){let{favorite:t}=await F(e),n=O.value.find(t=>t.id===e);n&&(n.favorite=t)}async function re(e){let t=await M(e);return O.value=[...O.value,t],t}async function ie(e){await P(e),O.value=O.value.filter(t=>t.id!==e),delete p.value[e]}async function ae(e,t){let n=await N({id:e,data:t}),r=O.value.findIndex(t=>t.id===e);r!==-1&&(O.value[r]=n)}async function oe(e,t){let n=O.value.find(t=>t.id===e);return n?G(n.url,t):!1}function Q(){let t=a().target.value;if(!t?.tokens.access){W.event(`save-tokens`,`skipped — no live access token`);return}let n=h.value??H;p.value[n]={userData:q(t.tokens,e.user??void 0),lastConnectedAt:Date.now(),url:t.endpoint.url},W.event(`save-tokens`,`slot=${n} url=${t.endpoint.url}`)}function se(){if(h.value===null){t.value=null,W.event(`restore-override`,`no active instance — home target`);return}let e=p.value[h.value],n=e?.url??e?.userData?.internalAddresses?.[0]??e?.userData?.externalAddresses?.[0]??null;t.value=n,W.event(`restore-override`,`activeId=${h.value} → ${n??`no cached url`}`)}async function ce(n){if(g.value){W.warn(`switch`,`ignored — another switch is already in progress`);return}let i=n===null?V():z.value.find(e=>e.id===n)??V();if(n!==null&&$(i.url)&&!await ue(i.name)){W.info(`switch`,`URL handoff declined by user`);return}let o=++E;g.value=!0,S.value=i.name,W.info(`switch`,`START targetId=${n??`home`} gen=${o}`),W.info(`switch`,`target resolved — name="${i.name}" url=${i.url} hasCreds=${i.hasCredentials}`);try{if(n!==null){let e=await G(i.url);if(o!==E){W.event(`switch`,`aborted after probe — newer gen=${E}`);return}if(!e){W.warn(`switch`,`target unreachable — ${i.url}`),c.add({severity:`warn`,detail:f(`instances.unreachable`,{name:i.name}),life:3e3});return}}let s=null;if(n!==null&&i.hasCredentials)try{s=await I(n),W.event(`switch`,`backend relay login OK`)}catch(e){W.warn(`switch`,`backend relay login FAILED — will try cached tokens`,e)}if(o!==E){W.event(`switch`,`aborted after relay-login — newer gen=${E}`);return}Q();let l=n??H,d=s?K(s):le(l);if(W.event(`switch`,`tokens source: ${s?`fresh`:d?`cached`:`none`} (slot=${l})`),n!==null&&$(i.url)){W.info(`switch`,`URL handoff required — leaving SPA`),await de(i,s);return}let m=a();if(m.reset(),W.event(`switch`,`kernel RESET`),x(),b(),ee(),u.clear(),W.event(`switch`,`vue-query cleared`),h.value=n,t.value=n===null?null:i.url,W.event(`switch`,`activeId=${n} instanceOverride=${t.value??`null`}`),d&&s&&(p.value[l]={userData:s,lastConnectedAt:Date.now(),url:i.url},e.user={_id:s._id,username:s.username,role:s.role,firstLogin:s.firstLogin,avatar:s.avatar}),d){let e={url:i.url,mode:`direct-lan`,priority:0};W.info(`switch`,`seedAndRetry → ${e.url}`),await Promise.race([m.seedAndRetry({endpoint:e,tokens:d},n??`home`),new Promise((e,t)=>setTimeout(()=>t(Error(`switch_timeout`)),B))])}else{W.warn(`switch`,`no tokens — boot + route to login`),m.boot(n??`home`),e.user=null,r.push(`/`);return}if(o!==E){W.event(`switch`,`aborted after seedAndRetry — newer gen=${E}`);return}T.value++,W.info(`switch`,`DONE gen=${o} → /home`),r.push(`/home`)}catch(e){(e instanceof Error?e.message:String(e))===`switch_timeout`?(W.error(`switch`,`TIMEOUT after ${B}ms`),c.add({severity:`error`,detail:f(`instances.switch_timeout`,{name:S.value??``}),life:3e3})):(W.error(`switch`,`failed`,e),c.add({severity:`error`,detail:e,life:3e3}))}finally{o===E&&(g.value=!1,S.value=null)}}function le(e){let t=p.value[e];return t?.userData?.access_token?K(t.userData):null}function $(e){try{let t=new URL(e),n=new URL(window.location.origin),r=n.protocol===`https:`&&t.protocol===`http:`,i=U.has(t.hostname)&&!U.has(n.hostname);return r||i}catch{return!1}}function ue(e){return W.warn(`switch`,`target "${e}" requires URL handoff — asking user confirmation`),new Promise(t=>{let n=!1,r=e=>{n||(n=!0,t(e))};l.openTextDialog({data:{title:f(`instances.insecure_handoff_title`),confirmText:f(`instances.insecure_handoff_confirm`),contentText:f(`instances.insecure_handoff_message`,{name:e}),confirmButtonProps:{severity:`danger`}},onConfirm:()=>r(!0),onCancel:()=>r(!1)})})}async function de(e,t){let n={_reset:!0,_sourceUrl:window.location.origin,_instanceName:e.name};t&&Object.assign(n,t);let r=encodeURIComponent(btoa(JSON.stringify(n))),i=`${e.url.split(`#`)[0]}#auth=${r}`;W.info(`url-handoff`,`→ ${e.url} (with token=${t?`yes`:`no`})`),window.location.href=i}function fe(){p.value={},h.value=null,t.value=null,k.value=null,O.value=[],D.value=null,W.info(`reset`,`store cleared`)}return{instances:z,activeInstance:J,activeId:h,activeUrl:L,isHomeActive:A,isMultiInstance:X,isSwitching:d(g),switchTargetName:d(S),switchKey:d(T),serverHomeId:D,redirectInfo:k,serverInstances:O,instanceTokens:p,favoriteInstances:Y,isFavorite:Z,toggleFavorite:ne,fetchInstances:R,addInstance:re,removeInstance:ie,updateInstance:ae,switchInstance:ce,probeInstance:oe,reset:fe,saveCurrentTokens:Q,restoreActiveOverride:se}});export{D as a,A as i,z as n,R as r,J as t};
1
+ import{A as e,N as t,S as n,b as r,d as i,j as a,w as o}from"./api-CxmpI477.js";import{$n as s,$t as c,F as l,I as u,Qn as d,Xt as f,Yn as p,Yt as m,or as h,wn as g,z as _}from"./vendor-TwHhULaP.js";import{Di as v,Li as ee,O as y,V as b,kt as x}from"./vendor-cameraui-CUPAufpt.js";import{d as S,l as C}from"./vendor-core-Cmu2BAxm.js";import{t as te}from"./hasPermission-DjEBddex.js";import{t as w}from"./useCuiDialog-DOcwIZA3.js";var T={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function E(e,t){return g(),c(`svg`,T,[...t[0]||=[f(`path`,{fill:`currentColor`,d:`M20.916 9.564a1 1 0 0 0-.513-1.316L7.328 2.492c-.995-.438-2.22.051-2.645 1.042l-2.21 5.154a2 2 0 0 0 1.052 2.624L9.563 13.9L8.323 17H4v-3H2v8h2v-3h4.323c.823 0 1.552-.494 1.856-1.258l1.222-3.054l5.205 2.23a1 1 0 0 0 1.31-.517l.312-.71l1.701.68l2-5l-1.536-.613zm-4.434 5.126L4.313 9.475l2.208-5.152l12.162 5.354z`},null,-1)]])}var D=p({name:`bx-cctv`,render:E}),O={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function k(e,t){return g(),c(`svg`,O,[...t[0]||=[f(`path`,{fill:`currentColor`,d:`M20 3H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2m-5 5h-2V6h2zm4 0h-2V6h2zm1 5H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2m-5 5h-2v-2h2zm4 0h-2v-2h2z`},null,-1)]])}var A=p({name:`bxs-server`,render:k});async function j(t){return(await e.get(`/instances`,{signal:t})).data}async function M(t){return(await e.post(`/instances`,t)).data}async function N({id:t,data:n}){return(await e.put(`/instances/${t}`,n)).data}async function P(t){await e.delete(`/instances/${t}`)}async function F(t){return(await e.patch(`/instances/${t}/favorite`)).data}async function I(t){return(await e.post(`/instances/${t}/login`)).data}async function L(t,n){return(await e.get(`/instances/${t}/status`,{signal:n})).data}var R=class{_queryClient=_();toast=n();t=o.global.t;listQuery(){return r({queryKey:[`instances`],queryFn:({signal:e})=>j(e)})}statusQueries(e){return u({queries:m(()=>h(e).map(e=>({queryKey:[`instances`,e.id,`status`],queryFn:({signal:t})=>L(e.id,t),refetchInterval:15e3,retry:!1})))})}createMutation(){return l({mutationFn:M,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`instances`]}),this.toast.add({severity:`success`,detail:this.t(`views.settings.instances.added`),life:3e3})}})}updateMutation(){return l({mutationFn:N,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`instances`]}),this.toast.add({severity:`success`,detail:this.t(`views.settings.instances.updated`),life:3e3})}})}deleteMutation(){return l({mutationFn:async e=>{await P(e),await this._queryClient.cancelQueries({queryKey:[`instances`,e,`status`]}),this._queryClient.removeQueries({queryKey:[`instances`,e,`status`]})},onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`instances`]}),this.toast.add({severity:`success`,detail:this.t(`views.settings.instances.removed`),life:3e3})}})}toggleFavoriteMutation(){return l({mutationFn:F,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`instances`]})}})}loginMutation(){return l({mutationFn:I,onError:()=>{}})}};function z(e){let{prefix:t,enabled:n}=e;function r(e,r,i,a){if(!n)return;let o=new Date,s=`[${t} ${String(o.getHours()).padStart(2,`0`)}:${String(o.getMinutes()).padStart(2,`0`)}:${String(o.getSeconds()).padStart(2,`0`)}.${String(o.getMilliseconds()).padStart(3,`0`)}]`;a===void 0?console[e](s,`[${r}]`,i):console[e](s,`[${r}]`,i,a)}return{info:(e,t,n)=>r(`log`,e,t,n),event:(e,t,n)=>r(`log`,e,`[Event] ${t}`,n),warn:(e,t,n)=>r(`warn`,e,t,n),error:(e,t,n)=>r(`error`,e,t,n)}}var B=3e4,V=5e3,H=`__home__`,U=new Set([`localhost`,`127.0.0.1`,`::1`]),W=z({prefix:`Instances`,enabled:!0});async function G(e,t){try{let n=AbortSignal.timeout(V),r=t?AbortSignal.any([n,t]):n,i=await fetch(`${e}/api/health`,{signal:r});return W.event(`probe`,`${e} → ${i.ok?`OK`:`HTTP ${i.status}`}`),i.ok}catch(t){let n=t instanceof Error?t.message:String(t);return W.event(`probe`,`${e} → FAIL`,n),!1}}function K(e){return{access:e.access_token,accessExpiresAt:e.access_token_expires_at,refresh:e.refresh_token,refreshExpiresAt:e.refresh_token_expires_at}}function q(e,t){return{_id:t?._id??``,username:t?.username??``,email:t?.email,role:t?.role??``,firstLogin:t?.firstLogin,avatar:t?.avatar,access_token:e.access,refresh_token:e.refresh??``,token_type:`Bearer`,access_token_expires_at:e.accessExpiresAt??0,refresh_token_expires_at:e.refreshExpiresAt??0,internalAddresses:[],externalAddresses:[]}}var J=S(`instances`,()=>{let e=i(),r=C(),c=n(),l=w(),u=_(),{t:f}=o.global,p=v(`instanceTokens`,{}),h=v(`activeInstanceId`,null),g=s(!1),S=s(null),T=s(0),E=0,D=s(null),O=s([]),k=ee(`redirectInfo`,null,{serializer:{read:e=>e?JSON.parse(e):null,write:e=>JSON.stringify(e)}}),A=m(()=>h.value===null),L=m(()=>h.value===null?null:O.value.find(e=>e.id===h.value)?.url??null);async function R(){try{if(!te(void 0,`admin`))return;let e=await j();O.value=e.instances,D.value=e.homeId,W.info(`fetch`,`loaded ${e.instances.length} instances`,{homeId:e.homeId})}catch(e){W.warn(`fetch`,`failed`,e)}}let z=m(()=>{let e=D.value;return O.value.filter(t=>!(e&&t.remoteHomeId&&t.remoteHomeId===e)).map(e=>{let t=p.value[e.id];return{id:e.id,name:e.name,url:e.url,hasCredentials:!!e.credentials,favorite:e.favorite??!0,userData:t?.userData??null,lastConnectedAt:t?.lastConnectedAt??null,isHome:!1}})});function V(){let e=p.value[H],t=h.value===null?a().target.value?.endpoint.url??e?.url??window.location.origin:e?.url??window.location.origin;return{id:`home`,name:f(`navigation.home`),url:t,hasCredentials:!1,favorite:!1,userData:e?.userData??null,lastConnectedAt:e?.lastConnectedAt??null,isHome:!0}}let J=m(()=>{if(h.value!==null){let e=z.value.find(e=>e.id===h.value);if(e)return e}return V()}),Y=m(()=>z.value.filter(e=>e.favorite)),X=m(()=>Y.value.length>0||h.value!==null||k.value!==null);function Z(e){return O.value.find(t=>t.id===e)?.favorite??!0}async function ne(e){let{favorite:t}=await F(e),n=O.value.find(t=>t.id===e);n&&(n.favorite=t)}async function re(e){let t=await M(e);return O.value=[...O.value,t],t}async function ie(e){await P(e),O.value=O.value.filter(t=>t.id!==e),delete p.value[e]}async function ae(e,t){let n=await N({id:e,data:t}),r=O.value.findIndex(t=>t.id===e);r!==-1&&(O.value[r]=n)}async function oe(e,t){let n=O.value.find(t=>t.id===e);return n?G(n.url,t):!1}function Q(){let t=a().target.value;if(!t?.tokens.access){W.event(`save-tokens`,`skipped — no live access token`);return}let n=h.value??H;p.value[n]={userData:q(t.tokens,e.user??void 0),lastConnectedAt:Date.now(),url:t.endpoint.url},W.event(`save-tokens`,`slot=${n} url=${t.endpoint.url}`)}function se(){if(h.value===null){t.value=null,W.event(`restore-override`,`no active instance — home target`);return}let e=p.value[h.value],n=e?.url??e?.userData?.internalAddresses?.[0]??e?.userData?.externalAddresses?.[0]??null;t.value=n,W.event(`restore-override`,`activeId=${h.value} → ${n??`no cached url`}`)}async function ce(n){if(g.value){W.warn(`switch`,`ignored — another switch is already in progress`);return}let i=n===null?V():z.value.find(e=>e.id===n)??V();if(n!==null&&$(i.url)&&!await ue(i.name)){W.info(`switch`,`URL handoff declined by user`);return}let o=++E;g.value=!0,S.value=i.name,W.info(`switch`,`START targetId=${n??`home`} gen=${o}`),W.info(`switch`,`target resolved — name="${i.name}" url=${i.url} hasCreds=${i.hasCredentials}`);try{if(n!==null){let e=await G(i.url);if(o!==E){W.event(`switch`,`aborted after probe — newer gen=${E}`);return}if(!e){W.warn(`switch`,`target unreachable — ${i.url}`),c.add({severity:`warn`,detail:f(`instances.unreachable`,{name:i.name}),life:3e3});return}}let s=null;if(n!==null&&i.hasCredentials)try{s=await I(n),W.event(`switch`,`backend relay login OK`)}catch(e){W.warn(`switch`,`backend relay login FAILED — will try cached tokens`,e)}if(o!==E){W.event(`switch`,`aborted after relay-login — newer gen=${E}`);return}Q();let l=n??H,d=s?K(s):le(l);if(W.event(`switch`,`tokens source: ${s?`fresh`:d?`cached`:`none`} (slot=${l})`),n!==null&&$(i.url)){W.info(`switch`,`URL handoff required — leaving SPA`),await de(i,s);return}let m=a();if(m.reset(),W.event(`switch`,`kernel RESET`),x(),y(),b(),u.clear(),W.event(`switch`,`vue-query cleared`),h.value=n,t.value=n===null?null:i.url,W.event(`switch`,`activeId=${n} instanceOverride=${t.value??`null`}`),d&&s&&(p.value[l]={userData:s,lastConnectedAt:Date.now(),url:i.url},e.user={_id:s._id,username:s.username,role:s.role,firstLogin:s.firstLogin,avatar:s.avatar}),d){let e={url:i.url,mode:`direct-lan`,priority:0};W.info(`switch`,`seedAndRetry → ${e.url}`),await Promise.race([m.seedAndRetry({endpoint:e,tokens:d},n??`home`),new Promise((e,t)=>setTimeout(()=>t(Error(`switch_timeout`)),B))])}else{W.warn(`switch`,`no tokens — boot + route to login`),m.boot(n??`home`),e.user=null,r.push(`/`);return}if(o!==E){W.event(`switch`,`aborted after seedAndRetry — newer gen=${E}`);return}T.value++,W.info(`switch`,`DONE gen=${o} → /home`),r.push(`/home`)}catch(e){(e instanceof Error?e.message:String(e))===`switch_timeout`?(W.error(`switch`,`TIMEOUT after ${B}ms`),c.add({severity:`error`,detail:f(`instances.switch_timeout`,{name:S.value??``}),life:3e3})):(W.error(`switch`,`failed`,e),c.add({severity:`error`,detail:e,life:3e3}))}finally{o===E&&(g.value=!1,S.value=null)}}function le(e){let t=p.value[e];return t?.userData?.access_token?K(t.userData):null}function $(e){try{let t=new URL(e),n=new URL(window.location.origin),r=n.protocol===`https:`&&t.protocol===`http:`,i=U.has(t.hostname)&&!U.has(n.hostname);return r||i}catch{return!1}}function ue(e){return W.warn(`switch`,`target "${e}" requires URL handoff — asking user confirmation`),new Promise(t=>{let n=!1,r=e=>{n||(n=!0,t(e))};l.openTextDialog({data:{title:f(`instances.insecure_handoff_title`),confirmText:f(`instances.insecure_handoff_confirm`),contentText:f(`instances.insecure_handoff_message`,{name:e}),confirmButtonProps:{severity:`danger`}},onConfirm:()=>r(!0),onCancel:()=>r(!1)})})}async function de(e,t){let n={_reset:!0,_sourceUrl:window.location.origin,_instanceName:e.name};t&&Object.assign(n,t);let r=encodeURIComponent(btoa(JSON.stringify(n))),i=`${e.url.split(`#`)[0]}#auth=${r}`;W.info(`url-handoff`,`→ ${e.url} (with token=${t?`yes`:`no`})`),window.location.href=i}function fe(){p.value={},h.value=null,t.value=null,k.value=null,O.value=[],D.value=null,W.info(`reset`,`store cleared`)}return{instances:z,activeInstance:J,activeId:h,activeUrl:L,isHomeActive:A,isMultiInstance:X,isSwitching:d(g),switchTargetName:d(S),switchKey:d(T),serverHomeId:D,redirectInfo:k,serverInstances:O,instanceTokens:p,favoriteInstances:Y,isFavorite:Z,toggleFavorite:ne,fetchInstances:R,addInstance:re,removeInstance:ie,updateInstance:ae,switchInstance:ce,probeInstance:oe,reset:fe,saveCurrentTokens:Q,restoreActiveOverride:se}});export{D as a,A as i,z as n,R as r,J as t};
@@ -1 +1 @@
1
- import{C as e,w as t}from"./api-DjhIYzsF.js";import{$n as n,Rn as r,_ as i,v as a}from"./vendor-TwHhULaP.js";import{Di as o}from"./vendor-cameraui-CeENiq5U.js";import{d as s}from"./vendor-core-D8xC2dee.js";import{t as c}from"./useElectron-mh8HQUAI.js";import{b as l}from"./vendor-primevue-D-xm-xIu.js";var u={de:a,en:i},d=s(`locale`,()=>{let i=o(`locale`,`en`),a=n(e),s=l(),{electron:d}=c(),f=t.global;function p(e){d?.send(`change-language`,e),f.locale.value=e}async function m(e){let t=u[e];t&&(s.config.locale=t)}return r(i,e=>{p(e),m(e)}),p(i.value),m(i.value),{languages:a,locale:i,setI18Nlocale:p,setPrimeVueLocale:m}});export{d as t};
1
+ import{C as e,w as t}from"./api-CxmpI477.js";import{$n as n,Rn as r,_ as i,v as a}from"./vendor-TwHhULaP.js";import{Di as o}from"./vendor-cameraui-CUPAufpt.js";import{d as s}from"./vendor-core-Cmu2BAxm.js";import{t as c}from"./useElectron-mh8HQUAI.js";import{b as l}from"./vendor-primevue-Bs3kBqxF.js";var u={de:a,en:i},d=s(`locale`,()=>{let i=o(`locale`,`en`),a=n(e),s=l(),{electron:d}=c(),f=t.global;function p(e){d?.send(`change-language`,e),f.locale.value=e}async function m(e){let t=u[e];t&&(s.config.locale=t)}return r(i,e=>{p(e),m(e)}),p(i.value),m(i.value),{languages:a,locale:i,setI18Nlocale:p,setPrimeVueLocale:m}});export{d as t};