@camera.ui/server 2.0.23 → 2.1.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 (296) hide show
  1. package/dist/interface/assets/{404-junY0N5P.js → 404-mKz7xfYl.js} +1 -1
  2. package/dist/interface/assets/{About-Dwc0TTLa.js → About-C3mKJiWW.js} +1 -1
  3. package/dist/interface/assets/Adminpanel-KkWHp8Mh.js +1 -0
  4. package/dist/interface/assets/{Automation-Dj6xmGae.js → Automation-BdSjkwoL.js} +3 -3
  5. package/dist/interface/assets/{AutomationImport-Ccnxyslc.js → AutomationImport-DEp2P3xa.js} +2 -2
  6. package/dist/interface/assets/AutomationStore-4NQAyOXd.js +2 -0
  7. package/dist/interface/assets/{AutomationStoreDetail-DcbvD8g5.js → AutomationStoreDetail-D8NZLRu9.js} +2 -2
  8. package/dist/interface/assets/Automations-D7kh-T-O.js +2 -0
  9. package/dist/interface/assets/{Camera-D_j0J3kB.js → Camera-DsvE1bWd.js} +2 -2
  10. package/dist/interface/assets/{CameraConsole--hGg9Ye6.js → CameraConsole-Bj9mszzp.js} +1 -1
  11. package/dist/interface/assets/{Cameras-B2Tizr4Q.js → Cameras-BVFxn9Ef.js} +2 -2
  12. package/dist/interface/assets/Camview-BXDwJtBf.js +1 -0
  13. package/dist/interface/assets/{Camview-Cj10uxGy.css → Camview-DEURwPYt.css} +1 -1
  14. package/dist/interface/assets/{Config-Dn_s2M7r.js → Config-CJgmsr2e.js} +1 -1
  15. package/dist/interface/assets/{ConfigActionCameraControl-DQEYHVN5.js → ConfigActionCameraControl-B80iDDds.js} +1 -1
  16. package/dist/interface/assets/{ConfigActionDelay-C0mbjCCj.js → ConfigActionDelay-ChhenlQV.js} +1 -1
  17. package/dist/interface/assets/{ConfigActionHttp-Bf58WHcw.js → ConfigActionHttp-09PkDYgp.js} +1 -1
  18. package/dist/interface/assets/{ConfigActionImageInput-CDXVFrOz.js → ConfigActionImageInput-FDMVc5FH.js} +1 -1
  19. package/dist/interface/assets/{ConfigActionMqtt-lH7MQqWr.js → ConfigActionMqtt-4gLcAM0C.js} +1 -1
  20. package/dist/interface/assets/{ConfigActionNotification-CAkr6NJX.js → ConfigActionNotification-DmIQhrC2.js} +1 -1
  21. package/dist/interface/assets/{ConfigActionNotificationControl-CiL-4Ytw.js → ConfigActionNotificationControl-Df4BdM3c.js} +1 -1
  22. package/dist/interface/assets/{ConfigActionOutput-ILAxBT-r.js → ConfigActionOutput-CNKeWFvE.js} +1 -1
  23. package/dist/interface/assets/{ConfigActionPlugin-B2d4mZiK.js → ConfigActionPlugin-CWfEabyz.js} +1 -1
  24. package/dist/interface/assets/{ConfigActionSensor-BxMdsmRa.js → ConfigActionSensor-pv3k-l2v.js} +1 -1
  25. package/dist/interface/assets/{ConfigActionSnapshot-CXVQBSzv.js → ConfigActionSnapshot-CM8xar0h.js} +1 -1
  26. package/dist/interface/assets/{ConfigActionVariable-CABnlnMv.js → ConfigActionVariable-B8tiVULt.js} +1 -1
  27. package/dist/interface/assets/{ConfigConditionIfElse-Cxu7TSdJ.js → ConfigConditionIfElse-CtF5exKE.js} +1 -1
  28. package/dist/interface/assets/{ConfigConditionSensorState-rB7I04Gb.js → ConfigConditionSensorState-B4hRgQdg.js} +1 -1
  29. package/dist/interface/assets/{ConfigConditionSwitch-CU0hLo1h.js → ConfigConditionSwitch-ZhpDw8ZY.js} +1 -1
  30. package/dist/interface/assets/{ConfigConditionTime-DfeEvxIU.js → ConfigConditionTime-EF84vg1f.js} +1 -1
  31. package/dist/interface/assets/ConfigSensorValueInput-DNxw4rt3.js +1 -0
  32. package/dist/interface/assets/{ConfigTriggerDetection-DFJpuWrs.js → ConfigTriggerDetection-BmxUG87T.js} +1 -1
  33. package/dist/interface/assets/{ConfigTriggerGeofence-CZwesOD8.js → ConfigTriggerGeofence-CDbA6_Wv.js} +1 -1
  34. package/dist/interface/assets/{ConfigTriggerManual-aibwYUtf.js → ConfigTriggerManual-t-J-HbqF.js} +1 -1
  35. package/dist/interface/assets/{ConfigTriggerMqtt-CUNgifGb.js → ConfigTriggerMqtt-BD1iizF-.js} +1 -1
  36. package/dist/interface/assets/{ConfigTriggerSchedule-8Y_OBcB1.js → ConfigTriggerSchedule-CBPaopJK.js} +1 -1
  37. package/dist/interface/assets/{ConfigTriggerSensor-Bu-YtGnX.js → ConfigTriggerSensor-CXmxhiPM.js} +1 -1
  38. package/dist/interface/assets/{ConfigTriggerSystem-CXNvmC4S.js → ConfigTriggerSystem-CfFnKyIn.js} +1 -1
  39. package/dist/interface/assets/{ConfigTriggerWebhook-CkZ-_ABi.js → ConfigTriggerWebhook-gqcxnQdl.js} +1 -1
  40. package/dist/interface/assets/Console-CPcfNsup.js +1 -0
  41. package/dist/interface/assets/{CuiAutomationRunsDialog-Ux0g-E3w.js → CuiAutomationRunsDialog-Bx3LtjMJ.js} +1 -1
  42. package/dist/interface/assets/{CuiBottomSheet-C-ZN_uXE.js → CuiBottomSheet-BcDAO9At.js} +1 -1
  43. package/dist/interface/assets/CuiBottomSheet-Qt8m2uSx.js +1 -0
  44. package/dist/interface/assets/{CuiCameraPipCard-B-B6Ppsd.js → CuiCameraPipCard-C7822oZM.js} +1 -1
  45. package/dist/interface/assets/{CuiCameraRecordings-DqVdR9uS.js → CuiCameraRecordings-DJG6J1nY.js} +1 -1
  46. package/dist/interface/assets/{CuiCameraShares-DstoVjf9.js → CuiCameraShares-C3SATbiV.js} +1 -1
  47. package/dist/interface/assets/CuiCameraTable-BdXITi6O.js +2 -0
  48. package/dist/interface/assets/CuiDataTable-BGleWv6B.css +1 -0
  49. package/dist/interface/assets/CuiDataTable-DdNoneMB.js +1 -0
  50. package/dist/interface/assets/{CuiLightControl-B_JIzm9t.js → CuiLightControl-bH7WQXAY.js} +1 -1
  51. package/dist/interface/assets/CuiPluginCard-B50TjvIq.js +2 -0
  52. package/dist/interface/assets/{CuiPluginCard-C9zsmIaC.css → CuiPluginCard-D_6UFFZW.css} +1 -1
  53. package/dist/interface/assets/{CuiPluginCategoryChip-C2Y8x73q.js → CuiPluginCategoryChip-C9l5I9v3.js} +1 -1
  54. package/dist/interface/assets/{CuiPluginOAuthButton-CCzRlZP6.js → CuiPluginOAuthButton-Aanenlqx.js} +2 -2
  55. package/dist/interface/assets/{CuiPluginTrustBadge-C8qBdLCg.js → CuiPluginTrustBadge-BkdNlrZ7.js} +1 -1
  56. package/dist/interface/assets/{CuiQRCode-D52Fcu61.js → CuiQRCode-D8CKX4s9.js} +1 -1
  57. package/dist/interface/assets/{CuiRecordingsGrid-CfuihmlY.js → CuiRecordingsGrid-D9IF3B-S.js} +1 -1
  58. package/dist/interface/assets/{CuiSchema-DTIuxROi.js → CuiSchema-B8J8G314.js} +1 -1
  59. package/dist/interface/assets/{CuiTopNavbarItem-CoTQmfY7.js → CuiTopNavbarItem-C-ZiLXkp.js} +1 -1
  60. package/dist/interface/assets/{Faces-EtBPS1Ve.js → Faces-B8d8W6cq.js} +1 -1
  61. package/dist/interface/assets/{FirstSteps-CC0BPH40.js → FirstSteps-DWB8ZhqT.js} +1 -1
  62. package/dist/interface/assets/{Instances-dSYERqIc.js → Instances-DCE3ixbf.js} +1 -1
  63. package/dist/interface/assets/{Logs-B8d6dEt7.js → Logs-DJL3FHsG.js} +2 -2
  64. package/dist/interface/assets/Menu-CvpQ9fHV.js +1 -0
  65. package/dist/interface/assets/{OAuthDeviceFlow-YhwV_FSL.js → OAuthDeviceFlow-9kYvqgyg.js} +1 -1
  66. package/dist/interface/assets/{Plugin-Brb6wfq-.js → Plugin-HIED8ziU.js} +1 -1
  67. package/dist/interface/assets/{PluginConsole-CfyZQVq5.js → PluginConsole-DUnPciNz.js} +1 -1
  68. package/dist/interface/assets/{PluginDetail-DVRnnauk.js → PluginDetail-Ba9VDO53.js} +2 -2
  69. package/dist/interface/assets/{PluginSchema-i6UJfMnh.js → PluginSchema-CQARvB5H.js} +1 -1
  70. package/dist/interface/assets/PluginSearch-B3y83uDW.js +2 -0
  71. package/dist/interface/assets/PluginSearch-BKVIwJVF.js +1 -0
  72. package/dist/interface/assets/{PluginSearch-Bbp8D7BJ.css → PluginSearch-CLjLT9JT.css} +1 -1
  73. package/dist/interface/assets/{Plugins-CukJohcb.js → Plugins-mdsFKDQ8.js} +1 -1
  74. package/dist/interface/assets/Recordings-GVzdhE19.js +1 -0
  75. package/dist/interface/assets/{SensorEdit-BJAijbmc.js → SensorEdit-COOOaB-l.js} +1 -1
  76. package/dist/interface/assets/{SensorHistory-DW00ZuHR.js → SensorHistory-oWCb8Kia.js} +1 -1
  77. package/dist/interface/assets/Sensors-De6n66ER.js +2 -0
  78. package/dist/interface/assets/Sensors-DfE07b1Q.css +1 -0
  79. package/dist/interface/assets/{Settings-DHT8KXi2.js → Settings-BipPaBUB.js} +1 -1
  80. package/dist/interface/assets/{SettingsAccount-DOd4JeGd.js → SettingsAccount-809sRaa9.js} +1 -1
  81. package/dist/interface/assets/SettingsAccount-Bmteep-6.js +1 -0
  82. package/dist/interface/assets/SettingsAppearance-CJWlk9_1.js +1 -0
  83. package/dist/interface/assets/{SettingsAppearance-11UFhRDY.js → SettingsAppearance-Cobtww9z.js} +1 -1
  84. package/dist/interface/assets/{SettingsBackup-CBBZV_nU.js → SettingsBackup-Bbp3fEuS.js} +1 -1
  85. package/dist/interface/assets/SettingsList-DFJifGkE.js +1 -0
  86. package/dist/interface/assets/{SettingsMqtt-BglQ_GeN.js → SettingsMqtt-pH6KmHhv.js} +1 -1
  87. package/dist/interface/assets/{SettingsNotifications-96czeGDD.js → SettingsNotifications-Dt_gxxoj.js} +1 -1
  88. package/dist/interface/assets/{SettingsPermissions-CU4OVllA.js → SettingsPermissions-CDpVmRY2.js} +1 -1
  89. package/dist/interface/assets/{SettingsRecordings-BrnU9hrb.js → SettingsRecordings-1i4sNZ8u.js} +1 -1
  90. package/dist/interface/assets/SettingsRemote-HDCH_D5s.js +1 -0
  91. package/dist/interface/assets/SettingsSystem-jDQ9m8jt.js +2 -0
  92. package/dist/interface/assets/{SettingsUsers-CoYyAxxn.js → SettingsUsers-CFzURSfg.js} +1 -1
  93. package/dist/interface/assets/{Terminal-DMAHgufw.js → Terminal-DSRLOAKR.js} +1 -1
  94. package/dist/interface/assets/{VariableInput-BzWLKBgd.js → VariableInput-rbKenccv.js} +1 -1
  95. package/dist/interface/assets/{VariableSuggestions-BdxcP_dn.js → VariableSuggestions-DDyxhww6.js} +1 -1
  96. package/dist/interface/assets/{VersionsHandler-Dvy5Lv-E.js → VersionsHandler-CBAnjOWO.js} +2 -2
  97. package/dist/interface/assets/{VirtualSensorCreate-BXz0lWNm.js → VirtualSensorCreate-_9QdFeEj.js} +1 -1
  98. package/dist/interface/assets/Workers-DQZ0QoEN.js +2 -0
  99. package/dist/interface/assets/{Workers-CzAz4N2_.css → Workers-DmZkFylb.css} +1 -1
  100. package/dist/interface/assets/{api-DmxTF6VE.js → api-BijLH5JF.js} +1 -1
  101. package/dist/interface/assets/api-CwjboJ6S.css +2 -0
  102. package/dist/interface/assets/api-DpZpuR8_.js +2 -0
  103. package/dist/interface/assets/{auth-DwSrX8QL.js → auth-CSrkzvBq.js} +1 -1
  104. package/dist/interface/assets/{automations-yVPQAmFo.js → automations-5YkU18M0.js} +1 -1
  105. package/dist/interface/assets/{cameras.schema-JAiaenSf.js → cameras.schema-BQ3CdtV5.js} +1 -1
  106. package/dist/interface/assets/chevron-right-B3j6hI1Q.js +1 -0
  107. package/dist/interface/assets/cloudHandoff-D8flqTzb.js +1 -0
  108. package/dist/interface/assets/{config-BE0DnCXx.js → config-BqiDMRVk.js} +1 -1
  109. package/dist/interface/assets/deployed-code-update-CHr3gyW9.js +1 -0
  110. package/dist/interface/assets/{flowSchema-BQp77LdP.js → flowSchema-C6FlHoK2.js} +1 -1
  111. package/dist/interface/assets/main-Csclhnoq.js +3 -0
  112. package/dist/interface/assets/{mqtt-D_shY0Ks.js → mqtt-DklPP2x5.js} +1 -1
  113. package/dist/interface/assets/{notifications-BuSNpaOJ.js → notifications-DCAiomoR.js} +1 -1
  114. package/dist/interface/assets/{plugins-7pWXkYgo.js → plugins-D4am8tba.js} +1 -1
  115. package/dist/interface/assets/round-restart-alt-CdweDM5-.js +1 -0
  116. package/dist/interface/assets/round-restart-alt-D3sTGG7n.css +1 -0
  117. package/dist/interface/assets/sensors-D1OCrbIC.js +1 -0
  118. package/dist/interface/assets/{server-Bv5NVJ0G.js → server-CUfmbg3m.js} +1 -1
  119. package/dist/interface/assets/{theme-DsxRUmCC.js → theme-ClwavgWz.js} +1 -1
  120. package/dist/interface/assets/{types-BazOcNe_.js → types-B25Yynej.js} +1 -1
  121. package/dist/interface/assets/types-D9YcubIy.js +1 -0
  122. package/dist/interface/assets/{useAppVersion-oPpW7jcN.js → useAppVersion-Cp7Ehmiv.js} +1 -1
  123. package/dist/interface/assets/{useBackupRestore-b0Niqql7.js → useBackupRestore-CL04IH-G.js} +1 -1
  124. package/dist/interface/assets/{useCameraOptions-uf9Kog6z.js → useCameraOptions-DFe9A6XU.js} +1 -1
  125. package/dist/interface/assets/{useElectron-Dg8tFzam.js → useElectron-KnqvZz0q.js} +1 -1
  126. package/dist/interface/assets/{useLogsSocket-9jJ-oJIm.js → useLogsSocket-BxI3NbRJ.js} +1 -1
  127. package/dist/interface/assets/{usePermissions-xL0VlbyD.js → usePermissions-C3D3JcPH.js} +1 -1
  128. package/dist/interface/assets/{useServerRestart-3AZOTz7i.js → useServerRestart-Ck0mdqmf.js} +1 -1
  129. package/dist/interface/assets/{useStreamStatus-Dg-Djura.js → useStreamStatus-C4AA8JUq.js} +1 -1
  130. package/dist/interface/assets/{useUserOptions-BQnM3gdi.js → useUserOptions-BpEZlRAL.js} +1 -1
  131. package/dist/interface/assets/{vendor-cameraui-BqkrW4Bb.js → vendor-cameraui-Cgb5z6NJ.js} +1 -1
  132. package/dist/interface/assets/{vendor-core-BQegq2Q6.js → vendor-core-BJsSXMFQ.js} +1 -1
  133. package/dist/interface/assets/{vendor-primevue-DYzLjOFZ.js → vendor-primevue-JQ8abUl5.js} +2 -2
  134. package/dist/interface/index.html +23 -22
  135. package/dist/interface/sw.js +1 -1
  136. package/dist/server/package.json +3 -3
  137. package/dist/server/requirements.txt +2 -2
  138. package/dist/server/src/_camera_ui_tools/camera_ui_rpc/client.py +3 -0
  139. package/dist/server/src/_camera_ui_tools/camera_ui_rpc/types.py +3 -0
  140. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/base.py +14 -28
  141. package/dist/server/src/api/controllers/cameras.controller.d.ts +1 -10
  142. package/dist/server/src/api/controllers/cameras.controller.js +0 -99
  143. package/dist/server/src/api/controllers/cameras.controller.js.map +1 -1
  144. package/dist/server/src/api/controllers/plugins.controller.js +30 -4
  145. package/dist/server/src/api/controllers/plugins.controller.js.map +1 -1
  146. package/dist/server/src/api/controllers/workers.controller.d.ts +2 -1
  147. package/dist/server/src/api/controllers/workers.controller.js +9 -0
  148. package/dist/server/src/api/controllers/workers.controller.js.map +1 -1
  149. package/dist/server/src/api/database/index.d.ts +0 -1
  150. package/dist/server/src/api/database/index.js +1 -1
  151. package/dist/server/src/api/database/index.js.map +1 -1
  152. package/dist/server/src/api/database/record-schemas.js +1 -1
  153. package/dist/server/src/api/database/record-schemas.js.map +1 -1
  154. package/dist/server/src/api/database/types.d.ts +0 -1
  155. package/dist/server/src/api/index.js +1 -1
  156. package/dist/server/src/api/routes/cameras.routes.js +1 -42
  157. package/dist/server/src/api/routes/cameras.routes.js.map +1 -1
  158. package/dist/server/src/api/routes/workers.routes.js +11 -0
  159. package/dist/server/src/api/routes/workers.routes.js.map +1 -1
  160. package/dist/server/src/api/schemas/cameras.schema.d.ts +32 -18
  161. package/dist/server/src/api/schemas/cameras.schema.js +4 -11
  162. package/dist/server/src/api/schemas/cameras.schema.js.map +1 -1
  163. package/dist/server/src/api/services/cameras.service.d.ts +1 -0
  164. package/dist/server/src/api/services/cameras.service.js +23 -0
  165. package/dist/server/src/api/services/cameras.service.js.map +1 -1
  166. package/dist/server/src/api/services/plugins.service.d.ts +1 -0
  167. package/dist/server/src/api/services/plugins.service.js +18 -0
  168. package/dist/server/src/api/services/plugins.service.js.map +1 -1
  169. package/dist/server/src/api/services/sensors.service.d.ts +1 -0
  170. package/dist/server/src/api/services/sensors.service.js +1 -0
  171. package/dist/server/src/api/services/sensors.service.js.map +1 -1
  172. package/dist/server/src/api/services/server.service.d.ts +2 -0
  173. package/dist/server/src/api/services/server.service.js +16 -2
  174. package/dist/server/src/api/services/server.service.js.map +1 -1
  175. package/dist/server/src/api/types/index.d.ts +33 -15
  176. package/dist/server/src/api/websocket/nsp/events.js +0 -3
  177. package/dist/server/src/api/websocket/nsp/events.js.map +1 -1
  178. package/dist/server/src/camera/controller.d.ts +0 -3
  179. package/dist/server/src/camera/controller.js +0 -18
  180. package/dist/server/src/camera/controller.js.map +1 -1
  181. package/dist/server/src/camera/decoder/worker.js +2 -2
  182. package/dist/server/src/camera/decoder/worker.js.map +1 -1
  183. package/dist/server/src/camera/sensors/controller.d.ts +1 -10
  184. package/dist/server/src/camera/sensors/controller.js +2 -59
  185. package/dist/server/src/camera/sensors/controller.js.map +1 -1
  186. package/dist/server/src/main.js +2 -97
  187. package/dist/server/src/main.js.map +1 -1
  188. package/dist/server/src/manager/types.d.ts +1 -0
  189. package/dist/server/src/manager/types.js +2 -0
  190. package/dist/server/src/manager/types.js.map +1 -1
  191. package/dist/server/src/mqtt/bridge.d.ts +0 -5
  192. package/dist/server/src/mqtt/bridge.js +2 -5
  193. package/dist/server/src/mqtt/bridge.js.map +1 -1
  194. package/dist/server/src/plugins/plugin.js +3 -1
  195. package/dist/server/src/plugins/plugin.js.map +1 -1
  196. package/dist/server/src/plugins/runtime/base.d.ts +1 -0
  197. package/dist/server/src/plugins/runtime/base.js +19 -0
  198. package/dist/server/src/plugins/runtime/base.js.map +1 -1
  199. package/dist/server/src/plugins/runtime/go/index.js +1 -1
  200. package/dist/server/src/plugins/runtime/go/index.js.map +1 -1
  201. package/dist/server/src/plugins/runtime/node/child.d.ts +1 -0
  202. package/dist/server/src/plugins/runtime/node/child.js +5 -2
  203. package/dist/server/src/plugins/runtime/node/child.js.map +1 -1
  204. package/dist/server/src/plugins/runtime/node/index.d.ts +0 -1
  205. package/dist/server/src/plugins/runtime/node/index.js +1 -20
  206. package/dist/server/src/plugins/runtime/node/index.js.map +1 -1
  207. package/dist/server/src/plugins/runtime/node/proxy/cameraDevice.js +0 -5
  208. package/dist/server/src/plugins/runtime/node/proxy/cameraDevice.js.map +1 -1
  209. package/dist/server/src/plugins/runtime/node/proxy/deviceManager.js +7 -5
  210. package/dist/server/src/plugins/runtime/node/proxy/deviceManager.js.map +1 -1
  211. package/dist/server/src/plugins/runtime/node/proxy/sensorManager.js +0 -5
  212. package/dist/server/src/plugins/runtime/node/proxy/sensorManager.js.map +1 -1
  213. package/dist/server/src/plugins/runtime/node/storage.js +8 -5
  214. package/dist/server/src/plugins/runtime/node/storage.js.map +1 -1
  215. package/dist/server/src/plugins/runtime/node/storageController.d.ts +1 -3
  216. package/dist/server/src/plugins/runtime/node/storageController.js +7 -24
  217. package/dist/server/src/plugins/runtime/node/storageController.js.map +1 -1
  218. package/dist/server/src/plugins/runtime/python/child.py +62 -5
  219. package/dist/server/src/plugins/runtime/python/index.js +3 -0
  220. package/dist/server/src/plugins/runtime/python/index.js.map +1 -1
  221. package/dist/server/src/plugins/runtime/python/proxy/camera_device.py +0 -7
  222. package/dist/server/src/plugins/runtime/python/proxy/device_manager.py +8 -5
  223. package/dist/server/src/plugins/runtime/python/proxy/sensor_manager.py +0 -7
  224. package/dist/server/src/plugins/runtime/python/storage.py +11 -6
  225. package/dist/server/src/plugins/runtime/python/storage_controller.py +6 -37
  226. package/dist/server/src/plugins/types.d.ts +3 -1
  227. package/dist/server/src/plugins/types.js +2 -0
  228. package/dist/server/src/plugins/types.js.map +1 -1
  229. package/dist/server/src/plugins/worker.d.ts +1 -0
  230. package/dist/server/src/plugins/worker.js +42 -3
  231. package/dist/server/src/plugins/worker.js.map +1 -1
  232. package/dist/server/src/rpc/interfaces/device.d.ts +0 -3
  233. package/dist/server/src/rpc/namespaces.d.ts +0 -7
  234. package/dist/server/src/rpc/namespaces.js +0 -7
  235. package/dist/server/src/rpc/namespaces.js.map +1 -1
  236. package/dist/server/src/rpc/server.js +10 -13
  237. package/dist/server/src/rpc/server.js.map +1 -1
  238. package/dist/server/src/sensors/registry.js +7 -1
  239. package/dist/server/src/sensors/registry.js.map +1 -1
  240. package/dist/server/src/utils/engines.d.ts +3 -1
  241. package/dist/server/src/utils/engines.js +11 -0
  242. package/dist/server/src/utils/engines.js.map +1 -1
  243. package/dist/server/src/utils/ipc.d.ts +2 -0
  244. package/dist/server/src/utils/ipc.js +104 -0
  245. package/dist/server/src/utils/ipc.js.map +1 -1
  246. package/dist/server/src/utils/npm/index.d.ts +6 -1
  247. package/dist/server/src/utils/npm/index.js +3 -0
  248. package/dist/server/src/utils/npm/index.js.map +1 -1
  249. package/dist/server/src/utils/plugin-registry/index.d.ts +1 -0
  250. package/dist/server/src/utils/plugin-registry/index.js.map +1 -1
  251. package/dist/server/src/utils/pythonInstaller.d.ts +1 -0
  252. package/dist/server/src/utils/pythonInstaller.js +14 -0
  253. package/dist/server/src/utils/pythonInstaller.js.map +1 -1
  254. package/dist/server/src/workers/agent.d.ts +5 -0
  255. package/dist/server/src/workers/agent.js +49 -1
  256. package/dist/server/src/workers/agent.js.map +1 -1
  257. package/dist/server/src/workers/capabilities/plugin-host.js +8 -0
  258. package/dist/server/src/workers/capabilities/plugin-host.js.map +1 -1
  259. package/dist/server/src/workers/manager.d.ts +1 -0
  260. package/dist/server/src/workers/manager.js +20 -0
  261. package/dist/server/src/workers/manager.js.map +1 -1
  262. package/dist/server/src/workers/types.d.ts +8 -0
  263. package/package.json +3 -3
  264. package/dist/interface/assets/Adminpanel-wZGtsPD-.js +0 -1
  265. package/dist/interface/assets/AutomationStore-DmbxA0ml.js +0 -2
  266. package/dist/interface/assets/Automations-C9JJO6dy.js +0 -2
  267. package/dist/interface/assets/Camview-Bh2UCnGC.js +0 -1
  268. package/dist/interface/assets/ConfigSensorValueInput-wXiyU3Sc.js +0 -1
  269. package/dist/interface/assets/Console-CG8eRDA4.js +0 -1
  270. package/dist/interface/assets/CuiBottomSheet-RUyuBxJZ.js +0 -1
  271. package/dist/interface/assets/CuiCameraTable-BHaCRB65.js +0 -2
  272. package/dist/interface/assets/CuiDataTable-CTT9IFeR.js +0 -1
  273. package/dist/interface/assets/CuiDataTable-W68cyoLf.css +0 -1
  274. package/dist/interface/assets/CuiList-CDed3qXV.js +0 -1
  275. package/dist/interface/assets/CuiPluginCard-7aXQznrX.js +0 -2
  276. package/dist/interface/assets/Menu-CejIVz_7.js +0 -1
  277. package/dist/interface/assets/PluginSearch-C1YL9q00.js +0 -1
  278. package/dist/interface/assets/PluginSearch-PDx47aUx.js +0 -2
  279. package/dist/interface/assets/Recordings-m6jxYvRI.js +0 -1
  280. package/dist/interface/assets/Sensors-BA9P_Ray.css +0 -1
  281. package/dist/interface/assets/Sensors-Lfafn19i.js +0 -2
  282. package/dist/interface/assets/SettingsAccount-vrwV9rtP.js +0 -1
  283. package/dist/interface/assets/SettingsAppearance-BaDwC_h_.js +0 -1
  284. package/dist/interface/assets/SettingsList-Dx9DHGq9.js +0 -1
  285. package/dist/interface/assets/SettingsRemote-CwJw_9HX.js +0 -1
  286. package/dist/interface/assets/SettingsSystem-B3nne5fS.js +0 -2
  287. package/dist/interface/assets/Workers-DqeKkdpa.js +0 -2
  288. package/dist/interface/assets/api-3va2gyB0.css +0 -2
  289. package/dist/interface/assets/api-milc5VEE.js +0 -2
  290. package/dist/interface/assets/chevron-right-B4vB0gm4.js +0 -1
  291. package/dist/interface/assets/cloudHandoff-QtPEpiS4.js +0 -1
  292. package/dist/interface/assets/main-CqhwDjRG.js +0 -3
  293. package/dist/interface/assets/round-restart-alt-BhSxsPhN.css +0 -1
  294. package/dist/interface/assets/round-restart-alt-DKWwojYm.js +0 -1
  295. package/dist/interface/assets/sensors-CLQG1mQt.js +0 -1
  296. package/dist/interface/assets/types-CoXm85So.js +0 -1
@@ -1 +0,0 @@
1
- import{C as e,Dr as t,E as n,Lr as r,O as i,Ot as a,Pt as o,S as s,Si as c,_ as l,_i as u,_t as d,a as f,fr as p,i as m,kr as h,l as g,pr as _,t as ee,u as te,vi as v,vr as y,w as ne,wt as re}from"./vendor-cameraui-BqkrW4Bb.js";import{At as ie,G as b,H as x,R as S,U as ae,V as oe,W as C,Y as w,Zn as T,Zt as se,at as E,dn as D,in as O,ln as k,on as A,rn as ce,sn as le,un as j,xn as ue}from"./api-milc5VEE.js";import{Fn as M,Gn as de,Jn as fe,Nn as N,Pn as pe,Xn as P,Zn as me,_r as he,an as F,bn as I,br as L,cn as R,cr as z,dr as B,en as V,fn as ge,gr as H,hn as U,in as W,ir as G,jn as _e,nn as ve,on as K,or as ye,pn as q,qn as J,rr as Y,sn as X,yr as be,zn as Z}from"./vendor-CSg6_Jfu.js";import{C as xe,K as Se,a as Ce,i as we,j as Te,l as Ee,z as De}from"./vendor-primevue-DYzLjOFZ.js";import{t as Oe}from"./ring-resize-CodGa6wQ.js";import{n as ke,t as Ae}from"./CuiRecordingsGrid-CfuihmlY.js";import{n as je,t as Me}from"./round-alt-arrow-left-bold-DTrlW4yx.js";var Ne={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Pe(e,t){return N(),R(`svg`,Ne,[...t[0]||=[F(`path`,{fill:`currentColor`,d:`M3 11h8V3H3m2 2h4v4H5m8 12h8v-8h-8m2 2h4v4h-4M3 21h8v-8H3m2 2h4v4H5m8-16v8h8V3m-2 6h-4V5h4Z`},null,-1)]])}var Fe=G({name:`mdi-view-grid-outline`,render:Pe}),Q={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Ie(e,t){return N(),R(`svg`,Q,[...t[0]||=[F(`path`,{fill:`currentColor`,d:`M22 18.605a.75.75 0 0 1-.75.75h-5.1a2.93 2.93 0 0 1-5.66 0H2.75a.75.75 0 1 1 0-1.5h7.74a2.93 2.93 0 0 1 5.66 0h5.1a.75.75 0 0 1 .75.75m0-13.21a.75.75 0 0 1-.75.75H18.8a2.93 2.93 0 0 1-5.66 0H2.75a.75.75 0 1 1 0-1.5h10.39a2.93 2.93 0 0 1 5.66 0h2.45a.74.74 0 0 1 .75.75m0 6.6a.74.74 0 0 1-.75.75H9.55a2.93 2.93 0 0 1-5.66 0H2.75a.75.75 0 1 1 0-1.5h1.14a2.93 2.93 0 0 1 5.66 0h11.7a.75.75 0 0 1 .75.75`},null,-1)]])}var Le=G({name:`mage-filter-fill`,render:Ie}),$={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Re(e,t){return N(),R(`svg`,$,[...t[0]||=[F(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-miterlimit":`10`,"stroke-width":`1.5`,d:`M21.25 12H8.895m-4.361 0H2.75m18.5 6.607h-5.748m-4.361 0H2.75m18.5-13.214h-3.105m-4.361 0H2.75m13.214 2.18a2.18 2.18 0 1 0 0-4.36a2.18 2.18 0 0 0 0 4.36Zm-9.25 6.607a2.18 2.18 0 1 0 0-4.36a2.18 2.18 0 0 0 0 4.36Zm6.607 6.608a2.18 2.18 0 1 0 0-4.361a2.18 2.18 0 0 0 0 4.36Z`},null,-1)]])}var ze=G({name:`mage-filter`,render:Re}),Be={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Ve(e,t){return N(),R(`svg`,Be,[...t[0]||=[F(`path`,{fill:`currentColor`,d:`m14 2l6 6v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zm4 18V9h-5V4H6v16zm-2-2l-2.5-1.7V18H8v-5h5.5v1.7L16 13z`},null,-1)]])}var He=G({name:`mdi-file-video-outline`,render:Ve}),Ue={class:`flex flex-col gap-6`},We={class:`flex flex-col field-gap`},Ge={class:`cui-label`},Ke={class:`flex flex-col field-gap`},qe={class:`cui-label`},Je={class:`grid grid-cols-1 xs:grid-cols-2 gap-3`},Ye={class:`flex flex-col gap-1`},Xe={class:`text-xs text-muted`},Ze={class:`flex flex-col gap-1`},Qe={class:`text-xs text-muted`},$e={class:`grid grid-cols-1 xs:grid-cols-2 gap-x-6 gap-y-4`},et={class:`flex flex-col field-gap`},tt={class:`cui-label`},nt={class:`flex flex-col field-gap`},rt={class:`cui-label`},it={class:`flex flex-col field-gap`},at={class:`flex items-center gap-3`},ot={class:`cui-label !mb-0`},st={key:0,class:`ml-auto flex items-center gap-2.5 text-sm tabular-nums`},ct={class:`font-semibold`},lt={class:`font-semibold`},ut={class:`border border-color rounded-xl card-background overflow-hidden`},dt={class:`flex flex-col gap-3 max-h-[240px] overflow-y-auto p-2.5`},ft={key:0,class:`flex items-center justify-center gap-2 text-muted text-sm py-6`},pt={key:1,class:`text-center text-muted text-sm py-6`},mt={class:`text-xs text-muted px-0.5`},ht={class:`font-mono text-xs truncate flex-1`},gt={class:`text-xs text-muted tabular-nums shrink-0`},_t={class:`font-mono text-xs text-muted tabular-nums shrink-0 min-w-[58px] text-right`},vt=30,yt=U({__name:`ExportRecordings`,props:{cameras:{},preselect:{}},setup(e,{expose:t}){let r=e,{t:i}=h(),a=T(),o=I(`dialogRefProps`),{plugin:s}=d(`@camera.ui/camera-ui-nvr`),l=z([]),u=z(!1),f=z(r.preselect?.length?[...r.preselect]:[]),p=z(`best`),m=z(0),g=z(new Date(new Date().setHours(0,0,0,0))),_=z(new Date),ee=W(()=>[{label:i(`views.recordings.export.quality_best`),value:`best`},{label:i(`views.recordings.export.quality_smallest`),value:`smallest`}]),te=W(()=>[0,1,2,5,10,30,60,120,180,240,300].map(e=>({label:e===0?i(`views.recordings.export.timelapse_off`):e<60?`${e} s`:`${e/60} min`,value:e}))),v=W(()=>m.value>0),y=W(()=>v.value?`~`:``),ie=W(()=>new Map(r.cameras.map(e=>[e.id,e.name]))),b=W(()=>g.value instanceof Date&&_.value instanceof Date&&g.value<_.value),x=W(()=>{if(!b.value)return[];let e=[],t=g.value.getTime(),n=_.value.getTime(),r=new Date(g.value);r.setHours(0,0,0,0);let i=new Date(_.value);for(i.setHours(0,0,0,0);r.getTime()<=i.getTime();){let i=new Date(r),a=new Date(r);a.setDate(a.getDate()+1);let o=Math.max(i.getTime(),t),s=Math.min(a.getTime(),n);s>o&&e.push({day:se(i),startUs:o*1e3,endUs:s*1e3}),r.setDate(r.getDate()+1)}return e}),S=W(()=>l.value.map(e=>{let t=ie.value.get(e.cameraId)??e.cameraId,n=new Date(e.startUs/1e3),r=new Date(e.endUs/1e3),a=n.getHours()===0&&n.getMinutes()===0&&e.endUs-e.startUs===864e8,o=r.getHours()===0&&r.getMinutes()===0?`24:00`:E(r);return{cameraId:e.cameraId,cameraName:t,name:`${D(t)}_${e.day}${v.value?`_timelapse`:``}.mp4`,span:a?i(`views.recordings.export.whole_day`):`${E(n)}–${o}`,bytes:v.value?e.bytes/vt:e.bytes}})),ae=W(()=>{let e=new Map;for(let t of S.value){let n=e.get(t.cameraId);n||(n={cameraId:t.cameraId,cameraName:t.cameraName,files:[],bytes:0},e.set(t.cameraId,n)),n.files.push(t),n.bytes+=t.bytes}return[...e.values()]}),oe=W(()=>S.value.reduce((e,t)=>e+t.bytes,0)),C=W(()=>f.value.length===0?i(`views.recordings.export.no_cameras`):b.value?i(`views.recordings.export.no_footage`):i(`views.recordings.export.no_range`));function w(e){return String(e).padStart(2,`0`)}function se(e){return`${e.getFullYear()}-${w(e.getMonth()+1)}-${w(e.getDate())}`}function E(e){return`${w(e.getHours())}:${w(e.getMinutes())}`}function D(e){return e.replace(/[^a-zA-Z0-9-_]/g,`_`)}function k(e){if(e<=0)return`0 MB`;let t=e/1e6;if(t<1e3)return`${t<10?t.toFixed(1):Math.round(t)} MB`;let n=e/1e9;return`${n.toFixed(+(n<10))} GB`}async function A(){let e=s.value;if(!e?.nvrExportEstimate||f.value.length===0||x.value.length===0){l.value=[],u.value=!1;return}u.value=!0;try{let t=await e.nvrExportEstimate({cameras:f.value,slices:x.value,quality:p.value});l.value=t.files??[]}catch{l.value=[]}finally{u.value=!1}}async function ce(){if(!b.value||f.value.length===0||x.value.length===0)return null;let e=s.value;if(!e?.nvrExportBatch)return a.add({severity:`error`,detail:i(`views.recordings.export.plugin_missing`),life:3e3}),null;let t=await e.nvrExportBatch({cameras:f.value,slices:x.value,quality:p.value,timelapseIntervalSec:v.value?m.value:0});await O({url:t.url,filename:t.filename})}return c([f,x,p],A,{debounce:350,immediate:!0,deep:!0}),fe(()=>{o.disabled&&(o.disabled.value=!b.value||f.value.length===0||!u.value&&S.value.length===0)}),t({onConfirm:ce}),(t,r)=>{let i=Ee,a=n,o=De,s=ne,c=Te,l=Ce,d=re,h=He;return N(),R(`div`,Ue,[F(`div`,We,[F(`label`,Ge,L(t.$t(`views.recordings.export.cameras`)),1),q(i,{modelValue:H(f),"onUpdate:modelValue":r[0]||=e=>Y(f)?f.value=e:null,options:e.cameras,"option-label":`name`,"option-value":`id`,display:`chip`,filter:``,placeholder:t.$t(`views.recordings.export.cameras_placeholder`),class:`w-full`},null,8,[`modelValue`,`options`,`placeholder`])]),F(`div`,Ke,[F(`label`,qe,L(t.$t(`views.recordings.export.range`)),1),F(`div`,Je,[F(`div`,Ye,[F(`span`,Xe,L(t.$t(`views.recordings.export.from`)),1),q(a,{modelValue:H(g),"onUpdate:modelValue":r[1]||=e=>Y(g)?g.value=e:null,"show-time":``,"hour-format":`24`,fluid:``,"max-date":H(_)},null,8,[`modelValue`,`max-date`])]),F(`div`,Ze,[F(`span`,Qe,L(t.$t(`views.recordings.export.to`)),1),q(a,{modelValue:H(_),"onUpdate:modelValue":r[2]||=e=>Y(_)?_.value=e:null,"show-time":``,"hour-format":`24`,fluid:``,"min-date":H(g)},null,8,[`modelValue`,`min-date`])])]),H(b)?(N(),K(o,{key:1,severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:P(()=>[ge(L(t.$t(`views.recordings.export.range_hint`)),1)]),_:1})):(N(),K(o,{key:0,severity:`error`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:P(()=>[ge(L(t.$t(`views.recordings.export.invalid_range`)),1)]),_:1}))]),F(`div`,$e,[F(`div`,et,[F(`label`,tt,L(t.$t(`views.recordings.export.quality`)),1),q(s,{modelValue:H(p),"onUpdate:modelValue":r[3]||=e=>Y(p)?p.value=e:null,options:H(ee),"option-label":`label`,"option-value":`value`,"allow-empty":!1,pt:{root:{class:`flex w-full`},pcToggleButton:{root:{class:`flex-1`}}}},null,8,[`modelValue`,`options`])]),F(`div`,nt,[F(`label`,rt,L(t.$t(`views.recordings.export.timelapse`)),1),q(c,{modelValue:H(m),"onUpdate:modelValue":r[4]||=e=>Y(m)?m.value=e:null,options:H(te),"option-label":`label`,"option-value":`value`,class:`w-full`},null,8,[`modelValue`,`options`])])]),F(`div`,it,[F(`div`,at,[F(`label`,ot,L(t.$t(`views.recordings.export.result`)),1),H(S).length?(N(),R(`div`,st,[F(`span`,ct,L(H(S).length)+` `+L(H(S).length===1?t.$t(`views.recordings.export.file`):t.$t(`views.recordings.export.files`)),1),r[5]||=F(`span`,{class:`text-muted`},`·`,-1),F(`span`,lt,L(H(y))+L(k(H(oe))),1),q(l,{value:H(S).length===1?`MP4`:`ZIP`,severity:`info`},null,8,[`value`])])):X(``,!0)]),F(`div`,ut,[F(`div`,dt,[H(u)&&!H(S).length?(N(),R(`div`,ft,[q(d,{style:{width:`1rem`,height:`1rem`},"stroke-width":`4`,class:`m-0`}),F(`span`,null,L(t.$t(`views.recordings.export.estimating`)),1)])):H(S).length?(N(!0),R(V,{key:2},M(H(ae),e=>(N(),R(`div`,{key:e.cameraId,class:`flex flex-col gap-1`},[F(`span`,mt,L(e.cameraName)+` · `+L(e.files.length)+` · `+L(H(y))+L(k(e.bytes)),1),(N(!0),R(V,null,M(e.files,e=>(N(),R(`div`,{key:e.name,class:`flex items-center gap-3 card-inner-background border border-color rounded-lg px-3 py-2`},[q(h,{class:`w-4 h-4 text-muted shrink-0`}),F(`span`,ht,L(e.name),1),F(`span`,gt,L(e.span),1),F(`span`,_t,L(H(y))+L(k(e.bytes)),1)]))),128))]))),128)):(N(),R(`div`,pt,L(H(C)),1))])])])])}}}),bt={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function xt(e,t){return N(),R(`svg`,bt,[...t[0]||=[F(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`m6 9l6 6l6-6`},null,-1)]])}var St=G({name:`tabler-chevron-down`,render:xt}),Ct={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function wt(e,t){return N(),R(`svg`,Ct,[...t[0]||=[F(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`m6 15l6-6l6 6`},null,-1)]])}var Tt=G({name:`tabler-chevron-up`,render:wt}),Et={class:`flex flex-col gap-2`},Dt={class:`sidebar-section-title`},Ot={class:`p-input-icon-left w-full`},kt={class:`flex items-center justify-between gap-2`},At={class:`sidebar-section-title !mb-0`},jt={class:`flex flex-col gap-2`},Mt={class:`sidebar-section-title flex items-center gap-1.5`},Nt={key:0,class:`flex flex-col gap-1.5 mt-1`},Pt={class:`text-xs text-muted`},Ft={class:`flex items-center gap-3`},It={class:`text-xs font-mono w-8 text-right shrink-0`},Lt={class:`flex flex-col gap-2`},Rt={class:`sidebar-section-title`},zt={class:`flex flex-col gap-2`},Bt={class:`sidebar-section-title`},Vt={class:`relative rounded-md overflow-hidden`},Ht={class:`flex flex-col gap-2`},Ut={class:`sidebar-section-title`},Wt={class:`flex items-center gap-3`},Gt={class:`text-xs font-mono w-8 text-right shrink-0`},Kt={class:`flex flex-col gap-2`},qt={class:`sidebar-section-title`},Jt={class:`flex flex-wrap gap-1`},Yt={class:`flex flex-col gap-2`},Xt={key:0,class:`flex flex-col gap-2`},Zt={class:`flex items-center gap-2 cursor-pointer text-sm`},Qt={key:0,class:`flex flex-col gap-2 ml-6`},$t={class:`filter-logic-divider`},en={class:`flex flex-col gap-2`},tn={key:0,class:`flex flex-col gap-2`},nn={class:`filter-logic-divider`},rn={class:`flex flex-col gap-2`},an={key:0,class:`flex flex-col gap-2`},on={class:`flex items-center gap-2 cursor-pointer text-sm`},sn=288,cn=A(U({__name:`RecordingsFilterSidebar`,props:{filters:{},cameras:{},isOpen:{type:Boolean},isOverlay:{type:Boolean},semanticSearchAvailable:{type:Boolean},semanticSearchLoading:{type:Boolean}},emits:[`update:filters`,`semantic-search`,`close`],setup(n,{expose:o,emit:s}){let c={doorbell:`views.recordings.audio_doorbell`,glass_break:`views.recordings.audio_glass_break`,siren:`views.recordings.audio_siren`,speaking:`views.recordings.audio_speaking`,gunshot:`views.recordings.audio_gunshot`,dog_bark:`views.recordings.audio_dog_bark`,baby_cry:`views.recordings.audio_baby_cry`,alarm:`views.recordings.audio_alarm`,scream:`views.recordings.audio_scream`,cat:`views.recordings.audio_cat`,car_alarm:`views.recordings.audio_car_alarm`,smoke_alarm:`views.recordings.audio_smoke_alarm`},l={face:`views.recordings.attr_face`,license_plate:`views.recordings.attr_license_plate`},u={motion:`views.recordings.sensor_motion`,audio:`views.recordings.sensor_audio`,contact:`views.recordings.sensor_contact`,doorbell:`views.recordings.sensor_doorbell`,switch:`views.recordings.sensor_switch`,light:`views.recordings.sensor_light`,siren:`views.recordings.sensor_siren`,security_system:`views.recordings.sensor_security_system`,"line-crossing":`views.recordings.sensor_line_crossing`},d=new Set([`motion`,`audio`]),f=n,m=s,{t:g}=h(),{xlBreakpoint:te}=k(),{topbarHeight:re,bottombarHeight:b}=j(),{icons:x,generic:S}=ae(),oe=x,C=Tt,w=St,T=de(`sidebarRef`),E=z(f.filters.semanticQuery??``),D=ye({eventTypes:!0,attributes:!0,sensorEvents:!0}),O=W(()=>f.isOpen?sn:0),A=W(()=>f.cameras.map(e=>({id:e.id,name:e.name}))),le=W(()=>{if(f.filters.cameraIds.length===1)return f.cameras.find(e=>e.id===f.filters.cameraIds[0])?.name}),ue=W(()=>[{label:g(`views.recordings.filter_and`),value:`and`},{label:g(`views.recordings.filter_or`),value:`or`}]),fe=W(()=>[{label:g(`views.recordings.time_1h`),value:`1h`},{label:g(`views.recordings.time_1d`),value:`1d`},{label:g(`views.recordings.time_1w`),value:`1w`},{label:g(`views.recordings.time_1m`),value:`1m`}]),pe=W(()=>_.filter(e=>!d.has(e)).map(e=>({label:g(`views.recordings.type_${e}`),value:e,icon:x[e]??S}))),P=W(()=>({label:g(`views.recordings.type_other`),value:ee,icon:x.other??S})),me=W(()=>t.map(e=>({label:g(u[e]??`views.recordings.sensor_${e}`),value:e,icon:oe[e]??S}))),he=W(()=>y.map(e=>({label:g(c[e]??e),value:e,icon:x[e]??S}))),I=W(()=>p.map(e=>({label:g(l[e]??`views.recordings.attr_${e}`),value:e,icon:x[e]??S})));function B(e,t){m(`update:filters`,{...f.filters,[e]:t})}let U=v(e=>{B(`search`,e)},300);function G(){let e=E.value.trim();B(`semanticQuery`,e),m(`semantic-search`,e)}function _e(e){let t=[...f.filters.eventTypes],n=t.indexOf(e);n>=0?t.splice(n,1):t.push(e),B(`eventTypes`,t)}function ve(e){let t=[...f.filters.audioLabels],n=t.indexOf(e);n>=0?t.splice(n,1):t.push(e),B(`audioLabels`,t)}function Ce(e){let t=[...f.filters.sensorEvents],n=t.indexOf(e);n>=0?t.splice(n,1):t.push(e),B(`sensorEvents`,t)}function Te(e){let t=[...f.filters.hasAttributes],n=t.indexOf(e);n>=0?t.splice(n,1):t.push(e),B(`hasAttributes`,t)}function De(e){D[e]=!D[e]}return J(E,e=>{!e?.trim()&&f.filters.semanticQuery&&B(`semanticQuery`,``)}),r(T,e=>{let t=e.target;t.closest(`#recordings-sidebar-toggle`)||t.closest(`[data-pc-section="overlay"], [data-pc-section="panel"], .p-connected-overlay`)||f.isOpen&&(f.isOverlay||!te.value)&&m(`close`)}),o({sidebarWidth:O}),(t,r)=>{let o=i,s=Se,c=se,l=we,u=a,d=e,f=Ee,p=ce,m=ie,h=xe,g=ne;return N(),R(`nav`,{ref_key:`sidebarRef`,ref:T,class:`recordings-sidebar fixed transition-all duration-200 overflow-x-hidden overflow-y-auto md:!pl-0 pl-safe pb-safe flex flex-col z-4`,style:be({width:`${H(O)}px`,borderRightWidth:n.isOpen?`1px`:`0px`,paddingBottom:`calc(env(safe-area-inset-top, 0px) + env(safe-area-inset-bottom, 0px) + ${H(b)}px + ${H(re)}px)`})},[F(`div`,{class:`flex flex-col gap-4 p-4`,style:be({width:`${sn}px`})},[F(`div`,Et,[F(`label`,Dt,L(t.$t(`views.recordings.search`)),1),F(`span`,Ot,[q(o,{"model-value":n.filters.search,placeholder:t.$t(`views.recordings.search_placeholder`),class:`w-full text-sm`,"onUpdate:modelValue":r[0]||=e=>H(U)(e)},null,8,[`model-value`,`placeholder`])])]),r[19]||=F(`div`,{class:`sidebar-divider`},null,-1),F(`div`,kt,[F(`label`,At,L(t.$t(`views.recordings.only_with_recordings`)),1),q(s,{"model-value":n.filters.onlyWithRecordings,class:`shrink-0`,"onUpdate:modelValue":r[1]||=e=>B(`onlyWithRecordings`,e)},null,8,[`model-value`])]),r[20]||=F(`div`,{class:`sidebar-divider`},null,-1),F(`div`,jt,[F(`label`,Mt,[q(c,{class:`w-3.5 h-3.5`}),ge(` `+L(t.$t(`views.recordings.semantic_search`)),1)]),q(l,{modelValue:H(E),"onUpdate:modelValue":r[2]||=e=>Y(E)?E.value=e:null,placeholder:t.$t(`views.recordings.semantic_search_placeholder`),class:`w-full text-sm semantic-textarea`,rows:`3`,disabled:!n.semanticSearchAvailable},null,8,[`modelValue`,`placeholder`,`disabled`]),q(u,{label:t.$t(`views.recordings.semantic_search_button`),severity:`secondary`,outlined:``,size:`small`,class:`w-full text-xs`,loading:n.semanticSearchLoading,disabled:!n.semanticSearchAvailable||!H(E)?.trim(),onClick:G},null,8,[`label`,`loading`,`disabled`]),n.filters.semanticQuery?(N(),R(`div`,Nt,[F(`label`,Pt,L(t.$t(`views.recordings.min_match_score`)),1),F(`div`,Ft,[q(d,{"model-value":n.filters.minSemanticScore,min:0,max:1,step:.05,class:`flex-1`,"onUpdate:modelValue":r[3]||=e=>B(`minSemanticScore`,e)},null,8,[`model-value`]),F(`span`,It,L(Math.round(n.filters.minSemanticScore*100))+`%`,1)])])):X(``,!0)]),r[21]||=F(`div`,{class:`sidebar-divider`},null,-1),F(`div`,Lt,[F(`label`,Rt,L(t.$t(`views.recordings.cameras`)),1),q(f,{"model-value":n.filters.cameraIds,options:H(A),"option-label":`name`,"option-value":`id`,placeholder:t.$t(`views.recordings.all_cameras`),class:`w-full text-sm`,"max-selected-labels":2,"show-toggle-all":!1,pt:{overlay:{style:`position: fixed`}},"onUpdate:modelValue":r[4]||=e=>B(`cameraIds`,e)},null,8,[`model-value`,`options`,`placeholder`])]),H(le)?(N(),R(V,{key:0},[r[14]||=F(`div`,{class:`sidebar-divider`},null,-1),F(`div`,zt,[F(`label`,Bt,L(t.$t(`views.recordings.grid_search`)),1),F(`div`,Vt,[q(p,{camera:H(le),"object-fit":`cover`},null,8,[`camera`]),q(m,{"model-value":n.filters.gridRegions,"onUpdate:modelValue":r[5]||=e=>B(`gridRegions`,e)},null,8,[`model-value`])]),q(u,{label:t.$t(`views.recordings.grid_clear`),severity:`secondary`,outlined:``,size:`small`,class:`w-full text-xs`,disabled:n.filters.gridRegions.length===0,onClick:r[6]||=e=>B(`gridRegions`,[])},null,8,[`label`,`disabled`])])],64)):X(``,!0),r[22]||=F(`div`,{class:`sidebar-divider`},null,-1),F(`div`,Ht,[F(`label`,Ut,L(t.$t(`views.recordings.confidence`)),1),F(`div`,Wt,[q(d,{"model-value":n.filters.minConfidence,min:0,max:1,step:.05,class:`flex-1`,"onUpdate:modelValue":r[7]||=e=>B(`minConfidence`,e)},null,8,[`model-value`]),F(`span`,Gt,L(Math.round(n.filters.minConfidence*100))+`%`,1)])]),r[23]||=F(`div`,{class:`sidebar-divider`},null,-1),F(`div`,Kt,[F(`label`,qt,L(t.$t(`views.recordings.time_range`)),1),F(`div`,Jt,[(N(!0),R(V,null,M(H(fe),e=>(N(),K(u,{key:e.value,label:e.label,severity:n.filters.timeRange===e.value?void 0:`secondary`,outlined:n.filters.timeRange!==e.value,size:`small`,class:`text-xs flex-1 min-w-0`,onClick:t=>B(`timeRange`,n.filters.timeRange===e.value?null:e.value)},null,8,[`label`,`severity`,`outlined`,`onClick`]))),128))])]),r[24]||=F(`div`,{class:`sidebar-divider`},null,-1),F(`div`,Yt,[F(`button`,{class:`sidebar-section-title flex items-center justify-between w-full cursor-pointer`,onClick:r[8]||=e=>De(`sensorEvents`)},[F(`span`,null,L(t.$t(`views.recordings.sensor_events`)),1),(N(),K(Z(H(D).sensorEvents?H(C):H(w)),{class:`w-4 h-4 text-muted`}))]),H(D).sensorEvents?(N(),R(`div`,Xt,[(N(!0),R(V,null,M(H(me),e=>(N(),R(V,{key:e.value},[F(`label`,Zt,[q(h,{"model-value":n.filters.sensorEvents.includes(e.value),binary:!0,"onUpdate:modelValue":t=>Ce(e.value)},null,8,[`model-value`,`onUpdate:modelValue`]),(N(),K(Z(e.icon),{class:`w-4 h-4 text-muted`})),F(`span`,null,L(e.label),1)]),e.value===`audio`&&n.filters.sensorEvents.includes(`audio`)?(N(),R(`div`,Qt,[(N(!0),R(V,null,M(H(he),e=>(N(),R(`label`,{key:e.value,class:`flex items-center gap-2 cursor-pointer text-sm`},[q(h,{"model-value":n.filters.audioLabels.includes(e.value),binary:!0,"onUpdate:modelValue":t=>ve(e.value)},null,8,[`model-value`,`onUpdate:modelValue`]),(N(),K(Z(e.icon),{class:`w-4 h-4 text-muted`})),F(`span`,null,L(e.label),1)]))),128))])):X(``,!0)],64))),128))])):X(``,!0)]),F(`div`,$t,[r[15]||=F(`div`,{class:`filter-logic-line`},null,-1),q(g,{"model-value":n.filters.filterLogicTriggers,options:H(ue),"option-label":`label`,"option-value":`value`,"allow-empty":!1,class:`filter-logic-toggle`,"onUpdate:modelValue":r[9]||=e=>B(`filterLogicTriggers`,e)},null,8,[`model-value`,`options`]),r[16]||=F(`div`,{class:`filter-logic-line`},null,-1)]),F(`div`,en,[F(`button`,{class:`sidebar-section-title flex items-center justify-between w-full cursor-pointer`,onClick:r[10]||=e=>De(`eventTypes`)},[F(`span`,null,L(t.$t(`views.recordings.event_type`)),1),(N(),K(Z(H(D).eventTypes?H(C):H(w)),{class:`w-4 h-4 text-muted`}))]),H(D).eventTypes?(N(),R(`div`,tn,[(N(!0),R(V,null,M(H(pe),e=>(N(),R(`label`,{key:e.value,class:`flex items-center gap-2 cursor-pointer text-sm`},[q(h,{"model-value":n.filters.eventTypes.includes(e.value),binary:!0,"onUpdate:modelValue":t=>_e(e.value)},null,8,[`model-value`,`onUpdate:modelValue`]),(N(),K(Z(e.icon),{class:`w-4 h-4 text-muted`})),F(`span`,null,L(e.label),1)]))),128))])):X(``,!0)]),F(`div`,nn,[r[17]||=F(`div`,{class:`filter-logic-line`},null,-1),q(g,{"model-value":n.filters.filterLogicAttributes,options:H(ue),"option-label":`label`,"option-value":`value`,"allow-empty":!1,class:`filter-logic-toggle`,"onUpdate:modelValue":r[11]||=e=>B(`filterLogicAttributes`,e)},null,8,[`model-value`,`options`]),r[18]||=F(`div`,{class:`filter-logic-line`},null,-1)]),F(`div`,rn,[F(`button`,{class:`sidebar-section-title flex items-center justify-between w-full cursor-pointer`,onClick:r[12]||=e=>De(`attributes`)},[F(`span`,null,L(t.$t(`views.recordings.attributes`)),1),(N(),K(Z(H(D).attributes?H(C):H(w)),{class:`w-4 h-4 text-muted`}))]),H(D).attributes?(N(),R(`div`,an,[(N(!0),R(V,null,M(H(I),e=>(N(),R(`label`,{key:e.value,class:`flex items-center gap-2 cursor-pointer text-sm`},[q(h,{"model-value":n.filters.hasAttributes.includes(e.value),binary:!0,"onUpdate:modelValue":t=>Te(e.value)},null,8,[`model-value`,`onUpdate:modelValue`]),(N(),K(Z(e.icon),{class:`w-4 h-4 text-muted`})),F(`span`,null,L(e.label),1)]))),128)),F(`label`,on,[q(h,{"model-value":n.filters.eventTypes.includes(H(P).value),binary:!0,"onUpdate:modelValue":r[13]||=e=>_e(H(P).value)},null,8,[`model-value`]),(N(),K(Z(H(P).icon),{class:`w-4 h-4 text-muted`})),F(`span`,null,L(H(P).label),1)])])):X(``,!0)])],4)],4)}}}),[[`__scopeId`,`data-v-a1b07102`]]),ln={class:`font-semibold text-xl truncate`},un={class:`w-full h-full relative`},dn={key:0,class:`w-full flex flex-row h-[calc(40px+1rem)] py-2 items-center fixed z-10`},fn={class:`relative z-2 page-title !m-0`},pn={key:0,class:`flex items-center gap-2 mb-2 text-xs text-muted ml-auto`},mn={key:0,class:`inline-flex items-center gap-1`},hn={key:2,class:`flex justify-center py-4`},gn={key:3,class:`flex flex-1 min-h-0 flex-col items-center justify-center w-full gap-4`},_n={class:`text-muted text-sm`},vn=288,yn=10,bn=11,xn=U({__name:`Recordings`,setup(e){let t=new E,n=w(),{t:r}=h(),{smBreakpoint:i,xlBreakpoint:c,mdBreakpoint:d}=k(),{isTouch:p}=D(),{registerScrollToTop:_}=x();if(!p.value&&typeof VideoDecoder<`u`){let e=g({cacheSize:20});pe(l,e),u(()=>e.dispose())}let{results:ee,isSearching:v,isAvailable:y,hasSearched:ne,search:re,clear:ie}=te(),{data:ae}=t.getCamerasQuery({page:1,pageSize:-1}),T={"1h":36e5,"1d":864e5,"1w":6048e5,"1m":2592e6},O=de(`gridRef`),A=z(`closed`),ce=z(!1),j=z({search:``,semanticQuery:``,filterLogicTriggers:`or`,filterLogicAttributes:`or`,cameraIds:[],timeRange:null,customDateRange:null,eventTypes:[],audioLabels:[],hasAttributes:[],sensorEvents:[],gridRegions:[],minConfidence:.5,minSemanticScore:.5,onlyWithRecordings:!0}),M=B({state:`ended`,hasDetections:!0,withRecordingInfo:!0,hasRecording:!0}),fe=JSON.stringify(M.value),I=z(!1),V=B([]),U=W(()=>c.value?!0:A.value===`opened`),G=W(()=>d.value),ye=W(()=>d.value?`0px`:U.value?`${vn}px`:`0px`),Y=W(()=>(ae.value?.result??[]).map(e=>({id:e._id,name:e.name}))),Z=W(()=>{let e=new Map;for(let t of Y.value)e.set(t.id,t.name);return e}),xe=W(()=>{let e=new Map;for(let t of ae.value?.result??[])e.set(t._id,t);return e}),Se=W(()=>j.value.cameraIds),Ce=W(()=>Y.value.map(e=>e.id));_(()=>O.value?.scrollToTop());let{events:we,isLoading:Te,hasMore:Ee,loadMore:De,loadThumbnails:Ne,getCachedThumbnails:Pe}=s({availableCameraIds:Ce,cameraIds:Se,realtime:!0,pageSize:40,filter:M}),Q=W(()=>{let e=new Map;for(let t of ee.value??[]){let n=e.get(t.eventId);(!n||t.score>n)&&e.set(t.eventId,t.score)}return e}),Ie=W(()=>ne.value),$=W(()=>{let e=we.value.filter(e=>e.state===`ended`),t=j.value;if(t.timeRange&&T[t.timeRange]){let n=Date.now()-T[t.timeRange];e=e.filter(e=>e.startTime>=n)}if(t.gridRegions.length>0&&(e=e.filter(e=>e.segments.some(e=>e.detections.some(e=>e.box&&Ue(e.box,t.gridRegions))))),Ie.value){let n=t.minSemanticScore*.23+.15;e=e.filter(e=>{let t=Q.value.get(e.id);return t!=null&&t>=n}),e.sort((e,t)=>(Q.value.get(t.id)??0)-(Q.value.get(e.id)??0))}return e}),Re=W(()=>I.value&&V.value.length?V.value:$.value.map(e=>({event:e,key:e.id})));function Be(){n.openComponentDialog(yt,{data:{title:r(`views.recordings.export.title`),contentProps:{cameras:Y.value,preselect:j.value.cameraIds?.length?j.value.cameraIds:[]},confirmText:r(`views.recordings.export.confirm`)}})}function Ve(){let e=A.value;A.value=e===`opened`?`closed`:`opened`}function He(){A.value=`closed`}function Ue(e,t){if(t.length===0)return!0;let n=1/yn,r=1/bn,i=e.x/n,a=(e.x+e.width)/n,o=e.y/r,s=(e.y+e.height)/r;for(let e of t)if(a>e.col&&i<e.col+e.w&&s>e.row&&o<e.row+e.h)return!0;return!1}function We(e,t){let n=[];if(e.attributes)for(let[r,i]of Object.entries(e.attributes)){let e=m(i);if(!e)continue;let a=r.indexOf(`:`);n.push({key:`${t.id}:attr:${r}`,url:e,type:a>=0?r.substring(0,a):r,label:a>=0?r.substring(a+1):void 0})}if(e.detections)for(let[r,i]of Object.entries(e.detections)){let e=m(i);if(!e)continue;let a=r.includes(`:`)?r.split(`:`).slice(1).join(`:`):r;n.push({key:`${t.id}:det:${r}`,url:e,type:a})}if(e.scenes)for(let[r,i]of Object.entries(e.scenes)){let e=m(i);e&&n.push({key:`${t.id}:scene:${r}`,url:e,type:`scene`})}let r=new Set;return n.filter(e=>!r.has(e.url)&&(r.add(e.url),!0))}function Ge(e){let t=[];for(let n of e){let e=Pe(n.id);if(!e){t.push({event:n,key:n.id});continue}let r=We(e,n),i=f(e,n);if(i.url){let e=r.findIndex(e=>e.url===i.url);e>0&&r.unshift(...r.splice(e,1))}r.length<=1?t.push({event:n,key:n.id}):r.forEach((e,r)=>{t.push({event:n,key:r===0?n.id:e.key,thumbnailOverride:{url:e.url,type:e.type,label:e.label}})})}return t}function Ke(e){!e.semanticQuery?.trim()&&j.value.semanticQuery?.trim()&&ie(),j.value=e}function qe(e){if(!e.trim()){ie();return}re(e)}function Je(e){let t=xe.value.get(e.cameraId);t&&n.openComponentDialog(C,{data:{title:t.name,stayActive:!0,hideCancelButton:!0,hideConfirmButton:!0,contentProps:{camera:t,eventTimestamp:e.startTime},headerActions:e.segments?.some(e=>e?.description)?[{icon:se,toggle:!0,onClick:()=>{}}]:void 0,draggable:!0,blockDragOnSelectors:[`.p-dialog-body`],dismissableMask:!1,modal:!1,dialogContentClass:`!px-0 h-full`,goTo:`/cameras/${t.name}?startTs=${e.startTime}`},dialogSize:{desktop:{maxWidth:`800px`,maxHeight:`calc(100vh - max(1rem, env(safe-area-inset-top, 0px)) - max(1rem, env(safe-area-inset-bottom, 0px)))`,width:`50vw`}}})}return J(c,e=>{e&&(A.value=`closed`)}),J(j,e=>{let t=e.eventTypes.length>0||e.sensorEvents.length>0||e.audioLabels.length>0||e.hasAttributes.length>0,n={types:e.eventTypes.length>0?e.eventTypes:void 0,triggers:e.sensorEvents.length>0?e.sensorEvents:void 0,triggerLabels:e.audioLabels.length>0?e.audioLabels:void 0,attributes:e.hasAttributes.length>0?e.hasAttributes:void 0,filterLogicTriggers:t?e.filterLogicTriggers:void 0,filterLogicAttributes:t?e.filterLogicAttributes:void 0,search:e.search||void 0,minConfidence:e.minConfidence>0?e.minConfidence:void 0,state:`ended`,hasDetections:!t,withRecordingInfo:!0,hasRecording:e.onlyWithRecordings||void 0},r=JSON.stringify(n);r!==fe&&(fe=r,M.value=n)},{deep:!0,immediate:!0}),J(I,e=>{e?V.value=Ge($.value):V.value=[]}),J($,e=>{if(!I.value)return;let t=new Set(e.map(e=>e.id)),n=new Set(V.value.map(e=>e.event.id)),r=V.value.filter(e=>t.has(e.event.id)),i=e.filter(e=>!n.has(e.id));i.length&&(r=[...Ge(i),...r]),V.value=r}),J(()=>j.value.cameraIds,e=>{e.length!==1&&j.value.gridRegions.length>0&&(j.value={...j.value,gridRegions:[]})}),_e(()=>{requestAnimationFrame(()=>{ce.value=!0})}),(e,t)=>{let n=oe,r=ze,s=Le,l=a,u=Me,d=je,f=Fe,p=S,m=se,h=ke,g=Ae,_=Oe,ee=ue,te=le,ne=o;return N(),R(`div`,null,[q(n,{position:`center`},{default:P(()=>[F(`span`,ln,L(e.$t(`views.recordings.title`)),1)]),_:1}),q(n,{position:`left`},{default:P(()=>[q(l,{id:`recordings-sidebar-toggle`,severity:`secondary`,class:`cui-button p-2 text-color`,text:``,rounded:``,onClick:Ve},{icon:P(()=>[H(A)===`closed`?(N(),K(r,{key:0,width:`100%`,height:`100%`})):(N(),K(s,{key:1,width:`100%`,height:`100%`}))]),_:1})]),_:1}),q(cn,{filters:H(j),cameras:H(Y),"is-open":H(U),"is-overlay":H(G),"semantic-search-available":H(y),"semantic-search-loading":H(v),"onUpdate:filters":Ke,onSemanticSearch:qe,onClose:He},null,8,[`filters`,`cameras`,`is-open`,`is-overlay`,`semantic-search-available`,`semantic-search-loading`]),(N(),K(ve,{to:`#container`,defer:``},[H(U)&&H(G)?(N(),R(`div`,{key:0,class:`fixed top-0 left-0 right-0 bottom-0 w-full h-full bg-black/50 z-1`,onClick:He})):X(``,!0)])),F(`main`,{class:`relative w-full h-full`,style:be({paddingLeft:H(ye),transition:H(ce)?`padding-left 200ms`:void 0})},[F(`div`,un,[H(i)?X(``,!0):(N(),R(`div`,dn,[t[1]||=F(`div`,{class:`ml-2`},null,-1),H(c)?X(``,!0):(N(),K(l,{key:0,id:`recordings-sidebar-toggle`,severity:`secondary`,class:`mr-2 cui-icon-lg relative z-2`,text:``,rounded:``,onClick:Ve},{icon:P(()=>[H(U)?(N(),K(u,{key:0,width:`100%`,height:`100%`})):(N(),K(d,{key:1,width:`100%`,height:`100%`}))]),_:1})),F(`h1`,fn,L(e.$t(`views.recordings.title`)),1),t[2]||=F(`div`,{class:`gradient-blur rotate-180 !h-[70px]`},[F(`div`),F(`div`),F(`div`),F(`div`),F(`div`),F(`div`)],-1)])),F(`div`,{class:he([`px-2 h-full w-full flex flex-col`,{"pt-4":H(i),"pt-[calc(40px+2rem)]":!H(i)}])},[H($).length||H(Ie)?(N(),R(`div`,pn,[me((N(),K(l,{severity:H(I)?`primary`:`secondary`,text:``,rounded:``,class:`cui-icon-sm`,onClick:t[0]||=e=>I.value=!H(I)},{icon:P(()=>[H(I)?(N(),K(p,{key:1,width:`100%`,height:`100%`})):(N(),K(f,{key:0,width:`100%`,height:`100%`}))]),_:1},8,[`severity`])),[[ne,{value:e.$t(`views.recordings.ungroup`)},void 0,{bottom:!0}]]),F(`span`,null,L(e.$t(`views.recordings.result_count`,{count:H(Re).length})),1),H(Ie)?(N(),R(`span`,mn,[q(m,{class:`w-3 h-3`}),ge(` `+L(e.$t(`views.recordings.semantic_results`,{count:H(Q).size})),1)])):X(``,!0)])):X(``,!0),H(Re).length?(N(),K(g,{key:1,ref_key:`gridRef`,ref:O,items:H(Re),"min-item-width":H(i)?160:180,gap:8,"has-more":H(Ee),"load-more":H(De),"item-key":e=>e.key,class:`flex-1 min-h-0`},{item:P(({item:e})=>[q(h,{event:e.event,"camera-name":H(Z).get(e.event.cameraId),camera:H(xe).get(e.event.cameraId),"load-thumbnails":H(Ne),"semantic-score":H(Q).get(e.event.id),"thumbnail-override":e.thumbnailOverride,onScrollToEvent:()=>Je(e.event)},null,8,[`event`,`camera-name`,`camera`,`load-thumbnails`,`semantic-score`,`thumbnail-override`,`onScrollToEvent`])]),_:1},8,[`items`,`min-item-width`,`has-more`,`load-more`,`item-key`])):X(``,!0),H(Te)||H(v)?(N(),R(`div`,hn,[q(_,{width:`24px`,height:`24px`,class:`text-muted`})])):X(``,!0),!H($).length&&!H(Te)&&!H(v)?(N(),R(`div`,gn,[q(ee,{class:`w-12 h-12 text-muted`}),F(`span`,_n,L(e.$t(`views.recordings.no_recordings`)),1)])):X(``,!0)],2)])],4),H(Y).length?(N(),K(te,{key:0,"tooltip-props":{value:e.$t(`views.recordings.export.title`)},"button-props":{class:`text-white`},icon:H(b),"icon-props":{width:`26px`,height:`26px`},"force-visible":``,onClick:Be},null,8,[`tooltip-props`,`icon`])):X(``,!0)])}}});export{xn as default};
@@ -1 +0,0 @@
1
- [data-v-2fc254ef] tr{cursor:pointer!important}
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./SensorEdit-BJAijbmc.js","./vendor-cameraui-BqkrW4Bb.js","./rolldown-runtime-C0FnF6B9.js","./vendor-CSg6_Jfu.js","./api-milc5VEE.js","./useElectron-Dg8tFzam.js","./vendor-zod-Dbq0fBXY.js","./types-CoXm85So.js","./lightbulb-outline-ccTlGyvW.js","./vendor-core-BQegq2Q6.js","./vendor-primevue-DYzLjOFZ.js","./vendor-dnd-DQF7Aoap.js","./close-CQoGQHOF.js","./vendor-draggabilly-Cghb3aIb.js","./api-3va2gyB0.css","./CuiLightControl-B_JIzm9t.js","./bell-ring-C470qCAb.js","./home-af3W_y8U.js","./alarm-light-outline-jCTfmz5t.js","./CuiLightControl-DFrZm_sv.css","./SensorHistory-DW00ZuHR.js","./history-QBEPNc4X.js","./sensors-CLQG1mQt.js","./VirtualSensorCreate-BXz0lWNm.js"])))=>i.map(i=>d[i]);
2
- import{At as e,F as t,O as ee,Ot as te,Pt as ne,Tr as n,kr as r,wt as re}from"./vendor-cameraui-BqkrW4Bb.js";import{Et as i,In as ie,Qt as a,V as ae,X as o,Y as s,at as c,ln as l,on as u,sn as oe,vt as d,wn as f}from"./api-milc5VEE.js";import{$t as p,Nn as m,Rt as h,Xn as g,Zn as _,_r as v,an as y,br as b,cn as x,cr as S,gr as C,hn as w,in as T,ir as E,on as D,pn as O,rr as se,sn as k,yr as ce,zn as le}from"./vendor-CSg6_Jfu.js";import{t as A}from"./lightbulb-outline-ccTlGyvW.js";import{F as ue,P as de,T as fe,x as pe}from"./vendor-primevue-DYzLjOFZ.js";import{t as me}from"./trash-can-outline-BbZkHoW7.js";import{t as j}from"./alarm-light-outline-jCTfmz5t.js";import{t as he}from"./CuiDataTable-CTT9IFeR.js";import{t as M}from"./cube-scan-Ccxismvr.js";import{t as ge}from"./history-QBEPNc4X.js";import{t as _e}from"./search-miJXZGQz.js";import{t as N}from"./sensors-CLQG1mQt.js";import{t as ve}from"./back-filled-r7bN5ObT.js";import{t as ye}from"./plus-CrfQUUEC.js";import{n as be,t as xe}from"./eye-off-C8kzsdYU.js";var P={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function F(e,t){return m(),x(`svg`,P,[...t[0]||=[y(`path`,{fill:`currentColor`,d:`M12 17a2 2 0 0 1-2-2c0-1.11.89-2 2-2a2 2 0 0 1 2 2a2 2 0 0 1-2 2m6 3V10H6v10zm0-12a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V10c0-1.11.89-2 2-2h1V6a5 5 0 0 1 5-5a5 5 0 0 1 5 5v2zm-6-5a3 3 0 0 0-3 3v2h6V6a3 3 0 0 0-3-3`},null,-1)]])}var I=E({name:`mdi-lock-outline`,render:F}),L={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function R(e,t){return m(),x(`svg`,L,[...t[0]||=[y(`path`,{fill:`currentColor`,d:`M2 5.27L3.28 4L20 20.72L18.73 22l-3.08-3.08c-1.15.38-2.37.58-3.65.58c-5 0-9.27-3.11-11-7.5c.69-1.76 1.79-3.31 3.19-4.54zM12 9a3 3 0 0 1 3 3a3 3 0 0 1-.17 1L11 9.17A3 3 0 0 1 12 9m0-4.5c5 0 9.27 3.11 11 7.5a11.8 11.8 0 0 1-4 5.19l-1.42-1.43A9.86 9.86 0 0 0 20.82 12A9.82 9.82 0 0 0 12 6.5c-1.09 0-2.16.18-3.16.5L7.3 5.47c1.44-.62 3.03-.97 4.7-.97M3.18 12A9.82 9.82 0 0 0 12 17.5c.69 0 1.37-.07 2-.21L11.72 15A3.064 3.064 0 0 1 9 12.28L5.6 8.87c-.99.85-1.82 1.91-2.42 3.13`},null,-1)]])}var Se=E({name:`mdi-eye-off-outline`,render:R}),z={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function B(e,t){return m(),x(`svg`,z,[...t[0]||=[y(`path`,{fill:`currentColor`,d:`m22 12l-2 1l-1 1l-1-1l-1 3l-1-3l-1 8l-1-8l-1 2l-1-2l-1 4l-1-4l-1 9l-1-9l-1 6l-1-6l-1 1l-1-1l-2-1l2-1l1-1l1 1l1-6l1 6l1-9l1 9l1-4l1 4l1-2l1 2l1-8l1 8l1-3l1 3l1-1l1 1z`},null,-1)]])}var V=E({name:`mdi-waveform`,render:B}),H={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function U(e,t){return m(),x(`svg`,H,[...t[0]||=[y(`path`,{fill:`currentColor`,d:`M16 10H8V6h8m.67-2H15V2H9v2H7.33A1.33 1.33 0 0 0 6 5.33v15.34C6 21.4 6.6 22 7.33 22h9.34A1.33 1.33 0 0 0 18 20.67V5.33C18 4.6 17.4 4 16.67 4`},null,-1)]])}var W=E({name:`mdi-battery-70`,render:U}),G={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function K(e,t){return m(),x(`svg`,G,[...t[0]||=[y(`path`,{fill:`currentColor`,d:`M4 18h9l-2 2H4c-.5 0-1.03-.21-1.41-.59S2 18.5 2 18V8h2zM17.63 4.84C17.27 4.33 16.67 4 16 4H8c-1.1 0-2 .9-2 2v8c0 1.1.9 2 2 2h8c.67 0 1.27-.34 1.63-.85L22 10zM16 14H8V6h8l3.55 4Z`},null,-1)]])}var q=E({name:`mdi-label-multiple-outline`,render:K}),J={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Ce(e,t){return m(),x(`svg`,J,[...t[0]||=[y(`path`,{fill:`currentColor`,d:`M15.5 9c.7 0 1.29-.24 1.77-.73c.49-.48.73-1.07.73-1.77c0-.67-.24-1.27-.73-1.77c-.48-.5-1.07-.73-1.77-.73c-.67 0-1.27.23-1.77.73S13 5.83 13 6.5c0 .7.23 1.29.73 1.77c.5.49 1.1.73 1.77.73m3.81-.09l3.1 3.09L21 13.41l-3.14-3.1c-.78.47-1.58.69-2.39.69c-1.25 0-2.31-.42-3.17-1.3c-.85-.87-1.3-1.93-1.3-3.2c0-1.23.45-2.3 1.33-3.17C13.2 2.45 14.27 2 15.5 2c1.27 0 2.33.45 3.2 1.33c.88.87 1.3 1.94 1.3 3.17c0 .83-.22 1.63-.69 2.41M16.5 18h-11l2.75-3.5l1.97 2.33l2.72-3.52zm1.5-5l2 2v5c0 .55-.19 1-.59 1.4c-.41.39-.88.6-1.41.6H4c-.55 0-1-.21-1.4-.6c-.39-.4-.6-.85-.6-1.4V6c0-.53.21-1 .6-1.41C3 4.19 3.45 4 4 4h5.5c-.3.64-.47 1.31-.5 2H4v14h14z`},null,-1)]])}var Y=E({name:`mdi-image-search-outline`,render:Ce}),X={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Z(e,t){return m(),x(`svg`,X,[...t[0]||=[y(`path`,{fill:`currentColor`,d:`M8 3c-1.11 0-2 .89-2 2v16h12V5c0-1.11-.89-2-2-2zm0 2h8v14H8zm5 6v2h2v-2z`},null,-1)]])}var we=E({name:`mdi-door`,render:Z}),Te={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Q(e,t){return m(),x(`svg`,Te,[...t[0]||=[y(`path`,{fill:`currentColor`,d:`M19 20h-2v-9H7v9H5V9l7-4l7 4zM8 12h8v2H8zm0 3h8v2H8zm8 3v2H8v-2z`},null,-1)]])}var Ee=E({name:`mdi-garage`,render:Q}),$={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function De(e,t){return m(),x(`svg`,$,[...t[0]||=[y(`path`,{fill:`currentColor`,d:`M12 3.25S6 10 6 14c0 3.32 2.69 6 6 6a6 6 0 0 0 6-6c0-4-6-10.75-6-10.75m2.47 6.72l1.06 1.06l-6 6l-1.06-1.06M9.75 10A1.25 1.25 0 0 1 11 11.25a1.25 1.25 0 0 1-1.25 1.25a1.25 1.25 0 0 1-1.25-1.25A1.25 1.25 0 0 1 9.75 10m4.5 4.5a1.25 1.25 0 0 1 1.25 1.25A1.25 1.25 0 0 1 14.25 17A1.25 1.25 0 0 1 13 15.75a1.25 1.25 0 0 1 1.25-1.25`},null,-1)]])}var Oe=E({name:`mdi-water-percent`,render:De}),ke={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Ae(e,t){return m(),x(`svg`,ke,[...t[0]||=[y(`path`,{fill:`currentColor`,d:`M10 3.25S4 10 4 14c0 3.31 2.69 6 6 6s6-2.69 6-6c0-4-6-10.75-6-10.75M10 18c-2.21 0-4-1.79-4-4c0-1.77 2-5.04 4-7.61c2 2.56 4 5.84 4 7.61c0 2.21-1.79 4-4 4M20 7v6h-2V7zm-2 10h2v-2h-2z`},null,-1)]])}var je=E({name:`mdi-water-alert-outline`,render:Ae}),Me={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Ne(e,t){return m(),x(`svg`,Me,[...t[0]||=[y(`path`,{fill:`currentColor`,d:`M9.61 16.11c0-2.08.98-3.92 2.49-5.11H5l1.5-4.5h11l1.22 3.66c.84.37 1.58.91 2.19 1.58L18.92 6c-.2-.58-.76-1-1.42-1h-11c-.66 0-1.22.42-1.42 1L3 12v8c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-1h4.29c-.43-.87-.68-1.85-.68-2.89M6.5 16c-.83 0-1.5-.67-1.5-1.5S5.67 13 6.5 13s1.5.67 1.5 1.5S7.33 16 6.5 16m14.21 4.7l-.01.01zm-4.6-9.09c2.5 0 4.5 2 4.5 4.5c0 .89-.25 1.71-.69 2.39L23 21.61L21.61 23l-3.11-3.07c-.7.43-1.5.68-2.39.68c-2.5 0-4.5-2-4.5-4.5s2-4.5 4.5-4.5m0 2a2.5 2.5 0 1 0 2.5 2.5c0-1.39-1.11-2.5-2.5-2.5`},null,-1)]])}var Pe=E({name:`mdi-car-search`,render:Ne}),Fe={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Ie(e,t){return m(),x(`svg`,Fe,[...t[0]||=[y(`path`,{fill:`currentColor`,d:`M21 16.5c0 .38-.21.71-.53.88l-7.9 4.44c-.16.12-.36.18-.57.18s-.41-.06-.57-.18l-7.9-4.44A.99.99 0 0 1 3 16.5v-9c0-.38.21-.71.53-.88l7.9-4.44c.16-.12.36-.18.57-.18s.41.06.57.18l7.9 4.44c.32.17.53.5.53.88zM12 4.15L6.04 7.5L12 10.85l5.96-3.35zM5 15.91l6 3.38v-6.71L5 9.21zm14 0v-6.7l-6 3.37v6.71z`},null,-1)]])}var Le=E({name:`mdi-cube-outline`,render:Ie}),Re={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function ze(e,t){return m(),x(`svg`,Re,[...t[0]||=[y(`path`,{fill:`currentColor`,d:`M12 3L2 12h3v8h14v-8h3zm0 5.75A2.25 2.25 0 0 1 14.25 11A2.25 2.25 0 0 1 12 13.25A2.25 2.25 0 0 1 9.75 11A2.25 2.25 0 0 1 12 8.75M12 15c1.5 0 4.5.75 4.5 2.25V18h-9v-.75c0-1.5 3-2.25 4.5-2.25`},null,-1)]])}var Be=E({name:`mdi-home-account`,render:ze}),Ve={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function He(e,t){return m(),x(`svg`,Ve,[...t[0]||=[y(`path`,{fill:`currentColor`,d:`M8 14.25L4.75 11H7c.25-5.61 2.39-10 5-10c2 0 3.77 2.64 4.55 6.45C20.36 8.23 23 10 23 12c0 1.83-2.17 3.43-5.4 4.3l.29-2.03C19.8 13.72 21 12.91 21 12c0-1.06-1.65-2-4.13-2.5c.08.79.13 1.63.13 2.5c0 6.08-2.24 11-5 11c-1.83 0-3.43-2.17-4.3-5.4l2.03.29C10.28 19.8 11.09 21 12 21c1.66 0 3-4.03 3-9q0-1.5-.15-2.85Q13.5 9 12 9l-1.86.06l.29-2.01L12 7c.87 0 1.71.05 2.5.13C14 4.65 13.06 3 12 3c-1.54 0-2.82 3.5-3 8h2.25zM14.25 16L11 19.25V17c-5.61-.25-10-2.39-10-5c0-1.83 2.17-3.43 5.4-4.3l-.29 2.03C4.2 10.28 3 11.09 3 12c0 1.54 3.5 2.82 8 3v-2.25z`},null,-1)]])}var Ue=E({name:`mdi-rotate-orbit`,render:He}),We={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Ge(e,t){return m(),x(`svg`,We,[...t[0]||=[y(`path`,{fill:`currentColor`,d:`M21 11c0 5.55-3.84 10.74-9 12c-5.16-1.26-9-6.45-9-12V5l9-4l9 4zm-9 10c3.75-1 7-5.46 7-9.78V6.3l-7-3.12L5 6.3v4.92C5 15.54 8.25 20 12 21m-1-7h2v3h3v-5h2l-6-5l-6 5h2v5h3z`},null,-1)]])}var Ke=E({name:`mdi-shield-home-outline`,render:Ge}),qe={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Je(e,t){return m(),x(`svg`,qe,[...t[0]||=[y(`path`,{fill:`currentColor`,d:`M12 18a6 6 0 0 0 6-6c0-3.32-2.69-6-6-6c-3.32 0-6 2.68-6 6a6 6 0 0 0 6 6m7-15a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5c0-1.11.89-2 2-2zM8 12a4 4 0 0 1 4-4a4 4 0 0 1 4 4a4 4 0 0 1-4 4a4 4 0 0 1-4-4`},null,-1)]])}var Ye=E({name:`mdi-smoke-detector`,render:Je}),Xe={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Ze(e,t){return m(),x(`svg`,Xe,[...t[0]||=[y(`path`,{fill:`currentColor`,d:`M17 6H7c-3.31 0-6 2.69-6 6s2.69 6 6 6h10c3.31 0 6-2.69 6-6s-2.69-6-6-6m0 10H7c-2.21 0-4-1.79-4-4s1.79-4 4-4h10c2.21 0 4 1.79 4 4s-1.79 4-4 4m0-7c-1.66 0-3 1.34-3 3s1.34 3 3 3s3-1.34 3-3s-1.34-3-3-3`},null,-1)]])}var Qe=E({name:`mdi-toggle-switch-outline`,render:Ze}),$e={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function et(e,t){return m(),x(`svg`,$e,[...t[0]||=[y(`path`,{fill:`currentColor`,d:`M15 13V5a3 3 0 0 0-6 0v8a5 5 0 1 0 6 0m-3-9a1 1 0 0 1 1 1v3h-2V5a1 1 0 0 1 1-1`},null,-1)]])}var tt=E({name:`mdi-thermometer`,render:et}),nt={[n.Motion]:d,[n.Object]:M,[n.Audio]:V,[n.Face]:f,[n.LicensePlate]:Pe,[n.Classifier]:q,[n.Clip]:Y,[n.ObjectAssist]:Le,[n.Contact]:we,[n.Temperature]:tt,[n.Humidity]:Oe,[n.Occupancy]:Be,[n.Smoke]:Ye,[n.Leak]:je,[n.Light]:A,[n.Siren]:j,[n.Switch]:Qe,[n.Lock]:I,[n.PTZ]:Ue,[n.SecuritySystem]:Ke,[n.Garage]:Ee,[n.Doorbell]:i,[n.Battery]:W};function rt(e){return nt[e]??d}var it={class:`flex flex-col`},at={key:0,class:`page-title`},ot={class:`flex gap-2 mb-4`},st={key:1,class:`flex flex-1 min-h-0 flex-col items-center justify-center w-full gap-4 py-16`},ct={key:2,class:`flex flex-1 min-h-0 flex-col items-center justify-center w-full gap-4 py-20`},lt={class:`text-muted text-sm`},ut={key:3,class:`flex min-h-0 flex-col`},dt={class:`flex items-center justify-center`},ft={class:`flex flex-col min-w-0`},pt={class:`flex items-center gap-2 min-w-0`},mt={class:`font-bold text-color truncate`},ht={key:0,class:`text-xs text-muted truncate`},gt={class:`flex items-center justify-end gap-1`},_t={key:2,class:`shrink-0`},vt={key:0,class:`flex items-center justify-end mt-4`},yt=u(w({__name:`Sensors`,setup(n){let i=o(()=>h(()=>import(`./SensorEdit-BJAijbmc.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]),import.meta.url)),u=o(()=>h(()=>import(`./SensorHistory-DW00ZuHR.js`),__vite__mapDeps([20,1,2,3,21,22,4,5,6,7,8,9,10,11,12,13,14]),import.meta.url)),d=o(()=>h(()=>import(`./VirtualSensorCreate-BXz0lWNm.js`),__vite__mapDeps([23,1,2,3,4,5,6,7,8,9,10,11,12,13,14]),import.meta.url)),f=new N,w=new c,E=s(),{t:A}=r(),{smBreakpoint:j}=l(),{data:M,isBusy:P}=f.getSensorsQuery(),{data:F}=w.getCamerasQuery({page:1,pageSize:-1}),{mutateAsync:L,isPending:R}=f.createVirtualSensorQuery(),{mutateAsync:z}=f.patchSensorQuery(),{mutateAsync:B,isPending:V}=f.deleteSensorQuery(),H={bodyRow:{class:`text-sm text-secondary`},column:{columnTitle:{class:`text-sm`}},datatable:{class:`z-0`}},U=S(``),W=S(!1),G=T(()=>a(void 0,`admin`)),K=T(()=>M.value??[]),q=T(()=>(F.value?.result??[]).map(e=>({label:e.name,value:e._id}))),J=T(()=>{let e=U.value.toLowerCase().trim();return K.value.map(e=>({sensor:e,label:e.displayName||e.name,typeLabel:A(`components.camera_options.sensor_type_${e.type}`),pluginLabel:e.virtual?A(`views.sensors.owner_virtual`):e.pluginName,assignedLabel:e.assignedCameraIds.map(e=>q.value.find(t=>t.value===e)?.label).filter(Boolean).join(`, `)})).filter(t=>!e||[t.label,t.typeLabel,t.pluginLabel,t.assignedLabel].some(t=>t.toLowerCase().includes(e))).sort((e,t)=>e.label.localeCompare(t.label))}),Ce=T(()=>W.value?J.value:J.value.filter(e=>!e.sensor.hidden)),Y=T(()=>J.value.filter(e=>e.sensor.hidden).length);function X(e){return e.sensor.hidden?`opacity-50`:``}function Z(e){return e.virtual||!e.connected}function we(e){!G.value||e.sensor.hidden||E.openComponentDialog(i,{data:{title:e.label,confirmText:A(`components.form.button.save`),contentProps:{sensor:e.sensor,cameraOptions:q.value}},onConfirm:async t=>{t&&await z({id:e.sensor.id,data:t})}})}function Te(e){E.openComponentDialog(u,{data:{title:`${e.displayName||e.name} · ${A(`views.sensors.history`)}`,hideConfirmButton:!0,contentProps:{sensorId:e.id,sensorType:String(e.type)}}})}async function Q(e,t){await z({id:e.id,data:{hidden:t}})}function Ee(){E.openComponentDialog(d,{data:{title:A(`views.sensors.create_virtual`),confirmText:A(`components.form.button.save`),loading:R,contentProps:{}},onConfirm:async e=>{e&&await L({data:e})}})}function $(e){E.openTextDialog({data:{title:A(`views.sensors.delete`),contentText:A(`views.sensors.delete_confirm`),confirmText:A(`components.form.button.remove`),loading:V,confirmButtonProps:{severity:`danger`}},onConfirm:async()=>{await B({id:e.id})}})}return(n,r)=>{let i=ve,a=te,o=ae,s=_e,c=de,l=ee,u=ue,d=re,f=ie,h=e,S=pe,w=Se,T=fe,E=I,M=ge,N=xe,F=be,L=me,R=he,z=t,B=oe,V=ne;return m(),x(`div`,it,[C(j)?k(``,!0):(m(),x(`h1`,at,b(C(A)(`views.sensors.title`)),1)),O(o,{position:`left`},{default:g(()=>[O(a,{severity:`secondary`,text:``,class:`cui-button p-2 text-color non-draggable-region`,onClick:r[0]||=e=>n.$router.push(`/menu`)},{icon:g(()=>[O(i,{class:`w-6 h-6`})]),_:1})]),_:1}),y(`div`,ot,[O(u,{class:`flex-1`},{default:g(()=>[O(c,null,{default:g(()=>[O(s,{class:`w-4 h-4`})]),_:1}),O(l,{modelValue:C(U),"onUpdate:modelValue":r[1]||=e=>se(U)?U.value=e:null,placeholder:C(A)(`views.sensors.search`),class:`w-full`},null,8,[`modelValue`,`placeholder`])]),_:1})]),C(P)?(m(),x(`div`,st,[O(d,{"stroke-width":`5`,class:`w-[30px] h-[30px]`})])):C(K).length?(m(),x(`div`,ut,[O(z,{class:`cui-card`},{content:g(()=>[O(R,{value:C(Ce),"striped-rows":``,pt:H,class:`w-full`,onRowClick:r[2]||=e=>we(e.data)},{default:g(()=>[O(S,{header:``,"header-class":`p-2 pl-4 w-5 max-w-5`,class:`p-2 pl-4 w-5 max-w-5`},{body:g(({data:e})=>[y(`div`,dt,[_(O(h,{style:ce({background:e.sensor.connected?`green`:`gray`})},null,8,[`style`]),[[V,{value:e.sensor.connected?C(A)(`views.sensors.connected`):C(A)(`views.sensors.disconnected`)}]])])]),_:1}),O(S,{field:`label`,header:C(A)(`views.sensors.name`),sortable:``,"header-class":`p-2`,class:`p-2 w-full min-w-[180px] max-w-0`},{body:g(({data:e})=>[y(`div`,{class:v([`flex items-center gap-2 min-w-0`,X(e)])},[(m(),D(le(C(rt)(e.sensor.type)),{class:`w-5 h-5 shrink-0 text-muted`})),y(`div`,ft,[y(`div`,pt,[y(`span`,mt,b(e.label),1),e.sensor.exposed?k(``,!0):_((m(),D(w,{key:0,class:`w-4 h-4 shrink-0 text-muted`},null,512)),[[V,C(A)(`views.sensors.not_exposed`)]])]),C(j)?(m(),x(`span`,ht,b(e.typeLabel)+` · `+b(e.pluginLabel),1)):k(``,!0)])],2)]),_:1},8,[`header`]),C(j)?k(``,!0):(m(),D(S,{key:0,field:`typeLabel`,header:C(A)(`views.sensors.type`),sortable:``,"header-class":`p-2 whitespace-nowrap`,class:`p-2 whitespace-nowrap`},{body:g(({data:e})=>[y(`span`,{class:v([`text-xs text-muted whitespace-nowrap`,X(e)])},b(e.typeLabel),3)]),_:1},8,[`header`])),C(j)?k(``,!0):(m(),D(S,{key:1,field:`pluginLabel`,header:C(A)(`views.sensors.plugin`),sortable:``,"header-class":`p-2 whitespace-nowrap`,class:`p-2 whitespace-nowrap`},{body:g(({data:e})=>[O(T,{label:e.pluginLabel,class:v([`text-xs whitespace-nowrap`,X(e)])},null,8,[`label`,`class`])]),_:1},8,[`header`])),O(S,{field:`assignedLabel`,header:C(A)(`views.sensors.assigned_cameras`),sortable:``,"header-class":`p-2 whitespace-nowrap`,class:`p-2 min-w-[140px]`},{body:g(({data:e})=>[y(`div`,{class:v([`flex items-center gap-1 min-w-0`,X(e)])},[e.sensor.assignmentLocked?_((m(),D(E,{key:0,class:`w-3.5 h-3.5 shrink-0 text-muted`},null,512)),[[V,C(A)(`views.sensors.assigned_cameras_locked_hint`)]]):k(``,!0),y(`span`,{class:v([`text-xs truncate`,e.assignedLabel?`text-muted`:`text-muted italic`])},b(e.assignedLabel||C(A)(`views.sensors.unassigned`)),3)],2)]),_:1},8,[`header`]),O(S,{header:``,"header-class":`p-2 pr-4 w-28`,class:`p-2 pr-4 w-28`},{body:g(({data:e})=>[y(`div`,gt,[_((m(),D(a,{text:``,rounded:``,severity:`secondary`,class:`cui-icon-sm shrink-0`,onClick:p(t=>Te(e.sensor),[`stop`])},{icon:g(()=>[O(M,{width:`100%`,height:`100%`})]),_:1},8,[`onClick`])),[[V,C(A)(`views.sensors.history`),void 0,{left:!0}]]),C(G)&&!e.sensor.hidden?_((m(),D(a,{key:0,text:``,rounded:``,severity:`secondary`,class:`cui-icon-sm shrink-0`,onClick:p(t=>Q(e.sensor,!0),[`stop`])},{icon:g(()=>[O(N,{width:`100%`,height:`100%`,class:`text-muted`})]),_:1},8,[`onClick`])),[[V,C(A)(`views.sensors.hide`),void 0,{left:!0}]]):C(G)?_((m(),D(a,{key:1,text:``,rounded:``,severity:`secondary`,class:`cui-icon-sm shrink-0`,onClick:p(t=>Q(e.sensor,!1),[`stop`])},{icon:g(()=>[O(F,{width:`100%`,height:`100%`,class:`text-muted`})]),_:1},8,[`onClick`])),[[V,C(A)(`views.sensors.unhide`),void 0,{left:!0}]]):k(``,!0),C(G)?_((m(),x(`span`,_t,[O(a,{text:``,rounded:``,severity:`danger`,class:`cui-icon-sm`,disabled:!Z(e.sensor),onClick:p(t=>$(e.sensor),[`stop`])},{icon:g(()=>[O(L,{width:`100%`,height:`100%`})]),_:1},8,[`disabled`,`onClick`])])),[[V,Z(e.sensor)?C(A)(`views.sensors.delete`):C(A)(`views.sensors.delete_connected`),void 0,{left:!0}]]):k(``,!0)])]),_:1})]),_:1},8,[`value`]),C(Y)>0?(m(),x(`div`,vt,[O(a,{severity:`secondary`,class:`cui-button-medium`,label:C(W)?C(A)(`views.sensors.hide_hidden`):`${C(A)(`views.sensors.show_hidden`)} (${C(Y)})`,onClick:r[3]||=e=>W.value=!C(W)},null,8,[`label`])])):k(``,!0)]),_:1})])):(m(),x(`div`,ct,[O(f,{class:`w-12 h-12 text-muted`}),y(`span`,lt,b(C(A)(`views.sensors.no_sensors`)),1)])),C(G)?(m(),D(B,{key:4,"tooltip-props":{value:C(A)(`views.sensors.create_virtual`)},"button-props":{class:`text-white`},icon:C(ye),"icon-props":{width:`30px`,height:`30px`},onClick:Ee},null,8,[`tooltip-props`,`icon`])):k(``,!0)])}}}),[[`__scopeId`,`data-v-2fc254ef`]]);export{yt as default};
@@ -1 +0,0 @@
1
- import{t as e}from"./SettingsAccount-DOd4JeGd.js";export{e as default};
@@ -1 +0,0 @@
1
- import{t as e}from"./SettingsAppearance-11UFhRDY.js";export{e as default};
@@ -1 +0,0 @@
1
- import{kr as e}from"./vendor-cameraui-BqkrW4Bb.js";import{Qt as t,Yt as n,b as r}from"./api-milc5VEE.js";import{Fn as i,Nn as a,Xn as o,br as s,cn as c,en as l,fn as u,gr as d,hn as f,in as p,on as m,pn as h,zn as g}from"./vendor-CSg6_Jfu.js";import{t as _}from"./CuiList-CDed3qXV.js";import{t as v}from"./chevron-right-B4vB0gm4.js";var y=f({__name:`SettingsList`,setup(f){let{t:y}=e(),b=p(()=>r.find(e=>e.name===`Settings`).children.filter(e=>e.meta?.settingsBar&&t(e)).map(e=>({to:`/settings/${e.path}`,label:y(`navigation.${e.meta.name.toLowerCase()}`),icon:e.meta.settingsBar.icon.default})));return(e,t)=>{let r=v,f=n,p=_;return a(),c(`div`,null,[h(p,{size:`large`,dividers:``,class:`!h-auto`},{default:o(()=>[(a(!0),c(l,null,i(d(b),e=>(a(),m(f,{key:e.to,to:e.to},{prepend:o(()=>[(a(),m(g(e.icon),{class:`w-5 h-5 text-muted`}))]),append:o(()=>[h(r,{class:`w-5 h-5 text-muted`})]),default:o(()=>[u(` `+s(e.label)+` `,1)]),_:2},1032,[`to`]))),128))]),_:1})])}}});export{y as default};
@@ -1 +0,0 @@
1
- import{F as e,O as t,Ot as n,Pt as ee,kr as r,wt as te}from"./vendor-cameraui-BqkrW4Bb.js";import{On as i,Qn as a,Y as o,Yn as s,Z as ne,Zn as re,i as c,ir as l,it as ie,kn as ae,nr as u,o as d,on as f,rt as oe}from"./api-milc5VEE.js";import{Nn as p,On as se,U as m,Xn as h,Zn as ce,_r as le,an as g,b as ue,br as _,cn as v,cr as y,en as b,fn as x,gr as S,hn as C,in as w,ir as T,on as E,pn as D,q as de,qn as O,qt as k,rr as A,sn as j,v as M,wn as fe,y as N,zn as pe}from"./vendor-CSg6_Jfu.js";import{a as me}from"./useElectron-Dg8tFzam.js";import{R as P,z as F}from"./types-CoXm85So.js";import{K as he,L as ge,R as _e,a as ve,j as ye,l as be,s as xe,z as Se}from"./vendor-primevue-DYzLjOFZ.js";import{t as Ce}from"./server-Bv5NVJ0G.js";import{t as we}from"./CuiQRCode-D52Fcu61.js";var Te={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function I(e,t){return p(),v(`svg`,Te,[...t[0]||=[g(`path`,{fill:`currentColor`,d:`M20.454 21.87L17.612 19H6.5q-1.896 0-3.198-1.302T2 14.5q0-1.829 1.226-3.098t2.87-1.368q.018-.373.208-.925q.19-.553.438-.951l-3.88-3.881l.707-.708l17.593 17.593zm.454-3.812L8.78 5.937q.875-.523 1.612-.73T12 5q2.502 0 4.251 1.749T18 11v1h.616q1.436.046 2.41 1.055T22 15.5q0 .687-.25 1.332t-.842 1.226`},null,-1)]])}var Ee=T({name:`material-symbols-light-cloud-off`,render:I}),De={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Oe(e,t){return p(),v(`svg`,De,[...t[0]||=[g(`path`,{fill:`currentColor`,d:`m9.55 18l-5.7-5.7l1.425-1.425L9.55 15.15l9.175-9.175L20.15 7.4z`},null,-1)]])}var ke=T({name:`material-symbols-check`,render:Oe}),Ae={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function L(e,t){return p(),v(`svg`,Ae,[...t[0]||=[g(`path`,{fill:`currentColor`,d:`M20.5 16H15v-1h4c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2H5c-1.1 0-2 .9-2 2v9c0 1.1.9 2 2 2h4v1H3.5c-.83 0-1.5.67-1.5 1.5v3c0 .83.67 1.5 1.5 1.5h17c.83 0 1.5-.67 1.5-1.5v-3c0-.83-.67-1.5-1.5-1.5M5 4h14v9H5zm10 16H5v-2h10zm3 0c-.55 0-1-.45-1-1s.45-1 1-1s1 .45 1 1s-.45 1-1 1`,class:`b`},null,-1)]])}var je=T({name:`boxicons-computer-filled`,render:L}),Me={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Ne(e,t){return p(),v(`svg`,Me,[...t[0]||=[g(`path`,{fill:`currentColor`,d:`M17.9 17.39c-.26-.8-1.01-1.39-1.9-1.39h-1v-3a1 1 0 0 0-1-1H8v-2h2a1 1 0 0 0 1-1V7h2a2 2 0 0 0 2-2v-.41a7.984 7.984 0 0 1 2.9 12.8M11 19.93c-3.95-.49-7-3.85-7-7.93c0-.62.08-1.22.21-1.79L9 15v1a2 2 0 0 0 2 2m1-16A10 10 0 0 0 2 12a10 10 0 0 0 10 10a10 10 0 0 0 10-10A10 10 0 0 0 12 2`},null,-1)]])}var Pe=T({name:`mdi-earth`,render:Ne}),R={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Fe(e,t){return p(),v(`svg`,R,[...t[0]||=[g(`path`,{fill:`currentColor`,d:`M10 2c-1.11 0-2 .89-2 2v3c0 1.11.89 2 2 2h1v2H2v2h4v2H5c-1.11 0-2 .89-2 2v3c0 1.11.89 2 2 2h4c1.11 0 2-.89 2-2v-3c0-1.11-.89-2-2-2H8v-2h8v2h-1c-1.11 0-2 .89-2 2v3c0 1.11.89 2 2 2h4c1.11 0 2-.89 2-2v-3c0-1.11-.89-2-2-2h-1v-2h4v-2h-9V9h1c1.11 0 2-.89 2-2V4c0-1.11-.89-2-2-2zm0 2h4v3h-4zM5 17h4v3H5zm10 0h4v3h-4z`},null,-1)]])}var Ie=T({name:`mdi-lan`,render:Fe});async function Le({signal:e}){return(await l.get(`/remote`,{signal:e})).data}async function Re(e){return(await l.patch(`/remote`,e)).data}async function ze(e){return(await l.post(`/remote/pair/init`,e?{name:e}:{})).data}async function Be({name:e}={}){return(await l.post(`/remote/pair/poll`,e?{name:e}:{})).data}async function Ve(){await l.delete(`/remote/unregister`)}async function He({signal:e}){return(await l.get(`/remote/status`,{signal:e})).data}async function Ue(e){await l.patch(`/remote/name`,{name:e})}async function We({signal:e}){return(await l.get(`/remote/tunnel`,{signal:e})).data}async function Ge({signal:e}={}){return(await l.get(`/remote/connection-info`,{signal:e})).data}async function z(e){return(await l.post(`/remote/test/${e}`)).data}async function Ke({signal:e}={}){return(await l.get(`/remote/cloudflare/managed/status`,{signal:e})).data}async function qe(e){await l.post(`/remote/cloudflare/managed/connect`,{hostname:e})}async function Je(){await l.post(`/remote/cloudflare/managed/cancel`)}async function Ye(){await l.post(`/remote/cloudflare/managed/disconnect`)}async function Xe(){await l.post(`/remote/cloudflare/managed/logout`)}var Ze=class{_queryClient=de();t=a.global.t;toast=re();queryActivator=y([{name:`getRemoteInfoQuery`,enabled:!0},{name:`getRegistrationStatusQuery`,enabled:!0},{name:`getTunnelStatusQuery`,enabled:!0},{name:`getConnectionInfoQuery`,enabled:!0},{name:`getCloudflareManagedStatusQuery`,enabled:!0}]);get queryClient(){return this._queryClient}getRemoteInfoQuery(){return s({queryKey:[`remote`],queryFn:({signal:e})=>Le({signal:e}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getRemoteInfoQuery`&&e.enabled),staleTime:1e3})}patchRemoteInfoQuery(){return m({mutationFn:Re,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`remote`],exact:!0}),this.toast.add({severity:`success`,detail:this.t(`components.toast.remote_updated`),life:3e3})}})}getRegistrationStatusQuery(){return s({queryKey:[`remote`,`status`],queryFn:({signal:e})=>He({signal:e}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getRegistrationStatusQuery`&&e.enabled),staleTime:1e3})}pairInitMutation(){return m({mutationFn:ze})}pairPollMutation(){return m({mutationFn:Be,onSuccess:async e=>{e.state===`confirmed`&&(await this._queryClient.refetchQueries({queryKey:[`remote`],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`remote`,`status`],exact:!0}),this.toast.add({severity:`success`,detail:this.t(`components.toast.remote_registered`),life:3e3}))}})}unregisterServerQuery(){return m({mutationFn:Ve,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`remote`],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`remote`,`status`],exact:!0}),this.toast.add({severity:`success`,detail:this.t(`components.toast.remote_unregistered`),life:3e3})}})}getTunnelStatusQuery(){return s({queryKey:[`remote`,`tunnel`],queryFn:({signal:e})=>We({signal:e}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getTunnelStatusQuery`&&e.enabled),refetchInterval:3e4,staleTime:1e4})}updateServerNameQuery(){return m({mutationFn:Ue,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`remote`,`status`],exact:!0}),this.toast.add({severity:`success`,detail:this.t(`components.toast.server_name_updated`),life:3e3})}})}getConnectionInfoQuery(){return s({queryKey:[`remote`,`connection-info`],queryFn:({signal:e})=>Ge({signal:e}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getConnectionInfoQuery`&&e.enabled),refetchInterval:1e4})}testRemoteModeMutation(){return m({mutationFn:z})}getCloudflareManagedStatusQuery(){return s({queryKey:[`remote`,`cloudflare`,`managed`],queryFn:({signal:e})=>Ke({signal:e}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getCloudflareManagedStatusQuery`&&e.enabled),refetchInterval:e=>{let t=e.state.data?.state;return t===`awaiting_login`||t===`creating_tunnel`||t===`setting_dns`?2e3:!1},refetchOnWindowFocus:!0,staleTime:1e3})}cloudflareManagedConnectMutation(){return m({mutationFn:qe,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`remote`,`cloudflare`,`managed`],exact:!0})}})}cloudflareManagedCancelMutation(){return m({mutationFn:Je,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`remote`,`cloudflare`,`managed`],exact:!0})}})}cloudflareManagedDisconnectMutation(){return m({mutationFn:Ye,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`remote`],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`remote`,`cloudflare`,`managed`],exact:!0})}})}cloudflareManagedLogoutMutation(){return m({mutationFn:Xe,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`remote`],exact:!0}),await this._queryClient.refetchQueries({queryKey:[`remote`,`cloudflare`,`managed`],exact:!0})}})}toggleQueryActivator(e,t){let n=this.queryActivator.value.find(t=>t.name===e);return n&&(n.enabled=t),this}},Qe=F,$e=P,et={class:`w-full h-full`},tt={key:0,class:`w-full h-full flex items-center justify-center`},nt={key:1,class:`flex flex-col w-full gap-6`},rt={key:0},it={class:`card-title`},at={class:`flex items-center gap-4`},ot={class:`flex flex-col field-switch-gap min-w-0`},st={class:`text-sm font-bold text-color`},ct={class:`card-title`},lt={class:`flex flex-col gap-6`},ut={class:`flex items-center gap-4`},dt={class:`flex flex-col field-switch-gap`},ft={for:`enabled`,class:`cui-label-switch`},pt={class:`flex flex-col field-gap`},mt={for:`serverName`,class:`cui-label`},ht={class:`flex items-center gap-4`},gt={class:`flex flex-col field-switch-gap`},_t={class:`text-sm`},vt={class:`ml-auto shrink-0`},yt={key:1,class:`text-sm font-bold text-amber-500`},bt={key:2,class:`text-sm font-bold`},xt={key:0,class:`flex items-center gap-4`},St={class:`flex flex-col field-switch-gap`},Ct={class:`text-sm`},wt={class:`ml-auto shrink-0`},Tt={key:`pairing`,class:`cui-toggle-switch flex flex-col gap-4`},Et={class:`cui-pair-layout`},Dt={class:`cui-pair-qr`},Ot={class:`flex flex-col gap-4 flex-1 min-w-0`},kt={class:`flex flex-col field-gap`},At={class:`cui-label`},jt={class:`flex flex-col field-gap`},Mt={class:`cui-label`},Nt={class:`flex items-center gap-3`},Pt={class:`text-sm`},Ft={class:`flex items-center gap-4`},It={class:`flex`},Lt={class:`card-title`},Rt={class:`flex flex-col gap-6`},zt={class:`flex items-center gap-4`},Bt={class:`flex flex-col field-switch-gap`},Vt={for:`directEnabled`,class:`cui-label-switch`},Ht={class:`flex flex-col field-gap`},Ut={class:`cui-label`},Wt={for:`directMode`,class:`cui-label`},Gt={key:0,class:`cui-toggle-switch flex flex-col gap-4`},Kt={class:`flex flex-col field-gap`},qt={for:`cloudflareVariant`,class:`cui-label`},Jt={key:0,class:`flex items-center gap-3`},Yt={class:`flex flex-col field-gap`},Xt={for:`cloudflareHostname`,class:`cui-label`},Zt={class:`flex flex-col field-gap`},Qt={for:`cloudflareToken`,class:`cui-label`},$t={class:`flex items-center gap-3`},en={class:`flex flex-col field-gap`},tn={for:`cloudflareHostnameManaged`,class:`cui-label`},nn={class:`flex items-center gap-3`},rn={key:0,class:`cf-login-setup`},an={class:`cf-login-qr`},on={class:`flex flex-col gap-4 flex-1 min-w-0`},sn={class:`flex flex-col field-gap`},cn={class:`cui-label`},ln={class:`flex items-center gap-3`},un={class:`text-sm`},dn={key:1,class:`flex items-center gap-3`},fn={class:`text-sm`},pn={key:2,class:`flex items-center gap-3`},mn={class:`text-sm`},hn={class:`flex flex-col field-gap`},gn={class:`cui-label`},_n={key:0,class:`flex flex-col field-gap`},vn={class:`cui-label`},yn={class:`flex items-center gap-3`},bn={key:1,class:`cui-toggle-switch flex flex-col gap-4`},xn={for:`customDomain.url`,class:`cui-label`},Sn={class:`flex items-center gap-3`},Cn={class:`card-title`},wn={class:`flex flex-col gap-6`},Tn={class:`text-sm`},En={for:`serverAddresses`,class:`cui-label`},Dn=f(C({__name:`SettingsRemote`,setup(a){let s=new Ce,l=new Ze,f=me(),m=o(),C=re(),{t:T}=r(),{data:de,isBusy:P}=s.getServerInfoQuery(),{data:F,isBusy:Te}=l.getRemoteInfoQuery(),{data:I,isBusy:De}=l.getRegistrationStatusQuery(),{data:Oe,isLoading:Ae}=l.getTunnelStatusQuery(),{data:L}=l.getConnectionInfoQuery(),{mutateAsync:Me,isPending:Ne}=s.patchSystemInfoQuery(),{mutateAsync:R,isPending:Fe}=l.patchRemoteInfoQuery(),{mutateAsync:Le,isPending:Re}=l.pairInitMutation(),{mutateAsync:ze}=l.pairPollMutation(),{mutateAsync:Be,isPending:Ve}=l.unregisterServerQuery(),{mutateAsync:He,isPending:Ue}=l.updateServerNameQuery(),{mutateAsync:We,isPending:Ge}=l.testRemoteModeMutation(),{data:z}=l.getCloudflareManagedStatusQuery(),{mutateAsync:Ke,isPending:qe}=l.cloudflareManagedConnectMutation(),{mutateAsync:Je,isPending:Ye}=l.cloudflareManagedCancelMutation(),{mutateAsync:Xe,isPending:Dn}=l.cloudflareManagedDisconnectMutation(),{mutateAsync:On,isPending:kn}=l.cloudflareManagedLogoutMutation(),B=y(),V=y(),H=y(``),U=y(``),W=y(`quick`),G=y(``),K=y(``),An=y(!1),q=y(null),J=y(``),jn=y(null),Mn=y(2),Nn=y(``),Y=null,Pn=null,X=w(()=>Ne.value||Fe.value||P.value||Te.value||De.value||Ve.value),Fn=w(()=>!!(V.value?.enabled||V.value?.directEnabled)),In=w(()=>F.value?.directOverride??{active:!1,fallback:!1}),Z=w(()=>I.value?.isRegistered??!1),Ln=w(()=>I.value?.needsReauth??!1),Rn=w(()=>!X.value),zn=w(()=>{if(!Rn.value)return!1;let e=H.value.trim();return!e||e.length>100?!1:e!==(I.value?.serverName??``)}),Bn=w(()=>{if(!V.value)return!1;if(V.value.directMode===`customDomain`){let e=U.value.trim();if(!e)return!1;try{new URL(e)}catch{return!1}return e!==(F.value?.remoteSettings.customDomain.url??``)}if(V.value.directMode===`cloudflare`){let e=F.value?.remoteSettings.cloudflare,t=F.value?.remoteSettings.directMode!==`cloudflare`,n=W.value;if(n===`quick`)return t||e?.mode!==`quick`;let ee=G.value.trim();if(!ee||!/^[a-z0-9.-]+\.[a-z]{2,}$/i.test(ee))return!1;if(n===`token`){let n=K.value.trim();if(!n&&!An.value)return!1;let r=n.length>0;return t||e?.mode!==`token`||e?.hostname!==ee||r}return n===`managed`?t||e?.mode!==`managed`||e?.hostname!==ee:!1}return V.value.directMode!==F.value?.remoteSettings.directMode}),Vn=w(()=>[{value:`cloudflare`,label:T(`components.form.label.cloudflare`),description:T(`components.form.hint.cloudflare_mode_info`)},{value:`customDomain`,label:T(`components.form.label.custom_domain`),description:T(`components.form.hint.custom_domain_mode_info`)}]),Hn=w(()=>Vn.value.find(e=>e.value===V.value?.directMode)?.description??``),Un=w(()=>[{value:`quick`,label:T(`components.form.label.cloudflare_variant_quick`),description:T(`components.form.hint.cloudflare_variant_quick`)},{value:`token`,label:T(`components.form.label.cloudflare_variant_token`),description:T(`components.form.hint.cloudflare_variant_token`)},{value:`managed`,label:T(`components.form.label.cloudflare_variant_managed`),description:T(`components.form.hint.cloudflare_variant_managed`)}]),Wn=w(()=>Un.value.find(e=>e.value===W.value)?.description??``),Gn=w(()=>{if(W.value===`quick`)return!0;let e=F.value?.remoteSettings.cloudflare;return e?.mode===W.value&&!!e?.hostname}),Q=w(()=>z.value?.state??`idle`),Kn=w(()=>{if(Q.value!==`idle`)return!1;let e=G.value.trim();return!!e&&/^[a-z0-9.-]+\.[a-z]{2,}$/i.test(e)}),qn=w(()=>{let e=L.value?.currentConnection.type??`lan`;return T(`views.settings.connection_type.${e}`)}),Jn=w(()=>{let e=L.value?.currentConnection.type;return e===`cloud`?i:e===`external`?Pe:e===`local`?je:Ie}),Yn=w(()=>{let e=L.value?.currentConnection.type;return e===`cloud`?`text-warning`:e===`external`?`text-info`:e===`local`?`text-primary`:`text-success`});async function Xn(){let e=H.value.trim();if(e)try{await He(e)}catch{}}function Zn(){m.openTextDialog({data:{title:T(`components.dialog.title.unregister_server`),confirmText:T(`components.form.button.unregister`),contentText:T(`components.dialog.message.confirm_unregister_server`),loading:X},onConfirm:async()=>{try{await Be()}catch{}}})}function Qn(){Y&&=(clearTimeout(Y),null),Pn&&=(clearInterval(Pn),null)}function $(){Qn(),q.value=null,J.value=``,jn.value=null,Nn.value=``}function $n(e){let t=Math.max(0,Math.floor(e/1e3));return`${Math.floor(t/60)}:${(t%60).toString().padStart(2,`0`)}`}function er(){Pn&&clearInterval(Pn);let e=()=>{if(!jn.value)return;let e=jn.value-Date.now();if(e<=0){$(),C.add({severity:`warn`,detail:T(`components.toast.pair_expired`),life:3e3});return}Nn.value=$n(e)};e(),Pn=setInterval(e,1e3)}function tr(){Y&&clearTimeout(Y),Y=setTimeout(nr,Mn.value*1e3)}async function nr(){if(!q.value)return;let e=q.value;try{let t=await ze({name:H.value.trim()||void 0});if(!q.value||q.value!==e)return;if(t.state===`confirmed`){$();return}if(t.state===`expired`){$(),C.add({severity:`warn`,detail:T(`components.toast.pair_expired`),life:3e3});return}if(t.state===`denied`){$(),C.add({severity:`warn`,detail:T(`components.toast.pair_denied`),life:3e3});return}t.state===`slow_down`&&(Mn.value=Math.min(Mn.value+2,10)),tr()}catch(t){if(!q.value||q.value!==e)return;f.error(`pair poll failed:`,t),tr()}}async function rr(){$();try{let e=H.value.trim();if(e&&e!==(I.value?.serverName??``))try{await He(e)}catch{}let t=await Le(e||void 0);q.value=t.userCode,J.value=t.verificationUriComplete,jn.value=Date.now()+t.expiresIn*1e3,Mn.value=Math.max(1,t.pollInterval),er(),tr()}catch(e){C.add({severity:`error`,detail:e,life:3e3})}}function ir(){$()}async function ar(){if(q.value)try{await c(q.value)}catch{}}async function or(){if(J.value)try{await c(J.value)}catch{}}function sr(){J.value&&window.open(J.value,`_blank`,`noopener`)}function cr(e){let t=window.location.host===u||!1,n;n=e?`components.dialog.message.confirm_enable_cloud`:t?`components.dialog.message.confirm_disable_cloud_remote`:`components.dialog.message.confirm_disable_cloud_local`,m.openTextDialog({data:{title:T(`components.dialog.title.confirm`),contentText:T(n),confirmText:T(e?`components.form.button.enable`:`components.form.button.disable`),loading:X,confirmButtonProps:e?void 0:{severity:`danger`}},onConfirm:async()=>{try{await R(e?{enabled:!0}:{enabled:!1})}catch{V.value&&(V.value.enabled=!e)}},onCancel:()=>{V.value&&(V.value.enabled=!e)}})}function lr(e){R({directEnabled:e}).catch(()=>{V.value&&(V.value.directEnabled=!e)})}function ur(e){V.value&&(V.value.directMode=e)}function dr(e){W.value=e}async function fr(){let e=G.value.trim();if(e)try{await R({directMode:`cloudflare`,cloudflare:{mode:`managed`,hostname:e}}),await Ke(e)}catch{}}async function pr(){try{await Je()}catch{}}async function mr(){try{await Xe()}catch{}}async function hr(){try{await On()}catch{}}async function gr(e){try{await c(e)}catch{}}function _r(e){window.open(e,`_blank`,`noopener`)}async function vr(e){try{let t=await We(e);t.ok?C.add({severity:`success`,detail:T(`components.toast.remote_test_success`),life:3e3}):C.add({severity:`error`,detail:T(`components.toast.remote_test_failed`,{message:t.message??``}),life:5e3})}catch(e){C.add({severity:`error`,detail:T(`components.toast.remote_test_failed`,{message:e?.message??``}),life:5e3})}}async function yr(e){let t={directMode:e.directMode};if(e.directMode===`customDomain`)t.customDomain={url:U.value.trim()};else if(e.directMode===`cloudflare`){let e=W.value;if(e===`quick`)t.cloudflare={mode:`quick`,hostname:null,token:null};else if(e===`token`){let e=K.value.trim();t.cloudflare={mode:`token`,hostname:G.value.trim(),...e?{token:e}:{}}}else e===`managed`&&(t.cloudflare={mode:`managed`,hostname:G.value.trim(),token:null})}try{await R(t)}catch{}}async function br(e){try{await Me(e)}catch{}}return O(()=>I.value?.serverName,e=>{e&&(H.value=e)},{immediate:!0}),O(Z,e=>{e&&q.value&&$()}),O(de,e=>{if(e){let t=d(e);B.value={...t,serverAddresses:(t.serverAddresses||[]).filter(Boolean)}}},{deep:!0,immediate:!0}),O(F,e=>{if(e){let t=d(e);V.value={...t.remoteSettings},U.value=t.remoteSettings.customDomain.url??``;let n=t.remoteSettings.cloudflare;W.value=n?.mode??`quick`,G.value=n?.hostname??``,K.value=``,An.value=t.cloudflareTokenSet??!1}},{deep:!0,immediate:!0}),se(()=>{Qn()}),(r,i)=>{let a=te,o=Se,s=e,re=he,c=t,l=ke,u=n,d=ge,f=_e,se=ve,m=we,y=ie,C=ae,w=Ee,T=ye,O=xe,me=be,P=ee;return p(),v(`div`,et,[!S(B)||!S(V)?(p(),v(`div`,tt,[D(a,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})])):(p(),v(`div`,nt,[S(L)?(p(),v(`div`,rt,[g(`span`,it,_(r.$t(`views.settings.connection_status`)),1),D(s,{class:`cui-card`},{content:h(()=>[g(`div`,at,[(p(),E(pe(S(Jn)),{class:le([`shrink-0 w-6 h-6`,S(Yn)])},null,8,[`class`])),g(`div`,ot,[g(`span`,st,_(S(qn)),1),D(o,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint truncate`},{default:h(()=>[x(_(S(L).currentConnection.address),1)]),_:1})])])]),_:1})])):j(``,!0),D(S(ue),{ref:`remoteFormRef`,class:`flex flex-col w-full gap-6`,"validation-schema":S(Qe),onSubmit:i[18]||=e=>yr(e)},{default:h(()=>[g(`div`,null,[g(`span`,ct,_(r.$t(`views.settings.cloud`)),1),D(s,{class:`cui-card`},{content:h(()=>[g(`div`,lt,[D(S(N),{"model-value":S(V).enabled,value:!0,"unchecked-value":!1,type:`checkbox`,name:`enabled`,as:`div`,class:`flex flex-col field-gap cui-toggle-switch`},{default:h(({field:e,errors:t})=>[g(`div`,ut,[g(`div`,dt,[g(`label`,ft,_(r.$t(`components.form.label.enabled`)),1),D(o,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:h(()=>[x(_(r.$t(`components.form.hint.cloud_access_enabled_info`)),1)]),_:1}),D(k,{name:`fade`},{default:h(()=>[D(S(M),{name:`enabled`,class:`cui-input-switch-error`})]),_:1})]),D(re,fe({"model-value":S(V).enabled},e,{invalid:t.length>0,loading:S(X),class:`ml-auto shrink-0`,onValueChange:i[0]||=e=>S(V).enabled=e,"onUpdate:modelValue":i[1]||=e=>cr(e)}),null,16,[`model-value`,`invalid`,`loading`])])]),_:1},8,[`model-value`]),g(`div`,pt,[g(`label`,mt,_(r.$t(`views.settings.server_name_label`)),1),D(f,null,{default:h(()=>[D(c,{id:`serverName`,modelValue:S(H),"onUpdate:modelValue":i[2]||=e=>A(H)?H.value=e:null,modelModifiers:{trim:!0},disabled:!S(Rn),loading:S(X),type:`text`,maxlength:100},null,8,[`modelValue`,`disabled`,`loading`]),D(d,null,{default:h(()=>[ce((p(),E(u,{text:``,severity:`secondary`,loading:S(Ue),disabled:!S(zn),type:`button`,onClick:Xn},{icon:h(()=>[D(l)]),_:1},8,[`loading`,`disabled`])),[[P,{value:r.$t(`components.form.button.save`)}]])]),_:1})]),_:1}),D(o,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:h(()=>[x(_(r.$t(`views.settings.server_name_info`)),1)]),_:1})]),g(`div`,ht,[g(`div`,gt,[g(`span`,_t,_(r.$t(`views.settings.status`)),1),D(o,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:h(()=>[x(_(r.$t(`views.settings.status_info`)),1)]),_:1})]),g(`div`,vt,[S(X)?(p(),E(a,{key:0,class:`w-[15px] h-[15px] m-0`,"stroke-width":`5`})):S(Ln)?(p(),v(`span`,yt,_(r.$t(`views.settings.needs_reauth`)),1)):(p(),v(`span`,bt,_(S(Z)?r.$t(`views.settings.registered`):r.$t(`views.settings.not_registered`)),1))])]),S(Z)?(p(),v(`div`,xt,[g(`div`,St,[g(`span`,Ct,_(r.$t(`views.settings.tunnel_status`)),1),D(o,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:h(()=>[x(_(r.$t(`views.settings.tunnel_status_info`)),1)]),_:1})]),g(`div`,wt,[S(Ae)?(p(),E(a,{key:0,class:`w-[15px] h-[15px] m-0`,"stroke-width":`5`})):(p(),E(se,{key:1,severity:S(Oe)?.connected?`success`:`secondary`,value:S(Oe)?.connected?r.$t(`views.settings.tunnel_connected`):r.$t(`views.settings.tunnel_disconnected`)},null,8,[`severity`,`value`]))])])):j(``,!0),D(k,{name:`fade`,mode:`out-in`},{default:h(()=>[S(q)?(p(),v(`div`,Tt,[D(o,{severity:`error`,variant:`simple`,size:`small`,class:`text-primary`},{default:h(()=>[x(_(r.$t(`views.settings.pair_instructions`)),1)]),_:1}),g(`div`,Et,[g(`div`,Dt,[D(m,{value:S(J),size:180,"logo-size":36},null,8,[`value`])]),g(`div`,Ot,[g(`div`,kt,[g(`label`,At,_(r.$t(`views.settings.pair_code`)),1),D(f,null,{default:h(()=>[D(c,{"model-value":S(q),readonly:``,class:`font-mono text-lg text-center tracking-widest`},null,8,[`model-value`]),D(d,null,{default:h(()=>[D(y,{"action-text":r.$t(`components.form.tooltip.copied`),icon:S(oe),"button-props":{severity:`secondary`,text:!0},onAction:ar},null,8,[`action-text`,`icon`])]),_:1})]),_:1}),D(o,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:h(()=>[x(_(r.$t(`views.settings.pair_code_hint`)),1)]),_:1})]),g(`div`,jt,[g(`label`,Mt,_(r.$t(`views.settings.pair_url`)),1),D(f,null,{default:h(()=>[D(c,{"model-value":S(J),readonly:``,class:`font-mono text-sm`},null,8,[`model-value`]),D(d,null,{default:h(()=>[D(y,{"action-text":r.$t(`components.form.tooltip.copied`),icon:S(oe),"button-props":{severity:`secondary`,text:!0},onAction:or},null,8,[`action-text`,`icon`])]),_:1}),D(d,null,{default:h(()=>[ce((p(),E(u,{type:`button`,severity:`secondary`,text:``,onClick:sr},{icon:h(()=>[D(S(ne))]),_:1})),[[P,{value:r.$t(`components.form.button.open_in_browser`)}]])]),_:1})]),_:1})]),g(`div`,Nt,[D(a,{class:`w-[20px] h-[20px] m-0`,"stroke-width":`5`}),g(`span`,Pt,_(r.$t(`views.settings.pair_waiting`,{remaining:S(Nn)})),1),D(u,{type:`button`,severity:`secondary`,class:`cui-button-small ml-auto`,label:r.$t(`components.form.button.cancel`),onClick:ir},null,8,[`label`])])])])])):j(``,!0)]),_:1}),g(`div`,Ft,[g(`div`,It,[ce((p(),E(u,{severity:`secondary`,rounded:``,class:`cui-icon-lg text-color`,disabled:!S(Z),onClick:i[3]||=e=>r.$router.absUrl(S(`https://cloud.cameraui.com`),!0)},{icon:h(()=>[S(Z)?(p(),E(C,{key:0,width:`100%`,height:`100%`})):(p(),E(w,{key:1,width:`100%`,height:`100%`}))]),_:1},8,[`disabled`])),[[P,{value:S(Z)?r.$t(`views.settings.registered`):r.$t(`views.settings.not_registered`)}]])]),i[21]||=g(`div`,{class:`ml-auto`},null,-1),!S(Z)&&!S(q)?(p(),E(u,{key:0,loading:S(Re),class:`cui-button-medium`,label:r.$t(`components.form.button.register_server`),onClick:rr},null,8,[`loading`,`label`])):j(``,!0),S(Ln)&&!S(q)?(p(),E(u,{key:1,loading:S(Re),severity:`warn`,class:`cui-button-medium`,label:r.$t(`components.form.button.reconnect_server`),onClick:rr},null,8,[`loading`,`label`])):j(``,!0),S(Z)?(p(),E(u,{key:2,loading:S(X),severity:S(Ln)?`secondary`:void 0,text:S(Ln),class:`cui-button-medium`,label:r.$t(`components.form.button.unregister_server`),onClick:Zn},null,8,[`loading`,`severity`,`text`,`label`])):j(``,!0)])])]),_:1})]),g(`div`,null,[g(`span`,Lt,_(r.$t(`views.settings.direct_connection`)),1),D(s,{class:`cui-card`},{content:h(()=>[g(`div`,Rt,[D(S(N),{"model-value":S(V).directEnabled,value:!0,"unchecked-value":!1,type:`checkbox`,name:`directEnabled`,as:`div`,class:`flex flex-col field-gap cui-toggle-switch`},{default:h(({field:e,errors:t})=>[g(`div`,zt,[g(`div`,Bt,[g(`label`,Vt,_(r.$t(`components.form.label.enabled`)),1),D(o,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:h(()=>[x(_(r.$t(`views.settings.direct_connection_info`)),1)]),_:1}),D(k,{name:`fade`},{default:h(()=>[D(S(M),{name:`directEnabled`,class:`cui-input-switch-error`})]),_:1})]),D(re,fe({"model-value":S(Fn)},e,{invalid:t.length>0,loading:S(X),disabled:S(V).enabled,class:`ml-auto shrink-0`,onValueChange:i[4]||=e=>S(V).directEnabled=e,"onUpdate:modelValue":i[5]||=e=>lr(e)}),null,16,[`model-value`,`invalid`,`loading`,`disabled`])]),D(k,{name:`fade`},{default:h(()=>[S(In).active?(p(),E(o,{key:0,variant:`simple`,size:`small`,class:`cui-input-switch-hint text-primary`},{default:h(()=>[x(_(S(In).fallback?r.$t(`views.settings.direct_override_fallback`):r.$t(`views.settings.direct_override_active`)),1)]),_:1})):j(``,!0)]),_:1})]),_:1},8,[`model-value`]),S(Fn)?(p(),v(b,{key:0},[g(`div`,Ht,[g(`label`,Ut,_(r.$t(`views.settings.external_url`)),1),D(c,{readonly:``,type:`text`,value:S(L)?.externalUrl??r.$t(`components.form.label.disconnected`)},null,8,[`value`]),D(o,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:h(()=>[x(_(r.$t(`views.settings.external_url_info`)),1)]),_:1})]),D(S(N),{"model-value":S(V).directMode,name:`directMode`,as:`div`,class:`flex flex-col field-gap`},{default:h(({errors:e})=>[g(`label`,Wt,_(r.$t(`views.settings.connection_method`)),1),D(T,{"model-value":S(V).directMode,options:S(Vn),"option-label":`label`,"option-value":`value`,invalid:e.length>0,loading:S(X),"onUpdate:modelValue":i[6]||=e=>ur(e)},null,8,[`model-value`,`options`,`invalid`,`loading`]),D(k,{name:`fade`},{default:h(()=>[D(S(M),{name:`directMode`,class:`cui-input-error`})]),_:1}),D(o,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:h(()=>[x(_(S(Hn)),1)]),_:1})]),_:1},8,[`model-value`]),S(V).directMode===`cloudflare`?(p(),v(`div`,Gt,[g(`div`,Kt,[g(`label`,qt,_(r.$t(`components.form.label.cloudflare_variant`)),1),D(T,{"model-value":S(W),options:S(Un),"option-label":`label`,"option-value":`value`,loading:S(X),"onUpdate:modelValue":i[7]||=e=>dr(e)},null,8,[`model-value`,`options`,`loading`]),D(o,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:h(()=>[x(_(S(Wn)),1)]),_:1})]),S(W)===`quick`?(p(),v(`div`,Jt,[D(u,{type:`button`,severity:`secondary`,loading:S(Ge),class:`cui-button-small`,label:r.$t(`components.form.button.test_connection`),onClick:i[8]||=e=>vr(`cloudflare`)},null,8,[`loading`,`label`])])):S(W)===`token`?(p(),v(b,{key:1},[g(`div`,Yt,[g(`label`,Xt,_(r.$t(`components.form.label.hostname`)),1),D(c,{id:`cloudflareHostname`,modelValue:S(G),"onUpdate:modelValue":i[9]||=e=>A(G)?G.value=e:null,modelModifiers:{trim:!0},loading:S(X),type:`text`,placeholder:`nvr.example.com`,maxlength:253},null,8,[`modelValue`,`loading`]),D(o,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:h(()=>[x(_(r.$t(`components.form.hint.cloudflare_hostname_info`)),1)]),_:1})]),g(`div`,Zt,[g(`label`,Qt,_(r.$t(`components.form.label.tunnel_token`)),1),D(O,{id:`cloudflareToken`,modelValue:S(K),"onUpdate:modelValue":i[10]||=e=>A(K)?K.value=e:null,modelModifiers:{trim:!0},loading:S(X),feedback:!1,"toggle-mask":``,fluid:``,placeholder:S(An)?`••••••••••••`:`eyJ...`},null,8,[`modelValue`,`loading`,`placeholder`]),D(o,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:h(()=>[x(_(S(An)?r.$t(`components.form.hint.cloudflare_token_already_set`):r.$t(`components.form.hint.cloudflare_token_info`)),1)]),_:1})]),g(`div`,$t,[D(u,{type:`button`,severity:`secondary`,loading:S(Ge),disabled:!S(Gn),class:`cui-button-small`,label:r.$t(`components.form.button.test_connection`),onClick:i[11]||=e=>vr(`cloudflare`)},null,8,[`loading`,`disabled`,`label`])])],64)):S(W)===`managed`?(p(),E(k,{key:2,name:`fade`,mode:`out-in`},{default:h(()=>[(p(),v(`div`,{key:S(Q),class:`flex flex-col gap-4`},[S(Q)===`idle`?(p(),v(b,{key:0},[g(`div`,en,[g(`label`,tn,_(r.$t(`components.form.label.hostname`)),1),D(c,{id:`cloudflareHostnameManaged`,modelValue:S(G),"onUpdate:modelValue":i[12]||=e=>A(G)?G.value=e:null,modelModifiers:{trim:!0},loading:S(X),type:`text`,placeholder:`nvr.example.com`,maxlength:253},null,8,[`modelValue`,`loading`]),D(o,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:h(()=>[x(_(r.$t(`components.form.hint.cloudflare_hostname_info`)),1)]),_:1})]),S(z)?.lastError?(p(),E(o,{key:0,severity:`error`,variant:`simple`,size:`small`},{default:h(()=>[x(_(S(z).lastError),1)]),_:1})):j(``,!0),g(`div`,nn,[D(u,{type:`button`,loading:S(qe),disabled:!S(Kn),class:`cui-button-medium`,label:r.$t(`components.form.button.connect_cloudflare`),onClick:fr},null,8,[`loading`,`disabled`,`label`])])],64)):S(Q)===`awaiting_login`?(p(),v(b,{key:1},[S(z)?.loginUrl?(p(),v(`div`,rn,[g(`div`,an,[D(m,{value:S(z).loginUrl,size:160,"logo-size":32},null,8,[`value`])]),g(`div`,on,[D(o,{variant:`simple`,size:`small`,class:`text-primary`},{default:h(()=>[x(_(r.$t(`components.form.hint.cloudflare_managed_awaiting_login`,{hostname:S(G)})),1)]),_:1}),g(`div`,sn,[g(`label`,cn,_(r.$t(`components.form.label.cloudflare_url`)),1),D(f,null,{default:h(()=>[D(c,{"model-value":S(z).loginUrl,readonly:``,class:`font-mono text-sm`},null,8,[`model-value`]),D(d,null,{default:h(()=>[D(y,{"action-text":r.$t(`components.form.tooltip.copied`),icon:S(oe),"button-props":{severity:`secondary`,text:!0},onAction:i[13]||=e=>gr(S(z).loginUrl)},null,8,[`action-text`,`icon`])]),_:1}),D(d,null,{default:h(()=>[ce((p(),E(u,{type:`button`,severity:`secondary`,text:``,onClick:i[14]||=e=>_r(S(z).loginUrl)},{icon:h(()=>[D(S(ne))]),_:1})),[[P,{value:r.$t(`components.form.button.open_in_browser`)}]])]),_:1})]),_:1})]),g(`div`,ln,[D(a,{class:`w-[20px] h-[20px] m-0`,"stroke-width":`5`}),g(`span`,un,_(r.$t(`views.settings.cloudflare_login_waiting`)),1),D(u,{type:`button`,severity:`secondary`,loading:S(Ye),class:`cui-button-small ml-auto`,label:r.$t(`components.form.button.cancel`),onClick:pr},null,8,[`loading`,`label`])])])])):(p(),v(`div`,dn,[D(a,{class:`w-[20px] h-[20px] m-0`,"stroke-width":`5`}),g(`span`,fn,_(r.$t(`views.settings.cloudflare_login_waiting`)),1),D(u,{type:`button`,severity:`secondary`,loading:S(Ye),class:`cui-button-small ml-auto`,label:r.$t(`components.form.button.cancel`),onClick:pr},null,8,[`loading`,`label`])]))],64)):S(Q)===`creating_tunnel`||S(Q)===`setting_dns`?(p(),v(`div`,pn,[D(a,{class:`w-[20px] h-[20px] m-0`,"stroke-width":`5`}),g(`span`,mn,_(S(Q)===`creating_tunnel`?r.$t(`components.form.hint.cloudflare_managed_creating_tunnel`):r.$t(`components.form.hint.cloudflare_managed_setting_dns`,{hostname:S(G)})),1),D(u,{type:`button`,severity:`secondary`,loading:S(Ye),class:`cui-button-small ml-auto`,label:r.$t(`components.form.button.cancel`),onClick:pr},null,8,[`loading`,`label`])])):S(Q)===`running`?(p(),v(b,{key:3},[g(`div`,hn,[g(`label`,gn,_(r.$t(`components.form.label.hostname`)),1),D(c,{readonly:``,value:`https://${S(z)?.hostname??``}`,type:`text`},null,8,[`value`]),D(o,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:h(()=>[x(_(r.$t(`components.form.hint.cloudflare_hostname_info`)),1)]),_:1})]),S(z)?.tunnelId?(p(),v(`div`,_n,[g(`label`,vn,_(r.$t(`components.form.label.tunnel_id`)),1),D(c,{readonly:``,value:S(z).tunnelId,type:`text`},null,8,[`value`]),D(o,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:h(()=>[x(_(r.$t(`components.form.hint.cloudflare_tunnel_id_info`)),1)]),_:1})])):j(``,!0),g(`div`,yn,[D(u,{type:`button`,severity:`secondary`,loading:S(Ge),class:`cui-button-small`,label:r.$t(`components.form.button.test_connection`),onClick:i[15]||=e=>vr(`cloudflare`)},null,8,[`loading`,`label`]),D(u,{type:`button`,severity:`secondary`,loading:S(Dn),class:`cui-button-small ml-auto`,label:r.$t(`components.form.button.disconnect`),onClick:mr},null,8,[`loading`,`label`]),D(u,{type:`button`,severity:`danger`,loading:S(kn),class:`cui-button-small`,label:r.$t(`components.form.button.logout`),onClick:hr},null,8,[`loading`,`label`])])],64)):j(``,!0)]))]),_:1})):j(``,!0)])):S(V).directMode===`customDomain`?(p(),v(`div`,bn,[D(S(N),{modelValue:S(U),"onUpdate:modelValue":i[16]||=e=>A(U)?U.value=e:null,modelModifiers:{trim:!0},loading:S(X),name:`customDomain.url`,as:`div`,class:`flex flex-col field-gap`},{default:h(({field:e,errors:t})=>[g(`label`,xn,_(r.$t(`components.form.label.url`)),1),D(c,fe(e,{invalid:t.length>0,loading:S(X),type:`text`,placeholder:`https://my.example.com`}),null,16,[`invalid`,`loading`]),D(k,{name:`fade`},{default:h(()=>[D(S(M),{name:`customDomain.url`,class:`cui-input-error`})]),_:1})]),_:1},8,[`modelValue`,`loading`]),g(`div`,Sn,[D(u,{type:`button`,severity:`secondary`,loading:S(Ge),disabled:!S(U),class:`cui-button-small`,label:r.$t(`components.form.button.test_connection`),onClick:i[17]||=e=>vr(`customDomain`)},null,8,[`loading`,`disabled`,`label`])])])):j(``,!0),D(u,{type:`submit`,loading:S(X),disabled:!S(Bn),class:`cui-button-medium ml-auto`,label:r.$t(`components.form.button.save`)},null,8,[`loading`,`disabled`,`label`])],64)):j(``,!0)])]),_:1})])]),_:1},8,[`validation-schema`]),D(S(ue),{ref:`serverFormRef`,class:`flex flex-col w-full gap-6`,"validation-schema":S($e),onSubmit:i[20]||=e=>br(e)},{default:h(()=>[g(`div`,null,[g(`span`,Cn,_(r.$t(`views.settings.network`)),1),D(s,{class:`cui-card`},{content:h(()=>[g(`div`,wn,[g(`span`,Tn,_(r.$t(`views.settings.network_info`)),1),D(S(N),{"model-value":S(B).serverAddresses,name:`serverAddresses`,as:`div`,class:`flex flex-col field-gap`},{default:h(({field:e,errors:t})=>[g(`label`,En,_(r.$t(`components.form.label.server_addresses`)),1),D(f,null,{default:h(()=>[D(me,fe(e,{"model-value":S(B).serverAddresses,options:S(de)?.availableAddresses||[],invalid:t.length>0,loading:S(X),"max-selected-labels":2,"show-toggle-all":!1,"show-clear":``,"option-label":`address`,"option-value":`address`,type:`text`,display:`chip`,onValueChange:i[19]||=e=>S(B).serverAddresses=e}),null,16,[`model-value`,`options`,`invalid`,`loading`])]),_:2},1024),D(k,{name:`fade`},{default:h(()=>[D(S(M),{name:`serverAddresses`,class:`cui-input-error`})]),_:1})]),_:1},8,[`model-value`]),D(u,{type:`submit`,loading:S(X),class:`cui-button-medium ml-auto`,label:r.$t(`components.form.button.save`)},null,8,[`loading`,`label`])])]),_:1})])]),_:1},8,[`validation-schema`])]))])}}}),[[`__scopeId`,`data-v-788da547`]]);export{Dn as default};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./VersionsHandler-Dvy5Lv-E.js","./vendor-cameraui-BqkrW4Bb.js","./rolldown-runtime-C0FnF6B9.js","./vendor-CSg6_Jfu.js","./api-milc5VEE.js","./useElectron-Dg8tFzam.js","./vendor-zod-Dbq0fBXY.js","./types-CoXm85So.js","./lightbulb-outline-ccTlGyvW.js","./vendor-core-BQegq2Q6.js","./vendor-primevue-DYzLjOFZ.js","./vendor-dnd-DQF7Aoap.js","./close-CQoGQHOF.js","./vendor-draggabilly-Cghb3aIb.js","./api-3va2gyB0.css","./server-Bv5NVJ0G.js","./useServerRestart-3AZOTz7i.js","./plugins-7pWXkYgo.js","./useLogsSocket-9jJ-oJIm.js","./vendor-xterm-BafMBqaV.js","./vendor-xterm-BrP-ENHg.css","./useLogsSocket-CoA-Nq-_.css","./CuiMarkdownContent-Bjs3wRnq.js","./vendor-markdown-DWwrEE67.js","./vendor-markdown-DtOhvyRx.css","./alert-circle-Cu_kjPlA.js","./platformLabels-D-cF6OTP.js","./config-BE0DnCXx.js"])))=>i.map(i=>d[i]);
2
- import{F as e,Ot as t,kr as n,wt as r}from"./vendor-cameraui-BqkrW4Bb.js";import{$n as i,C as a,Qt as ee,X as o,Y as s,g as c,in as l}from"./api-milc5VEE.js";import{Nn as u,Rt as te,Xn as d,an as f,br as p,cn as m,cr as h,en as ne,fn as g,gr as _,hn as re,in as v,jn as ie,on as y,pn as b,qn as x,sn as S,t as C}from"./vendor-CSg6_Jfu.js";import{a as ae,t as oe}from"./useElectron-Dg8tFzam.js";import{K as se,z as ce}from"./vendor-primevue-DYzLjOFZ.js";import{r as le,t as ue}from"./server-Bv5NVJ0G.js";import{n as de}from"./useServerRestart-3AZOTz7i.js";import{t as fe}from"./api-DmxTF6VE.js";import{t as pe}from"./useAppVersion-oPpW7jcN.js";var me={class:`flex flex-col w-full gap-6`},he={key:0},ge={class:`flex items-center gap-4`},_e={class:`flex flex-col field-switch-gap`},ve={for:`betaChannel`,class:`cui-label-switch`},ye={class:`flex flex-col gap-6`},be={key:0,class:`flex flex-row items-center justify-between`},xe={class:`text-sm`},Se={key:1,class:`text-sm font-bold`},Ce={key:1,class:`flex flex-row items-center justify-between`},we={class:`text-sm`},Te={class:`text-sm font-bold`},Ee={key:0,class:`text-muted font-normal`},De={class:`flex flex-row items-center justify-between`},Oe={class:`text-sm`},ke={key:1,class:`text-sm font-bold`},Ae={key:2,class:`flex w-full items-center gap-2`},je={key:1},Me={class:`card-title`},Ne={class:`flex flex-col gap-6`},Pe={class:`text-sm`},Fe={class:`card-title`},Ie={class:`flex flex-col gap-6`},Le={class:`text-sm`},Re={key:2},ze={class:`card-title`},Be={class:`flex flex-col gap-6`},Ve={class:`text-sm`},w=re({__name:`SettingsSystem`,setup(re){let w=o(()=>te(()=>import(`./VersionsHandler-Dvy5Lv-E.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27]),import.meta.url)),T=new fe,E=new ue,D=ae(),O=s(),{t:k}=n(),{isElectronApp:A,electron:j}=oe(),{isOnline:M}=i(),{restarting:N,beginServerRestart:He}=de(),{isBeta:P,setChannel:Ue}=a(),{appVersion:F,nativeVersion:I,refreshAppVersion:We}=pe(),Ge=c();E.toggleQueryActivator(`checkVersionQuery`,!1);let{data:L,isBusy:Ke}=T.apiInfoQuery(),{data:R,isBusy:qe}=E.checkVersionQuery(),{mutate:Je,isPending:Ye}=E.restartServerQuery(),{mutateAsync:Xe,isPending:Ze}=E.resetServerQuery(),z=h(k(`views.settings.unknown`)),B=h(k(`views.settings.unknown`)),V=h(),H=h(),U=h(),W=h(),G=h(!1),K=h(!1),Qe=h(!1),q=h(!1),J=v(()=>L.value?.electron??!1),Y=v(()=>Ye.value||Ze.value||Ke.value||qe.value||q.value||K.value),X=v(()=>L.value?.installedVersion||L.value?.version),$e=v(()=>L.value?.restartRequired??!1),Z=v(()=>Y.value||!M.value||N.value),et=v(()=>X.value&&U.value?C(U.value,X.value)===1:!1),tt=v(()=>X.value&&V.value?C(V.value,X.value)===1:!1),nt=v(()=>P.value&&X.value&&H.value?C(H.value,X.value)===1:!1),Q=v(()=>{let e=[et.value?U.value:void 0,nt.value?H.value:void 0,tt.value?V.value:void 0].filter(e=>!!e);if(e.length)return e.sort((e,t)=>C(t,e))[0]});function rt(e){Ue(e===!0?`beta`:`production`)}async function it(){if(!G.value){G.value=!0;try{let e=await le(),t=new Blob([e],{type:`application/x-x509-ca-cert`});await l({blob:t,filename:`cert.pem`,mimeType:`application/x-x509-ca-cert`})}catch(e){D.error(e)}G.value=!1}}function at(){He(),Je()}function $(e){switch(e){case`restart`:O.openTextDialog({data:{title:k(`components.dialog.title.restart`),confirmText:k(`components.form.button.restart`),contentText:k(`components.dialog.message.confirm_restart_server`),loading:Y},onConfirm:at});break;case`reset`:O.openTextDialog({data:{title:k(`components.dialog.title.reset_server`),confirmText:k(`components.form.button.reset`),contentText:k(`components.dialog.message.confirm_reset_server`),loading:Y},onConfirm:async()=>{try{await Xe()}catch{}finally{Ge.logout()}}});break;case`versions`:case`install`:O.openComponentDialog(w,{data:{title:k(`components.dialog.title.install_version`),confirmText:k(e===`install`?`components.form.button.update`:`components.form.button.install`),loading:Y,contentProps:{target:{type:`server`},installVersion:e===`install`?Q.value:void 0}}})}}async function ot(){if(A)try{Qe.value=!0,B.value=await j.invoke(`get-app-version`)??k(`views.settings.unknown`)}catch(e){D.error(`Error getting electron app version:`,e)}finally{Qe.value=!1}}async function st(){if(A)try{q.value=!0;let e=await j.invoke(`get-update-available`);W.value=e.isUpdateAvailable?e.version:void 0}catch(e){D.error(`Error checking for electron updates:`,e)}finally{q.value=!1}}async function ct(){if(A)try{K.value=!0,await j.invoke(`quit-and-install`)}catch(e){D.error(`Error installing electron update:`,e)}finally{K.value=!1}}return x(L,()=>{z.value=L.value?.version||k(`views.settings.unknown`),L.value&&E.toggleQueryActivator(`checkVersionQuery`,!J.value)},{deep:!0,immediate:!0}),x(R,()=>{U.value=R.value?.[`dist-tags`].latest,V.value=R.value?.[`dist-tags`].alpha,H.value=R.value?.[`dist-tags`].beta},{deep:!0,immediate:!0}),x([M,N],([e,t],[n,r])=>{J.value||(e&&!n||r&&!t&&e)&&(T.queryClient.invalidateQueries({queryKey:[`api`]}),E.queryClient.invalidateQueries({queryKey:[`version`]}))}),ie(()=>{A&&(ot(),st())}),(n,i)=>{let a=ce,o=se,s=e,c=r,l=t;return u(),m(`div`,null,[f(`div`,me,[_(J)?S(``,!0):(u(),m(`div`,he,[b(s,{class:`cui-card`},{content:d(()=>[f(`div`,null,[f(`div`,ge,[f(`div`,_e,[f(`label`,ve,p(n.$t(`views.settings.beta_updates`)),1),b(a,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-switch-hint`},{default:d(()=>[g(p(n.$t(`views.settings.beta_updates_info`)),1)]),_:1})]),b(o,{"input-id":`betaChannel`,"model-value":_(P),class:`ml-auto shrink-0`,"onUpdate:modelValue":rt},null,8,[`model-value`])])])]),_:1})])),f(`div`,null,[i[6]||=f(`span`,{class:`card-title`},`camera.ui`,-1),b(s,{class:`cui-card`},{content:d(()=>[f(`div`,ye,[_(A)?(u(),m(`div`,be,[f(`span`,xe,p(n.$t(`views.settings.app`)),1),_(Y)?(u(),y(c,{key:0,class:`w-[15px] h-[15px] m-0`,"stroke-width":`5`})):(u(),m(`span`,Se,`v`+p(_(B)),1))])):S(``,!0),_(!1)&&_(F)?(u(),m(`div`,Ce,[f(`span`,we,p(n.$t(`views.settings.app`)),1),f(`span`,Te,[g(` v`+p(_(F)),1),_(I)&&_(I)!==_(F)?(u(),m(`span`,Ee,` (`+p(_(I))+`)`,1)):S(``,!0)])])):S(``,!0),f(`div`,De,[f(`span`,Oe,p(n.$t(`views.settings.server`)),1),_(Y)?(u(),y(c,{key:0,class:`w-[15px] h-[15px] m-0`,"stroke-width":`5`})):(u(),m(`span`,ke,[g(` v`+p(_(z)),1),_($e)?(u(),m(ne,{key:0},[g(` → v`+p(_(X)),1)],64)):S(``,!0)]))]),_(A)&&_(W)||!_(J)?(u(),m(`div`,Ae,[i[5]||=f(`div`,{class:`ml-auto`},null,-1),_(A)&&_(W)?(u(),y(l,{key:0,disabled:!_(A),loading:_(Y),class:`cui-button-medium`,label:`${n.$t(`components.form.button.update`)} (v${_(W)})`,onClick:ct},null,8,[`disabled`,`loading`,`label`])):S(``,!0),!_(J)&&_($e)?(u(),y(l,{key:1,loading:_(Y),disabled:_(Z),class:`cui-button-medium`,label:`${n.$t(`components.form.button.restart`)} (v${_(X)})`,onClick:i[0]||=e=>$(`restart`)},null,8,[`loading`,`disabled`,`label`])):!_(J)&&_(Q)?(u(),y(l,{key:2,loading:_(Y),disabled:_(Z),class:`cui-button-medium`,label:`${n.$t(`components.form.button.update`)} (v${_(Q)})`,onClick:i[1]||=e=>$(`install`)},null,8,[`loading`,`disabled`,`label`])):S(``,!0),_(J)?S(``,!0):(u(),y(l,{key:3,loading:_(Y),disabled:_(Z),class:`cui-button-medium`,label:n.$t(`components.form.button.manage`),onClick:i[2]||=e=>$(`versions`)},null,8,[`loading`,`disabled`,`label`]))])):S(``,!0)])]),_:1})]),_(A)?S(``,!0):(u(),m(`div`,je,[f(`span`,Me,p(n.$t(`views.settings.certificate`)),1),b(s,{class:`cui-card`},{content:d(()=>[f(`div`,Ne,[f(`span`,Pe,p(n.$t(`views.settings.certificate_info`)),1),b(l,{loading:_(G)||_(Y),disabled:_(Z),class:`cui-button-medium ml-auto`,label:n.$t(`components.form.button.download`),onClick:it},null,8,[`loading`,`disabled`,`label`])])]),_:1})])),f(`div`,null,[f(`span`,Fe,p(n.$t(`views.settings.restart_server`)),1),b(s,{class:`cui-card`},{content:d(()=>[f(`div`,Ie,[f(`span`,Le,p(n.$t(`views.settings.restart_server_info`)),1),b(l,{loading:_(Y),disabled:_(Z),class:`cui-button-medium ml-auto`,label:n.$t(`components.form.button.restart`),onClick:i[3]||=e=>$(`restart`)},null,8,[`loading`,`disabled`,`label`])])]),_:1})]),(`hasPermission`in n?n.hasPermission:_(ee))(void 0,`master`)?(u(),m(`div`,Re,[f(`span`,ze,p(n.$t(`views.settings.reset_server`)),1),b(s,{class:`cui-card !border-red-900`},{content:d(()=>[f(`div`,Be,[f(`span`,Ve,p(n.$t(`views.settings.reset_server_info`)),1),b(l,{loading:_(Y),disabled:_(Z),class:`cui-button-medium ml-auto`,label:n.$t(`components.form.button.reset`),onClick:i[4]||=e=>$(`reset`)},null,8,[`loading`,`disabled`,`label`])])]),_:1})])):S(``,!0)])])}}});export{w as default};
@@ -1,2 +0,0 @@
1
- import{F as e,O as t,Ot as n,kr as r,wt as i}from"./vendor-cameraui-BqkrW4Bb.js";import{Un as a,V as o,Y as s,Yn as c,Zn as ee,at as te,i as ne,ir as l,it as re,jn as ie,ln as ae,on as u,rt as d,z as oe}from"./api-milc5VEE.js";import{$n as f,Dn as p,Mn as se,Nn as m,Tn as h,U as g,Xn as _,an as v,br as y,cn as b,cr as x,en as S,gr as C,hn as w,in as T,on as ce,or as E,pn as D,q as O,qn as k,rr as A,sn as j}from"./vendor-CSg6_Jfu.js";import{K as le,L as ue,R as de,g as fe,j as pe,x as me}from"./vendor-primevue-DYzLjOFZ.js";import{t as he}from"./api-DmxTF6VE.js";import{t as ge}from"./plugins-7pWXkYgo.js";import{t as _e}from"./CuiDataTable-CTT9IFeR.js";import{t as ve}from"./back-filled-r7bN5ObT.js";import{n as ye,t as be}from"./round-restart-alt-DKWwojYm.js";import{t as xe}from"./pencil-outline-M9I4mCJO.js";async function Se(){return(await l.get(`/workers/config`)).data}async function M(e){return(await l.patch(`/workers/config`,e)).data}async function Ce(){return(await l.post(`/workers/pairings`)).data}async function we(e){await l.delete(`/workers/${e}`)}async function Te(e){await l.post(`/workers/${e}/restart`)}async function Ee({agentId:e,name:t}){await l.patch(`/workers/${e}`,{name:t})}async function N({cameraId:e,agentId:t}){return(await l.post(`/workers/assign`,{cameraId:e,agentId:t})).data}async function P({cameraId:e}){return(await l.post(`/workers/unassign`,{cameraId:e})).data}async function F({pluginName:e,agentId:t}){return(await l.post(`/workers/assign-plugin`,{pluginName:e,agentId:t})).data}async function De({pluginName:e}){return(await l.post(`/workers/unassign-plugin`,{pluginName:e})).data}var Oe=class{_queryClient=O();toast=ee();getConfigQuery(){return c({queryKey:[`workersConfig`],queryFn:()=>Se(),retry:!1})}patchConfigQuery(){return g({mutationFn:M,onSuccess:()=>this._queryClient.invalidateQueries({queryKey:[`workersConfig`]}),onError:e=>{this.toast.add({severity:`error`,detail:e,life:3e3})}})}createPairingQuery(){return g({mutationFn:Ce})}removeWorkerQuery(){return g({mutationFn:we,onError:e=>{this.toast.add({severity:`error`,detail:e,life:3e3})},onSettled:()=>this._queryClient.invalidateQueries({queryKey:[`camerasList`]})})}assignCameraQuery(){return g({mutationFn:N,onMutate:({cameraId:e,agentId:t})=>this.patchCameraWorker(e,t),onError:(e,t,n)=>{n?.rollback(),this.toast.add({severity:`error`,detail:e,life:3e3})},onSettled:()=>this._queryClient.invalidateQueries({queryKey:[`camerasList`]})})}unassignCameraQuery(){return g({mutationFn:P,onMutate:({cameraId:e})=>this.patchCameraWorker(e,void 0),onError:(e,t,n)=>{n?.rollback(),this.toast.add({severity:`error`,detail:e,life:3e3})},onSettled:()=>this._queryClient.invalidateQueries({queryKey:[`camerasList`]})})}restartWorkerQuery(){return g({mutationFn:Te})}renameWorkerQuery(){return g({mutationFn:Ee,onError:e=>{this.toast.add({severity:`error`,detail:e,life:3e3})}})}assignPluginQuery(){return g({mutationFn:F,onError:e=>{this.toast.add({severity:`error`,detail:e,life:3e3})},onSettled:()=>this._queryClient.invalidateQueries({queryKey:[`pluginsList`]})})}unassignPluginQuery(){return g({mutationFn:De,onError:e=>{this.toast.add({severity:`error`,detail:e,life:3e3})},onSettled:()=>this._queryClient.invalidateQueries({queryKey:[`pluginsList`]})})}patchCameraWorker(e,t){let n=[];for(let[r,i]of this._queryClient.getQueriesData({queryKey:[`camerasList`]}))i?.result&&(n.push([r,i]),this._queryClient.setQueryData(r,{...i,result:i.result.map(n=>n._id===e?{...n,workerAgentId:t}:n)}));return{rollback:()=>{for(let[e,t]of n)this._queryClient.setQueryData(e,t)}}}},ke={class:`flex flex-col gap-2 w-full`},I={for:`workerName`,class:`cui-label`},Ae=w({__name:`RenameWorker`,props:{currentName:{}},setup(e,{expose:n}){let r=x(e.currentName);return n({onConfirm:async()=>r.value.trim()||null}),(e,n)=>{let i=t;return m(),b(`div`,ke,[v(`label`,I,y(e.$t(`views.workers.name`)),1),D(i,{id:`workerName`,modelValue:C(r),"onUpdate:modelValue":n[0]||=e=>A(r)?r.value=e:null,class:`w-full`,autofocus:``},null,8,[`modelValue`])])}}}),L=E({workers:[],workerHistory:{}}),R=null,z=null;function B(e){let t=L.workers.findIndex(t=>t.agentId===e.agentId);if(t!==-1){let n=[...L.workers];n[t]=e,L.workers=n}else L.workers=[...L.workers,e];let n=L.workerHistory[e.agentId]??[];L.workerHistory={...L.workerHistory,[e.agentId]:[...n,e].slice(-30)}}async function je(){if(z?.ready.value)try{L.workers=await z.request(`get-workers`)}catch{}}async function Me(){if(z?.ready.value)try{L.workerHistory=await z.request(`get-worker-history`)}catch{}}async function V(){await Promise.all([je(),Me()])}function H(){return z||(R=f(!0),R.run(()=>{let e=a(`/workers`);z=e,e.on(`worker-update`,e=>B(e)),e.on(`worker-removed`,({agentId:e})=>{L.workers=L.workers.filter(t=>t.agentId!==e);let t={...L.workerHistory};delete t[e],L.workerHistory=t}),e.onReady(()=>{V()})}),z)}function Ne(){function e(){H()}function t(){}return{isConnected:T(()=>z?.connected.value??!1),workers:T(()=>L.workers),workerHistory:T(()=>L.workerHistory),connect:e,disconnect:t,loadAll:V}}var Pe={key:0,class:`page-title`},Fe={key:1,class:`w-full h-full flex items-center justify-center`},Ie={key:2,class:`flex flex-col w-full gap-6`},Le={class:`card-title`},Re={class:`flex flex-col gap-6`},ze={class:`flex flex-row items-center justify-between gap-4`},Be={class:`flex flex-col`},Ve={class:`text-sm font-semibold text-color`},He={class:`text-muted text-xs`},Ue={class:`flex flex-col field-gap`},We={class:`text-sm font-semibold`},Ge={class:`text-muted text-xs`},Ke={class:`flex flex-col field-gap`},qe={class:`text-sm font-semibold`},Je={key:0,class:`text-orange-400 text-xs`},Ye={class:`flex flex-row items-end justify-end`},Xe={key:0},Ze={class:`card-title`},Qe={class:`flex flex-col items-center justify-center gap-4 py-6`},$e={class:`text-muted text-sm`},et={key:1},tt={class:`card-title`},nt={class:`text-muted text-sm mb-4`},rt={class:`text-muted text-sm`},it={class:`font-bold text-color text-sm`},at={key:2},ot={class:`card-title`},st={class:`text-muted text-sm mb-4`},ct={class:`text-muted text-sm`},lt={class:`flex flex-col`},ut={class:`font-bold text-color text-sm`},dt={key:0,class:`text-muted text-xs`},ft={key:3},pt={class:`card-title`},mt={class:`flex flex-col gap-6`},ht={class:`text-sm`},gt={class:`flex flex-col field-gap`},_t={class:`text-sm font-semibold`},vt={class:`text-muted text-xs`},yt={class:`flex flex-col field-gap`},bt={class:`flex flex-row items-center justify-between`},xt={class:`text-sm font-semibold`},St={class:`pairing-snippet`},Ct={class:`text-muted text-xs`},wt={class:`flex flex-row items-end justify-end`},U=u(w({__name:`Workers`,setup(a){let{t:c}=r(),{smBreakpoint:ee}=ae(),l=s(),u=Ne(),{workers:f,workerHistory:g,isConnected:w}=u,E=new he,O=new te,Se=new ge,M=new Oe,{data:Ce,isLoading:we}=O.getCamerasQuery(x({page:1,pageSize:999})),{data:Te,isLoading:Ee}=Se.getPluginsQuery(x({page:1,pageSize:999})),{data:N}=M.getConfigQuery(),{mutateAsync:P,isPending:F}=M.patchConfigQuery(),{mutateAsync:De}=M.assignCameraQuery(),{mutateAsync:ke}=M.unassignCameraQuery(),{mutateAsync:I}=M.restartWorkerQuery(),{mutateAsync:L,isPending:R}=M.createPairingQuery(),{mutateAsync:z}=M.removeWorkerQuery(),{mutateAsync:B}=M.assignPluginQuery(),{mutateAsync:je}=M.unassignPluginQuery(),{mutateAsync:Me}=M.renameWorkerQuery(),{data:V}=E.apiInfoQuery(),H={bodyRow:{class:`text-sm text-secondary`},column:{columnTitle:{class:`text-sm font-semibold`}}},U=x(!1),W=x([]),G=x([]),K=x(new Set),q=x(new Set),J=x(null),Y=x(``),X=x(7422),Tt=T(()=>Ce.value?.result??[]),Et=T(()=>Te.value?.result??[]),Z=T(()=>N.value?.enabled??!1),Dt=T(()=>(N.value?.suggestedAddresses??[]).map(e=>({label:e,value:e}))),Ot=T(()=>X.value!==(N.value?.port??7422)),kt=T(()=>Y.value!==(N.value?.address??``)||Ot.value),At=T(()=>new Set(f.value.map(e=>e.agentId))),Q=T(()=>V.value?.version),jt=T(()=>J.value?Math.max(0,Math.round((J.value.expiresAt-Date.now())/6e4)):0),Mt=T(()=>J.value?[`worker:`,` master: ${J.value.address||`<MASTER_IP>`}`,` apiPort: ${J.value.apiPort}`,` pairingCode: ${J.value.code}`,` name: my-worker`,` capabilities:`,` - frameDecoding`,` - pluginHost`].join(`
2
- `):``),Nt=T(()=>[{type:`indicator`,field:`status`,columnProps:{headerClass:`w-5 max-w-5`,class:`w-5 max-w-5`},color(e){return e.online?e.versionMismatch?`orange`:`green`:`red`},tooltip(e){return e.online?e.versionMismatch?c(`views.workers.version_mismatch`,{version:e.version||`?`}):c(`views.workers.online`):c(`views.workers.offline`)}},{type:`category`,field:`name`,name:c(`views.workers.name`),columnProps:{headerClass:`w-40 min-w-40 max-w-40`,class:`w-40 min-w-40 max-w-40`},props:{class:`font-bold text-color`}},{type:`category`,field:e=>e.version?e.versionMismatch&&Q.value?`v${e.version} → v${Q.value}`:`v${e.version}`:`—`,name:c(`views.workers.version`),asChip:!0,columnProps:{headerClass:`min-w-30`,class:`min-w-30`}},{type:`category`,field:e=>e.platform?`${e.platform.os}/${e.platform.arch}`:`—`,name:c(`views.workers.platform`),asChip:!0,columnProps:{headerClass:`min-w-40`,class:`min-w-40`}},{type:`category`,field:e=>e.pid?.toString()??`—`,name:c(`views.workers.pid`),columnProps:{headerClass:`min-w-20`,class:`min-w-20`}},{type:`category`,field:e=>e.cpuLoad===void 0?`—`:`${e.cpuLoad}%`,name:c(`views.workers.cpu`),asChip:!0,columnProps:{headerClass:`min-w-30`,class:`min-w-30`}},{type:`chart`,field:`cpu_chart`,for:`cpuLoad`,columnProps:{headerClass:`min-w-[250px]`,class:`min-w-[250px]`}},{type:`category`,field:e=>e.memLoad===void 0?`—`:`${e.memLoad}%`,name:c(`views.workers.memory`),asChip:!0,columnProps:{headerClass:`min-w-30`,class:`min-w-30`}},{type:`chart`,field:`memory_chart`,for:`memLoad`,columnProps:{headerClass:`min-w-[250px]`,class:`min-w-[250px]`}},{type:`action`,field:`actions`,columnProps:{class:`text-right`},buttons:[{icon:xe,action:e=>Ft(e)},{icon:be,loading:e=>W.value.includes(e.name),disabled:e=>!e.online,action:e=>It(e.name,e.agentId)},{icon:oe,buttonProps:{severity:`danger`},loading:e=>G.value.includes(e.agentId),action:e=>Yt(e)}]}]),Pt=T(()=>{let e=g.value;return f.value.reduce((t,n)=>{for(let r of[`cpuLoad`,`memLoad`]){let i=e[n.agentId]??[],a=i.slice(-30).filter(e=>e[r]!==void 0).map(e=>parseFloat(e[r])),o=i.slice(-30).map(e=>e.lastHeartbeat),s=[...a,...Array(30-a.length).fill(0)],c=[...o,...Array(30-o.length).fill(null)];t[`${n.name}_${r}`]={labels:c,datasets:[{data:s,backgroundColor:e=>{let t=e.raw;return t>=90?`#FA5252`:t>=50?`#FF9966`:`#df2a4c`},borderWidth:0,borderRadius:3,barPercentage:.8,categoryPercentage:.8,maxBarThickness:4,barThickness:4}]}}return t},{})});function Ft(e){l.openComponentDialog(Ae,{data:{title:c(`views.workers.rename_worker`),confirmText:c(`views.workers.save`),contentProps:{currentName:e.name}},onConfirm:async t=>{!t||t===e.name||await Me({agentId:e.agentId,name:t})}})}async function It(e,t){W.value.push(e);try{await I(t)}finally{W.value=W.value.filter(t=>t!==e)}}function Lt(){let e=[];for(let t of f.value){let n=t.online?t.name:`${t.name} (${c(`views.workers.offline`).toLowerCase()})`;e.push({label:n,value:t.agentId})}return e}function $(e){return e&&At.value.has(e)?e:null}function Rt(e,t){if(!e?.length)return!0;let n=e.filter(e=>e.startsWith(`!`)).map(e=>e.slice(1)),r=e.filter(e=>!e.startsWith(`!`));return n.includes(t)?!1:r.length===0||r.includes(t)}function zt(e,t){return!t.platform||Rt(e.os,t.platform.os)&&Rt(e.cpu,t.platform.arch)}function Bt(e){let t=[];return e.os?.length&&t.push(`os: ${e.os.join(`, `)}`),e.cpu?.length&&t.push(`cpu: ${e.cpu.join(`, `)}`),t.join(` · `)}function Vt(e){let t=[];for(let n of f.value){let r=zt(e,n),i=n.online?``:` (${c(`views.workers.offline`).toLowerCase()})`,a=r?``:` — ${c(`views.workers.incompatible`)}`;t.push({label:`${n.name}${i}${a}`,value:n.agentId,disabled:!r})}return t}function Ht(e){return q.value.has(e)}async function Ut(e,t){if(t===$(e.workerAgentId))return;let n=new Set(q.value);n.add(e.pluginName),q.value=n;try{t?await B({pluginName:e.pluginName,agentId:t}):await je({pluginName:e.pluginName})}catch{}finally{let t=new Set(q.value);t.delete(e.pluginName),q.value=t}}function Wt(e){return K.value.has(e)}async function Gt(e,t){if(t===$(e.workerAgentId))return;let n=new Set(K.value);n.add(e._id),K.value=n;try{t?await De({cameraId:e._id,agentId:t}):await ke({cameraId:e._id})}catch{}finally{let t=new Set(K.value);t.delete(e._id),K.value=t}}async function Kt(){try{J.value=await L()}catch{}}async function qt(e){if(e&&!Y.value&&(Y.value=N.value?.suggestedAddresses?.[0]??``,!Y.value)){l.openTextDialog({data:{title:c(`views.workers.enable_workers`),contentText:c(`views.workers.address_required`),confirmText:c(`views.workers.ok`)}});return}try{await P(e?{enabled:!0,address:Y.value,port:X.value}:{enabled:!1})}catch{}}async function Jt(){try{await P({address:Y.value,port:X.value})}catch{}}function Yt(e){l.openTextDialog({data:{title:c(`views.workers.remove_worker`),confirmText:c(`views.workers.remove`),contentText:c(`views.workers.remove_worker_confirm`,{name:e.name}),confirmButtonProps:{severity:`danger`}},dialogSize:{desktop:{width:`auto`,maxWidth:`560px`,maxHeight:`90vh`}},onConfirm:async()=>{G.value.push(e.agentId);try{await z(e.agentId)}finally{G.value=G.value.filter(t=>t!==e.agentId)}}})}return p(async()=>{u.connect(),await h(),u.loadAll(),U.value=!0}),k(N,e=>{e&&(Y.value=e.address,X.value=e.port)},{immediate:!0}),se(()=>{u.disconnect()}),(r,a)=>{let s=ve,c=n,te=o,l=i,ae=le,u=pe,oe=fe,p=e,se=ye,h=ie,g=me,x=_e,T=t,E=re,O=ue,k=de;return m(),b(`div`,null,[C(ee)?j(``,!0):(m(),b(`h1`,Pe,y(r.$t(`views.workers.title`)),1)),D(te,{position:`left`},{default:_(()=>[D(c,{severity:`secondary`,text:``,class:`cui-button p-2 text-color non-draggable-region`,onClick:a[0]||=e=>r.$router.push(`/menu`)},{icon:_(()=>[D(s,{class:`w-6 h-6`})]),_:1})]),_:1}),!C(U)||!C(w)?(m(),b(`div`,Fe,[D(l,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})])):(m(),b(`div`,Ie,[v(`div`,null,[v(`span`,Le,y(r.$t(`views.workers.configuration`)),1),D(p,{class:`cui-card`},{content:_(()=>[v(`div`,Re,[v(`div`,ze,[v(`div`,Be,[v(`span`,Ve,y(r.$t(`views.workers.enable_workers`)),1),v(`span`,He,y(r.$t(`views.workers.enable_workers_description`)),1)]),D(ae,{"model-value":C(Z),disabled:C(F),class:`shrink-0`,"onUpdate:modelValue":qt},null,8,[`model-value`,`disabled`])]),C(Z)?(m(),b(S,{key:0},[v(`div`,Ue,[v(`span`,We,y(r.$t(`views.workers.master_address`)),1),D(u,{modelValue:C(Y),"onUpdate:modelValue":a[1]||=e=>A(Y)?Y.value=e:null,options:C(Dt),editable:``,"option-label":`label`,"option-value":`value`,placeholder:r.$t(`views.workers.master_address_placeholder`),class:`w-full`},null,8,[`modelValue`,`options`,`placeholder`]),v(`span`,Ge,y(r.$t(`views.workers.master_address_hint`)),1)]),v(`div`,Ke,[v(`span`,qe,y(r.$t(`views.workers.leaf_port`)),1),D(oe,{modelValue:C(X),"onUpdate:modelValue":a[2]||=e=>A(X)?X.value=e:null,min:1024,max:65535,"use-grouping":!1,class:`w-full`},null,8,[`modelValue`]),C(Ot)&&(C(N)?.pairedWorkers??0)>0?(m(),b(`span`,Je,y(r.$t(`views.workers.port_change_warning`)),1)):j(``,!0)]),v(`div`,Ye,[D(c,{class:`cui-button-medium`,label:r.$t(`views.workers.save`),loading:C(F),disabled:!C(kt),onClick:Jt},null,8,[`label`,`loading`,`disabled`])])],64)):j(``,!0)])]),_:1})]),C(Z)?(m(),b(`div`,Xe,[v(`span`,Ze,y(r.$t(`views.workers.workers`)),1),C(f).length?(m(),ce(se,{key:0,items:C(f),headers:C(Nt),"chart-data":C(Pt)},null,8,[`items`,`headers`,`chart-data`])):(m(),ce(p,{key:1,class:`cui-card`,pt:{root:{class:`h-full`}}},{content:_(()=>[v(`div`,Qe,[D(h,{class:`w-12 h-12 text-muted`}),v(`span`,$e,y(r.$t(`views.workers.no_workers`)),1)])]),_:1}))])):j(``,!0),C(Z)&&C(f).length?(m(),b(`div`,et,[v(`span`,tt,y(r.$t(`views.workers.camera_assignments`)),1),D(p,{class:`cui-card`},{content:_(()=>[v(`p`,nt,y(r.$t(`views.workers.camera_assignments_description`)),1),D(x,{value:C(Tt),loading:C(we),pt:H,"striped-rows":``,class:`w-full`},{loading:_(()=>[D(l,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})]),empty:_(()=>[v(`span`,rt,y(r.$t(`views.workers.no_cameras`)),1)]),default:_(()=>[D(g,{field:`name`,header:r.$t(`views.workers.camera`),"header-class":`p-2 min-w-40`,class:`p-2 min-w-40`},{body:_(({data:e})=>[v(`span`,it,y(e.name),1)]),_:1},8,[`header`]),D(g,{header:r.$t(`views.workers.workers`),"header-class":`p-2 w-full`,class:`p-2 w-full`},{body:_(({data:e})=>[D(u,{"model-value":$(e.workerAgentId),options:Lt(),"option-label":`label`,"option-value":`value`,placeholder:r.$t(`views.workers.local`),class:`w-full`,"show-clear":``,loading:Wt(e._id),disabled:Wt(e._id),"onUpdate:modelValue":t=>Gt(e,t)},null,8,[`model-value`,`options`,`placeholder`,`loading`,`disabled`,`onUpdate:modelValue`])]),_:1},8,[`header`])]),_:1},8,[`value`,`loading`])]),_:1})])):j(``,!0),C(Z)&&C(f).length?(m(),b(`div`,at,[v(`span`,ot,y(r.$t(`views.workers.plugin_assignments`)),1),D(p,{class:`cui-card`},{content:_(()=>[v(`p`,st,y(r.$t(`views.workers.plugin_assignments_description`)),1),D(x,{value:C(Et),loading:C(Ee),pt:H,"striped-rows":``,class:`w-full`},{loading:_(()=>[D(l,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})]),empty:_(()=>[v(`span`,ct,y(r.$t(`views.workers.no_plugins`)),1)]),default:_(()=>[D(g,{field:`displayName`,header:r.$t(`views.workers.plugin`),"header-class":`p-2 min-w-40`,class:`p-2 min-w-40`},{body:_(({data:e})=>[v(`div`,lt,[v(`span`,ut,y(e.displayName),1),Bt(e)?(m(),b(`span`,dt,y(Bt(e)),1)):j(``,!0)])]),_:1},8,[`header`]),D(g,{header:r.$t(`views.workers.workers`),"header-class":`p-2 w-full`,class:`p-2 w-full`},{body:_(({data:e})=>[D(u,{"model-value":$(e.workerAgentId),options:Vt(e),"option-label":`label`,"option-value":`value`,"option-disabled":`disabled`,placeholder:r.$t(`views.workers.local`),class:`w-full`,"show-clear":``,loading:Ht(e.pluginName),disabled:Ht(e.pluginName),"onUpdate:modelValue":t=>Ut(e,t)},null,8,[`model-value`,`options`,`placeholder`,`loading`,`disabled`,`onUpdate:modelValue`])]),_:1},8,[`header`])]),_:1},8,[`value`,`loading`])]),_:1})])):j(``,!0),C(Z)?(m(),b(`div`,ft,[v(`span`,pt,y(r.$t(`views.workers.pair_worker`)),1),D(p,{class:`cui-card`},{content:_(()=>[v(`div`,mt,[v(`span`,ht,y(r.$t(`views.workers.pair_worker_description`)),1),C(J)?(m(),b(S,{key:0},[v(`div`,gt,[v(`span`,_t,y(r.$t(`views.workers.pairing_code`)),1),D(k,null,{default:_(()=>[D(T,{"model-value":C(J).code,readonly:``,type:`text`},null,8,[`model-value`]),D(O,null,{default:_(()=>[D(E,{"action-text":r.$t(`views.workers.copied`),icon:C(d),"button-props":{severity:`secondary`,text:!0},onAction:a[3]||=e=>C(ne)(C(J).code)},null,8,[`action-text`,`icon`])]),_:1})]),_:1}),v(`span`,vt,y(r.$t(`views.workers.pairing_expires`,{minutes:C(jt)})),1)]),v(`div`,yt,[v(`div`,bt,[v(`span`,xt,y(r.$t(`views.workers.pairing_snippet`)),1),D(E,{"action-text":r.$t(`views.workers.copied`),icon:C(d),"button-props":{severity:`secondary`,text:!0},onAction:a[4]||=e=>C(ne)(C(Mt))},null,8,[`action-text`,`icon`])]),v(`pre`,St,y(C(Mt)),1),v(`span`,Ct,y(r.$t(`views.workers.pairing_snippet_hint`)),1)])],64)):j(``,!0),v(`div`,wt,[D(c,{class:`cui-button-medium`,label:r.$t(`views.workers.generate_code`),loading:C(R),onClick:Kt},null,8,[`label`,`loading`])])])]),_:1})])):j(``,!0)]))])}}}),[[`__scopeId`,`data-v-77cf4539`]]);export{U as default};