@camera.ui/server 2.1.16 → 2.1.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/interface/assets/{404-CqZDSHs_.js → 404-Cg1J2LX8.js} +1 -1
- package/dist/interface/assets/{About-Dk4SUTxo.js → About-CW7G6onF.js} +1 -1
- package/dist/interface/assets/Automation-CIwBJK1Y.js +3 -0
- package/dist/interface/assets/{AutomationImport-DDywNuRK.js → AutomationImport-CHkNv7C-.js} +2 -2
- package/dist/interface/assets/{AutomationStore-o0JYwGRr.js → AutomationStore-5bTym-Gl.js} +2 -2
- package/dist/interface/assets/{AutomationStoreDetail-DeAGahaF.js → AutomationStoreDetail-BF8UoG_l.js} +2 -2
- package/dist/interface/assets/Automations-CaX2fHhJ.js +2 -0
- package/dist/interface/assets/Camera-1zdmJnP-.js +2 -0
- package/dist/interface/assets/Camera-DSyI4J5-.css +1 -0
- package/dist/interface/assets/{CameraConsole-32WtMX1a.js → CameraConsole-CB1HEFKJ.js} +2 -2
- package/dist/interface/assets/{Cameras-zffI0fD9.js → Cameras-CyCY0rW9.js} +2 -2
- package/dist/interface/assets/Camview-Dia7G1u_.js +1 -0
- package/dist/interface/assets/{CertificateUpload-Dg0V9Hei.js → CertificateUpload-jP-JIxmY.js} +1 -1
- package/dist/interface/assets/{Config-CKrqFe-g.js → Config-DOa7WHyQ.js} +1 -1
- package/dist/interface/assets/{ConfigActionCameraControl-sbvBJQr3.js → ConfigActionCameraControl-BmCE3XLC.js} +1 -1
- package/dist/interface/assets/{ConfigActionDelay-CiPxydTn.js → ConfigActionDelay-CfHCZ0uf.js} +1 -1
- package/dist/interface/assets/{ConfigActionHttp-UqiZm0kq.js → ConfigActionHttp-DdM7gEb0.js} +1 -1
- package/dist/interface/assets/{ConfigActionImageInput-DkGVZ-ti.js → ConfigActionImageInput-CrPPNT4K.js} +1 -1
- package/dist/interface/assets/{ConfigActionMqtt-DQu5H4bY.js → ConfigActionMqtt-D7-u4zri.js} +1 -1
- package/dist/interface/assets/ConfigActionNotification-BSuUI2FP.js +1 -0
- package/dist/interface/assets/{ConfigActionNotificationControl-B_EpM5m9.js → ConfigActionNotificationControl-DfvAxKnx.js} +1 -1
- package/dist/interface/assets/{ConfigActionOutput-DeOsk0T1.js → ConfigActionOutput-DPplSpm_.js} +1 -1
- package/dist/interface/assets/{ConfigActionPlugin-CSZHcNQ6.js → ConfigActionPlugin-BnRn_p26.js} +1 -1
- package/dist/interface/assets/{ConfigActionSensor-Dx7DcDVr.js → ConfigActionSensor-CoEoqFAY.js} +1 -1
- package/dist/interface/assets/{ConfigActionSnapshot-Baj-r4Cd.js → ConfigActionSnapshot-wXdFiyU-.js} +1 -1
- package/dist/interface/assets/{ConfigActionVariable-Ccu___aS.js → ConfigActionVariable-BqJvOOHH.js} +1 -1
- package/dist/interface/assets/{ConfigConditionIfElse-0hU7UW8q.js → ConfigConditionIfElse-DG2Kgqn5.js} +1 -1
- package/dist/interface/assets/{ConfigConditionSensorState-BX19KYLJ.js → ConfigConditionSensorState-BytECo6r.js} +1 -1
- package/dist/interface/assets/{ConfigConditionSwitch-D-XUhwcE.js → ConfigConditionSwitch-DaSt9uZE.js} +1 -1
- package/dist/interface/assets/{ConfigConditionTime-B6OO8cmh.js → ConfigConditionTime-D42OsshU.js} +1 -1
- package/dist/interface/assets/{ConfigSensorValueInput-DZHYQez8.js → ConfigSensorValueInput-BtEmtZSm.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerDetection-BNyR5aOG.js → ConfigTriggerDetection-CDH2fzsu.js} +1 -1
- package/dist/interface/assets/ConfigTriggerGeofence-Dopegic5.js +1 -0
- package/dist/interface/assets/{ConfigTriggerManual-DFSTAuUt.js → ConfigTriggerManual-DAtWfH0-.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerMqtt-D_O8RyrQ.js → ConfigTriggerMqtt-CB3_PxqD.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerSchedule-BFZnBfCM.js → ConfigTriggerSchedule-BUzOrF23.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerSensor-D1Tst2wQ.js → ConfigTriggerSensor-D5kRIb7I.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerSystem-BNfatCp8.js → ConfigTriggerSystem-Cud77VMR.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerWebhook--nEO_Odl.js → ConfigTriggerWebhook-CeG5R3kV.js} +1 -1
- package/dist/interface/assets/Console-DdOD6Pd5.js +1 -0
- package/dist/interface/assets/{CuiAutomationRunsDialog-CkMRT1C8.js → CuiAutomationRunsDialog-Cym6xMVJ.js} +1 -1
- package/dist/interface/assets/CuiBottomSheet-B3QSHp4-.js +1 -0
- package/dist/interface/assets/{CuiBottomSheet-mKu68LHd.js → CuiBottomSheet-BSoMhymR.js} +1 -1
- package/dist/interface/assets/{CuiCameraPipCard-Djp8qBvZ.js → CuiCameraPipCard-DGgrxZJd.js} +1 -1
- package/dist/interface/assets/CuiCameraRecordings-Bu68AFdM.js +1 -0
- package/dist/interface/assets/{CuiCameraShares-B73pWIFh.js → CuiCameraShares-BOhfTcxQ.js} +1 -1
- package/dist/interface/assets/CuiCameraTable-C1CHYnda.js +1 -0
- package/dist/interface/assets/{CuiCameraTable-DripFD6D.js → CuiCameraTable-D0lc0VAJ.js} +2 -2
- package/dist/interface/assets/{CuiChartTable-DyyQV7mt.js → CuiChartTable-DcrFI8tT.js} +1 -1
- package/dist/interface/assets/{CuiConsole-UxJwQqNG.js → CuiConsole-ICLBq4Q-.js} +2 -2
- package/dist/interface/assets/{CuiDataTable-DZm0I8k7.js → CuiDataTable-BooFPsGH.js} +1 -1
- package/dist/interface/assets/{CuiLightControl-CB3l0ZLj.js → CuiLightControl-D1ih2hO-.js} +1 -1
- package/dist/interface/assets/{CuiList-DMQgYqaU.js → CuiList-ChI82KjI.js} +1 -1
- package/dist/interface/assets/{CuiPluginCard-HpQMNND1.js → CuiPluginCard-DqdSWrwb.js} +2 -2
- package/dist/interface/assets/{CuiPluginCategoryChip-C6aEP-ug.js → CuiPluginCategoryChip-DsRcMb72.js} +1 -1
- package/dist/interface/assets/{CuiPluginOAuthButton-DpGacvsa.js → CuiPluginOAuthButton-BSvRKUSY.js} +2 -2
- package/dist/interface/assets/{CuiPluginTrustBadge-Dl1PEsm6.js → CuiPluginTrustBadge-DXL7N1LC.js} +1 -1
- package/dist/interface/assets/CuiQRCode-DHln6Lo9.js +1 -0
- package/dist/interface/assets/CuiSchema-B7i2O3Fy.js +1 -0
- package/dist/interface/assets/{CuiTopNavbarItem-qPj6XwXr.js → CuiTopNavbarItem-TMfTyt8u.js} +1 -1
- package/dist/interface/assets/{Faces-DRWIPDfH.js → Faces-CyTkMqMW.js} +1 -1
- package/dist/interface/assets/FirstSteps-B4gb7Sgn.js +1 -0
- package/dist/interface/assets/Floorplan-DBwWnuys.js +1 -0
- package/dist/interface/assets/{Instances-VC4-anOF.js → Instances-D9fnwItz.js} +1 -1
- package/dist/interface/assets/{Logs-DROgZxLH.js → Logs-Brk6fJa0.js} +2 -2
- package/dist/interface/assets/{Menu-CmTk2or7.js → Menu-CrdBz1Er.js} +1 -1
- package/dist/interface/assets/Metrics-DXMgfNIL.js +9 -0
- package/dist/interface/assets/{OAuthDeviceFlow-BrdiDoCh.js → OAuthDeviceFlow-D5hSwHeO.js} +1 -1
- package/dist/interface/assets/Plugin-C65oNZ9N.js +1 -0
- package/dist/interface/assets/{PluginConsole-CxiW1w6K.js → PluginConsole-Bs3Z5u9-.js} +2 -2
- package/dist/interface/assets/PluginDetail-C3KUrHvq.js +2 -0
- package/dist/interface/assets/{PluginSchema-BgVZ_4if.js → PluginSchema-D22zRDkZ.js} +1 -1
- package/dist/interface/assets/PluginSearch-4ngDmZQ2.js +1 -0
- package/dist/interface/assets/PluginSearch-D7XYJzl4.js +2 -0
- package/dist/interface/assets/{PluginUpdateProgress-DEcle8-x.js → PluginUpdateProgress-MEdR7mID.js} +1 -1
- package/dist/interface/assets/Plugins-DQTlb12n.js +1 -0
- package/dist/interface/assets/Recordings-CqBwRvn-.js +1 -0
- package/dist/interface/assets/SensorEdit-BM2zHAM7.js +1 -0
- package/dist/interface/assets/{SensorHistory-H03yZia0.js → SensorHistory-Dbv2ODqn.js} +1 -1
- package/dist/interface/assets/Sensors-B4YzyU7R.js +2 -0
- package/dist/interface/assets/{Sensors-DzGV2Ngo.css → Sensors-DETviyjO.css} +1 -1
- package/dist/interface/assets/{Settings-9nC18KH8.js → Settings--wgPYOyK.js} +1 -1
- package/dist/interface/assets/{SettingsAccount-BTYvhCJP.js → SettingsAccount-BF6Cp8Rt.js} +1 -1
- package/dist/interface/assets/SettingsAccount-D7CHP0f1.js +1 -0
- package/dist/interface/assets/SettingsAppearance-Ba0jbbVW.js +1 -0
- package/dist/interface/assets/SettingsAppearance-BpXZwBjO.js +1 -0
- package/dist/interface/assets/{SettingsBackup-Bu48xw4v.js → SettingsBackup-qEYm-6De.js} +1 -1
- package/dist/interface/assets/{SettingsList-74c5OMQf.js → SettingsList-1brGZ2E_.js} +1 -1
- package/dist/interface/assets/{SettingsMqtt-81rJ4zV6.js → SettingsMqtt-Ds8YpoLA.js} +1 -1
- package/dist/interface/assets/SettingsNotifications-Diqpfbrh.js +1 -0
- package/dist/interface/assets/{SettingsPermissions-DqyVtVKE.js → SettingsPermissions-GmGacrLc.js} +1 -1
- package/dist/interface/assets/{SettingsRecordings-Bxn28Frz.js → SettingsRecordings-CtEm_7PE.js} +1 -1
- package/dist/interface/assets/SettingsRemote-CENHI51U.js +2 -0
- package/dist/interface/assets/SettingsSystem-YkigO2-V.js +2 -0
- package/dist/interface/assets/{SettingsUsers-DUOJN7uO.js → SettingsUsers-BNPa87gu.js} +1 -1
- package/dist/interface/assets/{Terminal-45QW5yPE.js → Terminal-uxOHZpUp.js} +3 -3
- package/dist/interface/assets/Training-BRZKDa8S.js +1 -0
- package/dist/interface/assets/Training-DMNjB3uX.css +1 -0
- package/dist/interface/assets/{Updates-B32Pra5E.js → Updates-CbscgL60.js} +1 -1
- package/dist/interface/assets/{VariableInput-CyTGQFtz.js → VariableInput-Dqg4sqBD.js} +1 -1
- package/dist/interface/assets/{VariableSuggestions-BLlD4F87.js → VariableSuggestions-DZCkPAVs.js} +1 -1
- package/dist/interface/assets/{VersionsHandler-CIq6v6lE.js → VersionsHandler-BYFshrhO.js} +2 -2
- package/dist/interface/assets/{VirtualSensorCreate-Di2IyYAg.js → VirtualSensorCreate-CQ-C4si3.js} +1 -1
- package/dist/interface/assets/{Workers-tb039NGc.js → Workers-DC77SjZQ.js} +2 -2
- package/dist/interface/assets/api-Cb8_C_se.js +4 -0
- package/dist/interface/assets/{api-4JRK8ya0.js → api-CbYNh0N1.js} +1 -1
- package/dist/interface/assets/api-DIyogyx5.css +2 -0
- package/dist/interface/assets/{auth-ISkWvJbZ.js → auth-Bev1OdHw.js} +1 -1
- package/dist/interface/assets/{automations-CeH81DN-.js → automations-DrpESBB_.js} +1 -1
- package/dist/interface/assets/cameraSources-QF2xqMxX.js +1 -0
- package/dist/interface/assets/cloudHandoff-BknPGUc0.js +1 -0
- package/dist/interface/assets/{config-DthCyQJv.js → config-DCK7k2P4.js} +1 -1
- package/dist/interface/assets/{flowSchema-DZ2bDhJt.js → flowSchema-D3Ddm5sW.js} +1 -1
- package/dist/interface/assets/{intercomService-Bd71KwsB.js → intercomService-DIwpkwG4.js} +1 -1
- package/dist/interface/assets/{main-ExPfCNlz.css → main-Cb5Z8N7b.css} +1 -1
- package/dist/interface/assets/main-DVwdxi04.js +3 -0
- package/dist/interface/assets/{mqtt-oPORDio9.js → mqtt-COWs_r7k.js} +1 -1
- package/dist/interface/assets/{notifications-BirFkpbF.js → notifications-sIv1-H85.js} +1 -1
- package/dist/interface/assets/{plugins-vyA7MMhx.js → plugins-CXQj6XQt.js} +1 -1
- package/dist/interface/assets/{rooms-MfPQPywT.js → rooms-DScX89Ks.js} +1 -1
- package/dist/interface/assets/{sensorIcons-B4H11BbT.js → sensorIcons-CvVtOgZB.js} +1 -1
- package/dist/interface/assets/sensorSlots-DsfKs8_k.js +1 -0
- package/dist/interface/assets/{sensors-xryx8Wvn.js → sensors-Bf_gYmB5.js} +1 -1
- package/dist/interface/assets/{server-BK9gwxH8.js → server-CahE6_Pv.js} +1 -1
- package/dist/interface/assets/{theme-DQeAzJ1v.js → theme-DmUc7UHl.js} +1 -1
- package/dist/interface/assets/{types-Bcj_K26s.js → types-D4kUDpid.js} +1 -1
- package/dist/interface/assets/{types-kN1Tn2Og.js → types-Dse8_nTX.js} +1 -1
- package/dist/interface/assets/{types-D626ASim.js → types-hwOSxlNg.js} +1 -1
- package/dist/interface/assets/ungrouped-Byxe4LNR.js +1 -0
- package/dist/interface/assets/ungrouped-n3OnGhCH.css +1 -0
- package/dist/interface/assets/{updates-Dzqxen12.js → updates-C4gAnNY6.js} +1 -1
- package/dist/interface/assets/{useAppVersion-JY7cdzlr.js → useAppVersion--b5Zj7tl.js} +1 -1
- package/dist/interface/assets/{useBackupRestore-CeShFVWy.js → useBackupRestore-Bx13MgrJ.js} +1 -1
- package/dist/interface/assets/{useCameraOptions-BeUNT5Rz.js → useCameraOptions-DN4gJjIl.js} +1 -1
- package/dist/interface/assets/{useLogsSocket-DDSuX00j.js → useLogsSocket-DqVa6Hky.js} +1 -1
- package/dist/interface/assets/{useNavLayout-DgAgRNq2.js → useNavLayout-CuQ9F9cj.js} +1 -1
- package/dist/interface/assets/{usePermissions-DFzwIs8L.js → usePermissions-C1L7m3Nc.js} +1 -1
- package/dist/interface/assets/{usePluginUpdates-Bb-LOOyL.js → usePluginUpdates-CvQPy02x.js} +1 -1
- package/dist/interface/assets/{usePushRegistration-iverdyzz.js → usePushRegistration-BKvefMFq.js} +1 -1
- package/dist/interface/assets/{useServerRestart-BchofDLe.js → useServerRestart-ByN6484v.js} +1 -1
- package/dist/interface/assets/{useStreamStatus-BOJt1v1c.js → useStreamStatus-BbtTnidZ.js} +1 -1
- package/dist/interface/assets/{useTabSwipe-v0Yet-YZ.js → useTabSwipe-D9udGzPx.js} +1 -1
- package/dist/interface/assets/{useUpdateChannel-K9ADk5yx.js → useUpdateChannel-8t3W9dNr.js} +1 -1
- package/dist/interface/assets/{useUpdatesSocket-sj1-DmFM.js → useUpdatesSocket-D9s_5T3l.js} +1 -1
- package/dist/interface/assets/{useUserOptions-BnF_qBdZ.js → useUserOptions-CEPYkuSm.js} +1 -1
- package/dist/interface/assets/{vendor-cameraui-BPX4wReW.js → vendor-cameraui-Dlzn4pyz.js} +26 -26
- package/dist/interface/assets/vendor-core-COMSlypG.js +1 -0
- package/dist/interface/assets/{vendor-primevue-iEFYdXsu.js → vendor-primevue-DF71EsUM.js} +55 -55
- package/dist/interface/ha/{404-DlQnv9jN.js → 404-Bm-oxxip.js} +1 -1
- package/dist/interface/ha/{About-BLQJmllv.js → About-CDcN0Q2J.js} +3 -3
- package/dist/interface/ha/{Automation-DLMPArOd.js → Automation-BQd4b0ym.js} +102 -102
- package/dist/interface/ha/{AutomationImport-Qzz3Ta4D.js → AutomationImport-CX1C76Wb.js} +6 -6
- package/dist/interface/ha/{AutomationStore-DNXC9s6h.js → AutomationStore-D4B0KpoW.js} +56 -56
- package/dist/interface/ha/{AutomationStoreDetail-CTqydRKj.js → AutomationStoreDetail-B53Giz4B.js} +6 -6
- package/dist/interface/ha/{Automations-DRxe1fli.js → Automations-BXlwOElS.js} +124 -124
- package/dist/interface/ha/{Camera-OrI4Wf4F.js → Camera-CauwMneE.js} +21 -19
- package/dist/interface/ha/{CameraConsole-6yGhoHmu.js → CameraConsole-CmsMjuIR.js} +5 -5
- package/dist/interface/ha/{Cameras-DpEaKKDG.js → Cameras-CyHDmgs0.js} +259 -259
- package/dist/interface/ha/{Camview-CnPz4cGs.js → Camview-BwwvU5k8.js} +70 -70
- package/dist/interface/ha/{Config-Bb2ERyAA.js → Config-C_Zuyeoc.js} +10 -10
- package/dist/interface/ha/{ConfigActionCameraControl-CC2tWFz2.js → ConfigActionCameraControl-C1_QyuX8.js} +3 -3
- package/dist/interface/ha/{ConfigActionHttp-DBsEL44i.js → ConfigActionHttp-C0d433mh.js} +2 -2
- package/dist/interface/ha/{ConfigActionImageInput-Rt3AOJ3I.js → ConfigActionImageInput-BYys2FwC.js} +1 -1
- package/dist/interface/ha/{ConfigActionMqtt-BYSSc954.js → ConfigActionMqtt-DznDfzze.js} +4 -4
- package/dist/interface/ha/{ConfigActionNotification-DKlIsZJd.js → ConfigActionNotification-CC2qfBLm.js} +3 -3
- package/dist/interface/ha/{ConfigActionNotificationControl-D5AVW2tR.js → ConfigActionNotificationControl-3jlm7_A4.js} +2 -2
- package/dist/interface/ha/{ConfigActionOutput-DIlu8Ujc.js → ConfigActionOutput-BEf1U3_l.js} +1 -1
- package/dist/interface/ha/{ConfigActionPlugin-o1YNBh-g.js → ConfigActionPlugin-C57BUrJD.js} +5 -5
- package/dist/interface/ha/{ConfigActionSensor-BEvwg0tf.js → ConfigActionSensor-BkoSPCUJ.js} +5 -5
- package/dist/interface/ha/{ConfigActionSnapshot-Bnw0JNNj.js → ConfigActionSnapshot-CC3EpmCq.js} +2 -2
- package/dist/interface/ha/{ConfigActionVariable-oGPagsvF.js → ConfigActionVariable-JDyDhSzZ.js} +1 -1
- package/dist/interface/ha/{ConfigConditionIfElse-7LCDNDvS.js → ConfigConditionIfElse-BVg-TUpv.js} +3 -3
- package/dist/interface/ha/{ConfigConditionSensorState-nO-s7wi6.js → ConfigConditionSensorState-YYeWly1H.js} +4 -4
- package/dist/interface/ha/{ConfigConditionSwitch-GrIKkY-P.js → ConfigConditionSwitch-DQHXX-4U.js} +5 -5
- package/dist/interface/ha/{ConfigSensorValueInput-Cthp3KXt.js → ConfigSensorValueInput-BuuzQ1nJ.js} +4 -4
- package/dist/interface/ha/{ConfigTriggerDetection-CJE9QFaK.js → ConfigTriggerDetection-CUvkAmpJ.js} +12 -12
- package/dist/interface/ha/{ConfigTriggerGeofence-Cyeu7Cit.js → ConfigTriggerGeofence-CCHELnfy.js} +7 -7
- package/dist/interface/ha/{ConfigTriggerMqtt-D5EoOztE.js → ConfigTriggerMqtt-BfLnCiWZ.js} +1 -1
- package/dist/interface/ha/{ConfigTriggerSensor-DYg_HRjO.js → ConfigTriggerSensor-Bi-Jld2G.js} +1 -1
- package/dist/interface/ha/{ConfigTriggerSystem-DzpajiyS.js → ConfigTriggerSystem-_HXrWjaJ.js} +2 -2
- package/dist/interface/ha/{ConfigTriggerWebhook-IE4PVb4O.js → ConfigTriggerWebhook-CFYsVF_r.js} +1 -1
- package/dist/interface/ha/{Console-BYgny5Dy.js → Console-CR95JZFd.js} +8 -8
- package/dist/interface/ha/{CuiAutomationRunsDialog-CoYgpbW0.js → CuiAutomationRunsDialog--mpkPFmw.js} +2 -2
- package/dist/interface/ha/{CuiBottomSheet-C4cK3fYK.js → CuiBottomSheet-DfFzwDjq.js} +1 -1
- package/dist/interface/ha/{CuiCameraRecordings-BAxchc71.js → CuiCameraRecordings-DCIFFbFk.js} +17 -18
- package/dist/interface/ha/{CuiCameraShares-CfQr1iyX.js → CuiCameraShares-Dwv_XtX4.js} +2 -2
- package/dist/interface/ha/{CuiCameraTable-B60mcEl_.js → CuiCameraTable-L6wd-VYz.js} +2 -2
- package/dist/interface/ha/{CuiChartTable-CbUVz-Cj.js → CuiChartTable-CxJR8u6U.js} +42 -42
- package/dist/interface/ha/{CuiConsole-DEjAQFwC.js → CuiConsole-CvL9TXZY.js} +20 -20
- package/dist/interface/ha/{CuiDataTable-005ptLsa.js → CuiDataTable-Bn80WJXi.js} +6 -6
- package/dist/interface/ha/{CuiPluginCard-BWwPLJ6m.js → CuiPluginCard-CtOzPAal.js} +18 -18
- package/dist/interface/ha/{CuiPluginOAuthButton-CgmDgRY9.js → CuiPluginOAuthButton-1LgNMLII.js} +3 -3
- package/dist/interface/ha/{CuiPluginTrustBadge-BWnP1whX.js → CuiPluginTrustBadge-mHuy3ab9.js} +1 -1
- package/dist/interface/ha/{CuiQRCode-ONkk6Wqy.js → CuiQRCode-CloepWte.js} +2 -2
- package/dist/interface/ha/{CuiSchema-C3uI1GwG.js → CuiSchema-CJsEWewj.js} +19 -19
- package/dist/interface/ha/{CuiTopNavbarItem-Bhws0XkE.js → CuiTopNavbarItem-B2EM-tmz.js} +1 -1
- package/dist/interface/ha/{Faces-DuxYlZGd.js → Faces-BMkZfxDm.js} +107 -107
- package/dist/interface/ha/{FirstSteps-BAlqShSK.js → FirstSteps-BH0mga3u.js} +11 -11
- package/dist/interface/ha/{Floorplan-BVwSNFd6.js → Floorplan-CyfIUI4Z.js} +275 -275
- package/dist/interface/ha/{Instances-BM9sRNSP.js → Instances-BwNXc91J.js} +70 -70
- package/dist/interface/ha/{Logs-KISz4BU-.js → Logs-CcSiN16r.js} +8 -8
- package/dist/interface/ha/{Menu-DYI6PeIn.js → Menu-qdN0OBb7.js} +10 -10
- package/dist/interface/ha/{Metrics-BjpKFunA.js → Metrics-ClM5lhvC.js} +89 -89
- package/dist/interface/ha/{OAuthDeviceFlow-DG-KUGZj.js → OAuthDeviceFlow-BBr-rER_.js} +3 -3
- package/dist/interface/ha/{Plugin-BjWyUUhe.js → Plugin-BBkSXygO.js} +50 -50
- package/dist/interface/ha/{PluginConsole-BK3cotea.js → PluginConsole-DqrBnXSX.js} +6 -6
- package/dist/interface/ha/{PluginDetail-BDzDeShX.js → PluginDetail-Clu6nv-B.js} +9 -9
- package/dist/interface/ha/{PluginSearch-DsFUuPC-.js → PluginSearch-Dn-24FLX.js} +32 -32
- package/dist/interface/ha/{PluginUpdateProgress-BMrdkjRq.js → PluginUpdateProgress-CzhHUKDg.js} +3 -3
- package/dist/interface/ha/{Plugins-3WPnsHXw.js → Plugins-qYJD5ioU.js} +16 -16
- package/dist/interface/ha/{Recordings-0wDF4ArK.js → Recordings-CBIt3vL7.js} +354 -355
- package/dist/interface/ha/{SensorEdit-B0L2zIha.js → SensorEdit-BbG6apZA.js} +349 -349
- package/dist/interface/ha/{SensorHistory-CQJEY1sW.js → SensorHistory-CqGsnQPW.js} +2 -2
- package/dist/interface/ha/{Sensors-BYdBTCLo.js → Sensors-mKWkCDF8.js} +474 -448
- package/dist/interface/ha/{Settings-BaqGiBCa.js → Settings-C5J4ubiA.js} +10 -10
- package/dist/interface/ha/{SettingsAccount-B0Sth0EF.js → SettingsAccount-tCyZsBxG.js} +39 -39
- package/dist/interface/ha/{SettingsAppearance-B_oylmTa.js → SettingsAppearance-DqJp4Clt.js} +6 -6
- package/dist/interface/ha/{SettingsBackup-BLmoV5AW.js → SettingsBackup-CHnCKYgz.js} +5 -5
- package/dist/interface/ha/{SettingsList-CMX7wMye.js → SettingsList-DsQOPeKW.js} +1 -1
- package/dist/interface/ha/{SettingsMqtt-C-sGwxOZ.js → SettingsMqtt-TPIsEcXe.js} +180 -180
- package/dist/interface/ha/{SettingsNotifications-tc9FCCUF.js → SettingsNotifications-DH3T_xyh.js} +3 -3
- package/dist/interface/ha/{SettingsRecordings-DDs16z2A.js → SettingsRecordings-Ay8lj8Lm.js} +4 -4
- package/dist/interface/ha/{SettingsRemote-0c0umjFJ.js → SettingsRemote-CHiBADuu.js} +314 -314
- package/dist/interface/ha/{SettingsSystem-DfXxWXQk.js → SettingsSystem-tqs40pUW.js} +8 -8
- package/dist/interface/ha/{SettingsUsers-CmjC0zsF.js → SettingsUsers-BUbC_Qc7.js} +39 -39
- package/dist/interface/ha/{Terminal-nbUX6PPZ.js → Terminal-f_b-089t.js} +4 -4
- package/dist/interface/ha/Training-Dcxo9PFi.js +1479 -0
- package/dist/interface/ha/{Updates-UaxBGn6D.js → Updates-aGl5hy8Q.js} +11 -11
- package/dist/interface/ha/{VariableInput-0bF2H1Bm.js → VariableInput-yJGbaZEo.js} +1 -1
- package/dist/interface/ha/{VersionsHandler-CnXVnfBl.js → VersionsHandler-Q4PfRpbs.js} +10 -10
- package/dist/interface/ha/{VirtualSensorCreate-BE60rAkJ.js → VirtualSensorCreate-Gbi6aJBh.js} +8 -8
- package/dist/interface/ha/{Workers-CaX3Z3w-.js → Workers-BbBqOc0H.js} +129 -129
- package/dist/interface/ha/{api-CmcbBFTx.js → api-DBu4gh4_.js} +8390 -8315
- package/dist/interface/ha/{api-S-NnjUWl.js → api-DY0z6Sp_.js} +3 -3
- package/dist/interface/ha/{auth-CqYE7s1-.js → auth-C2V-kpRp.js} +38 -38
- package/dist/interface/ha/{automationBlueprint-Dmp54JD1.js → automationBlueprint-MGUZJTFY.js} +4 -4
- package/dist/interface/ha/cameraui-cards.js +1 -1
- package/dist/interface/ha/{cards-MnCBmBIR.js → cards-BA6g_9R5.js} +566 -566
- package/dist/interface/ha/{config-C94KN4WM.js → config-BGlhgEOa.js} +15 -15
- package/dist/interface/ha/{dist-BQFunPaA.js → dist-BqTZri2H.js} +743 -725
- package/dist/interface/ha/{mqtt-HDLqlOJt.js → mqtt-BLKZNA-E.js} +15 -15
- package/dist/interface/ha/{notifications-C2_2_NRh.js → notifications-BW0RNMnG.js} +22 -22
- package/dist/interface/ha/{pinia-DLNUke3Q.js → pinia-DINxhtY-.js} +168 -165
- package/dist/interface/ha/{plugins-l2i4DgqO.js → plugins-Cj-B4Nwy.js} +68 -68
- package/dist/interface/ha/{rooms-Bp1ZVAzT.js → rooms-C32i51p-.js} +8 -8
- package/dist/interface/ha/{server-BsduJDAB.js → server-CfbE_0Z9.js} +32 -32
- package/dist/interface/ha/{types-iZUCCt1P.js → types-Ry6RjBNa.js} +17 -17
- package/dist/interface/ha/ungrouped-CO29-tSV.js +1320 -0
- package/dist/interface/ha/{updates-CDsPvhpo.js → updates-CZPI8XJ1.js} +37 -37
- package/dist/interface/ha/{useAppVersion-BJtSGn4X.js → useAppVersion-9jfqRo_z.js} +1 -1
- package/dist/interface/ha/{useLogsSocket-Ck-ZQpQD.js → useLogsSocket-B0E7a3ys.js} +1 -1
- package/dist/interface/ha/{useNavLayout-Bn6HYs-i.js → useNavLayout-B2wfeha-.js} +2 -2
- package/dist/interface/ha/{useServerRestart-fff_KK9Y.js → useServerRestart-CCH-yMWR.js} +1 -1
- package/dist/interface/ha/{useTabSwipe-B1CQZuyT.js → useTabSwipe-D2uqGEvR.js} +1 -1
- package/dist/interface/ha/{useUpdateChannel-DUBmGEDe.js → useUpdateChannel--SP3Wjym.js} +2 -2
- package/dist/interface/ha/{useUpdatesSocket-DoLb2kcJ.js → useUpdatesSocket-BBbUCMU-.js} +1 -1
- package/dist/interface/ha/{useUserOptions-D0kNSHFH.js → useUserOptions-Bh54UAkH.js} +1 -1
- package/dist/interface/index.html +28 -27
- package/dist/interface/sw.js +1 -1
- package/dist/server/package.json +1 -1
- package/dist/server/src/api/controllers/training.controller.d.ts +4 -2
- package/dist/server/src/api/controllers/training.controller.js +2 -2
- package/dist/server/src/api/controllers/training.controller.js.map +1 -1
- package/dist/server/src/api/database/record-schemas.d.ts +1 -0
- package/dist/server/src/api/database/record-schemas.js +1 -0
- package/dist/server/src/api/database/record-schemas.js.map +1 -1
- package/dist/server/src/api/routes/training.routes.js +3 -2
- package/dist/server/src/api/routes/training.routes.js.map +1 -1
- package/dist/server/src/api/schemas/training.schema.d.ts +4 -0
- package/dist/server/src/api/schemas/training.schema.js +3 -0
- package/dist/server/src/api/schemas/training.schema.js.map +1 -1
- package/dist/server/src/api/services/sensors.service.d.ts +1 -0
- package/dist/server/src/api/services/sensors.service.js +1 -0
- package/dist/server/src/api/services/sensors.service.js.map +1 -1
- package/dist/server/src/api/types/index.d.ts +2 -1
- package/dist/server/src/camera/decoder/detection-coordinator.js +23 -7
- package/dist/server/src/camera/decoder/detection-coordinator.js.map +1 -1
- package/dist/server/src/camera/decoder/detection-window.d.ts +5 -0
- package/dist/server/src/camera/decoder/detection-window.js +5 -5
- package/dist/server/src/camera/decoder/detection-window.js.map +1 -1
- package/dist/server/src/camera/decoder/event-manager.d.ts +5 -1
- package/dist/server/src/camera/decoder/event-manager.js +21 -14
- package/dist/server/src/camera/decoder/event-manager.js.map +1 -1
- package/dist/server/src/camera/decoder/training-sink.d.ts +14 -3
- package/dist/server/src/camera/decoder/training-sink.js +32 -17
- package/dist/server/src/camera/decoder/training-sink.js.map +1 -1
- package/dist/server/src/camera/decoder/types.d.ts +1 -1
- package/dist/server/src/camera/decoder/types.js +2 -6
- package/dist/server/src/camera/decoder/types.js.map +1 -1
- package/dist/server/src/manager/trainingCandidateManager.d.ts +2 -3
- package/dist/server/src/manager/trainingCandidateManager.js +17 -18
- package/dist/server/src/manager/trainingCandidateManager.js.map +1 -1
- package/dist/server/src/manager/types.d.ts +5 -0
- package/dist/server/src/remote/api/routes/train.d.ts +6 -1
- package/dist/server/src/remote/api/routes/train.js +6 -2
- package/dist/server/src/remote/api/routes/train.js.map +1 -1
- package/dist/server/src/sensors/registry.d.ts +1 -0
- package/dist/server/src/sensors/registry.js +10 -0
- package/dist/server/src/sensors/registry.js.map +1 -1
- package/package.json +1 -1
- package/dist/interface/assets/Automation-CDvt2MXN.js +0 -3
- package/dist/interface/assets/Automations-2K-7hZfK.js +0 -2
- package/dist/interface/assets/Camera-B72IU-UF.js +0 -2
- package/dist/interface/assets/Camera-Cm9I0H6c.css +0 -1
- package/dist/interface/assets/Camview-KzzN0Q1w.js +0 -1
- package/dist/interface/assets/ConfigActionNotification-C2uXIMpm.js +0 -1
- package/dist/interface/assets/ConfigTriggerGeofence-Cuq1SnOZ.js +0 -1
- package/dist/interface/assets/Console-DkylrXI4.js +0 -1
- package/dist/interface/assets/CuiBottomSheet-DILQuWKb.js +0 -1
- package/dist/interface/assets/CuiCameraRecordings-Bi0I7jeO.js +0 -1
- package/dist/interface/assets/CuiCameraTable-CUdAnRJP.js +0 -1
- package/dist/interface/assets/CuiQRCode-D04Onyhk.js +0 -1
- package/dist/interface/assets/CuiRecordingsGrid-BhATIjIf.css +0 -1
- package/dist/interface/assets/CuiRecordingsGrid-BzyJWpFt.js +0 -1
- package/dist/interface/assets/CuiSchema-thjfmEWw.js +0 -1
- package/dist/interface/assets/FirstSteps-C6GVpZVr.js +0 -1
- package/dist/interface/assets/Floorplan-Q-UYDnrE.js +0 -1
- package/dist/interface/assets/Metrics-CYZF-em9.js +0 -9
- package/dist/interface/assets/Plugin-DuPHiiYJ.js +0 -1
- package/dist/interface/assets/PluginDetail-DWP7_hNa.js +0 -2
- package/dist/interface/assets/PluginSearch-1djFQUjL.js +0 -1
- package/dist/interface/assets/PluginSearch-Ba-hQHxm.js +0 -2
- package/dist/interface/assets/Plugins-BZ3U4pcG.js +0 -1
- package/dist/interface/assets/Recordings-CI5MIFR-.js +0 -1
- package/dist/interface/assets/SensorEdit-B6s-VZ3F.js +0 -1
- package/dist/interface/assets/Sensors-DDPUwbb-.js +0 -2
- package/dist/interface/assets/SettingsAccount-CKi0z3Bm.js +0 -1
- package/dist/interface/assets/SettingsAppearance-CDbQnSvl.js +0 -1
- package/dist/interface/assets/SettingsAppearance-D9Y28zzz.js +0 -1
- package/dist/interface/assets/SettingsNotifications-xHV5KiZg.js +0 -1
- package/dist/interface/assets/SettingsRemote-7h2dKJlF.js +0 -2
- package/dist/interface/assets/SettingsSystem-D-MLhCdN.js +0 -2
- package/dist/interface/assets/Training-B5SzDUAC.css +0 -1
- package/dist/interface/assets/Training-DWrQVSS0.js +0 -1
- package/dist/interface/assets/api-CFf063x3.js +0 -4
- package/dist/interface/assets/api-eoOLTOnS.css +0 -2
- package/dist/interface/assets/cameraSources-CgAEmb37.js +0 -1
- package/dist/interface/assets/cloudHandoff-B_kCnm4R.js +0 -1
- package/dist/interface/assets/main--lW4P3A4.js +0 -3
- package/dist/interface/assets/ungrouped-C6pQb0X4.css +0 -1
- package/dist/interface/assets/ungrouped-C_gJm6d7.js +0 -1
- package/dist/interface/assets/vendor-core-D0ANiY7g.js +0 -1
- package/dist/interface/ha/CuiRecordingsGrid-D6HHyF1D.js +0 -735
- package/dist/interface/ha/Training-GMcD4Qg9.js +0 -1440
- package/dist/interface/ha/ungrouped-wz-KNJpA.js +0 -426
|
@@ -2,28 +2,27 @@ import { D as e, G as t, H as n, Jt as r, U as i, Wt as a, Y as o, _t as s, d as
|
|
|
2
2
|
import { t as A } from "./tooltip-BIrD_hC8.js";
|
|
3
3
|
import { t as j } from "./message-C8U_kMBA.js";
|
|
4
4
|
import { t as M } from "./tag-CXgC9OZ6.js";
|
|
5
|
-
import {
|
|
6
|
-
import { F as
|
|
7
|
-
import { h as
|
|
8
|
-
import { n as
|
|
9
|
-
import { M as
|
|
10
|
-
import { t as
|
|
5
|
+
import { $n as N, Ar as ee, B as P, Ci as F, Cr as I, G as te, Hn as L, In as R, J as z, Jr as B, K as ne, Mn as re, Mr as V, Nr as ie, Qt as ae, R as oe, V as H, Xn as se, Yn as ce, _t as U, bi as le, bn as ue, br as W, cr as de, et as fe, gr as pe, h as me, ir as he, it as ge, jr as _e, kr as ve, nr as ye, qn as be, sr as xe, tt as Se, ut as Ce, wr as we, yr as Te, z as Ee } from "./api-DBu4gh4_.js";
|
|
6
|
+
import { F as De, M as Oe, z as ke } from "./protocol-BB4jdtUC-K1r3LFCq.js";
|
|
7
|
+
import { h as Ae, u as je } from "./intercomService-jB2mTgsn.js";
|
|
8
|
+
import { n as Me } from "./vue-i18n-Dcb07o5U.js";
|
|
9
|
+
import { M as Ne, ct as G, nt as K, tt as Pe } from "./dist-BqTZri2H.js";
|
|
10
|
+
import { t as Fe } from "./button-BlYuI0Q7.js";
|
|
11
11
|
import { t as q } from "./inputtext-DGIESrd0.js";
|
|
12
|
-
import { a as
|
|
13
|
-
import { t as
|
|
14
|
-
import { t as
|
|
15
|
-
import { t as
|
|
12
|
+
import { a as Ie, t as J } from "./datepicker-BuvKhBWJ.js";
|
|
13
|
+
import { t as Le } from "./close-Eq3txTBS.js";
|
|
14
|
+
import { t as Re } from "./select-DjWkRqsI.js";
|
|
15
|
+
import { t as ze } from "./progressbar-CIoPoMSe.js";
|
|
16
16
|
import { t as Y } from "./multiselect-BbgV_fPx.js";
|
|
17
|
-
import { t as
|
|
18
|
-
import { i as
|
|
19
|
-
import { t as
|
|
20
|
-
import { n as
|
|
21
|
-
import { t as
|
|
22
|
-
import { t as
|
|
23
|
-
import { t as
|
|
24
|
-
import { n as Xe, t as Ze } from "./round-alt-arrow-left-bold-CWEg-ZLF.js";
|
|
17
|
+
import { t as Be } from "./textarea-DvLkfUX7.js";
|
|
18
|
+
import { i as Ve, n as He, t as Ue } from "./eventLabels-B4C1_4vT.js";
|
|
19
|
+
import { t as We } from "./ring-resize-VS4MSeBv.js";
|
|
20
|
+
import { i as Ge, n as Ke, r as qe, t as Je } from "./ungrouped-CO29-tSV.js";
|
|
21
|
+
import { t as Ye } from "./utils-DYtBrGDz.js";
|
|
22
|
+
import { t as Xe } from "./settings-EKkSQLzv.js";
|
|
23
|
+
import { n as Ze, t as Qe } from "./round-alt-arrow-left-bold-CWEg-ZLF.js";
|
|
25
24
|
//#region node_modules/@camera.ui/sdk/dist/camera/events.js
|
|
26
|
-
var
|
|
25
|
+
var $e = [
|
|
27
26
|
"motion",
|
|
28
27
|
"audio",
|
|
29
28
|
"contact",
|
|
@@ -51,22 +50,22 @@ var Qe = [
|
|
|
51
50
|
width: "1.2em",
|
|
52
51
|
height: "1.2em"
|
|
53
52
|
};
|
|
54
|
-
function
|
|
53
|
+
function et(e, t) {
|
|
55
54
|
return n(), g("svg", X, [...t[0] ||= [x("path", {
|
|
56
55
|
fill: "currentColor",
|
|
57
56
|
d: "M22 18.605a.75.75 0 0 1-.75.75h-5.1a2.93 2.93 0 0 1-5.66 0H2.75a.75.75 0 1 1 0-1.5h7.74a2.93 2.93 0 0 1 5.66 0h5.1a.75.75 0 0 1 .75.75m0-13.21a.75.75 0 0 1-.75.75H18.8a2.93 2.93 0 0 1-5.66 0H2.75a.75.75 0 1 1 0-1.5h10.39a2.93 2.93 0 0 1 5.66 0h2.45a.74.74 0 0 1 .75.75m0 6.6a.74.74 0 0 1-.75.75H9.55a2.93 2.93 0 0 1-5.66 0H2.75a.75.75 0 1 1 0-1.5h1.14a2.93 2.93 0 0 1 5.66 0h11.7a.75.75 0 0 1 .75.75"
|
|
58
57
|
}, null, -1)]]);
|
|
59
58
|
}
|
|
60
|
-
var
|
|
59
|
+
var tt = s({
|
|
61
60
|
name: "mage-filter-fill",
|
|
62
|
-
render:
|
|
63
|
-
}),
|
|
61
|
+
render: et
|
|
62
|
+
}), nt = {
|
|
64
63
|
viewBox: "0 0 24 24",
|
|
65
64
|
width: "1.2em",
|
|
66
65
|
height: "1.2em"
|
|
67
66
|
};
|
|
68
|
-
function
|
|
69
|
-
return n(), g("svg",
|
|
67
|
+
function rt(e, t) {
|
|
68
|
+
return n(), g("svg", nt, [...t[0] ||= [x("path", {
|
|
70
69
|
fill: "none",
|
|
71
70
|
stroke: "currentColor",
|
|
72
71
|
"stroke-linecap": "round",
|
|
@@ -75,33 +74,33 @@ function nt(e, t) {
|
|
|
75
74
|
d: "M21.25 12H8.895m-4.361 0H2.75m18.5 6.607h-5.748m-4.361 0H2.75m18.5-13.214h-3.105m-4.361 0H2.75m13.214 2.18a2.18 2.18 0 1 0 0-4.36a2.18 2.18 0 0 0 0 4.36Zm-9.25 6.607a2.18 2.18 0 1 0 0-4.36a2.18 2.18 0 0 0 0 4.36Zm6.607 6.608a2.18 2.18 0 1 0 0-4.361a2.18 2.18 0 0 0 0 4.36Z"
|
|
76
75
|
}, null, -1)]]);
|
|
77
76
|
}
|
|
78
|
-
var
|
|
77
|
+
var it = s({
|
|
79
78
|
name: "mage-filter",
|
|
80
|
-
render:
|
|
81
|
-
}),
|
|
79
|
+
render: rt
|
|
80
|
+
}), at = {
|
|
82
81
|
viewBox: "0 0 24 24",
|
|
83
82
|
width: "1.2em",
|
|
84
83
|
height: "1.2em"
|
|
85
84
|
};
|
|
86
|
-
function
|
|
87
|
-
return n(), g("svg",
|
|
85
|
+
function Z(e, t) {
|
|
86
|
+
return n(), g("svg", at, [...t[0] ||= [x("path", {
|
|
88
87
|
fill: "currentColor",
|
|
89
88
|
d: "M6 12.45V9.64c1.47.83 3.61 1.36 6 1.36s4.53-.53 6-1.36v2.39c.17-.03.33-.03.5-.03c.5 0 1 .07 1.5.18V7c0-2.21-3.58-4-8-4S4 4.79 4 7v10c0 2.21 3.59 4 8 4h.5c-.26-.63-.41-1.3-.47-2H12c-3.87 0-6-1.5-6-2v-2.23c1.61.78 3.72 1.23 6 1.23h.5c.35-.82.84-1.54 1.45-2.14c-.63.09-1.28.14-1.95.14c-2.42 0-4.7-.6-6-1.55M12 5c3.87 0 6 1.5 6 2s-2.13 2-6 2s-6-1.5-6-2s2.13-2 6-2m6 13.5l1.77-1.77A2.5 2.5 0 1 0 20 20h1.71A3.99 3.99 0 0 1 18 22.5c-2.21 0-4-1.79-4-4s1.79-4 4-4c1.11 0 2.11.45 2.83 1.17L22 14.5v4z"
|
|
90
89
|
}, null, -1)]]);
|
|
91
90
|
}
|
|
92
|
-
var
|
|
91
|
+
var ot = s({
|
|
93
92
|
name: "mdi-database-refresh-outline",
|
|
94
|
-
render:
|
|
95
|
-
}),
|
|
93
|
+
render: Z
|
|
94
|
+
}), st = { class: "flex flex-col gap-4" }, ct = { class: "text-sm text-pretty" }, lt = {
|
|
96
95
|
key: 0,
|
|
97
96
|
class: "flex flex-col gap-2"
|
|
98
|
-
},
|
|
97
|
+
}, ut = {
|
|
99
98
|
key: 0,
|
|
100
99
|
class: "flex justify-between text-sm text-muted"
|
|
101
|
-
},
|
|
100
|
+
}, dt = { key: 0 }, ft = /* @__PURE__ */ T({
|
|
102
101
|
__name: "ClipReindex",
|
|
103
102
|
setup(t, { expose: i }) {
|
|
104
|
-
let a = e("dialogRefProps"), { t: o } =
|
|
103
|
+
let a = e("dialogRefProps"), { t: o } = Me(), { status: s, isBusy: c, checking: u, refresh: p, start: m, cancel: _ } = he(), v = E(!1), y = E(!1), S = E(0), C = f(() => s.value?.running === !0), w = f(() => {
|
|
105
104
|
if (y.value) {
|
|
106
105
|
if (!s.value?.total) return o("views.recordings.reindex.up_to_date");
|
|
107
106
|
let { done: e, total: t, skipped: n } = s.value;
|
|
@@ -132,49 +131,49 @@ var at = s({
|
|
|
132
131
|
s.value?.running && (v.value = !0);
|
|
133
132
|
});
|
|
134
133
|
}), i({ onConfirm: O }), (e, t) => {
|
|
135
|
-
let i =
|
|
136
|
-
return n(), g("div",
|
|
134
|
+
let i = ze;
|
|
135
|
+
return n(), g("div", st, [x("span", ct, r(d(w)), 1), d(v) || d(C) ? (n(), g("div", lt, [D(i, {
|
|
137
136
|
mode: d(u) ? "indeterminate" : "determinate",
|
|
138
137
|
value: d(T),
|
|
139
138
|
"show-value": !1,
|
|
140
139
|
class: "h-2"
|
|
141
|
-
}, null, 8, ["mode", "value"]), d(C) && !d(u) ? (n(), g("div",
|
|
140
|
+
}, null, 8, ["mode", "value"]), d(C) && !d(u) ? (n(), g("div", ut, [x("span", null, r(e.$t("views.recordings.reindex.progress", {
|
|
142
141
|
done: d(s)?.done ?? 0,
|
|
143
142
|
total: d(s)?.total ?? 0
|
|
144
|
-
})), 1), d(s)?.skipped ? (n(), g("span",
|
|
143
|
+
})), 1), d(s)?.skipped ? (n(), g("span", dt, r(e.$t("views.recordings.reindex.skipped", { count: d(s).skipped })), 1)) : l("", !0)])) : l("", !0)])) : l("", !0)]);
|
|
145
144
|
};
|
|
146
145
|
}
|
|
147
|
-
}),
|
|
146
|
+
}), pt = {
|
|
148
147
|
viewBox: "0 0 24 24",
|
|
149
148
|
width: "1.2em",
|
|
150
149
|
height: "1.2em"
|
|
151
150
|
};
|
|
152
|
-
function
|
|
153
|
-
return n(), g("svg",
|
|
151
|
+
function mt(e, t) {
|
|
152
|
+
return n(), g("svg", pt, [...t[0] ||= [x("path", {
|
|
154
153
|
fill: "currentColor",
|
|
155
154
|
d: "m14 2l6 6v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zm4 18V9h-5V4H6v16zm-2-2l-2.5-1.7V18H8v-5h5.5v1.7L16 13z"
|
|
156
155
|
}, null, -1)]]);
|
|
157
156
|
}
|
|
158
|
-
var
|
|
157
|
+
var ht = s({
|
|
159
158
|
name: "mdi-file-video-outline",
|
|
160
|
-
render:
|
|
161
|
-
}),
|
|
159
|
+
render: mt
|
|
160
|
+
}), gt = { class: "flex flex-col gap-6" }, _t = { class: "flex flex-col field-gap" }, vt = { class: "cui-label" }, yt = { class: "flex flex-col field-gap" }, Q = { class: "cui-label" }, bt = { class: "grid grid-cols-1 xs:grid-cols-2 gap-3" }, $ = { class: "flex flex-col gap-1" }, xt = { class: "text-xs text-muted" }, St = { class: "flex flex-col gap-1" }, Ct = { class: "text-xs text-muted" }, wt = { class: "grid grid-cols-1 xs:grid-cols-2 gap-x-6 gap-y-4" }, Tt = { class: "flex flex-col field-gap" }, Et = { class: "cui-label" }, Dt = { class: "flex flex-col field-gap" }, Ot = { class: "cui-label" }, kt = { class: "flex flex-col field-gap" }, At = { class: "flex items-center gap-3" }, jt = { class: "cui-label !mb-0" }, Mt = {
|
|
162
161
|
key: 0,
|
|
163
162
|
class: "ml-auto flex items-center gap-2.5 text-sm tabular-nums"
|
|
164
|
-
},
|
|
163
|
+
}, Nt = { class: "font-semibold" }, Pt = { class: "font-semibold" }, Ft = { class: "border border-color rounded-xl card-background overflow-hidden" }, It = { class: "flex flex-col gap-3 max-h-[240px] overflow-y-auto p-2.5" }, Lt = {
|
|
165
164
|
key: 0,
|
|
166
165
|
class: "flex items-center justify-center gap-2 text-muted text-sm py-6"
|
|
167
|
-
},
|
|
166
|
+
}, Rt = {
|
|
168
167
|
key: 1,
|
|
169
168
|
class: "text-center text-muted text-sm py-6"
|
|
170
|
-
},
|
|
169
|
+
}, zt = { class: "text-xs text-muted px-0.5" }, Bt = { class: "font-mono text-xs truncate flex-1" }, Vt = { class: "text-xs text-muted tabular-nums shrink-0" }, Ht = { class: "font-mono text-xs text-muted tabular-nums shrink-0 min-w-[58px] text-right" }, Ut = 30, Wt = /* @__PURE__ */ T({
|
|
171
170
|
__name: "ExportRecordings",
|
|
172
171
|
props: {
|
|
173
172
|
cameras: {},
|
|
174
173
|
preselect: {}
|
|
175
174
|
},
|
|
176
175
|
setup(i, { expose: a }) {
|
|
177
|
-
let o = i, { t: s } =
|
|
176
|
+
let o = i, { t: s } = Me(), m = F(), h = e("dialogRefProps"), { plugin: _ } = Ne("@camera.ui/camera-ui-nvr"), y = E([]), S = E(!1), w = E(o.preselect?.length ? [...o.preselect] : []), T = E("best"), O = E(0), k = E(new Date((/* @__PURE__ */ new Date()).setHours(0, 0, 0, 0))), A = E(/* @__PURE__ */ new Date()), N = f(() => [{
|
|
178
177
|
label: s("views.recordings.export.quality_best"),
|
|
179
178
|
value: "best"
|
|
180
179
|
}, {
|
|
@@ -195,8 +194,8 @@ var mt = s({
|
|
|
195
194
|
].map((e) => ({
|
|
196
195
|
label: e === 0 ? s("views.recordings.export.timelapse_off") : e < 60 ? `${e} s` : `${e / 60} min`,
|
|
197
196
|
value: e
|
|
198
|
-
}))), P = f(() => O.value > 0),
|
|
199
|
-
if (!
|
|
197
|
+
}))), P = f(() => O.value > 0), I = f(() => P.value ? "~" : ""), te = f(() => new Map(o.cameras.map((e) => [e.id, e.name]))), L = f(() => k.value instanceof Date && A.value instanceof Date && k.value < A.value), R = f(() => {
|
|
198
|
+
if (!L.value) return [];
|
|
200
199
|
let e = [], t = k.value.getTime(), n = A.value.getTime(), r = new Date(k.value);
|
|
201
200
|
r.setHours(0, 0, 0, 0);
|
|
202
201
|
let i = new Date(A.value);
|
|
@@ -205,24 +204,24 @@ var mt = s({
|
|
|
205
204
|
a.setDate(a.getDate() + 1);
|
|
206
205
|
let o = Math.max(i.getTime(), t), s = Math.min(a.getTime(), n);
|
|
207
206
|
s > o && e.push({
|
|
208
|
-
day:
|
|
207
|
+
day: ie(i),
|
|
209
208
|
startUs: o * 1e3,
|
|
210
209
|
endUs: s * 1e3
|
|
211
210
|
}), r.setDate(r.getDate() + 1);
|
|
212
211
|
}
|
|
213
212
|
return e;
|
|
214
|
-
}),
|
|
215
|
-
let t = te.value.get(e.cameraId) ?? e.cameraId, n = /* @__PURE__ */ new Date(e.startUs / 1e3), r = /* @__PURE__ */ new Date(e.endUs / 1e3), i = n.getHours() === 0 && n.getMinutes() === 0 && e.endUs - e.startUs === 864e8, a = r.getHours() === 0 && r.getMinutes() === 0 ? "24:00" :
|
|
213
|
+
}), z = f(() => y.value.map((e) => {
|
|
214
|
+
let t = te.value.get(e.cameraId) ?? e.cameraId, n = /* @__PURE__ */ new Date(e.startUs / 1e3), r = /* @__PURE__ */ new Date(e.endUs / 1e3), i = n.getHours() === 0 && n.getMinutes() === 0 && e.endUs - e.startUs === 864e8, a = r.getHours() === 0 && r.getMinutes() === 0 ? "24:00" : ae(r);
|
|
216
215
|
return {
|
|
217
216
|
cameraId: e.cameraId,
|
|
218
217
|
cameraName: t,
|
|
219
|
-
name: `${
|
|
220
|
-
span: i ? s("views.recordings.export.whole_day") : `${
|
|
221
|
-
bytes: P.value ? e.bytes /
|
|
218
|
+
name: `${oe(t)}_${e.day}${P.value ? "_timelapse" : ""}.mp4`,
|
|
219
|
+
span: i ? s("views.recordings.export.whole_day") : `${ae(n)}–${a}`,
|
|
220
|
+
bytes: P.value ? e.bytes / Ut : e.bytes
|
|
222
221
|
};
|
|
223
|
-
})),
|
|
222
|
+
})), B = f(() => {
|
|
224
223
|
let e = /* @__PURE__ */ new Map();
|
|
225
|
-
for (let t of
|
|
224
|
+
for (let t of z.value) {
|
|
226
225
|
let n = e.get(t.cameraId);
|
|
227
226
|
n || (n = {
|
|
228
227
|
cameraId: t.cameraId,
|
|
@@ -232,29 +231,29 @@ var mt = s({
|
|
|
232
231
|
}, e.set(t.cameraId, n)), n.files.push(t), n.bytes += t.bytes;
|
|
233
232
|
}
|
|
234
233
|
return [...e.values()];
|
|
235
|
-
}),
|
|
236
|
-
function
|
|
234
|
+
}), ne = f(() => z.value.reduce((e, t) => e + t.bytes, 0)), re = f(() => w.value.length === 0 ? s("views.recordings.export.no_cameras") : L.value ? s("views.recordings.export.no_footage") : s("views.recordings.export.no_range"));
|
|
235
|
+
function V(e) {
|
|
237
236
|
return String(e).padStart(2, "0");
|
|
238
237
|
}
|
|
239
|
-
function
|
|
240
|
-
return `${e.getFullYear()}-${
|
|
238
|
+
function ie(e) {
|
|
239
|
+
return `${e.getFullYear()}-${V(e.getMonth() + 1)}-${V(e.getDate())}`;
|
|
241
240
|
}
|
|
242
|
-
function
|
|
243
|
-
return `${
|
|
241
|
+
function ae(e) {
|
|
242
|
+
return `${V(e.getHours())}:${V(e.getMinutes())}`;
|
|
244
243
|
}
|
|
245
|
-
function
|
|
244
|
+
function oe(e) {
|
|
246
245
|
return e.replace(/[^a-zA-Z0-9-_]/g, "_");
|
|
247
246
|
}
|
|
248
|
-
function
|
|
247
|
+
function H(e) {
|
|
249
248
|
if (e <= 0) return "0 MB";
|
|
250
249
|
let t = e / 1e6;
|
|
251
250
|
if (t < 1e3) return `${t < 10 ? t.toFixed(1) : Math.round(t)} MB`;
|
|
252
251
|
let n = e / 1e9;
|
|
253
252
|
return `${n.toFixed(+(n < 10))} GB`;
|
|
254
253
|
}
|
|
255
|
-
async function
|
|
254
|
+
async function se() {
|
|
256
255
|
let e = _.value;
|
|
257
|
-
if (!e?.nvrExportEstimate || w.value.length === 0 ||
|
|
256
|
+
if (!e?.nvrExportEstimate || w.value.length === 0 || R.value.length === 0) {
|
|
258
257
|
y.value = [], S.value = !1;
|
|
259
258
|
return;
|
|
260
259
|
}
|
|
@@ -262,7 +261,7 @@ var mt = s({
|
|
|
262
261
|
try {
|
|
263
262
|
let t = await e.nvrExportEstimate({
|
|
264
263
|
cameras: w.value,
|
|
265
|
-
slices:
|
|
264
|
+
slices: R.value,
|
|
266
265
|
quality: T.value
|
|
267
266
|
});
|
|
268
267
|
y.value = t.files ?? [];
|
|
@@ -273,7 +272,7 @@ var mt = s({
|
|
|
273
272
|
}
|
|
274
273
|
}
|
|
275
274
|
async function ce() {
|
|
276
|
-
if (!
|
|
275
|
+
if (!L.value || w.value.length === 0 || R.value.length === 0) return null;
|
|
277
276
|
let e = _.value;
|
|
278
277
|
if (!e?.nvrExportBatch) return m.add({
|
|
279
278
|
severity: "error",
|
|
@@ -282,29 +281,29 @@ var mt = s({
|
|
|
282
281
|
}), null;
|
|
283
282
|
let t = await e.nvrExportBatch({
|
|
284
283
|
cameras: w.value,
|
|
285
|
-
slices:
|
|
284
|
+
slices: R.value,
|
|
286
285
|
quality: T.value,
|
|
287
286
|
timelapseIntervalSec: P.value ? O.value : 0
|
|
288
287
|
});
|
|
289
|
-
await
|
|
288
|
+
await W({
|
|
290
289
|
url: t.url,
|
|
291
290
|
filename: t.filename
|
|
292
291
|
});
|
|
293
292
|
}
|
|
294
|
-
return
|
|
293
|
+
return ke([
|
|
295
294
|
w,
|
|
296
|
-
|
|
295
|
+
R,
|
|
297
296
|
T
|
|
298
|
-
],
|
|
297
|
+
], se, {
|
|
299
298
|
debounce: 350,
|
|
300
299
|
immediate: !0,
|
|
301
300
|
deep: !0
|
|
302
301
|
}), b(() => {
|
|
303
|
-
h.disabled && (h.disabled.value = !
|
|
302
|
+
h.disabled && (h.disabled.value = !L.value || w.value.length === 0 || !S.value && z.value.length === 0);
|
|
304
303
|
}), a({ onConfirm: ce }), (e, a) => {
|
|
305
|
-
let o = Y, s = J, f = j, m =
|
|
306
|
-
return n(), g("div",
|
|
307
|
-
x("div",
|
|
304
|
+
let o = Y, s = J, f = j, m = de, h = Re, _ = M, y = we, b = ht;
|
|
305
|
+
return n(), g("div", gt, [
|
|
306
|
+
x("div", _t, [x("label", vt, r(e.$t("views.recordings.export.cameras")), 1), D(o, {
|
|
308
307
|
modelValue: d(w),
|
|
309
308
|
"onUpdate:modelValue": a[0] ||= (e) => u(w) ? w.value = e : null,
|
|
310
309
|
options: i.cameras,
|
|
@@ -319,16 +318,16 @@ var mt = s({
|
|
|
319
318
|
"options",
|
|
320
319
|
"placeholder"
|
|
321
320
|
])]),
|
|
322
|
-
x("div",
|
|
323
|
-
x("label",
|
|
324
|
-
x("div",
|
|
321
|
+
x("div", yt, [
|
|
322
|
+
x("label", Q, r(e.$t("views.recordings.export.range")), 1),
|
|
323
|
+
x("div", bt, [x("div", $, [x("span", xt, r(e.$t("views.recordings.export.from")), 1), D(s, {
|
|
325
324
|
modelValue: d(k),
|
|
326
325
|
"onUpdate:modelValue": a[1] ||= (e) => u(k) ? k.value = e : null,
|
|
327
326
|
"show-time": "",
|
|
328
327
|
"hour-format": "24",
|
|
329
328
|
fluid: "",
|
|
330
329
|
"max-date": d(A)
|
|
331
|
-
}, null, 8, ["modelValue", "max-date"])]), x("div",
|
|
330
|
+
}, null, 8, ["modelValue", "max-date"])]), x("div", St, [x("span", Ct, r(e.$t("views.recordings.export.to")), 1), D(s, {
|
|
332
331
|
modelValue: d(A),
|
|
333
332
|
"onUpdate:modelValue": a[2] ||= (e) => u(A) ? A.value = e : null,
|
|
334
333
|
"show-time": "",
|
|
@@ -336,7 +335,7 @@ var mt = s({
|
|
|
336
335
|
fluid: "",
|
|
337
336
|
"min-date": d(k)
|
|
338
337
|
}, null, 8, ["modelValue", "min-date"])])]),
|
|
339
|
-
d(
|
|
338
|
+
d(L) ? (n(), c(f, {
|
|
340
339
|
key: 1,
|
|
341
340
|
severity: "secondary",
|
|
342
341
|
variant: "simple",
|
|
@@ -356,7 +355,7 @@ var mt = s({
|
|
|
356
355
|
_: 1
|
|
357
356
|
}))
|
|
358
357
|
]),
|
|
359
|
-
x("div",
|
|
358
|
+
x("div", wt, [x("div", Tt, [x("label", Et, r(e.$t("views.recordings.export.quality")), 1), D(m, {
|
|
360
359
|
modelValue: d(T),
|
|
361
360
|
"onUpdate:modelValue": a[3] ||= (e) => u(T) ? T.value = e : null,
|
|
362
361
|
options: d(N),
|
|
@@ -367,7 +366,7 @@ var mt = s({
|
|
|
367
366
|
root: { class: "flex w-full" },
|
|
368
367
|
pcToggleButton: { root: { class: "flex-1" } }
|
|
369
368
|
}
|
|
370
|
-
}, null, 8, ["modelValue", "options"])]), x("div",
|
|
369
|
+
}, null, 8, ["modelValue", "options"])]), x("div", Dt, [x("label", Ot, r(e.$t("views.recordings.export.timelapse")), 1), D(h, {
|
|
371
370
|
modelValue: d(O),
|
|
372
371
|
"onUpdate:modelValue": a[4] ||= (e) => u(O) ? O.value = e : null,
|
|
373
372
|
options: d(ee),
|
|
@@ -375,43 +374,43 @@ var mt = s({
|
|
|
375
374
|
"option-value": "value",
|
|
376
375
|
class: "w-full"
|
|
377
376
|
}, null, 8, ["modelValue", "options"])])]),
|
|
378
|
-
x("div",
|
|
379
|
-
x("span",
|
|
377
|
+
x("div", kt, [x("div", At, [x("label", jt, r(e.$t("views.recordings.export.result")), 1), d(z).length ? (n(), g("div", Mt, [
|
|
378
|
+
x("span", Nt, r(d(z).length) + " " + r(d(z).length === 1 ? e.$t("views.recordings.export.file") : e.$t("views.recordings.export.files")), 1),
|
|
380
379
|
a[5] ||= x("span", { class: "text-muted" }, "·", -1),
|
|
381
|
-
x("span",
|
|
380
|
+
x("span", Pt, r(d(I)) + r(H(d(ne))), 1),
|
|
382
381
|
D(_, {
|
|
383
|
-
value: d(
|
|
382
|
+
value: d(z).length === 1 ? "MP4" : "ZIP",
|
|
384
383
|
severity: "info"
|
|
385
384
|
}, null, 8, ["value"])
|
|
386
|
-
])) : l("", !0)]), x("div",
|
|
385
|
+
])) : l("", !0)]), x("div", Ft, [x("div", It, [d(S) && !d(z).length ? (n(), g("div", Lt, [D(y, {
|
|
387
386
|
style: {
|
|
388
387
|
width: "1rem",
|
|
389
388
|
height: "1rem"
|
|
390
389
|
},
|
|
391
390
|
"stroke-width": "4",
|
|
392
391
|
class: "m-0"
|
|
393
|
-
}), x("span", null, r(e.$t("views.recordings.export.estimating")), 1)])) : d(
|
|
392
|
+
}), x("span", null, r(e.$t("views.recordings.export.estimating")), 1)])) : d(z).length ? (n(!0), g(v, { key: 2 }, t(d(B), (e) => (n(), g("div", {
|
|
394
393
|
key: e.cameraId,
|
|
395
394
|
class: "flex flex-col gap-1"
|
|
396
|
-
}, [x("span",
|
|
395
|
+
}, [x("span", zt, r(e.cameraName) + " · " + r(e.files.length) + " · " + r(d(I)) + r(H(e.bytes)), 1), (n(!0), g(v, null, t(e.files, (e) => (n(), g("div", {
|
|
397
396
|
key: e.name,
|
|
398
397
|
class: "flex items-center gap-3 card-inner-background border border-color rounded-lg px-3 py-2"
|
|
399
398
|
}, [
|
|
400
399
|
D(b, { class: "w-4 h-4 text-muted shrink-0" }),
|
|
401
|
-
x("span",
|
|
402
|
-
x("span",
|
|
403
|
-
x("span",
|
|
404
|
-
]))), 128))]))), 128)) : (n(), g("div",
|
|
400
|
+
x("span", Bt, r(e.name), 1),
|
|
401
|
+
x("span", Vt, r(e.span), 1),
|
|
402
|
+
x("span", Ht, r(d(I)) + r(H(e.bytes)), 1)
|
|
403
|
+
]))), 128))]))), 128)) : (n(), g("div", Rt, r(d(re)), 1))])])])
|
|
405
404
|
]);
|
|
406
405
|
};
|
|
407
406
|
}
|
|
408
|
-
}),
|
|
407
|
+
}), Gt = {
|
|
409
408
|
viewBox: "0 0 24 24",
|
|
410
409
|
width: "1.2em",
|
|
411
410
|
height: "1.2em"
|
|
412
411
|
};
|
|
413
|
-
function
|
|
414
|
-
return n(), g("svg",
|
|
412
|
+
function Kt(e, t) {
|
|
413
|
+
return n(), g("svg", Gt, [...t[0] ||= [x("path", {
|
|
415
414
|
fill: "none",
|
|
416
415
|
stroke: "currentColor",
|
|
417
416
|
"stroke-linecap": "round",
|
|
@@ -420,16 +419,16 @@ function Gt(e, t) {
|
|
|
420
419
|
d: "m6 9l6 6l6-6"
|
|
421
420
|
}, null, -1)]]);
|
|
422
421
|
}
|
|
423
|
-
var
|
|
422
|
+
var qt = s({
|
|
424
423
|
name: "tabler-chevron-down",
|
|
425
|
-
render:
|
|
426
|
-
}),
|
|
424
|
+
render: Kt
|
|
425
|
+
}), Jt = {
|
|
427
426
|
viewBox: "0 0 24 24",
|
|
428
427
|
width: "1.2em",
|
|
429
428
|
height: "1.2em"
|
|
430
429
|
};
|
|
431
|
-
function
|
|
432
|
-
return n(), g("svg",
|
|
430
|
+
function Yt(e, t) {
|
|
431
|
+
return n(), g("svg", Jt, [...t[0] ||= [x("path", {
|
|
433
432
|
fill: "none",
|
|
434
433
|
stroke: "currentColor",
|
|
435
434
|
"stroke-linecap": "round",
|
|
@@ -438,40 +437,40 @@ function Jt(e, t) {
|
|
|
438
437
|
d: "m6 15l6-6l6 6"
|
|
439
438
|
}, null, -1)]]);
|
|
440
439
|
}
|
|
441
|
-
var
|
|
440
|
+
var Xt = s({
|
|
442
441
|
name: "tabler-chevron-up",
|
|
443
|
-
render:
|
|
444
|
-
}),
|
|
442
|
+
render: Yt
|
|
443
|
+
}), Zt = { class: "flex flex-col gap-2" }, Qt = { class: "sidebar-section-title" }, $t = {
|
|
445
444
|
key: 0,
|
|
446
445
|
class: "text-xs text-muted"
|
|
447
|
-
},
|
|
446
|
+
}, en = { class: "flex flex-col gap-2" }, tn = { class: "sidebar-section-title" }, nn = { class: "p-input-icon-left w-full" }, rn = { class: "text-xs text-muted" }, an = { class: "flex flex-col gap-2" }, on = { class: "sidebar-section-title flex items-center gap-1.5" }, sn = {
|
|
448
447
|
key: 0,
|
|
449
448
|
class: "inline-flex items-center gap-1 text-xs text-muted"
|
|
450
|
-
},
|
|
449
|
+
}, cn = {
|
|
451
450
|
key: 1,
|
|
452
451
|
class: "flex flex-col gap-1.5 mt-1"
|
|
453
|
-
},
|
|
452
|
+
}, ln = { class: "text-xs text-muted" }, un = { class: "flex items-center gap-3" }, dn = { class: "text-xs font-mono w-8 text-right shrink-0" }, fn = {
|
|
454
453
|
key: 1,
|
|
455
454
|
class: "flex flex-col gap-2"
|
|
456
|
-
},
|
|
455
|
+
}, pn = { class: "sidebar-section-title" }, mn = { class: "flex flex-col gap-2" }, hn = { class: "sidebar-section-title" }, gn = { class: "flex flex-col gap-2" }, _n = { class: "sidebar-section-title" }, vn = { class: "relative rounded-md overflow-hidden" }, yn = {
|
|
457
456
|
key: 3,
|
|
458
457
|
class: "sidebar-divider"
|
|
459
|
-
},
|
|
458
|
+
}, bn = {
|
|
460
459
|
key: 4,
|
|
461
460
|
class: "flex flex-col gap-2"
|
|
462
|
-
},
|
|
461
|
+
}, xn = { class: "sidebar-section-title" }, Sn = { class: "flex items-center gap-3" }, Cn = { class: "text-xs font-mono w-8 text-right shrink-0" }, wn = { class: "flex flex-col gap-2" }, Tn = { class: "sidebar-section-title" }, En = { class: "flex flex-wrap gap-1" }, Dn = { class: "flex flex-col gap-2" }, On = {
|
|
463
462
|
key: 0,
|
|
464
463
|
class: "flex flex-col gap-2"
|
|
465
|
-
},
|
|
464
|
+
}, kn = { class: "flex items-center gap-2 cursor-pointer text-sm" }, An = {
|
|
466
465
|
key: 0,
|
|
467
466
|
class: "flex flex-col gap-2 ml-6"
|
|
468
|
-
},
|
|
467
|
+
}, jn = { class: "filter-logic-divider" }, Mn = { class: "flex flex-col gap-2" }, Nn = {
|
|
469
468
|
key: 0,
|
|
470
469
|
class: "flex flex-col gap-2"
|
|
471
|
-
},
|
|
470
|
+
}, Pn = { class: "filter-logic-divider" }, Fn = { class: "flex flex-col gap-2" }, In = {
|
|
472
471
|
key: 0,
|
|
473
472
|
class: "flex flex-col gap-2"
|
|
474
|
-
},
|
|
473
|
+
}, Ln = { class: "flex items-center gap-2 cursor-pointer text-sm" }, Rn = 288, zn = /*#__PURE__*/ I(/* @__PURE__ */ T({
|
|
475
474
|
__name: "RecordingsFilterSidebar",
|
|
476
475
|
props: {
|
|
477
476
|
filters: {},
|
|
@@ -489,11 +488,11 @@ var Yt = s({
|
|
|
489
488
|
"close"
|
|
490
489
|
],
|
|
491
490
|
setup(e, { expose: i, emit: a }) {
|
|
492
|
-
let s = /* @__PURE__ */ new Set(["motion", "audio"]), p = e, m = a, { t: b } =
|
|
491
|
+
let s = /* @__PURE__ */ new Set(["motion", "audio"]), p = e, m = a, { t: b } = Me(), { xlBreakpoint: S } = V(), { topbarOffset: w, bottombarHeight: T } = ie(), { icons: k, generic: A } = U(), j = k, M = Xt, N = qt, ee = y("sidebarRef"), P = E(p.filters.semanticQuery ?? ""), F = O({
|
|
493
492
|
eventTypes: !0,
|
|
494
493
|
attributes: !0,
|
|
495
494
|
sensorEvents: !0
|
|
496
|
-
}),
|
|
495
|
+
}), I = f(() => p.isOpen ? Rn : 0), te = f(() => {
|
|
497
496
|
let e = [...new Set(p.cameras.map((e) => e.room).filter((e) => !!e))];
|
|
498
497
|
return e.sort((e, t) => e.localeCompare(t)), e.map((e) => ({
|
|
499
498
|
id: e,
|
|
@@ -505,9 +504,9 @@ var Yt = s({
|
|
|
505
504
|
id: e.id,
|
|
506
505
|
name: e.name
|
|
507
506
|
}));
|
|
508
|
-
}),
|
|
507
|
+
}), z = f(() => {
|
|
509
508
|
if (p.filters.cameraIds.length === 1) return p.cameras.find((e) => e.id === p.filters.cameraIds[0])?.name;
|
|
510
|
-
}),
|
|
509
|
+
}), B = f(() => p.filters.contentKind === "episodes"), ne = f(() => [
|
|
511
510
|
{
|
|
512
511
|
label: b("views.recordings.content_kind_all"),
|
|
513
512
|
value: "all"
|
|
@@ -520,13 +519,13 @@ var Yt = s({
|
|
|
520
519
|
label: b("views.recordings.content_kind_episodes"),
|
|
521
520
|
value: "episodes"
|
|
522
521
|
}
|
|
523
|
-
]),
|
|
522
|
+
]), re = f(() => [{
|
|
524
523
|
label: b("views.recordings.filter_and"),
|
|
525
524
|
value: "and"
|
|
526
525
|
}, {
|
|
527
526
|
label: b("views.recordings.filter_or"),
|
|
528
527
|
value: "or"
|
|
529
|
-
}]),
|
|
528
|
+
}]), ae = f(() => [
|
|
530
529
|
{
|
|
531
530
|
label: b("views.recordings.time_1h"),
|
|
532
531
|
value: "1h"
|
|
@@ -543,24 +542,24 @@ var Yt = s({
|
|
|
543
542
|
label: b("views.recordings.time_1m"),
|
|
544
543
|
value: "1m"
|
|
545
544
|
}
|
|
546
|
-
]),
|
|
545
|
+
]), oe = f(() => K.filter((e) => !s.has(e)).map((e) => ({
|
|
547
546
|
label: b(`views.recordings.type_${e}`),
|
|
548
547
|
value: e,
|
|
549
548
|
icon: k[e] ?? A
|
|
550
|
-
}))),
|
|
549
|
+
}))), H = f(() => ({
|
|
551
550
|
label: b("views.recordings.type_other"),
|
|
552
|
-
value:
|
|
551
|
+
value: be,
|
|
553
552
|
icon: k.other ?? A
|
|
554
|
-
})), se = f(() =>
|
|
555
|
-
label: b(
|
|
553
|
+
})), se = f(() => $e.map((e) => ({
|
|
554
|
+
label: b(Ve(e)),
|
|
556
555
|
value: e,
|
|
557
556
|
icon: j[e] ?? A
|
|
558
|
-
}))), ce = f(() =>
|
|
559
|
-
label: b(
|
|
557
|
+
}))), ce = f(() => G.map((e) => ({
|
|
558
|
+
label: b(He(e)),
|
|
560
559
|
value: e,
|
|
561
560
|
icon: k[e] ?? A
|
|
562
|
-
}))), le = f(() =>
|
|
563
|
-
label: b(
|
|
561
|
+
}))), le = f(() => Pe.map((e) => ({
|
|
562
|
+
label: b(Ue(e)),
|
|
564
563
|
value: e,
|
|
565
564
|
icon: k[e] ?? A
|
|
566
565
|
})));
|
|
@@ -570,10 +569,10 @@ var Yt = s({
|
|
|
570
569
|
[e]: t
|
|
571
570
|
});
|
|
572
571
|
}
|
|
573
|
-
let
|
|
572
|
+
let fe = De((e) => {
|
|
574
573
|
W("search", e);
|
|
575
574
|
}, 300);
|
|
576
|
-
function
|
|
575
|
+
function pe(e) {
|
|
577
576
|
let t = new Set(p.cameras.filter((t) => e.length === 0 || e.includes(t.room ?? "")).map((e) => e.id));
|
|
578
577
|
m("update:filters", {
|
|
579
578
|
...p.filters,
|
|
@@ -581,7 +580,7 @@ var Yt = s({
|
|
|
581
580
|
cameraIds: p.filters.cameraIds.filter((e) => t.has(e))
|
|
582
581
|
});
|
|
583
582
|
}
|
|
584
|
-
function
|
|
583
|
+
function me() {
|
|
585
584
|
let e = P.value.trim();
|
|
586
585
|
W("semanticQuery", e), m("semantic-search", e);
|
|
587
586
|
}
|
|
@@ -597,61 +596,61 @@ var Yt = s({
|
|
|
597
596
|
let t = [...p.filters.sensorEvents], n = t.indexOf(e);
|
|
598
597
|
n >= 0 ? t.splice(n, 1) : t.push(e), W("sensorEvents", t);
|
|
599
598
|
}
|
|
600
|
-
function
|
|
599
|
+
function ve(e) {
|
|
601
600
|
let t = [...p.filters.hasAttributes], n = t.indexOf(e);
|
|
602
601
|
n >= 0 ? t.splice(n, 1) : t.push(e), W("hasAttributes", t);
|
|
603
602
|
}
|
|
604
|
-
function
|
|
603
|
+
function ye(e) {
|
|
605
604
|
F[e] = !F[e];
|
|
606
605
|
}
|
|
607
606
|
return h(P, (e) => {
|
|
608
607
|
!e?.trim() && p.filters.semanticQuery && W("semanticQuery", "");
|
|
609
|
-
}),
|
|
608
|
+
}), je(ee, (e) => {
|
|
610
609
|
let t = e.target;
|
|
611
610
|
t.closest("#recordings-sidebar-toggle") || t.closest("[data-pc-section=\"overlay\"], [data-pc-section=\"panel\"], .p-connected-overlay") || p.isOpen && (p.isOverlay || !S.value) && m("close");
|
|
612
|
-
}), i({ sidebarWidth:
|
|
613
|
-
let s =
|
|
611
|
+
}), i({ sidebarWidth: I }), (i, a) => {
|
|
612
|
+
let s = de, f = q, p = R, m = Be, h = Fe, y = xe, b = Y, S = Te, E = ue, O = Ie;
|
|
614
613
|
return n(), g("nav", {
|
|
615
614
|
ref_key: "sidebarRef",
|
|
616
615
|
ref: ee,
|
|
617
616
|
class: "recordings-sidebar fixed transition-all duration-200 overflow-x-hidden overflow-y-auto md:!pl-0 pl-safe pb-safe flex flex-col z-4",
|
|
618
617
|
style: _({
|
|
619
|
-
width: `${d(
|
|
618
|
+
width: `${d(I)}px`,
|
|
620
619
|
borderRightWidth: e.isOpen ? "1px" : "0px",
|
|
621
620
|
paddingBottom: `calc(var(--safe-area-inset-top) + var(--safe-area-inset-bottom) + ${d(T)}px + ${d(w)}px)`
|
|
622
621
|
})
|
|
623
622
|
}, [x("div", {
|
|
624
623
|
class: "flex flex-col gap-4 p-4",
|
|
625
|
-
style: _({ width: `${
|
|
624
|
+
style: _({ width: `${Rn}px` })
|
|
626
625
|
}, [
|
|
627
|
-
x("div",
|
|
628
|
-
x("label",
|
|
626
|
+
x("div", Zt, [
|
|
627
|
+
x("label", Qt, r(i.$t("views.recordings.content_kind")), 1),
|
|
629
628
|
D(s, {
|
|
630
629
|
"model-value": e.filters.contentKind,
|
|
631
|
-
options: d(
|
|
630
|
+
options: d(ne),
|
|
632
631
|
"option-label": "label",
|
|
633
632
|
"option-value": "value",
|
|
634
633
|
"allow-empty": !1,
|
|
635
634
|
class: "content-kind-toggle",
|
|
636
635
|
"onUpdate:modelValue": a[0] ||= (e) => W("contentKind", e)
|
|
637
636
|
}, null, 8, ["model-value", "options"]),
|
|
638
|
-
d(
|
|
637
|
+
d(B) ? (n(), g("span", $t, r(i.$t("views.recordings.content_kind_episodes_hint")), 1)) : l("", !0)
|
|
639
638
|
]),
|
|
640
639
|
a[23] ||= x("div", { class: "sidebar-divider" }, null, -1),
|
|
641
|
-
d(
|
|
642
|
-
x("div",
|
|
643
|
-
x("label",
|
|
644
|
-
x("span",
|
|
640
|
+
d(B) ? l("", !0) : (n(), g(v, { key: 0 }, [
|
|
641
|
+
x("div", en, [
|
|
642
|
+
x("label", tn, r(i.$t("views.recordings.search")), 1),
|
|
643
|
+
x("span", nn, [D(f, {
|
|
645
644
|
"model-value": e.filters.search,
|
|
646
645
|
placeholder: i.$t("views.recordings.search_placeholder"),
|
|
647
646
|
class: "w-full text-sm",
|
|
648
|
-
"onUpdate:modelValue": a[1] ||= (e) => d(
|
|
647
|
+
"onUpdate:modelValue": a[1] ||= (e) => d(fe)(e)
|
|
649
648
|
}, null, 8, ["model-value", "placeholder"])]),
|
|
650
|
-
x("span",
|
|
649
|
+
x("span", rn, r(i.$t("views.recordings.result_count", { count: e.resultCount })), 1)
|
|
651
650
|
]),
|
|
652
651
|
a[15] ||= x("div", { class: "sidebar-divider" }, null, -1),
|
|
653
|
-
x("div",
|
|
654
|
-
x("label",
|
|
652
|
+
x("div", an, [
|
|
653
|
+
x("label", on, [D(p, { class: "w-3.5 h-3.5" }), C(" " + r(i.$t("views.recordings.semantic_search")), 1)]),
|
|
655
654
|
D(m, {
|
|
656
655
|
modelValue: d(P),
|
|
657
656
|
"onUpdate:modelValue": a[2] ||= (e) => u(P) ? P.value = e : null,
|
|
@@ -672,27 +671,27 @@ var Yt = s({
|
|
|
672
671
|
class: "w-full text-xs",
|
|
673
672
|
loading: e.semanticSearchLoading,
|
|
674
673
|
disabled: !e.semanticSearchAvailable || !d(P)?.trim(),
|
|
675
|
-
onClick:
|
|
674
|
+
onClick: me
|
|
676
675
|
}, null, 8, [
|
|
677
676
|
"label",
|
|
678
677
|
"loading",
|
|
679
678
|
"disabled"
|
|
680
679
|
]),
|
|
681
|
-
e.semanticCount == null ? l("", !0) : (n(), g("span",
|
|
682
|
-
e.filters.semanticQuery ? (n(), g("div",
|
|
680
|
+
e.semanticCount == null ? l("", !0) : (n(), g("span", sn, [D(p, { class: "w-3 h-3" }), C(" " + r(i.$t("views.recordings.semantic_results", { count: e.semanticCount })), 1)])),
|
|
681
|
+
e.filters.semanticQuery ? (n(), g("div", cn, [x("label", ln, r(i.$t("views.recordings.min_match_score")), 1), x("div", un, [D(y, {
|
|
683
682
|
"model-value": e.filters.minSemanticScore,
|
|
684
683
|
min: 0,
|
|
685
684
|
max: 1,
|
|
686
685
|
step: .05,
|
|
687
686
|
class: "flex-1",
|
|
688
687
|
"onUpdate:modelValue": a[3] ||= (e) => W("minSemanticScore", e)
|
|
689
|
-
}, null, 8, ["model-value"]), x("span",
|
|
688
|
+
}, null, 8, ["model-value"]), x("span", dn, r(Math.round(e.filters.minSemanticScore * 100)) + "%", 1)])])) : l("", !0)
|
|
690
689
|
]),
|
|
691
690
|
a[16] ||= x("div", { class: "sidebar-divider" }, null, -1)
|
|
692
691
|
], 64)),
|
|
693
|
-
d(
|
|
692
|
+
d(te).length > 1 ? (n(), g("div", fn, [x("label", pn, r(i.$t("views.recordings.rooms")), 1), D(b, {
|
|
694
693
|
"model-value": e.filters.rooms,
|
|
695
|
-
options: d(
|
|
694
|
+
options: d(te),
|
|
696
695
|
"option-label": "name",
|
|
697
696
|
"option-value": "id",
|
|
698
697
|
placeholder: i.$t("views.recordings.all_rooms"),
|
|
@@ -700,13 +699,13 @@ var Yt = s({
|
|
|
700
699
|
"max-selected-labels": 2,
|
|
701
700
|
"show-toggle-all": !1,
|
|
702
701
|
pt: { overlay: { style: "position: fixed" } },
|
|
703
|
-
"onUpdate:modelValue": a[4] ||= (e) =>
|
|
702
|
+
"onUpdate:modelValue": a[4] ||= (e) => pe(e)
|
|
704
703
|
}, null, 8, [
|
|
705
704
|
"model-value",
|
|
706
705
|
"options",
|
|
707
706
|
"placeholder"
|
|
708
707
|
])])) : l("", !0),
|
|
709
|
-
x("div",
|
|
708
|
+
x("div", mn, [x("label", hn, r(i.$t("views.recordings.cameras")), 1), D(b, {
|
|
710
709
|
"model-value": e.filters.cameraIds,
|
|
711
710
|
options: d(L),
|
|
712
711
|
"option-label": "name",
|
|
@@ -722,10 +721,10 @@ var Yt = s({
|
|
|
722
721
|
"options",
|
|
723
722
|
"placeholder"
|
|
724
723
|
])]),
|
|
725
|
-
d(
|
|
726
|
-
x("label",
|
|
727
|
-
x("div",
|
|
728
|
-
camera: d(
|
|
724
|
+
d(z) && !d(B) ? (n(), g(v, { key: 2 }, [a[17] ||= x("div", { class: "sidebar-divider" }, null, -1), x("div", gn, [
|
|
725
|
+
x("label", _n, r(i.$t("views.recordings.grid_search")), 1),
|
|
726
|
+
x("div", vn, [D(S, {
|
|
727
|
+
camera: d(z),
|
|
729
728
|
"object-fit": "cover"
|
|
730
729
|
}, null, 8, ["camera"]), D(E, {
|
|
731
730
|
"model-value": e.filters.gridRegions,
|
|
@@ -741,17 +740,17 @@ var Yt = s({
|
|
|
741
740
|
onClick: a[7] ||= (e) => W("gridRegions", [])
|
|
742
741
|
}, null, 8, ["label", "disabled"])
|
|
743
742
|
])], 64)) : l("", !0),
|
|
744
|
-
d(
|
|
745
|
-
d(
|
|
743
|
+
d(B) ? l("", !0) : (n(), g("div", yn)),
|
|
744
|
+
d(B) ? l("", !0) : (n(), g("div", bn, [x("label", xn, r(i.$t("views.recordings.confidence")), 1), x("div", Sn, [D(y, {
|
|
746
745
|
"model-value": e.filters.minConfidence,
|
|
747
746
|
min: 0,
|
|
748
747
|
max: 1,
|
|
749
748
|
step: .05,
|
|
750
749
|
class: "flex-1",
|
|
751
750
|
"onUpdate:modelValue": a[8] ||= (e) => W("minConfidence", e)
|
|
752
|
-
}, null, 8, ["model-value"]), x("span",
|
|
751
|
+
}, null, 8, ["model-value"]), x("span", Cn, r(Math.round(e.filters.minConfidence * 100)) + "%", 1)])])),
|
|
753
752
|
a[24] ||= x("div", { class: "sidebar-divider" }, null, -1),
|
|
754
|
-
x("div",
|
|
753
|
+
x("div", wn, [x("label", Tn, r(i.$t("views.recordings.time_range")), 1), x("div", En, [(n(!0), g(v, null, t(d(ae), (t) => (n(), c(h, {
|
|
755
754
|
key: t.value,
|
|
756
755
|
label: t.label,
|
|
757
756
|
severity: e.filters.timeRange === t.value ? void 0 : "secondary",
|
|
@@ -765,12 +764,12 @@ var Yt = s({
|
|
|
765
764
|
"outlined",
|
|
766
765
|
"onClick"
|
|
767
766
|
]))), 128))])]),
|
|
768
|
-
d(
|
|
767
|
+
d(B) ? l("", !0) : (n(), g(v, { key: 5 }, [
|
|
769
768
|
a[22] ||= x("div", { class: "sidebar-divider" }, null, -1),
|
|
770
|
-
x("div",
|
|
769
|
+
x("div", Dn, [x("button", {
|
|
771
770
|
class: "sidebar-section-title flex items-center justify-between w-full cursor-pointer",
|
|
772
|
-
onClick: a[9] ||= (e) =>
|
|
773
|
-
}, [x("span", null, r(i.$t("views.recordings.sensor_events")), 1), (n(), c(o(d(F).sensorEvents ? d(M) : d(N)), { class: "w-4 h-4 text-muted" }))]), d(F).sensorEvents ? (n(), g("div",
|
|
771
|
+
onClick: a[9] ||= (e) => ye("sensorEvents")
|
|
772
|
+
}, [x("span", null, r(i.$t("views.recordings.sensor_events")), 1), (n(), c(o(d(F).sensorEvents ? d(M) : d(N)), { class: "w-4 h-4 text-muted" }))]), d(F).sensorEvents ? (n(), g("div", On, [(n(!0), g(v, null, t(d(se), (i) => (n(), g(v, { key: i.value }, [x("label", kn, [
|
|
774
773
|
D(O, {
|
|
775
774
|
"model-value": e.filters.sensorEvents.includes(i.value),
|
|
776
775
|
binary: !0,
|
|
@@ -778,7 +777,7 @@ var Yt = s({
|
|
|
778
777
|
}, null, 8, ["model-value", "onUpdate:modelValue"]),
|
|
779
778
|
(n(), c(o(i.icon), { class: "w-4 h-4 text-muted" })),
|
|
780
779
|
x("span", null, r(i.label), 1)
|
|
781
|
-
]), i.value === "audio" && e.filters.sensorEvents.includes("audio") ? (n(), g("div",
|
|
780
|
+
]), i.value === "audio" && e.filters.sensorEvents.includes("audio") ? (n(), g("div", An, [(n(!0), g(v, null, t(d(ce), (t) => (n(), g("label", {
|
|
782
781
|
key: t.value,
|
|
783
782
|
class: "flex items-center gap-2 cursor-pointer text-sm"
|
|
784
783
|
}, [
|
|
@@ -790,11 +789,11 @@ var Yt = s({
|
|
|
790
789
|
(n(), c(o(t.icon), { class: "w-4 h-4 text-muted" })),
|
|
791
790
|
x("span", null, r(t.label), 1)
|
|
792
791
|
]))), 128))])) : l("", !0)], 64))), 128))])) : l("", !0)]),
|
|
793
|
-
x("div",
|
|
792
|
+
x("div", jn, [
|
|
794
793
|
a[18] ||= x("div", { class: "filter-logic-line" }, null, -1),
|
|
795
794
|
D(s, {
|
|
796
795
|
"model-value": e.filters.filterLogicTriggers,
|
|
797
|
-
options: d(
|
|
796
|
+
options: d(re),
|
|
798
797
|
"option-label": "label",
|
|
799
798
|
"option-value": "value",
|
|
800
799
|
"allow-empty": !1,
|
|
@@ -803,10 +802,10 @@ var Yt = s({
|
|
|
803
802
|
}, null, 8, ["model-value", "options"]),
|
|
804
803
|
a[19] ||= x("div", { class: "filter-logic-line" }, null, -1)
|
|
805
804
|
]),
|
|
806
|
-
x("div",
|
|
805
|
+
x("div", Mn, [x("button", {
|
|
807
806
|
class: "sidebar-section-title flex items-center justify-between w-full cursor-pointer",
|
|
808
|
-
onClick: a[11] ||= (e) =>
|
|
809
|
-
}, [x("span", null, r(i.$t("views.recordings.event_type")), 1), (n(), c(o(d(F).eventTypes ? d(M) : d(N)), { class: "w-4 h-4 text-muted" }))]), d(F).eventTypes ? (n(), g("div",
|
|
807
|
+
onClick: a[11] ||= (e) => ye("eventTypes")
|
|
808
|
+
}, [x("span", null, r(i.$t("views.recordings.event_type")), 1), (n(), c(o(d(F).eventTypes ? d(M) : d(N)), { class: "w-4 h-4 text-muted" }))]), d(F).eventTypes ? (n(), g("div", Nn, [(n(!0), g(v, null, t(d(oe), (t) => (n(), g("label", {
|
|
810
809
|
key: t.value,
|
|
811
810
|
class: "flex items-center gap-2 cursor-pointer text-sm"
|
|
812
811
|
}, [
|
|
@@ -818,11 +817,11 @@ var Yt = s({
|
|
|
818
817
|
(n(), c(o(t.icon), { class: "w-4 h-4 text-muted" })),
|
|
819
818
|
x("span", null, r(t.label), 1)
|
|
820
819
|
]))), 128))])) : l("", !0)]),
|
|
821
|
-
x("div",
|
|
820
|
+
x("div", Pn, [
|
|
822
821
|
a[20] ||= x("div", { class: "filter-logic-line" }, null, -1),
|
|
823
822
|
D(s, {
|
|
824
823
|
"model-value": e.filters.filterLogicAttributes,
|
|
825
|
-
options: d(
|
|
824
|
+
options: d(re),
|
|
826
825
|
"option-label": "label",
|
|
827
826
|
"option-value": "value",
|
|
828
827
|
"allow-empty": !1,
|
|
@@ -831,62 +830,62 @@ var Yt = s({
|
|
|
831
830
|
}, null, 8, ["model-value", "options"]),
|
|
832
831
|
a[21] ||= x("div", { class: "filter-logic-line" }, null, -1)
|
|
833
832
|
]),
|
|
834
|
-
x("div",
|
|
833
|
+
x("div", Fn, [x("button", {
|
|
835
834
|
class: "sidebar-section-title flex items-center justify-between w-full cursor-pointer",
|
|
836
|
-
onClick: a[13] ||= (e) =>
|
|
837
|
-
}, [x("span", null, r(i.$t("views.recordings.attributes")), 1), (n(), c(o(d(F).attributes ? d(M) : d(N)), { class: "w-4 h-4 text-muted" }))]), d(F).attributes ? (n(), g("div",
|
|
835
|
+
onClick: a[13] ||= (e) => ye("attributes")
|
|
836
|
+
}, [x("span", null, r(i.$t("views.recordings.attributes")), 1), (n(), c(o(d(F).attributes ? d(M) : d(N)), { class: "w-4 h-4 text-muted" }))]), d(F).attributes ? (n(), g("div", In, [(n(!0), g(v, null, t(d(le), (t) => (n(), g("label", {
|
|
838
837
|
key: t.value,
|
|
839
838
|
class: "flex items-center gap-2 cursor-pointer text-sm"
|
|
840
839
|
}, [
|
|
841
840
|
D(O, {
|
|
842
841
|
"model-value": e.filters.hasAttributes.includes(t.value),
|
|
843
842
|
binary: !0,
|
|
844
|
-
"onUpdate:modelValue": (e) =>
|
|
843
|
+
"onUpdate:modelValue": (e) => ve(t.value)
|
|
845
844
|
}, null, 8, ["model-value", "onUpdate:modelValue"]),
|
|
846
845
|
(n(), c(o(t.icon), { class: "w-4 h-4 text-muted" })),
|
|
847
846
|
x("span", null, r(t.label), 1)
|
|
848
|
-
]))), 128)), x("label",
|
|
847
|
+
]))), 128)), x("label", Ln, [
|
|
849
848
|
D(O, {
|
|
850
|
-
"model-value": e.filters.eventTypes.includes(d(
|
|
849
|
+
"model-value": e.filters.eventTypes.includes(d(H).value),
|
|
851
850
|
binary: !0,
|
|
852
|
-
"onUpdate:modelValue": a[14] ||= (e) => he(d(
|
|
851
|
+
"onUpdate:modelValue": a[14] ||= (e) => he(d(H).value)
|
|
853
852
|
}, null, 8, ["model-value"]),
|
|
854
|
-
(n(), c(o(d(
|
|
855
|
-
x("span", null, r(d(
|
|
853
|
+
(n(), c(o(d(H).icon), { class: "w-4 h-4 text-muted" })),
|
|
854
|
+
x("span", null, r(d(H).label), 1)
|
|
856
855
|
])])) : l("", !0)])
|
|
857
856
|
], 64))
|
|
858
857
|
], 4)], 4);
|
|
859
858
|
};
|
|
860
859
|
}
|
|
861
|
-
}), [["__scopeId", "data-v-77b6c215"]]),
|
|
860
|
+
}), [["__scopeId", "data-v-77b6c215"]]), Bn = { class: "font-semibold text-xl truncate" }, Vn = { class: "w-full h-full relative" }, Hn = {
|
|
862
861
|
key: 0,
|
|
863
862
|
class: "w-full flex flex-row h-[calc(40px+1rem)] py-2 items-center fixed z-10"
|
|
864
|
-
},
|
|
863
|
+
}, Un = { class: "relative z-2 page-title !m-0" }, Wn = {
|
|
865
864
|
key: 1,
|
|
866
865
|
class: "fixed right-0 z-10 h-[calc(40px+1rem)] py-2 pr-2 flex items-center"
|
|
867
|
-
},
|
|
866
|
+
}, Gn = {
|
|
868
867
|
key: 1,
|
|
869
868
|
class: "flex justify-center py-4"
|
|
870
|
-
},
|
|
869
|
+
}, Kn = {
|
|
871
870
|
key: 2,
|
|
872
871
|
class: "flex flex-1 min-h-0 flex-col items-center justify-center w-full gap-4"
|
|
873
|
-
},
|
|
872
|
+
}, qn = { class: "text-muted text-sm" }, Jn = 288, Yn = /* @__PURE__ */ T({
|
|
874
873
|
__name: "Recordings",
|
|
875
874
|
setup(e) {
|
|
876
|
-
let t = new
|
|
875
|
+
let t = new ae(), o = new le(), s = Ce(), u = me(), { bottombarHeight: b } = ie(), { status: C, checking: T } = he(), { openEventTrace: O } = Se(), j = se("@camera.ui/camera-ui-nvr"), M = F(), { t: I } = Me(), { smBreakpoint: U, xlBreakpoint: ue, mdBreakpoint: W } = V(), { registerScrollToTop: de } = ne();
|
|
877
876
|
if (typeof VideoDecoder < "u") {
|
|
878
|
-
let e =
|
|
879
|
-
i(
|
|
877
|
+
let e = ce({ cacheSize: 20 });
|
|
878
|
+
i(L, e), Oe(() => e.dispose());
|
|
880
879
|
}
|
|
881
|
-
let { results:
|
|
880
|
+
let { results: be, isSearching: xe, isAvailable: we, hasSearched: Te, search: De, clear: ke } = ye(), { data: je } = t.getCamerasQuery({
|
|
882
881
|
page: 1,
|
|
883
882
|
pageSize: -1
|
|
884
|
-
}), { data:
|
|
883
|
+
}), { data: Ne } = o.getUserQuery(f(() => u.user?.username ?? "")), G = {
|
|
885
884
|
"1h": 36e5,
|
|
886
885
|
"1d": 864e5,
|
|
887
886
|
"1w": 6048e5,
|
|
888
887
|
"1m": 2592e6
|
|
889
|
-
},
|
|
888
|
+
}, K = y("gridRef"), Pe = y("viewMenuRef"), q = E("closed"), Ie = E(!1), J = E({
|
|
890
889
|
contentKind: "all",
|
|
891
890
|
favoritesOnly: !1,
|
|
892
891
|
search: "",
|
|
@@ -905,61 +904,61 @@ var Yt = s({
|
|
|
905
904
|
minConfidence: .5,
|
|
906
905
|
minSemanticScore: .5,
|
|
907
906
|
onlyWithRecordings: !0
|
|
908
|
-
}),
|
|
907
|
+
}), Re = w({
|
|
909
908
|
state: "ended",
|
|
910
909
|
hasDetections: !0,
|
|
911
910
|
withRecordingInfo: !0,
|
|
912
911
|
hasRecording: !0
|
|
913
|
-
}),
|
|
912
|
+
}), ze = JSON.stringify(Re.value), Y = E(!1), Be = w([]), Ve = E(null), He = y("reindexAnchorRef"), { left: Ue } = Ae(He), $e = !1, X = f(() => ue.value ? !0 : q.value === "opened"), et = f(() => W.value), nt = _e(() => K.value?.scrollY ?? 0), rt = f(() => X.value && et.value ? !0 : nt.value && !C.value?.running), at = f(() => W.value ? "0px" : X.value ? `${Jn}px` : "0px"), Z = f(() => (je.value?.result ?? []).map((e) => ({
|
|
914
913
|
id: e._id,
|
|
915
914
|
name: e.name,
|
|
916
915
|
room: e.room
|
|
917
|
-
}))),
|
|
916
|
+
}))), st = f(() => {
|
|
918
917
|
let e = /* @__PURE__ */ new Map();
|
|
919
918
|
for (let t of Z.value) e.set(t.id, t.name);
|
|
920
919
|
return e;
|
|
921
|
-
}),
|
|
920
|
+
}), ct = f(() => {
|
|
922
921
|
let e = /* @__PURE__ */ new Map();
|
|
923
|
-
for (let t of
|
|
922
|
+
for (let t of je.value?.result ?? []) e.set(t._id, t);
|
|
924
923
|
return e;
|
|
925
|
-
}),
|
|
924
|
+
}), lt = f(() => {
|
|
926
925
|
let e = J.value.rooms;
|
|
927
926
|
return (e.length > 0 ? Z.value.filter((t) => e.includes(t.room ?? "")) : Z.value).map((e) => e.id);
|
|
928
|
-
}),
|
|
929
|
-
|
|
930
|
-
let { events:
|
|
931
|
-
availableCameraIds:
|
|
932
|
-
cameraIds:
|
|
927
|
+
}), ut = f(() => J.value.cameraIds.filter((e) => lt.value.includes(e))), dt = f(() => lt.value);
|
|
928
|
+
de(() => K.value?.scrollToTop());
|
|
929
|
+
let { events: pt, isLoading: mt, hasMore: ht, loadMore: gt, loadThumbnails: _t, deleteEvents: vt, pluginUnavailable: yt } = N({
|
|
930
|
+
availableCameraIds: dt,
|
|
931
|
+
cameraIds: ut,
|
|
933
932
|
realtime: !0,
|
|
934
933
|
pageSize: 40,
|
|
935
|
-
filter:
|
|
934
|
+
filter: Re,
|
|
936
935
|
withEpisodes: !0
|
|
937
936
|
}), Q = f(() => {
|
|
938
937
|
let e = /* @__PURE__ */ new Map();
|
|
939
|
-
for (let t of
|
|
938
|
+
for (let t of be.value ?? []) {
|
|
940
939
|
let n = e.get(t.eventId);
|
|
941
940
|
(!n || t.score > n) && e.set(t.eventId, t.score);
|
|
942
941
|
}
|
|
943
942
|
return e;
|
|
944
|
-
}),
|
|
945
|
-
let e =
|
|
946
|
-
if (t.timeRange &&
|
|
947
|
-
let n = Date.now() -
|
|
943
|
+
}), bt = f(() => Te.value), $ = f(() => {
|
|
944
|
+
let e = pt.value.filter((e) => e.state === "ended"), t = J.value;
|
|
945
|
+
if (t.timeRange && G[t.timeRange]) {
|
|
946
|
+
let n = Date.now() - G[t.timeRange];
|
|
948
947
|
e = e.filter((e) => e.startTime >= n);
|
|
949
948
|
}
|
|
950
|
-
return t.gridRegions.length > 0 && (e = e.filter((e) => e.segments.some((e) => e.detections.some((e) => e.box &&
|
|
949
|
+
return t.gridRegions.length > 0 && (e = e.filter((e) => e.segments.some((e) => e.detections.some((e) => e.box && Ye(e.box, t.gridRegions))))), t.favoritesOnly && (e = e.filter((e) => e.favorite)), bt.value && (e = e.filter((e) => {
|
|
951
950
|
let n = Q.value.get(e.id);
|
|
952
951
|
return n != null && n >= t.minSemanticScore;
|
|
953
952
|
}), e.sort((e, t) => (Q.value.get(t.id) ?? 0) - (Q.value.get(e.id) ?? 0))), e;
|
|
954
|
-
}),
|
|
953
|
+
}), xt = f(() => J.value.contentKind === "episodes"), St = f(() => {
|
|
955
954
|
if (J.value.contentKind === "events") return [];
|
|
956
955
|
j.storeVersion.value;
|
|
957
956
|
let e = J.value;
|
|
958
|
-
if (!
|
|
959
|
-
let t =
|
|
960
|
-
if (e.timeRange === "custom" && e.customDateRange && (n = Math.max(n, e.customDateRange[0].getTime()), r = e.customDateRange[1].getTime()),
|
|
957
|
+
if (!xt.value && (Y.value || bt.value || e.gridRegions.length > 0 || e.search.trim() !== "" || e.eventTypes.length > 0 || e.audioLabels.length > 0 || e.hasAttributes.length > 0 || e.sensorEvents.length > 0 || e.minConfidence !== .5)) return [];
|
|
958
|
+
let t = ut.value.length > 0 ? ut.value : dt.value, n = e.timeRange && G[e.timeRange] ? Date.now() - G[e.timeRange] : 0, r = Infinity;
|
|
959
|
+
if (e.timeRange === "custom" && e.customDateRange && (n = Math.max(n, e.customDateRange[0].getTime()), r = e.customDateRange[1].getTime()), ht.value && !xt.value) {
|
|
961
960
|
let e = Infinity;
|
|
962
|
-
for (let t of
|
|
961
|
+
for (let t of pt.value) e = Math.min(e, t.thumbnailAt ?? t.startTime);
|
|
963
962
|
n = Math.max(n, e);
|
|
964
963
|
}
|
|
965
964
|
let i = [];
|
|
@@ -969,30 +968,30 @@ var Yt = s({
|
|
|
969
968
|
episode: a
|
|
970
969
|
}));
|
|
971
970
|
return i;
|
|
972
|
-
}),
|
|
973
|
-
if (
|
|
974
|
-
if (Y.value &&
|
|
971
|
+
}), Ct = f(() => {
|
|
972
|
+
if (xt.value) return [...St.value].sort((e, t) => Ke(t) - Ke(e));
|
|
973
|
+
if (Y.value && Be.value.length) return Be.value;
|
|
975
974
|
let e = $.value.map((e) => ({
|
|
976
975
|
event: e,
|
|
977
976
|
key: e.id
|
|
978
977
|
}));
|
|
979
|
-
return
|
|
980
|
-
}),
|
|
981
|
-
function
|
|
982
|
-
let e = [...
|
|
983
|
-
!e.length ||
|
|
978
|
+
return St.value.length && (e.push(...St.value), e.sort((e, t) => Ke(t) - Ke(e))), e;
|
|
979
|
+
}), wt = f(() => pe(void 0, "admin")), { selectionMode: Tt, selectedIds: Et, allSelected: Dt, bulkBusy: Ot, enterSelectionMode: kt, exitSelectionMode: At, toggleSelectAll: jt, toggleSelection: Mt } = oe($, (e) => e.id);
|
|
980
|
+
function Nt() {
|
|
981
|
+
let e = [...Et.value];
|
|
982
|
+
!e.length || Ot.value || s.openTextDialog({
|
|
984
983
|
data: {
|
|
985
|
-
title:
|
|
986
|
-
contentText:
|
|
987
|
-
confirmText:
|
|
984
|
+
title: I("components.dialog.title.confirm"),
|
|
985
|
+
contentText: I("views.recordings.delete_selected_confirm", { count: e.length }),
|
|
986
|
+
confirmText: I("components.form.button.remove"),
|
|
988
987
|
confirmButtonProps: { severity: "danger" }
|
|
989
988
|
},
|
|
990
989
|
onConfirm: async () => {
|
|
991
|
-
|
|
990
|
+
Ot.value = !0;
|
|
992
991
|
try {
|
|
993
|
-
await
|
|
992
|
+
await vt(e), At(), M.add({
|
|
994
993
|
severity: "success",
|
|
995
|
-
detail:
|
|
994
|
+
detail: I("views.recordings.delete_selected_done", { count: e.length }),
|
|
996
995
|
life: 5e3
|
|
997
996
|
});
|
|
998
997
|
} catch (e) {
|
|
@@ -1002,26 +1001,26 @@ var Yt = s({
|
|
|
1002
1001
|
life: 5e3
|
|
1003
1002
|
});
|
|
1004
1003
|
} finally {
|
|
1005
|
-
|
|
1004
|
+
Ot.value = !1;
|
|
1006
1005
|
}
|
|
1007
1006
|
}
|
|
1008
1007
|
});
|
|
1009
1008
|
}
|
|
1010
|
-
let
|
|
1009
|
+
let Pt = f(() => [
|
|
1011
1010
|
{
|
|
1012
1011
|
key: "ungroup",
|
|
1013
|
-
label:
|
|
1014
|
-
description:
|
|
1012
|
+
label: I("views.recordings.ungroup"),
|
|
1013
|
+
description: I("views.recordings.ungroup_hint"),
|
|
1015
1014
|
toggle: !0,
|
|
1016
1015
|
toggleState: Y.value,
|
|
1017
1016
|
onClick: () => {
|
|
1018
|
-
|
|
1017
|
+
$e = !0, Y.value = !Y.value, u.updateUser({ preferences: { recordings: { ungrouped: Y.value } } });
|
|
1019
1018
|
}
|
|
1020
1019
|
},
|
|
1021
1020
|
{
|
|
1022
1021
|
key: "onlyWithRecordings",
|
|
1023
|
-
label:
|
|
1024
|
-
description:
|
|
1022
|
+
label: I("views.recordings.only_with_recordings"),
|
|
1023
|
+
description: I("views.recordings.only_with_recordings_hint"),
|
|
1025
1024
|
toggle: !0,
|
|
1026
1025
|
toggleState: J.value.onlyWithRecordings,
|
|
1027
1026
|
onClick: () => {
|
|
@@ -1033,8 +1032,8 @@ var Yt = s({
|
|
|
1033
1032
|
},
|
|
1034
1033
|
{
|
|
1035
1034
|
key: "favoritesOnly",
|
|
1036
|
-
label:
|
|
1037
|
-
description:
|
|
1035
|
+
label: I("views.recordings.favorites_only"),
|
|
1036
|
+
description: I("views.recordings.favorites_hint"),
|
|
1038
1037
|
toggle: !0,
|
|
1039
1038
|
toggleState: J.value.favoritesOnly,
|
|
1040
1039
|
onClick: () => {
|
|
@@ -1045,47 +1044,47 @@ var Yt = s({
|
|
|
1045
1044
|
}
|
|
1046
1045
|
}
|
|
1047
1046
|
]);
|
|
1048
|
-
function
|
|
1049
|
-
s.openComponentDialog(
|
|
1050
|
-
title:
|
|
1047
|
+
function Ft() {
|
|
1048
|
+
s.openComponentDialog(ft, { data: {
|
|
1049
|
+
title: I("views.recordings.reindex.title"),
|
|
1051
1050
|
contentProps: {},
|
|
1052
|
-
confirmText:
|
|
1051
|
+
confirmText: I("views.recordings.reindex.start")
|
|
1053
1052
|
} });
|
|
1054
1053
|
}
|
|
1055
|
-
function
|
|
1056
|
-
s.openComponentDialog(
|
|
1057
|
-
title:
|
|
1054
|
+
function It() {
|
|
1055
|
+
s.openComponentDialog(Wt, { data: {
|
|
1056
|
+
title: I("views.recordings.export.title"),
|
|
1058
1057
|
contentProps: {
|
|
1059
1058
|
cameras: Z.value,
|
|
1060
1059
|
preselect: J.value.cameraIds?.length ? J.value.cameraIds : []
|
|
1061
1060
|
},
|
|
1062
|
-
confirmText:
|
|
1061
|
+
confirmText: I("views.recordings.export.confirm")
|
|
1063
1062
|
} });
|
|
1064
1063
|
}
|
|
1065
|
-
function
|
|
1064
|
+
function Lt() {
|
|
1066
1065
|
let e = q.value;
|
|
1067
1066
|
q.value = e === "opened" ? "closed" : "opened";
|
|
1068
1067
|
}
|
|
1069
|
-
function
|
|
1068
|
+
function Rt() {
|
|
1070
1069
|
q.value = "closed";
|
|
1071
1070
|
}
|
|
1072
|
-
function
|
|
1073
|
-
!e.semanticQuery?.trim() && J.value.semanticQuery?.trim() &&
|
|
1071
|
+
function zt(e) {
|
|
1072
|
+
!e.semanticQuery?.trim() && J.value.semanticQuery?.trim() && ke(), J.value = e;
|
|
1074
1073
|
}
|
|
1075
|
-
function
|
|
1074
|
+
function Bt(e) {
|
|
1076
1075
|
if (!e.trim()) {
|
|
1077
|
-
|
|
1076
|
+
ke();
|
|
1078
1077
|
return;
|
|
1079
1078
|
}
|
|
1080
|
-
|
|
1079
|
+
De(e);
|
|
1081
1080
|
}
|
|
1082
|
-
function
|
|
1083
|
-
let t =
|
|
1081
|
+
function Vt(e) {
|
|
1082
|
+
let t = ct.value.get(e.cameraId);
|
|
1084
1083
|
t && O(e, t);
|
|
1085
1084
|
}
|
|
1086
|
-
function
|
|
1087
|
-
let t =
|
|
1088
|
-
t && s.openComponentDialog(
|
|
1085
|
+
function Ht(e) {
|
|
1086
|
+
let t = ct.value.get(e.cameraId);
|
|
1087
|
+
t && s.openComponentDialog(fe, {
|
|
1089
1088
|
data: {
|
|
1090
1089
|
title: t.name,
|
|
1091
1090
|
dedupeKey: `camera-event:${t._id}:${e.startTime}`,
|
|
@@ -1097,7 +1096,7 @@ var Yt = s({
|
|
|
1097
1096
|
eventTimestamp: e.startTime
|
|
1098
1097
|
},
|
|
1099
1098
|
headerActions: e.segments?.some((e) => e?.description) ? [{
|
|
1100
|
-
icon:
|
|
1099
|
+
icon: R,
|
|
1101
1100
|
toggle: !0,
|
|
1102
1101
|
onClick: () => {}
|
|
1103
1102
|
}] : void 0,
|
|
@@ -1115,7 +1114,7 @@ var Yt = s({
|
|
|
1115
1114
|
} }
|
|
1116
1115
|
});
|
|
1117
1116
|
}
|
|
1118
|
-
return h(
|
|
1117
|
+
return h(ue, (e) => {
|
|
1119
1118
|
e && (q.value = "closed");
|
|
1120
1119
|
}), h(J, (e) => {
|
|
1121
1120
|
let t = e.eventTypes.length > 0 || e.sensorEvents.length > 0 || e.audioLabels.length > 0 || e.hasAttributes.length > 0, n = {
|
|
@@ -1133,16 +1132,16 @@ var Yt = s({
|
|
|
1133
1132
|
hasRecording: e.onlyWithRecordings || void 0,
|
|
1134
1133
|
favoritesOnly: e.favoritesOnly || void 0
|
|
1135
1134
|
}, r = JSON.stringify(n);
|
|
1136
|
-
r !==
|
|
1135
|
+
r !== ze && (ze = r, Re.value = n);
|
|
1137
1136
|
}, {
|
|
1138
1137
|
deep: !0,
|
|
1139
1138
|
immediate: !0
|
|
1140
|
-
}), h(
|
|
1141
|
-
if (!e ||
|
|
1139
|
+
}), h(Ne, (e) => {
|
|
1140
|
+
if (!e || $e) return;
|
|
1142
1141
|
let t = e.preferences?.recordings?.ungrouped;
|
|
1143
1142
|
t !== void 0 && (Y.value = t);
|
|
1144
1143
|
}, { immediate: !0 }), h([Y, $], ([e, t]) => {
|
|
1145
|
-
|
|
1144
|
+
Be.value = e ? Je(t) : [];
|
|
1146
1145
|
}), h(() => J.value.cameraIds, (e) => {
|
|
1147
1146
|
e.length !== 1 && J.value.gridRegions.length > 0 && (J.value = {
|
|
1148
1147
|
...J.value,
|
|
@@ -1150,13 +1149,13 @@ var Yt = s({
|
|
|
1150
1149
|
});
|
|
1151
1150
|
}), k(() => {
|
|
1152
1151
|
requestAnimationFrame(() => {
|
|
1153
|
-
|
|
1152
|
+
Ie.value = !0;
|
|
1154
1153
|
});
|
|
1155
1154
|
}), (e, t) => {
|
|
1156
|
-
let i =
|
|
1155
|
+
let i = te, o = it, s = tt, u = Fe, f = Xe, h = Qe, y = Ze, w = z, E = Ge, O = qe, k = We, j = B, M = ve, N = ee, F = A;
|
|
1157
1156
|
return n(), g("div", null, [
|
|
1158
1157
|
D(i, { position: "center" }, {
|
|
1159
|
-
default: p(() => [x("span",
|
|
1158
|
+
default: p(() => [x("span", Bn, r(e.$t("views.recordings.title")), 1)]),
|
|
1160
1159
|
_: 1
|
|
1161
1160
|
}),
|
|
1162
1161
|
D(i, { position: "left" }, {
|
|
@@ -1166,7 +1165,7 @@ var Yt = s({
|
|
|
1166
1165
|
class: "cui-button p-2 text-color",
|
|
1167
1166
|
text: "",
|
|
1168
1167
|
rounded: "",
|
|
1169
|
-
onClick:
|
|
1168
|
+
onClick: Lt
|
|
1170
1169
|
}, {
|
|
1171
1170
|
icon: p(() => [d(q) === "closed" ? (n(), c(o, {
|
|
1172
1171
|
key: 0,
|
|
@@ -1187,7 +1186,7 @@ var Yt = s({
|
|
|
1187
1186
|
class: "cui-button p-2 text-color",
|
|
1188
1187
|
text: "",
|
|
1189
1188
|
rounded: "",
|
|
1190
|
-
onClick: t[0] ||= (e) => d(
|
|
1189
|
+
onClick: t[0] ||= (e) => d(Pe)?.toggleMenu(e)
|
|
1191
1190
|
}, {
|
|
1192
1191
|
icon: p(() => [D(f, {
|
|
1193
1192
|
width: "100%",
|
|
@@ -1197,18 +1196,18 @@ var Yt = s({
|
|
|
1197
1196
|
})]),
|
|
1198
1197
|
_: 1
|
|
1199
1198
|
}),
|
|
1200
|
-
D(
|
|
1199
|
+
D(zn, {
|
|
1201
1200
|
filters: d(J),
|
|
1202
1201
|
cameras: d(Z),
|
|
1203
1202
|
"is-open": d(X),
|
|
1204
|
-
"is-overlay": d(
|
|
1205
|
-
"result-count": d(
|
|
1206
|
-
"semantic-count": d(
|
|
1207
|
-
"semantic-search-available": d(
|
|
1208
|
-
"semantic-search-loading": d(
|
|
1209
|
-
"onUpdate:filters":
|
|
1210
|
-
onSemanticSearch:
|
|
1211
|
-
onClose:
|
|
1203
|
+
"is-overlay": d(et),
|
|
1204
|
+
"result-count": d(Ct).length,
|
|
1205
|
+
"semantic-count": d(bt) ? d(Q).size : void 0,
|
|
1206
|
+
"semantic-search-available": d(we),
|
|
1207
|
+
"semantic-search-loading": d(xe),
|
|
1208
|
+
"onUpdate:filters": zt,
|
|
1209
|
+
onSemanticSearch: Bt,
|
|
1210
|
+
onClose: Rt
|
|
1212
1211
|
}, null, 8, [
|
|
1213
1212
|
"filters",
|
|
1214
1213
|
"cameras",
|
|
@@ -1222,30 +1221,30 @@ var Yt = s({
|
|
|
1222
1221
|
(n(), c(m, {
|
|
1223
1222
|
to: "#container",
|
|
1224
1223
|
defer: ""
|
|
1225
|
-
}, [d(X) && d(
|
|
1224
|
+
}, [d(X) && d(et) ? (n(), g("div", {
|
|
1226
1225
|
key: 0,
|
|
1227
1226
|
class: "fixed top-0 left-0 right-0 bottom-0 w-full h-full bg-black/50 z-1",
|
|
1228
|
-
onClick:
|
|
1227
|
+
onClick: Rt
|
|
1229
1228
|
})) : l("", !0)])),
|
|
1230
1229
|
x("main", {
|
|
1231
1230
|
ref_key: "reindexAnchorRef",
|
|
1232
|
-
ref:
|
|
1231
|
+
ref: He,
|
|
1233
1232
|
class: "relative w-full h-full",
|
|
1234
1233
|
style: _({
|
|
1235
|
-
paddingLeft: d(
|
|
1236
|
-
transition: d(
|
|
1234
|
+
paddingLeft: d(at),
|
|
1235
|
+
transition: d(Ie) ? "padding-left 200ms" : void 0
|
|
1237
1236
|
})
|
|
1238
|
-
}, [x("div",
|
|
1239
|
-
d(
|
|
1237
|
+
}, [x("div", Vn, [
|
|
1238
|
+
d(U) ? l("", !0) : (n(), g("div", Hn, [
|
|
1240
1239
|
t[3] ||= x("div", { class: "ml-2" }, null, -1),
|
|
1241
|
-
d(
|
|
1240
|
+
d(ue) ? l("", !0) : (n(), c(u, {
|
|
1242
1241
|
key: 0,
|
|
1243
1242
|
id: "recordings-sidebar-toggle",
|
|
1244
1243
|
severity: "secondary",
|
|
1245
1244
|
class: "mr-2 cui-icon-lg relative z-2",
|
|
1246
1245
|
text: "",
|
|
1247
1246
|
rounded: "",
|
|
1248
|
-
onClick:
|
|
1247
|
+
onClick: Lt
|
|
1249
1248
|
}, {
|
|
1250
1249
|
icon: p(() => [d(X) ? (n(), c(h, {
|
|
1251
1250
|
key: 0,
|
|
@@ -1258,7 +1257,7 @@ var Yt = s({
|
|
|
1258
1257
|
}))]),
|
|
1259
1258
|
_: 1
|
|
1260
1259
|
})),
|
|
1261
|
-
x("h1",
|
|
1260
|
+
x("h1", Un, r(e.$t("views.recordings.title")), 1),
|
|
1262
1261
|
t[4] ||= x("div", { class: "gradient-blur rotate-180 !h-[70px]" }, [
|
|
1263
1262
|
x("div"),
|
|
1264
1263
|
x("div"),
|
|
@@ -1268,12 +1267,12 @@ var Yt = s({
|
|
|
1268
1267
|
x("div")
|
|
1269
1268
|
], -1)
|
|
1270
1269
|
])),
|
|
1271
|
-
d(
|
|
1270
|
+
d(U) ? l("", !0) : (n(), g("div", Wn, [S((n(), c(u, {
|
|
1272
1271
|
severity: "secondary",
|
|
1273
1272
|
text: "",
|
|
1274
1273
|
rounded: "",
|
|
1275
1274
|
class: "cui-icon-lg relative z-2",
|
|
1276
|
-
onClick: t[1] ||= (e) => d(
|
|
1275
|
+
onClick: t[1] ||= (e) => d(Pe)?.toggleMenu(e)
|
|
1277
1276
|
}, {
|
|
1278
1277
|
icon: p(() => [D(f, {
|
|
1279
1278
|
width: "100%",
|
|
@@ -1281,33 +1280,33 @@ var Yt = s({
|
|
|
1281
1280
|
})]),
|
|
1282
1281
|
_: 1
|
|
1283
1282
|
})), [[
|
|
1284
|
-
|
|
1283
|
+
F,
|
|
1285
1284
|
{ value: e.$t("views.recordings.view_options") },
|
|
1286
1285
|
void 0,
|
|
1287
1286
|
{ bottom: !0 }
|
|
1288
1287
|
]])])),
|
|
1289
1288
|
x("div", { class: a(["px-2 h-full w-full flex flex-col", {
|
|
1290
|
-
"pt-4": d(
|
|
1291
|
-
"pt-[calc(40px+2rem)]": !d(
|
|
1289
|
+
"pt-4": d(U),
|
|
1290
|
+
"pt-[calc(40px+2rem)]": !d(U)
|
|
1292
1291
|
}]) }, [
|
|
1293
|
-
d(
|
|
1292
|
+
d(Ct).length ? (n(), c(O, {
|
|
1294
1293
|
key: 0,
|
|
1295
1294
|
ref_key: "gridRef",
|
|
1296
|
-
ref:
|
|
1297
|
-
items: d(
|
|
1298
|
-
"min-item-width": d(
|
|
1295
|
+
ref: K,
|
|
1296
|
+
items: d(Ct),
|
|
1297
|
+
"min-item-width": d(U) ? 160 : 180,
|
|
1299
1298
|
gap: 8,
|
|
1300
|
-
"has-more": d(
|
|
1301
|
-
"load-more": d(
|
|
1299
|
+
"has-more": d(ht),
|
|
1300
|
+
"load-more": d(gt),
|
|
1302
1301
|
"item-key": (e) => e.key,
|
|
1303
1302
|
class: "flex-1 min-h-0"
|
|
1304
1303
|
}, {
|
|
1305
1304
|
item: p(({ item: e }) => [e.episode ? (n(), c(w, {
|
|
1306
1305
|
key: 0,
|
|
1307
1306
|
episode: e.episode,
|
|
1308
|
-
"camera-by-id": d(
|
|
1307
|
+
"camera-by-id": d(ct),
|
|
1309
1308
|
fluid: "",
|
|
1310
|
-
"click-disabled": d(
|
|
1309
|
+
"click-disabled": d(Tt)
|
|
1311
1310
|
}, null, 8, [
|
|
1312
1311
|
"episode",
|
|
1313
1312
|
"camera-by-id",
|
|
@@ -1315,19 +1314,19 @@ var Yt = s({
|
|
|
1315
1314
|
])) : (n(), c(E, {
|
|
1316
1315
|
key: 1,
|
|
1317
1316
|
event: e.event,
|
|
1318
|
-
"camera-name": d(
|
|
1319
|
-
camera: d(
|
|
1320
|
-
"load-thumbnails": d(
|
|
1317
|
+
"camera-name": d(st).get(e.event.cameraId),
|
|
1318
|
+
camera: d(ct).get(e.event.cameraId),
|
|
1319
|
+
"load-thumbnails": d(_t),
|
|
1321
1320
|
"semantic-score": d(Q).get(e.event.id),
|
|
1322
1321
|
"seg-index": e.segIndex,
|
|
1323
|
-
"selection-mode": d(
|
|
1324
|
-
selected: d(
|
|
1325
|
-
"sibling-active": e.segIndex !== void 0 && d(
|
|
1326
|
-
onSelect: (t) => d(
|
|
1327
|
-
onScrollToEvent: () =>
|
|
1328
|
-
onOpenTrace: () =>
|
|
1329
|
-
onMouseenter: (t) =>
|
|
1330
|
-
onMouseleave: t[2] ||= (e) =>
|
|
1322
|
+
"selection-mode": d(Tt),
|
|
1323
|
+
selected: d(Et).has(e.event.id),
|
|
1324
|
+
"sibling-active": e.segIndex !== void 0 && d(Ve) === e.event.id,
|
|
1325
|
+
onSelect: (t) => d(Mt)(e.event.id),
|
|
1326
|
+
onScrollToEvent: () => Ht(e.event),
|
|
1327
|
+
onOpenTrace: () => Vt(e.event),
|
|
1328
|
+
onMouseenter: (t) => Ve.value = e.segIndex === void 0 ? null : e.event.id,
|
|
1329
|
+
onMouseleave: t[2] ||= (e) => Ve.value = null
|
|
1331
1330
|
}, null, 8, [
|
|
1332
1331
|
"event",
|
|
1333
1332
|
"camera-name",
|
|
@@ -1351,21 +1350,21 @@ var Yt = s({
|
|
|
1351
1350
|
"load-more",
|
|
1352
1351
|
"item-key"
|
|
1353
1352
|
])) : l("", !0),
|
|
1354
|
-
d(
|
|
1353
|
+
d(mt) || d(xe) ? (n(), g("div", Gn, [D(k, {
|
|
1355
1354
|
width: "24px",
|
|
1356
1355
|
height: "24px",
|
|
1357
1356
|
class: "text-muted"
|
|
1358
1357
|
})])) : l("", !0),
|
|
1359
|
-
!d($).length && !d(
|
|
1358
|
+
!d($).length && !d(mt) && !d(xe) ? (n(), g("div", Kn, [D(j, { class: "w-12 h-12 text-muted" }), x("span", qn, r(d(yt) ? e.$t("views.recordings.recordings_unavailable") : e.$t("views.recordings.no_recordings")), 1)])) : l("", !0)
|
|
1360
1359
|
], 2)
|
|
1361
1360
|
])], 4),
|
|
1362
|
-
d(
|
|
1361
|
+
d(wt) && d(Z).length ? (n(), g("div", {
|
|
1363
1362
|
key: 0,
|
|
1364
|
-
class: a(["fixed z-10", d(
|
|
1363
|
+
class: a(["fixed z-10", d(rt) ? "scale-0 opacity-0" : "scale-100 opacity-100"]),
|
|
1365
1364
|
style: _({
|
|
1366
|
-
left: `calc(${d(
|
|
1365
|
+
left: `calc(${d(Ue)}px + ${d(at)} + 0.75rem + var(--safe-area-inset-left))`,
|
|
1367
1366
|
bottom: `calc(${d(b)}px + 1.25rem + var(--safe-area-inset-bottom))`,
|
|
1368
|
-
transition: d(
|
|
1367
|
+
transition: d(Ie) ? "left 200ms, transform 200ms ease-in-out, opacity 200ms ease-in-out" : void 0
|
|
1369
1368
|
})
|
|
1370
1369
|
}, [D(u, {
|
|
1371
1370
|
severity: "secondary",
|
|
@@ -1376,27 +1375,27 @@ var Yt = s({
|
|
|
1376
1375
|
done: d(C).done,
|
|
1377
1376
|
total: d(C).total
|
|
1378
1377
|
}) : e.$t("views.recordings.reindex.button"),
|
|
1379
|
-
onClick:
|
|
1378
|
+
onClick: Ft
|
|
1380
1379
|
}, {
|
|
1381
|
-
icon: p(() => [d(C)?.running ? (n(), c(d(
|
|
1380
|
+
icon: p(() => [d(C)?.running ? (n(), c(d(We), { key: 0 })) : (n(), c(d(ot), { key: 1 }))]),
|
|
1382
1381
|
_: 1
|
|
1383
1382
|
}, 8, ["disabled", "label"])], 6)) : l("", !0),
|
|
1384
|
-
d(Z).length ? (n(), c(
|
|
1383
|
+
d(Z).length ? (n(), c(N, {
|
|
1385
1384
|
key: 1,
|
|
1386
|
-
"force-visible": d(
|
|
1387
|
-
"scroll-y": d(
|
|
1385
|
+
"force-visible": d(Tt),
|
|
1386
|
+
"scroll-y": d(K)?.scrollY ?? 0
|
|
1388
1387
|
}, {
|
|
1389
|
-
default: p(() => [d(
|
|
1388
|
+
default: p(() => [d(Tt) ? (n(), g(v, { key: 1 }, [
|
|
1390
1389
|
D(M, {
|
|
1391
1390
|
grouped: "",
|
|
1392
1391
|
"tooltip-props": { value: e.$t("components.form.tooltip.cancel_selection") },
|
|
1393
1392
|
"button-props": { severity: "secondary" },
|
|
1394
|
-
icon: d(
|
|
1393
|
+
icon: d(Le),
|
|
1395
1394
|
"icon-props": {
|
|
1396
1395
|
width: "100%",
|
|
1397
1396
|
height: "100%"
|
|
1398
1397
|
},
|
|
1399
|
-
onClick: d(
|
|
1398
|
+
onClick: d(At)
|
|
1400
1399
|
}, null, 8, [
|
|
1401
1400
|
"tooltip-props",
|
|
1402
1401
|
"icon",
|
|
@@ -1404,14 +1403,14 @@ var Yt = s({
|
|
|
1404
1403
|
]),
|
|
1405
1404
|
D(M, {
|
|
1406
1405
|
grouped: "",
|
|
1407
|
-
"tooltip-props": { value: d(
|
|
1408
|
-
"button-props": { severity: d(
|
|
1409
|
-
icon: d(
|
|
1406
|
+
"tooltip-props": { value: d(Dt) ? e.$t("components.form.tooltip.deselect_all") : e.$t("components.form.tooltip.select_all") },
|
|
1407
|
+
"button-props": { severity: d(Dt) ? "primary" : "secondary" },
|
|
1408
|
+
icon: d(H),
|
|
1410
1409
|
"icon-props": {
|
|
1411
1410
|
width: "100%",
|
|
1412
1411
|
height: "100%"
|
|
1413
1412
|
},
|
|
1414
|
-
onClick: d(
|
|
1413
|
+
onClick: d(jt)
|
|
1415
1414
|
}, null, 8, [
|
|
1416
1415
|
"tooltip-props",
|
|
1417
1416
|
"button-props",
|
|
@@ -1423,30 +1422,30 @@ var Yt = s({
|
|
|
1423
1422
|
"tooltip-props": { value: e.$t("components.form.tooltip.delete_selected") },
|
|
1424
1423
|
"button-props": {
|
|
1425
1424
|
severity: "danger",
|
|
1426
|
-
disabled: !d(
|
|
1425
|
+
disabled: !d(Et).size || d(Ot)
|
|
1427
1426
|
},
|
|
1428
|
-
icon: d(
|
|
1427
|
+
icon: d(P),
|
|
1429
1428
|
"icon-props": {
|
|
1430
1429
|
width: "100%",
|
|
1431
1430
|
height: "100%"
|
|
1432
1431
|
},
|
|
1433
|
-
onClick:
|
|
1432
|
+
onClick: Nt
|
|
1434
1433
|
}, null, 8, [
|
|
1435
1434
|
"tooltip-props",
|
|
1436
1435
|
"button-props",
|
|
1437
1436
|
"icon"
|
|
1438
1437
|
])
|
|
1439
|
-
], 64)) : (n(), g(v, { key: 0 }, [d(
|
|
1438
|
+
], 64)) : (n(), g(v, { key: 0 }, [d(wt) && d($).length ? (n(), c(M, {
|
|
1440
1439
|
key: 0,
|
|
1441
1440
|
grouped: "",
|
|
1442
1441
|
"tooltip-props": { value: e.$t("views.recordings.select") },
|
|
1443
1442
|
"button-props": { severity: "secondary" },
|
|
1444
|
-
icon: d(
|
|
1443
|
+
icon: d(Ee),
|
|
1445
1444
|
"icon-props": {
|
|
1446
1445
|
width: "100%",
|
|
1447
1446
|
height: "100%"
|
|
1448
1447
|
},
|
|
1449
|
-
onClick: d(
|
|
1448
|
+
onClick: d(kt)
|
|
1450
1449
|
}, null, 8, [
|
|
1451
1450
|
"tooltip-props",
|
|
1452
1451
|
"icon",
|
|
@@ -1455,19 +1454,19 @@ var Yt = s({
|
|
|
1455
1454
|
grouped: "",
|
|
1456
1455
|
"tooltip-props": { value: e.$t("views.recordings.export.title") },
|
|
1457
1456
|
"button-props": { class: "text-white" },
|
|
1458
|
-
icon: d(
|
|
1457
|
+
icon: d(ge),
|
|
1459
1458
|
"icon-props": {
|
|
1460
1459
|
width: "26px",
|
|
1461
1460
|
height: "26px"
|
|
1462
1461
|
},
|
|
1463
|
-
onClick:
|
|
1462
|
+
onClick: It
|
|
1464
1463
|
}, null, 8, ["tooltip-props", "icon"])], 64))]),
|
|
1465
1464
|
_: 1
|
|
1466
1465
|
}, 8, ["force-visible", "scroll-y"])) : l("", !0),
|
|
1467
|
-
D(
|
|
1466
|
+
D(re, {
|
|
1468
1467
|
ref_key: "viewMenuRef",
|
|
1469
|
-
ref:
|
|
1470
|
-
items: d(
|
|
1468
|
+
ref: Pe,
|
|
1469
|
+
items: d(Pt),
|
|
1471
1470
|
"auto-hide": !1,
|
|
1472
1471
|
popover: { pt: {
|
|
1473
1472
|
root: { class: "w-[22rem]" },
|
|
@@ -1479,4 +1478,4 @@ var Yt = s({
|
|
|
1479
1478
|
}
|
|
1480
1479
|
});
|
|
1481
1480
|
//#endregion
|
|
1482
|
-
export {
|
|
1481
|
+
export { Yn as default };
|