@camera.ui/server 2.2.8 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (493) hide show
  1. package/LICENSE.md +8 -1
  2. package/dist/interface/assets/{404-BYV0u5qE.js → 404-C0X5UBF4.js} +1 -1
  3. package/dist/interface/assets/About-Ctp_u5qK.js +1 -0
  4. package/dist/interface/assets/Assistant-Bj2bAUHD.css +1 -0
  5. package/dist/interface/assets/Assistant-CDrBV_mg.js +1 -0
  6. package/dist/interface/assets/Automation-Dp6V80Iz.js +3 -0
  7. package/dist/interface/assets/{Automation-BSicfOGF.css → Automation-R5o9sXYY.css} +1 -1
  8. package/dist/interface/assets/{AutomationImport-Iu-K82Os.js → AutomationImport-DKgg7atE.js} +2 -2
  9. package/dist/interface/assets/AutomationStore-CU-m5VC8.js +2 -0
  10. package/dist/interface/assets/{AutomationStoreDetail-BbvLRJ5u.js → AutomationStoreDetail-CiyIs8Iu.js} +2 -2
  11. package/dist/interface/assets/Automations-Dljh-sWu.js +2 -0
  12. package/dist/interface/assets/Camera-0p0P_mbp.css +1 -0
  13. package/dist/interface/assets/Camera-Bvovab-8.js +2 -0
  14. package/dist/interface/assets/{CameraConsole-JBD3ZmJ6.js → CameraConsole-D_Fv-MAi.js} +1 -1
  15. package/dist/interface/assets/{Cameras-R5mJGMK9.js → Cameras-Cq7Gw-fk.js} +2 -2
  16. package/dist/interface/assets/{Camview-DH6_8CxH.css → Camview-Bs2VvmUS.css} +1 -1
  17. package/dist/interface/assets/Camview-CP6PA20C.js +1 -0
  18. package/dist/interface/assets/{CertificateUpload-B9S4EOQs.js → CertificateUpload-DjzNMFc3.js} +1 -1
  19. package/dist/interface/assets/{Config-CbFl5Wcp.js → Config-Dl2TlyFe.js} +1 -1
  20. package/dist/interface/assets/{ConfigActionAssistant-DIOh6-np.js → ConfigActionAssistant-DCkJ_Iqq.js} +1 -1
  21. package/dist/interface/assets/ConfigActionCameraControl-2pzl59gR.js +1 -0
  22. package/dist/interface/assets/{ConfigActionDelay-B9i4YZjy.js → ConfigActionDelay-BAp1dr0N.js} +1 -1
  23. package/dist/interface/assets/{ConfigActionHttp-DFtxAa3U.js → ConfigActionHttp-_kqgEuun.js} +1 -1
  24. package/dist/interface/assets/{ConfigActionImageInput-CuTH4Nw2.js → ConfigActionImageInput-BgtACnCm.js} +1 -1
  25. package/dist/interface/assets/{ConfigActionMqtt-B9SfWP-G.js → ConfigActionMqtt-z7UzccW5.js} +1 -1
  26. package/dist/interface/assets/{ConfigActionNotification-BGMIByJT.js → ConfigActionNotification-bhbb5AqU.js} +1 -1
  27. package/dist/interface/assets/{ConfigActionNotificationControl-Cz72szMd.js → ConfigActionNotificationControl-BbvX8MFu.js} +1 -1
  28. package/dist/interface/assets/{ConfigActionOutput-BG6DoIRe.js → ConfigActionOutput-DdgSg3FU.js} +1 -1
  29. package/dist/interface/assets/{ConfigActionPlugin-B5oRSE9n.js → ConfigActionPlugin-DGjZd1L0.js} +1 -1
  30. package/dist/interface/assets/ConfigActionSensor-DmImWFAo.js +1 -0
  31. package/dist/interface/assets/{ConfigActionSnapshot-Di-uxMrg.js → ConfigActionSnapshot-hVHSfdtS.js} +1 -1
  32. package/dist/interface/assets/{ConfigActionVariable-BBpUti5A.js → ConfigActionVariable-BIpruwsx.js} +1 -1
  33. package/dist/interface/assets/{ConfigConditionIfElse-DjOKPXQw.js → ConfigConditionIfElse-DRSpsoR4.js} +1 -1
  34. package/dist/interface/assets/{ConfigConditionSensorState-BzvvZvD0.js → ConfigConditionSensorState-C2SNARH7.js} +1 -1
  35. package/dist/interface/assets/{ConfigConditionSwitch-DQvdfUxR.js → ConfigConditionSwitch-4SbQcU7N.js} +1 -1
  36. package/dist/interface/assets/{ConfigConditionTime-BqOElX5C.js → ConfigConditionTime-ESX3shbg.js} +1 -1
  37. package/dist/interface/assets/{ConfigSensorValueInput-BT-0LhSH.js → ConfigSensorValueInput-CTUdAA-R.js} +1 -1
  38. package/dist/interface/assets/{ConfigTriggerDetection-1OkudUah.js → ConfigTriggerDetection-BRr6ixxQ.js} +1 -1
  39. package/dist/interface/assets/{ConfigTriggerGeofence-HGatk3C5.js → ConfigTriggerGeofence-D-xRMGrT.js} +1 -1
  40. package/dist/interface/assets/{ConfigTriggerManual-DpRr_vVq.js → ConfigTriggerManual-aXD6k1qa.js} +1 -1
  41. package/dist/interface/assets/{ConfigTriggerMqtt-C_MId3BY.js → ConfigTriggerMqtt-pjHW4yOL.js} +1 -1
  42. package/dist/interface/assets/{ConfigTriggerSchedule-BmwDqd6N.js → ConfigTriggerSchedule-CYOt57qg.js} +1 -1
  43. package/dist/interface/assets/{ConfigTriggerSensor-Rgx8q4g8.js → ConfigTriggerSensor-BwJ_cAqd.js} +1 -1
  44. package/dist/interface/assets/{ConfigTriggerSystem-4VsHPmbn.js → ConfigTriggerSystem-DBXIrjzU.js} +1 -1
  45. package/dist/interface/assets/{ConfigTriggerWebhook-Bs7zEfY0.js → ConfigTriggerWebhook-CccBmMCb.js} +1 -1
  46. package/dist/interface/assets/Console-DWAaz1C6.js +1 -0
  47. package/dist/interface/assets/CuiAssistantConversation-B3xEiNNt.js +5 -0
  48. package/dist/interface/assets/{CuiAssistantConversation-BmBhwrNh.css → CuiAssistantConversation-C5ca1lgX.css} +1 -1
  49. package/dist/interface/assets/CuiAutomationRunsDialog-CfylVPLI.js +1 -0
  50. package/dist/interface/assets/CuiBottomSheet-ACN23VLS.js +1 -0
  51. package/dist/interface/assets/{CuiBottomSheet-Dd3uOtnC.js → CuiBottomSheet-DEVNeDqa.js} +1 -1
  52. package/dist/interface/assets/CuiCameraPipCard-rR_FW9zq.js +1 -0
  53. package/dist/interface/assets/CuiCameraRecordings-CnorhPhf.js +1 -0
  54. package/dist/interface/assets/CuiCameraShares-BxUgedC_.js +1 -0
  55. package/dist/interface/assets/{CuiCameraTable-C7WLZ2pA.js → CuiCameraTable-C3GB4Q2y.js} +2 -2
  56. package/dist/interface/assets/CuiCameraTable-MHfnZSyK.js +1 -0
  57. package/dist/interface/assets/CuiChartTable-TAzZgetO.js +1 -0
  58. package/dist/interface/assets/{CuiConsole-CkZML0iY.js → CuiConsole-Cf5lOCE1.js} +2 -2
  59. package/dist/interface/assets/{CuiDataTable-BFIhx1D3.js → CuiDataTable-DfjXa0C1.js} +1 -1
  60. package/dist/interface/assets/CuiLightControl-ChK-SvJp.js +1 -0
  61. package/dist/interface/assets/CuiList-C4fxd9lD.js +1 -0
  62. package/dist/interface/assets/CuiPluginCard-DMpANIQj.js +2 -0
  63. package/dist/interface/assets/CuiPluginCategoryChip-BKxJMid7.js +1 -0
  64. package/dist/interface/assets/{CuiPluginOAuthButton-BQZkTcgo.js → CuiPluginOAuthButton-DnQ838JJ.js} +2 -2
  65. package/dist/interface/assets/{CuiPluginTrustBadge-DbqdfdaL.js → CuiPluginTrustBadge-DyYDUWV6.js} +1 -1
  66. package/dist/interface/assets/{CuiQRCode-2WsWJQFi.js → CuiQRCode-S9fPi0_l.js} +1 -1
  67. package/dist/interface/assets/CuiSchema-DScmDQsh.js +1 -0
  68. package/dist/interface/assets/CuiTopNavbarItem-CT10aAlO.js +1 -0
  69. package/dist/interface/assets/Faces-Coy-tUVM.js +1 -0
  70. package/dist/interface/assets/FirstSteps-CrMJC049.js +1 -0
  71. package/dist/interface/assets/Floorplan-Bj_mVrxp.js +1 -0
  72. package/dist/interface/assets/{Floorplan-Ci63Zd8W.css → Floorplan-CT5TrMSD.css} +1 -1
  73. package/dist/interface/assets/Instances-B_mpKAng.js +1 -0
  74. package/dist/interface/assets/{Logs-DMehPk0t.js → Logs-fY1dpQk4.js} +2 -2
  75. package/dist/interface/assets/Menu-Bgi-NLdg.js +1 -0
  76. package/dist/interface/assets/Metrics-DnMeIrkf.css +1 -0
  77. package/dist/interface/assets/Metrics-k9KACiwh.js +12 -0
  78. package/dist/interface/assets/OAuthDeviceFlow-xTh83xmc.js +1 -0
  79. package/dist/interface/assets/Plugin-BB7x7UHw.css +1 -0
  80. package/dist/interface/assets/Plugin-VWq7sONB.js +1 -0
  81. package/dist/interface/assets/{PluginConsole-D1BRQCO9.js → PluginConsole-LnnDOVBL.js} +2 -2
  82. package/dist/interface/assets/PluginDetail-CKD9sbDx.js +2 -0
  83. package/dist/interface/assets/{PluginSchema-B9VsBHOU.js → PluginSchema-BnB0_6Sk.js} +1 -1
  84. package/dist/interface/assets/PluginSearch-BoBZLLbr.js +1 -0
  85. package/dist/interface/assets/PluginSearch-kGhweU1J.js +2 -0
  86. package/dist/interface/assets/{PluginUpdateProgress-uj0XPV-_.js → PluginUpdateProgress-DMx0QlgE.js} +1 -1
  87. package/dist/interface/assets/{Plugins-CPx9Hszm.js → Plugins-Ekmr6aVa.js} +1 -1
  88. package/dist/interface/assets/RecentEventsFilter-StLJNuks.js +1 -0
  89. package/dist/interface/assets/Recordings-8PqxJOI3.css +1 -0
  90. package/dist/interface/assets/Recordings-Bvkuk_TV.js +1 -0
  91. package/dist/interface/assets/SensorEdit-CAf9Nb01.js +1 -0
  92. package/dist/interface/assets/SensorHistory-il8bDErX.js +1 -0
  93. package/dist/interface/assets/Sensors-sxQ6HLKo.js +2 -0
  94. package/dist/interface/assets/Settings-Bu0G7Ebx.js +1 -0
  95. package/dist/interface/assets/{Settings-D7495zbV.css → Settings-DtCSaLPb.css} +1 -1
  96. package/dist/interface/assets/SettingsAccount-8OZJLQi-.js +1 -0
  97. package/dist/interface/assets/SettingsAccount-bSfFi9YH.js +1 -0
  98. package/dist/interface/assets/SettingsAppearance-CnvN_Tzr.js +1 -0
  99. package/dist/interface/assets/SettingsAppearance-EvPWgF4c.js +1 -0
  100. package/dist/interface/assets/SettingsAssistant-B6s6pHCx.js +1 -0
  101. package/dist/interface/assets/SettingsBackup-Dd2FaUcN.js +1 -0
  102. package/dist/interface/assets/SettingsList-SvCO_gfG.js +1 -0
  103. package/dist/interface/assets/SettingsMqtt-BXBzHX84.js +1 -0
  104. package/dist/interface/assets/SettingsNotifications-CV-jJwFV.js +1 -0
  105. package/dist/interface/assets/SettingsPermissions-GchFaWjz.js +1 -0
  106. package/dist/interface/assets/SettingsRecordings-C4Ch_jmV.js +1 -0
  107. package/dist/interface/assets/SettingsRemote-OZHDJKSq.js +2 -0
  108. package/dist/interface/assets/SettingsSystem-BJlHXwVs.js +2 -0
  109. package/dist/interface/assets/SettingsUsers-RGOkOzx0.js +1 -0
  110. package/dist/interface/assets/Terminal-DX-ECC91.js +4 -0
  111. package/dist/interface/assets/Training-B8my7vka.js +1 -0
  112. package/dist/interface/assets/Training-D1DDjCCD.css +1 -0
  113. package/dist/interface/assets/Updates-DmavyhAn.js +2 -0
  114. package/dist/interface/assets/{VariableInput-CcILik4M.js → VariableInput-DQJle67Y.js} +1 -1
  115. package/dist/interface/assets/{VariableSuggestions-Bj0HdrYW.js → VariableSuggestions-D8V739dF.js} +1 -1
  116. package/dist/interface/assets/{VersionsHandler-BA8Lcysg.js → VersionsHandler-B41TJhgY.js} +1 -1
  117. package/dist/interface/assets/{VirtualSensorCreate-DvHyw7I2.js → VirtualSensorCreate-MfLh-LpH.js} +1 -1
  118. package/dist/interface/assets/Workers-CafDeRhH.js +2 -0
  119. package/dist/interface/assets/api-By0v6EeA.css +2 -0
  120. package/dist/interface/assets/api-D1iULsSy.js +4 -0
  121. package/dist/interface/assets/{api-CKbL5jC7.js → api-DbUdfXO_.js} +1 -1
  122. package/dist/interface/assets/{assistant-CwmHp5bB.js → assistant-7hqP6OpA.js} +1 -1
  123. package/dist/interface/assets/{auth-AfZrkJ2f.js → auth-CDxrn7fe.js} +1 -1
  124. package/dist/interface/assets/{automations-DOCG0q8-.js → automations-CTTQlGCW.js} +1 -1
  125. package/dist/interface/assets/{cameraSources-mHEz9ROa.js → cameraSources-MOiE_1-W.js} +1 -1
  126. package/dist/interface/assets/cloudHandoff-CJzFH7CW.js +1 -0
  127. package/dist/interface/assets/{config-AG0SnOiY.js → config-6EiGxiYm.js} +1 -1
  128. package/dist/interface/assets/eventLabels-idFWh3Y_.js +1 -0
  129. package/dist/interface/assets/{flowSchema-B0d3VjU7.js → flowSchema-Dp_-p9WA.js} +1 -1
  130. package/dist/interface/assets/{intercomService-DG3EeZ6s.js → intercomService-BQYzjnAi.js} +1 -1
  131. package/dist/interface/assets/main-0oXl_8v7.js +3 -0
  132. package/dist/interface/assets/main-CdvAniEp.css +1 -0
  133. package/dist/interface/assets/mqtt-ChvXxMhR.js +1 -0
  134. package/dist/interface/assets/{notifications-8FH4ApEz.js → notifications-CbL-1oMs.js} +1 -1
  135. package/dist/interface/assets/{plugins-2JLUEMYc.js → plugins-lsoAntRQ.js} +1 -1
  136. package/dist/interface/assets/{rooms-DoAfzA8W.js → rooms-P8WrRIco.js} +1 -1
  137. package/dist/interface/assets/sensorIcons-BRTtoaHX.js +1 -0
  138. package/dist/interface/assets/{sensorSlots-biaL-O8E.js → sensorSlots-BTj-IM7z.js} +1 -1
  139. package/dist/interface/assets/{sensors-DyAMdS-H.js → sensors-Dxc7HgjZ.js} +1 -1
  140. package/dist/interface/assets/{server-BDRUGj61.js → server-DlK8gUoE.js} +1 -1
  141. package/dist/interface/assets/{theme-CLxrnR60.js → theme-BOppzzar.js} +1 -1
  142. package/dist/interface/assets/types-CeruGCb8.js +1 -0
  143. package/dist/interface/assets/{types-8JXzkoC8.js → types-J1Drrxo1.js} +1 -1
  144. package/dist/interface/assets/types-U4AuTNLR.js +1 -0
  145. package/dist/interface/assets/ungrouped-ING_JAuK.js +1 -0
  146. package/dist/interface/assets/{updates-F-veEP1I.js → updates-DtVp84Y0.js} +1 -1
  147. package/dist/interface/assets/{useAppVersion-BjUQmB7M.js → useAppVersion-BGgCk5GD.js} +1 -1
  148. package/dist/interface/assets/{useAssistantActions-CNEJol4o.js → useAssistantActions-C13O5EHU.js} +1 -1
  149. package/dist/interface/assets/useBackupRestore-vrhmc9i-.js +1 -0
  150. package/dist/interface/assets/{useCameraOptions-D_oduve2.js → useCameraOptions-CI1baRmm.js} +1 -1
  151. package/dist/interface/assets/{useKeyboardInset-CPWSVYlA.js → useKeyboardInset-CvgJp091.js} +1 -1
  152. package/dist/interface/assets/{useLogsSocket-B_jXUqv8.js → useLogsSocket-Bf0BI8ET.js} +1 -1
  153. package/dist/interface/assets/{useNavLayout-DEngIIeU.js → useNavLayout-6zM1Y-7B.js} +1 -1
  154. package/dist/interface/assets/{usePermissions-DAO92InI.js → usePermissions-DZitFsBQ.js} +1 -1
  155. package/dist/interface/assets/{usePluginUpdates-CJi8Y_wl.js → usePluginUpdates-VZdpJ_Ax.js} +1 -1
  156. package/dist/interface/assets/{usePushRegistration-j9WCeFbv.js → usePushRegistration-vcbMrTxZ.js} +1 -1
  157. package/dist/interface/assets/{useServerRestart-BVks5tuC.js → useServerRestart-DrpuNbIu.js} +1 -1
  158. package/dist/interface/assets/{useStreamStatus-DQ0NSyU8.js → useStreamStatus-l3Pfk1H4.js} +1 -1
  159. package/dist/interface/assets/{useTabSwipe-CVq7EcIY.js → useTabSwipe-BSpi25WV.js} +1 -1
  160. package/dist/interface/assets/{useUpdateChannel-C0fjDvNP.js → useUpdateChannel-kAl-5UNY.js} +1 -1
  161. package/dist/interface/assets/{useUpdatesSocket-DXKF9hzc.js → useUpdatesSocket-CaFz_fEb.js} +1 -1
  162. package/dist/interface/assets/{useUserOptions-UjMeAL5n.js → useUserOptions-BKteXnmU.js} +1 -1
  163. package/dist/interface/assets/vendor-cameraui-K1Nw4PvF.js +2326 -0
  164. package/dist/interface/assets/vendor-core-CJdfpB0I.js +1 -0
  165. package/dist/interface/assets/{vendor-primevue-Zx6t06A4.js → vendor-primevue-DoA2Rwcb.js} +871 -871
  166. package/dist/interface/assets/walk-B8FNhXuj.js +1 -0
  167. package/dist/interface/ha/{404-D5gfy0Cd.js → 404-RtgPpD9N.js} +1 -1
  168. package/dist/interface/ha/{About-JzlpCzBN.js → About-0PRv9bU0.js} +4 -4
  169. package/dist/interface/ha/{Assistant-DgOfGesf.js → Assistant-DbwxVfpl.js} +1021 -1021
  170. package/dist/interface/ha/{Automation-BDaWYiBu.js → Automation-D3HomdH7.js} +159 -155
  171. package/dist/interface/ha/{AutomationImport-BNB_PJ9R.js → AutomationImport-nQUUvZcv.js} +6 -6
  172. package/dist/interface/ha/{AutomationStore-_TeOt1wz.js → AutomationStore-BXDD92wZ.js} +8 -8
  173. package/dist/interface/ha/{AutomationStoreDetail-jjIEZoRi.js → AutomationStoreDetail-BYeq7FID.js} +19 -19
  174. package/dist/interface/ha/{Automations-DM6FEVOw.js → Automations-CJlGqmSP.js} +74 -74
  175. package/dist/interface/ha/Camera-Ai4BxVh_.js +747 -0
  176. package/dist/interface/ha/{CameraConsole-BoVql05l.js → CameraConsole-UMNOX3dE.js} +4 -4
  177. package/dist/interface/ha/{Cameras-cQBGvXq7.js → Cameras-BW-AEXYi.js} +266 -266
  178. package/dist/interface/ha/{Camview-mkG5FXZM.js → Camview-jikpVEE0.js} +195 -194
  179. package/dist/interface/ha/{Config-BNPDzo_h.js → Config-BOxwBH2D.js} +111 -111
  180. package/dist/interface/ha/{ConfigActionAssistant-C-8P3DYz.js → ConfigActionAssistant--3iWk9sq.js} +4 -4
  181. package/dist/interface/ha/{ConfigActionCameraControl-x1ksGL7m.js → ConfigActionCameraControl-DbVXWTeA.js} +3 -3
  182. package/dist/interface/ha/{ConfigActionHttp-DzCJp85z.js → ConfigActionHttp-Du3n2Yj0.js} +2 -2
  183. package/dist/interface/ha/{ConfigActionImageInput-C5C5U_2z.js → ConfigActionImageInput-BrJrTZTY.js} +4 -4
  184. package/dist/interface/ha/{ConfigActionMqtt-T29xb75r.js → ConfigActionMqtt-DZd1BNUt.js} +4 -4
  185. package/dist/interface/ha/{ConfigActionNotification-BcnyilF9.js → ConfigActionNotification-CJWW10gt.js} +3 -3
  186. package/dist/interface/ha/{ConfigActionNotificationControl-D3wIVKuU.js → ConfigActionNotificationControl-Bl41AVv1.js} +2 -2
  187. package/dist/interface/ha/{ConfigActionOutput-hD-yVczw.js → ConfigActionOutput-OTj7Lwgq.js} +1 -1
  188. package/dist/interface/ha/{ConfigActionPlugin-Bz1O-O4Q.js → ConfigActionPlugin-B790PEk0.js} +8 -8
  189. package/dist/interface/ha/{ConfigActionSensor-FOz-PYl_.js → ConfigActionSensor-BG3jZxge.js} +5 -5
  190. package/dist/interface/ha/{ConfigActionSnapshot-CmxEOuK1.js → ConfigActionSnapshot-fGmLl6jb.js} +2 -2
  191. package/dist/interface/ha/{ConfigActionVariable-BCvkrdCh.js → ConfigActionVariable-CK3vYDsr.js} +1 -1
  192. package/dist/interface/ha/{ConfigConditionIfElse-icfTG9OA.js → ConfigConditionIfElse-DyFLGg3y.js} +3 -3
  193. package/dist/interface/ha/{ConfigConditionSensorState-ClUAsm0d.js → ConfigConditionSensorState-BUTfeFO2.js} +7 -7
  194. package/dist/interface/ha/{ConfigConditionSwitch-C8AMCkn6.js → ConfigConditionSwitch-iDG_ubif.js} +5 -5
  195. package/dist/interface/ha/{ConfigSensorValueInput-ChvDQzGd.js → ConfigSensorValueInput-BmRIGUKB.js} +5 -5
  196. package/dist/interface/ha/{ConfigTriggerDetection-aUSyaClu.js → ConfigTriggerDetection-DyPQGt9M.js} +24 -24
  197. package/dist/interface/ha/{ConfigTriggerGeofence-DsJeJWP4.js → ConfigTriggerGeofence-CGE-bH_t.js} +6 -6
  198. package/dist/interface/ha/{ConfigTriggerMqtt-CsAxA7QZ.js → ConfigTriggerMqtt-CM3KZqBc.js} +1 -1
  199. package/dist/interface/ha/{ConfigTriggerSensor-CTxr9cfU.js → ConfigTriggerSensor-DoHMcwP4.js} +1 -1
  200. package/dist/interface/ha/{ConfigTriggerSystem-C8UEfpfs.js → ConfigTriggerSystem-BYKbW4Zr.js} +2 -2
  201. package/dist/interface/ha/{ConfigTriggerWebhook-frEE-SCB.js → ConfigTriggerWebhook-5PBAadG8.js} +2 -2
  202. package/dist/interface/ha/{Console-A3VtbsLg.js → Console-BEXzl4p1.js} +7 -7
  203. package/dist/interface/ha/{CuiAutomationRunsDialog-BlJvhBiX.js → CuiAutomationRunsDialog-DkK_ar5G.js} +3 -3
  204. package/dist/interface/ha/{CuiBottomSheet-Cu-t3H0Z.js → CuiBottomSheet-CYNvQV4T.js} +2 -2
  205. package/dist/interface/ha/{CuiCameraRecordings-R5ArEmqJ.js → CuiCameraRecordings-DYjecmE_.js} +30 -48
  206. package/dist/interface/ha/{CuiCameraShares-B9pfRkM4.js → CuiCameraShares-C0H60nZS.js} +7 -7
  207. package/dist/interface/ha/{CuiCameraTable-CKjGKaMC.js → CuiCameraTable-CQNMyBaq.js} +5 -5
  208. package/dist/interface/ha/{CuiChartTable-BxWjRe-k.js → CuiChartTable-Bhv1p9zj.js} +1161 -1161
  209. package/dist/interface/ha/{CuiConsole-C5fzsR7t.js → CuiConsole-DtXorGF5.js} +20 -20
  210. package/dist/interface/ha/{CuiDataTable-BOdQDY8J.js → CuiDataTable-Cy8EjCk9.js} +7 -7
  211. package/dist/interface/ha/{CuiList-CU2NJ1K6.js → CuiList-DnW6Q5m2.js} +1 -1
  212. package/dist/interface/ha/{CuiPluginCard-BT71RRAD.js → CuiPluginCard-B4SCUblV.js} +125 -125
  213. package/dist/interface/ha/{CuiPluginOAuthButton-moh9uS7G.js → CuiPluginOAuthButton-BKg9SftQ.js} +5 -5
  214. package/dist/interface/ha/{CuiPluginTrustBadge-F_pVWkPJ.js → CuiPluginTrustBadge-CEtUJhCJ.js} +1 -1
  215. package/dist/interface/ha/{CuiQRCode-BNuj-nJ4.js → CuiQRCode-gp-9hqyk.js} +7 -7
  216. package/dist/interface/ha/{CuiSchema-Cb_8Ks-I.js → CuiSchema-CYpr_dD7.js} +161 -161
  217. package/dist/interface/ha/{CuiTopNavbarItem-BGzrrTls.js → CuiTopNavbarItem-CM-1oPxf.js} +1 -1
  218. package/dist/interface/ha/Faces-pa60ySng.js +1575 -0
  219. package/dist/interface/ha/{FirstSteps-BFX0-EEi.js → FirstSteps-D42yZm7R.js} +68 -68
  220. package/dist/interface/ha/{Floorplan-D6MGqSJT.js → Floorplan-BvE546pE.js} +512 -511
  221. package/dist/interface/ha/{Instances-CHzIUyyA.js → Instances-CAGCyfbB.js} +64 -64
  222. package/dist/interface/ha/{Logs-DZKM3dWv.js → Logs-RB3Ba8WM.js} +12 -12
  223. package/dist/interface/ha/{Menu-BQz4dfQi.js → Menu-hAnHu_jq.js} +17 -17
  224. package/dist/interface/ha/{Metrics-CdpWJ1mm.js → Metrics-ChYTebkX.js} +94 -93
  225. package/dist/interface/ha/{OAuthDeviceFlow-DUELtx3X.js → OAuthDeviceFlow-C05pH-9o.js} +3 -3
  226. package/dist/interface/ha/{Plugin-5bbTF0Rv.js → Plugin-D7XwcXkW.js} +647 -439
  227. package/dist/interface/ha/{PluginConsole-C__0lzsS.js → PluginConsole-DphEIOlL.js} +4 -4
  228. package/dist/interface/ha/{PluginDetail-Blrktk9W.js → PluginDetail-DfMl-yCl.js} +9 -9
  229. package/dist/interface/ha/{PluginSearch-BKbdwHQ1.js → PluginSearch-BPN4Opg5.js} +34 -34
  230. package/dist/interface/ha/{PluginUpdateProgress-IsNiecu3.js → PluginUpdateProgress-ByJ0R5sW.js} +3 -3
  231. package/dist/interface/ha/{Plugins-CC2Dwlx5.js → Plugins-BhKmjjNn.js} +59 -59
  232. package/dist/interface/ha/{RecentEventsFilter-9ZkDHD1g.js → RecentEventsFilter-BkLMlGVJ.js} +5 -6
  233. package/dist/interface/ha/Recordings-BaU7M1OW.js +1836 -0
  234. package/dist/interface/ha/{SensorEdit-Bi2Yx_ji.js → SensorEdit-DWxcCJ0F.js} +88 -88
  235. package/dist/interface/ha/{SensorHistory-sqG_6eav.js → SensorHistory-DuA9E9wT.js} +2 -2
  236. package/dist/interface/ha/{Sensors-DLtOh1p4.js → Sensors-CVpIHcgG.js} +438 -435
  237. package/dist/interface/ha/{Settings-DI3_zenm.js → Settings-BO2eBGEn.js} +61 -61
  238. package/dist/interface/ha/{SettingsAccount-pS86Qyr-.js → SettingsAccount-BQZZfoSM.js} +255 -255
  239. package/dist/interface/ha/{SettingsAppearance-tS3bubKQ.js → SettingsAppearance-B_yGl89u.js} +16 -16
  240. package/dist/interface/ha/{SettingsAssistant-LejCRXsF.js → SettingsAssistant-kMOixl9g.js} +501 -501
  241. package/dist/interface/ha/{SettingsBackup-CkhD1Kze.js → SettingsBackup-BpG-W4j-.js} +24 -24
  242. package/dist/interface/ha/{SettingsList-bibwvPSM.js → SettingsList-Btnkzu94.js} +6 -6
  243. package/dist/interface/ha/{SettingsMqtt-DSt0B4Qg.js → SettingsMqtt-C4DX9cNC.js} +23 -23
  244. package/dist/interface/ha/{SettingsNotifications-BF7ajNwE.js → SettingsNotifications-DI6ImggH.js} +6 -6
  245. package/dist/interface/ha/{SettingsPermissions-Jh0FuIF7.js → SettingsPermissions-BCDyCFcb.js} +2 -2
  246. package/dist/interface/ha/{SettingsRecordings-BTIdncxg.js → SettingsRecordings-Bq5NkJhd.js} +10 -10
  247. package/dist/interface/ha/{SettingsRemote-Cba4P1-O.js → SettingsRemote-CtncaPIA.js} +308 -308
  248. package/dist/interface/ha/{SettingsSystem-_Nnh2ZF5.js → SettingsSystem-BJXuA7xA.js} +11 -11
  249. package/dist/interface/ha/{SettingsUsers-BfHFoxJi.js → SettingsUsers-BF0rDluv.js} +91 -91
  250. package/dist/interface/ha/{Terminal-Dv_7oWmS.js → Terminal-kTCe2jP3.js} +11 -11
  251. package/dist/interface/ha/Training-BM2Xb8Ef.js +1754 -0
  252. package/dist/interface/ha/{Updates-BHl5H7zE.js → Updates-Cv1EY_T0.js} +6 -6
  253. package/dist/interface/ha/{VariableInput-DtLo7-Nw.js → VariableInput-BO2zZu4N.js} +1 -1
  254. package/dist/interface/ha/{VersionsHandler-CF0DSeol.js → VersionsHandler-CRnT9-K7.js} +10 -10
  255. package/dist/interface/ha/{VirtualSensorCreate-C907EgIz.js → VirtualSensorCreate-6dVRxPjw.js} +8 -8
  256. package/dist/interface/ha/{Workers-Dz1d9gEQ.js → Workers-MHia86lu.js} +97 -97
  257. package/dist/interface/ha/{api-DUqpDJ2N.js → api-CH_Y8Hee.js} +17459 -14633
  258. package/dist/interface/ha/{api-gId1nlMj.js → api-DylRa66V.js} +3 -3
  259. package/dist/interface/ha/{assistant-BaR65gIY.js → assistant-smRQYA6p.js} +53 -53
  260. package/dist/interface/ha/{auth-Btsz_KxO.js → auth-BXj5Fm6s.js} +38 -38
  261. package/dist/interface/ha/{automationBlueprint-CuO3iOiM.js → automationBlueprint-DGjftXFC.js} +4 -4
  262. package/dist/interface/ha/cameraui-cards.js +1 -1
  263. package/dist/interface/ha/{cards-DWhezIPP.js → cards-E0zw1UVg.js} +114 -113
  264. package/dist/interface/ha/{config-BKStpoEQ.js → config-dG_DA6XL.js} +16 -16
  265. package/dist/interface/ha/{dist-CM7R4_Gj.js → dist-BQf9ANPx.js} +77 -77
  266. package/dist/interface/ha/{dist-BIngHzHx.js → dist-euRmladF.js} +4 -4
  267. package/dist/interface/ha/{eventIcons-BFNUgeGr.js → eventLabels-B5GrM5jO.js} +291 -233
  268. package/dist/interface/ha/{intercomService-B7HkLs6z.js → intercomService-BtJ_zUNd.js} +250 -264
  269. package/dist/interface/ha/{mqtt-ajcSmTB-.js → mqtt-CP3vVkRJ.js} +12 -12
  270. package/dist/interface/ha/{notifications-Cf9dXHEO.js → notifications-CZNwSXTg.js} +22 -22
  271. package/dist/interface/ha/{pinia-DIKO5lnE.js → pinia-CVnHHb-s.js} +533 -501
  272. package/dist/interface/ha/{plugins-ml823dJV.js → plugins--eatOIaI.js} +66 -66
  273. package/dist/interface/ha/{protocol-BB4jdtUC-DW3jl2tV.js → protocol-BB4jdtUC-BhEwymva.js} +129 -48
  274. package/dist/interface/ha/{rooms-C5gUErBi.js → rooms-D5E6K75d.js} +8 -8
  275. package/dist/interface/ha/{server-dArenpJI.js → server-D1BqEY7i.js} +31 -31
  276. package/dist/interface/ha/{types-DYymuACA.js → types-CWogEoya.js} +36 -36
  277. package/dist/interface/ha/ungrouped-Ch4UX4dy.js +58 -0
  278. package/dist/interface/ha/{updates-D5sFzGtC.js → updates-B48Owi1w.js} +28 -28
  279. package/dist/interface/ha/{useAppVersion-C5x3Ap4_.js → useAppVersion-D95sKTJR.js} +2 -2
  280. package/dist/interface/ha/{useAssistantActions-S1FrNe9b.js → useAssistantActions-kDwiO-u5.js} +1 -1
  281. package/dist/interface/ha/{useKeyboardInset-Cj0T2AFX.js → useKeyboardInset-C2R51vsC.js} +1 -1
  282. package/dist/interface/ha/{useLogsSocket-DtvfQlPh.js → useLogsSocket-BzNWa2y2.js} +1 -1
  283. package/dist/interface/ha/{useNavLayout-HSFBA4JV.js → useNavLayout-228cwwqA.js} +19 -19
  284. package/dist/interface/ha/{usePermissions-DaE_wFch.js → usePermissions-CfA5x7Df.js} +1 -1
  285. package/dist/interface/ha/{useServerRestart-Ci0SppGW.js → useServerRestart-B0c40zs5.js} +1 -1
  286. package/dist/interface/ha/{useTabSwipe-CPKkRmaH.js → useTabSwipe-CfZg5hWj.js} +2 -2
  287. package/dist/interface/ha/{useUpdateChannel-CXHHovK3.js → useUpdateChannel-DQxI7FrD.js} +2 -2
  288. package/dist/interface/ha/{useUpdatesSocket-DVST2YXV.js → useUpdatesSocket-B8LqBBd3.js} +1 -1
  289. package/dist/interface/ha/{useUserOptions-BYcYI6QA.js → useUserOptions-dZf6ejlz.js} +1 -1
  290. package/dist/interface/ha/walk-CsSXaeJw.js +33 -0
  291. package/dist/interface/index.html +35 -36
  292. package/dist/interface/sw.js +1 -1
  293. package/dist/interface/workbox-5f52ac45.js +1 -0
  294. package/dist/server/package.json +11 -11
  295. package/dist/server/requirements.txt +2 -2
  296. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/__init__.py +22 -0
  297. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/config.py +4 -0
  298. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/__init__.py +10 -0
  299. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/contract.py +6 -0
  300. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/interfaces.py +92 -4
  301. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/__init__.py +16 -0
  302. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/base.py +4 -0
  303. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/face_embedder.py +1 -1
  304. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/object.py +3 -3
  305. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/person_embedder.py +65 -0
  306. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/segmenter.py +81 -0
  307. package/dist/server/src/api/database/index.d.ts +2 -1
  308. package/dist/server/src/api/database/index.js +31 -7
  309. package/dist/server/src/api/database/index.js.map +1 -1
  310. package/dist/server/src/api/database/migrations/v2-2-9.d.ts +3 -0
  311. package/dist/server/src/api/database/migrations/v2-2-9.js +28 -0
  312. package/dist/server/src/api/database/migrations/v2-2-9.js.map +1 -0
  313. package/dist/server/src/api/database/record-schemas.d.ts +1 -1
  314. package/dist/server/src/api/database/types.d.ts +17 -1
  315. package/dist/server/src/api/schemas/assistant.schema.d.ts +1 -1
  316. package/dist/server/src/api/schemas/cameras.schema.d.ts +140 -76
  317. package/dist/server/src/api/schemas/cameras.schema.js +4 -2
  318. package/dist/server/src/api/schemas/cameras.schema.js.map +1 -1
  319. package/dist/server/src/api/schemas/training.schema.d.ts +15 -3
  320. package/dist/server/src/api/schemas/training.schema.js +4 -1
  321. package/dist/server/src/api/schemas/training.schema.js.map +1 -1
  322. package/dist/server/src/api/websocket/nsp/worker-perf.js +2 -0
  323. package/dist/server/src/api/websocket/nsp/worker-perf.js.map +1 -1
  324. package/dist/server/src/api/websocket/types.d.ts +1 -0
  325. package/dist/server/src/assistant/search.d.ts +17 -0
  326. package/dist/server/src/assistant/search.js +10 -2
  327. package/dist/server/src/assistant/search.js.map +1 -1
  328. package/dist/server/src/assistant/tools/plugins.js +7 -3
  329. package/dist/server/src/assistant/tools/plugins.js.map +1 -1
  330. package/dist/server/src/assistant/types.d.ts +2 -0
  331. package/dist/server/src/automations/actions/plugin.js +5 -9
  332. package/dist/server/src/automations/actions/plugin.js.map +1 -1
  333. package/dist/server/src/automations/pluginMethodRegistry.d.ts +6 -0
  334. package/dist/server/src/automations/pluginMethodRegistry.js +39 -0
  335. package/dist/server/src/automations/pluginMethodRegistry.js.map +1 -1
  336. package/dist/server/src/automations/segment-picture.d.ts +16 -0
  337. package/dist/server/src/automations/segment-picture.js +152 -0
  338. package/dist/server/src/automations/segment-picture.js.map +1 -0
  339. package/dist/server/src/camera/decoder/detection-coordinator.d.ts +5 -2
  340. package/dist/server/src/camera/decoder/detection-coordinator.js +45 -22
  341. package/dist/server/src/camera/decoder/detection-coordinator.js.map +1 -1
  342. package/dist/server/src/camera/decoder/detection-pipeline.d.ts +30 -2
  343. package/dist/server/src/camera/decoder/detection-pipeline.js +81 -21
  344. package/dist/server/src/camera/decoder/detection-pipeline.js.map +1 -1
  345. package/dist/server/src/camera/decoder/event-manager.d.ts +12 -2
  346. package/dist/server/src/camera/decoder/event-manager.js +77 -75
  347. package/dist/server/src/camera/decoder/event-manager.js.map +1 -1
  348. package/dist/server/src/camera/decoder/event-trace.d.ts +41 -1
  349. package/dist/server/src/camera/decoder/event-trace.js +63 -8
  350. package/dist/server/src/camera/decoder/event-trace.js.map +1 -1
  351. package/dist/server/src/camera/decoder/face-tracks.d.ts +26 -0
  352. package/dist/server/src/camera/decoder/face-tracks.js +199 -0
  353. package/dist/server/src/camera/decoder/face-tracks.js.map +1 -0
  354. package/dist/server/src/camera/decoder/frame-scaler.d.ts +3 -1
  355. package/dist/server/src/camera/decoder/frame-scaler.js +36 -8
  356. package/dist/server/src/camera/decoder/frame-scaler.js.map +1 -1
  357. package/dist/server/src/camera/decoder/nvr-sink.d.ts +6 -0
  358. package/dist/server/src/camera/decoder/nvr-sink.js +1 -1
  359. package/dist/server/src/camera/decoder/nvr-sink.js.map +1 -1
  360. package/dist/server/src/camera/decoder/perf-tracker.d.ts +2 -0
  361. package/dist/server/src/camera/decoder/perf-tracker.js +4 -0
  362. package/dist/server/src/camera/decoder/perf-tracker.js.map +1 -1
  363. package/dist/server/src/camera/decoder/ptz/autotracker.d.ts +6 -1
  364. package/dist/server/src/camera/decoder/ptz/autotracker.js +107 -25
  365. package/dist/server/src/camera/decoder/ptz/autotracker.js.map +1 -1
  366. package/dist/server/src/camera/decoder/secondary-stage.d.ts +10 -8
  367. package/dist/server/src/camera/decoder/secondary-stage.js +145 -125
  368. package/dist/server/src/camera/decoder/secondary-stage.js.map +1 -1
  369. package/dist/server/src/camera/decoder/training-sink.d.ts +5 -2
  370. package/dist/server/src/camera/decoder/training-sink.js +30 -6
  371. package/dist/server/src/camera/decoder/training-sink.js.map +1 -1
  372. package/dist/server/src/camera/decoder/types.d.ts +6 -2
  373. package/dist/server/src/camera/decoder/types.js +4 -2
  374. package/dist/server/src/camera/decoder/types.js.map +1 -1
  375. package/dist/server/src/manager/trainingCandidateManager.d.ts +2 -1
  376. package/dist/server/src/manager/trainingCandidateManager.js +25 -3
  377. package/dist/server/src/manager/trainingCandidateManager.js.map +1 -1
  378. package/dist/server/src/manager/trainingSubmission.d.ts +5 -0
  379. package/dist/server/src/manager/trainingSubmission.js +73 -0
  380. package/dist/server/src/manager/trainingSubmission.js.map +1 -0
  381. package/dist/server/src/manager/types.d.ts +8 -2
  382. package/dist/server/src/manager/types.js.map +1 -1
  383. package/dist/server/src/plugins/runtime/python/proxy/sensor.py +2 -0
  384. package/dist/server/src/remote/api/routes/train.d.ts +44 -3
  385. package/dist/server/src/remote/api/routes/train.js +2 -2
  386. package/dist/server/src/remote/api/routes/train.js.map +1 -1
  387. package/dist/server/src/rpc/interfaces/core.d.ts +6 -2
  388. package/dist/server/src/rpc/interfaces/detection.d.ts +20 -3
  389. package/dist/server/src/rpc/server.d.ts +2 -0
  390. package/dist/server/src/rpc/server.js +8 -5
  391. package/dist/server/src/rpc/server.js.map +1 -1
  392. package/dist/server/src/sensors/registry.d.ts +1 -0
  393. package/dist/server/src/sensors/registry.js +20 -11
  394. package/dist/server/src/sensors/registry.js.map +1 -1
  395. package/dist/server/src/sensors/types.d.ts +1 -0
  396. package/dist/server/src/sensors/types.js +3 -0
  397. package/dist/server/src/sensors/types.js.map +1 -1
  398. package/dist/server/src/services/config/index.d.ts +1 -0
  399. package/dist/server/src/services/config/index.js +2 -0
  400. package/dist/server/src/services/config/index.js.map +1 -1
  401. package/dist/server/src/utils/image.d.ts +6 -0
  402. package/dist/server/src/utils/image.js +58 -22
  403. package/dist/server/src/utils/image.js.map +1 -1
  404. package/npm-shrinkwrap.json +115 -74
  405. package/package.json +11 -11
  406. package/dist/interface/assets/About-DBOS1rfw.js +0 -1
  407. package/dist/interface/assets/Assistant-BQ6Ld-bt.css +0 -1
  408. package/dist/interface/assets/Assistant-BRcHj8hq.js +0 -1
  409. package/dist/interface/assets/Automation-C0Emde7z.js +0 -3
  410. package/dist/interface/assets/AutomationStore-C2G0Bk8c.js +0 -2
  411. package/dist/interface/assets/Automations-D-vfqRnZ.js +0 -2
  412. package/dist/interface/assets/Camera-BpurrgAr.js +0 -2
  413. package/dist/interface/assets/Camera-D0B7yyVD.css +0 -1
  414. package/dist/interface/assets/Camview-IbOVRx20.js +0 -1
  415. package/dist/interface/assets/ConfigActionCameraControl-Bw_egtpP.js +0 -1
  416. package/dist/interface/assets/ConfigActionSensor-BErRRYfl.js +0 -1
  417. package/dist/interface/assets/Console-oCuuVKET.js +0 -1
  418. package/dist/interface/assets/CuiAssistantConversation-Bsyxau9v.js +0 -5
  419. package/dist/interface/assets/CuiAutomationRunsDialog-sRh_K6JI.js +0 -1
  420. package/dist/interface/assets/CuiBottomSheet-DWoSHzC7.js +0 -1
  421. package/dist/interface/assets/CuiCameraPipCard-D6REm8uT.js +0 -1
  422. package/dist/interface/assets/CuiCameraRecordings-C2tvrbbw.js +0 -1
  423. package/dist/interface/assets/CuiCameraShares-jrrUEHoZ.js +0 -1
  424. package/dist/interface/assets/CuiCameraTable-BOzTWLwd.js +0 -1
  425. package/dist/interface/assets/CuiChartTable-BYrIX7LV.js +0 -1
  426. package/dist/interface/assets/CuiLightControl-DitIWqUr.js +0 -1
  427. package/dist/interface/assets/CuiList-BewTNr2X.js +0 -1
  428. package/dist/interface/assets/CuiPluginCard-Bd2HFduI.js +0 -2
  429. package/dist/interface/assets/CuiPluginCategoryChip-DlzOwRgc.js +0 -1
  430. package/dist/interface/assets/CuiSchema-BL0QZmP2.js +0 -1
  431. package/dist/interface/assets/CuiTopNavbarItem-Ti2TueU1.js +0 -1
  432. package/dist/interface/assets/Faces-DARrGLXf.js +0 -1
  433. package/dist/interface/assets/FirstSteps-DBYPBvGr.js +0 -1
  434. package/dist/interface/assets/Floorplan-BaZvzoyv.js +0 -1
  435. package/dist/interface/assets/Instances-r0xReURi.js +0 -1
  436. package/dist/interface/assets/Menu-C34RRyLd.js +0 -1
  437. package/dist/interface/assets/Metrics-BjoC71_O.js +0 -12
  438. package/dist/interface/assets/Metrics-DsHBab6t.css +0 -1
  439. package/dist/interface/assets/OAuthDeviceFlow-CdZxelf2.js +0 -1
  440. package/dist/interface/assets/Plugin-Qr_Q_Qfi.css +0 -1
  441. package/dist/interface/assets/Plugin-npx7CnwV.js +0 -1
  442. package/dist/interface/assets/PluginDetail-nwTrJmO6.js +0 -2
  443. package/dist/interface/assets/PluginSearch-CP2kQWKf.js +0 -1
  444. package/dist/interface/assets/PluginSearch-WEvbKMRs.js +0 -2
  445. package/dist/interface/assets/RecentEventsFilter-D5VSH2K1.js +0 -1
  446. package/dist/interface/assets/Recordings-BEKAn6QK.css +0 -1
  447. package/dist/interface/assets/Recordings-De6Zcv0M.js +0 -1
  448. package/dist/interface/assets/SensorEdit-SD_oHBRo.js +0 -1
  449. package/dist/interface/assets/SensorHistory-SxiLOloa.js +0 -1
  450. package/dist/interface/assets/Sensors-Djl64M-W.js +0 -2
  451. package/dist/interface/assets/Settings-CAf2reGs.js +0 -1
  452. package/dist/interface/assets/SettingsAccount-BGj5Ni91.js +0 -1
  453. package/dist/interface/assets/SettingsAccount-Dy6WC8ql.js +0 -1
  454. package/dist/interface/assets/SettingsAppearance-BGFhMlRk.js +0 -1
  455. package/dist/interface/assets/SettingsAppearance-DQzQmVzE.js +0 -1
  456. package/dist/interface/assets/SettingsAssistant-BwYVyuN3.js +0 -1
  457. package/dist/interface/assets/SettingsBackup-CVExGnOo.js +0 -1
  458. package/dist/interface/assets/SettingsList-vo7sz_MY.js +0 -1
  459. package/dist/interface/assets/SettingsMqtt-B1CuOcML.js +0 -1
  460. package/dist/interface/assets/SettingsNotifications-CCQ6eiq8.js +0 -1
  461. package/dist/interface/assets/SettingsPermissions-BlOf6HEy.js +0 -1
  462. package/dist/interface/assets/SettingsRecordings-7tTBg6m1.js +0 -1
  463. package/dist/interface/assets/SettingsRemote-DBgKmIdv.js +0 -2
  464. package/dist/interface/assets/SettingsSystem-DaFMsZpN.js +0 -2
  465. package/dist/interface/assets/SettingsUsers-DXACwVPi.js +0 -1
  466. package/dist/interface/assets/Terminal-DtGqlHbk.js +0 -4
  467. package/dist/interface/assets/Training-C-ToeAl4.css +0 -1
  468. package/dist/interface/assets/Training-Ca11D1Vj.js +0 -1
  469. package/dist/interface/assets/Updates-yenwuqnD.js +0 -2
  470. package/dist/interface/assets/Workers-Dyo44zxe.js +0 -2
  471. package/dist/interface/assets/api-CHQlxVtZ.css +0 -2
  472. package/dist/interface/assets/api-CLazgL-g.js +0 -4
  473. package/dist/interface/assets/cloudHandoff-zJCrDmwk.js +0 -1
  474. package/dist/interface/assets/eventIcons-C3JWChgS.js +0 -1
  475. package/dist/interface/assets/eventLabels-BsPoPWS9.js +0 -1
  476. package/dist/interface/assets/main-CGY9cVyi.css +0 -1
  477. package/dist/interface/assets/main-DkHV6YgB.js +0 -3
  478. package/dist/interface/assets/mqtt-DE2VbNdt.js +0 -1
  479. package/dist/interface/assets/sensorIcons-BntiOPX7.js +0 -1
  480. package/dist/interface/assets/types-B4LLKzDW.js +0 -1
  481. package/dist/interface/assets/types-a7Nw-P-m.js +0 -1
  482. package/dist/interface/assets/ungrouped-BoAbb9w3.js +0 -1
  483. package/dist/interface/assets/ungrouped-ChmBvcXp.css +0 -1
  484. package/dist/interface/assets/useBackupRestore-Biqn_lhh.js +0 -1
  485. package/dist/interface/assets/vendor-cameraui-GmMRyJ2R.js +0 -2326
  486. package/dist/interface/assets/vendor-core-BeAannbA.js +0 -1
  487. package/dist/interface/ha/Camera-sH9fRv18.js +0 -670
  488. package/dist/interface/ha/Faces-CsM5VO8Q.js +0 -1441
  489. package/dist/interface/ha/Recordings-B1XsJrzs.js +0 -1539
  490. package/dist/interface/ha/Training-CaSFA5oH.js +0 -1699
  491. package/dist/interface/ha/eventLabels-B4C1_4vT.js +0 -42
  492. package/dist/interface/ha/ungrouped-BHLAySWP.js +0 -1312
  493. package/dist/interface/workbox-778a14ff.js +0 -1
@@ -1,1539 +0,0 @@
1
- import { m as e, p as t } from "./ripple-ZDATPc2w.js";
2
- import { D as n, G as r, H as i, Jt as a, U as o, Wt as s, Y as c, _t as l, d as u, f as d, gt as f, kt as p, l as m, lt as h, o as g, ot as _, p as v, qt as y, r as b, rt as x, st as S, u as C, ut as w, v as T, wt as E, x as D, xt as O, y as k, yt as A, z as j } from "./runtime-core.esm-bundler-_TfE0DWz.js";
3
- import { t as ee } from "./tooltip-BDrlgLof.js";
4
- import { t as M } from "./message-D6dIy_hz.js";
5
- import { t as N } from "./tag-mchuCAPR.js";
6
- import { Ar as P, B as F, Dn as I, Er as L, Fn as R, Gn as z, H as B, J as te, Jr as V, Jt as ne, Ln as H, Mn as re, Mr as ie, Nr as ae, Or as U, R as oe, Sr as se, U as W, V as ce, X as le, Yn as ue, Zn as G, _r as de, ar as fe, at as pe, et as me, fa as he, g as ge, gn as _e, gt as ve, jr as ye, kr as be, lt as xe, or as Se, ot as Ce, q as we, rr as Te, vi as Ee, wi as De, xi as Oe, xr as ke, z as Ae, zn as je } from "./api-DUqpDJ2N.js";
7
- import { F as Me, M as Ne, z as Pe } from "./protocol-BB4jdtUC-DW3jl2tV.js";
8
- import { h as Fe, u as Ie } from "./intercomService-B7HkLs6z.js";
9
- import { n as Le } from "./vue-i18n-D5EAy78K.js";
10
- import { C as Re, _ as ze, g as Be } from "./dist-BIngHzHx.js";
11
- import { i as Ve } from "./alert-outline-FcLLjoOK.js";
12
- import { t as He } from "./eventIcons-BFNUgeGr.js";
13
- import { t as Ue } from "./button-BouAFgf5.js";
14
- import { M as We } from "./dist-CM7R4_Gj.js";
15
- import { t as Ge } from "./inputtext-C_ygnPrC.js";
16
- import { t as K } from "./checkbox-CAKzZcqk.js";
17
- import { t as Ke } from "./datepicker-DXk97lTw.js";
18
- import { t as qe } from "./close-CxFbonhd.js";
19
- import { t as q } from "./select-DV7p2EDj.js";
20
- import { t as Je } from "./progressbar-CaUaM8Bt.js";
21
- import { t as Ye } from "./multiselect-BOb4ScAZ.js";
22
- import { t as Xe } from "./textarea-ByXnzJzx.js";
23
- import { s as Ze, t as Qe } from "./assistant-BaR65gIY.js";
24
- import { i as $e, n as J, t as Y } from "./eventLabels-B4C1_4vT.js";
25
- import { i as et, n as tt, r as nt, t as rt } from "./ungrouped-BHLAySWP.js";
26
- import { t as it } from "./utils-DYtBrGDz.js";
27
- import { t as at } from "./settings-lWJfHaif.js";
28
- import { t as ot } from "./database-refresh-outline-PiqlCkA7.js";
29
- import { n as st, t as ct } from "./round-alt-arrow-left-bold-DDy2dLUM.js";
30
- //#region src/components/CuiDialog/templates/ClipReindex/ClipReindex.vue?vue&type=script&setup=true&lang.ts
31
- var lt = { class: "flex flex-col gap-4" }, ut = { class: "text-sm text-pretty" }, dt = {
32
- key: 0,
33
- class: "flex flex-col gap-2"
34
- }, ft = {
35
- key: 0,
36
- class: "flex justify-between text-sm text-muted"
37
- }, pt = { key: 0 }, mt = /* @__PURE__ */ D({
38
- __name: "ClipReindex",
39
- setup(e, { expose: t }) {
40
- let r = n("dialogRefProps"), { t: o } = Le(), { status: s, isBusy: c, checking: l, refresh: u, start: f, cancel: h } = R(), g = O(!1), y = O(!1), b = O(0), x = m(() => s.value?.running === !0), w = m(() => {
41
- if (y.value) {
42
- if (!s.value?.total) return o("views.recordings.reindex.up_to_date");
43
- let { done: e, total: t, skipped: n } = s.value;
44
- return n ? o("views.recordings.reindex.result_failed", {
45
- done: e,
46
- total: t,
47
- skipped: n
48
- }) : o("views.recordings.reindex.result", {
49
- done: e,
50
- total: t
51
- });
52
- }
53
- return l.value ? o("views.recordings.reindex.checking") : x.value ? o("views.recordings.reindex.running_intro") : o("views.recordings.reindex.intro");
54
- }), T = m(() => {
55
- if (y.value) return b.value;
56
- let e = s.value?.total ?? 0;
57
- return e <= 0 ? 0 : Math.min(100, Math.round(((s.value?.done ?? 0) + (s.value?.skipped ?? 0)) / e * 100));
58
- });
59
- async function E() {
60
- return x.value ? h() : (g.value = !0, f()), null;
61
- }
62
- return _(x, (e, t) => {
63
- t && !e && g.value && (y.value = !0, b.value = s.value?.total ? 100 : 0, s.value?.total || requestAnimationFrame(() => b.value = 100));
64
- }), S(() => {
65
- r.hideConfirmButton && (r.hideConfirmButton.value = y.value), r.confirmText && (r.confirmText.value = x.value ? o("views.recordings.reindex.stop") : o("views.recordings.reindex.start")), r.confirmButtonProps && (r.confirmButtonProps.value = x.value ? { severity: "danger" } : {}), r.disabled && (r.disabled.value = c.value);
66
- }), j(() => {
67
- s.value?.running && (g.value = !0), u().then(() => {
68
- s.value?.running && (g.value = !0);
69
- });
70
- }), t({ onConfirm: E }), (e, t) => {
71
- let n = Je;
72
- return i(), v("div", lt, [C("span", ut, a(p(w)), 1), p(g) || p(x) ? (i(), v("div", dt, [k(n, {
73
- mode: p(l) ? "indeterminate" : "determinate",
74
- value: p(T),
75
- "show-value": !1,
76
- class: "h-2"
77
- }, null, 8, ["mode", "value"]), p(x) && !p(l) ? (i(), v("div", ft, [C("span", null, a(e.$t("views.recordings.reindex.progress", {
78
- done: p(s)?.done ?? 0,
79
- total: p(s)?.total ?? 0
80
- })), 1), p(s)?.skipped ? (i(), v("span", pt, a(e.$t("views.recordings.reindex.skipped", { count: p(s).skipped })), 1)) : d("", !0)])) : d("", !0)])) : d("", !0)]);
81
- };
82
- }
83
- }), X = {
84
- viewBox: "0 0 24 24",
85
- width: "1.2em",
86
- height: "1.2em"
87
- };
88
- function ht(e, t) {
89
- return i(), v("svg", X, [...t[0] ||= [C("path", {
90
- fill: "currentColor",
91
- 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"
92
- }, null, -1)]]);
93
- }
94
- var gt = l({
95
- name: "mdi-file-video-outline",
96
- render: ht
97
- }), _t = { class: "flex flex-col gap-6" }, vt = { class: "flex flex-col field-gap" }, Z = { class: "cui-label" }, yt = { class: "flex flex-col field-gap" }, bt = { class: "cui-label" }, xt = { class: "grid grid-cols-1 xs:grid-cols-2 gap-3" }, St = { class: "flex flex-col gap-1" }, Ct = { class: "text-xs text-muted" }, wt = { class: "flex flex-col gap-1" }, Tt = { class: "text-xs text-muted" }, Et = { class: "grid grid-cols-1 xs:grid-cols-2 gap-x-6 gap-y-4" }, Dt = { class: "flex flex-col field-gap" }, Ot = { class: "cui-label" }, kt = { class: "flex flex-col field-gap" }, At = { class: "cui-label" }, jt = { class: "flex flex-col field-gap" }, Mt = { class: "flex items-center gap-3" }, Nt = { class: "cui-label !mb-0" }, Q = {
98
- key: 0,
99
- class: "ml-auto flex items-center gap-2.5 text-sm tabular-nums"
100
- }, $ = { 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 = {
101
- key: 0,
102
- class: "flex items-center justify-center gap-2 text-muted text-sm py-6"
103
- }, Rt = {
104
- key: 1,
105
- class: "text-center text-muted text-sm py-6"
106
- }, 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__ */ D({
107
- __name: "ExportRecordings",
108
- props: {
109
- cameras: {},
110
- preselect: {}
111
- },
112
- setup(e, { expose: t }) {
113
- let o = e, { t: s } = Le(), c = De(), l = n("dialogRefProps"), { plugin: g } = We("@camera.ui/camera-ui-nvr"), _ = O([]), y = O(!1), x = O(o.preselect?.length ? [...o.preselect] : []), w = O("best"), E = O(0), D = O(new Date((/* @__PURE__ */ new Date()).setHours(0, 0, 0, 0))), A = O(/* @__PURE__ */ new Date()), j = m(() => [{
114
- label: s("views.recordings.export.quality_best"),
115
- value: "best"
116
- }, {
117
- label: s("views.recordings.export.quality_smallest"),
118
- value: "smallest"
119
- }]), ee = m(() => [
120
- 0,
121
- 1,
122
- 2,
123
- 5,
124
- 10,
125
- 30,
126
- 60,
127
- 120,
128
- 180,
129
- 240,
130
- 300
131
- ].map((e) => ({
132
- label: e === 0 ? s("views.recordings.export.timelapse_off") : e < 60 ? `${e} s` : `${e / 60} min`,
133
- value: e
134
- }))), P = m(() => E.value > 0), F = m(() => P.value ? "~" : ""), I = m(() => new Map(o.cameras.map((e) => [e.id, e.name]))), R = m(() => D.value instanceof Date && A.value instanceof Date && D.value < A.value), z = m(() => {
135
- if (!R.value) return [];
136
- let e = [], t = D.value.getTime(), n = A.value.getTime(), r = new Date(D.value);
137
- r.setHours(0, 0, 0, 0);
138
- let i = new Date(A.value);
139
- for (i.setHours(0, 0, 0, 0); r.getTime() <= i.getTime();) {
140
- let i = new Date(r), a = new Date(r);
141
- a.setDate(a.getDate() + 1);
142
- let o = Math.max(i.getTime(), t), s = Math.min(a.getTime(), n);
143
- s > o && e.push({
144
- day: re(i),
145
- startUs: o * 1e3,
146
- endUs: s * 1e3
147
- }), r.setDate(r.getDate() + 1);
148
- }
149
- return e;
150
- }), B = m(() => _.value.map((e) => {
151
- let t = I.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" : ie(r);
152
- return {
153
- cameraId: e.cameraId,
154
- cameraName: t,
155
- name: `${ae(t)}_${e.day}${P.value ? "_timelapse" : ""}.mp4`,
156
- span: i ? s("views.recordings.export.whole_day") : `${ie(n)}–${a}`,
157
- bytes: P.value ? e.bytes / Ut : e.bytes
158
- };
159
- })), te = m(() => {
160
- let e = /* @__PURE__ */ new Map();
161
- for (let t of B.value) {
162
- let n = e.get(t.cameraId);
163
- n || (n = {
164
- cameraId: t.cameraId,
165
- cameraName: t.cameraName,
166
- files: [],
167
- bytes: 0
168
- }, e.set(t.cameraId, n)), n.files.push(t), n.bytes += t.bytes;
169
- }
170
- return [...e.values()];
171
- }), V = m(() => B.value.reduce((e, t) => e + t.bytes, 0)), ne = m(() => x.value.length === 0 ? s("views.recordings.export.no_cameras") : R.value ? s("views.recordings.export.no_footage") : s("views.recordings.export.no_range"));
172
- function H(e) {
173
- return String(e).padStart(2, "0");
174
- }
175
- function re(e) {
176
- return `${e.getFullYear()}-${H(e.getMonth() + 1)}-${H(e.getDate())}`;
177
- }
178
- function ie(e) {
179
- return `${H(e.getHours())}:${H(e.getMinutes())}`;
180
- }
181
- function ae(e) {
182
- return e.replace(/[^a-zA-Z0-9-_]/g, "_");
183
- }
184
- function U(e) {
185
- if (e <= 0) return "0 MB";
186
- let t = e / 1e6;
187
- if (t < 1e3) return `${t < 10 ? t.toFixed(1) : Math.round(t)} MB`;
188
- let n = e / 1e9;
189
- return `${n.toFixed(+(n < 10))} GB`;
190
- }
191
- async function oe() {
192
- let e = g.value;
193
- if (!e?.nvrExportEstimate || x.value.length === 0 || z.value.length === 0) {
194
- _.value = [], y.value = !1;
195
- return;
196
- }
197
- y.value = !0;
198
- try {
199
- let t = await e.nvrExportEstimate({
200
- cameras: x.value,
201
- slices: z.value,
202
- quality: w.value
203
- });
204
- _.value = t.files ?? [];
205
- } catch {
206
- _.value = [];
207
- } finally {
208
- y.value = !1;
209
- }
210
- }
211
- async function W() {
212
- if (!R.value || x.value.length === 0 || z.value.length === 0) return null;
213
- let e = g.value;
214
- if (!e?.nvrExportBatch) return c.add({
215
- severity: "error",
216
- detail: s("views.recordings.export.plugin_missing"),
217
- life: 3e3
218
- }), null;
219
- let t = await e.nvrExportBatch({
220
- cameras: x.value,
221
- slices: z.value,
222
- quality: w.value,
223
- timelapseIntervalSec: P.value ? E.value : 0
224
- });
225
- await se({
226
- url: t.url,
227
- filename: t.filename
228
- });
229
- }
230
- return Pe([
231
- x,
232
- z,
233
- w
234
- ], oe, {
235
- debounce: 350,
236
- immediate: !0,
237
- deep: !0
238
- }), S(() => {
239
- l.disabled && (l.disabled.value = !R.value || x.value.length === 0 || !y.value && B.value.length === 0);
240
- }), t({ onConfirm: W }), (t, n) => {
241
- let o = Ye, s = Ke, c = M, l = Se, m = q, g = N, _ = L, S = gt;
242
- return i(), v("div", _t, [
243
- C("div", vt, [C("label", Z, a(t.$t("views.recordings.export.cameras")), 1), k(o, {
244
- modelValue: p(x),
245
- "onUpdate:modelValue": n[0] ||= (e) => f(x) ? x.value = e : null,
246
- options: e.cameras,
247
- "option-label": "name",
248
- "option-value": "id",
249
- display: "chip",
250
- filter: "",
251
- placeholder: t.$t("views.recordings.export.cameras_placeholder"),
252
- class: "w-full"
253
- }, null, 8, [
254
- "modelValue",
255
- "options",
256
- "placeholder"
257
- ])]),
258
- C("div", yt, [
259
- C("label", bt, a(t.$t("views.recordings.export.range")), 1),
260
- C("div", xt, [C("div", St, [C("span", Ct, a(t.$t("views.recordings.export.from")), 1), k(s, {
261
- modelValue: p(D),
262
- "onUpdate:modelValue": n[1] ||= (e) => f(D) ? D.value = e : null,
263
- "show-time": "",
264
- "hour-format": "24",
265
- fluid: "",
266
- "max-date": p(A)
267
- }, null, 8, ["modelValue", "max-date"])]), C("div", wt, [C("span", Tt, a(t.$t("views.recordings.export.to")), 1), k(s, {
268
- modelValue: p(A),
269
- "onUpdate:modelValue": n[2] ||= (e) => f(A) ? A.value = e : null,
270
- "show-time": "",
271
- "hour-format": "24",
272
- fluid: "",
273
- "min-date": p(D)
274
- }, null, 8, ["modelValue", "min-date"])])]),
275
- p(R) ? (i(), u(c, {
276
- key: 1,
277
- severity: "secondary",
278
- variant: "simple",
279
- size: "small",
280
- class: "cui-input-hint"
281
- }, {
282
- default: h(() => [T(a(t.$t("views.recordings.export.range_hint")), 1)]),
283
- _: 1
284
- })) : (i(), u(c, {
285
- key: 0,
286
- severity: "error",
287
- variant: "simple",
288
- size: "small",
289
- class: "cui-input-hint"
290
- }, {
291
- default: h(() => [T(a(t.$t("views.recordings.export.invalid_range")), 1)]),
292
- _: 1
293
- }))
294
- ]),
295
- C("div", Et, [C("div", Dt, [C("label", Ot, a(t.$t("views.recordings.export.quality")), 1), k(l, {
296
- modelValue: p(w),
297
- "onUpdate:modelValue": n[3] ||= (e) => f(w) ? w.value = e : null,
298
- options: p(j),
299
- "option-label": "label",
300
- "option-value": "value",
301
- "allow-empty": !1,
302
- pt: {
303
- root: { class: "flex w-full" },
304
- pcToggleButton: { root: { class: "flex-1" } }
305
- }
306
- }, null, 8, ["modelValue", "options"])]), C("div", kt, [C("label", At, a(t.$t("views.recordings.export.timelapse")), 1), k(m, {
307
- modelValue: p(E),
308
- "onUpdate:modelValue": n[4] ||= (e) => f(E) ? E.value = e : null,
309
- options: p(ee),
310
- "option-label": "label",
311
- "option-value": "value",
312
- class: "w-full"
313
- }, null, 8, ["modelValue", "options"])])]),
314
- C("div", jt, [C("div", Mt, [C("label", Nt, a(t.$t("views.recordings.export.result")), 1), p(B).length ? (i(), v("div", Q, [
315
- C("span", $, a(p(B).length) + " " + a(p(B).length === 1 ? t.$t("views.recordings.export.file") : t.$t("views.recordings.export.files")), 1),
316
- n[5] ||= C("span", { class: "text-muted" }, "·", -1),
317
- C("span", Pt, a(p(F)) + a(U(p(V))), 1),
318
- k(g, {
319
- value: p(B).length === 1 ? "MP4" : "ZIP",
320
- severity: "info"
321
- }, null, 8, ["value"])
322
- ])) : d("", !0)]), C("div", Ft, [C("div", It, [p(y) && !p(B).length ? (i(), v("div", Lt, [k(_, {
323
- style: {
324
- width: "1rem",
325
- height: "1rem"
326
- },
327
- "stroke-width": "4",
328
- class: "m-0"
329
- }), C("span", null, a(t.$t("views.recordings.export.estimating")), 1)])) : p(B).length ? (i(!0), v(b, { key: 2 }, r(p(te), (e) => (i(), v("div", {
330
- key: e.cameraId,
331
- class: "flex flex-col gap-1"
332
- }, [C("span", zt, a(e.cameraName) + " · " + a(e.files.length) + " · " + a(p(F)) + a(U(e.bytes)), 1), (i(!0), v(b, null, r(e.files, (e) => (i(), v("div", {
333
- key: e.name,
334
- class: "flex items-center gap-3 card-inner-background border border-color rounded-lg px-3 py-2"
335
- }, [
336
- k(S, { class: "w-4 h-4 text-muted shrink-0" }),
337
- C("span", Bt, a(e.name), 1),
338
- C("span", Vt, a(e.span), 1),
339
- C("span", Ht, a(p(F)) + a(U(e.bytes)), 1)
340
- ]))), 128))]))), 128)) : (i(), v("div", Rt, a(p(ne)), 1))])])])
341
- ]);
342
- };
343
- }
344
- }), Gt = {
345
- viewBox: "0 0 24 24",
346
- width: "1.2em",
347
- height: "1.2em"
348
- };
349
- function Kt(e, t) {
350
- return i(), v("svg", Gt, [...t[0] ||= [C("path", {
351
- fill: "none",
352
- stroke: "currentColor",
353
- "stroke-linecap": "round",
354
- "stroke-linejoin": "round",
355
- "stroke-width": "2",
356
- d: "m6 9l6 6l6-6"
357
- }, null, -1)]]);
358
- }
359
- var qt = l({
360
- name: "tabler-chevron-down",
361
- render: Kt
362
- }), Jt = {
363
- viewBox: "0 0 24 24",
364
- width: "1.2em",
365
- height: "1.2em"
366
- };
367
- function Yt(e, t) {
368
- return i(), v("svg", Jt, [...t[0] ||= [C("path", {
369
- fill: "none",
370
- stroke: "currentColor",
371
- "stroke-linecap": "round",
372
- "stroke-linejoin": "round",
373
- "stroke-width": "2",
374
- d: "m6 15l6-6l6 6"
375
- }, null, -1)]]);
376
- }
377
- var Xt = l({
378
- name: "tabler-chevron-up",
379
- render: Yt
380
- }), Zt = { class: "flex flex-col gap-2" }, Qt = { class: "sidebar-section-title" }, $t = { class: "text-xs text-muted" }, en = { class: "text-xs text-muted" }, tn = { class: "flex flex-col gap-2" }, nn = { class: "sidebar-section-title" }, rn = { class: "p-input-icon-left w-full" }, an = { class: "text-xs text-muted" }, on = { class: "flex flex-col gap-2" }, sn = { class: "sidebar-section-title flex items-center gap-1.5" }, cn = {
381
- key: 0,
382
- class: "inline-flex items-center gap-1 text-xs text-muted"
383
- }, ln = {
384
- key: 1,
385
- class: "flex flex-col gap-1.5 mt-1"
386
- }, un = { class: "text-xs text-muted" }, dn = { class: "flex items-center gap-3" }, fn = { class: "text-xs font-mono w-8 text-right shrink-0" }, pn = { class: "flex flex-col gap-2" }, mn = { class: "sidebar-section-title flex items-center gap-1.5" }, hn = {
387
- key: 0,
388
- class: "text-xs text-muted"
389
- }, gn = {
390
- key: 2,
391
- class: "flex flex-col gap-2"
392
- }, _n = { class: "sidebar-section-title" }, vn = { class: "flex flex-col gap-2" }, yn = { class: "sidebar-section-title" }, bn = { class: "flex flex-col gap-2" }, xn = { class: "sidebar-section-title" }, Sn = { class: "relative rounded-md overflow-hidden" }, Cn = {
393
- key: 4,
394
- class: "sidebar-divider"
395
- }, wn = {
396
- key: 5,
397
- class: "flex flex-col gap-2"
398
- }, Tn = { class: "sidebar-section-title" }, En = { class: "flex items-center gap-3" }, Dn = { class: "text-xs font-mono w-8 text-right shrink-0" }, On = { class: "flex flex-col gap-2" }, kn = { class: "sidebar-section-title" }, An = { class: "flex flex-wrap gap-1" }, jn = { class: "flex flex-col gap-2" }, Mn = {
399
- key: 0,
400
- class: "flex flex-col gap-2"
401
- }, Nn = { class: "flex items-center gap-2 cursor-pointer text-sm" }, Pn = {
402
- key: 0,
403
- class: "flex flex-col gap-2 ml-6"
404
- }, Fn = { class: "filter-logic-divider" }, In = { class: "flex flex-col gap-2" }, Ln = {
405
- key: 0,
406
- class: "flex flex-col gap-2"
407
- }, Rn = { class: "filter-logic-divider" }, zn = { class: "flex flex-col gap-2" }, Bn = {
408
- key: 0,
409
- class: "flex flex-col gap-2"
410
- }, Vn = { class: "flex items-center gap-2 cursor-pointer text-sm" }, Hn = 288, Un = /*#__PURE__*/ U(/* @__PURE__ */ D({
411
- __name: "RecordingsFilterSidebar",
412
- props: {
413
- filters: {},
414
- cameras: {},
415
- isOpen: { type: Boolean },
416
- isOverlay: { type: Boolean },
417
- resultCount: {},
418
- resultTotal: {},
419
- resultCapped: { type: Boolean },
420
- semanticCount: {},
421
- semanticSearchAvailable: { type: Boolean },
422
- semanticSearchLoading: { type: Boolean },
423
- assistantSearchAvailable: { type: Boolean },
424
- assistantSearchLoading: { type: Boolean },
425
- assistantSearchNote: {}
426
- },
427
- emits: [
428
- "update:filters",
429
- "semantic-search",
430
- "assistant-search",
431
- "close"
432
- ],
433
- setup(n, { expose: o, emit: s }) {
434
- let l = /* @__PURE__ */ new Set(["motion", "audio"]), h = n, g = s, { t: S } = Le(), { topbarOffset: w, bottombarHeight: E } = ae(), { icons: D, generic: j } = He(), ee = D, M = Xt, N = qt, P = x("sidebarRef"), F = O(h.filters.semanticQuery ?? ""), I = O(""), L = A({
435
- eventTypes: !0,
436
- attributes: !0,
437
- sensorEvents: !0
438
- }), R = m(() => h.isOpen ? Hn : 0), z = m(() => {
439
- let e = [...new Set(h.cameras.map((e) => e.room).filter((e) => !!e))];
440
- return e.sort((e, t) => e.localeCompare(t)), e.map((e) => ({
441
- id: e,
442
- name: e === "Default" ? S("components.form.label.room_default") : e
443
- }));
444
- }), B = m(() => {
445
- let e = h.filters.rooms;
446
- return (e.length > 0 ? h.cameras.filter((t) => e.includes(t.room ?? "")) : h.cameras).map((e) => ({
447
- id: e.id,
448
- name: e.name
449
- }));
450
- }), te = m(() => {
451
- if (h.filters.cameraIds.length === 1) return h.cameras.find((e) => e.id === h.filters.cameraIds[0])?.name;
452
- }), V = m(() => h.filters.contentKind === "episodes"), ne = m(() => {
453
- let e = V.value ? "episodes" : "recordings";
454
- if (h.resultTotal === void 0) return S(`views.recordings.result_count_${e}`, { count: h.resultCount });
455
- let t = h.resultCapped ? `${h.resultTotal}+` : h.resultTotal;
456
- return S(`views.recordings.result_count_${e}_of`, {
457
- count: h.resultCount,
458
- total: t
459
- });
460
- }), ie = m(() => [
461
- {
462
- label: S("views.recordings.content_kind_all"),
463
- value: "all"
464
- },
465
- {
466
- label: S("views.recordings.content_kind_events"),
467
- value: "events"
468
- },
469
- {
470
- label: S("views.recordings.content_kind_episodes"),
471
- value: "episodes"
472
- }
473
- ]), U = m(() => [{
474
- label: S("views.recordings.filter_and"),
475
- value: "and"
476
- }, {
477
- label: S("views.recordings.filter_or"),
478
- value: "or"
479
- }]), oe = m(() => [
480
- {
481
- label: S("views.recordings.time_1h"),
482
- value: "1h"
483
- },
484
- {
485
- label: S("views.recordings.time_1d"),
486
- value: "1d"
487
- },
488
- {
489
- label: S("views.recordings.time_1w"),
490
- value: "1w"
491
- },
492
- {
493
- label: S("views.recordings.time_1m"),
494
- value: "1m"
495
- }
496
- ]), se = m(() => ze.filter((e) => !l.has(e)).map((e) => ({
497
- label: S(`views.recordings.type_${e}`),
498
- value: e,
499
- icon: D[e] ?? j
500
- }))), W = m(() => ({
501
- label: S("views.recordings.type_other"),
502
- value: H,
503
- icon: D.other ?? j
504
- })), ce = m(() => Ee.map((e) => ({
505
- label: S($e(e)),
506
- value: e,
507
- icon: ee[e] ?? j
508
- }))), le = m(() => Re.map((e) => ({
509
- label: S(J(e)),
510
- value: e,
511
- icon: D[e] ?? j
512
- }))), ue = m(() => Be.map((e) => ({
513
- label: S(Y(e)),
514
- value: e,
515
- icon: D[e] ?? j
516
- })));
517
- function G(e, t) {
518
- g("update:filters", {
519
- ...h.filters,
520
- [e]: t
521
- });
522
- }
523
- let de = Me((e) => {
524
- G("search", e);
525
- }, 300);
526
- function pe(e) {
527
- let t = new Set(h.cameras.filter((t) => e.length === 0 || e.includes(t.room ?? "")).map((e) => e.id));
528
- g("update:filters", {
529
- ...h.filters,
530
- rooms: e,
531
- cameraIds: h.filters.cameraIds.filter((e) => t.has(e))
532
- });
533
- }
534
- function me() {
535
- let e = I.value.trim();
536
- e && !h.assistantSearchLoading && g("assistant-search", e);
537
- }
538
- function he() {
539
- let e = F.value.trim();
540
- G("semanticQuery", e), g("semantic-search", e);
541
- }
542
- function ge(e) {
543
- let t = [...h.filters.eventTypes], n = t.indexOf(e);
544
- n >= 0 ? t.splice(n, 1) : t.push(e), G("eventTypes", t);
545
- }
546
- function ve(e) {
547
- let t = [...h.filters.audioLabels], n = t.indexOf(e);
548
- n >= 0 ? t.splice(n, 1) : t.push(e), G("audioLabels", t);
549
- }
550
- function ye(e) {
551
- let t = [...h.filters.sensorEvents], n = t.indexOf(e);
552
- n >= 0 ? t.splice(n, 1) : t.push(e), G("sensorEvents", t);
553
- }
554
- function be(e) {
555
- let t = [...h.filters.hasAttributes], n = t.indexOf(e);
556
- n >= 0 ? t.splice(n, 1) : t.push(e), G("hasAttributes", t);
557
- }
558
- function xe(e) {
559
- L[e] = !L[e];
560
- }
561
- return _(F, (e) => {
562
- !e?.trim() && h.filters.semanticQuery && G("semanticQuery", "");
563
- }), Ie(P, (e) => {
564
- let t = e.target;
565
- t.closest("#recordings-sidebar-toggle") || t.closest("[data-pc-section=\"overlay\"], [data-pc-section=\"panel\"], .p-connected-overlay") || h.isOpen && h.isOverlay && g("close");
566
- }), o({ sidebarWidth: R }), (o, s) => {
567
- let l = Se, m = Ge, h = re, g = Xe, _ = Ue, x = fe, S = Ve, D = Ye, O = ke, A = _e, j = K;
568
- return i(), v("nav", {
569
- ref_key: "sidebarRef",
570
- ref: P,
571
- 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",
572
- style: y({
573
- width: `${p(R)}px`,
574
- borderRightWidth: n.isOpen ? "1px" : "0px",
575
- paddingBottom: `calc(var(--safe-area-inset-top) + var(--safe-area-inset-bottom) + ${p(E)}px + ${p(w)}px)`
576
- })
577
- }, [C("div", {
578
- class: "flex flex-col gap-4 p-4",
579
- style: y({ width: `${Hn}px` })
580
- }, [
581
- C("div", Zt, [
582
- C("label", Qt, a(o.$t("views.recordings.content_kind")), 1),
583
- k(l, {
584
- "model-value": n.filters.contentKind,
585
- options: p(ie),
586
- "option-label": "label",
587
- "option-value": "value",
588
- "allow-empty": !1,
589
- class: "content-kind-toggle",
590
- "onUpdate:modelValue": s[0] ||= (e) => G("contentKind", e)
591
- }, null, 8, ["model-value", "options"]),
592
- p(V) ? (i(), v(b, { key: 0 }, [C("span", $t, a(p(ne)), 1), C("span", en, a(o.$t("views.recordings.content_kind_episodes_hint")), 1)], 64)) : d("", !0)
593
- ]),
594
- s[25] ||= C("div", { class: "sidebar-divider" }, null, -1),
595
- p(V) ? d("", !0) : (i(), v(b, { key: 0 }, [
596
- C("div", tn, [
597
- C("label", nn, a(o.$t("views.recordings.search")), 1),
598
- C("span", rn, [k(m, {
599
- "model-value": n.filters.search,
600
- placeholder: o.$t("views.recordings.search_placeholder"),
601
- class: "w-full text-sm",
602
- "onUpdate:modelValue": s[1] ||= (e) => p(de)(e)
603
- }, null, 8, ["model-value", "placeholder"])]),
604
- C("span", an, a(p(ne)), 1)
605
- ]),
606
- s[16] ||= C("div", { class: "sidebar-divider" }, null, -1),
607
- C("div", on, [
608
- C("label", sn, [k(h, { class: "w-3.5 h-3.5" }), T(" " + a(o.$t("views.recordings.semantic_search")), 1)]),
609
- k(g, {
610
- modelValue: p(F),
611
- "onUpdate:modelValue": s[2] ||= (e) => f(F) ? F.value = e : null,
612
- placeholder: o.$t("views.recordings.semantic_search_placeholder"),
613
- class: "w-full text-sm semantic-textarea",
614
- rows: "3",
615
- disabled: !n.semanticSearchAvailable
616
- }, null, 8, [
617
- "modelValue",
618
- "placeholder",
619
- "disabled"
620
- ]),
621
- k(_, {
622
- label: o.$t("views.recordings.semantic_search_button"),
623
- severity: "secondary",
624
- outlined: "",
625
- size: "small",
626
- class: "w-full text-xs",
627
- loading: n.semanticSearchLoading,
628
- disabled: !n.semanticSearchAvailable || !p(F)?.trim(),
629
- onClick: he
630
- }, null, 8, [
631
- "label",
632
- "loading",
633
- "disabled"
634
- ]),
635
- n.semanticCount == null ? d("", !0) : (i(), v("span", cn, [k(h, { class: "w-3 h-3" }), T(" " + a(o.$t("views.recordings.semantic_results", { count: n.semanticCount })), 1)])),
636
- n.filters.semanticQuery ? (i(), v("div", ln, [C("label", un, a(o.$t("views.recordings.min_match_score")), 1), C("div", dn, [k(x, {
637
- "model-value": n.filters.minSemanticScore,
638
- min: 0,
639
- max: 1,
640
- step: .05,
641
- class: "flex-1",
642
- "onUpdate:modelValue": s[3] ||= (e) => G("minSemanticScore", e)
643
- }, null, 8, ["model-value"]), C("span", fn, a(Math.round(n.filters.minSemanticScore * 100)) + "%", 1)])])) : d("", !0)
644
- ]),
645
- s[17] ||= C("div", { class: "sidebar-divider" }, null, -1)
646
- ], 64)),
647
- n.assistantSearchAvailable ? (i(), v(b, { key: 1 }, [C("div", pn, [
648
- C("label", mn, [k(S, { class: "w-3.5 h-3.5" }), T(" " + a(o.$t("views.recordings.assistant_search")), 1)]),
649
- k(m, {
650
- modelValue: p(I),
651
- "onUpdate:modelValue": s[4] ||= (e) => f(I) ? I.value = e : null,
652
- placeholder: o.$t("views.recordings.assistant_search_placeholder"),
653
- class: "w-full text-sm",
654
- disabled: n.assistantSearchLoading,
655
- onKeydown: t(e(me, ["prevent"]), ["enter"])
656
- }, null, 8, [
657
- "modelValue",
658
- "placeholder",
659
- "disabled",
660
- "onKeydown"
661
- ]),
662
- k(_, {
663
- label: o.$t("views.recordings.assistant_search_button"),
664
- severity: "secondary",
665
- outlined: "",
666
- size: "small",
667
- class: "w-full text-xs",
668
- loading: n.assistantSearchLoading,
669
- disabled: !p(I).trim(),
670
- onClick: me
671
- }, null, 8, [
672
- "label",
673
- "loading",
674
- "disabled"
675
- ]),
676
- n.assistantSearchNote ? (i(), v("span", hn, a(n.assistantSearchNote), 1)) : d("", !0)
677
- ]), s[18] ||= C("div", { class: "sidebar-divider" }, null, -1)], 64)) : d("", !0),
678
- p(z).length > 1 ? (i(), v("div", gn, [C("label", _n, a(o.$t("views.recordings.rooms")), 1), k(D, {
679
- "model-value": n.filters.rooms,
680
- options: p(z),
681
- "option-label": "name",
682
- "option-value": "id",
683
- placeholder: o.$t("views.recordings.all_rooms"),
684
- class: "w-full text-sm",
685
- "max-selected-labels": 2,
686
- "show-toggle-all": !1,
687
- pt: { overlay: { style: "position: fixed" } },
688
- "onUpdate:modelValue": s[5] ||= (e) => pe(e)
689
- }, null, 8, [
690
- "model-value",
691
- "options",
692
- "placeholder"
693
- ])])) : d("", !0),
694
- C("div", vn, [C("label", yn, a(o.$t("views.recordings.cameras")), 1), k(D, {
695
- "model-value": n.filters.cameraIds,
696
- options: p(B),
697
- "option-label": "name",
698
- "option-value": "id",
699
- placeholder: o.$t("views.recordings.all_cameras"),
700
- class: "w-full text-sm",
701
- "max-selected-labels": 2,
702
- "show-toggle-all": !1,
703
- pt: { overlay: { style: "position: fixed" } },
704
- "onUpdate:modelValue": s[6] ||= (e) => G("cameraIds", e)
705
- }, null, 8, [
706
- "model-value",
707
- "options",
708
- "placeholder"
709
- ])]),
710
- p(te) && !p(V) ? (i(), v(b, { key: 3 }, [s[19] ||= C("div", { class: "sidebar-divider" }, null, -1), C("div", bn, [
711
- C("label", xn, a(o.$t("views.recordings.grid_search")), 1),
712
- C("div", Sn, [k(O, {
713
- camera: p(te),
714
- "object-fit": "cover"
715
- }, null, 8, ["camera"]), k(A, {
716
- "model-value": n.filters.gridRegions,
717
- "onUpdate:modelValue": s[7] ||= (e) => G("gridRegions", e)
718
- }, null, 8, ["model-value"])]),
719
- k(_, {
720
- label: o.$t("views.recordings.grid_clear"),
721
- severity: "secondary",
722
- outlined: "",
723
- size: "small",
724
- class: "w-full text-xs",
725
- disabled: n.filters.gridRegions.length === 0,
726
- onClick: s[8] ||= (e) => G("gridRegions", [])
727
- }, null, 8, ["label", "disabled"])
728
- ])], 64)) : d("", !0),
729
- p(V) ? d("", !0) : (i(), v("div", Cn)),
730
- p(V) ? d("", !0) : (i(), v("div", wn, [C("label", Tn, a(o.$t("views.recordings.confidence")), 1), C("div", En, [k(x, {
731
- "model-value": n.filters.minConfidence,
732
- min: 0,
733
- max: 1,
734
- step: .05,
735
- class: "flex-1",
736
- "onUpdate:modelValue": s[9] ||= (e) => G("minConfidence", e)
737
- }, null, 8, ["model-value"]), C("span", Dn, a(Math.round(n.filters.minConfidence * 100)) + "%", 1)])])),
738
- s[26] ||= C("div", { class: "sidebar-divider" }, null, -1),
739
- C("div", On, [C("label", kn, a(o.$t("views.recordings.time_range")), 1), C("div", An, [(i(!0), v(b, null, r(p(oe), (e) => (i(), u(_, {
740
- key: e.value,
741
- label: e.label,
742
- severity: n.filters.timeRange === e.value ? void 0 : "secondary",
743
- outlined: n.filters.timeRange !== e.value,
744
- size: "small",
745
- class: "text-xs flex-1 min-w-0",
746
- onClick: (t) => G("timeRange", n.filters.timeRange === e.value ? null : e.value)
747
- }, null, 8, [
748
- "label",
749
- "severity",
750
- "outlined",
751
- "onClick"
752
- ]))), 128))])]),
753
- p(V) ? d("", !0) : (i(), v(b, { key: 6 }, [
754
- s[24] ||= C("div", { class: "sidebar-divider" }, null, -1),
755
- C("div", jn, [C("button", {
756
- class: "sidebar-section-title flex items-center justify-between w-full cursor-pointer",
757
- onClick: s[10] ||= (e) => xe("sensorEvents")
758
- }, [C("span", null, a(o.$t("views.recordings.sensor_events")), 1), (i(), u(c(p(L).sensorEvents ? p(M) : p(N)), { class: "w-4 h-4 text-muted" }))]), p(L).sensorEvents ? (i(), v("div", Mn, [(i(!0), v(b, null, r(p(ce), (e) => (i(), v(b, { key: e.value }, [C("label", Nn, [
759
- k(j, {
760
- "model-value": n.filters.sensorEvents.includes(e.value),
761
- binary: !0,
762
- "onUpdate:modelValue": (t) => ye(e.value)
763
- }, null, 8, ["model-value", "onUpdate:modelValue"]),
764
- (i(), u(c(e.icon), { class: "w-4 h-4 text-muted" })),
765
- C("span", null, a(e.label), 1)
766
- ]), e.value === "audio" && n.filters.sensorEvents.includes("audio") ? (i(), v("div", Pn, [(i(!0), v(b, null, r(p(le), (e) => (i(), v("label", {
767
- key: e.value,
768
- class: "flex items-center gap-2 cursor-pointer text-sm"
769
- }, [
770
- k(j, {
771
- "model-value": n.filters.audioLabels.includes(e.value),
772
- binary: !0,
773
- "onUpdate:modelValue": (t) => ve(e.value)
774
- }, null, 8, ["model-value", "onUpdate:modelValue"]),
775
- (i(), u(c(e.icon), { class: "w-4 h-4 text-muted" })),
776
- C("span", null, a(e.label), 1)
777
- ]))), 128))])) : d("", !0)], 64))), 128))])) : d("", !0)]),
778
- C("div", Fn, [
779
- s[20] ||= C("div", { class: "filter-logic-line" }, null, -1),
780
- k(l, {
781
- "model-value": n.filters.filterLogicTriggers,
782
- options: p(U),
783
- "option-label": "label",
784
- "option-value": "value",
785
- "allow-empty": !1,
786
- class: "filter-logic-toggle",
787
- "onUpdate:modelValue": s[11] ||= (e) => G("filterLogicTriggers", e)
788
- }, null, 8, ["model-value", "options"]),
789
- s[21] ||= C("div", { class: "filter-logic-line" }, null, -1)
790
- ]),
791
- C("div", In, [C("button", {
792
- class: "sidebar-section-title flex items-center justify-between w-full cursor-pointer",
793
- onClick: s[12] ||= (e) => xe("eventTypes")
794
- }, [C("span", null, a(o.$t("views.recordings.event_type")), 1), (i(), u(c(p(L).eventTypes ? p(M) : p(N)), { class: "w-4 h-4 text-muted" }))]), p(L).eventTypes ? (i(), v("div", Ln, [(i(!0), v(b, null, r(p(se), (e) => (i(), v("label", {
795
- key: e.value,
796
- class: "flex items-center gap-2 cursor-pointer text-sm"
797
- }, [
798
- k(j, {
799
- "model-value": n.filters.eventTypes.includes(e.value),
800
- binary: !0,
801
- "onUpdate:modelValue": (t) => ge(e.value)
802
- }, null, 8, ["model-value", "onUpdate:modelValue"]),
803
- (i(), u(c(e.icon), { class: "w-4 h-4 text-muted" })),
804
- C("span", null, a(e.label), 1)
805
- ]))), 128))])) : d("", !0)]),
806
- C("div", Rn, [
807
- s[22] ||= C("div", { class: "filter-logic-line" }, null, -1),
808
- k(l, {
809
- "model-value": n.filters.filterLogicAttributes,
810
- options: p(U),
811
- "option-label": "label",
812
- "option-value": "value",
813
- "allow-empty": !1,
814
- class: "filter-logic-toggle",
815
- "onUpdate:modelValue": s[13] ||= (e) => G("filterLogicAttributes", e)
816
- }, null, 8, ["model-value", "options"]),
817
- s[23] ||= C("div", { class: "filter-logic-line" }, null, -1)
818
- ]),
819
- C("div", zn, [C("button", {
820
- class: "sidebar-section-title flex items-center justify-between w-full cursor-pointer",
821
- onClick: s[14] ||= (e) => xe("attributes")
822
- }, [C("span", null, a(o.$t("views.recordings.attributes")), 1), (i(), u(c(p(L).attributes ? p(M) : p(N)), { class: "w-4 h-4 text-muted" }))]), p(L).attributes ? (i(), v("div", Bn, [(i(!0), v(b, null, r(p(ue), (e) => (i(), v("label", {
823
- key: e.value,
824
- class: "flex items-center gap-2 cursor-pointer text-sm"
825
- }, [
826
- k(j, {
827
- "model-value": n.filters.hasAttributes.includes(e.value),
828
- binary: !0,
829
- "onUpdate:modelValue": (t) => be(e.value)
830
- }, null, 8, ["model-value", "onUpdate:modelValue"]),
831
- (i(), u(c(e.icon), { class: "w-4 h-4 text-muted" })),
832
- C("span", null, a(e.label), 1)
833
- ]))), 128)), C("label", Vn, [
834
- k(j, {
835
- "model-value": n.filters.eventTypes.includes(p(W).value),
836
- binary: !0,
837
- "onUpdate:modelValue": s[15] ||= (e) => ge(p(W).value)
838
- }, null, 8, ["model-value"]),
839
- (i(), u(c(p(W).icon), { class: "w-4 h-4 text-muted" })),
840
- C("span", null, a(p(W).label), 1)
841
- ])])) : d("", !0)])
842
- ], 64))
843
- ], 4)], 4);
844
- };
845
- }
846
- }), [["__scopeId", "data-v-f2bbf9b7"]]), Wn = { class: "font-semibold text-xl truncate" }, Gn = { class: "w-full h-full relative" }, Kn = {
847
- key: 0,
848
- class: "w-full flex flex-row h-[calc(40px+1rem)] py-2 items-center fixed z-10"
849
- }, qn = { class: "relative z-2 page-title !m-0" }, Jn = {
850
- key: 1,
851
- class: "fixed right-0 z-10 h-[calc(40px+1rem)] py-2 pr-2 flex items-center"
852
- }, Yn = {
853
- key: 2,
854
- class: "flex justify-center py-4"
855
- }, Xn = {
856
- key: 3,
857
- class: "flex flex-1 min-h-0 flex-col items-center justify-center w-full gap-4"
858
- }, Zn = { class: "text-muted text-sm" }, Qn = 288, $n = /* @__PURE__ */ D({
859
- __name: "Recordings",
860
- setup(e) {
861
- let t = new Qe(), n = new ne(), r = new Oe(), c = ve(), l = ge(), { bottombarHeight: f } = ae(), { status: S, checking: T } = R(), { openEventTrace: D } = Ce(), A = Te("@camera.ui/camera-ui-nvr"), M = De(), { t: N, locale: L } = Le(), { smBreakpoint: H, xlBreakpoint: U, mdBreakpoint: se } = ie(), { registerScrollToTop: fe } = te();
862
- if (typeof VideoDecoder < "u") {
863
- let e = G({ cacheSize: 20 });
864
- o(je, e), Ne(() => e.dispose());
865
- }
866
- let { results: _e, isSearching: Se, isAvailable: Ee, hasSearched: ke, search: Me, clear: Pe } = ue(), { data: Ie } = t.getAssistantStatusQuery(), { data: Re } = n.getCamerasQuery({
867
- page: 1,
868
- pageSize: -1
869
- }), { data: ze } = r.getUserQuery(m(() => l.user?.username ?? "")), Be = Array.from({ length: 24 }, (e, t) => t), Ve = {
870
- contentKind: "all",
871
- favoritesOnly: !1,
872
- search: "",
873
- semanticQuery: "",
874
- filterLogicTriggers: "or",
875
- filterLogicAttributes: "or",
876
- rooms: [],
877
- cameraIds: [],
878
- timeRange: null,
879
- customDateRange: null,
880
- eventTypes: [],
881
- audioLabels: [],
882
- hasAttributes: [],
883
- sensorEvents: [],
884
- gridRegions: [],
885
- minConfidence: .5,
886
- minSemanticScore: .5,
887
- onlyWithRecordings: !0
888
- }, He = {
889
- "1h": 36e5,
890
- "1d": 864e5,
891
- "1w": 6048e5,
892
- "1m": 2592e6
893
- }, We = x("gridRef"), Ge = x("viewMenuRef"), K = O("closed"), Ke = O(!1), q = O({ ...Ve }), Je = O(!1), Ye = O(""), Xe = E({
894
- hasDetections: !0,
895
- withRecordingInfo: !0,
896
- hasRecording: !0
897
- }), $e = JSON.stringify(Xe.value), J = O(), Y = O(!1), lt = E([]), ut = O(null), dt = x("reindexAnchorRef"), { left: ft } = Fe(dt), pt = !1, X = m(() => U.value ? !0 : K.value === "opened"), ht = m(() => se.value), gt = ye(() => We.value?.scrollY ?? 0), _t = m(() => X.value && ht.value ? !0 : gt.value && !S.value?.running), vt = m(() => se.value ? "0px" : X.value ? `${Qn}px` : "0px"), Z = m(() => (Re.value?.result ?? []).map((e) => ({
898
- id: e._id,
899
- name: e.name,
900
- room: e.room
901
- }))), yt = m(() => {
902
- let e = /* @__PURE__ */ new Map();
903
- for (let t of Z.value) e.set(t.id, t.name);
904
- return e;
905
- }), bt = m(() => {
906
- let e = /* @__PURE__ */ new Map();
907
- for (let t of Re.value?.result ?? []) e.set(t._id, t);
908
- return e;
909
- }), xt = m(() => {
910
- let e = q.value.rooms;
911
- return (e.length > 0 ? Z.value.filter((t) => e.includes(t.room ?? "")) : Z.value).map((e) => e.id);
912
- }), St = m(() => q.value.cameraIds.filter((e) => xt.value.includes(e))), Ct = m(() => xt.value);
913
- fe(() => We.value?.scrollToTop());
914
- let { events: wt, isLoading: Tt, hasMore: Et, stats: Dt, loadMore: Ot, loadThumbnails: kt, deleteEvents: At, reset: jt, loadFailed: Mt, pluginUnavailable: Nt } = z({
915
- availableCameraIds: Ct,
916
- cameraIds: St,
917
- realtime: !0,
918
- pageSize: 40,
919
- filter: Xe,
920
- withEpisodes: !0,
921
- withStats: !0
922
- }), Q = m(() => {
923
- let e = /* @__PURE__ */ new Map();
924
- for (let t of _e.value ?? []) {
925
- let n = e.get(t.eventId);
926
- (!n || t.score > n) && e.set(t.eventId, t.score);
927
- }
928
- return e;
929
- }), $ = m(() => ke.value), Pt = m(() => Nt.value ? N("views.recordings.recordings_unavailable") : Mt.value ? N("views.recordings.load_failed") : N("views.recordings.no_recordings")), Ft = m(() => {
930
- let e = wt.value.filter((e) => e.state === "ended" || (e.segments?.length ?? 0) > 0), t = q.value;
931
- if (J.value !== void 0) {
932
- let t = J.value;
933
- e = e.filter((e) => e.startTime >= t);
934
- }
935
- return t.gridRegions.length > 0 && (e = e.filter((e) => e.segments.some((e) => e.detections.some((e) => e.box && it(e.box, t.gridRegions))))), t.favoritesOnly && (e = e.filter((e) => e.favorite)), $.value && (e = e.filter((e) => {
936
- let n = Q.value.get(e.id);
937
- return n != null && n >= t.minSemanticScore;
938
- }), e.sort((e, t) => (Q.value.get(t.id) ?? 0) - (Q.value.get(e.id) ?? 0))), e;
939
- }), It = m(() => q.value.contentKind === "episodes"), Lt = m(() => {
940
- let e = q.value;
941
- return e.search.trim() !== "" || e.eventTypes.length > 0 || e.audioLabels.length > 0 || e.hasAttributes.length > 0 || e.sensorEvents.length > 0 || e.minConfidence !== .5;
942
- }), Rt = m(() => Ie.value?.state === "ready"), zt = m(() => {
943
- if (q.value.contentKind === "events") return [];
944
- A.storeVersion.value;
945
- let e = q.value;
946
- if (!It.value && ($.value || e.gridRegions.length > 0 || Lt.value)) return [];
947
- let t = St.value.length > 0 ? St.value : Ct.value, n = J.value ?? 0, r = Infinity;
948
- if (e.timeRange === "custom" && e.customDateRange && (n = Math.max(n, e.customDateRange[0].getTime()), r = e.customDateRange[1].getTime()), Et.value && !It.value) {
949
- let e = Infinity;
950
- for (let t of wt.value) e = Math.min(e, t.thumbnailAt ?? t.startTime);
951
- n = Math.max(n, e);
952
- }
953
- let i = [];
954
- for (let a of A.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({
955
- event: void 0,
956
- key: `episode:${a.id}`,
957
- episode: a
958
- }));
959
- return i;
960
- }), Bt = m(() => {
961
- if (It.value) return [...zt.value].sort(tt);
962
- let e = Y.value && lt.value.length ? [...lt.value] : Ft.value.map((e) => ({
963
- event: e,
964
- key: e.id
965
- }));
966
- return zt.value.length && (e.push(...zt.value), e.sort(tt)), e;
967
- }), Vt = m(() => {
968
- let e = Dt.value, t = q.value;
969
- if (!e || !Et.value || $.value || t.gridRegions.length > 0 || t.timeRange && J.value === void 0) return;
970
- if (It.value) return e.episodes;
971
- let n = Y.value ? e.segments : e.total;
972
- if (n !== void 0) return n + (t.contentKind !== "events" && !Lt.value ? e.episodes : 0);
973
- }), Ht = m(() => de(void 0, "admin")), Ut = m(() => Ft.value.filter((e) => e.state === "ended")), { selectionMode: Gt, selectedIds: Kt, allSelected: qt, bulkBusy: Jt, enterSelectionMode: Yt, exitSelectionMode: Xt, toggleSelectAll: Zt, toggleSelection: Qt } = oe(Ut, (e) => e.id);
974
- function $t() {
975
- let e = [...Kt.value];
976
- e.length && !Jt.value && c.openTextDialog({
977
- data: {
978
- title: N("components.dialog.title.confirm"),
979
- contentText: N("views.recordings.delete_selected_confirm", { count: e.length }),
980
- confirmText: N("components.form.button.remove"),
981
- confirmButtonProps: { severity: "danger" }
982
- },
983
- onConfirm: async () => {
984
- Jt.value = !0;
985
- try {
986
- await At(e), Xt(), M.add({
987
- severity: "success",
988
- detail: N("views.recordings.delete_selected_done", { count: e.length }),
989
- life: 5e3
990
- });
991
- } catch (e) {
992
- M.add({
993
- severity: "error",
994
- detail: e?.message ?? String(e),
995
- life: 5e3
996
- });
997
- } finally {
998
- Jt.value = !1;
999
- }
1000
- }
1001
- });
1002
- }
1003
- let en = m(() => [
1004
- {
1005
- key: "ungroup",
1006
- label: N("views.recordings.ungroup"),
1007
- description: N("views.recordings.ungroup_hint"),
1008
- toggle: !0,
1009
- toggleState: Y.value,
1010
- onClick: () => {
1011
- pt = !0, Y.value = !Y.value, l.updateUser({ preferences: { recordings: { ungrouped: Y.value } } });
1012
- }
1013
- },
1014
- {
1015
- key: "onlyWithRecordings",
1016
- label: N("views.recordings.only_with_recordings"),
1017
- description: N("views.recordings.only_with_recordings_hint"),
1018
- toggle: !0,
1019
- toggleState: q.value.onlyWithRecordings,
1020
- onClick: () => {
1021
- q.value = {
1022
- ...q.value,
1023
- onlyWithRecordings: !q.value.onlyWithRecordings
1024
- };
1025
- }
1026
- },
1027
- ...Ht.value ? [{
1028
- key: "favoritesOnly",
1029
- label: N("views.recordings.favorites_only"),
1030
- description: N("views.recordings.favorites_hint"),
1031
- toggle: !0,
1032
- toggleState: q.value.favoritesOnly,
1033
- onClick: () => {
1034
- q.value = {
1035
- ...q.value,
1036
- favoritesOnly: !q.value.favoritesOnly
1037
- };
1038
- }
1039
- }] : []
1040
- ]);
1041
- function tn() {
1042
- c.openComponentDialog(mt, { data: {
1043
- title: N("views.recordings.reindex.title"),
1044
- contentProps: {},
1045
- confirmText: N("views.recordings.reindex.start")
1046
- } });
1047
- }
1048
- function nn() {
1049
- c.openComponentDialog(Wt, { data: {
1050
- title: N("views.recordings.export.title"),
1051
- contentProps: {
1052
- cameras: Z.value,
1053
- preselect: q.value.cameraIds?.length ? q.value.cameraIds : []
1054
- },
1055
- confirmText: N("views.recordings.export.confirm")
1056
- } });
1057
- }
1058
- function rn() {
1059
- let e = K.value;
1060
- K.value = e === "opened" ? "closed" : "opened";
1061
- }
1062
- function an() {
1063
- K.value = "closed";
1064
- }
1065
- function on(e) {
1066
- !e.semanticQuery?.trim() && q.value.semanticQuery?.trim() && Pe(), q.value = e;
1067
- }
1068
- async function sn(e) {
1069
- Je.value = !0, Ye.value = "";
1070
- try {
1071
- let t = await Ze(e, L.value, Intl.DateTimeFormat().resolvedOptions().timeZone);
1072
- on({
1073
- ...Ve,
1074
- ...t.filters,
1075
- favoritesOnly: Ht.value && t.filters.favoritesOnly
1076
- }), cn(t.filters.semanticQuery), Ye.value = t.note;
1077
- } catch (e) {
1078
- M.add({
1079
- severity: "error",
1080
- detail: e?.response?.data?.message ?? N("views.recordings.assistant_search_failed"),
1081
- life: 5e3
1082
- });
1083
- } finally {
1084
- Je.value = !1;
1085
- }
1086
- }
1087
- function cn(e) {
1088
- if (!e.trim()) {
1089
- Pe();
1090
- return;
1091
- }
1092
- Me(e);
1093
- }
1094
- function ln(e, t) {
1095
- let n = bt.value.get(e.cameraId);
1096
- n && D(e, n, t);
1097
- }
1098
- function un(e, t) {
1099
- let n = bt.value.get(e.cameraId);
1100
- n && c.openComponentDialog(pe, {
1101
- data: {
1102
- title: n.name,
1103
- dedupeKey: `camera-event:${n._id}:${t}`,
1104
- stayActive: !0,
1105
- hideCancelButton: !0,
1106
- hideConfirmButton: !0,
1107
- contentProps: {
1108
- camera: n,
1109
- eventTimestamp: t
1110
- },
1111
- headerActions: e.segments?.some((e) => e?.description) ? [{
1112
- icon: re,
1113
- toggle: !0,
1114
- onClick: () => {}
1115
- }] : void 0,
1116
- draggable: !0,
1117
- blockDragOnSelectors: [".p-dialog-body"],
1118
- dismissableMask: !1,
1119
- modal: !1,
1120
- dialogContentClass: "!px-0 h-full",
1121
- goTo: `/cameras/${n.name}?startTs=${t}`
1122
- },
1123
- dialogSize: { desktop: {
1124
- maxWidth: "800px",
1125
- maxHeight: "calc(100vh - max(1rem, var(--safe-area-inset-top)) - max(1rem, var(--safe-area-inset-bottom)))",
1126
- width: "50vw"
1127
- } }
1128
- });
1129
- }
1130
- return _(U, (e) => {
1131
- e && (K.value = "closed");
1132
- }), _(() => q.value.timeRange, (e) => {
1133
- J.value = e && He[e] ? Date.now() - He[e] : void 0;
1134
- }, { immediate: !0 }), _(q, (e) => {
1135
- let t = e.eventTypes.length > 0 || e.sensorEvents.length > 0 || e.audioLabels.length > 0 || e.hasAttributes.length > 0, n = {
1136
- types: e.eventTypes.length > 0 ? e.eventTypes : void 0,
1137
- triggers: e.sensorEvents.length > 0 ? e.sensorEvents : void 0,
1138
- triggerLabels: e.audioLabels.length > 0 ? e.audioLabels : void 0,
1139
- attributes: e.hasAttributes.length > 0 ? e.hasAttributes : void 0,
1140
- filterLogicTriggers: t ? e.filterLogicTriggers : void 0,
1141
- filterLogicAttributes: t ? e.filterLogicAttributes : void 0,
1142
- search: e.search || void 0,
1143
- minConfidence: e.minConfidence > 0 ? e.minConfidence : void 0,
1144
- hasDetections: !t,
1145
- withRecordingInfo: !0,
1146
- hasRecording: e.onlyWithRecordings || void 0,
1147
- favoritesOnly: e.favoritesOnly || void 0,
1148
- startedSinceMs: J.value
1149
- }, r = JSON.stringify(n);
1150
- r !== $e && ($e = r, Xe.value = n);
1151
- }, {
1152
- deep: !0,
1153
- immediate: !0
1154
- }), _(ze, (e) => {
1155
- if (!e || pt) return;
1156
- let t = e.preferences?.recordings?.ungrouped;
1157
- t !== void 0 && (Y.value = t);
1158
- }, { immediate: !0 }), _([
1159
- Y,
1160
- Ft,
1161
- $
1162
- ], ([e, t, n]) => {
1163
- lt.value = e ? rt(t, n) : [];
1164
- }), _(() => q.value.cameraIds, (e) => {
1165
- e.length !== 1 && q.value.gridRegions.length > 0 && (q.value = {
1166
- ...q.value,
1167
- gridRegions: []
1168
- });
1169
- }), j(() => {
1170
- requestAnimationFrame(() => {
1171
- Ke.value = !0;
1172
- });
1173
- }), (e, t) => {
1174
- let n = we, r = B, o = ce, c = Ue, l = at, m = ct, _ = st, x = le, E = et, D = nt, O = he, A = me, j = V, M = be, N = P, L = ee;
1175
- return i(), v("div", null, [
1176
- k(n, { position: "center" }, {
1177
- default: h(() => [C("span", Wn, a(e.$t("views.recordings.title")), 1)]),
1178
- _: 1
1179
- }),
1180
- k(n, { position: "left" }, {
1181
- default: h(() => [k(c, {
1182
- id: "recordings-sidebar-toggle",
1183
- severity: "secondary",
1184
- class: "cui-button p-2 text-color",
1185
- text: "",
1186
- rounded: "",
1187
- onClick: rn
1188
- }, {
1189
- icon: h(() => [p(K) === "closed" ? (i(), u(r, {
1190
- key: 0,
1191
- width: "100%",
1192
- height: "100%"
1193
- })) : (i(), u(o, {
1194
- key: 1,
1195
- width: "100%",
1196
- height: "100%"
1197
- }))]),
1198
- _: 1
1199
- })]),
1200
- _: 1
1201
- }),
1202
- k(n, { position: "right" }, {
1203
- default: h(() => [k(c, {
1204
- severity: "secondary",
1205
- class: "cui-button p-2 text-color",
1206
- text: "",
1207
- rounded: "",
1208
- onClick: t[0] ||= (e) => p(Ge)?.toggleMenu(e)
1209
- }, {
1210
- icon: h(() => [k(l, {
1211
- width: "100%",
1212
- height: "100%"
1213
- })]),
1214
- _: 1
1215
- })]),
1216
- _: 1
1217
- }),
1218
- k(Un, {
1219
- filters: p(q),
1220
- cameras: p(Z),
1221
- "is-open": p(X),
1222
- "is-overlay": p(ht),
1223
- "result-count": p(Bt).length,
1224
- "result-total": p(Vt),
1225
- "result-capped": p(Dt)?.capped,
1226
- "semantic-count": p($) ? p(Q).size : void 0,
1227
- "semantic-search-available": p(Ee),
1228
- "semantic-search-loading": p(Se),
1229
- "assistant-search-available": p(Rt),
1230
- "assistant-search-loading": p(Je),
1231
- "assistant-search-note": p(Ye),
1232
- "onUpdate:filters": on,
1233
- onSemanticSearch: cn,
1234
- onAssistantSearch: sn,
1235
- onClose: an
1236
- }, null, 8, [
1237
- "filters",
1238
- "cameras",
1239
- "is-open",
1240
- "is-overlay",
1241
- "result-count",
1242
- "result-total",
1243
- "result-capped",
1244
- "semantic-count",
1245
- "semantic-search-available",
1246
- "semantic-search-loading",
1247
- "assistant-search-available",
1248
- "assistant-search-loading",
1249
- "assistant-search-note"
1250
- ]),
1251
- (i(), u(g, {
1252
- to: "#container",
1253
- defer: ""
1254
- }, [p(X) && p(ht) ? (i(), v("div", {
1255
- key: 0,
1256
- class: "fixed top-0 left-0 right-0 bottom-0 w-full h-full bg-black/50 z-1",
1257
- onClick: an
1258
- })) : d("", !0)])),
1259
- C("main", {
1260
- ref_key: "reindexAnchorRef",
1261
- ref: dt,
1262
- class: "relative w-full h-full",
1263
- style: y({
1264
- paddingLeft: p(vt),
1265
- transition: p(Ke) ? "padding-left 200ms" : void 0
1266
- })
1267
- }, [C("div", Gn, [
1268
- p(H) ? d("", !0) : (i(), v("div", Kn, [
1269
- t[3] ||= C("div", { class: "ml-2" }, null, -1),
1270
- p(U) ? d("", !0) : (i(), u(c, {
1271
- key: 0,
1272
- id: "recordings-sidebar-toggle",
1273
- severity: "secondary",
1274
- class: "mr-2 cui-icon-lg relative z-2",
1275
- text: "",
1276
- rounded: "",
1277
- onClick: rn
1278
- }, {
1279
- icon: h(() => [p(X) ? (i(), u(m, {
1280
- key: 0,
1281
- width: "100%",
1282
- height: "100%"
1283
- })) : (i(), u(_, {
1284
- key: 1,
1285
- width: "100%",
1286
- height: "100%"
1287
- }))]),
1288
- _: 1
1289
- })),
1290
- C("h1", qn, a(e.$t("views.recordings.title")), 1),
1291
- t[4] ||= C("div", { class: "gradient-blur rotate-180 !h-[70px]" }, [
1292
- C("div"),
1293
- C("div"),
1294
- C("div"),
1295
- C("div"),
1296
- C("div"),
1297
- C("div")
1298
- ], -1)
1299
- ])),
1300
- p(H) ? d("", !0) : (i(), v("div", Jn, [w((i(), u(c, {
1301
- severity: "secondary",
1302
- text: "",
1303
- rounded: "",
1304
- class: "cui-icon-lg relative z-2",
1305
- onClick: t[1] ||= (e) => p(Ge)?.toggleMenu(e)
1306
- }, {
1307
- icon: h(() => [k(l, {
1308
- width: "100%",
1309
- height: "100%"
1310
- })]),
1311
- _: 1
1312
- })), [[
1313
- L,
1314
- { value: e.$t("views.recordings.view_options") },
1315
- void 0,
1316
- { bottom: !0 }
1317
- ]])])),
1318
- C("div", { class: s(["px-2 h-full w-full flex flex-col", {
1319
- "pt-4": p(H),
1320
- "pt-[calc(40px+2rem)]": !p(H)
1321
- }]) }, [
1322
- p(Bt).length ? (i(), u(D, {
1323
- key: 0,
1324
- ref_key: "gridRef",
1325
- ref: We,
1326
- items: p(Bt),
1327
- "min-item-width": p(H) ? 160 : 180,
1328
- gap: 8,
1329
- "has-more": p(Et),
1330
- "load-more": p(Ot),
1331
- "item-key": (e) => e.key,
1332
- class: "flex-1 min-h-0"
1333
- }, {
1334
- item: h(({ item: e }) => [e.episode ? (i(), u(x, {
1335
- key: 0,
1336
- episode: e.episode,
1337
- "camera-by-id": p(bt),
1338
- fluid: "",
1339
- "click-disabled": p(Gt)
1340
- }, null, 8, [
1341
- "episode",
1342
- "camera-by-id",
1343
- "click-disabled"
1344
- ])) : (i(), u(E, {
1345
- key: 1,
1346
- event: e.event,
1347
- "camera-name": p(yt).get(e.event.cameraId),
1348
- camera: p(bt).get(e.event.cameraId),
1349
- "load-thumbnails": p(kt),
1350
- "semantic-score": p(Q).get(e.event.id),
1351
- "seg-index": e.segIndex,
1352
- "selection-mode": p(Gt) && e.event.state === "ended",
1353
- selected: p(Kt).has(e.event.id),
1354
- "sibling-active": e.segIndex !== void 0 && p(ut) === e.event.id,
1355
- onSelect: (t) => p(Qt)(e.event.id),
1356
- onScrollToEvent: (t) => un(e.event, t),
1357
- onOpenTrace: (t) => ln(e.event, t),
1358
- onMouseenter: (t) => ut.value = e.segIndex === void 0 ? null : e.event.id,
1359
- onMouseleave: t[2] ||= (e) => ut.value = null
1360
- }, null, 8, [
1361
- "event",
1362
- "camera-name",
1363
- "camera",
1364
- "load-thumbnails",
1365
- "semantic-score",
1366
- "seg-index",
1367
- "selection-mode",
1368
- "selected",
1369
- "sibling-active",
1370
- "onSelect",
1371
- "onScrollToEvent",
1372
- "onOpenTrace",
1373
- "onMouseenter"
1374
- ]))]),
1375
- _: 1
1376
- }, 8, [
1377
- "items",
1378
- "min-item-width",
1379
- "has-more",
1380
- "load-more",
1381
- "item-key"
1382
- ])) : p(Tt) ? (i(), u(D, {
1383
- key: 1,
1384
- items: p(Be),
1385
- "min-item-width": p(H) ? 160 : 180,
1386
- gap: 8,
1387
- "item-key": (e) => e,
1388
- class: "flex-1 min-h-0 pointer-events-none"
1389
- }, {
1390
- item: h(() => [k(O, {
1391
- width: "100%",
1392
- height: "100%",
1393
- class: "rounded-xl"
1394
- })]),
1395
- _: 1
1396
- }, 8, [
1397
- "items",
1398
- "min-item-width",
1399
- "item-key"
1400
- ])) : d("", !0),
1401
- p(Tt) && p(Bt).length || p(Se) ? (i(), v("div", Yn, [k(A, {
1402
- width: "24px",
1403
- height: "24px",
1404
- class: "text-muted"
1405
- })])) : d("", !0),
1406
- !p(Ft).length && !p(Tt) && !p(Se) ? (i(), v("div", Xn, [
1407
- k(j, { class: "w-12 h-12 text-muted" }),
1408
- C("span", Zn, a(p(Pt)), 1),
1409
- p(Mt) && !p(Nt) ? (i(), u(c, {
1410
- key: 0,
1411
- severity: "secondary",
1412
- class: "cui-button-small",
1413
- label: e.$t("views.recordings.load_failed_retry"),
1414
- onClick: p(jt)
1415
- }, null, 8, ["label", "onClick"])) : d("", !0)
1416
- ])) : d("", !0)
1417
- ], 2)
1418
- ])], 4),
1419
- p(Ht) && p(Z).length ? (i(), v("div", {
1420
- key: 0,
1421
- class: s(["fixed z-10", p(_t) ? "scale-0 opacity-0" : "scale-100 opacity-100"]),
1422
- style: y({
1423
- left: `calc(${p(ft)}px + ${p(vt)} + 0.75rem + var(--safe-area-inset-left))`,
1424
- bottom: `calc(${p(f)}px + 1.25rem + var(--safe-area-inset-bottom))`,
1425
- transition: p(Ke) ? "left 200ms, transform 200ms ease-in-out, opacity 200ms ease-in-out" : void 0
1426
- })
1427
- }, [k(c, {
1428
- severity: "secondary",
1429
- rounded: "",
1430
- class: "shadow-lg",
1431
- disabled: p(S)?.running,
1432
- label: p(T) ? e.$t("views.recordings.reindex.checking") : p(S)?.running ? e.$t("views.recordings.reindex.progress", {
1433
- done: p(S).done,
1434
- total: p(S).total
1435
- }) : e.$t("views.recordings.reindex.button"),
1436
- onClick: tn
1437
- }, {
1438
- icon: h(() => [p(S)?.running ? (i(), u(p(me), { key: 0 })) : (i(), u(p(ot), { key: 1 }))]),
1439
- _: 1
1440
- }, 8, ["disabled", "label"])], 6)) : d("", !0),
1441
- p(Z).length ? (i(), u(N, {
1442
- key: 1,
1443
- "force-visible": p(Gt),
1444
- "scroll-y": p(We)?.scrollY ?? 0
1445
- }, {
1446
- default: h(() => [p(Gt) ? (i(), v(b, { key: 1 }, [
1447
- k(M, {
1448
- grouped: "",
1449
- "tooltip-props": { value: e.$t("components.form.tooltip.cancel_selection") },
1450
- "button-props": { severity: "secondary" },
1451
- icon: p(qe),
1452
- "icon-props": {
1453
- width: "100%",
1454
- height: "100%"
1455
- },
1456
- onClick: p(Xt)
1457
- }, null, 8, [
1458
- "tooltip-props",
1459
- "icon",
1460
- "onClick"
1461
- ]),
1462
- k(M, {
1463
- grouped: "",
1464
- "tooltip-props": { value: p(qt) ? e.$t("components.form.tooltip.deselect_all") : e.$t("components.form.tooltip.select_all") },
1465
- "button-props": { severity: p(qt) ? "primary" : "secondary" },
1466
- icon: p(W),
1467
- "icon-props": {
1468
- width: "100%",
1469
- height: "100%"
1470
- },
1471
- onClick: p(Zt)
1472
- }, null, 8, [
1473
- "tooltip-props",
1474
- "button-props",
1475
- "icon",
1476
- "onClick"
1477
- ]),
1478
- k(M, {
1479
- grouped: "",
1480
- "tooltip-props": { value: e.$t("components.form.tooltip.delete_selected") },
1481
- "button-props": {
1482
- severity: "danger",
1483
- disabled: !p(Kt).size || p(Jt)
1484
- },
1485
- icon: p(F),
1486
- "icon-props": {
1487
- width: "100%",
1488
- height: "100%"
1489
- },
1490
- onClick: $t
1491
- }, null, 8, [
1492
- "tooltip-props",
1493
- "button-props",
1494
- "icon"
1495
- ])
1496
- ], 64)) : (i(), v(b, { key: 0 }, [p(Ht) && p(Ft).length ? (i(), u(M, {
1497
- key: 0,
1498
- grouped: "",
1499
- "tooltip-props": { value: e.$t("views.recordings.select") },
1500
- "button-props": { severity: "secondary" },
1501
- icon: p(Ae),
1502
- "icon-props": {
1503
- width: "100%",
1504
- height: "100%"
1505
- },
1506
- onClick: p(Yt)
1507
- }, null, 8, [
1508
- "tooltip-props",
1509
- "icon",
1510
- "onClick"
1511
- ])) : d("", !0), k(M, {
1512
- grouped: "",
1513
- "tooltip-props": { value: e.$t("views.recordings.export.title") },
1514
- "button-props": { class: "text-white" },
1515
- icon: p(xe),
1516
- "icon-props": {
1517
- width: "26px",
1518
- height: "26px"
1519
- },
1520
- onClick: nn
1521
- }, null, 8, ["tooltip-props", "icon"])], 64))]),
1522
- _: 1
1523
- }, 8, ["force-visible", "scroll-y"])) : d("", !0),
1524
- k(I, {
1525
- ref_key: "viewMenuRef",
1526
- ref: Ge,
1527
- items: p(en),
1528
- "auto-hide": !1,
1529
- popover: { pt: {
1530
- root: { class: "w-[22rem]" },
1531
- content: { class: "p-0! rounded-xl! overflow-hidden!" }
1532
- } }
1533
- }, null, 8, ["items"])
1534
- ]);
1535
- };
1536
- }
1537
- });
1538
- //#endregion
1539
- export { $n as default };