@camera.ui/server 2.1.15 → 2.1.17

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 (417) hide show
  1. package/dist/interface/assets/{404-DwgMdXqW.js → 404-Cg1J2LX8.js} +1 -1
  2. package/dist/interface/assets/{About-REFUgZk_.js → About-CW7G6onF.js} +1 -1
  3. package/dist/interface/assets/Automation-CIwBJK1Y.js +3 -0
  4. package/dist/interface/assets/AutomationImport-CHkNv7C-.js +2 -0
  5. package/dist/interface/assets/AutomationStore-5bTym-Gl.js +2 -0
  6. package/dist/interface/assets/AutomationStoreDetail-BF8UoG_l.js +2 -0
  7. package/dist/interface/assets/Automations-CaX2fHhJ.js +2 -0
  8. package/dist/interface/assets/Camera-1zdmJnP-.js +2 -0
  9. package/dist/interface/assets/Camera-DSyI4J5-.css +1 -0
  10. package/dist/interface/assets/{CameraConsole-S61HjIGA.js → CameraConsole-CB1HEFKJ.js} +2 -2
  11. package/dist/interface/assets/{Cameras-57rPP3Y_.js → Cameras-CyCY0rW9.js} +2 -2
  12. package/dist/interface/assets/Camview-CZct5cnP.css +1 -0
  13. package/dist/interface/assets/Camview-Dia7G1u_.js +1 -0
  14. package/dist/interface/assets/{CertificateUpload-CBSLHn_I.js → CertificateUpload-jP-JIxmY.js} +1 -1
  15. package/dist/interface/assets/Config-DOa7WHyQ.js +2 -0
  16. package/dist/interface/assets/{ConfigActionCameraControl-B7KwK7vb.js → ConfigActionCameraControl-BmCE3XLC.js} +1 -1
  17. package/dist/interface/assets/{ConfigActionDelay-DwTGfeP4.js → ConfigActionDelay-CfHCZ0uf.js} +1 -1
  18. package/dist/interface/assets/{ConfigActionHttp-idm-FKXM.js → ConfigActionHttp-DdM7gEb0.js} +1 -1
  19. package/dist/interface/assets/{ConfigActionImageInput-C-v-_UEM.js → ConfigActionImageInput-CrPPNT4K.js} +1 -1
  20. package/dist/interface/assets/{ConfigActionMqtt-CG1o9_6A.js → ConfigActionMqtt-D7-u4zri.js} +1 -1
  21. package/dist/interface/assets/ConfigActionNotification-BSuUI2FP.js +1 -0
  22. package/dist/interface/assets/{ConfigActionNotificationControl-BvHIqHE7.js → ConfigActionNotificationControl-DfvAxKnx.js} +1 -1
  23. package/dist/interface/assets/{ConfigActionOutput-BQvDZGKV.js → ConfigActionOutput-DPplSpm_.js} +1 -1
  24. package/dist/interface/assets/{ConfigActionPlugin-C7mcZ0Kz.js → ConfigActionPlugin-BnRn_p26.js} +1 -1
  25. package/dist/interface/assets/{ConfigActionSensor-BFnb75FI.js → ConfigActionSensor-CoEoqFAY.js} +1 -1
  26. package/dist/interface/assets/{ConfigActionSnapshot-BfzPScY6.js → ConfigActionSnapshot-wXdFiyU-.js} +1 -1
  27. package/dist/interface/assets/{ConfigActionVariable-CjIeZnOV.js → ConfigActionVariable-BqJvOOHH.js} +1 -1
  28. package/dist/interface/assets/{ConfigConditionIfElse-Dgcqs9QP.js → ConfigConditionIfElse-DG2Kgqn5.js} +1 -1
  29. package/dist/interface/assets/{ConfigConditionSensorState-DtLt1AvW.js → ConfigConditionSensorState-BytECo6r.js} +1 -1
  30. package/dist/interface/assets/{ConfigConditionSwitch-C6BfIozf.js → ConfigConditionSwitch-DaSt9uZE.js} +1 -1
  31. package/dist/interface/assets/{ConfigConditionTime-NcjSe4RM.js → ConfigConditionTime-D42OsshU.js} +1 -1
  32. package/dist/interface/assets/{ConfigSensorValueInput-DuvBl4YL.js → ConfigSensorValueInput-BtEmtZSm.js} +1 -1
  33. package/dist/interface/assets/{ConfigTriggerDetection-DsVb-Svo.js → ConfigTriggerDetection-CDH2fzsu.js} +1 -1
  34. package/dist/interface/assets/ConfigTriggerGeofence-Dopegic5.js +1 -0
  35. package/dist/interface/assets/{ConfigTriggerManual-vG37zALd.js → ConfigTriggerManual-DAtWfH0-.js} +1 -1
  36. package/dist/interface/assets/{ConfigTriggerMqtt-BPl_Puje.js → ConfigTriggerMqtt-CB3_PxqD.js} +1 -1
  37. package/dist/interface/assets/{ConfigTriggerSchedule-Bn2drGV5.js → ConfigTriggerSchedule-BUzOrF23.js} +1 -1
  38. package/dist/interface/assets/{ConfigTriggerSensor-DP0CXRLo.js → ConfigTriggerSensor-D5kRIb7I.js} +1 -1
  39. package/dist/interface/assets/{ConfigTriggerSystem-DQikAjbB.js → ConfigTriggerSystem-Cud77VMR.js} +1 -1
  40. package/dist/interface/assets/{ConfigTriggerWebhook-Cl7KWuRQ.js → ConfigTriggerWebhook-CeG5R3kV.js} +1 -1
  41. package/dist/interface/assets/Console-DdOD6Pd5.js +1 -0
  42. package/dist/interface/assets/{CuiAutomationRunsDialog-D_rNvqan.js → CuiAutomationRunsDialog-Cym6xMVJ.js} +1 -1
  43. package/dist/interface/assets/CuiBottomSheet-B3QSHp4-.js +1 -0
  44. package/dist/interface/assets/CuiBottomSheet-BSoMhymR.js +1 -0
  45. package/dist/interface/assets/CuiBottomSheet-_KXSb13N.css +1 -0
  46. package/dist/interface/assets/CuiCameraPipCard-DGgrxZJd.js +1 -0
  47. package/dist/interface/assets/{CuiCameraRecordings-h6Yel4J4.js → CuiCameraRecordings-Bu68AFdM.js} +1 -1
  48. package/dist/interface/assets/CuiCameraShares-BOhfTcxQ.js +1 -0
  49. package/dist/interface/assets/CuiCameraTable-C1CHYnda.js +1 -0
  50. package/dist/interface/assets/{CuiCameraTable-CfXoLbtY.js → CuiCameraTable-D0lc0VAJ.js} +2 -2
  51. package/dist/interface/assets/{CuiChartTable-BWRwoTLX.js → CuiChartTable-DcrFI8tT.js} +1 -1
  52. package/dist/interface/assets/{CuiConsole-Cb3wDLZr.js → CuiConsole-ICLBq4Q-.js} +2 -2
  53. package/dist/interface/assets/{CuiDataTable-aAZV_F3r.js → CuiDataTable-BooFPsGH.js} +1 -1
  54. package/dist/interface/assets/CuiLightControl-D1ih2hO-.js +1 -0
  55. package/dist/interface/assets/{CuiList-BZYxCLqz.js → CuiList-ChI82KjI.js} +1 -1
  56. package/dist/interface/assets/CuiPluginCard-DqdSWrwb.js +2 -0
  57. package/dist/interface/assets/{CuiPluginCategoryChip-C9trJ_ql.js → CuiPluginCategoryChip-DsRcMb72.js} +1 -1
  58. package/dist/interface/assets/CuiPluginOAuthButton-BSvRKUSY.js +2 -0
  59. package/dist/interface/assets/{CuiPluginTrustBadge-D5gkIhJv.js → CuiPluginTrustBadge-DXL7N1LC.js} +1 -1
  60. package/dist/interface/assets/{CuiQRCode-DY5Q-Xel.js → CuiQRCode-DHln6Lo9.js} +1 -1
  61. package/dist/interface/assets/CuiSchema-B7i2O3Fy.js +1 -0
  62. package/dist/interface/assets/{CuiTopNavbarItem-CJqOqVMt.css → CuiTopNavbarItem-7673AFGS.css} +1 -1
  63. package/dist/interface/assets/CuiTopNavbarItem-TMfTyt8u.js +1 -0
  64. package/dist/interface/assets/Faces-CyTkMqMW.js +1 -0
  65. package/dist/interface/assets/FirstSteps-B4gb7Sgn.js +1 -0
  66. package/dist/interface/assets/{Floorplan-Bxhdg4C2.css → Floorplan-B1lItPnM.css} +1 -1
  67. package/dist/interface/assets/Floorplan-DBwWnuys.js +1 -0
  68. package/dist/interface/assets/Instances-D9fnwItz.js +1 -0
  69. package/dist/interface/assets/{Logs-CfYTWOv2.js → Logs-Brk6fJa0.js} +2 -2
  70. package/dist/interface/assets/{Menu-HzmLhy40.js → Menu-CrdBz1Er.js} +1 -1
  71. package/dist/interface/assets/Metrics-DXMgfNIL.js +9 -0
  72. package/dist/interface/assets/{OAuthDeviceFlow-DBac627V.js → OAuthDeviceFlow-D5hSwHeO.js} +1 -1
  73. package/dist/interface/assets/Plugin-C65oNZ9N.js +1 -0
  74. package/dist/interface/assets/{PluginConsole-C5dZgdl9.js → PluginConsole-Bs3Z5u9-.js} +2 -2
  75. package/dist/interface/assets/PluginDetail-C3KUrHvq.js +2 -0
  76. package/dist/interface/assets/{PluginSchema-DJ8NY8hW.js → PluginSchema-D22zRDkZ.js} +1 -1
  77. package/dist/interface/assets/PluginSearch-4ngDmZQ2.js +1 -0
  78. package/dist/interface/assets/PluginSearch-D7XYJzl4.js +2 -0
  79. package/dist/interface/assets/{PluginUpdateProgress-DgqaTwSS.js → PluginUpdateProgress-MEdR7mID.js} +1 -1
  80. package/dist/interface/assets/Plugins-DQTlb12n.js +1 -0
  81. package/dist/interface/assets/Recordings-CfSTX_Mw.css +1 -0
  82. package/dist/interface/assets/Recordings-CqBwRvn-.js +1 -0
  83. package/dist/interface/assets/SensorEdit-BM2zHAM7.js +1 -0
  84. package/dist/interface/assets/{SensorHistory-bCcPH0_I.js → SensorHistory-Dbv2ODqn.js} +1 -1
  85. package/dist/interface/assets/Sensors-B4YzyU7R.js +2 -0
  86. package/dist/interface/assets/{Sensors-CaKl4PQY.css → Sensors-DETviyjO.css} +1 -1
  87. package/dist/interface/assets/Settings--wgPYOyK.js +1 -0
  88. package/dist/interface/assets/{Settings-jQIhZFRY.css → Settings-D7495zbV.css} +1 -1
  89. package/dist/interface/assets/SettingsAccount-BF6Cp8Rt.js +1 -0
  90. package/dist/interface/assets/SettingsAccount-D7CHP0f1.js +1 -0
  91. package/dist/interface/assets/SettingsAppearance-Ba0jbbVW.js +1 -0
  92. package/dist/interface/assets/SettingsAppearance-BpXZwBjO.js +1 -0
  93. package/dist/interface/assets/SettingsBackup-qEYm-6De.js +1 -0
  94. package/dist/interface/assets/{SettingsList-Nc7OCZrn.js → SettingsList-1brGZ2E_.js} +1 -1
  95. package/dist/interface/assets/SettingsMqtt-Ds8YpoLA.js +1 -0
  96. package/dist/interface/assets/SettingsNotifications-Diqpfbrh.js +1 -0
  97. package/dist/interface/assets/{SettingsPermissions-BZXAgxUl.js → SettingsPermissions-GmGacrLc.js} +1 -1
  98. package/dist/interface/assets/{SettingsRecordings-Biyy3rTF.js → SettingsRecordings-CtEm_7PE.js} +1 -1
  99. package/dist/interface/assets/SettingsRemote-CENHI51U.js +2 -0
  100. package/dist/interface/assets/SettingsSystem-YkigO2-V.js +2 -0
  101. package/dist/interface/assets/SettingsUsers-BNPa87gu.js +1 -0
  102. package/dist/interface/assets/{Terminal-AsI0lb5n.js → Terminal-uxOHZpUp.js} +3 -3
  103. package/dist/interface/assets/Training-BRZKDa8S.js +1 -0
  104. package/dist/interface/assets/Training-DMNjB3uX.css +1 -0
  105. package/dist/interface/assets/Updates-CbscgL60.js +2 -0
  106. package/dist/interface/assets/{VariableInput-__I-FsBF.js → VariableInput-Dqg4sqBD.js} +1 -1
  107. package/dist/interface/assets/{VariableSuggestions-B-7auf15.js → VariableSuggestions-DZCkPAVs.js} +1 -1
  108. package/dist/interface/assets/{VersionsHandler-BTe1Ev3b.js → VersionsHandler-BYFshrhO.js} +2 -2
  109. package/dist/interface/assets/{VirtualSensorCreate-DdLgJECI.js → VirtualSensorCreate-CQ-C4si3.js} +1 -1
  110. package/dist/interface/assets/Workers-DC77SjZQ.js +2 -0
  111. package/dist/interface/assets/api-Cb8_C_se.js +4 -0
  112. package/dist/interface/assets/{api-84bL4zpk.js → api-CbYNh0N1.js} +1 -1
  113. package/dist/interface/assets/api-DIyogyx5.css +2 -0
  114. package/dist/interface/assets/{auth-F2wU_mtw.js → auth-Bev1OdHw.js} +1 -1
  115. package/dist/interface/assets/{automations-D6fqhxhY.js → automations-DrpESBB_.js} +1 -1
  116. package/dist/interface/assets/cameraSources-QF2xqMxX.js +1 -0
  117. package/dist/interface/assets/cloudHandoff-BknPGUc0.js +1 -0
  118. package/dist/interface/assets/{config-Jzs6YXbB.js → config-DCK7k2P4.js} +1 -1
  119. package/dist/interface/assets/{flowSchema-C1fWwuQa.js → flowSchema-D3Ddm5sW.js} +1 -1
  120. package/dist/interface/assets/{intercomService-fFto_C1t.js → intercomService-DIwpkwG4.js} +1 -1
  121. package/dist/interface/assets/main-Cb5Z8N7b.css +1 -0
  122. package/dist/interface/assets/main-DVwdxi04.js +3 -0
  123. package/dist/interface/assets/mqtt-COWs_r7k.js +1 -0
  124. package/dist/interface/assets/{notifications-CIJEGR7A.js → notifications-sIv1-H85.js} +1 -1
  125. package/dist/interface/assets/{plugins-HYHSAzD-.js → plugins-CXQj6XQt.js} +1 -1
  126. package/dist/interface/assets/rooms-DScX89Ks.js +1 -0
  127. package/dist/interface/assets/{sensorIcons-ByPd6LR6.js → sensorIcons-CvVtOgZB.js} +1 -1
  128. package/dist/interface/assets/sensorSlots-DsfKs8_k.js +1 -0
  129. package/dist/interface/assets/{sensors-BgjfSfk6.js → sensors-Bf_gYmB5.js} +1 -1
  130. package/dist/interface/assets/{server-CIDx_I6S.js → server-CahE6_Pv.js} +1 -1
  131. package/dist/interface/assets/{theme-GSy1mQOB.js → theme-DmUc7UHl.js} +1 -1
  132. package/dist/interface/assets/{types-Do9v0d7I.js → types-D4kUDpid.js} +1 -1
  133. package/dist/interface/assets/{types-Dlk_iSoE.js → types-Dse8_nTX.js} +1 -1
  134. package/dist/interface/assets/types-hwOSxlNg.js +1 -0
  135. package/dist/interface/assets/ungrouped-Byxe4LNR.js +1 -0
  136. package/dist/interface/assets/ungrouped-n3OnGhCH.css +1 -0
  137. package/dist/interface/assets/{updates-73Yq11IN.js → updates-C4gAnNY6.js} +1 -1
  138. package/dist/interface/assets/{useAppVersion-B0_bYa9V.js → useAppVersion--b5Zj7tl.js} +1 -1
  139. package/dist/interface/assets/useBackupRestore-Bx13MgrJ.js +1 -0
  140. package/dist/interface/assets/{useCameraOptions-DKeZhfOM.js → useCameraOptions-DN4gJjIl.js} +1 -1
  141. package/dist/interface/assets/{useLogsSocket-CmyTTUGN.js → useLogsSocket-DqVa6Hky.js} +1 -1
  142. package/dist/interface/assets/{useNavLayout-DOFS3269.js → useNavLayout-CuQ9F9cj.js} +1 -1
  143. package/dist/interface/assets/{usePermissions-D5I3gACT.js → usePermissions-C1L7m3Nc.js} +1 -1
  144. package/dist/interface/assets/{usePluginUpdates-BWxJ04h7.js → usePluginUpdates-CvQPy02x.js} +1 -1
  145. package/dist/interface/assets/{usePushRegistration-DWreQ-Hn.js → usePushRegistration-BKvefMFq.js} +1 -1
  146. package/dist/interface/assets/{useServerRestart-DDW-nw_t.js → useServerRestart-ByN6484v.js} +1 -1
  147. package/dist/interface/assets/{useStreamStatus-COIha2d8.js → useStreamStatus-BbtTnidZ.js} +1 -1
  148. package/dist/interface/assets/{useTabSwipe-aoMqro29.js → useTabSwipe-D9udGzPx.js} +1 -1
  149. package/dist/interface/assets/{useUpdateChannel-CM9MYCZy.js → useUpdateChannel-8t3W9dNr.js} +1 -1
  150. package/dist/interface/assets/{useUpdatesSocket-DY4i32ml.js → useUpdatesSocket-D9s_5T3l.js} +1 -1
  151. package/dist/interface/assets/{useUserOptions-DHfprGgA.js → useUserOptions-CEPYkuSm.js} +1 -1
  152. package/dist/interface/assets/{vendor-cameraui-BRv7o4zz.js → vendor-cameraui-Dlzn4pyz.js} +26 -26
  153. package/dist/interface/assets/vendor-core-COMSlypG.js +1 -0
  154. package/dist/interface/assets/{vendor-primevue-C85v-zl5.js → vendor-primevue-DF71EsUM.js} +55 -55
  155. package/dist/interface/ha/{404-TwTUCqDv.js → 404-Bm-oxxip.js} +1 -1
  156. package/dist/interface/ha/{About-BeZkyUdW.js → About-CDcN0Q2J.js} +6 -6
  157. package/dist/interface/ha/{Automation-CL7j0Vgh.js → Automation-BQd4b0ym.js} +149 -149
  158. package/dist/interface/ha/{AutomationImport-D7arOHP-.js → AutomationImport-CX1C76Wb.js} +6 -6
  159. package/dist/interface/ha/{AutomationStore-DN0yBk6X.js → AutomationStore-D4B0KpoW.js} +27 -27
  160. package/dist/interface/ha/{AutomationStoreDetail-DUuLEnvx.js → AutomationStoreDetail-B53Giz4B.js} +24 -24
  161. package/dist/interface/ha/{Automations-Dfbren5V.js → Automations-BXlwOElS.js} +94 -94
  162. package/dist/interface/ha/{Camera-BxWpvZM8.js → Camera-CauwMneE.js} +182 -180
  163. package/dist/interface/ha/{CameraConsole-DT7BFGXD.js → CameraConsole-CmsMjuIR.js} +5 -5
  164. package/dist/interface/ha/{Cameras-ClmwBeNf.js → Cameras-CyHDmgs0.js} +117 -117
  165. package/dist/interface/ha/{Camview-CFAKNI6-.js → Camview-BwwvU5k8.js} +112 -112
  166. package/dist/interface/ha/{Config-D83QNz1P.js → Config-C_Zuyeoc.js} +9 -9
  167. package/dist/interface/ha/{ConfigActionCameraControl-D-2_gkM-.js → ConfigActionCameraControl-C1_QyuX8.js} +3 -3
  168. package/dist/interface/ha/{ConfigActionHttp-CDmzaJOb.js → ConfigActionHttp-C0d433mh.js} +2 -2
  169. package/dist/interface/ha/{ConfigActionImageInput-7mA-jNIj.js → ConfigActionImageInput-BYys2FwC.js} +1 -1
  170. package/dist/interface/ha/{ConfigActionMqtt-CGLqAswk.js → ConfigActionMqtt-DznDfzze.js} +4 -4
  171. package/dist/interface/ha/{ConfigActionNotification-DyhLsVfe.js → ConfigActionNotification-CC2qfBLm.js} +3 -3
  172. package/dist/interface/ha/{ConfigActionNotificationControl-C381uizv.js → ConfigActionNotificationControl-3jlm7_A4.js} +2 -2
  173. package/dist/interface/ha/{ConfigActionOutput-Cg6IMq5u.js → ConfigActionOutput-BEf1U3_l.js} +1 -1
  174. package/dist/interface/ha/{ConfigActionPlugin-vFD_OHt8.js → ConfigActionPlugin-C57BUrJD.js} +5 -5
  175. package/dist/interface/ha/{ConfigActionSensor-B0JYbb-_.js → ConfigActionSensor-BkoSPCUJ.js} +5 -5
  176. package/dist/interface/ha/{ConfigActionSnapshot-DlYRwdII.js → ConfigActionSnapshot-CC3EpmCq.js} +2 -2
  177. package/dist/interface/ha/{ConfigActionVariable-6HNVpSjs.js → ConfigActionVariable-JDyDhSzZ.js} +1 -1
  178. package/dist/interface/ha/{ConfigConditionIfElse-b5UhYSf4.js → ConfigConditionIfElse-BVg-TUpv.js} +3 -3
  179. package/dist/interface/ha/{ConfigConditionSensorState-CI1CS9qa.js → ConfigConditionSensorState-YYeWly1H.js} +4 -4
  180. package/dist/interface/ha/{ConfigConditionSwitch-DGoKb_ZM.js → ConfigConditionSwitch-DQHXX-4U.js} +5 -5
  181. package/dist/interface/ha/{ConfigSensorValueInput-BGQytgns.js → ConfigSensorValueInput-BuuzQ1nJ.js} +8 -8
  182. package/dist/interface/ha/{ConfigTriggerDetection-l_h4kt0X.js → ConfigTriggerDetection-CUvkAmpJ.js} +3 -3
  183. package/dist/interface/ha/{ConfigTriggerGeofence-Y2Od0L2_.js → ConfigTriggerGeofence-CCHELnfy.js} +7 -7
  184. package/dist/interface/ha/{ConfigTriggerMqtt-DttCVDHe.js → ConfigTriggerMqtt-BfLnCiWZ.js} +1 -1
  185. package/dist/interface/ha/{ConfigTriggerSensor-O4mWaXnJ.js → ConfigTriggerSensor-Bi-Jld2G.js} +1 -1
  186. package/dist/interface/ha/{ConfigTriggerSystem-C_uWI6kc.js → ConfigTriggerSystem-_HXrWjaJ.js} +2 -2
  187. package/dist/interface/ha/{ConfigTriggerWebhook-CY5vDxZe.js → ConfigTriggerWebhook-CFYsVF_r.js} +2 -2
  188. package/dist/interface/ha/{Console-DdOU0_jE.js → Console-CR95JZFd.js} +101 -101
  189. package/dist/interface/ha/{CuiAutomationRunsDialog-_WF5J4hV.js → CuiAutomationRunsDialog--mpkPFmw.js} +2 -2
  190. package/dist/interface/ha/{CuiBottomSheet-Bzr2zhm3.js → CuiBottomSheet-DfFzwDjq.js} +3 -3
  191. package/dist/interface/ha/{CuiCameraRecordings-HqWrHpr-.js → CuiCameraRecordings-DCIFFbFk.js} +13 -13
  192. package/dist/interface/ha/{CuiCameraShares-Bw1RlqC-.js → CuiCameraShares-Dwv_XtX4.js} +7 -7
  193. package/dist/interface/ha/{CuiCameraTable-DvIlmfmW.js → CuiCameraTable-L6wd-VYz.js} +9 -9
  194. package/dist/interface/ha/{CuiChartTable-C6vRR9ny.js → CuiChartTable-CxJR8u6U.js} +16 -16
  195. package/dist/interface/ha/{CuiConsole-B6fDJfvq.js → CuiConsole-CvL9TXZY.js} +7 -7
  196. package/dist/interface/ha/{CuiDataTable-BLL7vWD1.js → CuiDataTable-Bn80WJXi.js} +7 -7
  197. package/dist/interface/ha/{CuiPluginCard-CsJ-dlra.js → CuiPluginCard-CtOzPAal.js} +32 -32
  198. package/dist/interface/ha/CuiPluginOAuthButton-1LgNMLII.js +79 -0
  199. package/dist/interface/ha/{CuiPluginTrustBadge-CQtfi3UI.js → CuiPluginTrustBadge-mHuy3ab9.js} +3 -3
  200. package/dist/interface/ha/{CuiQRCode-DOj5PJo2.js → CuiQRCode-CloepWte.js} +6 -6
  201. package/dist/interface/ha/{CuiSchema-Dg43r2Vo.js → CuiSchema-CJsEWewj.js} +132 -132
  202. package/dist/interface/ha/{CuiTopNavbarItem-CMu_hCIP.js → CuiTopNavbarItem-B2EM-tmz.js} +3 -3
  203. package/dist/interface/ha/{Faces-Ed0ytbse.js → Faces-BMkZfxDm.js} +66 -66
  204. package/dist/interface/ha/{FirstSteps-Dkw2Enre.js → FirstSteps-BH0mga3u.js} +67 -67
  205. package/dist/interface/ha/{Floorplan-IdC1tgDr.js → Floorplan-CyfIUI4Z.js} +220 -220
  206. package/dist/interface/ha/{Instances-dvDlInn-.js → Instances-BwNXc91J.js} +18 -18
  207. package/dist/interface/ha/{Logs-rUL_mLTJ.js → Logs-CcSiN16r.js} +11 -11
  208. package/dist/interface/ha/{Menu-CfMgYCN9.js → Menu-qdN0OBb7.js} +15 -15
  209. package/dist/interface/ha/{Metrics-DYNvEdb-.js → Metrics-ClM5lhvC.js} +93 -93
  210. package/dist/interface/ha/{OAuthDeviceFlow-vgBWOkzP.js → OAuthDeviceFlow-BBr-rER_.js} +5 -5
  211. package/dist/interface/ha/{Plugin-PqUW_696.js → Plugin-BBkSXygO.js} +104 -104
  212. package/dist/interface/ha/{PluginConsole-CFJKNhQw.js → PluginConsole-DqrBnXSX.js} +4 -4
  213. package/dist/interface/ha/{PluginDetail-cC8nut35.js → PluginDetail-Clu6nv-B.js} +12 -12
  214. package/dist/interface/ha/{PluginSearch-BzSs0ibh.js → PluginSearch-Dn-24FLX.js} +53 -53
  215. package/dist/interface/ha/{PluginUpdateProgress-CtM7lrl9.js → PluginUpdateProgress-CzhHUKDg.js} +3 -3
  216. package/dist/interface/ha/{Plugins-CzvlXEaH.js → Plugins-qYJD5ioU.js} +27 -27
  217. package/dist/interface/ha/{Recordings-BtsW8I5D.js → Recordings-CBIt3vL7.js} +384 -366
  218. package/dist/interface/ha/{SensorEdit-DMwyTDIG.js → SensorEdit-BbG6apZA.js} +353 -353
  219. package/dist/interface/ha/{SensorHistory-DoJhFbTC.js → SensorHistory-CqGsnQPW.js} +2 -2
  220. package/dist/interface/ha/{Sensors-BoRfutfx.js → Sensors-mKWkCDF8.js} +507 -481
  221. package/dist/interface/ha/{Settings-vmfs1rfj.js → Settings-C5J4ubiA.js} +24 -24
  222. package/dist/interface/ha/SettingsAccount-tCyZsBxG.js +970 -0
  223. package/dist/interface/ha/{SettingsAppearance-v9zeetcx.js → SettingsAppearance-DqJp4Clt.js} +14 -14
  224. package/dist/interface/ha/{SettingsBackup-eO4r8MZe.js → SettingsBackup-CHnCKYgz.js} +6 -6
  225. package/dist/interface/ha/{SettingsList-burOi4S6.js → SettingsList-DsQOPeKW.js} +5 -5
  226. package/dist/interface/ha/{SettingsMqtt-CjZERKR8.js → SettingsMqtt-TPIsEcXe.js} +124 -124
  227. package/dist/interface/ha/SettingsNotifications-DH3T_xyh.js +529 -0
  228. package/dist/interface/ha/{SettingsRecordings-DzsXkzeu.js → SettingsRecordings-Ay8lj8Lm.js} +7 -7
  229. package/dist/interface/ha/{SettingsRemote-B0HZwZj3.js → SettingsRemote-CHiBADuu.js} +202 -202
  230. package/dist/interface/ha/{SettingsSystem-Bc_c8XYh.js → SettingsSystem-tqs40pUW.js} +10 -10
  231. package/dist/interface/ha/{SettingsUsers-CxL65q1C.js → SettingsUsers-BUbC_Qc7.js} +29 -29
  232. package/dist/interface/ha/{Terminal-DsX-_5R2.js → Terminal-f_b-089t.js} +76 -76
  233. package/dist/interface/ha/Training-Dcxo9PFi.js +1479 -0
  234. package/dist/interface/ha/{Updates-DG9i-tQu.js → Updates-aGl5hy8Q.js} +14 -14
  235. package/dist/interface/ha/{VariableInput-CcevSEwK.js → VariableInput-yJGbaZEo.js} +1 -1
  236. package/dist/interface/ha/{VersionsHandler-5GeFt6Lw.js → VersionsHandler-Q4PfRpbs.js} +10 -10
  237. package/dist/interface/ha/{VirtualSensorCreate-dWN8FANX.js → VirtualSensorCreate-Gbi6aJBh.js} +8 -8
  238. package/dist/interface/ha/{Workers-D1y6eFKT.js → Workers-BbBqOc0H.js} +167 -167
  239. package/dist/interface/ha/{api-DDUXI4DG.js → api-DBu4gh4_.js} +9705 -9275
  240. package/dist/interface/ha/{api-BgQ9AVgK.js → api-DY0z6Sp_.js} +3 -3
  241. package/dist/interface/ha/{auth-C8Vp1TkJ.js → auth-C2V-kpRp.js} +38 -38
  242. package/dist/interface/ha/{automationBlueprint-DhRjWL2p.js → automationBlueprint-MGUZJTFY.js} +4 -4
  243. package/dist/interface/ha/cameraui-cards.js +1 -1
  244. package/dist/interface/ha/{cards-BGikU5nh.js → cards-BA6g_9R5.js} +573 -573
  245. package/dist/interface/ha/cloud-check-BFJzoUtz.js +33 -0
  246. package/dist/interface/ha/{config-WqhFqx8D.js → config-BGlhgEOa.js} +16 -16
  247. package/dist/interface/ha/{dist-BQFunPaA.js → dist-BqTZri2H.js} +743 -725
  248. package/dist/interface/ha/{mqtt-CQopAljB.js → mqtt-BLKZNA-E.js} +12 -12
  249. package/dist/interface/ha/{notifications-C4IU7Zbu.js → notifications-BW0RNMnG.js} +22 -22
  250. package/dist/interface/ha/{pinia-3D39Do4a.js → pinia-DINxhtY-.js} +188 -162
  251. package/dist/interface/ha/{plugins-C2n0mAnr.js → plugins-Cj-B4Nwy.js} +62 -62
  252. package/dist/interface/ha/{rooms-qqdOrA2J.js → rooms-C32i51p-.js} +7 -7
  253. package/dist/interface/ha/{server-D6Yglz-z.js → server-CfbE_0Z9.js} +31 -31
  254. package/dist/interface/ha/{types-BtcJ7st-.js → types-Ry6RjBNa.js} +32 -32
  255. package/dist/interface/ha/{ungrouped-aASsOUNF.js → ungrouped-CO29-tSV.js} +415 -211
  256. package/dist/interface/ha/{updates-BuAFU-ZQ.js → updates-CZPI8XJ1.js} +38 -38
  257. package/dist/interface/ha/{useAppVersion-D0EOwpoO.js → useAppVersion-9jfqRo_z.js} +1 -1
  258. package/dist/interface/ha/{useLogsSocket-CCewWMZM.js → useLogsSocket-B0E7a3ys.js} +1 -1
  259. package/dist/interface/ha/{useNavLayout-B_QzdVtJ.js → useNavLayout-B2wfeha-.js} +19 -19
  260. package/dist/interface/ha/{useServerRestart-B0OMNlwZ.js → useServerRestart-CCH-yMWR.js} +1 -1
  261. package/dist/interface/ha/{useTabSwipe-DG6Gx2Md.js → useTabSwipe-D2uqGEvR.js} +1 -1
  262. package/dist/interface/ha/{useUpdateChannel-CXDGlWX2.js → useUpdateChannel--SP3Wjym.js} +2 -2
  263. package/dist/interface/ha/{useUpdatesSocket-BgCJLp_W.js → useUpdatesSocket-BBbUCMU-.js} +1 -1
  264. package/dist/interface/ha/{useUserOptions-rirRksyl.js → useUserOptions-Bh54UAkH.js} +1 -1
  265. package/dist/interface/index.html +28 -27
  266. package/dist/interface/sw.js +1 -1
  267. package/dist/server/package.json +8 -8
  268. package/dist/server/src/api/controllers/training.controller.d.ts +40 -0
  269. package/dist/server/src/api/controllers/training.controller.js +97 -0
  270. package/dist/server/src/api/controllers/training.controller.js.map +1 -0
  271. package/dist/server/src/api/database/constants.d.ts +1 -0
  272. package/dist/server/src/api/database/constants.js +1 -0
  273. package/dist/server/src/api/database/constants.js.map +1 -1
  274. package/dist/server/src/api/database/index.d.ts +3 -2
  275. package/dist/server/src/api/database/index.js +4 -2
  276. package/dist/server/src/api/database/index.js.map +1 -1
  277. package/dist/server/src/api/database/migrations/v2-1-19.d.ts +3 -0
  278. package/dist/server/src/api/database/migrations/v2-1-19.js +24 -0
  279. package/dist/server/src/api/database/migrations/v2-1-19.js.map +1 -0
  280. package/dist/server/src/api/database/record-schemas.d.ts +7 -1
  281. package/dist/server/src/api/database/record-schemas.js +8 -0
  282. package/dist/server/src/api/database/record-schemas.js.map +1 -1
  283. package/dist/server/src/api/database/types.d.ts +27 -0
  284. package/dist/server/src/api/index.js +1 -1
  285. package/dist/server/src/api/index.js.map +1 -1
  286. package/dist/server/src/api/render-index.js +1 -1
  287. package/dist/server/src/api/render-index.js.map +1 -1
  288. package/dist/server/src/api/routes/index.js +2 -0
  289. package/dist/server/src/api/routes/index.js.map +1 -1
  290. package/dist/server/src/api/routes/training.routes.d.ts +2 -0
  291. package/dist/server/src/api/routes/training.routes.js +107 -0
  292. package/dist/server/src/api/routes/training.routes.js.map +1 -0
  293. package/dist/server/src/api/schemas/cameras.schema.d.ts +76 -76
  294. package/dist/server/src/api/schemas/remote.schema.d.ts +1 -1
  295. package/dist/server/src/api/schemas/training.schema.d.ts +46 -0
  296. package/dist/server/src/api/schemas/training.schema.js +45 -0
  297. package/dist/server/src/api/schemas/training.schema.js.map +1 -0
  298. package/dist/server/src/api/services/cameras.service.js +7 -2
  299. package/dist/server/src/api/services/cameras.service.js.map +1 -1
  300. package/dist/server/src/api/services/sensors.service.d.ts +1 -0
  301. package/dist/server/src/api/services/sensors.service.js +1 -0
  302. package/dist/server/src/api/services/sensors.service.js.map +1 -1
  303. package/dist/server/src/api/types/index.d.ts +2 -1
  304. package/dist/server/src/api/websocket/index.js +3 -1
  305. package/dist/server/src/api/websocket/index.js.map +1 -1
  306. package/dist/server/src/api/websocket/nsp/training.d.ts +11 -0
  307. package/dist/server/src/api/websocket/nsp/training.js +29 -0
  308. package/dist/server/src/api/websocket/nsp/training.js.map +1 -0
  309. package/dist/server/src/api/websocket/types.d.ts +1 -1
  310. package/dist/server/src/camera/decoder/detection-coordinator.d.ts +1 -0
  311. package/dist/server/src/camera/decoder/detection-coordinator.js +48 -2
  312. package/dist/server/src/camera/decoder/detection-coordinator.js.map +1 -1
  313. package/dist/server/src/camera/decoder/detection-window.d.ts +5 -0
  314. package/dist/server/src/camera/decoder/detection-window.js +5 -5
  315. package/dist/server/src/camera/decoder/detection-window.js.map +1 -1
  316. package/dist/server/src/camera/decoder/event-manager.d.ts +10 -0
  317. package/dist/server/src/camera/decoder/event-manager.js +50 -1
  318. package/dist/server/src/camera/decoder/event-manager.js.map +1 -1
  319. package/dist/server/src/camera/decoder/training-sink.d.ts +37 -0
  320. package/dist/server/src/camera/decoder/training-sink.js +146 -0
  321. package/dist/server/src/camera/decoder/training-sink.js.map +1 -0
  322. package/dist/server/src/camera/decoder/types.d.ts +4 -0
  323. package/dist/server/src/camera/decoder/types.js +8 -0
  324. package/dist/server/src/camera/decoder/types.js.map +1 -1
  325. package/dist/server/src/manager/coreManager.d.ts +3 -1
  326. package/dist/server/src/manager/coreManager.js +18 -0
  327. package/dist/server/src/manager/coreManager.js.map +1 -1
  328. package/dist/server/src/manager/trainingCandidateManager.d.ts +41 -0
  329. package/dist/server/src/manager/trainingCandidateManager.js +249 -0
  330. package/dist/server/src/manager/trainingCandidateManager.js.map +1 -0
  331. package/dist/server/src/manager/types.d.ts +23 -0
  332. package/dist/server/src/manager/types.js.map +1 -1
  333. package/dist/server/src/remote/api/index.d.ts +2 -0
  334. package/dist/server/src/remote/api/index.js +3 -0
  335. package/dist/server/src/remote/api/index.js.map +1 -1
  336. package/dist/server/src/remote/api/routes/oauth.js +1 -1
  337. package/dist/server/src/remote/api/routes/oauth.js.map +1 -1
  338. package/dist/server/src/remote/api/routes/train.d.ts +24 -0
  339. package/dist/server/src/remote/api/routes/train.js +51 -0
  340. package/dist/server/src/remote/api/routes/train.js.map +1 -0
  341. package/dist/server/src/rpc/index.d.ts +2 -0
  342. package/dist/server/src/rpc/index.js +5 -0
  343. package/dist/server/src/rpc/index.js.map +1 -1
  344. package/dist/server/src/rpc/interfaces/core.d.ts +21 -0
  345. package/dist/server/src/rpc/server.js +2 -0
  346. package/dist/server/src/rpc/server.js.map +1 -1
  347. package/dist/server/src/sensors/registry.d.ts +1 -0
  348. package/dist/server/src/sensors/registry.js +10 -0
  349. package/dist/server/src/sensors/registry.js.map +1 -1
  350. package/package.json +8 -8
  351. package/dist/interface/assets/Automation-DThD-djr.js +0 -3
  352. package/dist/interface/assets/AutomationImport-CHKkZqA4.js +0 -2
  353. package/dist/interface/assets/AutomationStore-Aon4kqZU.js +0 -2
  354. package/dist/interface/assets/AutomationStoreDetail-CfZ45tLW.js +0 -2
  355. package/dist/interface/assets/Automations-BkRuMd-d.js +0 -2
  356. package/dist/interface/assets/Camera-BWdUUW_H.css +0 -1
  357. package/dist/interface/assets/Camera-G6xTnRAk.js +0 -2
  358. package/dist/interface/assets/Camview-BZS4_jv1.css +0 -1
  359. package/dist/interface/assets/Camview-BjCuw7nI.js +0 -1
  360. package/dist/interface/assets/Config-BTXb1LHN.js +0 -2
  361. package/dist/interface/assets/ConfigActionNotification-DtoP3c7I.js +0 -1
  362. package/dist/interface/assets/ConfigTriggerGeofence-DLuNWaN6.js +0 -1
  363. package/dist/interface/assets/Console-hUeddOJc.js +0 -1
  364. package/dist/interface/assets/CuiBottomSheet-BGVpKjqe.js +0 -1
  365. package/dist/interface/assets/CuiBottomSheet-DOW6gNj0.js +0 -1
  366. package/dist/interface/assets/CuiBottomSheet-DsjZEdig.css +0 -1
  367. package/dist/interface/assets/CuiCameraPipCard-BBMkU-eN.js +0 -1
  368. package/dist/interface/assets/CuiCameraShares-C9Th3jEn.js +0 -1
  369. package/dist/interface/assets/CuiCameraTable-Cti7FZma.js +0 -1
  370. package/dist/interface/assets/CuiLightControl-BhBIiPv-.js +0 -1
  371. package/dist/interface/assets/CuiPluginCard-yYGvVtDJ.js +0 -2
  372. package/dist/interface/assets/CuiPluginOAuthButton-C8VRPoMj.js +0 -2
  373. package/dist/interface/assets/CuiSchema-Dy2eRCu2.js +0 -1
  374. package/dist/interface/assets/CuiTopNavbarItem-Btig8IUi.js +0 -1
  375. package/dist/interface/assets/Faces-D5PMl5Bx.js +0 -1
  376. package/dist/interface/assets/FirstSteps-BcjeaLz_.js +0 -1
  377. package/dist/interface/assets/Floorplan-DHl3zibU.js +0 -1
  378. package/dist/interface/assets/Instances-DXksjsQR.js +0 -1
  379. package/dist/interface/assets/Metrics-BWTImHsV.js +0 -9
  380. package/dist/interface/assets/Plugin-D5WuhMPO.js +0 -1
  381. package/dist/interface/assets/PluginDetail-3qrahg0_.js +0 -2
  382. package/dist/interface/assets/PluginSearch-D8zmSpkN.js +0 -2
  383. package/dist/interface/assets/PluginSearch-D_ba5x-O.js +0 -1
  384. package/dist/interface/assets/Plugins-5MzJrkSA.js +0 -1
  385. package/dist/interface/assets/Recordings-BuGuUwYE.js +0 -1
  386. package/dist/interface/assets/Recordings-D4NzYCO9.css +0 -1
  387. package/dist/interface/assets/SensorEdit-DF4sw0EW.js +0 -1
  388. package/dist/interface/assets/Sensors-D6GwAXQ2.js +0 -2
  389. package/dist/interface/assets/Settings-BZf-ziEZ.js +0 -1
  390. package/dist/interface/assets/SettingsAccount--5p79E6E.js +0 -1
  391. package/dist/interface/assets/SettingsAccount-Dlc0Wddo.js +0 -1
  392. package/dist/interface/assets/SettingsAppearance-B59zzxu4.js +0 -1
  393. package/dist/interface/assets/SettingsAppearance-xPKxmDpp.js +0 -1
  394. package/dist/interface/assets/SettingsBackup-CJJ5VBzp.js +0 -1
  395. package/dist/interface/assets/SettingsMqtt-DUUAcYuG.js +0 -1
  396. package/dist/interface/assets/SettingsNotifications-BH63oRsc.js +0 -1
  397. package/dist/interface/assets/SettingsRemote-Dbaxaq5H.js +0 -2
  398. package/dist/interface/assets/SettingsSystem-DzHIleOc.js +0 -2
  399. package/dist/interface/assets/SettingsUsers-D5YuEr7c.js +0 -1
  400. package/dist/interface/assets/Updates-DnAut-3U.js +0 -2
  401. package/dist/interface/assets/Workers-6aoL2zvF.js +0 -2
  402. package/dist/interface/assets/api-BI5TkcMD.js +0 -4
  403. package/dist/interface/assets/api-BTWXbCPQ.css +0 -2
  404. package/dist/interface/assets/cameraSources-C3PFkewy.js +0 -1
  405. package/dist/interface/assets/cloudHandoff-B1HA65AZ.js +0 -1
  406. package/dist/interface/assets/main-C6AqiNZK.js +0 -3
  407. package/dist/interface/assets/main-Qqk3RyYP.css +0 -1
  408. package/dist/interface/assets/mqtt-DGNlVikj.js +0 -1
  409. package/dist/interface/assets/rooms-DL_uUrGc.js +0 -1
  410. package/dist/interface/assets/types-QIK1kdY6.js +0 -1
  411. package/dist/interface/assets/ungrouped-CupkuPIQ.js +0 -1
  412. package/dist/interface/assets/ungrouped-DTYy_Pud.css +0 -1
  413. package/dist/interface/assets/useBackupRestore-jdHT_hab.js +0 -1
  414. package/dist/interface/assets/vendor-core-BUse5adB.js +0 -1
  415. package/dist/interface/ha/CuiPluginOAuthButton-ChNW42ux.js +0 -105
  416. package/dist/interface/ha/SettingsAccount-xJy6kGf6.js +0 -970
  417. package/dist/interface/ha/SettingsNotifications-QCKfSffa.js +0 -529
@@ -2,27 +2,27 @@ import { D as e, G as t, H as n, Jt as r, U as i, Wt as a, Y as o, _t as s, d as
2
2
  import { t as A } from "./tooltip-BIrD_hC8.js";
3
3
  import { t as j } from "./message-C8U_kMBA.js";
4
4
  import { t as M } from "./tag-CXgC9OZ6.js";
5
- import { $n as N, B as ee, Dn as P, Dr as F, Er as te, G as I, Gn as L, Hr as R, In as ne, Kn as re, L as z, Nn as B, Q as ie, Qn as ae, R as oe, Tr as V, W as se, Xn as H, Z as ce, ar as le, dr as ue, er as U, et as W, gi as de, hn as fe, hr as pe, m as me, mr as he, ot as ge, pi as _e, pt as ve, q as ye, qt as be, tr as G, vr as K, wr as xe, yr as Se, z as Ce } from "./api-DDUXI4DG.js";
6
- import { F as we, M as Te, z as Ee } from "./protocol-BB4jdtUC-K1r3LFCq.js";
7
- import { h as De, u as Oe } from "./intercomService-jB2mTgsn.js";
8
- import { n as ke } from "./vue-i18n-Dcb07o5U.js";
9
- import { M as Ae, ct as je, nt as Me, tt as Ne } from "./dist-BQFunPaA.js";
10
- import { t as Pe } from "./button-BlYuI0Q7.js";
5
+ import { $n as N, Ar as ee, B as P, Ci as F, Cr as I, G as te, Hn as L, In as R, J as z, Jr as B, K as ne, Mn as re, Mr as V, Nr as ie, Qt as ae, R as oe, V as H, Xn as se, Yn as ce, _t as U, bi as le, bn as ue, br as W, cr as de, et as fe, gr as pe, h as me, ir as he, it as ge, jr as _e, kr as ve, nr as ye, qn as be, sr as xe, tt as Se, ut as Ce, wr as we, yr as Te, z as Ee } from "./api-DBu4gh4_.js";
6
+ import { F as De, M as Oe, z as ke } from "./protocol-BB4jdtUC-K1r3LFCq.js";
7
+ import { h as Ae, u as je } from "./intercomService-jB2mTgsn.js";
8
+ import { n as Me } from "./vue-i18n-Dcb07o5U.js";
9
+ import { M as Ne, ct as G, nt as K, tt as Pe } from "./dist-BqTZri2H.js";
10
+ import { t as Fe } from "./button-BlYuI0Q7.js";
11
11
  import { t as q } from "./inputtext-DGIESrd0.js";
12
- import { a as Fe, t as J } from "./datepicker-BuvKhBWJ.js";
13
- import { t as Ie } from "./close-Eq3txTBS.js";
14
- import { t as Le } from "./select-DjWkRqsI.js";
15
- import { t as Re } from "./progressbar-CIoPoMSe.js";
12
+ import { a as Ie, t as J } from "./datepicker-BuvKhBWJ.js";
13
+ import { t as Le } from "./close-Eq3txTBS.js";
14
+ import { t as Re } from "./select-DjWkRqsI.js";
15
+ import { t as ze } from "./progressbar-CIoPoMSe.js";
16
16
  import { t as Y } from "./multiselect-BbgV_fPx.js";
17
- import { t as ze } from "./textarea-DvLkfUX7.js";
18
- import { i as Be, n as Ve, t as He } from "./eventLabels-B4C1_4vT.js";
19
- import { t as Ue } from "./ring-resize-VS4MSeBv.js";
20
- import { i as We, n as Ge, r as Ke, t as qe } from "./ungrouped-aASsOUNF.js";
21
- import { t as Je } from "./utils-DYtBrGDz.js";
22
- import { t as Ye } from "./settings-EKkSQLzv.js";
23
- import { n as Xe, t as Ze } from "./round-alt-arrow-left-bold-CWEg-ZLF.js";
17
+ import { t as Be } from "./textarea-DvLkfUX7.js";
18
+ import { i as Ve, n as He, t as Ue } from "./eventLabels-B4C1_4vT.js";
19
+ import { t as We } from "./ring-resize-VS4MSeBv.js";
20
+ import { i as Ge, n as Ke, r as qe, t as Je } from "./ungrouped-CO29-tSV.js";
21
+ import { t as Ye } from "./utils-DYtBrGDz.js";
22
+ import { t as Xe } from "./settings-EKkSQLzv.js";
23
+ import { n as Ze, t as Qe } from "./round-alt-arrow-left-bold-CWEg-ZLF.js";
24
24
  //#region node_modules/@camera.ui/sdk/dist/camera/events.js
25
- var Qe = [
25
+ var $e = [
26
26
  "motion",
27
27
  "audio",
28
28
  "contact",
@@ -50,22 +50,22 @@ var Qe = [
50
50
  width: "1.2em",
51
51
  height: "1.2em"
52
52
  };
53
- function $e(e, t) {
53
+ function et(e, t) {
54
54
  return n(), g("svg", X, [...t[0] ||= [x("path", {
55
55
  fill: "currentColor",
56
56
  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"
57
57
  }, null, -1)]]);
58
58
  }
59
- var et = s({
59
+ var tt = s({
60
60
  name: "mage-filter-fill",
61
- render: $e
62
- }), tt = {
61
+ render: et
62
+ }), nt = {
63
63
  viewBox: "0 0 24 24",
64
64
  width: "1.2em",
65
65
  height: "1.2em"
66
66
  };
67
- function nt(e, t) {
68
- return n(), g("svg", tt, [...t[0] ||= [x("path", {
67
+ function rt(e, t) {
68
+ return n(), g("svg", nt, [...t[0] ||= [x("path", {
69
69
  fill: "none",
70
70
  stroke: "currentColor",
71
71
  "stroke-linecap": "round",
@@ -74,33 +74,33 @@ function nt(e, t) {
74
74
  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"
75
75
  }, null, -1)]]);
76
76
  }
77
- var rt = s({
77
+ var it = s({
78
78
  name: "mage-filter",
79
- render: nt
80
- }), Z = {
79
+ render: rt
80
+ }), at = {
81
81
  viewBox: "0 0 24 24",
82
82
  width: "1.2em",
83
83
  height: "1.2em"
84
84
  };
85
- function it(e, t) {
86
- return n(), g("svg", Z, [...t[0] ||= [x("path", {
85
+ function Z(e, t) {
86
+ return n(), g("svg", at, [...t[0] ||= [x("path", {
87
87
  fill: "currentColor",
88
88
  d: "M6 12.45V9.64c1.47.83 3.61 1.36 6 1.36s4.53-.53 6-1.36v2.39c.17-.03.33-.03.5-.03c.5 0 1 .07 1.5.18V7c0-2.21-3.58-4-8-4S4 4.79 4 7v10c0 2.21 3.59 4 8 4h.5c-.26-.63-.41-1.3-.47-2H12c-3.87 0-6-1.5-6-2v-2.23c1.61.78 3.72 1.23 6 1.23h.5c.35-.82.84-1.54 1.45-2.14c-.63.09-1.28.14-1.95.14c-2.42 0-4.7-.6-6-1.55M12 5c3.87 0 6 1.5 6 2s-2.13 2-6 2s-6-1.5-6-2s2.13-2 6-2m6 13.5l1.77-1.77A2.5 2.5 0 1 0 20 20h1.71A3.99 3.99 0 0 1 18 22.5c-2.21 0-4-1.79-4-4s1.79-4 4-4c1.11 0 2.11.45 2.83 1.17L22 14.5v4z"
89
89
  }, null, -1)]]);
90
90
  }
91
- var at = s({
91
+ var ot = s({
92
92
  name: "mdi-database-refresh-outline",
93
- render: it
94
- }), ot = { class: "flex flex-col gap-4" }, st = { class: "text-sm text-pretty" }, ct = {
93
+ render: Z
94
+ }), st = { class: "flex flex-col gap-4" }, ct = { class: "text-sm text-pretty" }, lt = {
95
95
  key: 0,
96
96
  class: "flex flex-col gap-2"
97
- }, lt = {
97
+ }, ut = {
98
98
  key: 0,
99
99
  class: "flex justify-between text-sm text-muted"
100
- }, ut = { key: 0 }, dt = /* @__PURE__ */ T({
100
+ }, dt = { key: 0 }, ft = /* @__PURE__ */ T({
101
101
  __name: "ClipReindex",
102
102
  setup(t, { expose: i }) {
103
- let a = e("dialogRefProps"), { t: o } = ke(), { status: s, isBusy: c, checking: u, refresh: p, start: m, cancel: _ } = L(), v = E(!1), y = E(!1), S = E(0), C = f(() => s.value?.running === !0), w = f(() => {
103
+ let a = e("dialogRefProps"), { t: o } = Me(), { status: s, isBusy: c, checking: u, refresh: p, start: m, cancel: _ } = he(), v = E(!1), y = E(!1), S = E(0), C = f(() => s.value?.running === !0), w = f(() => {
104
104
  if (y.value) {
105
105
  if (!s.value?.total) return o("views.recordings.reindex.up_to_date");
106
106
  let { done: e, total: t, skipped: n } = s.value;
@@ -131,49 +131,49 @@ var at = s({
131
131
  s.value?.running && (v.value = !0);
132
132
  });
133
133
  }), i({ onConfirm: O }), (e, t) => {
134
- let i = Re;
135
- return n(), g("div", ot, [x("span", st, r(d(w)), 1), d(v) || d(C) ? (n(), g("div", ct, [D(i, {
134
+ let i = ze;
135
+ return n(), g("div", st, [x("span", ct, r(d(w)), 1), d(v) || d(C) ? (n(), g("div", lt, [D(i, {
136
136
  mode: d(u) ? "indeterminate" : "determinate",
137
137
  value: d(T),
138
138
  "show-value": !1,
139
139
  class: "h-2"
140
- }, null, 8, ["mode", "value"]), d(C) && !d(u) ? (n(), g("div", lt, [x("span", null, r(e.$t("views.recordings.reindex.progress", {
140
+ }, null, 8, ["mode", "value"]), d(C) && !d(u) ? (n(), g("div", ut, [x("span", null, r(e.$t("views.recordings.reindex.progress", {
141
141
  done: d(s)?.done ?? 0,
142
142
  total: d(s)?.total ?? 0
143
- })), 1), d(s)?.skipped ? (n(), g("span", ut, r(e.$t("views.recordings.reindex.skipped", { count: d(s).skipped })), 1)) : l("", !0)])) : l("", !0)])) : l("", !0)]);
143
+ })), 1), d(s)?.skipped ? (n(), g("span", dt, r(e.$t("views.recordings.reindex.skipped", { count: d(s).skipped })), 1)) : l("", !0)])) : l("", !0)])) : l("", !0)]);
144
144
  };
145
145
  }
146
- }), ft = {
146
+ }), pt = {
147
147
  viewBox: "0 0 24 24",
148
148
  width: "1.2em",
149
149
  height: "1.2em"
150
150
  };
151
- function pt(e, t) {
152
- return n(), g("svg", ft, [...t[0] ||= [x("path", {
151
+ function mt(e, t) {
152
+ return n(), g("svg", pt, [...t[0] ||= [x("path", {
153
153
  fill: "currentColor",
154
154
  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"
155
155
  }, null, -1)]]);
156
156
  }
157
- var mt = s({
157
+ var ht = s({
158
158
  name: "mdi-file-video-outline",
159
- render: pt
160
- }), ht = { class: "flex flex-col gap-6" }, gt = { class: "flex flex-col field-gap" }, _t = { class: "cui-label" }, Q = { class: "flex flex-col field-gap" }, vt = { class: "cui-label" }, $ = { class: "grid grid-cols-1 xs:grid-cols-2 gap-3" }, yt = { class: "flex flex-col gap-1" }, bt = { class: "text-xs text-muted" }, xt = { class: "flex flex-col gap-1" }, St = { class: "text-xs text-muted" }, Ct = { class: "grid grid-cols-1 xs:grid-cols-2 gap-x-6 gap-y-4" }, wt = { class: "flex flex-col field-gap" }, Tt = { class: "cui-label" }, Et = { class: "flex flex-col field-gap" }, Dt = { class: "cui-label" }, Ot = { class: "flex flex-col field-gap" }, kt = { class: "flex items-center gap-3" }, At = { class: "cui-label !mb-0" }, jt = {
159
+ render: mt
160
+ }), gt = { class: "flex flex-col gap-6" }, _t = { class: "flex flex-col field-gap" }, vt = { class: "cui-label" }, yt = { class: "flex flex-col field-gap" }, Q = { class: "cui-label" }, bt = { class: "grid grid-cols-1 xs:grid-cols-2 gap-3" }, $ = { class: "flex flex-col gap-1" }, xt = { class: "text-xs text-muted" }, St = { class: "flex flex-col gap-1" }, Ct = { class: "text-xs text-muted" }, wt = { class: "grid grid-cols-1 xs:grid-cols-2 gap-x-6 gap-y-4" }, Tt = { class: "flex flex-col field-gap" }, Et = { class: "cui-label" }, Dt = { class: "flex flex-col field-gap" }, Ot = { class: "cui-label" }, kt = { class: "flex flex-col field-gap" }, At = { class: "flex items-center gap-3" }, jt = { class: "cui-label !mb-0" }, Mt = {
161
161
  key: 0,
162
162
  class: "ml-auto flex items-center gap-2.5 text-sm tabular-nums"
163
- }, Mt = { class: "font-semibold" }, Nt = { class: "font-semibold" }, Pt = { class: "border border-color rounded-xl card-background overflow-hidden" }, Ft = { class: "flex flex-col gap-3 max-h-[240px] overflow-y-auto p-2.5" }, It = {
163
+ }, Nt = { class: "font-semibold" }, Pt = { class: "font-semibold" }, Ft = { class: "border border-color rounded-xl card-background overflow-hidden" }, It = { class: "flex flex-col gap-3 max-h-[240px] overflow-y-auto p-2.5" }, Lt = {
164
164
  key: 0,
165
165
  class: "flex items-center justify-center gap-2 text-muted text-sm py-6"
166
- }, Lt = {
166
+ }, Rt = {
167
167
  key: 1,
168
168
  class: "text-center text-muted text-sm py-6"
169
- }, Rt = { class: "text-xs text-muted px-0.5" }, zt = { class: "font-mono text-xs truncate flex-1" }, Bt = { class: "text-xs text-muted tabular-nums shrink-0" }, Vt = { class: "font-mono text-xs text-muted tabular-nums shrink-0 min-w-[58px] text-right" }, Ht = 30, Ut = /* @__PURE__ */ T({
169
+ }, zt = { class: "text-xs text-muted px-0.5" }, Bt = { class: "font-mono text-xs truncate flex-1" }, Vt = { class: "text-xs text-muted tabular-nums shrink-0" }, Ht = { class: "font-mono text-xs text-muted tabular-nums shrink-0 min-w-[58px] text-right" }, Ut = 30, Wt = /* @__PURE__ */ T({
170
170
  __name: "ExportRecordings",
171
171
  props: {
172
172
  cameras: {},
173
173
  preselect: {}
174
174
  },
175
175
  setup(i, { expose: a }) {
176
- let o = i, { t: s } = ke(), m = de(), h = e("dialogRefProps"), { plugin: _ } = Ae("@camera.ui/camera-ui-nvr"), y = E([]), S = E(!1), w = E(o.preselect?.length ? [...o.preselect] : []), T = E("best"), O = E(0), k = E(new Date((/* @__PURE__ */ new Date()).setHours(0, 0, 0, 0))), A = E(/* @__PURE__ */ new Date()), N = f(() => [{
176
+ let o = i, { t: s } = Me(), m = F(), h = e("dialogRefProps"), { plugin: _ } = Ne("@camera.ui/camera-ui-nvr"), y = E([]), S = E(!1), w = E(o.preselect?.length ? [...o.preselect] : []), T = E("best"), O = E(0), k = E(new Date((/* @__PURE__ */ new Date()).setHours(0, 0, 0, 0))), A = E(/* @__PURE__ */ new Date()), N = f(() => [{
177
177
  label: s("views.recordings.export.quality_best"),
178
178
  value: "best"
179
179
  }, {
@@ -194,8 +194,8 @@ var mt = s({
194
194
  ].map((e) => ({
195
195
  label: e === 0 ? s("views.recordings.export.timelapse_off") : e < 60 ? `${e} s` : `${e / 60} min`,
196
196
  value: e
197
- }))), P = f(() => O.value > 0), F = f(() => P.value ? "~" : ""), te = f(() => new Map(o.cameras.map((e) => [e.id, e.name]))), I = f(() => k.value instanceof Date && A.value instanceof Date && k.value < A.value), L = f(() => {
198
- if (!I.value) return [];
197
+ }))), P = f(() => O.value > 0), I = f(() => P.value ? "~" : ""), te = f(() => new Map(o.cameras.map((e) => [e.id, e.name]))), L = f(() => k.value instanceof Date && A.value instanceof Date && k.value < A.value), R = f(() => {
198
+ if (!L.value) return [];
199
199
  let e = [], t = k.value.getTime(), n = A.value.getTime(), r = new Date(k.value);
200
200
  r.setHours(0, 0, 0, 0);
201
201
  let i = new Date(A.value);
@@ -210,18 +210,18 @@ var mt = s({
210
210
  }), r.setDate(r.getDate() + 1);
211
211
  }
212
212
  return e;
213
- }), R = f(() => y.value.map((e) => {
213
+ }), z = f(() => y.value.map((e) => {
214
214
  let t = te.value.get(e.cameraId) ?? e.cameraId, n = /* @__PURE__ */ new Date(e.startUs / 1e3), r = /* @__PURE__ */ new Date(e.endUs / 1e3), i = n.getHours() === 0 && n.getMinutes() === 0 && e.endUs - e.startUs === 864e8, a = r.getHours() === 0 && r.getMinutes() === 0 ? "24:00" : ae(r);
215
215
  return {
216
216
  cameraId: e.cameraId,
217
217
  cameraName: t,
218
218
  name: `${oe(t)}_${e.day}${P.value ? "_timelapse" : ""}.mp4`,
219
219
  span: i ? s("views.recordings.export.whole_day") : `${ae(n)}–${a}`,
220
- bytes: P.value ? e.bytes / Ht : e.bytes
220
+ bytes: P.value ? e.bytes / Ut : e.bytes
221
221
  };
222
- })), ne = f(() => {
222
+ })), B = f(() => {
223
223
  let e = /* @__PURE__ */ new Map();
224
- for (let t of R.value) {
224
+ for (let t of z.value) {
225
225
  let n = e.get(t.cameraId);
226
226
  n || (n = {
227
227
  cameraId: t.cameraId,
@@ -231,20 +231,20 @@ var mt = s({
231
231
  }, e.set(t.cameraId, n)), n.files.push(t), n.bytes += t.bytes;
232
232
  }
233
233
  return [...e.values()];
234
- }), re = f(() => R.value.reduce((e, t) => e + t.bytes, 0)), z = f(() => w.value.length === 0 ? s("views.recordings.export.no_cameras") : I.value ? s("views.recordings.export.no_footage") : s("views.recordings.export.no_range"));
235
- function B(e) {
234
+ }), ne = f(() => z.value.reduce((e, t) => e + t.bytes, 0)), re = f(() => w.value.length === 0 ? s("views.recordings.export.no_cameras") : L.value ? s("views.recordings.export.no_footage") : s("views.recordings.export.no_range"));
235
+ function V(e) {
236
236
  return String(e).padStart(2, "0");
237
237
  }
238
238
  function ie(e) {
239
- return `${e.getFullYear()}-${B(e.getMonth() + 1)}-${B(e.getDate())}`;
239
+ return `${e.getFullYear()}-${V(e.getMonth() + 1)}-${V(e.getDate())}`;
240
240
  }
241
241
  function ae(e) {
242
- return `${B(e.getHours())}:${B(e.getMinutes())}`;
242
+ return `${V(e.getHours())}:${V(e.getMinutes())}`;
243
243
  }
244
244
  function oe(e) {
245
245
  return e.replace(/[^a-zA-Z0-9-_]/g, "_");
246
246
  }
247
- function V(e) {
247
+ function H(e) {
248
248
  if (e <= 0) return "0 MB";
249
249
  let t = e / 1e6;
250
250
  if (t < 1e3) return `${t < 10 ? t.toFixed(1) : Math.round(t)} MB`;
@@ -253,7 +253,7 @@ var mt = s({
253
253
  }
254
254
  async function se() {
255
255
  let e = _.value;
256
- if (!e?.nvrExportEstimate || w.value.length === 0 || L.value.length === 0) {
256
+ if (!e?.nvrExportEstimate || w.value.length === 0 || R.value.length === 0) {
257
257
  y.value = [], S.value = !1;
258
258
  return;
259
259
  }
@@ -261,7 +261,7 @@ var mt = s({
261
261
  try {
262
262
  let t = await e.nvrExportEstimate({
263
263
  cameras: w.value,
264
- slices: L.value,
264
+ slices: R.value,
265
265
  quality: T.value
266
266
  });
267
267
  y.value = t.files ?? [];
@@ -271,8 +271,8 @@ var mt = s({
271
271
  S.value = !1;
272
272
  }
273
273
  }
274
- async function H() {
275
- if (!I.value || w.value.length === 0 || L.value.length === 0) return null;
274
+ async function ce() {
275
+ if (!L.value || w.value.length === 0 || R.value.length === 0) return null;
276
276
  let e = _.value;
277
277
  if (!e?.nvrExportBatch) return m.add({
278
278
  severity: "error",
@@ -281,29 +281,29 @@ var mt = s({
281
281
  }), null;
282
282
  let t = await e.nvrExportBatch({
283
283
  cameras: w.value,
284
- slices: L.value,
284
+ slices: R.value,
285
285
  quality: T.value,
286
286
  timelapseIntervalSec: P.value ? O.value : 0
287
287
  });
288
- await pe({
288
+ await W({
289
289
  url: t.url,
290
290
  filename: t.filename
291
291
  });
292
292
  }
293
- return Ee([
293
+ return ke([
294
294
  w,
295
- L,
295
+ R,
296
296
  T
297
297
  ], se, {
298
298
  debounce: 350,
299
299
  immediate: !0,
300
300
  deep: !0
301
301
  }), b(() => {
302
- h.disabled && (h.disabled.value = !I.value || w.value.length === 0 || !S.value && R.value.length === 0);
303
- }), a({ onConfirm: H }), (e, a) => {
304
- let o = Y, s = J, f = j, m = G, h = Le, _ = M, y = Se, b = mt;
305
- return n(), g("div", ht, [
306
- x("div", gt, [x("label", _t, r(e.$t("views.recordings.export.cameras")), 1), D(o, {
302
+ h.disabled && (h.disabled.value = !L.value || w.value.length === 0 || !S.value && z.value.length === 0);
303
+ }), a({ onConfirm: ce }), (e, a) => {
304
+ let o = Y, s = J, f = j, m = de, h = Re, _ = M, y = we, b = ht;
305
+ return n(), g("div", gt, [
306
+ x("div", _t, [x("label", vt, r(e.$t("views.recordings.export.cameras")), 1), D(o, {
307
307
  modelValue: d(w),
308
308
  "onUpdate:modelValue": a[0] ||= (e) => u(w) ? w.value = e : null,
309
309
  options: i.cameras,
@@ -318,16 +318,16 @@ var mt = s({
318
318
  "options",
319
319
  "placeholder"
320
320
  ])]),
321
- x("div", Q, [
322
- x("label", vt, r(e.$t("views.recordings.export.range")), 1),
323
- x("div", $, [x("div", yt, [x("span", bt, r(e.$t("views.recordings.export.from")), 1), D(s, {
321
+ x("div", yt, [
322
+ x("label", Q, r(e.$t("views.recordings.export.range")), 1),
323
+ x("div", bt, [x("div", $, [x("span", xt, r(e.$t("views.recordings.export.from")), 1), D(s, {
324
324
  modelValue: d(k),
325
325
  "onUpdate:modelValue": a[1] ||= (e) => u(k) ? k.value = e : null,
326
326
  "show-time": "",
327
327
  "hour-format": "24",
328
328
  fluid: "",
329
329
  "max-date": d(A)
330
- }, null, 8, ["modelValue", "max-date"])]), x("div", xt, [x("span", St, r(e.$t("views.recordings.export.to")), 1), D(s, {
330
+ }, null, 8, ["modelValue", "max-date"])]), x("div", St, [x("span", Ct, r(e.$t("views.recordings.export.to")), 1), D(s, {
331
331
  modelValue: d(A),
332
332
  "onUpdate:modelValue": a[2] ||= (e) => u(A) ? A.value = e : null,
333
333
  "show-time": "",
@@ -335,7 +335,7 @@ var mt = s({
335
335
  fluid: "",
336
336
  "min-date": d(k)
337
337
  }, null, 8, ["modelValue", "min-date"])])]),
338
- d(I) ? (n(), c(f, {
338
+ d(L) ? (n(), c(f, {
339
339
  key: 1,
340
340
  severity: "secondary",
341
341
  variant: "simple",
@@ -355,7 +355,7 @@ var mt = s({
355
355
  _: 1
356
356
  }))
357
357
  ]),
358
- x("div", Ct, [x("div", wt, [x("label", Tt, r(e.$t("views.recordings.export.quality")), 1), D(m, {
358
+ x("div", wt, [x("div", Tt, [x("label", Et, r(e.$t("views.recordings.export.quality")), 1), D(m, {
359
359
  modelValue: d(T),
360
360
  "onUpdate:modelValue": a[3] ||= (e) => u(T) ? T.value = e : null,
361
361
  options: d(N),
@@ -366,7 +366,7 @@ var mt = s({
366
366
  root: { class: "flex w-full" },
367
367
  pcToggleButton: { root: { class: "flex-1" } }
368
368
  }
369
- }, null, 8, ["modelValue", "options"])]), x("div", Et, [x("label", Dt, r(e.$t("views.recordings.export.timelapse")), 1), D(h, {
369
+ }, null, 8, ["modelValue", "options"])]), x("div", Dt, [x("label", Ot, r(e.$t("views.recordings.export.timelapse")), 1), D(h, {
370
370
  modelValue: d(O),
371
371
  "onUpdate:modelValue": a[4] ||= (e) => u(O) ? O.value = e : null,
372
372
  options: d(ee),
@@ -374,43 +374,43 @@ var mt = s({
374
374
  "option-value": "value",
375
375
  class: "w-full"
376
376
  }, null, 8, ["modelValue", "options"])])]),
377
- x("div", Ot, [x("div", kt, [x("label", At, r(e.$t("views.recordings.export.result")), 1), d(R).length ? (n(), g("div", jt, [
378
- x("span", Mt, r(d(R).length) + " " + r(d(R).length === 1 ? e.$t("views.recordings.export.file") : e.$t("views.recordings.export.files")), 1),
377
+ x("div", kt, [x("div", At, [x("label", jt, r(e.$t("views.recordings.export.result")), 1), d(z).length ? (n(), g("div", Mt, [
378
+ x("span", Nt, r(d(z).length) + " " + r(d(z).length === 1 ? e.$t("views.recordings.export.file") : e.$t("views.recordings.export.files")), 1),
379
379
  a[5] ||= x("span", { class: "text-muted" }, "·", -1),
380
- x("span", Nt, r(d(F)) + r(V(d(re))), 1),
380
+ x("span", Pt, r(d(I)) + r(H(d(ne))), 1),
381
381
  D(_, {
382
- value: d(R).length === 1 ? "MP4" : "ZIP",
382
+ value: d(z).length === 1 ? "MP4" : "ZIP",
383
383
  severity: "info"
384
384
  }, null, 8, ["value"])
385
- ])) : l("", !0)]), x("div", Pt, [x("div", Ft, [d(S) && !d(R).length ? (n(), g("div", It, [D(y, {
385
+ ])) : l("", !0)]), x("div", Ft, [x("div", It, [d(S) && !d(z).length ? (n(), g("div", Lt, [D(y, {
386
386
  style: {
387
387
  width: "1rem",
388
388
  height: "1rem"
389
389
  },
390
390
  "stroke-width": "4",
391
391
  class: "m-0"
392
- }), x("span", null, r(e.$t("views.recordings.export.estimating")), 1)])) : d(R).length ? (n(!0), g(v, { key: 2 }, t(d(ne), (e) => (n(), g("div", {
392
+ }), x("span", null, r(e.$t("views.recordings.export.estimating")), 1)])) : d(z).length ? (n(!0), g(v, { key: 2 }, t(d(B), (e) => (n(), g("div", {
393
393
  key: e.cameraId,
394
394
  class: "flex flex-col gap-1"
395
- }, [x("span", Rt, r(e.cameraName) + " · " + r(e.files.length) + " · " + r(d(F)) + r(V(e.bytes)), 1), (n(!0), g(v, null, t(e.files, (e) => (n(), g("div", {
395
+ }, [x("span", zt, r(e.cameraName) + " · " + r(e.files.length) + " · " + r(d(I)) + r(H(e.bytes)), 1), (n(!0), g(v, null, t(e.files, (e) => (n(), g("div", {
396
396
  key: e.name,
397
397
  class: "flex items-center gap-3 card-inner-background border border-color rounded-lg px-3 py-2"
398
398
  }, [
399
399
  D(b, { class: "w-4 h-4 text-muted shrink-0" }),
400
- x("span", zt, r(e.name), 1),
401
- x("span", Bt, r(e.span), 1),
402
- x("span", Vt, r(d(F)) + r(V(e.bytes)), 1)
403
- ]))), 128))]))), 128)) : (n(), g("div", Lt, r(d(z)), 1))])])])
400
+ x("span", Bt, r(e.name), 1),
401
+ x("span", Vt, r(e.span), 1),
402
+ x("span", Ht, r(d(I)) + r(H(e.bytes)), 1)
403
+ ]))), 128))]))), 128)) : (n(), g("div", Rt, r(d(re)), 1))])])])
404
404
  ]);
405
405
  };
406
406
  }
407
- }), Wt = {
407
+ }), Gt = {
408
408
  viewBox: "0 0 24 24",
409
409
  width: "1.2em",
410
410
  height: "1.2em"
411
411
  };
412
- function Gt(e, t) {
413
- return n(), g("svg", Wt, [...t[0] ||= [x("path", {
412
+ function Kt(e, t) {
413
+ return n(), g("svg", Gt, [...t[0] ||= [x("path", {
414
414
  fill: "none",
415
415
  stroke: "currentColor",
416
416
  "stroke-linecap": "round",
@@ -419,16 +419,16 @@ function Gt(e, t) {
419
419
  d: "m6 9l6 6l6-6"
420
420
  }, null, -1)]]);
421
421
  }
422
- var Kt = s({
422
+ var qt = s({
423
423
  name: "tabler-chevron-down",
424
- render: Gt
425
- }), qt = {
424
+ render: Kt
425
+ }), Jt = {
426
426
  viewBox: "0 0 24 24",
427
427
  width: "1.2em",
428
428
  height: "1.2em"
429
429
  };
430
- function Jt(e, t) {
431
- return n(), g("svg", qt, [...t[0] ||= [x("path", {
430
+ function Yt(e, t) {
431
+ return n(), g("svg", Jt, [...t[0] ||= [x("path", {
432
432
  fill: "none",
433
433
  stroke: "currentColor",
434
434
  "stroke-linecap": "round",
@@ -437,40 +437,40 @@ function Jt(e, t) {
437
437
  d: "m6 15l6-6l6 6"
438
438
  }, null, -1)]]);
439
439
  }
440
- var Yt = s({
440
+ var Xt = s({
441
441
  name: "tabler-chevron-up",
442
- render: Jt
443
- }), Xt = { class: "flex flex-col gap-2" }, Zt = { class: "sidebar-section-title" }, Qt = {
442
+ render: Yt
443
+ }), Zt = { class: "flex flex-col gap-2" }, Qt = { class: "sidebar-section-title" }, $t = {
444
444
  key: 0,
445
445
  class: "text-xs text-muted"
446
- }, $t = { class: "flex flex-col gap-2" }, en = { class: "sidebar-section-title" }, tn = { class: "p-input-icon-left w-full" }, nn = { class: "text-xs text-muted" }, rn = { class: "flex flex-col gap-2" }, an = { class: "sidebar-section-title flex items-center gap-1.5" }, on = {
446
+ }, en = { class: "flex flex-col gap-2" }, tn = { class: "sidebar-section-title" }, nn = { class: "p-input-icon-left w-full" }, rn = { class: "text-xs text-muted" }, an = { class: "flex flex-col gap-2" }, on = { class: "sidebar-section-title flex items-center gap-1.5" }, sn = {
447
447
  key: 0,
448
448
  class: "inline-flex items-center gap-1 text-xs text-muted"
449
- }, sn = {
449
+ }, cn = {
450
450
  key: 1,
451
451
  class: "flex flex-col gap-1.5 mt-1"
452
- }, cn = { class: "text-xs text-muted" }, ln = { class: "flex items-center gap-3" }, un = { class: "text-xs font-mono w-8 text-right shrink-0" }, dn = {
452
+ }, ln = { class: "text-xs text-muted" }, un = { class: "flex items-center gap-3" }, dn = { class: "text-xs font-mono w-8 text-right shrink-0" }, fn = {
453
453
  key: 1,
454
454
  class: "flex flex-col gap-2"
455
- }, fn = { class: "sidebar-section-title" }, pn = { class: "flex flex-col gap-2" }, mn = { class: "sidebar-section-title" }, hn = { class: "flex flex-col gap-2" }, gn = { class: "sidebar-section-title" }, _n = { class: "relative rounded-md overflow-hidden" }, vn = {
455
+ }, pn = { class: "sidebar-section-title" }, mn = { class: "flex flex-col gap-2" }, hn = { class: "sidebar-section-title" }, gn = { class: "flex flex-col gap-2" }, _n = { class: "sidebar-section-title" }, vn = { class: "relative rounded-md overflow-hidden" }, yn = {
456
456
  key: 3,
457
457
  class: "sidebar-divider"
458
- }, yn = {
458
+ }, bn = {
459
459
  key: 4,
460
460
  class: "flex flex-col gap-2"
461
- }, bn = { class: "sidebar-section-title" }, xn = { class: "flex items-center gap-3" }, Sn = { class: "text-xs font-mono w-8 text-right shrink-0" }, Cn = { class: "flex flex-col gap-2" }, wn = { class: "sidebar-section-title" }, Tn = { class: "flex flex-wrap gap-1" }, En = { class: "flex flex-col gap-2" }, Dn = {
461
+ }, xn = { class: "sidebar-section-title" }, Sn = { class: "flex items-center gap-3" }, Cn = { class: "text-xs font-mono w-8 text-right shrink-0" }, wn = { class: "flex flex-col gap-2" }, Tn = { class: "sidebar-section-title" }, En = { class: "flex flex-wrap gap-1" }, Dn = { class: "flex flex-col gap-2" }, On = {
462
462
  key: 0,
463
463
  class: "flex flex-col gap-2"
464
- }, On = { class: "flex items-center gap-2 cursor-pointer text-sm" }, kn = {
464
+ }, kn = { class: "flex items-center gap-2 cursor-pointer text-sm" }, An = {
465
465
  key: 0,
466
466
  class: "flex flex-col gap-2 ml-6"
467
- }, An = { class: "filter-logic-divider" }, jn = { class: "flex flex-col gap-2" }, Mn = {
467
+ }, jn = { class: "filter-logic-divider" }, Mn = { class: "flex flex-col gap-2" }, Nn = {
468
468
  key: 0,
469
469
  class: "flex flex-col gap-2"
470
- }, Nn = { class: "filter-logic-divider" }, Pn = { class: "flex flex-col gap-2" }, Fn = {
470
+ }, Pn = { class: "filter-logic-divider" }, Fn = { class: "flex flex-col gap-2" }, In = {
471
471
  key: 0,
472
472
  class: "flex flex-col gap-2"
473
- }, In = { class: "flex items-center gap-2 cursor-pointer text-sm" }, Ln = 288, Rn = /*#__PURE__*/ K(/* @__PURE__ */ T({
473
+ }, Ln = { class: "flex items-center gap-2 cursor-pointer text-sm" }, Rn = 288, zn = /*#__PURE__*/ I(/* @__PURE__ */ T({
474
474
  __name: "RecordingsFilterSidebar",
475
475
  props: {
476
476
  filters: {},
@@ -488,25 +488,25 @@ var Yt = s({
488
488
  "close"
489
489
  ],
490
490
  setup(e, { expose: i, emit: a }) {
491
- let s = /* @__PURE__ */ new Set(["motion", "audio"]), p = e, m = a, { t: b } = ke(), { xlBreakpoint: S } = te(), { topbarOffset: w, bottombarHeight: T } = F(), { icons: k, generic: A } = ve(), j = k, M = Yt, N = Kt, ee = y("sidebarRef"), P = E(p.filters.semanticQuery ?? ""), I = O({
491
+ let s = /* @__PURE__ */ new Set(["motion", "audio"]), p = e, m = a, { t: b } = Me(), { xlBreakpoint: S } = V(), { topbarOffset: w, bottombarHeight: T } = ie(), { icons: k, generic: A } = U(), j = k, M = Xt, N = qt, ee = y("sidebarRef"), P = E(p.filters.semanticQuery ?? ""), F = O({
492
492
  eventTypes: !0,
493
493
  attributes: !0,
494
494
  sensorEvents: !0
495
- }), L = f(() => p.isOpen ? Ln : 0), R = f(() => {
495
+ }), I = f(() => p.isOpen ? Rn : 0), te = f(() => {
496
496
  let e = [...new Set(p.cameras.map((e) => e.room).filter((e) => !!e))];
497
497
  return e.sort((e, t) => e.localeCompare(t)), e.map((e) => ({
498
498
  id: e,
499
499
  name: e === "Default" ? b("components.form.label.room_default") : e
500
500
  }));
501
- }), ne = f(() => {
501
+ }), L = f(() => {
502
502
  let e = p.filters.rooms;
503
503
  return (e.length > 0 ? p.cameras.filter((t) => e.includes(t.room ?? "")) : p.cameras).map((e) => ({
504
504
  id: e.id,
505
505
  name: e.name
506
506
  }));
507
- }), re = f(() => {
507
+ }), z = f(() => {
508
508
  if (p.filters.cameraIds.length === 1) return p.cameras.find((e) => e.id === p.filters.cameraIds[0])?.name;
509
- }), z = f(() => p.filters.contentKind === "episodes"), B = f(() => [
509
+ }), B = f(() => p.filters.contentKind === "episodes"), ne = f(() => [
510
510
  {
511
511
  label: b("views.recordings.content_kind_all"),
512
512
  value: "all"
@@ -519,7 +519,7 @@ var Yt = s({
519
519
  label: b("views.recordings.content_kind_episodes"),
520
520
  value: "episodes"
521
521
  }
522
- ]), ie = f(() => [{
522
+ ]), re = f(() => [{
523
523
  label: b("views.recordings.filter_and"),
524
524
  value: "and"
525
525
  }, {
@@ -542,24 +542,24 @@ var Yt = s({
542
542
  label: b("views.recordings.time_1m"),
543
543
  value: "1m"
544
544
  }
545
- ]), oe = f(() => Me.filter((e) => !s.has(e)).map((e) => ({
545
+ ]), oe = f(() => K.filter((e) => !s.has(e)).map((e) => ({
546
546
  label: b(`views.recordings.type_${e}`),
547
547
  value: e,
548
548
  icon: k[e] ?? A
549
- }))), V = f(() => ({
549
+ }))), H = f(() => ({
550
550
  label: b("views.recordings.type_other"),
551
- value: H,
551
+ value: be,
552
552
  icon: k.other ?? A
553
- })), se = f(() => Qe.map((e) => ({
554
- label: b(Be(e)),
553
+ })), se = f(() => $e.map((e) => ({
554
+ label: b(Ve(e)),
555
555
  value: e,
556
556
  icon: j[e] ?? A
557
- }))), ce = f(() => je.map((e) => ({
558
- label: b(Ve(e)),
557
+ }))), ce = f(() => G.map((e) => ({
558
+ label: b(He(e)),
559
559
  value: e,
560
560
  icon: k[e] ?? A
561
- }))), ue = f(() => Ne.map((e) => ({
562
- label: b(He(e)),
561
+ }))), le = f(() => Pe.map((e) => ({
562
+ label: b(Ue(e)),
563
563
  value: e,
564
564
  icon: k[e] ?? A
565
565
  })));
@@ -569,7 +569,7 @@ var Yt = s({
569
569
  [e]: t
570
570
  });
571
571
  }
572
- let de = we((e) => {
572
+ let fe = De((e) => {
573
573
  W("search", e);
574
574
  }, 300);
575
575
  function pe(e) {
@@ -584,73 +584,73 @@ var Yt = s({
584
584
  let e = P.value.trim();
585
585
  W("semanticQuery", e), m("semantic-search", e);
586
586
  }
587
- function ge(e) {
587
+ function he(e) {
588
588
  let t = [...p.filters.eventTypes], n = t.indexOf(e);
589
589
  n >= 0 ? t.splice(n, 1) : t.push(e), W("eventTypes", t);
590
590
  }
591
- function _e(e) {
591
+ function ge(e) {
592
592
  let t = [...p.filters.audioLabels], n = t.indexOf(e);
593
593
  n >= 0 ? t.splice(n, 1) : t.push(e), W("audioLabels", t);
594
594
  }
595
- function ye(e) {
595
+ function _e(e) {
596
596
  let t = [...p.filters.sensorEvents], n = t.indexOf(e);
597
597
  n >= 0 ? t.splice(n, 1) : t.push(e), W("sensorEvents", t);
598
598
  }
599
- function be(e) {
599
+ function ve(e) {
600
600
  let t = [...p.filters.hasAttributes], n = t.indexOf(e);
601
601
  n >= 0 ? t.splice(n, 1) : t.push(e), W("hasAttributes", t);
602
602
  }
603
- function K(e) {
604
- I[e] = !I[e];
603
+ function ye(e) {
604
+ F[e] = !F[e];
605
605
  }
606
606
  return h(P, (e) => {
607
607
  !e?.trim() && p.filters.semanticQuery && W("semanticQuery", "");
608
- }), Oe(ee, (e) => {
608
+ }), je(ee, (e) => {
609
609
  let t = e.target;
610
610
  t.closest("#recordings-sidebar-toggle") || t.closest("[data-pc-section=\"overlay\"], [data-pc-section=\"panel\"], .p-connected-overlay") || p.isOpen && (p.isOverlay || !S.value) && m("close");
611
- }), i({ sidebarWidth: L }), (i, a) => {
612
- let s = G, f = q, p = le, m = ze, h = Pe, y = U, b = Y, S = he, E = fe, O = Fe;
611
+ }), i({ sidebarWidth: I }), (i, a) => {
612
+ let s = de, f = q, p = R, m = Be, h = Fe, y = xe, b = Y, S = Te, E = ue, O = Ie;
613
613
  return n(), g("nav", {
614
614
  ref_key: "sidebarRef",
615
615
  ref: ee,
616
616
  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",
617
617
  style: _({
618
- width: `${d(L)}px`,
618
+ width: `${d(I)}px`,
619
619
  borderRightWidth: e.isOpen ? "1px" : "0px",
620
- paddingBottom: `calc(env(safe-area-inset-top, 0px) + env(safe-area-inset-bottom, 0px) + ${d(T)}px + ${d(w)}px)`
620
+ paddingBottom: `calc(var(--safe-area-inset-top) + var(--safe-area-inset-bottom) + ${d(T)}px + ${d(w)}px)`
621
621
  })
622
622
  }, [x("div", {
623
623
  class: "flex flex-col gap-4 p-4",
624
- style: _({ width: `${Ln}px` })
624
+ style: _({ width: `${Rn}px` })
625
625
  }, [
626
- x("div", Xt, [
627
- x("label", Zt, r(i.$t("views.recordings.content_kind")), 1),
626
+ x("div", Zt, [
627
+ x("label", Qt, r(i.$t("views.recordings.content_kind")), 1),
628
628
  D(s, {
629
629
  "model-value": e.filters.contentKind,
630
- options: d(B),
630
+ options: d(ne),
631
631
  "option-label": "label",
632
632
  "option-value": "value",
633
633
  "allow-empty": !1,
634
634
  class: "content-kind-toggle",
635
635
  "onUpdate:modelValue": a[0] ||= (e) => W("contentKind", e)
636
636
  }, null, 8, ["model-value", "options"]),
637
- d(z) ? (n(), g("span", Qt, r(i.$t("views.recordings.content_kind_episodes_hint")), 1)) : l("", !0)
637
+ d(B) ? (n(), g("span", $t, r(i.$t("views.recordings.content_kind_episodes_hint")), 1)) : l("", !0)
638
638
  ]),
639
639
  a[23] ||= x("div", { class: "sidebar-divider" }, null, -1),
640
- d(z) ? l("", !0) : (n(), g(v, { key: 0 }, [
641
- x("div", $t, [
642
- x("label", en, r(i.$t("views.recordings.search")), 1),
643
- x("span", tn, [D(f, {
640
+ d(B) ? l("", !0) : (n(), g(v, { key: 0 }, [
641
+ x("div", en, [
642
+ x("label", tn, r(i.$t("views.recordings.search")), 1),
643
+ x("span", nn, [D(f, {
644
644
  "model-value": e.filters.search,
645
645
  placeholder: i.$t("views.recordings.search_placeholder"),
646
646
  class: "w-full text-sm",
647
- "onUpdate:modelValue": a[1] ||= (e) => d(de)(e)
647
+ "onUpdate:modelValue": a[1] ||= (e) => d(fe)(e)
648
648
  }, null, 8, ["model-value", "placeholder"])]),
649
- x("span", nn, r(i.$t("views.recordings.result_count", { count: e.resultCount })), 1)
649
+ x("span", rn, r(i.$t("views.recordings.result_count", { count: e.resultCount })), 1)
650
650
  ]),
651
651
  a[15] ||= x("div", { class: "sidebar-divider" }, null, -1),
652
- x("div", rn, [
653
- x("label", an, [D(p, { class: "w-3.5 h-3.5" }), C(" " + r(i.$t("views.recordings.semantic_search")), 1)]),
652
+ x("div", an, [
653
+ x("label", on, [D(p, { class: "w-3.5 h-3.5" }), C(" " + r(i.$t("views.recordings.semantic_search")), 1)]),
654
654
  D(m, {
655
655
  modelValue: d(P),
656
656
  "onUpdate:modelValue": a[2] ||= (e) => u(P) ? P.value = e : null,
@@ -677,21 +677,21 @@ var Yt = s({
677
677
  "loading",
678
678
  "disabled"
679
679
  ]),
680
- e.semanticCount == null ? l("", !0) : (n(), g("span", on, [D(p, { class: "w-3 h-3" }), C(" " + r(i.$t("views.recordings.semantic_results", { count: e.semanticCount })), 1)])),
681
- e.filters.semanticQuery ? (n(), g("div", sn, [x("label", cn, r(i.$t("views.recordings.min_match_score")), 1), x("div", ln, [D(y, {
680
+ e.semanticCount == null ? l("", !0) : (n(), g("span", sn, [D(p, { class: "w-3 h-3" }), C(" " + r(i.$t("views.recordings.semantic_results", { count: e.semanticCount })), 1)])),
681
+ e.filters.semanticQuery ? (n(), g("div", cn, [x("label", ln, r(i.$t("views.recordings.min_match_score")), 1), x("div", un, [D(y, {
682
682
  "model-value": e.filters.minSemanticScore,
683
683
  min: 0,
684
684
  max: 1,
685
685
  step: .05,
686
686
  class: "flex-1",
687
687
  "onUpdate:modelValue": a[3] ||= (e) => W("minSemanticScore", e)
688
- }, null, 8, ["model-value"]), x("span", un, r(Math.round(e.filters.minSemanticScore * 100)) + "%", 1)])])) : l("", !0)
688
+ }, null, 8, ["model-value"]), x("span", dn, r(Math.round(e.filters.minSemanticScore * 100)) + "%", 1)])])) : l("", !0)
689
689
  ]),
690
690
  a[16] ||= x("div", { class: "sidebar-divider" }, null, -1)
691
691
  ], 64)),
692
- d(R).length > 1 ? (n(), g("div", dn, [x("label", fn, r(i.$t("views.recordings.rooms")), 1), D(b, {
692
+ d(te).length > 1 ? (n(), g("div", fn, [x("label", pn, r(i.$t("views.recordings.rooms")), 1), D(b, {
693
693
  "model-value": e.filters.rooms,
694
- options: d(R),
694
+ options: d(te),
695
695
  "option-label": "name",
696
696
  "option-value": "id",
697
697
  placeholder: i.$t("views.recordings.all_rooms"),
@@ -705,9 +705,9 @@ var Yt = s({
705
705
  "options",
706
706
  "placeholder"
707
707
  ])])) : l("", !0),
708
- x("div", pn, [x("label", mn, r(i.$t("views.recordings.cameras")), 1), D(b, {
708
+ x("div", mn, [x("label", hn, r(i.$t("views.recordings.cameras")), 1), D(b, {
709
709
  "model-value": e.filters.cameraIds,
710
- options: d(ne),
710
+ options: d(L),
711
711
  "option-label": "name",
712
712
  "option-value": "id",
713
713
  placeholder: i.$t("views.recordings.all_cameras"),
@@ -721,10 +721,10 @@ var Yt = s({
721
721
  "options",
722
722
  "placeholder"
723
723
  ])]),
724
- d(re) && !d(z) ? (n(), g(v, { key: 2 }, [a[17] ||= x("div", { class: "sidebar-divider" }, null, -1), x("div", hn, [
725
- x("label", gn, r(i.$t("views.recordings.grid_search")), 1),
726
- x("div", _n, [D(S, {
727
- camera: d(re),
724
+ d(z) && !d(B) ? (n(), g(v, { key: 2 }, [a[17] ||= x("div", { class: "sidebar-divider" }, null, -1), x("div", gn, [
725
+ x("label", _n, r(i.$t("views.recordings.grid_search")), 1),
726
+ x("div", vn, [D(S, {
727
+ camera: d(z),
728
728
  "object-fit": "cover"
729
729
  }, null, 8, ["camera"]), D(E, {
730
730
  "model-value": e.filters.gridRegions,
@@ -740,17 +740,17 @@ var Yt = s({
740
740
  onClick: a[7] ||= (e) => W("gridRegions", [])
741
741
  }, null, 8, ["label", "disabled"])
742
742
  ])], 64)) : l("", !0),
743
- d(z) ? l("", !0) : (n(), g("div", vn)),
744
- d(z) ? l("", !0) : (n(), g("div", yn, [x("label", bn, r(i.$t("views.recordings.confidence")), 1), x("div", xn, [D(y, {
743
+ d(B) ? l("", !0) : (n(), g("div", yn)),
744
+ d(B) ? l("", !0) : (n(), g("div", bn, [x("label", xn, r(i.$t("views.recordings.confidence")), 1), x("div", Sn, [D(y, {
745
745
  "model-value": e.filters.minConfidence,
746
746
  min: 0,
747
747
  max: 1,
748
748
  step: .05,
749
749
  class: "flex-1",
750
750
  "onUpdate:modelValue": a[8] ||= (e) => W("minConfidence", e)
751
- }, null, 8, ["model-value"]), x("span", Sn, r(Math.round(e.filters.minConfidence * 100)) + "%", 1)])])),
751
+ }, null, 8, ["model-value"]), x("span", Cn, r(Math.round(e.filters.minConfidence * 100)) + "%", 1)])])),
752
752
  a[24] ||= x("div", { class: "sidebar-divider" }, null, -1),
753
- x("div", Cn, [x("label", wn, r(i.$t("views.recordings.time_range")), 1), x("div", Tn, [(n(!0), g(v, null, t(d(ae), (t) => (n(), c(h, {
753
+ x("div", wn, [x("label", Tn, r(i.$t("views.recordings.time_range")), 1), x("div", En, [(n(!0), g(v, null, t(d(ae), (t) => (n(), c(h, {
754
754
  key: t.value,
755
755
  label: t.label,
756
756
  severity: e.filters.timeRange === t.value ? void 0 : "secondary",
@@ -764,36 +764,36 @@ var Yt = s({
764
764
  "outlined",
765
765
  "onClick"
766
766
  ]))), 128))])]),
767
- d(z) ? l("", !0) : (n(), g(v, { key: 5 }, [
767
+ d(B) ? l("", !0) : (n(), g(v, { key: 5 }, [
768
768
  a[22] ||= x("div", { class: "sidebar-divider" }, null, -1),
769
- x("div", En, [x("button", {
769
+ x("div", Dn, [x("button", {
770
770
  class: "sidebar-section-title flex items-center justify-between w-full cursor-pointer",
771
- onClick: a[9] ||= (e) => K("sensorEvents")
772
- }, [x("span", null, r(i.$t("views.recordings.sensor_events")), 1), (n(), c(o(d(I).sensorEvents ? d(M) : d(N)), { class: "w-4 h-4 text-muted" }))]), d(I).sensorEvents ? (n(), g("div", Dn, [(n(!0), g(v, null, t(d(se), (i) => (n(), g(v, { key: i.value }, [x("label", On, [
771
+ onClick: a[9] ||= (e) => ye("sensorEvents")
772
+ }, [x("span", null, r(i.$t("views.recordings.sensor_events")), 1), (n(), c(o(d(F).sensorEvents ? d(M) : d(N)), { class: "w-4 h-4 text-muted" }))]), d(F).sensorEvents ? (n(), g("div", On, [(n(!0), g(v, null, t(d(se), (i) => (n(), g(v, { key: i.value }, [x("label", kn, [
773
773
  D(O, {
774
774
  "model-value": e.filters.sensorEvents.includes(i.value),
775
775
  binary: !0,
776
- "onUpdate:modelValue": (e) => ye(i.value)
776
+ "onUpdate:modelValue": (e) => _e(i.value)
777
777
  }, null, 8, ["model-value", "onUpdate:modelValue"]),
778
778
  (n(), c(o(i.icon), { class: "w-4 h-4 text-muted" })),
779
779
  x("span", null, r(i.label), 1)
780
- ]), i.value === "audio" && e.filters.sensorEvents.includes("audio") ? (n(), g("div", kn, [(n(!0), g(v, null, t(d(ce), (t) => (n(), g("label", {
780
+ ]), i.value === "audio" && e.filters.sensorEvents.includes("audio") ? (n(), g("div", An, [(n(!0), g(v, null, t(d(ce), (t) => (n(), g("label", {
781
781
  key: t.value,
782
782
  class: "flex items-center gap-2 cursor-pointer text-sm"
783
783
  }, [
784
784
  D(O, {
785
785
  "model-value": e.filters.audioLabels.includes(t.value),
786
786
  binary: !0,
787
- "onUpdate:modelValue": (e) => _e(t.value)
787
+ "onUpdate:modelValue": (e) => ge(t.value)
788
788
  }, null, 8, ["model-value", "onUpdate:modelValue"]),
789
789
  (n(), c(o(t.icon), { class: "w-4 h-4 text-muted" })),
790
790
  x("span", null, r(t.label), 1)
791
791
  ]))), 128))])) : l("", !0)], 64))), 128))])) : l("", !0)]),
792
- x("div", An, [
792
+ x("div", jn, [
793
793
  a[18] ||= x("div", { class: "filter-logic-line" }, null, -1),
794
794
  D(s, {
795
795
  "model-value": e.filters.filterLogicTriggers,
796
- options: d(ie),
796
+ options: d(re),
797
797
  "option-label": "label",
798
798
  "option-value": "value",
799
799
  "allow-empty": !1,
@@ -802,26 +802,26 @@ var Yt = s({
802
802
  }, null, 8, ["model-value", "options"]),
803
803
  a[19] ||= x("div", { class: "filter-logic-line" }, null, -1)
804
804
  ]),
805
- x("div", jn, [x("button", {
805
+ x("div", Mn, [x("button", {
806
806
  class: "sidebar-section-title flex items-center justify-between w-full cursor-pointer",
807
- onClick: a[11] ||= (e) => K("eventTypes")
808
- }, [x("span", null, r(i.$t("views.recordings.event_type")), 1), (n(), c(o(d(I).eventTypes ? d(M) : d(N)), { class: "w-4 h-4 text-muted" }))]), d(I).eventTypes ? (n(), g("div", Mn, [(n(!0), g(v, null, t(d(oe), (t) => (n(), g("label", {
807
+ onClick: a[11] ||= (e) => ye("eventTypes")
808
+ }, [x("span", null, r(i.$t("views.recordings.event_type")), 1), (n(), c(o(d(F).eventTypes ? d(M) : d(N)), { class: "w-4 h-4 text-muted" }))]), d(F).eventTypes ? (n(), g("div", Nn, [(n(!0), g(v, null, t(d(oe), (t) => (n(), g("label", {
809
809
  key: t.value,
810
810
  class: "flex items-center gap-2 cursor-pointer text-sm"
811
811
  }, [
812
812
  D(O, {
813
813
  "model-value": e.filters.eventTypes.includes(t.value),
814
814
  binary: !0,
815
- "onUpdate:modelValue": (e) => ge(t.value)
815
+ "onUpdate:modelValue": (e) => he(t.value)
816
816
  }, null, 8, ["model-value", "onUpdate:modelValue"]),
817
817
  (n(), c(o(t.icon), { class: "w-4 h-4 text-muted" })),
818
818
  x("span", null, r(t.label), 1)
819
819
  ]))), 128))])) : l("", !0)]),
820
- x("div", Nn, [
820
+ x("div", Pn, [
821
821
  a[20] ||= x("div", { class: "filter-logic-line" }, null, -1),
822
822
  D(s, {
823
823
  "model-value": e.filters.filterLogicAttributes,
824
- options: d(ie),
824
+ options: d(re),
825
825
  "option-label": "label",
826
826
  "option-value": "value",
827
827
  "allow-empty": !1,
@@ -830,63 +830,64 @@ var Yt = s({
830
830
  }, null, 8, ["model-value", "options"]),
831
831
  a[21] ||= x("div", { class: "filter-logic-line" }, null, -1)
832
832
  ]),
833
- x("div", Pn, [x("button", {
833
+ x("div", Fn, [x("button", {
834
834
  class: "sidebar-section-title flex items-center justify-between w-full cursor-pointer",
835
- onClick: a[13] ||= (e) => K("attributes")
836
- }, [x("span", null, r(i.$t("views.recordings.attributes")), 1), (n(), c(o(d(I).attributes ? d(M) : d(N)), { class: "w-4 h-4 text-muted" }))]), d(I).attributes ? (n(), g("div", Fn, [(n(!0), g(v, null, t(d(ue), (t) => (n(), g("label", {
835
+ onClick: a[13] ||= (e) => ye("attributes")
836
+ }, [x("span", null, r(i.$t("views.recordings.attributes")), 1), (n(), c(o(d(F).attributes ? d(M) : d(N)), { class: "w-4 h-4 text-muted" }))]), d(F).attributes ? (n(), g("div", In, [(n(!0), g(v, null, t(d(le), (t) => (n(), g("label", {
837
837
  key: t.value,
838
838
  class: "flex items-center gap-2 cursor-pointer text-sm"
839
839
  }, [
840
840
  D(O, {
841
841
  "model-value": e.filters.hasAttributes.includes(t.value),
842
842
  binary: !0,
843
- "onUpdate:modelValue": (e) => be(t.value)
843
+ "onUpdate:modelValue": (e) => ve(t.value)
844
844
  }, null, 8, ["model-value", "onUpdate:modelValue"]),
845
845
  (n(), c(o(t.icon), { class: "w-4 h-4 text-muted" })),
846
846
  x("span", null, r(t.label), 1)
847
- ]))), 128)), x("label", In, [
847
+ ]))), 128)), x("label", Ln, [
848
848
  D(O, {
849
- "model-value": e.filters.eventTypes.includes(d(V).value),
849
+ "model-value": e.filters.eventTypes.includes(d(H).value),
850
850
  binary: !0,
851
- "onUpdate:modelValue": a[14] ||= (e) => ge(d(V).value)
851
+ "onUpdate:modelValue": a[14] ||= (e) => he(d(H).value)
852
852
  }, null, 8, ["model-value"]),
853
- (n(), c(o(d(V).icon), { class: "w-4 h-4 text-muted" })),
854
- x("span", null, r(d(V).label), 1)
853
+ (n(), c(o(d(H).icon), { class: "w-4 h-4 text-muted" })),
854
+ x("span", null, r(d(H).label), 1)
855
855
  ])])) : l("", !0)])
856
856
  ], 64))
857
857
  ], 4)], 4);
858
858
  };
859
859
  }
860
- }), [["__scopeId", "data-v-dd31ab16"]]), zn = { class: "font-semibold text-xl truncate" }, Bn = { class: "w-full h-full relative" }, Vn = {
860
+ }), [["__scopeId", "data-v-77b6c215"]]), Bn = { class: "font-semibold text-xl truncate" }, Vn = { class: "w-full h-full relative" }, Hn = {
861
861
  key: 0,
862
862
  class: "w-full flex flex-row h-[calc(40px+1rem)] py-2 items-center fixed z-10"
863
- }, Hn = { class: "relative z-2 page-title !m-0" }, Un = {
863
+ }, Un = { class: "relative z-2 page-title !m-0" }, Wn = {
864
864
  key: 1,
865
865
  class: "fixed right-0 z-10 h-[calc(40px+1rem)] py-2 pr-2 flex items-center"
866
- }, Wn = {
866
+ }, Gn = {
867
867
  key: 1,
868
868
  class: "flex justify-center py-4"
869
- }, Gn = {
869
+ }, Kn = {
870
870
  key: 2,
871
871
  class: "flex flex-1 min-h-0 flex-col items-center justify-center w-full gap-4"
872
- }, Kn = { class: "text-muted text-sm" }, qn = 288, Jn = /* @__PURE__ */ T({
872
+ }, qn = { class: "text-muted text-sm" }, Jn = 288, Yn = /* @__PURE__ */ T({
873
873
  __name: "Recordings",
874
874
  setup(e) {
875
- let t = new be(), o = new _e(), s = ge(), u = me(), { bottombarHeight: b } = F(), { status: C, checking: T } = L(), { openEventTrace: O } = ie(), j = ae("@camera.ui/camera-ui-nvr"), M = de(), { t: H } = ke(), { smBreakpoint: U, xlBreakpoint: fe, mdBreakpoint: pe } = te(), { registerScrollToTop: he } = I();
875
+ let t = new ae(), o = new le(), s = Ce(), u = me(), { bottombarHeight: b } = ie(), { status: C, checking: T } = he(), { openEventTrace: O } = Se(), j = se("@camera.ui/camera-ui-nvr"), M = F(), { t: I } = Me(), { smBreakpoint: U, xlBreakpoint: ue, mdBreakpoint: W } = V(), { registerScrollToTop: de } = ne();
876
876
  if (typeof VideoDecoder < "u") {
877
- let e = N({ cacheSize: 20 });
878
- i(B, e), Te(() => e.dispose());
877
+ let e = ce({ cacheSize: 20 });
878
+ i(L, e), Oe(() => e.dispose());
879
879
  }
880
- let { results: ve, isSearching: G, isAvailable: K, hasSearched: Se, search: we, clear: Ee } = ne(), { data: Oe } = t.getCamerasQuery({
880
+ let { results: be, isSearching: xe, isAvailable: we, hasSearched: Te, search: De, clear: ke } = ye(), { data: je } = t.getCamerasQuery({
881
881
  page: 1,
882
882
  pageSize: -1
883
- }), { data: Ae } = o.getUserQuery(f(() => u.user?.username ?? "")), je = {
883
+ }), { data: Ne } = o.getUserQuery(f(() => u.user?.username ?? "")), G = {
884
884
  "1h": 36e5,
885
885
  "1d": 864e5,
886
886
  "1w": 6048e5,
887
887
  "1m": 2592e6
888
- }, Me = y("gridRef"), Ne = y("viewMenuRef"), q = E("closed"), Fe = E(!1), J = E({
888
+ }, K = y("gridRef"), Pe = y("viewMenuRef"), q = E("closed"), Ie = E(!1), J = E({
889
889
  contentKind: "all",
890
+ favoritesOnly: !1,
890
891
  search: "",
891
892
  semanticQuery: "",
892
893
  filterLogicTriggers: "or",
@@ -903,94 +904,94 @@ var Yt = s({
903
904
  minConfidence: .5,
904
905
  minSemanticScore: .5,
905
906
  onlyWithRecordings: !0
906
- }), Le = w({
907
+ }), Re = w({
907
908
  state: "ended",
908
909
  hasDetections: !0,
909
910
  withRecordingInfo: !0,
910
911
  hasRecording: !0
911
- }), Re = JSON.stringify(Le.value), Y = E(!1), ze = w([]), Be = E(null), Ve = y("reindexAnchorRef"), { left: He } = De(Ve), Qe = !1, X = f(() => fe.value ? !0 : q.value === "opened"), $e = f(() => pe.value), tt = f(() => X.value && $e.value ? !0 : (Me.value?.scrollY ?? 0) > 10 && !C.value?.running), nt = f(() => pe.value ? "0px" : X.value ? `${qn}px` : "0px"), Z = f(() => (Oe.value?.result ?? []).map((e) => ({
912
+ }), ze = JSON.stringify(Re.value), Y = E(!1), Be = w([]), Ve = E(null), He = y("reindexAnchorRef"), { left: Ue } = Ae(He), $e = !1, X = f(() => ue.value ? !0 : q.value === "opened"), et = f(() => W.value), nt = _e(() => K.value?.scrollY ?? 0), rt = f(() => X.value && et.value ? !0 : nt.value && !C.value?.running), at = f(() => W.value ? "0px" : X.value ? `${Jn}px` : "0px"), Z = f(() => (je.value?.result ?? []).map((e) => ({
912
913
  id: e._id,
913
914
  name: e.name,
914
915
  room: e.room
915
- }))), it = f(() => {
916
+ }))), st = f(() => {
916
917
  let e = /* @__PURE__ */ new Map();
917
918
  for (let t of Z.value) e.set(t.id, t.name);
918
919
  return e;
919
- }), ot = f(() => {
920
+ }), ct = f(() => {
920
921
  let e = /* @__PURE__ */ new Map();
921
- for (let t of Oe.value?.result ?? []) e.set(t._id, t);
922
+ for (let t of je.value?.result ?? []) e.set(t._id, t);
922
923
  return e;
923
- }), st = f(() => {
924
+ }), lt = f(() => {
924
925
  let e = J.value.rooms;
925
926
  return (e.length > 0 ? Z.value.filter((t) => e.includes(t.room ?? "")) : Z.value).map((e) => e.id);
926
- }), ct = f(() => J.value.cameraIds.filter((e) => st.value.includes(e))), lt = f(() => st.value);
927
- he(() => Me.value?.scrollToTop());
928
- let { events: ut, isLoading: ft, hasMore: pt, loadMore: mt, loadThumbnails: ht, deleteEvents: gt, pluginUnavailable: _t } = re({
929
- availableCameraIds: lt,
930
- cameraIds: ct,
927
+ }), ut = f(() => J.value.cameraIds.filter((e) => lt.value.includes(e))), dt = f(() => lt.value);
928
+ de(() => K.value?.scrollToTop());
929
+ let { events: pt, isLoading: mt, hasMore: ht, loadMore: gt, loadThumbnails: _t, deleteEvents: vt, pluginUnavailable: yt } = N({
930
+ availableCameraIds: dt,
931
+ cameraIds: ut,
931
932
  realtime: !0,
932
933
  pageSize: 40,
933
- filter: Le,
934
+ filter: Re,
934
935
  withEpisodes: !0
935
936
  }), Q = f(() => {
936
937
  let e = /* @__PURE__ */ new Map();
937
- for (let t of ve.value ?? []) {
938
+ for (let t of be.value ?? []) {
938
939
  let n = e.get(t.eventId);
939
940
  (!n || t.score > n) && e.set(t.eventId, t.score);
940
941
  }
941
942
  return e;
942
- }), vt = f(() => Se.value), $ = f(() => {
943
- let e = ut.value.filter((e) => e.state === "ended"), t = J.value;
944
- if (t.timeRange && je[t.timeRange]) {
945
- let n = Date.now() - je[t.timeRange];
943
+ }), bt = f(() => Te.value), $ = f(() => {
944
+ let e = pt.value.filter((e) => e.state === "ended"), t = J.value;
945
+ if (t.timeRange && G[t.timeRange]) {
946
+ let n = Date.now() - G[t.timeRange];
946
947
  e = e.filter((e) => e.startTime >= n);
947
948
  }
948
- return t.gridRegions.length > 0 && (e = e.filter((e) => e.segments.some((e) => e.detections.some((e) => e.box && Je(e.box, t.gridRegions))))), vt.value && (e = e.filter((e) => {
949
+ return t.gridRegions.length > 0 && (e = e.filter((e) => e.segments.some((e) => e.detections.some((e) => e.box && Ye(e.box, t.gridRegions))))), t.favoritesOnly && (e = e.filter((e) => e.favorite)), bt.value && (e = e.filter((e) => {
949
950
  let n = Q.value.get(e.id);
950
951
  return n != null && n >= t.minSemanticScore;
951
952
  }), e.sort((e, t) => (Q.value.get(t.id) ?? 0) - (Q.value.get(e.id) ?? 0))), e;
952
- }), yt = f(() => J.value.contentKind === "episodes"), bt = f(() => {
953
+ }), xt = f(() => J.value.contentKind === "episodes"), St = f(() => {
953
954
  if (J.value.contentKind === "events") return [];
954
955
  j.storeVersion.value;
955
956
  let e = J.value;
956
- if (!yt.value && (Y.value || vt.value || e.gridRegions.length > 0 || e.search.trim() !== "" || e.eventTypes.length > 0 || e.audioLabels.length > 0 || e.hasAttributes.length > 0 || e.sensorEvents.length > 0 || e.minConfidence !== .5)) return [];
957
- let t = ct.value.length > 0 ? ct.value : lt.value, n = e.timeRange && je[e.timeRange] ? Date.now() - je[e.timeRange] : 0, r = Infinity;
958
- if (e.timeRange === "custom" && e.customDateRange && (n = Math.max(n, e.customDateRange[0].getTime()), r = e.customDateRange[1].getTime()), pt.value && !yt.value) {
957
+ if (!xt.value && (Y.value || bt.value || e.gridRegions.length > 0 || e.search.trim() !== "" || e.eventTypes.length > 0 || e.audioLabels.length > 0 || e.hasAttributes.length > 0 || e.sensorEvents.length > 0 || e.minConfidence !== .5)) return [];
958
+ let t = ut.value.length > 0 ? ut.value : dt.value, n = e.timeRange && G[e.timeRange] ? Date.now() - G[e.timeRange] : 0, r = Infinity;
959
+ if (e.timeRange === "custom" && e.customDateRange && (n = Math.max(n, e.customDateRange[0].getTime()), r = e.customDateRange[1].getTime()), ht.value && !xt.value) {
959
960
  let e = Infinity;
960
- for (let t of ut.value) e = Math.min(e, t.thumbnailAt ?? t.startTime);
961
+ for (let t of pt.value) e = Math.min(e, t.thumbnailAt ?? t.startTime);
961
962
  n = Math.max(n, e);
962
963
  }
963
964
  let i = [];
964
- for (let e of j.getEpisodes()) e.description && (n && e.endTime < n || e.startTime > r || t.length > 0 && !e.members.some((e) => t.includes(e.cameraId)) || i.push({
965
+ for (let a of j.getEpisodes()) a.description && (e.favoritesOnly && !a.favorite || n && a.endTime < n || a.startTime > r || t.length > 0 && !a.members.some((e) => t.includes(e.cameraId)) || i.push({
965
966
  event: void 0,
966
- key: `episode:${e.id}`,
967
- episode: e
967
+ key: `episode:${a.id}`,
968
+ episode: a
968
969
  }));
969
970
  return i;
970
- }), xt = f(() => {
971
- if (yt.value) return [...bt.value].sort((e, t) => Ge(t) - Ge(e));
972
- if (Y.value && ze.value.length) return ze.value;
971
+ }), Ct = f(() => {
972
+ if (xt.value) return [...St.value].sort((e, t) => Ke(t) - Ke(e));
973
+ if (Y.value && Be.value.length) return Be.value;
973
974
  let e = $.value.map((e) => ({
974
975
  event: e,
975
976
  key: e.id
976
977
  }));
977
- return bt.value.length && (e.push(...bt.value), e.sort((e, t) => Ge(t) - Ge(e))), e;
978
- }), St = f(() => ue(void 0, "admin")), { selectionMode: Ct, selectedIds: wt, allSelected: Tt, bulkBusy: Et, enterSelectionMode: Dt, exitSelectionMode: Ot, toggleSelectAll: kt, toggleSelection: At } = z($, (e) => e.id);
979
- function jt() {
980
- let e = [...wt.value];
981
- !e.length || Et.value || s.openTextDialog({
978
+ return St.value.length && (e.push(...St.value), e.sort((e, t) => Ke(t) - Ke(e))), e;
979
+ }), wt = f(() => pe(void 0, "admin")), { selectionMode: Tt, selectedIds: Et, allSelected: Dt, bulkBusy: Ot, enterSelectionMode: kt, exitSelectionMode: At, toggleSelectAll: jt, toggleSelection: Mt } = oe($, (e) => e.id);
980
+ function Nt() {
981
+ let e = [...Et.value];
982
+ !e.length || Ot.value || s.openTextDialog({
982
983
  data: {
983
- title: H("components.dialog.title.confirm"),
984
- contentText: H("views.recordings.delete_selected_confirm", { count: e.length }),
985
- confirmText: H("components.form.button.remove"),
984
+ title: I("components.dialog.title.confirm"),
985
+ contentText: I("views.recordings.delete_selected_confirm", { count: e.length }),
986
+ confirmText: I("components.form.button.remove"),
986
987
  confirmButtonProps: { severity: "danger" }
987
988
  },
988
989
  onConfirm: async () => {
989
- Et.value = !0;
990
+ Ot.value = !0;
990
991
  try {
991
- await gt(e), Ot(), M.add({
992
+ await vt(e), At(), M.add({
992
993
  severity: "success",
993
- detail: H("views.recordings.delete_selected_done", { count: e.length }),
994
+ detail: I("views.recordings.delete_selected_done", { count: e.length }),
994
995
  life: 5e3
995
996
  });
996
997
  } catch (e) {
@@ -1000,74 +1001,90 @@ var Yt = s({
1000
1001
  life: 5e3
1001
1002
  });
1002
1003
  } finally {
1003
- Et.value = !1;
1004
+ Ot.value = !1;
1004
1005
  }
1005
1006
  }
1006
1007
  });
1007
1008
  }
1008
- let Mt = f(() => [{
1009
- key: "ungroup",
1010
- label: H("views.recordings.ungroup"),
1011
- description: H("views.recordings.ungroup_hint"),
1012
- toggle: !0,
1013
- toggleState: Y.value,
1014
- onClick: () => {
1015
- Qe = !0, Y.value = !Y.value, u.updateUser({ preferences: { recordings: { ungrouped: Y.value } } });
1016
- }
1017
- }, {
1018
- key: "onlyWithRecordings",
1019
- label: H("views.recordings.only_with_recordings"),
1020
- description: H("views.recordings.only_with_recordings_hint"),
1021
- toggle: !0,
1022
- toggleState: J.value.onlyWithRecordings,
1023
- onClick: () => {
1024
- J.value = {
1025
- ...J.value,
1026
- onlyWithRecordings: !J.value.onlyWithRecordings
1027
- };
1009
+ let Pt = f(() => [
1010
+ {
1011
+ key: "ungroup",
1012
+ label: I("views.recordings.ungroup"),
1013
+ description: I("views.recordings.ungroup_hint"),
1014
+ toggle: !0,
1015
+ toggleState: Y.value,
1016
+ onClick: () => {
1017
+ $e = !0, Y.value = !Y.value, u.updateUser({ preferences: { recordings: { ungrouped: Y.value } } });
1018
+ }
1019
+ },
1020
+ {
1021
+ key: "onlyWithRecordings",
1022
+ label: I("views.recordings.only_with_recordings"),
1023
+ description: I("views.recordings.only_with_recordings_hint"),
1024
+ toggle: !0,
1025
+ toggleState: J.value.onlyWithRecordings,
1026
+ onClick: () => {
1027
+ J.value = {
1028
+ ...J.value,
1029
+ onlyWithRecordings: !J.value.onlyWithRecordings
1030
+ };
1031
+ }
1032
+ },
1033
+ {
1034
+ key: "favoritesOnly",
1035
+ label: I("views.recordings.favorites_only"),
1036
+ description: I("views.recordings.favorites_hint"),
1037
+ toggle: !0,
1038
+ toggleState: J.value.favoritesOnly,
1039
+ onClick: () => {
1040
+ J.value = {
1041
+ ...J.value,
1042
+ favoritesOnly: !J.value.favoritesOnly
1043
+ };
1044
+ }
1028
1045
  }
1029
- }]);
1030
- function Nt() {
1031
- s.openComponentDialog(dt, { data: {
1032
- title: H("views.recordings.reindex.title"),
1046
+ ]);
1047
+ function Ft() {
1048
+ s.openComponentDialog(ft, { data: {
1049
+ title: I("views.recordings.reindex.title"),
1033
1050
  contentProps: {},
1034
- confirmText: H("views.recordings.reindex.start")
1051
+ confirmText: I("views.recordings.reindex.start")
1035
1052
  } });
1036
1053
  }
1037
- function Pt() {
1038
- s.openComponentDialog(Ut, { data: {
1039
- title: H("views.recordings.export.title"),
1054
+ function It() {
1055
+ s.openComponentDialog(Wt, { data: {
1056
+ title: I("views.recordings.export.title"),
1040
1057
  contentProps: {
1041
1058
  cameras: Z.value,
1042
1059
  preselect: J.value.cameraIds?.length ? J.value.cameraIds : []
1043
1060
  },
1044
- confirmText: H("views.recordings.export.confirm")
1061
+ confirmText: I("views.recordings.export.confirm")
1045
1062
  } });
1046
1063
  }
1047
- function Ft() {
1064
+ function Lt() {
1048
1065
  let e = q.value;
1049
1066
  q.value = e === "opened" ? "closed" : "opened";
1050
1067
  }
1051
- function It() {
1068
+ function Rt() {
1052
1069
  q.value = "closed";
1053
1070
  }
1054
- function Lt(e) {
1055
- !e.semanticQuery?.trim() && J.value.semanticQuery?.trim() && Ee(), J.value = e;
1071
+ function zt(e) {
1072
+ !e.semanticQuery?.trim() && J.value.semanticQuery?.trim() && ke(), J.value = e;
1056
1073
  }
1057
- function Rt(e) {
1074
+ function Bt(e) {
1058
1075
  if (!e.trim()) {
1059
- Ee();
1076
+ ke();
1060
1077
  return;
1061
1078
  }
1062
- we(e);
1079
+ De(e);
1063
1080
  }
1064
- function zt(e) {
1065
- let t = ot.value.get(e.cameraId);
1081
+ function Vt(e) {
1082
+ let t = ct.value.get(e.cameraId);
1066
1083
  t && O(e, t);
1067
1084
  }
1068
- function Bt(e) {
1069
- let t = ot.value.get(e.cameraId);
1070
- t && s.openComponentDialog(ce, {
1085
+ function Ht(e) {
1086
+ let t = ct.value.get(e.cameraId);
1087
+ t && s.openComponentDialog(fe, {
1071
1088
  data: {
1072
1089
  title: t.name,
1073
1090
  dedupeKey: `camera-event:${t._id}:${e.startTime}`,
@@ -1079,7 +1096,7 @@ var Yt = s({
1079
1096
  eventTimestamp: e.startTime
1080
1097
  },
1081
1098
  headerActions: e.segments?.some((e) => e?.description) ? [{
1082
- icon: le,
1099
+ icon: R,
1083
1100
  toggle: !0,
1084
1101
  onClick: () => {}
1085
1102
  }] : void 0,
@@ -1092,12 +1109,12 @@ var Yt = s({
1092
1109
  },
1093
1110
  dialogSize: { desktop: {
1094
1111
  maxWidth: "800px",
1095
- maxHeight: "calc(100vh - max(1rem, env(safe-area-inset-top, 0px)) - max(1rem, env(safe-area-inset-bottom, 0px)))",
1112
+ maxHeight: "calc(100vh - max(1rem, var(--safe-area-inset-top)) - max(1rem, var(--safe-area-inset-bottom)))",
1096
1113
  width: "50vw"
1097
1114
  } }
1098
1115
  });
1099
1116
  }
1100
- return h(fe, (e) => {
1117
+ return h(ue, (e) => {
1101
1118
  e && (q.value = "closed");
1102
1119
  }), h(J, (e) => {
1103
1120
  let t = e.eventTypes.length > 0 || e.sensorEvents.length > 0 || e.audioLabels.length > 0 || e.hasAttributes.length > 0, n = {
@@ -1112,18 +1129,19 @@ var Yt = s({
1112
1129
  state: "ended",
1113
1130
  hasDetections: !t,
1114
1131
  withRecordingInfo: !0,
1115
- hasRecording: e.onlyWithRecordings || void 0
1132
+ hasRecording: e.onlyWithRecordings || void 0,
1133
+ favoritesOnly: e.favoritesOnly || void 0
1116
1134
  }, r = JSON.stringify(n);
1117
- r !== Re && (Re = r, Le.value = n);
1135
+ r !== ze && (ze = r, Re.value = n);
1118
1136
  }, {
1119
1137
  deep: !0,
1120
1138
  immediate: !0
1121
- }), h(Ae, (e) => {
1122
- if (!e || Qe) return;
1139
+ }), h(Ne, (e) => {
1140
+ if (!e || $e) return;
1123
1141
  let t = e.preferences?.recordings?.ungrouped;
1124
1142
  t !== void 0 && (Y.value = t);
1125
1143
  }, { immediate: !0 }), h([Y, $], ([e, t]) => {
1126
- ze.value = e ? qe(t) : [];
1144
+ Be.value = e ? Je(t) : [];
1127
1145
  }), h(() => J.value.cameraIds, (e) => {
1128
1146
  e.length !== 1 && J.value.gridRegions.length > 0 && (J.value = {
1129
1147
  ...J.value,
@@ -1131,13 +1149,13 @@ var Yt = s({
1131
1149
  });
1132
1150
  }), k(() => {
1133
1151
  requestAnimationFrame(() => {
1134
- Fe.value = !0;
1152
+ Ie.value = !0;
1135
1153
  });
1136
1154
  }), (e, t) => {
1137
- let i = se, o = rt, s = et, u = Pe, f = Ye, h = Ze, y = Xe, w = ye, E = We, O = Ke, k = Ue, j = R, M = xe, N = V, F = A;
1155
+ let i = te, o = it, s = tt, u = Fe, f = Xe, h = Qe, y = Ze, w = z, E = Ge, O = qe, k = We, j = B, M = ve, N = ee, F = A;
1138
1156
  return n(), g("div", null, [
1139
1157
  D(i, { position: "center" }, {
1140
- default: p(() => [x("span", zn, r(e.$t("views.recordings.title")), 1)]),
1158
+ default: p(() => [x("span", Bn, r(e.$t("views.recordings.title")), 1)]),
1141
1159
  _: 1
1142
1160
  }),
1143
1161
  D(i, { position: "left" }, {
@@ -1147,7 +1165,7 @@ var Yt = s({
1147
1165
  class: "cui-button p-2 text-color",
1148
1166
  text: "",
1149
1167
  rounded: "",
1150
- onClick: Ft
1168
+ onClick: Lt
1151
1169
  }, {
1152
1170
  icon: p(() => [d(q) === "closed" ? (n(), c(o, {
1153
1171
  key: 0,
@@ -1168,7 +1186,7 @@ var Yt = s({
1168
1186
  class: "cui-button p-2 text-color",
1169
1187
  text: "",
1170
1188
  rounded: "",
1171
- onClick: t[0] ||= (e) => d(Ne)?.toggleMenu(e)
1189
+ onClick: t[0] ||= (e) => d(Pe)?.toggleMenu(e)
1172
1190
  }, {
1173
1191
  icon: p(() => [D(f, {
1174
1192
  width: "100%",
@@ -1178,18 +1196,18 @@ var Yt = s({
1178
1196
  })]),
1179
1197
  _: 1
1180
1198
  }),
1181
- D(Rn, {
1199
+ D(zn, {
1182
1200
  filters: d(J),
1183
1201
  cameras: d(Z),
1184
1202
  "is-open": d(X),
1185
- "is-overlay": d($e),
1186
- "result-count": d(xt).length,
1187
- "semantic-count": d(vt) ? d(Q).size : void 0,
1188
- "semantic-search-available": d(K),
1189
- "semantic-search-loading": d(G),
1190
- "onUpdate:filters": Lt,
1191
- onSemanticSearch: Rt,
1192
- onClose: It
1203
+ "is-overlay": d(et),
1204
+ "result-count": d(Ct).length,
1205
+ "semantic-count": d(bt) ? d(Q).size : void 0,
1206
+ "semantic-search-available": d(we),
1207
+ "semantic-search-loading": d(xe),
1208
+ "onUpdate:filters": zt,
1209
+ onSemanticSearch: Bt,
1210
+ onClose: Rt
1193
1211
  }, null, 8, [
1194
1212
  "filters",
1195
1213
  "cameras",
@@ -1203,30 +1221,30 @@ var Yt = s({
1203
1221
  (n(), c(m, {
1204
1222
  to: "#container",
1205
1223
  defer: ""
1206
- }, [d(X) && d($e) ? (n(), g("div", {
1224
+ }, [d(X) && d(et) ? (n(), g("div", {
1207
1225
  key: 0,
1208
1226
  class: "fixed top-0 left-0 right-0 bottom-0 w-full h-full bg-black/50 z-1",
1209
- onClick: It
1227
+ onClick: Rt
1210
1228
  })) : l("", !0)])),
1211
1229
  x("main", {
1212
1230
  ref_key: "reindexAnchorRef",
1213
- ref: Ve,
1231
+ ref: He,
1214
1232
  class: "relative w-full h-full",
1215
1233
  style: _({
1216
- paddingLeft: d(nt),
1217
- transition: d(Fe) ? "padding-left 200ms" : void 0
1234
+ paddingLeft: d(at),
1235
+ transition: d(Ie) ? "padding-left 200ms" : void 0
1218
1236
  })
1219
- }, [x("div", Bn, [
1220
- d(U) ? l("", !0) : (n(), g("div", Vn, [
1237
+ }, [x("div", Vn, [
1238
+ d(U) ? l("", !0) : (n(), g("div", Hn, [
1221
1239
  t[3] ||= x("div", { class: "ml-2" }, null, -1),
1222
- d(fe) ? l("", !0) : (n(), c(u, {
1240
+ d(ue) ? l("", !0) : (n(), c(u, {
1223
1241
  key: 0,
1224
1242
  id: "recordings-sidebar-toggle",
1225
1243
  severity: "secondary",
1226
1244
  class: "mr-2 cui-icon-lg relative z-2",
1227
1245
  text: "",
1228
1246
  rounded: "",
1229
- onClick: Ft
1247
+ onClick: Lt
1230
1248
  }, {
1231
1249
  icon: p(() => [d(X) ? (n(), c(h, {
1232
1250
  key: 0,
@@ -1239,7 +1257,7 @@ var Yt = s({
1239
1257
  }))]),
1240
1258
  _: 1
1241
1259
  })),
1242
- x("h1", Hn, r(e.$t("views.recordings.title")), 1),
1260
+ x("h1", Un, r(e.$t("views.recordings.title")), 1),
1243
1261
  t[4] ||= x("div", { class: "gradient-blur rotate-180 !h-[70px]" }, [
1244
1262
  x("div"),
1245
1263
  x("div"),
@@ -1249,12 +1267,12 @@ var Yt = s({
1249
1267
  x("div")
1250
1268
  ], -1)
1251
1269
  ])),
1252
- d(U) ? l("", !0) : (n(), g("div", Un, [S((n(), c(u, {
1270
+ d(U) ? l("", !0) : (n(), g("div", Wn, [S((n(), c(u, {
1253
1271
  severity: "secondary",
1254
1272
  text: "",
1255
1273
  rounded: "",
1256
1274
  class: "cui-icon-lg relative z-2",
1257
- onClick: t[1] ||= (e) => d(Ne)?.toggleMenu(e)
1275
+ onClick: t[1] ||= (e) => d(Pe)?.toggleMenu(e)
1258
1276
  }, {
1259
1277
  icon: p(() => [D(f, {
1260
1278
  width: "100%",
@@ -1271,24 +1289,24 @@ var Yt = s({
1271
1289
  "pt-4": d(U),
1272
1290
  "pt-[calc(40px+2rem)]": !d(U)
1273
1291
  }]) }, [
1274
- d(xt).length ? (n(), c(O, {
1292
+ d(Ct).length ? (n(), c(O, {
1275
1293
  key: 0,
1276
1294
  ref_key: "gridRef",
1277
- ref: Me,
1278
- items: d(xt),
1295
+ ref: K,
1296
+ items: d(Ct),
1279
1297
  "min-item-width": d(U) ? 160 : 180,
1280
1298
  gap: 8,
1281
- "has-more": d(pt),
1282
- "load-more": d(mt),
1299
+ "has-more": d(ht),
1300
+ "load-more": d(gt),
1283
1301
  "item-key": (e) => e.key,
1284
1302
  class: "flex-1 min-h-0"
1285
1303
  }, {
1286
1304
  item: p(({ item: e }) => [e.episode ? (n(), c(w, {
1287
1305
  key: 0,
1288
1306
  episode: e.episode,
1289
- "camera-by-id": d(ot),
1307
+ "camera-by-id": d(ct),
1290
1308
  fluid: "",
1291
- "click-disabled": d(Ct)
1309
+ "click-disabled": d(Tt)
1292
1310
  }, null, 8, [
1293
1311
  "episode",
1294
1312
  "camera-by-id",
@@ -1296,19 +1314,19 @@ var Yt = s({
1296
1314
  ])) : (n(), c(E, {
1297
1315
  key: 1,
1298
1316
  event: e.event,
1299
- "camera-name": d(it).get(e.event.cameraId),
1300
- camera: d(ot).get(e.event.cameraId),
1301
- "load-thumbnails": d(ht),
1317
+ "camera-name": d(st).get(e.event.cameraId),
1318
+ camera: d(ct).get(e.event.cameraId),
1319
+ "load-thumbnails": d(_t),
1302
1320
  "semantic-score": d(Q).get(e.event.id),
1303
1321
  "seg-index": e.segIndex,
1304
- "selection-mode": d(Ct),
1305
- selected: d(wt).has(e.event.id),
1306
- "sibling-active": e.segIndex !== void 0 && d(Be) === e.event.id,
1307
- onSelect: (t) => d(At)(e.event.id),
1308
- onScrollToEvent: () => Bt(e.event),
1309
- onOpenTrace: () => zt(e.event),
1310
- onMouseenter: (t) => Be.value = e.segIndex === void 0 ? null : e.event.id,
1311
- onMouseleave: t[2] ||= (e) => Be.value = null
1322
+ "selection-mode": d(Tt),
1323
+ selected: d(Et).has(e.event.id),
1324
+ "sibling-active": e.segIndex !== void 0 && d(Ve) === e.event.id,
1325
+ onSelect: (t) => d(Mt)(e.event.id),
1326
+ onScrollToEvent: () => Ht(e.event),
1327
+ onOpenTrace: () => Vt(e.event),
1328
+ onMouseenter: (t) => Ve.value = e.segIndex === void 0 ? null : e.event.id,
1329
+ onMouseleave: t[2] ||= (e) => Ve.value = null
1312
1330
  }, null, 8, [
1313
1331
  "event",
1314
1332
  "camera-name",
@@ -1332,21 +1350,21 @@ var Yt = s({
1332
1350
  "load-more",
1333
1351
  "item-key"
1334
1352
  ])) : l("", !0),
1335
- d(ft) || d(G) ? (n(), g("div", Wn, [D(k, {
1353
+ d(mt) || d(xe) ? (n(), g("div", Gn, [D(k, {
1336
1354
  width: "24px",
1337
1355
  height: "24px",
1338
1356
  class: "text-muted"
1339
1357
  })])) : l("", !0),
1340
- !d($).length && !d(ft) && !d(G) ? (n(), g("div", Gn, [D(j, { class: "w-12 h-12 text-muted" }), x("span", Kn, r(d(_t) ? e.$t("views.recordings.recordings_unavailable") : e.$t("views.recordings.no_recordings")), 1)])) : l("", !0)
1358
+ !d($).length && !d(mt) && !d(xe) ? (n(), g("div", Kn, [D(j, { class: "w-12 h-12 text-muted" }), x("span", qn, r(d(yt) ? e.$t("views.recordings.recordings_unavailable") : e.$t("views.recordings.no_recordings")), 1)])) : l("", !0)
1341
1359
  ], 2)
1342
1360
  ])], 4),
1343
- d(St) && d(Z).length ? (n(), g("div", {
1361
+ d(wt) && d(Z).length ? (n(), g("div", {
1344
1362
  key: 0,
1345
- class: a(["fixed z-10", d(tt) ? "scale-0 opacity-0" : "scale-100 opacity-100"]),
1363
+ class: a(["fixed z-10", d(rt) ? "scale-0 opacity-0" : "scale-100 opacity-100"]),
1346
1364
  style: _({
1347
- left: `calc(${d(He)}px + ${d(nt)} + 0.75rem + env(safe-area-inset-left, 0px))`,
1348
- bottom: `calc(${d(b)}px + 1.25rem + env(safe-area-inset-bottom, 0px))`,
1349
- transition: d(Fe) ? "left 200ms, transform 200ms ease-in-out, opacity 200ms ease-in-out" : void 0
1365
+ left: `calc(${d(Ue)}px + ${d(at)} + 0.75rem + var(--safe-area-inset-left))`,
1366
+ bottom: `calc(${d(b)}px + 1.25rem + var(--safe-area-inset-bottom))`,
1367
+ transition: d(Ie) ? "left 200ms, transform 200ms ease-in-out, opacity 200ms ease-in-out" : void 0
1350
1368
  })
1351
1369
  }, [D(u, {
1352
1370
  severity: "secondary",
@@ -1357,27 +1375,27 @@ var Yt = s({
1357
1375
  done: d(C).done,
1358
1376
  total: d(C).total
1359
1377
  }) : e.$t("views.recordings.reindex.button"),
1360
- onClick: Nt
1378
+ onClick: Ft
1361
1379
  }, {
1362
- icon: p(() => [d(C)?.running ? (n(), c(d(Ue), { key: 0 })) : (n(), c(d(at), { key: 1 }))]),
1380
+ icon: p(() => [d(C)?.running ? (n(), c(d(We), { key: 0 })) : (n(), c(d(ot), { key: 1 }))]),
1363
1381
  _: 1
1364
1382
  }, 8, ["disabled", "label"])], 6)) : l("", !0),
1365
1383
  d(Z).length ? (n(), c(N, {
1366
1384
  key: 1,
1367
- "force-visible": d(Ct),
1368
- "scroll-y": d(Me)?.scrollY ?? 0
1385
+ "force-visible": d(Tt),
1386
+ "scroll-y": d(K)?.scrollY ?? 0
1369
1387
  }, {
1370
- default: p(() => [d(Ct) ? (n(), g(v, { key: 1 }, [
1388
+ default: p(() => [d(Tt) ? (n(), g(v, { key: 1 }, [
1371
1389
  D(M, {
1372
1390
  grouped: "",
1373
1391
  "tooltip-props": { value: e.$t("components.form.tooltip.cancel_selection") },
1374
1392
  "button-props": { severity: "secondary" },
1375
- icon: d(Ie),
1393
+ icon: d(Le),
1376
1394
  "icon-props": {
1377
1395
  width: "100%",
1378
1396
  height: "100%"
1379
1397
  },
1380
- onClick: d(Ot)
1398
+ onClick: d(At)
1381
1399
  }, null, 8, [
1382
1400
  "tooltip-props",
1383
1401
  "icon",
@@ -1385,14 +1403,14 @@ var Yt = s({
1385
1403
  ]),
1386
1404
  D(M, {
1387
1405
  grouped: "",
1388
- "tooltip-props": { value: d(Tt) ? e.$t("components.form.tooltip.deselect_all") : e.$t("components.form.tooltip.select_all") },
1389
- "button-props": { severity: d(Tt) ? "primary" : "secondary" },
1390
- icon: d(ee),
1406
+ "tooltip-props": { value: d(Dt) ? e.$t("components.form.tooltip.deselect_all") : e.$t("components.form.tooltip.select_all") },
1407
+ "button-props": { severity: d(Dt) ? "primary" : "secondary" },
1408
+ icon: d(H),
1391
1409
  "icon-props": {
1392
1410
  width: "100%",
1393
1411
  height: "100%"
1394
1412
  },
1395
- onClick: d(kt)
1413
+ onClick: d(jt)
1396
1414
  }, null, 8, [
1397
1415
  "tooltip-props",
1398
1416
  "button-props",
@@ -1404,30 +1422,30 @@ var Yt = s({
1404
1422
  "tooltip-props": { value: e.$t("components.form.tooltip.delete_selected") },
1405
1423
  "button-props": {
1406
1424
  severity: "danger",
1407
- disabled: !d(wt).size || d(Et)
1425
+ disabled: !d(Et).size || d(Ot)
1408
1426
  },
1409
- icon: d(Ce),
1427
+ icon: d(P),
1410
1428
  "icon-props": {
1411
1429
  width: "100%",
1412
1430
  height: "100%"
1413
1431
  },
1414
- onClick: jt
1432
+ onClick: Nt
1415
1433
  }, null, 8, [
1416
1434
  "tooltip-props",
1417
1435
  "button-props",
1418
1436
  "icon"
1419
1437
  ])
1420
- ], 64)) : (n(), g(v, { key: 0 }, [d(St) && d($).length ? (n(), c(M, {
1438
+ ], 64)) : (n(), g(v, { key: 0 }, [d(wt) && d($).length ? (n(), c(M, {
1421
1439
  key: 0,
1422
1440
  grouped: "",
1423
1441
  "tooltip-props": { value: e.$t("views.recordings.select") },
1424
1442
  "button-props": { severity: "secondary" },
1425
- icon: d(oe),
1443
+ icon: d(Ee),
1426
1444
  "icon-props": {
1427
1445
  width: "100%",
1428
1446
  height: "100%"
1429
1447
  },
1430
- onClick: d(Dt)
1448
+ onClick: d(kt)
1431
1449
  }, null, 8, [
1432
1450
  "tooltip-props",
1433
1451
  "icon",
@@ -1436,19 +1454,19 @@ var Yt = s({
1436
1454
  grouped: "",
1437
1455
  "tooltip-props": { value: e.$t("views.recordings.export.title") },
1438
1456
  "button-props": { class: "text-white" },
1439
- icon: d(W),
1457
+ icon: d(ge),
1440
1458
  "icon-props": {
1441
1459
  width: "26px",
1442
1460
  height: "26px"
1443
1461
  },
1444
- onClick: Pt
1462
+ onClick: It
1445
1463
  }, null, 8, ["tooltip-props", "icon"])], 64))]),
1446
1464
  _: 1
1447
1465
  }, 8, ["force-visible", "scroll-y"])) : l("", !0),
1448
- D(P, {
1466
+ D(re, {
1449
1467
  ref_key: "viewMenuRef",
1450
- ref: Ne,
1451
- items: d(Mt),
1468
+ ref: Pe,
1469
+ items: d(Pt),
1452
1470
  "auto-hide": !1,
1453
1471
  popover: { pt: {
1454
1472
  root: { class: "w-[22rem]" },
@@ -1460,4 +1478,4 @@ var Yt = s({
1460
1478
  }
1461
1479
  });
1462
1480
  //#endregion
1463
- export { Jn as default };
1481
+ export { Yn as default };