@camera.ui/server 2.1.11 → 2.1.12
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-B4_ZWIGx.js → 404-BDi1TzED.js} +1 -1
- package/dist/interface/assets/{About-Cd8Ipr7a.js → About-DeHiJp3n.js} +1 -1
- package/dist/interface/assets/{Automation-COZFDnKK.js → Automation-4HPAjq1i.js} +3 -3
- package/dist/interface/assets/{AutomationImport-BTkkRikE.js → AutomationImport-B3bCE-yS.js} +2 -2
- package/dist/interface/assets/{AutomationStore-VdGEOwci.js → AutomationStore-BoWd7IW9.js} +2 -2
- package/dist/interface/assets/{AutomationStoreDetail-BQ2fER7x.js → AutomationStoreDetail-C2ntfGP-.js} +2 -2
- package/dist/interface/assets/{Automations-QmfGIQXO.js → Automations-CUUq9dxs.js} +2 -2
- package/dist/interface/assets/{Camera-g95slrO0.js → Camera-DmrRrgqQ.js} +2 -2
- package/dist/interface/assets/{CameraConsole-KqRFGZzT.js → CameraConsole-C8XSUr7X.js} +1 -1
- package/dist/interface/assets/{Cameras-BO4SDgY0.js → Cameras-B-aQUuPk.js} +1 -1
- package/dist/interface/assets/{Camview-yzOY3cnD.js → Camview-B-W5jpCR.js} +1 -1
- package/dist/interface/assets/{CertificateUpload-Dd4Ec7bt.js → CertificateUpload-Cg89m_cM.js} +1 -1
- package/dist/interface/assets/{Config-Db-Eh4Lf.js → Config-BDa4dy1w.js} +1 -1
- package/dist/interface/assets/{ConfigActionCameraControl-CbG-HEuU.js → ConfigActionCameraControl-DNmRpuPG.js} +1 -1
- package/dist/interface/assets/{ConfigActionDelay-BoGIhNHr.js → ConfigActionDelay-Reg_tEG_.js} +1 -1
- package/dist/interface/assets/{ConfigActionHttp-DyPo2XvQ.js → ConfigActionHttp-CqRBOSa3.js} +1 -1
- package/dist/interface/assets/{ConfigActionImageInput-C9aYztb6.js → ConfigActionImageInput-GWECLY4I.js} +1 -1
- package/dist/interface/assets/{ConfigActionMqtt-kQz9Y9OZ.js → ConfigActionMqtt-Di4ZTig8.js} +1 -1
- package/dist/interface/assets/{ConfigActionNotification-CbhQpAqn.js → ConfigActionNotification-Bq28CjsJ.js} +1 -1
- package/dist/interface/assets/{ConfigActionNotificationControl-DEOv_FGO.js → ConfigActionNotificationControl-B_p8dnc4.js} +1 -1
- package/dist/interface/assets/{ConfigActionOutput-CGtG-8PF.js → ConfigActionOutput-B31cj20h.js} +1 -1
- package/dist/interface/assets/{ConfigActionPlugin-C8v0CWrz.js → ConfigActionPlugin-DCUhDIiJ.js} +1 -1
- package/dist/interface/assets/{ConfigActionSensor-CESXnRuQ.js → ConfigActionSensor-De63wYQU.js} +1 -1
- package/dist/interface/assets/{ConfigActionSnapshot-TVhjeFKP.js → ConfigActionSnapshot-DZJDjOMT.js} +1 -1
- package/dist/interface/assets/{ConfigActionVariable-DwRFwopb.js → ConfigActionVariable-Q3QXVMbR.js} +1 -1
- package/dist/interface/assets/{ConfigConditionIfElse-CmtoYTUU.js → ConfigConditionIfElse-DKonPxli.js} +1 -1
- package/dist/interface/assets/{ConfigConditionSensorState-3B9Sjxdb.js → ConfigConditionSensorState-C_J6ERzt.js} +1 -1
- package/dist/interface/assets/{ConfigConditionSwitch-CA-tuT-G.js → ConfigConditionSwitch-DYAlj5no.js} +1 -1
- package/dist/interface/assets/{ConfigConditionTime-Djq2yOCr.js → ConfigConditionTime-CRDI58_P.js} +1 -1
- package/dist/interface/assets/{ConfigSensorValueInput-DZ7r71aU.js → ConfigSensorValueInput-C3ep90ds.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerDetection-B62txb4H.js → ConfigTriggerDetection-CbVFlyI8.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerGeofence-sbEglk8c.js → ConfigTriggerGeofence-ClKyzb-x.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerManual-nrYy4xBP.js → ConfigTriggerManual-7kAukUgk.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerMqtt-CK8FEVxs.js → ConfigTriggerMqtt-DUCZZt2j.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerSchedule-DN3Tl7f4.js → ConfigTriggerSchedule-lAiLdu1W.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerSensor-DBXrlYyS.js → ConfigTriggerSensor-DIhCfhcN.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerSystem-QFLNb9GC.js → ConfigTriggerSystem-DZu6Fp2j.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerWebhook-46mdJk6X.js → ConfigTriggerWebhook-D3a5f6vl.js} +1 -1
- package/dist/interface/assets/{Console-B78qXoaH.js → Console-ctbGFtCH.js} +1 -1
- package/dist/interface/assets/{CuiAutomationRunsDialog-BvtQfpTx.js → CuiAutomationRunsDialog-CgzW_s6M.js} +1 -1
- package/dist/interface/assets/CuiBottomSheet-Bo1wUyiN.js +1 -0
- package/dist/interface/assets/{CuiBottomSheet-UiJcO4M3.js → CuiBottomSheet-C7UdIQu1.js} +1 -1
- package/dist/interface/assets/{CuiCameraPipCard-BOky075i.js → CuiCameraPipCard-BEAE44of.js} +1 -1
- package/dist/interface/assets/{CuiCameraRecordings-DIBgpGaS.js → CuiCameraRecordings-C1evIMhc.js} +1 -1
- package/dist/interface/assets/{CuiCameraShares-46_p-wPD.js → CuiCameraShares-D3fAJNWF.js} +1 -1
- package/dist/interface/assets/{CuiCameraTable-BXm5THd1.js → CuiCameraTable-ApLSxeO4.js} +1 -1
- package/dist/interface/assets/CuiCameraTable-BAjQ8h5H.js +1 -0
- package/dist/interface/assets/{CuiChartTable-ByHWgFTc.js → CuiChartTable-BeEij8SL.js} +1 -1
- package/dist/interface/assets/{CuiConsole-BOyrbC0a.js → CuiConsole-CMxpzZ51.js} +1 -1
- package/dist/interface/assets/{CuiDataTable-BDyku8Vr.js → CuiDataTable-f_QVzRqq.js} +1 -1
- package/dist/interface/assets/{CuiLightControl-CsK2cn7L.js → CuiLightControl-9OhT9YYt.js} +1 -1
- package/dist/interface/assets/{CuiList-D1d-S_-K.js → CuiList-C3oJKyJC.js} +1 -1
- package/dist/interface/assets/CuiMarkdownContent-D2bWw1GN.js +1 -0
- package/dist/interface/assets/{CuiMarkdownContent-bAQw35id.js → CuiMarkdownContent-gJ8gvmYA.js} +1 -1
- package/dist/interface/assets/{CuiPluginCard-C-1ZhHi8.js → CuiPluginCard-DQgVasi7.js} +2 -2
- package/dist/interface/assets/{CuiPluginCategoryChip-CCnZkkL5.js → CuiPluginCategoryChip-EJhup0nM.js} +1 -1
- package/dist/interface/assets/{CuiPluginOAuthButton-CTKbdFZJ.js → CuiPluginOAuthButton-CbPU8trR.js} +2 -2
- package/dist/interface/assets/{CuiPluginTrustBadge-B_1b1iYf.js → CuiPluginTrustBadge-B4bxBl3A.js} +1 -1
- package/dist/interface/assets/{CuiQRCode-B0CF6e-5.js → CuiQRCode-CycvR5wz.js} +1 -1
- package/dist/interface/assets/{CuiSchema-CxRd72K7.js → CuiSchema-juKEra_J.js} +1 -1
- package/dist/interface/assets/{CuiTopNavbarItem-Bs4iRb31.js → CuiTopNavbarItem-D4qP-WpK.js} +1 -1
- package/dist/interface/assets/{Faces-kl1hwT5M.js → Faces-Ce3mKYc7.js} +1 -1
- package/dist/interface/assets/{FirstSteps-BYGvfH-S.js → FirstSteps-BBLzX2bl.js} +1 -1
- package/dist/interface/assets/{Floorplan-DNd9aQv3.js → Floorplan-B7BVj65t.js} +1 -1
- package/dist/interface/assets/{Instances-aZApGeHu.js → Instances-4VxGT2fm.js} +1 -1
- package/dist/interface/assets/{Logs-Bnq3wEXS.js → Logs-BBZMBN6a.js} +1 -1
- package/dist/interface/assets/{Menu-M1PaPt5e.js → Menu-CRLIo98F.js} +1 -1
- package/dist/interface/assets/{Metrics-D5UHs6wj.js → Metrics-DudHV8Ov.js} +1 -1
- package/dist/interface/assets/{OAuthDeviceFlow-o2Irbs3_.js → OAuthDeviceFlow-Z3Cesvs9.js} +1 -1
- package/dist/interface/assets/{Plugin-CEpSsNQA.js → Plugin-DwadariU.js} +1 -1
- package/dist/interface/assets/{PluginConsole-f5xf7P3Y.js → PluginConsole-D2SUwFDo.js} +1 -1
- package/dist/interface/assets/{PluginDetail-Ca-NJcL1.js → PluginDetail-C_XghvQz.js} +2 -2
- package/dist/interface/assets/{PluginSchema-DMjDPtOB.js → PluginSchema-U4q4c9ak.js} +1 -1
- package/dist/interface/assets/PluginSearch-11dsxfvW.js +1 -0
- package/dist/interface/assets/{PluginSearch-Tmg5vCQF.js → PluginSearch-DgQOryM2.js} +2 -2
- package/dist/interface/assets/{PluginUpdateProgress-FVY9RtmB.js → PluginUpdateProgress-DWcs6NlJ.js} +1 -1
- package/dist/interface/assets/{Plugins-ocuSdXhB.js → Plugins-QheVcYZB.js} +1 -1
- package/dist/interface/assets/{Recordings-CtSj2RuO.js → Recordings-DwPnYsd6.js} +1 -1
- package/dist/interface/assets/{SensorEdit-CcD4LvZr.js → SensorEdit-C9Ejdxaz.js} +1 -1
- package/dist/interface/assets/{SensorHistory-5nCWisih.js → SensorHistory-B16b4-Um.js} +1 -1
- package/dist/interface/assets/{Sensors-CWjmo27p.js → Sensors-D4tY50d4.js} +2 -2
- package/dist/interface/assets/{Settings-DsxjHlTb.js → Settings-BOd4EPix.js} +1 -1
- package/dist/interface/assets/SettingsAccount-DMvvar8D.js +1 -0
- package/dist/interface/assets/{SettingsAccount-DekJwq5r.js → SettingsAccount-DYCCnjWY.js} +1 -1
- package/dist/interface/assets/{SettingsAppearance-Dc5qomCw.js → SettingsAppearance-DZGa_aiI.js} +1 -1
- package/dist/interface/assets/SettingsAppearance-vLBhLEag.js +1 -0
- package/dist/interface/assets/{SettingsBackup-xZ6fRlMp.js → SettingsBackup-DyblUiF8.js} +1 -1
- package/dist/interface/assets/{SettingsList-M3eOiLIi.js → SettingsList-DM0yAFkS.js} +1 -1
- package/dist/interface/assets/{SettingsMqtt-D8grttey.js → SettingsMqtt-Cj9ywnP2.js} +1 -1
- package/dist/interface/assets/{SettingsNotifications-BtFyN8J3.js → SettingsNotifications-flx3W4Uo.js} +1 -1
- package/dist/interface/assets/{SettingsPermissions-g6ppqzcI.js → SettingsPermissions-w2ptf4wy.js} +1 -1
- package/dist/interface/assets/{SettingsRecordings-DVEsPab-.js → SettingsRecordings-D3b6y2SX.js} +1 -1
- package/dist/interface/assets/{SettingsRemote-Dqs-d-Xk.js → SettingsRemote-o01wgKPR.js} +1 -1
- package/dist/interface/assets/{SettingsSystem-EaqPKfS_.js → SettingsSystem-BsXkYsRC.js} +2 -2
- package/dist/interface/assets/{SettingsUsers-B3m7YHzN.js → SettingsUsers-BSsmo6T0.js} +1 -1
- package/dist/interface/assets/{Terminal-BXQKgvte.js → Terminal-cU-8dVL_.js} +1 -1
- package/dist/interface/assets/{Updates-Difs3xzH.js → Updates-dw0MwgsN.js} +2 -2
- package/dist/interface/assets/{VariableInput-DNlqv5NS.js → VariableInput-JSpyezJa.js} +1 -1
- package/dist/interface/assets/{VariableSuggestions-cR1Q4nfD.js → VariableSuggestions-DZbWgsck.js} +1 -1
- package/dist/interface/assets/{VersionsHandler-BHyZgGCP.js → VersionsHandler-C_mzsgfj.js} +1 -1
- package/dist/interface/assets/{VirtualSensorCreate-CSzlXcHk.js → VirtualSensorCreate-3mJ8c6Tl.js} +1 -1
- package/dist/interface/assets/{Workers-L7PPidAd.js → Workers-CdaYj6Ap.js} +1 -1
- package/dist/interface/assets/{api-ou2-S3Z9.js → api-2VPaKkqc.js} +2 -2
- package/dist/interface/assets/{api-Bpl4Sd0_.js → api-COPnjVh2.js} +1 -1
- package/dist/interface/assets/{auth-O2tHbgZf.js → auth-owqLfbdn.js} +1 -1
- package/dist/interface/assets/{automations-C3f5HUy2.js → automations-Bql07EFx.js} +1 -1
- package/dist/interface/assets/{cameras.schema-BzSBpeUl.js → cameras.schema-CnSdfqqj.js} +1 -1
- package/dist/interface/assets/cloudHandoff-B1z5dyPD.js +1 -0
- package/dist/interface/assets/{config-BIxANITl.js → config-soN-D-nC.js} +1 -1
- package/dist/interface/assets/{flowSchema-Cu_f8mZr.js → flowSchema-BFZ6n5Su.js} +1 -1
- package/dist/interface/assets/{intercomService-JoKcW49f.js → intercomService-Bjn0OsVT.js} +1 -1
- package/dist/interface/assets/{main-CT2dZ3bR.js → main-BfL5CDS8.js} +2 -2
- package/dist/interface/assets/{mqtt-D_ToI2JF.js → mqtt-CMdU36uB.js} +1 -1
- package/dist/interface/assets/{notifications-BZCPhbuG.js → notifications-C_CbT9aA.js} +1 -1
- package/dist/interface/assets/{plugins-DXYT--j6.js → plugins-CGDE1O2F.js} +1 -1
- package/dist/interface/assets/{rooms-BXXhWbYq.js → rooms-BnJo8QbU.js} +1 -1
- package/dist/interface/assets/{sensorIcons-tORVN7ay.js → sensorIcons-FPxm3pDg.js} +1 -1
- package/dist/interface/assets/{sensors-ud0INKWh.js → sensors-Bshdwbki.js} +1 -1
- package/dist/interface/assets/{server-_f9tZajz.js → server-CaRDiFTF.js} +1 -1
- package/dist/interface/assets/{theme-t4dIArYy.js → theme-CRQoJiuY.js} +1 -1
- package/dist/interface/assets/{types-Dg1X10xd.js → types-BHgaZSm2.js} +1 -1
- package/dist/interface/assets/{types-D889aM6c.js → types-CQpPteyx.js} +1 -1
- package/dist/interface/assets/{types-CCCcoJBr.js → types-Dwu7_YVv.js} +1 -1
- package/dist/interface/assets/{ungrouped-Pn6rAXZt.js → ungrouped-BbOtmmDD.js} +1 -1
- package/dist/interface/assets/{updates-i-Ukebxe.js → updates-DelnBMM3.js} +1 -1
- package/dist/interface/assets/{useAppVersion-DY0h_lct.js → useAppVersion-DeQeb6UF.js} +1 -1
- package/dist/interface/assets/{useBackupRestore-BcAR3KYA.js → useBackupRestore-CT1PYJDW.js} +1 -1
- package/dist/interface/assets/{useCameraOptions-C-rXBi8d.js → useCameraOptions-DgMpN00_.js} +1 -1
- package/dist/interface/assets/{useLogsSocket-Bigb4u3j.js → useLogsSocket-BKPqNCOv.js} +1 -1
- package/dist/interface/assets/{useNavLayout-C9FWniNC.js → useNavLayout-BJhl8UVM.js} +1 -1
- package/dist/interface/assets/{usePermissions-C_4RPiE4.js → usePermissions-Eyt2t6_8.js} +1 -1
- package/dist/interface/assets/{usePluginUpdates-CQwLK3om.js → usePluginUpdates-wfckuNy_.js} +1 -1
- package/dist/interface/assets/{usePushRegistration-sYPibp5s.js → usePushRegistration-jcfB8ujf.js} +1 -1
- package/dist/interface/assets/{useServerRestart-B0Cfu10q.js → useServerRestart-XnqHaTb7.js} +1 -1
- package/dist/interface/assets/{useStreamStatus-BLXdLAvK.js → useStreamStatus-8bE5h_fQ.js} +1 -1
- package/dist/interface/assets/{useTabSwipe-C3qfclkm.js → useTabSwipe-DxZfseQO.js} +1 -1
- package/dist/interface/assets/{useUpdateChannel-DvO5NQPE.js → useUpdateChannel-CjxdE3h1.js} +1 -1
- package/dist/interface/assets/{useUpdatesSocket-C6wTDGIg.js → useUpdatesSocket-DFt7_yr8.js} +1 -1
- package/dist/interface/assets/{useUserOptions-B9T46skV.js → useUserOptions-DStio0f5.js} +1 -1
- package/dist/interface/assets/{vendor-cameraui-OySaGjmo.js → vendor-cameraui-ZyqPntQ7.js} +1 -1
- package/dist/interface/assets/vendor-core-DN-bpg68.js +1 -0
- package/dist/interface/assets/{vendor-markdown-pUmink8s.js → vendor-markdown-aj6qAoLx.js} +3 -3
- package/dist/interface/assets/{vendor-primevue-CvHDsVi_.js → vendor-primevue-DXXRO7Z5.js} +1 -1
- package/dist/interface/index.html +25 -25
- package/dist/interface/sw.js +1 -1
- package/dist/server/package.json +6 -6
- package/dist/server/src/api/database/index.d.ts +1 -1
- package/dist/server/src/api/database/index.js +1 -1
- package/dist/server/src/api/database/migrations/v2-1-17.d.ts +3 -0
- package/dist/server/src/api/database/migrations/v2-1-17.js +14 -0
- package/dist/server/src/api/database/migrations/v2-1-17.js.map +1 -0
- package/dist/server/src/api/services/server.service.js +1 -1
- package/dist/server/src/api/services/server.service.js.map +1 -1
- package/dist/server/src/api/utils/cert.js +18 -8
- package/dist/server/src/api/utils/cert.js.map +1 -1
- package/dist/server/src/camera/streaming/rtp-session.js +12 -9
- package/dist/server/src/camera/streaming/rtp-session.js.map +1 -1
- package/dist/server/src/sensors/discovery.js +2 -2
- package/dist/server/src/sensors/discovery.js.map +1 -1
- package/dist/server/src/services/config/defaults.js +1 -1
- package/dist/server/src/services/config/defaults.js.map +1 -1
- package/dist/server/src/services/config/index.js +4 -6
- package/dist/server/src/services/config/index.js.map +1 -1
- package/package.json +6 -6
- package/dist/interface/assets/CuiBottomSheet-BjkvcU8T.js +0 -1
- package/dist/interface/assets/CuiCameraTable-DwRywA0z.js +0 -1
- package/dist/interface/assets/CuiMarkdownContent-CckAX6Ci.js +0 -1
- package/dist/interface/assets/PluginSearch-DurGrb4n.js +0 -1
- package/dist/interface/assets/SettingsAccount-DQm9vFIT.js +0 -1
- package/dist/interface/assets/SettingsAppearance-B7mm_vGf.js +0 -1
- package/dist/interface/assets/cloudHandoff-ChRx5fsr.js +0 -1
- package/dist/interface/assets/vendor-core-BZ52eUwC.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{B as e,Bt as t,F as n,G as r,K as i,Pt as a,Rt as ee,Wt as o,zr as s}from"./vendor-cameraui-OySaGjmo.js";import{$n as c,An as te,B as ne,Bn as l,I as u,In as d,Kn as f,L as re,Mn as p,R as m,Wn as ie,ct as ae,jn as oe,mn as se,rr as h,xn as g,xr as ce,z as le}from"./api-ou2-S3Z9.js";import{$t as _,En as v,In as ue,Kn as de,Kt as fe,Mn as y,Pn as pe,Wn as b,Xn as x,Yn as S,an as C,dn as me,fn as w,hr as T,in as E,jn as he,mn as D,nr as ge,on as O,pr as k,rn as A,rr as j,sn as M,sr as N,vr as _e,yr as P}from"./vendor-AX0A8AMd.js";import{p as ve}from"./vendor-core-BZ52eUwC.js";import{F as ye,P as be,S as xe,z as Se}from"./vendor-primevue-CvHDsVi_.js";import{t as Ce}from"./close-ChGy_BeH.js";import{t as we}from"./useUpdatesSocket-C6wTDGIg.js";import{a as Te,i as Ee,l as De,n as Oe,r as F,t as ke}from"./plugins-DXYT--j6.js";import{t as Ae}from"./CuiDataTable-BDyku8Vr.js";import{t as je}from"./search-Ck7b7yvI.js";import{t as I}from"./PluginSearch-Tmg5vCQF.js";import{t as Me}from"./usePluginUpdates-CQwLK3om.js";import{t as Ne}from"./config-BIxANITl.js";import{t as Pe}from"./back-filled-MAIFvJqE.js";import{t as Fe}from"./plus-Ct9djYce.js";import{t as Ie}from"./settings-Bw6giVLH.js";import{a as Le,i as Re,n as ze,o as Be,r as Ve,s as He,t as Ue}from"./CuiPluginCard-C-1ZhHi8.js";var We={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Ge(e,t){return y(),M(`svg`,We,[...t[0]||=[E(`path`,{fill:`currentColor`,d:`M12 16a2 2 0 0 1 2 2a2 2 0 0 1-2 2a2 2 0 0 1-2-2a2 2 0 0 1 2-2m0-6a2 2 0 0 1 2 2a2 2 0 0 1-2 2a2 2 0 0 1-2-2a2 2 0 0 1 2-2m0-6a2 2 0 0 1 2 2a2 2 0 0 1-2 2a2 2 0 0 1-2-2a2 2 0 0 1 2-2`},null,-1)]])}var Ke=j({name:`mdi-dots-vertical`,render:Ge}),L={class:`flex items-center justify-end gap-1`},qe=D({__name:`CuiPluginTableActions`,props:{plugin:{}},setup(e){let{plugin:t}=k(e),{pluginUpdate:n,queued:r,updating:i,isLoading:s,items:te,openDialog:ne,handleInlineUpdate:l}=ze(t),u=b(`menuRef`);return(e,t)=>{let d=a,f=ee,re=h,p=Ke,m=o;return y(),M(`div`,L,[T(n)?.updateAvailable||T(i)?x((y(),C(f,{key:0,text:``,rounded:``,class:`cui-icon-md`,onClick:T(l)},{icon:S(()=>[T(i)?(y(),C(d,{key:0,class:`w-4! h-4! m-0`,"stroke-width":`6`})):(y(),C(T(c),{key:1,width:`100%`,height:`100%`}))]),_:1},8,[`onClick`])),[[m,{value:T(i)?e.$t(T(r)?`components.plugin_card.update_queued`:`components.plugin_card.update_running`):e.$t(`components.plugin_card.update_now`,{version:T(n)?.latestVersion})},void 0,{top:!0}]]):O(``,!0),x((y(),C(f,{severity:`secondary`,text:``,rounded:``,class:`cui-icon-md`,onClick:t[0]||=e=>T(ne)(`console`)},{icon:S(()=>[w(re,{width:`100%`,height:`100%`})]),_:1})),[[m,{value:e.$t(`components.form.tooltip.console`)},void 0,{top:!0}]]),w(f,{severity:`secondary`,text:``,rounded:``,class:`cui-icon-md`,disabled:T(s),onClick:T(u)?.toggleMenu},{icon:S(()=>[w(p,{width:`100%`,height:`100%`})]),_:1},8,[`disabled`,`onClick`]),w(se,{ref_key:`menuRef`,ref:u,items:T(te),popover:{pt:{content:{class:`p-0! rounded-xl! overflow-hidden!`}}}},null,8,[`items`])])}}}),Je=D({__name:`CuiPluginStatusBadge`,props:{pluginName:{}},setup(e){let n=Ve(e.pluginName);return v(()=>{n.connect()}),(e,r)=>{let i=t,a=o;return x((y(),C(i,{style:_e({background:T(n).statusColor.value})},null,8,[`style`])),[[a,{value:e.$t(`components.plugin_card.status_${T(n).status.value}`)},void 0,{top:!0}]])}}}),R={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Ye(e,t){return y(),M(`svg`,R,[...t[0]||=[E(`path`,{fill:`none`,stroke:`currentColor`,"stroke-width":`2`,d:`M4 9h16M9 4v16m-4 0h14a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H5a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1Z`},null,-1)]])}var Xe=j({name:`mingcute-table-2-line`,render:Ye}),Ze={class:`flex flex-col`},Qe={key:0,class:`page-title`},$e={class:`flex gap-2 mb-4`},et={key:1,class:`flex flex-1 min-h-0 flex-col items-center justify-center w-full gap-4`},tt={class:`text-muted text-sm`},nt={class:`flex items-center justify-center`},rt={class:`flex items-center gap-3 min-w-0`},it={class:`font-bold text-color text-sm truncate`},at={class:`text-xs text-muted truncate`},ot={class:`flex flex-col`},st={class:`text-sm`},ct={key:0,class:`text-xs text-green-500`},z=D({__name:`Plugins`,setup(t){let a=new ke,h=new Ne,v=ae(),D=ce(),{t:k}=s(),{smBreakpoint:j}=p(),{width:ze,height:Ve}=d(),{startUpdate:We}=Me(),Ge=we(),Ke=l(),{uiSettings:L}=ve(Ke),{data:R,isBusy:Ye}=a.getPluginsQuery({page:1,pageSize:-1}),{data:z}=h.getConfigQuery(!0),{mutateAsync:lt}=h.patchConfigQuery(),ut=b(`menuRef`),B=N(``),V=N({}),H=N(!1),{selectionMode:U,selectedIds:W,selectedItems:G,allSelected:dt,bulkBusy:K,enterSelectionMode:ft,exitSelectionMode:q,toggleSelectAll:pt,toggleSelection:mt}=u(()=>X.value,e=>e.pluginName),J=A(()=>Ge.status.value?.runActive===!0),ht=A(()=>[{key:`betaVersions`,label:k(`views.plugins.beta_versions`),description:k(`views.plugins.beta_versions_hint`),toggle:!0,toggleState:z.value?.plugins?.betaVersions??!1,onClick:kt},{key:`allowBuildScripts`,label:k(`views.plugins.allow_build_scripts`),description:k(`views.plugins.allow_build_scripts_hint`),toggle:!0,toggleState:z.value?.plugins?.allowBuildScripts??!1,onClick:Ot}]),gt=A(()=>Ye.value&&!R.value),Y=A(()=>L.value.plugins.view),X=A(()=>{let e=R.value?.result??[],t=B.value.toLowerCase().trim();return t?e.filter(e=>e.pluginName.toLowerCase().includes(t)||e.displayName?.toLowerCase().includes(t)):e}),Z=A(()=>(R.value?.result??[]).filter(e=>V.value[e.pluginName]?.updateAvailable)),_t=A(()=>G.value.filter(e=>V.value[e.pluginName]?.updateAvailable)),vt=A(()=>(j.value?1:Math.max(1,Math.floor(ze.value/450)))*Math.max(1,Math.ceil(Ve.value/(Be.HEIGHT+8))));function yt(){L.value.plugins.view=Y.value===`cards`?`table`:`cards`}async function bt(){let e=R.value?.result??[];await Promise.all(e.map(async e=>{V.value[e.pluginName]=await a.queryClient.fetchQuery({queryKey:[`plugins`,e.pluginName,`update`],queryFn:({signal:t})=>De({pluginName:e.pluginName,signal:t}),staleTime:6e4}).catch(()=>void 0)}))}async function Q(){await a.queryClient.refetchQueries({queryKey:[`pluginsList`]}),await a.queryClient.refetchQueries({queryKey:[`plugins`]}),await bt()}async function xt(e){let t=e.map(e=>({plugin:e,version:V.value[e.pluginName]?.latestVersion})).filter(e=>!!e.version);if(!t.length)return{done:0,failed:[]};let n=Ee({plugins:t.map(e=>({pluginname:e.plugin.pluginName,pluginversion:e.version}))}),r=[],i=0;return await Promise.all(t.map(async({plugin:e,version:t})=>{await We(e.pluginName,t,async()=>{let t=(await n).failed.find(t=>t.id===e.pluginName);if(t)throw Error(t.error)})?i++:r.push(e.displayName||e.pluginName)})),{done:i,failed:r}}async function St(){if(H.value)return;H.value=!0;let e=0,t=[];try{({done:e,failed:t}=await xt([...Z.value]))}finally{H.value=!1}await Q(),t.length&&D.add({severity:`error`,summary:k(`views.plugins.update_all_failed`,{count:t.length}),detail:t.join(`, `),life:8e3}),e&&D.add({severity:`success`,detail:k(`views.plugins.update_all_done`,{count:e}),life:5e3})}function $(e,t,n){t.length&&D.add({severity:`error`,summary:k(`views.plugins.bulk_failed`,{count:t.length}),detail:t.join(`, `),life:8e3}),e&&D.add({severity:`success`,detail:k(n,{count:e}),life:5e3})}function Ct(e,t){return e.filter(e=>t.some(t=>t.id===e.pluginName)).map(e=>e.displayName||e.pluginName)}async function wt(){K.value=!0;let e=0,t=[];try{({done:e,failed:t}=await xt([..._t.value]))}finally{K.value=!1}await Q(),q(),$(e,t,`views.plugins.update_all_done`)}async function Tt(){let e=[...G.value];K.value=!0;try{let t=await F({pluginNames:e.map(e=>e.pluginName)});await Q(),q(),$(t.succeeded.length,Ct(e,t.failed),`views.plugins.enable_selected_done`)}catch(e){D.add({severity:`error`,detail:e?.response?.data?.message??e?.message??String(e),life:5e3})}finally{K.value=!1}}async function Et(){let e=[...G.value];K.value=!0;try{let t=await Oe({pluginNames:e.map(e=>e.pluginName)});await Q(),q(),$(t.succeeded.length,Ct(e,t.failed),`views.plugins.disable_selected_done`)}catch(e){D.add({severity:`error`,detail:e?.response?.data?.message??e?.message??String(e),life:5e3})}finally{K.value=!1}}function Dt(){let e=[...G.value];v.openTextDialog({data:{title:k(`components.dialog.title.confirm`),contentText:k(`views.plugins.uninstall_selected_confirm`,{count:e.length}),confirmText:k(`components.form.button.uninstall`),confirmButtonProps:{severity:`danger`}},onConfirm:async()=>{K.value=!0;try{let t=await Te({pluginNames:e.map(e=>e.pluginName)});await Q(),q(),$(t.succeeded.length,Ct(e,t.failed),`views.plugins.uninstall_selected_done`)}catch(e){D.add({severity:`error`,detail:e?.response?.data?.message??e?.message??String(e),life:5e3})}finally{K.value=!1}}})}async function Ot(){let e=z.value;if(!e||typeof e==`string`)return;let t={...e,plugins:{...e.plugins,allowBuildScripts:!e.plugins?.allowBuildScripts}};await lt({configData:JSON.stringify(t)})}async function kt(){let e=z.value;if(!e||typeof e==`string`)return;let t={...e,plugins:{...e.plugins,betaVersions:!e.plugins?.betaVersions}};await lt({configData:JSON.stringify(t)})}function At(){v.openComponentDialog(I,{data:{title:k(`components.dialog.title.search_plugin`),contentProps:{},hideConfirmButton:!0,fullscreen:!0}})}de(()=>R.value?.result,e=>{e?.length&&bt()},{immediate:!0});let jt=a.queryClient.getQueryCache().subscribe(e=>{let[t,n,r]=e.query.queryKey;if(t!==`plugins`||r!==`update`||typeof n!=`string`)return;let i=e.query.state.data;i&&(V.value[n]=i)});return he(jt),(t,a)=>{let s=Se,l=Pe,u=ee,d=ne,p=je,ae=be,h=n,ce=ye,v=Ie,de=se,b=i,he=ie,D=e,A=xe,N=Je,ve=He,we=ue(`RouterLink`),Te=qe,Ee=Ae,De=r,Oe=Ue,F=te,ke=oe,I=o;return y(),M(`div`,Ze,[T(j)?O(``,!0):(y(),M(`h1`,Qe,P(t.$t(`views.${String(t.$route.name).toLowerCase()}.title`)),1)),T(J)?(y(),C(s,{key:1,severity:`warn`,class:`mb-4`,closable:!1},{default:S(()=>[me(P(T(k)(`views.plugins.updates_run_active`)),1)]),_:1})):O(``,!0),w(d,{position:`left`},{default:S(()=>[w(u,{severity:`secondary`,text:``,class:`cui-button p-2 text-color non-draggable-region`,onClick:a[0]||=e=>t.$router.push(`/menu`)},{icon:S(()=>[w(l,{class:`w-6 h-6`})]),_:1})]),_:1}),E(`div`,$e,[w(ce,{class:`flex-1`},{default:S(()=>[w(ae,null,{default:S(()=>[w(p,{class:`w-4 h-4`})]),_:1}),w(h,{modelValue:T(B),"onUpdate:modelValue":a[1]||=e=>ge(B)?B.value=e:null,placeholder:T(k)(`views.plugins.search`),class:`w-full`},null,8,[`modelValue`,`placeholder`])]),_:1}),(`hasPermission`in t?t.hasPermission:T(g))(void 0,`admin`)?(y(),M(_,{key:0},[x((y(),C(u,{severity:`secondary`,outlined:``,class:`cui-button shrink-0`,onClick:a[2]||=e=>T(ut)?.toggleMenu(e)},{icon:S(()=>[w(v,{class:`w-4.5 h-4.5`})]),_:1})),[[I,{value:T(k)(`views.plugins.settings`)},void 0,{left:!0}]]),T(Z).length?x((y(),C(u,{key:0,class:`cui-button shrink-0 whitespace-nowrap`,loading:T(H),disabled:T(J),label:T(j)?String(T(Z).length):T(k)(`views.plugins.update_all`,{count:T(Z).length}),onClick:St},{icon:S(()=>[w(T(c),{class:`w-4.5 h-4.5`})]),_:1},8,[`loading`,`disabled`,`label`])),[[I,{value:T(k)(`views.plugins.update_all_hint`)},void 0,{left:!0}]]):O(``,!0),w(de,{ref_key:`menuRef`,ref:ut,items:T(ht),"auto-hide":!1,popover:{pt:{root:{class:`w-[22rem]`},content:{class:`p-0! rounded-xl! overflow-hidden!`}}}},null,8,[`items`])],64)):O(``,!0)]),w(fe,{name:`fade-2`,mode:`out-in`},{default:S(()=>[T(gt)?(y(),M(`div`,{key:`loading`,class:`grid w-full gap-2`,style:_e({gridTemplateColumns:`repeat(auto-fill, minmax(${T(j)?`100%`:`450px`}, 1fr))`})},[(y(!0),M(_,null,pe(T(vt),e=>(y(),C(b,{key:e,height:`${T(Be).HEIGHT}px`,class:`cui-card`},null,8,[`height`]))),128))],4)):!T(X).length||!(`hasPermission`in t?t.hasPermission:T(g))(void 0,`admin`)?(y(),M(`div`,et,[w(he,{class:`w-12 h-12 text-muted`}),E(`span`,tt,P(t.$t(`views.plugins.no_plugins`)),1)])):T(Y)===`table`?(y(),C(De,{key:`table`,class:`cui-card h-auto! self-start`},{content:S(()=>[w(Ee,{value:T(X),paginator:``,"striped-rows":``,class:`w-full`},{default:S(()=>[T(U)?(y(),C(A,{key:0,header:``,"header-class":`p-2 pl-4 w-8 max-w-8`,class:`p-2 pl-4 w-8 max-w-8`},{body:S(({data:e})=>[w(D,{"model-value":T(W).has(e.pluginName),binary:``,size:`small`,"onUpdate:modelValue":t=>T(mt)(e.pluginName)},null,8,[`model-value`,`onUpdate:modelValue`])]),_:1})):O(``,!0),w(A,{header:``,"header-class":`p-2 pl-4 w-5 max-w-5`,class:`p-2 pl-4 w-5 max-w-5`},{body:S(({data:e})=>[E(`div`,nt,[w(N,{"plugin-name":e.pluginName},null,8,[`plugin-name`])])]),_:1}),w(A,{field:`displayName`,header:T(k)(`views.plugins.plugin`),"header-class":`p-2 min-w-48`,class:`p-2 min-w-48`},{body:S(({data:e})=>[w(we,{to:`/plugins/${e.pluginName}`,class:`flex flex-col min-w-0`},{default:S(()=>[E(`div`,rt,[E(`span`,it,P(e.displayName||e.pluginName),1),T(V)[e.pluginName]?.updateAvailable?x((y(),C(ve,{key:0,class:`text-green-500 shrink-0`},null,512)),[[I,{value:t.$t(`components.form.tooltip.update_available`)}]]):O(``,!0)]),E(`span`,at,P(e.pluginName),1)]),_:2},1032,[`to`])]),_:1},8,[`header`]),w(A,{field:`installedVersion`,header:T(k)(`views.plugins.version`),"header-class":`p-2`,class:`p-2`},{body:S(({data:e})=>[E(`div`,ot,[E(`span`,st,`v`+P(e.installedVersion||e.latestVersion),1),T(V)[e.pluginName]?.updateAvailable?(y(),M(`span`,ct,`v`+P(T(V)[e.pluginName]?.latestVersion),1)):O(``,!0)])]),_:1},8,[`header`]),w(A,{"header-class":`p-2 w-32`,class:`p-2 w-32`},{body:S(({data:e})=>[w(Te,{plugin:e},null,8,[`plugin`])]),_:1})]),_:1},8,[`value`])]),_:1})):(y(),M(`div`,{key:`content`,class:`grid w-full gap-2`,style:_e({gridTemplateColumns:`repeat(auto-fill, minmax(${T(j)?`100%`:`450px`}, 1fr))`})},[(y(!0),M(_,null,pe(T(X),e=>(y(),C(Oe,{key:e.pluginName,plugin:e,"selection-mode":T(U),selected:T(W).has(e.pluginName),onSelect:t=>T(mt)(e.pluginName)},null,8,[`plugin`,`selection-mode`,`selected`,`onSelect`]))),128))],4))]),_:1}),(`hasPermission`in t?t.hasPermission:T(g))(void 0,`admin`)?(y(),C(ke,{key:2,"force-visible":T(U)},{default:S(()=>[T(U)?(y(),M(_,{key:1},[w(F,{grouped:``,"tooltip-props":{value:t.$t(`components.form.tooltip.cancel_selection`)},"button-props":{severity:`secondary`},icon:T(Ce),"icon-props":{width:`100%`,height:`100%`},onClick:T(q)},null,8,[`tooltip-props`,`icon`,`onClick`]),w(F,{grouped:``,"tooltip-props":{value:T(dt)?t.$t(`components.form.tooltip.deselect_all`):t.$t(`components.form.tooltip.select_all`)},"button-props":{severity:T(dt)?`primary`:`secondary`},icon:T(le),"icon-props":{width:`100%`,height:`100%`},onClick:T(pt)},null,8,[`tooltip-props`,`button-props`,`icon`,`onClick`]),w(F,{grouped:``,"tooltip-props":{value:T(k)(`views.plugins.update_selected`)},"button-props":{severity:`secondary`,disabled:!T(_t).length||T(K)||T(J)},icon:T(c),"icon-props":{width:`100%`,height:`100%`},onClick:wt},null,8,[`tooltip-props`,`button-props`,`icon`]),w(F,{grouped:``,"tooltip-props":{value:T(k)(`views.plugins.enable_selected`)},"button-props":{severity:`secondary`,disabled:!T(W).size||T(K)||T(J)},icon:T(Re),"icon-props":{width:`100%`,height:`100%`},onClick:Tt},null,8,[`tooltip-props`,`button-props`,`icon`]),w(F,{grouped:``,"tooltip-props":{value:T(k)(`views.plugins.disable_selected`)},"button-props":{severity:`secondary`,disabled:!T(W).size||T(K)||T(J)},icon:T(Le),"icon-props":{width:`100%`,height:`100%`},onClick:Et},null,8,[`tooltip-props`,`button-props`,`icon`]),w(F,{grouped:``,"tooltip-props":{value:T(k)(`views.plugins.uninstall_selected`)},"button-props":{severity:`danger`,disabled:!T(W).size||T(K)||T(J)},icon:T(m),"icon-props":{width:`100%`,height:`100%`},onClick:Dt},null,8,[`tooltip-props`,`button-props`,`icon`])],64)):(y(),M(_,{key:0},[T(X).length?(y(),C(F,{key:0,grouped:``,"tooltip-props":{value:T(k)(`views.plugins.select`)},"button-props":{severity:`secondary`},icon:T(re),"icon-props":{width:`100%`,height:`100%`},onClick:T(ft)},null,8,[`tooltip-props`,`icon`,`onClick`])):O(``,!0),w(F,{grouped:``,"tooltip-props":{value:T(Y)===`cards`?T(k)(`views.plugins.view_table`):T(k)(`views.plugins.view_cards`)},"button-props":{severity:`secondary`},icon:T(Y)===`cards`?T(Xe):T(f),"icon-props":{width:`100%`,height:`100%`},onClick:yt},null,8,[`tooltip-props`,`icon`]),w(F,{grouped:``,"tooltip-props":{value:t.$t(`views.plugins.search_plugins`)},"button-props":{class:`text-white`},icon:T(Fe),"icon-props":{width:`30px`,height:`30px`},onClick:At},null,8,[`tooltip-props`,`icon`])],64))]),_:1},8,[`force-visible`])):O(``,!0)])}}});export{z as default};
|
|
1
|
+
import{B as e,Bt as t,F as n,G as r,K as i,Pt as a,Rt as ee,Wt as o,zr as s}from"./vendor-cameraui-ZyqPntQ7.js";import{$n as c,An as te,B as ne,Bn as l,I as u,In as d,Kn as f,L as re,Mn as p,R as m,Wn as ie,ct as ae,jn as oe,mn as se,rr as h,xn as g,xr as ce,z as le}from"./api-2VPaKkqc.js";import{$t as _,En as v,In as ue,Kn as de,Kt as fe,Mn as y,Pn as pe,Wn as b,Xn as x,Yn as S,an as C,dn as me,fn as w,hr as T,in as E,jn as he,mn as D,nr as ge,on as O,pr as k,rn as A,rr as j,sn as M,sr as N,vr as _e,yr as P}from"./vendor-AX0A8AMd.js";import{p as ve}from"./vendor-core-DN-bpg68.js";import{F as ye,P as be,S as xe,z as Se}from"./vendor-primevue-DXXRO7Z5.js";import{t as Ce}from"./close-ChGy_BeH.js";import{t as we}from"./useUpdatesSocket-DFt7_yr8.js";import{a as Te,i as Ee,l as De,n as Oe,r as F,t as ke}from"./plugins-CGDE1O2F.js";import{t as Ae}from"./CuiDataTable-f_QVzRqq.js";import{t as je}from"./search-Ck7b7yvI.js";import{t as I}from"./PluginSearch-DgQOryM2.js";import{t as Me}from"./usePluginUpdates-wfckuNy_.js";import{t as Ne}from"./config-soN-D-nC.js";import{t as Pe}from"./back-filled-MAIFvJqE.js";import{t as Fe}from"./plus-Ct9djYce.js";import{t as Ie}from"./settings-Bw6giVLH.js";import{a as Le,i as Re,n as ze,o as Be,r as Ve,s as He,t as Ue}from"./CuiPluginCard-DQgVasi7.js";var We={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Ge(e,t){return y(),M(`svg`,We,[...t[0]||=[E(`path`,{fill:`currentColor`,d:`M12 16a2 2 0 0 1 2 2a2 2 0 0 1-2 2a2 2 0 0 1-2-2a2 2 0 0 1 2-2m0-6a2 2 0 0 1 2 2a2 2 0 0 1-2 2a2 2 0 0 1-2-2a2 2 0 0 1 2-2m0-6a2 2 0 0 1 2 2a2 2 0 0 1-2 2a2 2 0 0 1-2-2a2 2 0 0 1 2-2`},null,-1)]])}var Ke=j({name:`mdi-dots-vertical`,render:Ge}),L={class:`flex items-center justify-end gap-1`},qe=D({__name:`CuiPluginTableActions`,props:{plugin:{}},setup(e){let{plugin:t}=k(e),{pluginUpdate:n,queued:r,updating:i,isLoading:s,items:te,openDialog:ne,handleInlineUpdate:l}=ze(t),u=b(`menuRef`);return(e,t)=>{let d=a,f=ee,re=h,p=Ke,m=o;return y(),M(`div`,L,[T(n)?.updateAvailable||T(i)?x((y(),C(f,{key:0,text:``,rounded:``,class:`cui-icon-md`,onClick:T(l)},{icon:S(()=>[T(i)?(y(),C(d,{key:0,class:`w-4! h-4! m-0`,"stroke-width":`6`})):(y(),C(T(c),{key:1,width:`100%`,height:`100%`}))]),_:1},8,[`onClick`])),[[m,{value:T(i)?e.$t(T(r)?`components.plugin_card.update_queued`:`components.plugin_card.update_running`):e.$t(`components.plugin_card.update_now`,{version:T(n)?.latestVersion})},void 0,{top:!0}]]):O(``,!0),x((y(),C(f,{severity:`secondary`,text:``,rounded:``,class:`cui-icon-md`,onClick:t[0]||=e=>T(ne)(`console`)},{icon:S(()=>[w(re,{width:`100%`,height:`100%`})]),_:1})),[[m,{value:e.$t(`components.form.tooltip.console`)},void 0,{top:!0}]]),w(f,{severity:`secondary`,text:``,rounded:``,class:`cui-icon-md`,disabled:T(s),onClick:T(u)?.toggleMenu},{icon:S(()=>[w(p,{width:`100%`,height:`100%`})]),_:1},8,[`disabled`,`onClick`]),w(se,{ref_key:`menuRef`,ref:u,items:T(te),popover:{pt:{content:{class:`p-0! rounded-xl! overflow-hidden!`}}}},null,8,[`items`])])}}}),Je=D({__name:`CuiPluginStatusBadge`,props:{pluginName:{}},setup(e){let n=Ve(e.pluginName);return v(()=>{n.connect()}),(e,r)=>{let i=t,a=o;return x((y(),C(i,{style:_e({background:T(n).statusColor.value})},null,8,[`style`])),[[a,{value:e.$t(`components.plugin_card.status_${T(n).status.value}`)},void 0,{top:!0}]])}}}),R={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Ye(e,t){return y(),M(`svg`,R,[...t[0]||=[E(`path`,{fill:`none`,stroke:`currentColor`,"stroke-width":`2`,d:`M4 9h16M9 4v16m-4 0h14a1 1 0 0 0 1-1V5a1 1 0 0 0-1-1H5a1 1 0 0 0-1 1v14a1 1 0 0 0 1 1Z`},null,-1)]])}var Xe=j({name:`mingcute-table-2-line`,render:Ye}),Ze={class:`flex flex-col`},Qe={key:0,class:`page-title`},$e={class:`flex gap-2 mb-4`},et={key:1,class:`flex flex-1 min-h-0 flex-col items-center justify-center w-full gap-4`},tt={class:`text-muted text-sm`},nt={class:`flex items-center justify-center`},rt={class:`flex items-center gap-3 min-w-0`},it={class:`font-bold text-color text-sm truncate`},at={class:`text-xs text-muted truncate`},ot={class:`flex flex-col`},st={class:`text-sm`},ct={key:0,class:`text-xs text-green-500`},z=D({__name:`Plugins`,setup(t){let a=new ke,h=new Ne,v=ae(),D=ce(),{t:k}=s(),{smBreakpoint:j}=p(),{width:ze,height:Ve}=d(),{startUpdate:We}=Me(),Ge=we(),Ke=l(),{uiSettings:L}=ve(Ke),{data:R,isBusy:Ye}=a.getPluginsQuery({page:1,pageSize:-1}),{data:z}=h.getConfigQuery(!0),{mutateAsync:lt}=h.patchConfigQuery(),ut=b(`menuRef`),B=N(``),V=N({}),H=N(!1),{selectionMode:U,selectedIds:W,selectedItems:G,allSelected:dt,bulkBusy:K,enterSelectionMode:ft,exitSelectionMode:q,toggleSelectAll:pt,toggleSelection:mt}=u(()=>X.value,e=>e.pluginName),J=A(()=>Ge.status.value?.runActive===!0),ht=A(()=>[{key:`betaVersions`,label:k(`views.plugins.beta_versions`),description:k(`views.plugins.beta_versions_hint`),toggle:!0,toggleState:z.value?.plugins?.betaVersions??!1,onClick:kt},{key:`allowBuildScripts`,label:k(`views.plugins.allow_build_scripts`),description:k(`views.plugins.allow_build_scripts_hint`),toggle:!0,toggleState:z.value?.plugins?.allowBuildScripts??!1,onClick:Ot}]),gt=A(()=>Ye.value&&!R.value),Y=A(()=>L.value.plugins.view),X=A(()=>{let e=R.value?.result??[],t=B.value.toLowerCase().trim();return t?e.filter(e=>e.pluginName.toLowerCase().includes(t)||e.displayName?.toLowerCase().includes(t)):e}),Z=A(()=>(R.value?.result??[]).filter(e=>V.value[e.pluginName]?.updateAvailable)),_t=A(()=>G.value.filter(e=>V.value[e.pluginName]?.updateAvailable)),vt=A(()=>(j.value?1:Math.max(1,Math.floor(ze.value/450)))*Math.max(1,Math.ceil(Ve.value/(Be.HEIGHT+8))));function yt(){L.value.plugins.view=Y.value===`cards`?`table`:`cards`}async function bt(){let e=R.value?.result??[];await Promise.all(e.map(async e=>{V.value[e.pluginName]=await a.queryClient.fetchQuery({queryKey:[`plugins`,e.pluginName,`update`],queryFn:({signal:t})=>De({pluginName:e.pluginName,signal:t}),staleTime:6e4}).catch(()=>void 0)}))}async function Q(){await a.queryClient.refetchQueries({queryKey:[`pluginsList`]}),await a.queryClient.refetchQueries({queryKey:[`plugins`]}),await bt()}async function xt(e){let t=e.map(e=>({plugin:e,version:V.value[e.pluginName]?.latestVersion})).filter(e=>!!e.version);if(!t.length)return{done:0,failed:[]};let n=Ee({plugins:t.map(e=>({pluginname:e.plugin.pluginName,pluginversion:e.version}))}),r=[],i=0;return await Promise.all(t.map(async({plugin:e,version:t})=>{await We(e.pluginName,t,async()=>{let t=(await n).failed.find(t=>t.id===e.pluginName);if(t)throw Error(t.error)})?i++:r.push(e.displayName||e.pluginName)})),{done:i,failed:r}}async function St(){if(H.value)return;H.value=!0;let e=0,t=[];try{({done:e,failed:t}=await xt([...Z.value]))}finally{H.value=!1}await Q(),t.length&&D.add({severity:`error`,summary:k(`views.plugins.update_all_failed`,{count:t.length}),detail:t.join(`, `),life:8e3}),e&&D.add({severity:`success`,detail:k(`views.plugins.update_all_done`,{count:e}),life:5e3})}function $(e,t,n){t.length&&D.add({severity:`error`,summary:k(`views.plugins.bulk_failed`,{count:t.length}),detail:t.join(`, `),life:8e3}),e&&D.add({severity:`success`,detail:k(n,{count:e}),life:5e3})}function Ct(e,t){return e.filter(e=>t.some(t=>t.id===e.pluginName)).map(e=>e.displayName||e.pluginName)}async function wt(){K.value=!0;let e=0,t=[];try{({done:e,failed:t}=await xt([..._t.value]))}finally{K.value=!1}await Q(),q(),$(e,t,`views.plugins.update_all_done`)}async function Tt(){let e=[...G.value];K.value=!0;try{let t=await F({pluginNames:e.map(e=>e.pluginName)});await Q(),q(),$(t.succeeded.length,Ct(e,t.failed),`views.plugins.enable_selected_done`)}catch(e){D.add({severity:`error`,detail:e?.response?.data?.message??e?.message??String(e),life:5e3})}finally{K.value=!1}}async function Et(){let e=[...G.value];K.value=!0;try{let t=await Oe({pluginNames:e.map(e=>e.pluginName)});await Q(),q(),$(t.succeeded.length,Ct(e,t.failed),`views.plugins.disable_selected_done`)}catch(e){D.add({severity:`error`,detail:e?.response?.data?.message??e?.message??String(e),life:5e3})}finally{K.value=!1}}function Dt(){let e=[...G.value];v.openTextDialog({data:{title:k(`components.dialog.title.confirm`),contentText:k(`views.plugins.uninstall_selected_confirm`,{count:e.length}),confirmText:k(`components.form.button.uninstall`),confirmButtonProps:{severity:`danger`}},onConfirm:async()=>{K.value=!0;try{let t=await Te({pluginNames:e.map(e=>e.pluginName)});await Q(),q(),$(t.succeeded.length,Ct(e,t.failed),`views.plugins.uninstall_selected_done`)}catch(e){D.add({severity:`error`,detail:e?.response?.data?.message??e?.message??String(e),life:5e3})}finally{K.value=!1}}})}async function Ot(){let e=z.value;if(!e||typeof e==`string`)return;let t={...e,plugins:{...e.plugins,allowBuildScripts:!e.plugins?.allowBuildScripts}};await lt({configData:JSON.stringify(t)})}async function kt(){let e=z.value;if(!e||typeof e==`string`)return;let t={...e,plugins:{...e.plugins,betaVersions:!e.plugins?.betaVersions}};await lt({configData:JSON.stringify(t)})}function At(){v.openComponentDialog(I,{data:{title:k(`components.dialog.title.search_plugin`),contentProps:{},hideConfirmButton:!0,fullscreen:!0}})}de(()=>R.value?.result,e=>{e?.length&&bt()},{immediate:!0});let jt=a.queryClient.getQueryCache().subscribe(e=>{let[t,n,r]=e.query.queryKey;if(t!==`plugins`||r!==`update`||typeof n!=`string`)return;let i=e.query.state.data;i&&(V.value[n]=i)});return he(jt),(t,a)=>{let s=Se,l=Pe,u=ee,d=ne,p=je,ae=be,h=n,ce=ye,v=Ie,de=se,b=i,he=ie,D=e,A=xe,N=Je,ve=He,we=ue(`RouterLink`),Te=qe,Ee=Ae,De=r,Oe=Ue,F=te,ke=oe,I=o;return y(),M(`div`,Ze,[T(j)?O(``,!0):(y(),M(`h1`,Qe,P(t.$t(`views.${String(t.$route.name).toLowerCase()}.title`)),1)),T(J)?(y(),C(s,{key:1,severity:`warn`,class:`mb-4`,closable:!1},{default:S(()=>[me(P(T(k)(`views.plugins.updates_run_active`)),1)]),_:1})):O(``,!0),w(d,{position:`left`},{default:S(()=>[w(u,{severity:`secondary`,text:``,class:`cui-button p-2 text-color non-draggable-region`,onClick:a[0]||=e=>t.$router.push(`/menu`)},{icon:S(()=>[w(l,{class:`w-6 h-6`})]),_:1})]),_:1}),E(`div`,$e,[w(ce,{class:`flex-1`},{default:S(()=>[w(ae,null,{default:S(()=>[w(p,{class:`w-4 h-4`})]),_:1}),w(h,{modelValue:T(B),"onUpdate:modelValue":a[1]||=e=>ge(B)?B.value=e:null,placeholder:T(k)(`views.plugins.search`),class:`w-full`},null,8,[`modelValue`,`placeholder`])]),_:1}),(`hasPermission`in t?t.hasPermission:T(g))(void 0,`admin`)?(y(),M(_,{key:0},[x((y(),C(u,{severity:`secondary`,outlined:``,class:`cui-button shrink-0`,onClick:a[2]||=e=>T(ut)?.toggleMenu(e)},{icon:S(()=>[w(v,{class:`w-4.5 h-4.5`})]),_:1})),[[I,{value:T(k)(`views.plugins.settings`)},void 0,{left:!0}]]),T(Z).length?x((y(),C(u,{key:0,class:`cui-button shrink-0 whitespace-nowrap`,loading:T(H),disabled:T(J),label:T(j)?String(T(Z).length):T(k)(`views.plugins.update_all`,{count:T(Z).length}),onClick:St},{icon:S(()=>[w(T(c),{class:`w-4.5 h-4.5`})]),_:1},8,[`loading`,`disabled`,`label`])),[[I,{value:T(k)(`views.plugins.update_all_hint`)},void 0,{left:!0}]]):O(``,!0),w(de,{ref_key:`menuRef`,ref:ut,items:T(ht),"auto-hide":!1,popover:{pt:{root:{class:`w-[22rem]`},content:{class:`p-0! rounded-xl! overflow-hidden!`}}}},null,8,[`items`])],64)):O(``,!0)]),w(fe,{name:`fade-2`,mode:`out-in`},{default:S(()=>[T(gt)?(y(),M(`div`,{key:`loading`,class:`grid w-full gap-2`,style:_e({gridTemplateColumns:`repeat(auto-fill, minmax(${T(j)?`100%`:`450px`}, 1fr))`})},[(y(!0),M(_,null,pe(T(vt),e=>(y(),C(b,{key:e,height:`${T(Be).HEIGHT}px`,class:`cui-card`},null,8,[`height`]))),128))],4)):!T(X).length||!(`hasPermission`in t?t.hasPermission:T(g))(void 0,`admin`)?(y(),M(`div`,et,[w(he,{class:`w-12 h-12 text-muted`}),E(`span`,tt,P(t.$t(`views.plugins.no_plugins`)),1)])):T(Y)===`table`?(y(),C(De,{key:`table`,class:`cui-card h-auto! self-start`},{content:S(()=>[w(Ee,{value:T(X),paginator:``,"striped-rows":``,class:`w-full`},{default:S(()=>[T(U)?(y(),C(A,{key:0,header:``,"header-class":`p-2 pl-4 w-8 max-w-8`,class:`p-2 pl-4 w-8 max-w-8`},{body:S(({data:e})=>[w(D,{"model-value":T(W).has(e.pluginName),binary:``,size:`small`,"onUpdate:modelValue":t=>T(mt)(e.pluginName)},null,8,[`model-value`,`onUpdate:modelValue`])]),_:1})):O(``,!0),w(A,{header:``,"header-class":`p-2 pl-4 w-5 max-w-5`,class:`p-2 pl-4 w-5 max-w-5`},{body:S(({data:e})=>[E(`div`,nt,[w(N,{"plugin-name":e.pluginName},null,8,[`plugin-name`])])]),_:1}),w(A,{field:`displayName`,header:T(k)(`views.plugins.plugin`),"header-class":`p-2 min-w-48`,class:`p-2 min-w-48`},{body:S(({data:e})=>[w(we,{to:`/plugins/${e.pluginName}`,class:`flex flex-col min-w-0`},{default:S(()=>[E(`div`,rt,[E(`span`,it,P(e.displayName||e.pluginName),1),T(V)[e.pluginName]?.updateAvailable?x((y(),C(ve,{key:0,class:`text-green-500 shrink-0`},null,512)),[[I,{value:t.$t(`components.form.tooltip.update_available`)}]]):O(``,!0)]),E(`span`,at,P(e.pluginName),1)]),_:2},1032,[`to`])]),_:1},8,[`header`]),w(A,{field:`installedVersion`,header:T(k)(`views.plugins.version`),"header-class":`p-2`,class:`p-2`},{body:S(({data:e})=>[E(`div`,ot,[E(`span`,st,`v`+P(e.installedVersion||e.latestVersion),1),T(V)[e.pluginName]?.updateAvailable?(y(),M(`span`,ct,`v`+P(T(V)[e.pluginName]?.latestVersion),1)):O(``,!0)])]),_:1},8,[`header`]),w(A,{"header-class":`p-2 w-32`,class:`p-2 w-32`},{body:S(({data:e})=>[w(Te,{plugin:e},null,8,[`plugin`])]),_:1})]),_:1},8,[`value`])]),_:1})):(y(),M(`div`,{key:`content`,class:`grid w-full gap-2`,style:_e({gridTemplateColumns:`repeat(auto-fill, minmax(${T(j)?`100%`:`450px`}, 1fr))`})},[(y(!0),M(_,null,pe(T(X),e=>(y(),C(Oe,{key:e.pluginName,plugin:e,"selection-mode":T(U),selected:T(W).has(e.pluginName),onSelect:t=>T(mt)(e.pluginName)},null,8,[`plugin`,`selection-mode`,`selected`,`onSelect`]))),128))],4))]),_:1}),(`hasPermission`in t?t.hasPermission:T(g))(void 0,`admin`)?(y(),C(ke,{key:2,"force-visible":T(U)},{default:S(()=>[T(U)?(y(),M(_,{key:1},[w(F,{grouped:``,"tooltip-props":{value:t.$t(`components.form.tooltip.cancel_selection`)},"button-props":{severity:`secondary`},icon:T(Ce),"icon-props":{width:`100%`,height:`100%`},onClick:T(q)},null,8,[`tooltip-props`,`icon`,`onClick`]),w(F,{grouped:``,"tooltip-props":{value:T(dt)?t.$t(`components.form.tooltip.deselect_all`):t.$t(`components.form.tooltip.select_all`)},"button-props":{severity:T(dt)?`primary`:`secondary`},icon:T(le),"icon-props":{width:`100%`,height:`100%`},onClick:T(pt)},null,8,[`tooltip-props`,`button-props`,`icon`,`onClick`]),w(F,{grouped:``,"tooltip-props":{value:T(k)(`views.plugins.update_selected`)},"button-props":{severity:`secondary`,disabled:!T(_t).length||T(K)||T(J)},icon:T(c),"icon-props":{width:`100%`,height:`100%`},onClick:wt},null,8,[`tooltip-props`,`button-props`,`icon`]),w(F,{grouped:``,"tooltip-props":{value:T(k)(`views.plugins.enable_selected`)},"button-props":{severity:`secondary`,disabled:!T(W).size||T(K)||T(J)},icon:T(Re),"icon-props":{width:`100%`,height:`100%`},onClick:Tt},null,8,[`tooltip-props`,`button-props`,`icon`]),w(F,{grouped:``,"tooltip-props":{value:T(k)(`views.plugins.disable_selected`)},"button-props":{severity:`secondary`,disabled:!T(W).size||T(K)||T(J)},icon:T(Le),"icon-props":{width:`100%`,height:`100%`},onClick:Et},null,8,[`tooltip-props`,`button-props`,`icon`]),w(F,{grouped:``,"tooltip-props":{value:T(k)(`views.plugins.uninstall_selected`)},"button-props":{severity:`danger`,disabled:!T(W).size||T(K)||T(J)},icon:T(m),"icon-props":{width:`100%`,height:`100%`},onClick:Dt},null,8,[`tooltip-props`,`button-props`,`icon`])],64)):(y(),M(_,{key:0},[T(X).length?(y(),C(F,{key:0,grouped:``,"tooltip-props":{value:T(k)(`views.plugins.select`)},"button-props":{severity:`secondary`},icon:T(re),"icon-props":{width:`100%`,height:`100%`},onClick:T(ft)},null,8,[`tooltip-props`,`icon`,`onClick`])):O(``,!0),w(F,{grouped:``,"tooltip-props":{value:T(Y)===`cards`?T(k)(`views.plugins.view_table`):T(k)(`views.plugins.view_cards`)},"button-props":{severity:`secondary`},icon:T(Y)===`cards`?T(Xe):T(f),"icon-props":{width:`100%`,height:`100%`},onClick:yt},null,8,[`tooltip-props`,`icon`]),w(F,{grouped:``,"tooltip-props":{value:t.$t(`views.plugins.search_plugins`)},"button-props":{class:`text-white`},icon:T(Fe),"icon-props":{width:`30px`,height:`30px`},onClick:At},null,8,[`tooltip-props`,`icon`])],64))]),_:1},8,[`force-visible`])):O(``,!0)])}}});export{z as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{A as e,B as t,D as n,Dt as r,F as i,Lr as a,N as o,Ni as s,O as c,Oi as l,Or as u,Pt as d,Qr as f,Rt as p,S as m,Sr as h,Wt as g,_,a as v,k as y,ki as b,qr as x,s as S,w as ee,xr as C,zr as te}from"./vendor-cameraui-OySaGjmo.js";import{An as w,B as T,Dn as ne,En as re,G as ie,Gn as E,H as D,I as ae,It as oe,L as se,Mn as ce,Nn as le,R as ue,U as O,V as de,ct as fe,g as pe,it as me,jn as he,kn as ge,mn as _e,rt as ve,tn as ye,vn as be,vr as k,xn as xe,xr as Se,z as Ce}from"./api-ou2-S3Z9.js";import{$t as A,An as we,Kn as j,Mn as M,Nn as Te,Pn as N,Rn as P,Wn as Ee,Xn as De,Yn as F,an as I,ar as Oe,dn as ke,fn as L,gr as Ae,hr as R,in as z,mn as B,nr as V,on as H,qn as je,rn as U,rr as W,sn as G,sr as K,tn as Me,ur as Ne,vr as Pe,yn as Fe,yr as q}from"./vendor-AX0A8AMd.js";import{a as J,d as Ie,i as Le,j as Y,l as Re,z as ze}from"./vendor-primevue-CvHDsVi_.js";import{t as Be}from"./close-ChGy_BeH.js";import{a as Ve,n as He,r as Ue}from"./eventLabels-BsPoPWS9.js";import{t as We}from"./ring-resize-DsW_XYdA.js";import{i as Ge,n as Ke,r as qe,t as Je}from"./ungrouped-Pn6rAXZt.js";import{t as Ye}from"./utils-gctUU5q_.js";import{t as Xe}from"./settings-Bw6giVLH.js";import{n as Ze,t as Qe}from"./round-alt-arrow-left-bold-2FHg8vBl.js";var X={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function $e(e,t){return M(),G(`svg`,X,[...t[0]||=[z(`path`,{fill:`currentColor`,d:`M22 18.605a.75.75 0 0 1-.75.75h-5.1a2.93 2.93 0 0 1-5.66 0H2.75a.75.75 0 1 1 0-1.5h7.74a2.93 2.93 0 0 1 5.66 0h5.1a.75.75 0 0 1 .75.75m0-13.21a.75.75 0 0 1-.75.75H18.8a2.93 2.93 0 0 1-5.66 0H2.75a.75.75 0 1 1 0-1.5h10.39a2.93 2.93 0 0 1 5.66 0h2.45a.74.74 0 0 1 .75.75m0 6.6a.74.74 0 0 1-.75.75H9.55a2.93 2.93 0 0 1-5.66 0H2.75a.75.75 0 1 1 0-1.5h1.14a2.93 2.93 0 0 1 5.66 0h11.7a.75.75 0 0 1 .75.75`},null,-1)]])}var et=W({name:`mage-filter-fill`,render:$e}),tt={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function nt(e,t){return M(),G(`svg`,tt,[...t[0]||=[z(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-miterlimit":`10`,"stroke-width":`1.5`,d:`M21.25 12H8.895m-4.361 0H2.75m18.5 6.607h-5.748m-4.361 0H2.75m18.5-13.214h-3.105m-4.361 0H2.75m13.214 2.18a2.18 2.18 0 1 0 0-4.36a2.18 2.18 0 0 0 0 4.36Zm-9.25 6.607a2.18 2.18 0 1 0 0-4.36a2.18 2.18 0 0 0 0 4.36Zm6.607 6.608a2.18 2.18 0 1 0 0-4.361a2.18 2.18 0 0 0 0 4.36Z`},null,-1)]])}var rt=W({name:`mage-filter`,render:nt}),Z={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function it(e,t){return M(),G(`svg`,Z,[...t[0]||=[z(`path`,{fill:`currentColor`,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`},null,-1)]])}var at=W({name:`mdi-database-refresh-outline`,render:it}),ot={class:`flex flex-col gap-4`},st={class:`text-sm text-pretty`},ct={key:0,class:`flex flex-col gap-2`},lt={key:0,class:`flex justify-between text-sm text-muted`},ut={key:0},dt=B({__name:`ClipReindex`,setup(e,{expose:t}){let n=Fe(`dialogRefProps`),{t:r}=te(),{status:i,isBusy:a,checking:o,refresh:s,start:c,cancel:l}=S(),u=K(!1),d=K(!1),f=K(0),p=U(()=>i.value?.running===!0),m=U(()=>{if(d.value){if(!i.value?.total)return r(`views.recordings.reindex.up_to_date`);let{done:e,total:t,skipped:n}=i.value;return n?r(`views.recordings.reindex.result_failed`,{done:e,total:t,skipped:n}):r(`views.recordings.reindex.result`,{done:e,total:t})}return o.value?r(`views.recordings.reindex.checking`):p.value?r(`views.recordings.reindex.running_intro`):r(`views.recordings.reindex.intro`)}),h=U(()=>{if(d.value)return f.value;let e=i.value?.total??0;return e<=0?0:Math.min(100,Math.round(((i.value?.done??0)+(i.value?.skipped??0))/e*100))});async function g(){return p.value?l():(u.value=!0,c()),null}return j(p,(e,t)=>{!t||e||!u.value||(d.value=!0,f.value=i.value?.total?100:0,i.value?.total||requestAnimationFrame(()=>f.value=100))}),je(()=>{n.hideConfirmButton&&(n.hideConfirmButton.value=d.value),n.confirmText&&(n.confirmText.value=p.value?r(`views.recordings.reindex.stop`):r(`views.recordings.reindex.start`)),n.confirmButtonProps&&(n.confirmButtonProps.value=p.value?{severity:`danger`}:{}),n.disabled&&(n.disabled.value=a.value)}),we(()=>{i.value?.running&&(u.value=!0),s().then(()=>{i.value?.running&&(u.value=!0)})}),t({onConfirm:g}),(e,t)=>{let n=Ie;return M(),G(`div`,ot,[z(`span`,st,q(R(m)),1),R(u)||R(p)?(M(),G(`div`,ct,[L(n,{mode:R(o)?`indeterminate`:`determinate`,value:R(h),"show-value":!1,class:`h-2`},null,8,[`mode`,`value`]),R(p)&&!R(o)?(M(),G(`div`,lt,[z(`span`,null,q(e.$t(`views.recordings.reindex.progress`,{done:R(i)?.done??0,total:R(i)?.total??0})),1),R(i)?.skipped?(M(),G(`span`,ut,q(e.$t(`views.recordings.reindex.skipped`,{count:R(i).skipped})),1)):H(``,!0)])):H(``,!0)])):H(``,!0)])}}}),ft={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function pt(e,t){return M(),G(`svg`,ft,[...t[0]||=[z(`path`,{fill:`currentColor`,d:`m14 2l6 6v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zm4 18V9h-5V4H6v16zm-2-2l-2.5-1.7V18H8v-5h5.5v1.7L16 13z`},null,-1)]])}var mt=W({name:`mdi-file-video-outline`,render:pt}),ht={class:`flex flex-col gap-6`},gt={class:`flex flex-col field-gap`},_t={class:`cui-label`},Q={class:`flex flex-col field-gap`},vt={class:`cui-label`},$={class:`grid grid-cols-1 xs:grid-cols-2 gap-3`},yt={class:`flex flex-col gap-1`},bt={class:`text-xs text-muted`},xt={class:`flex flex-col gap-1`},St={class:`text-xs text-muted`},Ct={class:`grid grid-cols-1 xs:grid-cols-2 gap-x-6 gap-y-4`},wt={class:`flex flex-col field-gap`},Tt={class:`cui-label`},Et={class:`flex flex-col field-gap`},Dt={class:`cui-label`},Ot={class:`flex flex-col field-gap`},kt={class:`flex items-center gap-3`},At={class:`cui-label !mb-0`},jt={key:0,class:`ml-auto flex items-center gap-2.5 text-sm tabular-nums`},Mt={class:`font-semibold`},Nt={class:`font-semibold`},Pt={class:`border border-color rounded-xl card-background overflow-hidden`},Ft={class:`flex flex-col gap-3 max-h-[240px] overflow-y-auto p-2.5`},It={key:0,class:`flex items-center justify-center gap-2 text-muted text-sm py-6`},Lt={key:1,class:`text-center text-muted text-sm py-6`},Rt={class:`text-xs text-muted px-0.5`},zt={class:`font-mono text-xs truncate flex-1`},Bt={class:`text-xs text-muted tabular-nums shrink-0`},Vt={class:`font-mono text-xs text-muted tabular-nums shrink-0 min-w-[58px] text-right`},Ht=30,Ut=B({__name:`ExportRecordings`,props:{cameras:{},preselect:{}},setup(t,{expose:n}){let i=t,{t:a}=te(),c=Se(),l=Fe(`dialogRefProps`),{plugin:u}=r(`@camera.ui/camera-ui-nvr`),f=K([]),p=K(!1),m=K(i.preselect?.length?[...i.preselect]:[]),h=K(`best`),g=K(0),_=K(new Date(new Date().setHours(0,0,0,0))),v=K(new Date),y=U(()=>[{label:a(`views.recordings.export.quality_best`),value:`best`},{label:a(`views.recordings.export.quality_smallest`),value:`smallest`}]),b=U(()=>[0,1,2,5,10,30,60,120,180,240,300].map(e=>({label:e===0?a(`views.recordings.export.timelapse_off`):e<60?`${e} s`:`${e/60} min`,value:e}))),x=U(()=>g.value>0),S=U(()=>x.value?`~`:``),ee=U(()=>new Map(i.cameras.map(e=>[e.id,e.name]))),C=U(()=>_.value instanceof Date&&v.value instanceof Date&&_.value<v.value),w=U(()=>{if(!C.value)return[];let e=[],t=_.value.getTime(),n=v.value.getTime(),r=new Date(_.value);r.setHours(0,0,0,0);let i=new Date(v.value);for(i.setHours(0,0,0,0);r.getTime()<=i.getTime();){let i=new Date(r),a=new Date(r);a.setDate(a.getDate()+1);let o=Math.max(i.getTime(),t),s=Math.min(a.getTime(),n);s>o&&e.push({day:ae(i),startUs:o*1e3,endUs:s*1e3}),r.setDate(r.getDate()+1)}return e}),T=U(()=>f.value.map(e=>{let t=ee.value.get(e.cameraId)??e.cameraId,n=new Date(e.startUs/1e3),r=new Date(e.endUs/1e3),i=n.getHours()===0&&n.getMinutes()===0&&e.endUs-e.startUs===864e8,o=r.getHours()===0&&r.getMinutes()===0?`24:00`:oe(r);return{cameraId:e.cameraId,cameraName:t,name:`${se(t)}_${e.day}${x.value?`_timelapse`:``}.mp4`,span:i?a(`views.recordings.export.whole_day`):`${oe(n)}–${o}`,bytes:x.value?e.bytes/Ht:e.bytes}})),re=U(()=>{let e=new Map;for(let t of T.value){let n=e.get(t.cameraId);n||(n={cameraId:t.cameraId,cameraName:t.cameraName,files:[],bytes:0},e.set(t.cameraId,n)),n.files.push(t),n.bytes+=t.bytes}return[...e.values()]}),ie=U(()=>T.value.reduce((e,t)=>e+t.bytes,0)),E=U(()=>m.value.length===0?a(`views.recordings.export.no_cameras`):C.value?a(`views.recordings.export.no_footage`):a(`views.recordings.export.no_range`));function D(e){return String(e).padStart(2,`0`)}function ae(e){return`${e.getFullYear()}-${D(e.getMonth()+1)}-${D(e.getDate())}`}function oe(e){return`${D(e.getHours())}:${D(e.getMinutes())}`}function se(e){return e.replace(/[^a-zA-Z0-9-_]/g,`_`)}function ce(e){if(e<=0)return`0 MB`;let t=e/1e6;if(t<1e3)return`${t<10?t.toFixed(1):Math.round(t)} MB`;let n=e/1e9;return`${n.toFixed(+(n<10))} GB`}async function le(){let e=u.value;if(!e?.nvrExportEstimate||m.value.length===0||w.value.length===0){f.value=[],p.value=!1;return}p.value=!0;try{let t=await e.nvrExportEstimate({cameras:m.value,slices:w.value,quality:h.value});f.value=t.files??[]}catch{f.value=[]}finally{p.value=!1}}async function ue(){if(!C.value||m.value.length===0||w.value.length===0)return null;let e=u.value;if(!e?.nvrExportBatch)return c.add({severity:`error`,detail:a(`views.recordings.export.plugin_missing`),life:3e3}),null;let t=await e.nvrExportBatch({cameras:m.value,slices:w.value,quality:h.value,timelapseIntervalSec:x.value?g.value:0});await ne({url:t.url,filename:t.filename})}return s([m,w,h],le,{debounce:350,immediate:!0,deep:!0}),je(()=>{l.disabled&&(l.disabled.value=!C.value||m.value.length===0||!p.value&&T.value.length===0)}),n({onConfirm:ue}),(n,r)=>{let i=Re,a=o,s=ze,c=e,l=Y,u=J,f=d,x=mt;return M(),G(`div`,ht,[z(`div`,gt,[z(`label`,_t,q(n.$t(`views.recordings.export.cameras`)),1),L(i,{modelValue:R(m),"onUpdate:modelValue":r[0]||=e=>V(m)?m.value=e:null,options:t.cameras,"option-label":`name`,"option-value":`id`,display:`chip`,filter:``,placeholder:n.$t(`views.recordings.export.cameras_placeholder`),class:`w-full`},null,8,[`modelValue`,`options`,`placeholder`])]),z(`div`,Q,[z(`label`,vt,q(n.$t(`views.recordings.export.range`)),1),z(`div`,$,[z(`div`,yt,[z(`span`,bt,q(n.$t(`views.recordings.export.from`)),1),L(a,{modelValue:R(_),"onUpdate:modelValue":r[1]||=e=>V(_)?_.value=e:null,"show-time":``,"hour-format":`24`,fluid:``,"max-date":R(v)},null,8,[`modelValue`,`max-date`])]),z(`div`,xt,[z(`span`,St,q(n.$t(`views.recordings.export.to`)),1),L(a,{modelValue:R(v),"onUpdate:modelValue":r[2]||=e=>V(v)?v.value=e:null,"show-time":``,"hour-format":`24`,fluid:``,"min-date":R(_)},null,8,[`modelValue`,`min-date`])])]),R(C)?(M(),I(s,{key:1,severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:F(()=>[ke(q(n.$t(`views.recordings.export.range_hint`)),1)]),_:1})):(M(),I(s,{key:0,severity:`error`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:F(()=>[ke(q(n.$t(`views.recordings.export.invalid_range`)),1)]),_:1}))]),z(`div`,Ct,[z(`div`,wt,[z(`label`,Tt,q(n.$t(`views.recordings.export.quality`)),1),L(c,{modelValue:R(h),"onUpdate:modelValue":r[3]||=e=>V(h)?h.value=e:null,options:R(y),"option-label":`label`,"option-value":`value`,"allow-empty":!1,pt:{root:{class:`flex w-full`},pcToggleButton:{root:{class:`flex-1`}}}},null,8,[`modelValue`,`options`])]),z(`div`,Et,[z(`label`,Dt,q(n.$t(`views.recordings.export.timelapse`)),1),L(l,{modelValue:R(g),"onUpdate:modelValue":r[4]||=e=>V(g)?g.value=e:null,options:R(b),"option-label":`label`,"option-value":`value`,class:`w-full`},null,8,[`modelValue`,`options`])])]),z(`div`,Ot,[z(`div`,kt,[z(`label`,At,q(n.$t(`views.recordings.export.result`)),1),R(T).length?(M(),G(`div`,jt,[z(`span`,Mt,q(R(T).length)+` `+q(R(T).length===1?n.$t(`views.recordings.export.file`):n.$t(`views.recordings.export.files`)),1),r[5]||=z(`span`,{class:`text-muted`},`·`,-1),z(`span`,Nt,q(R(S))+q(ce(R(ie))),1),L(u,{value:R(T).length===1?`MP4`:`ZIP`,severity:`info`},null,8,[`value`])])):H(``,!0)]),z(`div`,Pt,[z(`div`,Ft,[R(p)&&!R(T).length?(M(),G(`div`,It,[L(f,{style:{width:`1rem`,height:`1rem`},"stroke-width":`4`,class:`m-0`}),z(`span`,null,q(n.$t(`views.recordings.export.estimating`)),1)])):R(T).length?(M(!0),G(A,{key:2},N(R(re),e=>(M(),G(`div`,{key:e.cameraId,class:`flex flex-col gap-1`},[z(`span`,Rt,q(e.cameraName)+` · `+q(e.files.length)+` · `+q(R(S))+q(ce(e.bytes)),1),(M(!0),G(A,null,N(e.files,e=>(M(),G(`div`,{key:e.name,class:`flex items-center gap-3 card-inner-background border border-color rounded-lg px-3 py-2`},[L(x,{class:`w-4 h-4 text-muted shrink-0`}),z(`span`,zt,q(e.name),1),z(`span`,Bt,q(e.span),1),z(`span`,Vt,q(R(S))+q(ce(e.bytes)),1)]))),128))]))),128)):(M(),G(`div`,Lt,q(R(E)),1))])])])])}}}),Wt={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Gt(e,t){return M(),G(`svg`,Wt,[...t[0]||=[z(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`m6 9l6 6l6-6`},null,-1)]])}var Kt=W({name:`tabler-chevron-down`,render:Gt}),qt={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Jt(e,t){return M(),G(`svg`,qt,[...t[0]||=[z(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`m6 15l6-6l6 6`},null,-1)]])}var Yt=W({name:`tabler-chevron-up`,render:Jt}),Xt={class:`flex flex-col gap-2`},Zt={class:`sidebar-section-title`},Qt={key:0,class:`text-xs text-muted`},$t={class:`flex flex-col gap-2`},en={class:`sidebar-section-title`},tn={class:`p-input-icon-left w-full`},nn={class:`text-xs text-muted`},rn={class:`flex flex-col gap-2`},an={class:`sidebar-section-title flex items-center gap-1.5`},on={key:0,class:`inline-flex items-center gap-1 text-xs text-muted`},sn={key:1,class:`flex flex-col gap-1.5 mt-1`},cn={class:`text-xs text-muted`},ln={class:`flex items-center gap-3`},un={class:`text-xs font-mono w-8 text-right shrink-0`},dn={key:1,class:`flex flex-col gap-2`},fn={class:`sidebar-section-title`},pn={class:`flex flex-col gap-2`},mn={class:`sidebar-section-title`},hn={class:`flex flex-col gap-2`},gn={class:`sidebar-section-title`},_n={class:`relative rounded-md overflow-hidden`},vn={key:3,class:`sidebar-divider`},yn={key:4,class:`flex flex-col gap-2`},bn={class:`sidebar-section-title`},xn={class:`flex items-center gap-3`},Sn={class:`text-xs font-mono w-8 text-right shrink-0`},Cn={class:`flex flex-col gap-2`},wn={class:`sidebar-section-title`},Tn={class:`flex flex-wrap gap-1`},En={class:`flex flex-col gap-2`},Dn={key:0,class:`flex flex-col gap-2`},On={class:`flex items-center gap-2 cursor-pointer text-sm`},kn={key:0,class:`flex flex-col gap-2 ml-6`},An={class:`filter-logic-divider`},jn={class:`flex flex-col gap-2`},Mn={key:0,class:`flex flex-col gap-2`},Nn={class:`filter-logic-divider`},Pn={class:`flex flex-col gap-2`},Fn={key:0,class:`flex flex-col gap-2`},In={class:`flex items-center gap-2 cursor-pointer text-sm`},Ln=288,Rn=ge(B({__name:`RecordingsFilterSidebar`,props:{filters:{},cameras:{},isOpen:{type:Boolean},isOverlay:{type:Boolean},resultCount:{},semanticCount:{},semanticSearchAvailable:{type:Boolean},semanticSearchLoading:{type:Boolean}},emits:[`update:filters`,`semantic-search`,`close`],setup(n,{expose:r,emit:o}){let s=new Set([`motion`,`audio`]),c=n,l=o,{t:d}=te(),{xlBreakpoint:f}=ce(),{topbarOffset:g,bottombarHeight:_}=le(),{icons:v,generic:S}=ie(),ee=v,w=Yt,T=Kt,ne=Ee(`sidebarRef`),E=K(c.filters.semanticQuery??``),D=Oe({eventTypes:!0,attributes:!0,sensorEvents:!0}),ae=U(()=>c.isOpen?Ln:0),oe=U(()=>{let e=[...new Set(c.cameras.map(e=>e.room).filter(e=>!!e))];return e.sort((e,t)=>e.localeCompare(t)),e.map(e=>({id:e,name:e===`Default`?d(`components.form.label.room_default`):e}))}),se=U(()=>{let e=c.filters.rooms;return(e.length>0?c.cameras.filter(t=>e.includes(t.room??``)):c.cameras).map(e=>({id:e.id,name:e.name}))}),ue=U(()=>{if(c.filters.cameraIds.length===1)return c.cameras.find(e=>e.id===c.filters.cameraIds[0])?.name}),O=U(()=>c.filters.contentKind===`episodes`),de=U(()=>[{label:d(`views.recordings.content_kind_all`),value:`all`},{label:d(`views.recordings.content_kind_events`),value:`events`},{label:d(`views.recordings.content_kind_episodes`),value:`episodes`}]),fe=U(()=>[{label:d(`views.recordings.filter_and`),value:`and`},{label:d(`views.recordings.filter_or`),value:`or`}]),pe=U(()=>[{label:d(`views.recordings.time_1h`),value:`1h`},{label:d(`views.recordings.time_1d`),value:`1d`},{label:d(`views.recordings.time_1w`),value:`1w`},{label:d(`views.recordings.time_1m`),value:`1m`}]),me=U(()=>h.filter(e=>!s.has(e)).map(e=>({label:d(`views.recordings.type_${e}`),value:e,icon:v[e]??S}))),he=U(()=>({label:d(`views.recordings.type_other`),value:m,icon:v.other??S})),ge=U(()=>a.map(e=>({label:d(Ve(e)),value:e,icon:ee[e]??S}))),_e=U(()=>u.map(e=>({label:d(Ue(e)),value:e,icon:v[e]??S}))),ve=U(()=>C.map(e=>({label:d(He(e)),value:e,icon:v[e]??S})));function k(e,t){l(`update:filters`,{...c.filters,[e]:t})}let xe=b(e=>{k(`search`,e)},300);function Se(e){let t=new Set(c.cameras.filter(t=>e.length===0||e.includes(t.room??``)).map(e=>e.id));l(`update:filters`,{...c.filters,rooms:e,cameraIds:c.filters.cameraIds.filter(e=>t.has(e))})}function Ce(){let e=E.value.trim();k(`semanticQuery`,e),l(`semantic-search`,e)}function we(e){let t=[...c.filters.eventTypes],n=t.indexOf(e);n>=0?t.splice(n,1):t.push(e),k(`eventTypes`,t)}function Te(e){let t=[...c.filters.audioLabels],n=t.indexOf(e);n>=0?t.splice(n,1):t.push(e),k(`audioLabels`,t)}function De(e){let t=[...c.filters.sensorEvents],n=t.indexOf(e);n>=0?t.splice(n,1):t.push(e),k(`sensorEvents`,t)}function F(e){let t=[...c.filters.hasAttributes],n=t.indexOf(e);n>=0?t.splice(n,1):t.push(e),k(`hasAttributes`,t)}function Ae(e){D[e]=!D[e]}return j(E,e=>{!e?.trim()&&c.filters.semanticQuery&&k(`semanticQuery`,``)}),x(ne,e=>{let t=e.target;t.closest(`#recordings-sidebar-toggle`)||t.closest(`[data-pc-section="overlay"], [data-pc-section="panel"], .p-connected-overlay`)||c.isOpen&&(c.isOverlay||!f.value)&&l(`close`)}),r({sidebarWidth:ae}),(r,a)=>{let o=e,s=i,c=be,l=Le,u=p,d=y,f=Re,m=re,h=ye,v=t;return M(),G(`nav`,{ref_key:`sidebarRef`,ref:ne,class:`recordings-sidebar fixed transition-all duration-200 overflow-x-hidden overflow-y-auto md:!pl-0 pl-safe pb-safe flex flex-col z-4`,style:Pe({width:`${R(ae)}px`,borderRightWidth:n.isOpen?`1px`:`0px`,paddingBottom:`calc(env(safe-area-inset-top, 0px) + env(safe-area-inset-bottom, 0px) + ${R(_)}px + ${R(g)}px)`})},[z(`div`,{class:`flex flex-col gap-4 p-4`,style:Pe({width:`${Ln}px`})},[z(`div`,Xt,[z(`label`,Zt,q(r.$t(`views.recordings.content_kind`)),1),L(o,{"model-value":n.filters.contentKind,options:R(de),"option-label":`label`,"option-value":`value`,"allow-empty":!1,class:`content-kind-toggle`,"onUpdate:modelValue":a[0]||=e=>k(`contentKind`,e)},null,8,[`model-value`,`options`]),R(O)?(M(),G(`span`,Qt,q(r.$t(`views.recordings.content_kind_episodes_hint`)),1)):H(``,!0)]),a[23]||=z(`div`,{class:`sidebar-divider`},null,-1),R(O)?H(``,!0):(M(),G(A,{key:0},[z(`div`,$t,[z(`label`,en,q(r.$t(`views.recordings.search`)),1),z(`span`,tn,[L(s,{"model-value":n.filters.search,placeholder:r.$t(`views.recordings.search_placeholder`),class:`w-full text-sm`,"onUpdate:modelValue":a[1]||=e=>R(xe)(e)},null,8,[`model-value`,`placeholder`])]),z(`span`,nn,q(r.$t(`views.recordings.result_count`,{count:n.resultCount})),1)]),a[15]||=z(`div`,{class:`sidebar-divider`},null,-1),z(`div`,rn,[z(`label`,an,[L(c,{class:`w-3.5 h-3.5`}),ke(` `+q(r.$t(`views.recordings.semantic_search`)),1)]),L(l,{modelValue:R(E),"onUpdate:modelValue":a[2]||=e=>V(E)?E.value=e:null,placeholder:r.$t(`views.recordings.semantic_search_placeholder`),class:`w-full text-sm semantic-textarea`,rows:`3`,disabled:!n.semanticSearchAvailable},null,8,[`modelValue`,`placeholder`,`disabled`]),L(u,{label:r.$t(`views.recordings.semantic_search_button`),severity:`secondary`,outlined:``,size:`small`,class:`w-full text-xs`,loading:n.semanticSearchLoading,disabled:!n.semanticSearchAvailable||!R(E)?.trim(),onClick:Ce},null,8,[`label`,`loading`,`disabled`]),n.semanticCount==null?H(``,!0):(M(),G(`span`,on,[L(c,{class:`w-3 h-3`}),ke(` `+q(r.$t(`views.recordings.semantic_results`,{count:n.semanticCount})),1)])),n.filters.semanticQuery?(M(),G(`div`,sn,[z(`label`,cn,q(r.$t(`views.recordings.min_match_score`)),1),z(`div`,ln,[L(d,{"model-value":n.filters.minSemanticScore,min:0,max:1,step:.05,class:`flex-1`,"onUpdate:modelValue":a[3]||=e=>k(`minSemanticScore`,e)},null,8,[`model-value`]),z(`span`,un,q(Math.round(n.filters.minSemanticScore*100))+`%`,1)])])):H(``,!0)]),a[16]||=z(`div`,{class:`sidebar-divider`},null,-1)],64)),R(oe).length>1?(M(),G(`div`,dn,[z(`label`,fn,q(r.$t(`views.recordings.rooms`)),1),L(f,{"model-value":n.filters.rooms,options:R(oe),"option-label":`name`,"option-value":`id`,placeholder:r.$t(`views.recordings.all_rooms`),class:`w-full text-sm`,"max-selected-labels":2,"show-toggle-all":!1,pt:{overlay:{style:`position: fixed`}},"onUpdate:modelValue":a[4]||=e=>Se(e)},null,8,[`model-value`,`options`,`placeholder`])])):H(``,!0),z(`div`,pn,[z(`label`,mn,q(r.$t(`views.recordings.cameras`)),1),L(f,{"model-value":n.filters.cameraIds,options:R(se),"option-label":`name`,"option-value":`id`,placeholder:r.$t(`views.recordings.all_cameras`),class:`w-full text-sm`,"max-selected-labels":2,"show-toggle-all":!1,pt:{overlay:{style:`position: fixed`}},"onUpdate:modelValue":a[5]||=e=>k(`cameraIds`,e)},null,8,[`model-value`,`options`,`placeholder`])]),R(ue)&&!R(O)?(M(),G(A,{key:2},[a[17]||=z(`div`,{class:`sidebar-divider`},null,-1),z(`div`,hn,[z(`label`,gn,q(r.$t(`views.recordings.grid_search`)),1),z(`div`,_n,[L(m,{camera:R(ue),"object-fit":`cover`},null,8,[`camera`]),L(h,{"model-value":n.filters.gridRegions,"onUpdate:modelValue":a[6]||=e=>k(`gridRegions`,e)},null,8,[`model-value`])]),L(u,{label:r.$t(`views.recordings.grid_clear`),severity:`secondary`,outlined:``,size:`small`,class:`w-full text-xs`,disabled:n.filters.gridRegions.length===0,onClick:a[7]||=e=>k(`gridRegions`,[])},null,8,[`label`,`disabled`])])],64)):H(``,!0),R(O)?H(``,!0):(M(),G(`div`,vn)),R(O)?H(``,!0):(M(),G(`div`,yn,[z(`label`,bn,q(r.$t(`views.recordings.confidence`)),1),z(`div`,xn,[L(d,{"model-value":n.filters.minConfidence,min:0,max:1,step:.05,class:`flex-1`,"onUpdate:modelValue":a[8]||=e=>k(`minConfidence`,e)},null,8,[`model-value`]),z(`span`,Sn,q(Math.round(n.filters.minConfidence*100))+`%`,1)])])),a[24]||=z(`div`,{class:`sidebar-divider`},null,-1),z(`div`,Cn,[z(`label`,wn,q(r.$t(`views.recordings.time_range`)),1),z(`div`,Tn,[(M(!0),G(A,null,N(R(pe),e=>(M(),I(u,{key:e.value,label:e.label,severity:n.filters.timeRange===e.value?void 0:`secondary`,outlined:n.filters.timeRange!==e.value,size:`small`,class:`text-xs flex-1 min-w-0`,onClick:t=>k(`timeRange`,n.filters.timeRange===e.value?null:e.value)},null,8,[`label`,`severity`,`outlined`,`onClick`]))),128))])]),R(O)?H(``,!0):(M(),G(A,{key:5},[a[22]||=z(`div`,{class:`sidebar-divider`},null,-1),z(`div`,En,[z(`button`,{class:`sidebar-section-title flex items-center justify-between w-full cursor-pointer`,onClick:a[9]||=e=>Ae(`sensorEvents`)},[z(`span`,null,q(r.$t(`views.recordings.sensor_events`)),1),(M(),I(P(R(D).sensorEvents?R(w):R(T)),{class:`w-4 h-4 text-muted`}))]),R(D).sensorEvents?(M(),G(`div`,Dn,[(M(!0),G(A,null,N(R(ge),e=>(M(),G(A,{key:e.value},[z(`label`,On,[L(v,{"model-value":n.filters.sensorEvents.includes(e.value),binary:!0,"onUpdate:modelValue":t=>De(e.value)},null,8,[`model-value`,`onUpdate:modelValue`]),(M(),I(P(e.icon),{class:`w-4 h-4 text-muted`})),z(`span`,null,q(e.label),1)]),e.value===`audio`&&n.filters.sensorEvents.includes(`audio`)?(M(),G(`div`,kn,[(M(!0),G(A,null,N(R(_e),e=>(M(),G(`label`,{key:e.value,class:`flex items-center gap-2 cursor-pointer text-sm`},[L(v,{"model-value":n.filters.audioLabels.includes(e.value),binary:!0,"onUpdate:modelValue":t=>Te(e.value)},null,8,[`model-value`,`onUpdate:modelValue`]),(M(),I(P(e.icon),{class:`w-4 h-4 text-muted`})),z(`span`,null,q(e.label),1)]))),128))])):H(``,!0)],64))),128))])):H(``,!0)]),z(`div`,An,[a[18]||=z(`div`,{class:`filter-logic-line`},null,-1),L(o,{"model-value":n.filters.filterLogicTriggers,options:R(fe),"option-label":`label`,"option-value":`value`,"allow-empty":!1,class:`filter-logic-toggle`,"onUpdate:modelValue":a[10]||=e=>k(`filterLogicTriggers`,e)},null,8,[`model-value`,`options`]),a[19]||=z(`div`,{class:`filter-logic-line`},null,-1)]),z(`div`,jn,[z(`button`,{class:`sidebar-section-title flex items-center justify-between w-full cursor-pointer`,onClick:a[11]||=e=>Ae(`eventTypes`)},[z(`span`,null,q(r.$t(`views.recordings.event_type`)),1),(M(),I(P(R(D).eventTypes?R(w):R(T)),{class:`w-4 h-4 text-muted`}))]),R(D).eventTypes?(M(),G(`div`,Mn,[(M(!0),G(A,null,N(R(me),e=>(M(),G(`label`,{key:e.value,class:`flex items-center gap-2 cursor-pointer text-sm`},[L(v,{"model-value":n.filters.eventTypes.includes(e.value),binary:!0,"onUpdate:modelValue":t=>we(e.value)},null,8,[`model-value`,`onUpdate:modelValue`]),(M(),I(P(e.icon),{class:`w-4 h-4 text-muted`})),z(`span`,null,q(e.label),1)]))),128))])):H(``,!0)]),z(`div`,Nn,[a[20]||=z(`div`,{class:`filter-logic-line`},null,-1),L(o,{"model-value":n.filters.filterLogicAttributes,options:R(fe),"option-label":`label`,"option-value":`value`,"allow-empty":!1,class:`filter-logic-toggle`,"onUpdate:modelValue":a[12]||=e=>k(`filterLogicAttributes`,e)},null,8,[`model-value`,`options`]),a[21]||=z(`div`,{class:`filter-logic-line`},null,-1)]),z(`div`,Pn,[z(`button`,{class:`sidebar-section-title flex items-center justify-between w-full cursor-pointer`,onClick:a[13]||=e=>Ae(`attributes`)},[z(`span`,null,q(r.$t(`views.recordings.attributes`)),1),(M(),I(P(R(D).attributes?R(w):R(T)),{class:`w-4 h-4 text-muted`}))]),R(D).attributes?(M(),G(`div`,Fn,[(M(!0),G(A,null,N(R(ve),e=>(M(),G(`label`,{key:e.value,class:`flex items-center gap-2 cursor-pointer text-sm`},[L(v,{"model-value":n.filters.hasAttributes.includes(e.value),binary:!0,"onUpdate:modelValue":t=>F(e.value)},null,8,[`model-value`,`onUpdate:modelValue`]),(M(),I(P(e.icon),{class:`w-4 h-4 text-muted`})),z(`span`,null,q(e.label),1)]))),128)),z(`label`,In,[L(v,{"model-value":n.filters.eventTypes.includes(R(he).value),binary:!0,"onUpdate:modelValue":a[14]||=e=>we(R(he).value)},null,8,[`model-value`]),(M(),I(P(R(he).icon),{class:`w-4 h-4 text-muted`})),z(`span`,null,q(R(he).label),1)])])):H(``,!0)])],64))],4)],4)}}}),[[`__scopeId`,`data-v-dd31ab16`]]),zn={class:`font-semibold text-xl truncate`},Bn={class:`w-full h-full relative`},Vn={key:0,class:`w-full flex flex-row h-[calc(40px+1rem)] py-2 items-center fixed z-10`},Hn={class:`relative z-2 page-title !m-0`},Un={key:1,class:`fixed right-0 z-10 h-[calc(40px+1rem)] py-2 pr-2 flex items-center`},Wn={key:1,class:`flex justify-center py-4`},Gn={key:2,class:`flex flex-1 min-h-0 flex-col items-center justify-center w-full gap-4`},Kn={class:`text-muted text-sm`},qn=288,Jn=B({__name:`Recordings`,setup(e){let t=new oe,r=new k,i=fe(),a=pe(),{bottombarHeight:o}=le(),{status:s,checking:u}=S(),{openEpisodePlayer:d}=O(),m=n(`@camera.ui/camera-ui-nvr`),h=Se(),{t:y}=te(),{smBreakpoint:b,xlBreakpoint:x,mdBreakpoint:C}=ce(),{registerScrollToTop:ne}=de();if(typeof VideoDecoder<`u`){let e=v({cacheSize:20});Te(ee,e),l(()=>e.dispose())}let{results:re,isSearching:ie,isAvailable:ge,hasSearched:ye,search:N,clear:P}=c(),{data:Oe}=t.getCamerasQuery({page:1,pageSize:-1}),{data:ke}=r.getUserQuery(U(()=>a.user?.username??``)),B={"1h":36e5,"1d":864e5,"1w":6048e5,"1m":2592e6},V=Ee(`gridRef`),je=Ee(`viewMenuRef`),W=K(`closed`),Fe=K(!1),J=K({contentKind:`all`,search:``,semanticQuery:``,filterLogicTriggers:`or`,filterLogicAttributes:`or`,rooms:[],cameraIds:[],timeRange:null,customDateRange:null,eventTypes:[],audioLabels:[],hasAttributes:[],sensorEvents:[],gridRegions:[],minConfidence:.5,minSemanticScore:.5,onlyWithRecordings:!0}),Ie=Ne({state:`ended`,hasDetections:!0,withRecordingInfo:!0,hasRecording:!0}),Le=JSON.stringify(Ie.value),Y=K(!1),Re=Ne([]),ze=K(null),Ve=Ee(`reindexAnchorRef`),{left:He}=f(Ve),Ue=!1,X=U(()=>x.value?!0:W.value===`opened`),$e=U(()=>C.value),tt=U(()=>X.value&&$e.value?!0:(V.value?.scrollY??0)>10&&!s.value?.running),nt=U(()=>C.value?`0px`:X.value?`${qn}px`:`0px`),Z=U(()=>(Oe.value?.result??[]).map(e=>({id:e._id,name:e.name,room:e.room}))),it=U(()=>{let e=new Map;for(let t of Z.value)e.set(t.id,t.name);return e}),ot=U(()=>{let e=new Map;for(let t of Oe.value?.result??[])e.set(t._id,t);return e}),st=U(()=>{let e=J.value.rooms;return(e.length>0?Z.value.filter(t=>e.includes(t.room??``)):Z.value).map(e=>e.id)}),ct=U(()=>J.value.cameraIds.filter(e=>st.value.includes(e))),lt=U(()=>st.value);ne(()=>V.value?.scrollToTop());let{events:ut,isLoading:ft,hasMore:pt,loadMore:mt,loadThumbnails:ht,deleteEvents:gt,pluginUnavailable:_t}=_({availableCameraIds:lt,cameraIds:ct,realtime:!0,pageSize:40,filter:Ie,withEpisodes:!0}),Q=U(()=>{let e=new Map;for(let t of re.value??[]){let n=e.get(t.eventId);(!n||t.score>n)&&e.set(t.eventId,t.score)}return e}),vt=U(()=>ye.value),$=U(()=>{let e=ut.value.filter(e=>e.state===`ended`),t=J.value;if(t.timeRange&&B[t.timeRange]){let n=Date.now()-B[t.timeRange];e=e.filter(e=>e.startTime>=n)}return t.gridRegions.length>0&&(e=e.filter(e=>e.segments.some(e=>e.detections.some(e=>e.box&&Ye(e.box,t.gridRegions))))),vt.value&&(e=e.filter(e=>{let n=Q.value.get(e.id);return n!=null&&n>=t.minSemanticScore}),e.sort((e,t)=>(Q.value.get(t.id)??0)-(Q.value.get(e.id)??0))),e}),yt=U(()=>J.value.contentKind===`episodes`),bt=U(()=>{if(J.value.contentKind===`events`)return[];m.storeVersion.value;let e=J.value;if(!yt.value&&(Y.value||vt.value||e.gridRegions.length>0||e.search.trim()!==``||e.eventTypes.length>0||e.audioLabels.length>0||e.hasAttributes.length>0||e.sensorEvents.length>0||e.minConfidence!==.5))return[];let t=ct.value.length>0?ct.value:lt.value,n=e.timeRange&&B[e.timeRange]?Date.now()-B[e.timeRange]:0,r=1/0;if(e.timeRange===`custom`&&e.customDateRange&&(n=Math.max(n,e.customDateRange[0].getTime()),r=e.customDateRange[1].getTime()),pt.value&&!yt.value){let e=1/0;for(let t of ut.value)e=Math.min(e,t.thumbnailAt??t.startTime);n=Math.max(n,e)}let i=[];for(let e of m.getEpisodes())e.description&&(n&&e.endTime<n||e.startTime>r||t.length>0&&!e.members.some(e=>t.includes(e.cameraId))||i.push({event:void 0,key:`episode:${e.id}`,episode:e}));return i}),xt=U(()=>{if(yt.value)return[...bt.value].sort((e,t)=>Ke(t)-Ke(e));if(Y.value&&Re.value.length)return Re.value;let e=$.value.map(e=>({event:e,key:e.id}));return bt.value.length&&(e.push(...bt.value),e.sort((e,t)=>Ke(t)-Ke(e))),e}),St=U(()=>xe(void 0,`admin`)),{selectionMode:Ct,selectedIds:wt,allSelected:Tt,bulkBusy:Et,enterSelectionMode:Dt,exitSelectionMode:Ot,toggleSelectAll:kt,toggleSelection:At}=ae($,e=>e.id);function jt(){let e=[...wt.value];!e.length||Et.value||i.openTextDialog({data:{title:y(`components.dialog.title.confirm`),contentText:y(`views.recordings.delete_selected_confirm`,{count:e.length}),confirmText:y(`components.form.button.remove`),confirmButtonProps:{severity:`danger`}},onConfirm:async()=>{Et.value=!0;try{await gt(e),Ot(),h.add({severity:`success`,detail:y(`views.recordings.delete_selected_done`,{count:e.length}),life:5e3})}catch(e){h.add({severity:`error`,detail:e?.message??String(e),life:5e3})}finally{Et.value=!1}}})}let Mt=U(()=>[{key:`ungroup`,label:y(`views.recordings.ungroup`),description:y(`views.recordings.ungroup_hint`),toggle:!0,toggleState:Y.value,onClick:()=>{Ue=!0,Y.value=!Y.value,a.updateUser({preferences:{recordings:{ungrouped:Y.value}}})}},{key:`onlyWithRecordings`,label:y(`views.recordings.only_with_recordings`),description:y(`views.recordings.only_with_recordings_hint`),toggle:!0,toggleState:J.value.onlyWithRecordings,onClick:()=>{J.value={...J.value,onlyWithRecordings:!J.value.onlyWithRecordings}}}]);function Nt(){i.openComponentDialog(dt,{data:{title:y(`views.recordings.reindex.title`),contentProps:{},confirmText:y(`views.recordings.reindex.start`)}})}function Pt(){i.openComponentDialog(Ut,{data:{title:y(`views.recordings.export.title`),contentProps:{cameras:Z.value,preselect:J.value.cameraIds?.length?J.value.cameraIds:[]},confirmText:y(`views.recordings.export.confirm`)}})}function Ft(){let e=W.value;W.value=e===`opened`?`closed`:`opened`}function It(){W.value=`closed`}function Lt(e){!e.semanticQuery?.trim()&&J.value.semanticQuery?.trim()&&P(),J.value=e}function Rt(e){if(!e.trim()){P();return}N(e)}async function zt(e){let t=m.getEpisode(e);t||=(await m.loadEpisodes({limit:50}),m.getEpisode(e)),t&&d(t,ot.value)}function Bt(e){let t=ot.value.get(e.cameraId);t&&i.openComponentDialog(ve,{data:{title:t.name,dedupeKey:`camera-event:${t._id}:${e.startTime}`,stayActive:!0,hideCancelButton:!0,hideConfirmButton:!0,contentProps:{camera:t,eventTimestamp:e.startTime},headerActions:e.segments?.some(e=>e?.description)?[{icon:be,toggle:!0,onClick:()=>{}}]:void 0,draggable:!0,blockDragOnSelectors:[`.p-dialog-body`],dismissableMask:!1,modal:!1,dialogContentClass:`!px-0 h-full`,goTo:`/cameras/${t.name}?startTs=${e.startTime}`},dialogSize:{desktop:{maxWidth:`800px`,maxHeight:`calc(100vh - max(1rem, env(safe-area-inset-top, 0px)) - max(1rem, env(safe-area-inset-bottom, 0px)))`,width:`50vw`}}})}return j(x,e=>{e&&(W.value=`closed`)}),j(J,e=>{let t=e.eventTypes.length>0||e.sensorEvents.length>0||e.audioLabels.length>0||e.hasAttributes.length>0,n={types:e.eventTypes.length>0?e.eventTypes:void 0,triggers:e.sensorEvents.length>0?e.sensorEvents:void 0,triggerLabels:e.audioLabels.length>0?e.audioLabels:void 0,attributes:e.hasAttributes.length>0?e.hasAttributes:void 0,filterLogicTriggers:t?e.filterLogicTriggers:void 0,filterLogicAttributes:t?e.filterLogicAttributes:void 0,search:e.search||void 0,minConfidence:e.minConfidence>0?e.minConfidence:void 0,state:`ended`,hasDetections:!t,withRecordingInfo:!0,hasRecording:e.onlyWithRecordings||void 0},r=JSON.stringify(n);r!==Le&&(Le=r,Ie.value=n)},{deep:!0,immediate:!0}),j(ke,e=>{if(!e||Ue)return;let t=e.preferences?.recordings?.ungrouped;t!==void 0&&(Y.value=t)},{immediate:!0}),j([Y,$],([e,t])=>{Re.value=e?Je(t):[]}),j(()=>J.value.cameraIds,e=>{e.length!==1&&J.value.gridRegions.length>0&&(J.value={...J.value,gridRegions:[]})}),we(()=>{requestAnimationFrame(()=>{Fe.value=!0})}),(e,t)=>{let n=T,r=rt,i=et,a=p,c=Xe,l=Qe,d=Ze,f=D,m=Ge,h=qe,_=We,v=E,y=w,S=he,ee=g;return M(),G(`div`,null,[L(n,{position:`center`},{default:F(()=>[z(`span`,zn,q(e.$t(`views.recordings.title`)),1)]),_:1}),L(n,{position:`left`},{default:F(()=>[L(a,{id:`recordings-sidebar-toggle`,severity:`secondary`,class:`cui-button p-2 text-color`,text:``,rounded:``,onClick:Ft},{icon:F(()=>[R(W)===`closed`?(M(),I(r,{key:0,width:`100%`,height:`100%`})):(M(),I(i,{key:1,width:`100%`,height:`100%`}))]),_:1})]),_:1}),L(n,{position:`right`},{default:F(()=>[L(a,{severity:`secondary`,class:`cui-button p-2 text-color`,text:``,rounded:``,onClick:t[0]||=e=>R(je)?.toggleMenu(e)},{icon:F(()=>[L(c,{width:`100%`,height:`100%`})]),_:1})]),_:1}),L(Rn,{filters:R(J),cameras:R(Z),"is-open":R(X),"is-overlay":R($e),"result-count":R(xt).length,"semantic-count":R(vt)?R(Q).size:void 0,"semantic-search-available":R(ge),"semantic-search-loading":R(ie),"onUpdate:filters":Lt,onSemanticSearch:Rt,onClose:It},null,8,[`filters`,`cameras`,`is-open`,`is-overlay`,`result-count`,`semantic-count`,`semantic-search-available`,`semantic-search-loading`]),(M(),I(Me,{to:`#container`,defer:``},[R(X)&&R($e)?(M(),G(`div`,{key:0,class:`fixed top-0 left-0 right-0 bottom-0 w-full h-full bg-black/50 z-1`,onClick:It})):H(``,!0)])),z(`main`,{ref_key:`reindexAnchorRef`,ref:Ve,class:`relative w-full h-full`,style:Pe({paddingLeft:R(nt),transition:R(Fe)?`padding-left 200ms`:void 0})},[z(`div`,Bn,[R(b)?H(``,!0):(M(),G(`div`,Vn,[t[3]||=z(`div`,{class:`ml-2`},null,-1),R(x)?H(``,!0):(M(),I(a,{key:0,id:`recordings-sidebar-toggle`,severity:`secondary`,class:`mr-2 cui-icon-lg relative z-2`,text:``,rounded:``,onClick:Ft},{icon:F(()=>[R(X)?(M(),I(l,{key:0,width:`100%`,height:`100%`})):(M(),I(d,{key:1,width:`100%`,height:`100%`}))]),_:1})),z(`h1`,Hn,q(e.$t(`views.recordings.title`)),1),t[4]||=z(`div`,{class:`gradient-blur rotate-180 !h-[70px]`},[z(`div`),z(`div`),z(`div`),z(`div`),z(`div`),z(`div`)],-1)])),R(b)?H(``,!0):(M(),G(`div`,Un,[De((M(),I(a,{severity:`secondary`,text:``,rounded:``,class:`cui-icon-lg relative z-2`,onClick:t[1]||=e=>R(je)?.toggleMenu(e)},{icon:F(()=>[L(c,{width:`100%`,height:`100%`})]),_:1})),[[ee,{value:e.$t(`views.recordings.view_options`)},void 0,{bottom:!0}]])])),z(`div`,{class:Ae([`px-2 h-full w-full flex flex-col`,{"pt-4":R(b),"pt-[calc(40px+2rem)]":!R(b)}])},[R(xt).length?(M(),I(h,{key:0,ref_key:`gridRef`,ref:V,items:R(xt),"min-item-width":R(b)?160:180,gap:8,"has-more":R(pt),"load-more":R(mt),"item-key":e=>e.key,class:`flex-1 min-h-0`},{item:F(({item:e})=>[e.episode?(M(),I(f,{key:0,episode:e.episode,"camera-by-id":R(ot),fluid:``,"click-disabled":R(Ct)},null,8,[`episode`,`camera-by-id`,`click-disabled`])):(M(),I(m,{key:1,event:e.event,"camera-name":R(it).get(e.event.cameraId),camera:R(ot).get(e.event.cameraId),"load-thumbnails":R(ht),"semantic-score":R(Q).get(e.event.id),"seg-index":e.segIndex,"selection-mode":R(Ct),selected:R(wt).has(e.event.id),"sibling-active":e.segIndex!==void 0&&R(ze)===e.event.id,onSelect:t=>R(At)(e.event.id),onScrollToEvent:()=>Bt(e.event),onOpenEpisode:zt,onMouseenter:t=>ze.value=e.segIndex===void 0?null:e.event.id,onMouseleave:t[2]||=e=>ze.value=null},null,8,[`event`,`camera-name`,`camera`,`load-thumbnails`,`semantic-score`,`seg-index`,`selection-mode`,`selected`,`sibling-active`,`onSelect`,`onScrollToEvent`,`onMouseenter`]))]),_:1},8,[`items`,`min-item-width`,`has-more`,`load-more`,`item-key`])):H(``,!0),R(ft)||R(ie)?(M(),G(`div`,Wn,[L(_,{width:`24px`,height:`24px`,class:`text-muted`})])):H(``,!0),!R($).length&&!R(ft)&&!R(ie)?(M(),G(`div`,Gn,[L(v,{class:`w-12 h-12 text-muted`}),z(`span`,Kn,q(R(_t)?e.$t(`views.recordings.recordings_unavailable`):e.$t(`views.recordings.no_recordings`)),1)])):H(``,!0)],2)])],4),R(St)&&R(Z).length?(M(),G(`div`,{key:0,class:Ae([`fixed z-10`,R(tt)?`scale-0 opacity-0`:`scale-100 opacity-100`]),style:Pe({left:`calc(${R(He)}px + ${R(nt)} + 0.75rem + env(safe-area-inset-left, 0px))`,bottom:`calc(${R(o)}px + 1.25rem + env(safe-area-inset-bottom, 0px))`,transition:R(Fe)?`left 200ms, transform 200ms ease-in-out, opacity 200ms ease-in-out`:void 0})},[L(a,{severity:`secondary`,rounded:``,class:`shadow-lg`,disabled:R(s)?.running,label:R(u)?e.$t(`views.recordings.reindex.checking`):R(s)?.running?e.$t(`views.recordings.reindex.progress`,{done:R(s).done,total:R(s).total}):e.$t(`views.recordings.reindex.button`),onClick:Nt},{icon:F(()=>[R(s)?.running?(M(),I(R(We),{key:0})):(M(),I(R(at),{key:1}))]),_:1},8,[`disabled`,`label`])],6)):H(``,!0),R(Z).length?(M(),I(S,{key:1,"force-visible":R(Ct),"scroll-y":R(V)?.scrollY??0},{default:F(()=>[R(Ct)?(M(),G(A,{key:1},[L(y,{grouped:``,"tooltip-props":{value:e.$t(`components.form.tooltip.cancel_selection`)},"button-props":{severity:`secondary`},icon:R(Be),"icon-props":{width:`100%`,height:`100%`},onClick:R(Ot)},null,8,[`tooltip-props`,`icon`,`onClick`]),L(y,{grouped:``,"tooltip-props":{value:R(Tt)?e.$t(`components.form.tooltip.deselect_all`):e.$t(`components.form.tooltip.select_all`)},"button-props":{severity:R(Tt)?`primary`:`secondary`},icon:R(Ce),"icon-props":{width:`100%`,height:`100%`},onClick:R(kt)},null,8,[`tooltip-props`,`button-props`,`icon`,`onClick`]),L(y,{grouped:``,"tooltip-props":{value:e.$t(`components.form.tooltip.delete_selected`)},"button-props":{severity:`danger`,disabled:!R(wt).size||R(Et)},icon:R(ue),"icon-props":{width:`100%`,height:`100%`},onClick:jt},null,8,[`tooltip-props`,`button-props`,`icon`])],64)):(M(),G(A,{key:0},[R(St)&&R($).length?(M(),I(y,{key:0,grouped:``,"tooltip-props":{value:e.$t(`views.recordings.select`)},"button-props":{severity:`secondary`},icon:R(se),"icon-props":{width:`100%`,height:`100%`},onClick:R(Dt)},null,8,[`tooltip-props`,`icon`,`onClick`])):H(``,!0),L(y,{grouped:``,"tooltip-props":{value:e.$t(`views.recordings.export.title`)},"button-props":{class:`text-white`},icon:R(me),"icon-props":{width:`26px`,height:`26px`},onClick:Pt},null,8,[`tooltip-props`,`icon`])],64))]),_:1},8,[`force-visible`,`scroll-y`])):H(``,!0),L(_e,{ref_key:`viewMenuRef`,ref:je,items:R(Mt),"auto-hide":!1,popover:{pt:{root:{class:`w-[22rem]`},content:{class:`p-0! rounded-xl! overflow-hidden!`}}}},null,8,[`items`])])}}});export{Jn as default};
|
|
1
|
+
import{A as e,B as t,D as n,Dt as r,F as i,Lr as a,N as o,Ni as s,O as c,Oi as l,Or as u,Pt as d,Qr as f,Rt as p,S as m,Sr as h,Wt as g,_,a as v,k as y,ki as b,qr as x,s as S,w as ee,xr as C,zr as te}from"./vendor-cameraui-ZyqPntQ7.js";import{An as w,B as T,Dn as ne,En as re,G as ie,Gn as E,H as D,I as ae,It as oe,L as se,Mn as ce,Nn as le,R as ue,U as O,V as de,ct as fe,g as pe,it as me,jn as he,kn as ge,mn as _e,rt as ve,tn as ye,vn as be,vr as k,xn as xe,xr as Se,z as Ce}from"./api-2VPaKkqc.js";import{$t as A,An as we,Kn as j,Mn as M,Nn as Te,Pn as N,Rn as P,Wn as Ee,Xn as De,Yn as F,an as I,ar as Oe,dn as ke,fn as L,gr as Ae,hr as R,in as z,mn as B,nr as V,on as H,qn as je,rn as U,rr as W,sn as G,sr as K,tn as Me,ur as Ne,vr as Pe,yn as Fe,yr as q}from"./vendor-AX0A8AMd.js";import{a as J,d as Ie,i as Le,j as Y,l as Re,z as ze}from"./vendor-primevue-DXXRO7Z5.js";import{t as Be}from"./close-ChGy_BeH.js";import{a as Ve,n as He,r as Ue}from"./eventLabels-BsPoPWS9.js";import{t as We}from"./ring-resize-DsW_XYdA.js";import{i as Ge,n as Ke,r as qe,t as Je}from"./ungrouped-BbOtmmDD.js";import{t as Ye}from"./utils-gctUU5q_.js";import{t as Xe}from"./settings-Bw6giVLH.js";import{n as Ze,t as Qe}from"./round-alt-arrow-left-bold-2FHg8vBl.js";var X={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function $e(e,t){return M(),G(`svg`,X,[...t[0]||=[z(`path`,{fill:`currentColor`,d:`M22 18.605a.75.75 0 0 1-.75.75h-5.1a2.93 2.93 0 0 1-5.66 0H2.75a.75.75 0 1 1 0-1.5h7.74a2.93 2.93 0 0 1 5.66 0h5.1a.75.75 0 0 1 .75.75m0-13.21a.75.75 0 0 1-.75.75H18.8a2.93 2.93 0 0 1-5.66 0H2.75a.75.75 0 1 1 0-1.5h10.39a2.93 2.93 0 0 1 5.66 0h2.45a.74.74 0 0 1 .75.75m0 6.6a.74.74 0 0 1-.75.75H9.55a2.93 2.93 0 0 1-5.66 0H2.75a.75.75 0 1 1 0-1.5h1.14a2.93 2.93 0 0 1 5.66 0h11.7a.75.75 0 0 1 .75.75`},null,-1)]])}var et=W({name:`mage-filter-fill`,render:$e}),tt={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function nt(e,t){return M(),G(`svg`,tt,[...t[0]||=[z(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-miterlimit":`10`,"stroke-width":`1.5`,d:`M21.25 12H8.895m-4.361 0H2.75m18.5 6.607h-5.748m-4.361 0H2.75m18.5-13.214h-3.105m-4.361 0H2.75m13.214 2.18a2.18 2.18 0 1 0 0-4.36a2.18 2.18 0 0 0 0 4.36Zm-9.25 6.607a2.18 2.18 0 1 0 0-4.36a2.18 2.18 0 0 0 0 4.36Zm6.607 6.608a2.18 2.18 0 1 0 0-4.361a2.18 2.18 0 0 0 0 4.36Z`},null,-1)]])}var rt=W({name:`mage-filter`,render:nt}),Z={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function it(e,t){return M(),G(`svg`,Z,[...t[0]||=[z(`path`,{fill:`currentColor`,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`},null,-1)]])}var at=W({name:`mdi-database-refresh-outline`,render:it}),ot={class:`flex flex-col gap-4`},st={class:`text-sm text-pretty`},ct={key:0,class:`flex flex-col gap-2`},lt={key:0,class:`flex justify-between text-sm text-muted`},ut={key:0},dt=B({__name:`ClipReindex`,setup(e,{expose:t}){let n=Fe(`dialogRefProps`),{t:r}=te(),{status:i,isBusy:a,checking:o,refresh:s,start:c,cancel:l}=S(),u=K(!1),d=K(!1),f=K(0),p=U(()=>i.value?.running===!0),m=U(()=>{if(d.value){if(!i.value?.total)return r(`views.recordings.reindex.up_to_date`);let{done:e,total:t,skipped:n}=i.value;return n?r(`views.recordings.reindex.result_failed`,{done:e,total:t,skipped:n}):r(`views.recordings.reindex.result`,{done:e,total:t})}return o.value?r(`views.recordings.reindex.checking`):p.value?r(`views.recordings.reindex.running_intro`):r(`views.recordings.reindex.intro`)}),h=U(()=>{if(d.value)return f.value;let e=i.value?.total??0;return e<=0?0:Math.min(100,Math.round(((i.value?.done??0)+(i.value?.skipped??0))/e*100))});async function g(){return p.value?l():(u.value=!0,c()),null}return j(p,(e,t)=>{!t||e||!u.value||(d.value=!0,f.value=i.value?.total?100:0,i.value?.total||requestAnimationFrame(()=>f.value=100))}),je(()=>{n.hideConfirmButton&&(n.hideConfirmButton.value=d.value),n.confirmText&&(n.confirmText.value=p.value?r(`views.recordings.reindex.stop`):r(`views.recordings.reindex.start`)),n.confirmButtonProps&&(n.confirmButtonProps.value=p.value?{severity:`danger`}:{}),n.disabled&&(n.disabled.value=a.value)}),we(()=>{i.value?.running&&(u.value=!0),s().then(()=>{i.value?.running&&(u.value=!0)})}),t({onConfirm:g}),(e,t)=>{let n=Ie;return M(),G(`div`,ot,[z(`span`,st,q(R(m)),1),R(u)||R(p)?(M(),G(`div`,ct,[L(n,{mode:R(o)?`indeterminate`:`determinate`,value:R(h),"show-value":!1,class:`h-2`},null,8,[`mode`,`value`]),R(p)&&!R(o)?(M(),G(`div`,lt,[z(`span`,null,q(e.$t(`views.recordings.reindex.progress`,{done:R(i)?.done??0,total:R(i)?.total??0})),1),R(i)?.skipped?(M(),G(`span`,ut,q(e.$t(`views.recordings.reindex.skipped`,{count:R(i).skipped})),1)):H(``,!0)])):H(``,!0)])):H(``,!0)])}}}),ft={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function pt(e,t){return M(),G(`svg`,ft,[...t[0]||=[z(`path`,{fill:`currentColor`,d:`m14 2l6 6v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2zm4 18V9h-5V4H6v16zm-2-2l-2.5-1.7V18H8v-5h5.5v1.7L16 13z`},null,-1)]])}var mt=W({name:`mdi-file-video-outline`,render:pt}),ht={class:`flex flex-col gap-6`},gt={class:`flex flex-col field-gap`},_t={class:`cui-label`},Q={class:`flex flex-col field-gap`},vt={class:`cui-label`},$={class:`grid grid-cols-1 xs:grid-cols-2 gap-3`},yt={class:`flex flex-col gap-1`},bt={class:`text-xs text-muted`},xt={class:`flex flex-col gap-1`},St={class:`text-xs text-muted`},Ct={class:`grid grid-cols-1 xs:grid-cols-2 gap-x-6 gap-y-4`},wt={class:`flex flex-col field-gap`},Tt={class:`cui-label`},Et={class:`flex flex-col field-gap`},Dt={class:`cui-label`},Ot={class:`flex flex-col field-gap`},kt={class:`flex items-center gap-3`},At={class:`cui-label !mb-0`},jt={key:0,class:`ml-auto flex items-center gap-2.5 text-sm tabular-nums`},Mt={class:`font-semibold`},Nt={class:`font-semibold`},Pt={class:`border border-color rounded-xl card-background overflow-hidden`},Ft={class:`flex flex-col gap-3 max-h-[240px] overflow-y-auto p-2.5`},It={key:0,class:`flex items-center justify-center gap-2 text-muted text-sm py-6`},Lt={key:1,class:`text-center text-muted text-sm py-6`},Rt={class:`text-xs text-muted px-0.5`},zt={class:`font-mono text-xs truncate flex-1`},Bt={class:`text-xs text-muted tabular-nums shrink-0`},Vt={class:`font-mono text-xs text-muted tabular-nums shrink-0 min-w-[58px] text-right`},Ht=30,Ut=B({__name:`ExportRecordings`,props:{cameras:{},preselect:{}},setup(t,{expose:n}){let i=t,{t:a}=te(),c=Se(),l=Fe(`dialogRefProps`),{plugin:u}=r(`@camera.ui/camera-ui-nvr`),f=K([]),p=K(!1),m=K(i.preselect?.length?[...i.preselect]:[]),h=K(`best`),g=K(0),_=K(new Date(new Date().setHours(0,0,0,0))),v=K(new Date),y=U(()=>[{label:a(`views.recordings.export.quality_best`),value:`best`},{label:a(`views.recordings.export.quality_smallest`),value:`smallest`}]),b=U(()=>[0,1,2,5,10,30,60,120,180,240,300].map(e=>({label:e===0?a(`views.recordings.export.timelapse_off`):e<60?`${e} s`:`${e/60} min`,value:e}))),x=U(()=>g.value>0),S=U(()=>x.value?`~`:``),ee=U(()=>new Map(i.cameras.map(e=>[e.id,e.name]))),C=U(()=>_.value instanceof Date&&v.value instanceof Date&&_.value<v.value),w=U(()=>{if(!C.value)return[];let e=[],t=_.value.getTime(),n=v.value.getTime(),r=new Date(_.value);r.setHours(0,0,0,0);let i=new Date(v.value);for(i.setHours(0,0,0,0);r.getTime()<=i.getTime();){let i=new Date(r),a=new Date(r);a.setDate(a.getDate()+1);let o=Math.max(i.getTime(),t),s=Math.min(a.getTime(),n);s>o&&e.push({day:ae(i),startUs:o*1e3,endUs:s*1e3}),r.setDate(r.getDate()+1)}return e}),T=U(()=>f.value.map(e=>{let t=ee.value.get(e.cameraId)??e.cameraId,n=new Date(e.startUs/1e3),r=new Date(e.endUs/1e3),i=n.getHours()===0&&n.getMinutes()===0&&e.endUs-e.startUs===864e8,o=r.getHours()===0&&r.getMinutes()===0?`24:00`:oe(r);return{cameraId:e.cameraId,cameraName:t,name:`${se(t)}_${e.day}${x.value?`_timelapse`:``}.mp4`,span:i?a(`views.recordings.export.whole_day`):`${oe(n)}–${o}`,bytes:x.value?e.bytes/Ht:e.bytes}})),re=U(()=>{let e=new Map;for(let t of T.value){let n=e.get(t.cameraId);n||(n={cameraId:t.cameraId,cameraName:t.cameraName,files:[],bytes:0},e.set(t.cameraId,n)),n.files.push(t),n.bytes+=t.bytes}return[...e.values()]}),ie=U(()=>T.value.reduce((e,t)=>e+t.bytes,0)),E=U(()=>m.value.length===0?a(`views.recordings.export.no_cameras`):C.value?a(`views.recordings.export.no_footage`):a(`views.recordings.export.no_range`));function D(e){return String(e).padStart(2,`0`)}function ae(e){return`${e.getFullYear()}-${D(e.getMonth()+1)}-${D(e.getDate())}`}function oe(e){return`${D(e.getHours())}:${D(e.getMinutes())}`}function se(e){return e.replace(/[^a-zA-Z0-9-_]/g,`_`)}function ce(e){if(e<=0)return`0 MB`;let t=e/1e6;if(t<1e3)return`${t<10?t.toFixed(1):Math.round(t)} MB`;let n=e/1e9;return`${n.toFixed(+(n<10))} GB`}async function le(){let e=u.value;if(!e?.nvrExportEstimate||m.value.length===0||w.value.length===0){f.value=[],p.value=!1;return}p.value=!0;try{let t=await e.nvrExportEstimate({cameras:m.value,slices:w.value,quality:h.value});f.value=t.files??[]}catch{f.value=[]}finally{p.value=!1}}async function ue(){if(!C.value||m.value.length===0||w.value.length===0)return null;let e=u.value;if(!e?.nvrExportBatch)return c.add({severity:`error`,detail:a(`views.recordings.export.plugin_missing`),life:3e3}),null;let t=await e.nvrExportBatch({cameras:m.value,slices:w.value,quality:h.value,timelapseIntervalSec:x.value?g.value:0});await ne({url:t.url,filename:t.filename})}return s([m,w,h],le,{debounce:350,immediate:!0,deep:!0}),je(()=>{l.disabled&&(l.disabled.value=!C.value||m.value.length===0||!p.value&&T.value.length===0)}),n({onConfirm:ue}),(n,r)=>{let i=Re,a=o,s=ze,c=e,l=Y,u=J,f=d,x=mt;return M(),G(`div`,ht,[z(`div`,gt,[z(`label`,_t,q(n.$t(`views.recordings.export.cameras`)),1),L(i,{modelValue:R(m),"onUpdate:modelValue":r[0]||=e=>V(m)?m.value=e:null,options:t.cameras,"option-label":`name`,"option-value":`id`,display:`chip`,filter:``,placeholder:n.$t(`views.recordings.export.cameras_placeholder`),class:`w-full`},null,8,[`modelValue`,`options`,`placeholder`])]),z(`div`,Q,[z(`label`,vt,q(n.$t(`views.recordings.export.range`)),1),z(`div`,$,[z(`div`,yt,[z(`span`,bt,q(n.$t(`views.recordings.export.from`)),1),L(a,{modelValue:R(_),"onUpdate:modelValue":r[1]||=e=>V(_)?_.value=e:null,"show-time":``,"hour-format":`24`,fluid:``,"max-date":R(v)},null,8,[`modelValue`,`max-date`])]),z(`div`,xt,[z(`span`,St,q(n.$t(`views.recordings.export.to`)),1),L(a,{modelValue:R(v),"onUpdate:modelValue":r[2]||=e=>V(v)?v.value=e:null,"show-time":``,"hour-format":`24`,fluid:``,"min-date":R(_)},null,8,[`modelValue`,`min-date`])])]),R(C)?(M(),I(s,{key:1,severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:F(()=>[ke(q(n.$t(`views.recordings.export.range_hint`)),1)]),_:1})):(M(),I(s,{key:0,severity:`error`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:F(()=>[ke(q(n.$t(`views.recordings.export.invalid_range`)),1)]),_:1}))]),z(`div`,Ct,[z(`div`,wt,[z(`label`,Tt,q(n.$t(`views.recordings.export.quality`)),1),L(c,{modelValue:R(h),"onUpdate:modelValue":r[3]||=e=>V(h)?h.value=e:null,options:R(y),"option-label":`label`,"option-value":`value`,"allow-empty":!1,pt:{root:{class:`flex w-full`},pcToggleButton:{root:{class:`flex-1`}}}},null,8,[`modelValue`,`options`])]),z(`div`,Et,[z(`label`,Dt,q(n.$t(`views.recordings.export.timelapse`)),1),L(l,{modelValue:R(g),"onUpdate:modelValue":r[4]||=e=>V(g)?g.value=e:null,options:R(b),"option-label":`label`,"option-value":`value`,class:`w-full`},null,8,[`modelValue`,`options`])])]),z(`div`,Ot,[z(`div`,kt,[z(`label`,At,q(n.$t(`views.recordings.export.result`)),1),R(T).length?(M(),G(`div`,jt,[z(`span`,Mt,q(R(T).length)+` `+q(R(T).length===1?n.$t(`views.recordings.export.file`):n.$t(`views.recordings.export.files`)),1),r[5]||=z(`span`,{class:`text-muted`},`·`,-1),z(`span`,Nt,q(R(S))+q(ce(R(ie))),1),L(u,{value:R(T).length===1?`MP4`:`ZIP`,severity:`info`},null,8,[`value`])])):H(``,!0)]),z(`div`,Pt,[z(`div`,Ft,[R(p)&&!R(T).length?(M(),G(`div`,It,[L(f,{style:{width:`1rem`,height:`1rem`},"stroke-width":`4`,class:`m-0`}),z(`span`,null,q(n.$t(`views.recordings.export.estimating`)),1)])):R(T).length?(M(!0),G(A,{key:2},N(R(re),e=>(M(),G(`div`,{key:e.cameraId,class:`flex flex-col gap-1`},[z(`span`,Rt,q(e.cameraName)+` · `+q(e.files.length)+` · `+q(R(S))+q(ce(e.bytes)),1),(M(!0),G(A,null,N(e.files,e=>(M(),G(`div`,{key:e.name,class:`flex items-center gap-3 card-inner-background border border-color rounded-lg px-3 py-2`},[L(x,{class:`w-4 h-4 text-muted shrink-0`}),z(`span`,zt,q(e.name),1),z(`span`,Bt,q(e.span),1),z(`span`,Vt,q(R(S))+q(ce(e.bytes)),1)]))),128))]))),128)):(M(),G(`div`,Lt,q(R(E)),1))])])])])}}}),Wt={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Gt(e,t){return M(),G(`svg`,Wt,[...t[0]||=[z(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`m6 9l6 6l6-6`},null,-1)]])}var Kt=W({name:`tabler-chevron-down`,render:Gt}),qt={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Jt(e,t){return M(),G(`svg`,qt,[...t[0]||=[z(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`m6 15l6-6l6 6`},null,-1)]])}var Yt=W({name:`tabler-chevron-up`,render:Jt}),Xt={class:`flex flex-col gap-2`},Zt={class:`sidebar-section-title`},Qt={key:0,class:`text-xs text-muted`},$t={class:`flex flex-col gap-2`},en={class:`sidebar-section-title`},tn={class:`p-input-icon-left w-full`},nn={class:`text-xs text-muted`},rn={class:`flex flex-col gap-2`},an={class:`sidebar-section-title flex items-center gap-1.5`},on={key:0,class:`inline-flex items-center gap-1 text-xs text-muted`},sn={key:1,class:`flex flex-col gap-1.5 mt-1`},cn={class:`text-xs text-muted`},ln={class:`flex items-center gap-3`},un={class:`text-xs font-mono w-8 text-right shrink-0`},dn={key:1,class:`flex flex-col gap-2`},fn={class:`sidebar-section-title`},pn={class:`flex flex-col gap-2`},mn={class:`sidebar-section-title`},hn={class:`flex flex-col gap-2`},gn={class:`sidebar-section-title`},_n={class:`relative rounded-md overflow-hidden`},vn={key:3,class:`sidebar-divider`},yn={key:4,class:`flex flex-col gap-2`},bn={class:`sidebar-section-title`},xn={class:`flex items-center gap-3`},Sn={class:`text-xs font-mono w-8 text-right shrink-0`},Cn={class:`flex flex-col gap-2`},wn={class:`sidebar-section-title`},Tn={class:`flex flex-wrap gap-1`},En={class:`flex flex-col gap-2`},Dn={key:0,class:`flex flex-col gap-2`},On={class:`flex items-center gap-2 cursor-pointer text-sm`},kn={key:0,class:`flex flex-col gap-2 ml-6`},An={class:`filter-logic-divider`},jn={class:`flex flex-col gap-2`},Mn={key:0,class:`flex flex-col gap-2`},Nn={class:`filter-logic-divider`},Pn={class:`flex flex-col gap-2`},Fn={key:0,class:`flex flex-col gap-2`},In={class:`flex items-center gap-2 cursor-pointer text-sm`},Ln=288,Rn=ge(B({__name:`RecordingsFilterSidebar`,props:{filters:{},cameras:{},isOpen:{type:Boolean},isOverlay:{type:Boolean},resultCount:{},semanticCount:{},semanticSearchAvailable:{type:Boolean},semanticSearchLoading:{type:Boolean}},emits:[`update:filters`,`semantic-search`,`close`],setup(n,{expose:r,emit:o}){let s=new Set([`motion`,`audio`]),c=n,l=o,{t:d}=te(),{xlBreakpoint:f}=ce(),{topbarOffset:g,bottombarHeight:_}=le(),{icons:v,generic:S}=ie(),ee=v,w=Yt,T=Kt,ne=Ee(`sidebarRef`),E=K(c.filters.semanticQuery??``),D=Oe({eventTypes:!0,attributes:!0,sensorEvents:!0}),ae=U(()=>c.isOpen?Ln:0),oe=U(()=>{let e=[...new Set(c.cameras.map(e=>e.room).filter(e=>!!e))];return e.sort((e,t)=>e.localeCompare(t)),e.map(e=>({id:e,name:e===`Default`?d(`components.form.label.room_default`):e}))}),se=U(()=>{let e=c.filters.rooms;return(e.length>0?c.cameras.filter(t=>e.includes(t.room??``)):c.cameras).map(e=>({id:e.id,name:e.name}))}),ue=U(()=>{if(c.filters.cameraIds.length===1)return c.cameras.find(e=>e.id===c.filters.cameraIds[0])?.name}),O=U(()=>c.filters.contentKind===`episodes`),de=U(()=>[{label:d(`views.recordings.content_kind_all`),value:`all`},{label:d(`views.recordings.content_kind_events`),value:`events`},{label:d(`views.recordings.content_kind_episodes`),value:`episodes`}]),fe=U(()=>[{label:d(`views.recordings.filter_and`),value:`and`},{label:d(`views.recordings.filter_or`),value:`or`}]),pe=U(()=>[{label:d(`views.recordings.time_1h`),value:`1h`},{label:d(`views.recordings.time_1d`),value:`1d`},{label:d(`views.recordings.time_1w`),value:`1w`},{label:d(`views.recordings.time_1m`),value:`1m`}]),me=U(()=>h.filter(e=>!s.has(e)).map(e=>({label:d(`views.recordings.type_${e}`),value:e,icon:v[e]??S}))),he=U(()=>({label:d(`views.recordings.type_other`),value:m,icon:v.other??S})),ge=U(()=>a.map(e=>({label:d(Ve(e)),value:e,icon:ee[e]??S}))),_e=U(()=>u.map(e=>({label:d(Ue(e)),value:e,icon:v[e]??S}))),ve=U(()=>C.map(e=>({label:d(He(e)),value:e,icon:v[e]??S})));function k(e,t){l(`update:filters`,{...c.filters,[e]:t})}let xe=b(e=>{k(`search`,e)},300);function Se(e){let t=new Set(c.cameras.filter(t=>e.length===0||e.includes(t.room??``)).map(e=>e.id));l(`update:filters`,{...c.filters,rooms:e,cameraIds:c.filters.cameraIds.filter(e=>t.has(e))})}function Ce(){let e=E.value.trim();k(`semanticQuery`,e),l(`semantic-search`,e)}function we(e){let t=[...c.filters.eventTypes],n=t.indexOf(e);n>=0?t.splice(n,1):t.push(e),k(`eventTypes`,t)}function Te(e){let t=[...c.filters.audioLabels],n=t.indexOf(e);n>=0?t.splice(n,1):t.push(e),k(`audioLabels`,t)}function De(e){let t=[...c.filters.sensorEvents],n=t.indexOf(e);n>=0?t.splice(n,1):t.push(e),k(`sensorEvents`,t)}function F(e){let t=[...c.filters.hasAttributes],n=t.indexOf(e);n>=0?t.splice(n,1):t.push(e),k(`hasAttributes`,t)}function Ae(e){D[e]=!D[e]}return j(E,e=>{!e?.trim()&&c.filters.semanticQuery&&k(`semanticQuery`,``)}),x(ne,e=>{let t=e.target;t.closest(`#recordings-sidebar-toggle`)||t.closest(`[data-pc-section="overlay"], [data-pc-section="panel"], .p-connected-overlay`)||c.isOpen&&(c.isOverlay||!f.value)&&l(`close`)}),r({sidebarWidth:ae}),(r,a)=>{let o=e,s=i,c=be,l=Le,u=p,d=y,f=Re,m=re,h=ye,v=t;return M(),G(`nav`,{ref_key:`sidebarRef`,ref:ne,class:`recordings-sidebar fixed transition-all duration-200 overflow-x-hidden overflow-y-auto md:!pl-0 pl-safe pb-safe flex flex-col z-4`,style:Pe({width:`${R(ae)}px`,borderRightWidth:n.isOpen?`1px`:`0px`,paddingBottom:`calc(env(safe-area-inset-top, 0px) + env(safe-area-inset-bottom, 0px) + ${R(_)}px + ${R(g)}px)`})},[z(`div`,{class:`flex flex-col gap-4 p-4`,style:Pe({width:`${Ln}px`})},[z(`div`,Xt,[z(`label`,Zt,q(r.$t(`views.recordings.content_kind`)),1),L(o,{"model-value":n.filters.contentKind,options:R(de),"option-label":`label`,"option-value":`value`,"allow-empty":!1,class:`content-kind-toggle`,"onUpdate:modelValue":a[0]||=e=>k(`contentKind`,e)},null,8,[`model-value`,`options`]),R(O)?(M(),G(`span`,Qt,q(r.$t(`views.recordings.content_kind_episodes_hint`)),1)):H(``,!0)]),a[23]||=z(`div`,{class:`sidebar-divider`},null,-1),R(O)?H(``,!0):(M(),G(A,{key:0},[z(`div`,$t,[z(`label`,en,q(r.$t(`views.recordings.search`)),1),z(`span`,tn,[L(s,{"model-value":n.filters.search,placeholder:r.$t(`views.recordings.search_placeholder`),class:`w-full text-sm`,"onUpdate:modelValue":a[1]||=e=>R(xe)(e)},null,8,[`model-value`,`placeholder`])]),z(`span`,nn,q(r.$t(`views.recordings.result_count`,{count:n.resultCount})),1)]),a[15]||=z(`div`,{class:`sidebar-divider`},null,-1),z(`div`,rn,[z(`label`,an,[L(c,{class:`w-3.5 h-3.5`}),ke(` `+q(r.$t(`views.recordings.semantic_search`)),1)]),L(l,{modelValue:R(E),"onUpdate:modelValue":a[2]||=e=>V(E)?E.value=e:null,placeholder:r.$t(`views.recordings.semantic_search_placeholder`),class:`w-full text-sm semantic-textarea`,rows:`3`,disabled:!n.semanticSearchAvailable},null,8,[`modelValue`,`placeholder`,`disabled`]),L(u,{label:r.$t(`views.recordings.semantic_search_button`),severity:`secondary`,outlined:``,size:`small`,class:`w-full text-xs`,loading:n.semanticSearchLoading,disabled:!n.semanticSearchAvailable||!R(E)?.trim(),onClick:Ce},null,8,[`label`,`loading`,`disabled`]),n.semanticCount==null?H(``,!0):(M(),G(`span`,on,[L(c,{class:`w-3 h-3`}),ke(` `+q(r.$t(`views.recordings.semantic_results`,{count:n.semanticCount})),1)])),n.filters.semanticQuery?(M(),G(`div`,sn,[z(`label`,cn,q(r.$t(`views.recordings.min_match_score`)),1),z(`div`,ln,[L(d,{"model-value":n.filters.minSemanticScore,min:0,max:1,step:.05,class:`flex-1`,"onUpdate:modelValue":a[3]||=e=>k(`minSemanticScore`,e)},null,8,[`model-value`]),z(`span`,un,q(Math.round(n.filters.minSemanticScore*100))+`%`,1)])])):H(``,!0)]),a[16]||=z(`div`,{class:`sidebar-divider`},null,-1)],64)),R(oe).length>1?(M(),G(`div`,dn,[z(`label`,fn,q(r.$t(`views.recordings.rooms`)),1),L(f,{"model-value":n.filters.rooms,options:R(oe),"option-label":`name`,"option-value":`id`,placeholder:r.$t(`views.recordings.all_rooms`),class:`w-full text-sm`,"max-selected-labels":2,"show-toggle-all":!1,pt:{overlay:{style:`position: fixed`}},"onUpdate:modelValue":a[4]||=e=>Se(e)},null,8,[`model-value`,`options`,`placeholder`])])):H(``,!0),z(`div`,pn,[z(`label`,mn,q(r.$t(`views.recordings.cameras`)),1),L(f,{"model-value":n.filters.cameraIds,options:R(se),"option-label":`name`,"option-value":`id`,placeholder:r.$t(`views.recordings.all_cameras`),class:`w-full text-sm`,"max-selected-labels":2,"show-toggle-all":!1,pt:{overlay:{style:`position: fixed`}},"onUpdate:modelValue":a[5]||=e=>k(`cameraIds`,e)},null,8,[`model-value`,`options`,`placeholder`])]),R(ue)&&!R(O)?(M(),G(A,{key:2},[a[17]||=z(`div`,{class:`sidebar-divider`},null,-1),z(`div`,hn,[z(`label`,gn,q(r.$t(`views.recordings.grid_search`)),1),z(`div`,_n,[L(m,{camera:R(ue),"object-fit":`cover`},null,8,[`camera`]),L(h,{"model-value":n.filters.gridRegions,"onUpdate:modelValue":a[6]||=e=>k(`gridRegions`,e)},null,8,[`model-value`])]),L(u,{label:r.$t(`views.recordings.grid_clear`),severity:`secondary`,outlined:``,size:`small`,class:`w-full text-xs`,disabled:n.filters.gridRegions.length===0,onClick:a[7]||=e=>k(`gridRegions`,[])},null,8,[`label`,`disabled`])])],64)):H(``,!0),R(O)?H(``,!0):(M(),G(`div`,vn)),R(O)?H(``,!0):(M(),G(`div`,yn,[z(`label`,bn,q(r.$t(`views.recordings.confidence`)),1),z(`div`,xn,[L(d,{"model-value":n.filters.minConfidence,min:0,max:1,step:.05,class:`flex-1`,"onUpdate:modelValue":a[8]||=e=>k(`minConfidence`,e)},null,8,[`model-value`]),z(`span`,Sn,q(Math.round(n.filters.minConfidence*100))+`%`,1)])])),a[24]||=z(`div`,{class:`sidebar-divider`},null,-1),z(`div`,Cn,[z(`label`,wn,q(r.$t(`views.recordings.time_range`)),1),z(`div`,Tn,[(M(!0),G(A,null,N(R(pe),e=>(M(),I(u,{key:e.value,label:e.label,severity:n.filters.timeRange===e.value?void 0:`secondary`,outlined:n.filters.timeRange!==e.value,size:`small`,class:`text-xs flex-1 min-w-0`,onClick:t=>k(`timeRange`,n.filters.timeRange===e.value?null:e.value)},null,8,[`label`,`severity`,`outlined`,`onClick`]))),128))])]),R(O)?H(``,!0):(M(),G(A,{key:5},[a[22]||=z(`div`,{class:`sidebar-divider`},null,-1),z(`div`,En,[z(`button`,{class:`sidebar-section-title flex items-center justify-between w-full cursor-pointer`,onClick:a[9]||=e=>Ae(`sensorEvents`)},[z(`span`,null,q(r.$t(`views.recordings.sensor_events`)),1),(M(),I(P(R(D).sensorEvents?R(w):R(T)),{class:`w-4 h-4 text-muted`}))]),R(D).sensorEvents?(M(),G(`div`,Dn,[(M(!0),G(A,null,N(R(ge),e=>(M(),G(A,{key:e.value},[z(`label`,On,[L(v,{"model-value":n.filters.sensorEvents.includes(e.value),binary:!0,"onUpdate:modelValue":t=>De(e.value)},null,8,[`model-value`,`onUpdate:modelValue`]),(M(),I(P(e.icon),{class:`w-4 h-4 text-muted`})),z(`span`,null,q(e.label),1)]),e.value===`audio`&&n.filters.sensorEvents.includes(`audio`)?(M(),G(`div`,kn,[(M(!0),G(A,null,N(R(_e),e=>(M(),G(`label`,{key:e.value,class:`flex items-center gap-2 cursor-pointer text-sm`},[L(v,{"model-value":n.filters.audioLabels.includes(e.value),binary:!0,"onUpdate:modelValue":t=>Te(e.value)},null,8,[`model-value`,`onUpdate:modelValue`]),(M(),I(P(e.icon),{class:`w-4 h-4 text-muted`})),z(`span`,null,q(e.label),1)]))),128))])):H(``,!0)],64))),128))])):H(``,!0)]),z(`div`,An,[a[18]||=z(`div`,{class:`filter-logic-line`},null,-1),L(o,{"model-value":n.filters.filterLogicTriggers,options:R(fe),"option-label":`label`,"option-value":`value`,"allow-empty":!1,class:`filter-logic-toggle`,"onUpdate:modelValue":a[10]||=e=>k(`filterLogicTriggers`,e)},null,8,[`model-value`,`options`]),a[19]||=z(`div`,{class:`filter-logic-line`},null,-1)]),z(`div`,jn,[z(`button`,{class:`sidebar-section-title flex items-center justify-between w-full cursor-pointer`,onClick:a[11]||=e=>Ae(`eventTypes`)},[z(`span`,null,q(r.$t(`views.recordings.event_type`)),1),(M(),I(P(R(D).eventTypes?R(w):R(T)),{class:`w-4 h-4 text-muted`}))]),R(D).eventTypes?(M(),G(`div`,Mn,[(M(!0),G(A,null,N(R(me),e=>(M(),G(`label`,{key:e.value,class:`flex items-center gap-2 cursor-pointer text-sm`},[L(v,{"model-value":n.filters.eventTypes.includes(e.value),binary:!0,"onUpdate:modelValue":t=>we(e.value)},null,8,[`model-value`,`onUpdate:modelValue`]),(M(),I(P(e.icon),{class:`w-4 h-4 text-muted`})),z(`span`,null,q(e.label),1)]))),128))])):H(``,!0)]),z(`div`,Nn,[a[20]||=z(`div`,{class:`filter-logic-line`},null,-1),L(o,{"model-value":n.filters.filterLogicAttributes,options:R(fe),"option-label":`label`,"option-value":`value`,"allow-empty":!1,class:`filter-logic-toggle`,"onUpdate:modelValue":a[12]||=e=>k(`filterLogicAttributes`,e)},null,8,[`model-value`,`options`]),a[21]||=z(`div`,{class:`filter-logic-line`},null,-1)]),z(`div`,Pn,[z(`button`,{class:`sidebar-section-title flex items-center justify-between w-full cursor-pointer`,onClick:a[13]||=e=>Ae(`attributes`)},[z(`span`,null,q(r.$t(`views.recordings.attributes`)),1),(M(),I(P(R(D).attributes?R(w):R(T)),{class:`w-4 h-4 text-muted`}))]),R(D).attributes?(M(),G(`div`,Fn,[(M(!0),G(A,null,N(R(ve),e=>(M(),G(`label`,{key:e.value,class:`flex items-center gap-2 cursor-pointer text-sm`},[L(v,{"model-value":n.filters.hasAttributes.includes(e.value),binary:!0,"onUpdate:modelValue":t=>F(e.value)},null,8,[`model-value`,`onUpdate:modelValue`]),(M(),I(P(e.icon),{class:`w-4 h-4 text-muted`})),z(`span`,null,q(e.label),1)]))),128)),z(`label`,In,[L(v,{"model-value":n.filters.eventTypes.includes(R(he).value),binary:!0,"onUpdate:modelValue":a[14]||=e=>we(R(he).value)},null,8,[`model-value`]),(M(),I(P(R(he).icon),{class:`w-4 h-4 text-muted`})),z(`span`,null,q(R(he).label),1)])])):H(``,!0)])],64))],4)],4)}}}),[[`__scopeId`,`data-v-dd31ab16`]]),zn={class:`font-semibold text-xl truncate`},Bn={class:`w-full h-full relative`},Vn={key:0,class:`w-full flex flex-row h-[calc(40px+1rem)] py-2 items-center fixed z-10`},Hn={class:`relative z-2 page-title !m-0`},Un={key:1,class:`fixed right-0 z-10 h-[calc(40px+1rem)] py-2 pr-2 flex items-center`},Wn={key:1,class:`flex justify-center py-4`},Gn={key:2,class:`flex flex-1 min-h-0 flex-col items-center justify-center w-full gap-4`},Kn={class:`text-muted text-sm`},qn=288,Jn=B({__name:`Recordings`,setup(e){let t=new oe,r=new k,i=fe(),a=pe(),{bottombarHeight:o}=le(),{status:s,checking:u}=S(),{openEpisodePlayer:d}=O(),m=n(`@camera.ui/camera-ui-nvr`),h=Se(),{t:y}=te(),{smBreakpoint:b,xlBreakpoint:x,mdBreakpoint:C}=ce(),{registerScrollToTop:ne}=de();if(typeof VideoDecoder<`u`){let e=v({cacheSize:20});Te(ee,e),l(()=>e.dispose())}let{results:re,isSearching:ie,isAvailable:ge,hasSearched:ye,search:N,clear:P}=c(),{data:Oe}=t.getCamerasQuery({page:1,pageSize:-1}),{data:ke}=r.getUserQuery(U(()=>a.user?.username??``)),B={"1h":36e5,"1d":864e5,"1w":6048e5,"1m":2592e6},V=Ee(`gridRef`),je=Ee(`viewMenuRef`),W=K(`closed`),Fe=K(!1),J=K({contentKind:`all`,search:``,semanticQuery:``,filterLogicTriggers:`or`,filterLogicAttributes:`or`,rooms:[],cameraIds:[],timeRange:null,customDateRange:null,eventTypes:[],audioLabels:[],hasAttributes:[],sensorEvents:[],gridRegions:[],minConfidence:.5,minSemanticScore:.5,onlyWithRecordings:!0}),Ie=Ne({state:`ended`,hasDetections:!0,withRecordingInfo:!0,hasRecording:!0}),Le=JSON.stringify(Ie.value),Y=K(!1),Re=Ne([]),ze=K(null),Ve=Ee(`reindexAnchorRef`),{left:He}=f(Ve),Ue=!1,X=U(()=>x.value?!0:W.value===`opened`),$e=U(()=>C.value),tt=U(()=>X.value&&$e.value?!0:(V.value?.scrollY??0)>10&&!s.value?.running),nt=U(()=>C.value?`0px`:X.value?`${qn}px`:`0px`),Z=U(()=>(Oe.value?.result??[]).map(e=>({id:e._id,name:e.name,room:e.room}))),it=U(()=>{let e=new Map;for(let t of Z.value)e.set(t.id,t.name);return e}),ot=U(()=>{let e=new Map;for(let t of Oe.value?.result??[])e.set(t._id,t);return e}),st=U(()=>{let e=J.value.rooms;return(e.length>0?Z.value.filter(t=>e.includes(t.room??``)):Z.value).map(e=>e.id)}),ct=U(()=>J.value.cameraIds.filter(e=>st.value.includes(e))),lt=U(()=>st.value);ne(()=>V.value?.scrollToTop());let{events:ut,isLoading:ft,hasMore:pt,loadMore:mt,loadThumbnails:ht,deleteEvents:gt,pluginUnavailable:_t}=_({availableCameraIds:lt,cameraIds:ct,realtime:!0,pageSize:40,filter:Ie,withEpisodes:!0}),Q=U(()=>{let e=new Map;for(let t of re.value??[]){let n=e.get(t.eventId);(!n||t.score>n)&&e.set(t.eventId,t.score)}return e}),vt=U(()=>ye.value),$=U(()=>{let e=ut.value.filter(e=>e.state===`ended`),t=J.value;if(t.timeRange&&B[t.timeRange]){let n=Date.now()-B[t.timeRange];e=e.filter(e=>e.startTime>=n)}return t.gridRegions.length>0&&(e=e.filter(e=>e.segments.some(e=>e.detections.some(e=>e.box&&Ye(e.box,t.gridRegions))))),vt.value&&(e=e.filter(e=>{let n=Q.value.get(e.id);return n!=null&&n>=t.minSemanticScore}),e.sort((e,t)=>(Q.value.get(t.id)??0)-(Q.value.get(e.id)??0))),e}),yt=U(()=>J.value.contentKind===`episodes`),bt=U(()=>{if(J.value.contentKind===`events`)return[];m.storeVersion.value;let e=J.value;if(!yt.value&&(Y.value||vt.value||e.gridRegions.length>0||e.search.trim()!==``||e.eventTypes.length>0||e.audioLabels.length>0||e.hasAttributes.length>0||e.sensorEvents.length>0||e.minConfidence!==.5))return[];let t=ct.value.length>0?ct.value:lt.value,n=e.timeRange&&B[e.timeRange]?Date.now()-B[e.timeRange]:0,r=1/0;if(e.timeRange===`custom`&&e.customDateRange&&(n=Math.max(n,e.customDateRange[0].getTime()),r=e.customDateRange[1].getTime()),pt.value&&!yt.value){let e=1/0;for(let t of ut.value)e=Math.min(e,t.thumbnailAt??t.startTime);n=Math.max(n,e)}let i=[];for(let e of m.getEpisodes())e.description&&(n&&e.endTime<n||e.startTime>r||t.length>0&&!e.members.some(e=>t.includes(e.cameraId))||i.push({event:void 0,key:`episode:${e.id}`,episode:e}));return i}),xt=U(()=>{if(yt.value)return[...bt.value].sort((e,t)=>Ke(t)-Ke(e));if(Y.value&&Re.value.length)return Re.value;let e=$.value.map(e=>({event:e,key:e.id}));return bt.value.length&&(e.push(...bt.value),e.sort((e,t)=>Ke(t)-Ke(e))),e}),St=U(()=>xe(void 0,`admin`)),{selectionMode:Ct,selectedIds:wt,allSelected:Tt,bulkBusy:Et,enterSelectionMode:Dt,exitSelectionMode:Ot,toggleSelectAll:kt,toggleSelection:At}=ae($,e=>e.id);function jt(){let e=[...wt.value];!e.length||Et.value||i.openTextDialog({data:{title:y(`components.dialog.title.confirm`),contentText:y(`views.recordings.delete_selected_confirm`,{count:e.length}),confirmText:y(`components.form.button.remove`),confirmButtonProps:{severity:`danger`}},onConfirm:async()=>{Et.value=!0;try{await gt(e),Ot(),h.add({severity:`success`,detail:y(`views.recordings.delete_selected_done`,{count:e.length}),life:5e3})}catch(e){h.add({severity:`error`,detail:e?.message??String(e),life:5e3})}finally{Et.value=!1}}})}let Mt=U(()=>[{key:`ungroup`,label:y(`views.recordings.ungroup`),description:y(`views.recordings.ungroup_hint`),toggle:!0,toggleState:Y.value,onClick:()=>{Ue=!0,Y.value=!Y.value,a.updateUser({preferences:{recordings:{ungrouped:Y.value}}})}},{key:`onlyWithRecordings`,label:y(`views.recordings.only_with_recordings`),description:y(`views.recordings.only_with_recordings_hint`),toggle:!0,toggleState:J.value.onlyWithRecordings,onClick:()=>{J.value={...J.value,onlyWithRecordings:!J.value.onlyWithRecordings}}}]);function Nt(){i.openComponentDialog(dt,{data:{title:y(`views.recordings.reindex.title`),contentProps:{},confirmText:y(`views.recordings.reindex.start`)}})}function Pt(){i.openComponentDialog(Ut,{data:{title:y(`views.recordings.export.title`),contentProps:{cameras:Z.value,preselect:J.value.cameraIds?.length?J.value.cameraIds:[]},confirmText:y(`views.recordings.export.confirm`)}})}function Ft(){let e=W.value;W.value=e===`opened`?`closed`:`opened`}function It(){W.value=`closed`}function Lt(e){!e.semanticQuery?.trim()&&J.value.semanticQuery?.trim()&&P(),J.value=e}function Rt(e){if(!e.trim()){P();return}N(e)}async function zt(e){let t=m.getEpisode(e);t||=(await m.loadEpisodes({limit:50}),m.getEpisode(e)),t&&d(t,ot.value)}function Bt(e){let t=ot.value.get(e.cameraId);t&&i.openComponentDialog(ve,{data:{title:t.name,dedupeKey:`camera-event:${t._id}:${e.startTime}`,stayActive:!0,hideCancelButton:!0,hideConfirmButton:!0,contentProps:{camera:t,eventTimestamp:e.startTime},headerActions:e.segments?.some(e=>e?.description)?[{icon:be,toggle:!0,onClick:()=>{}}]:void 0,draggable:!0,blockDragOnSelectors:[`.p-dialog-body`],dismissableMask:!1,modal:!1,dialogContentClass:`!px-0 h-full`,goTo:`/cameras/${t.name}?startTs=${e.startTime}`},dialogSize:{desktop:{maxWidth:`800px`,maxHeight:`calc(100vh - max(1rem, env(safe-area-inset-top, 0px)) - max(1rem, env(safe-area-inset-bottom, 0px)))`,width:`50vw`}}})}return j(x,e=>{e&&(W.value=`closed`)}),j(J,e=>{let t=e.eventTypes.length>0||e.sensorEvents.length>0||e.audioLabels.length>0||e.hasAttributes.length>0,n={types:e.eventTypes.length>0?e.eventTypes:void 0,triggers:e.sensorEvents.length>0?e.sensorEvents:void 0,triggerLabels:e.audioLabels.length>0?e.audioLabels:void 0,attributes:e.hasAttributes.length>0?e.hasAttributes:void 0,filterLogicTriggers:t?e.filterLogicTriggers:void 0,filterLogicAttributes:t?e.filterLogicAttributes:void 0,search:e.search||void 0,minConfidence:e.minConfidence>0?e.minConfidence:void 0,state:`ended`,hasDetections:!t,withRecordingInfo:!0,hasRecording:e.onlyWithRecordings||void 0},r=JSON.stringify(n);r!==Le&&(Le=r,Ie.value=n)},{deep:!0,immediate:!0}),j(ke,e=>{if(!e||Ue)return;let t=e.preferences?.recordings?.ungrouped;t!==void 0&&(Y.value=t)},{immediate:!0}),j([Y,$],([e,t])=>{Re.value=e?Je(t):[]}),j(()=>J.value.cameraIds,e=>{e.length!==1&&J.value.gridRegions.length>0&&(J.value={...J.value,gridRegions:[]})}),we(()=>{requestAnimationFrame(()=>{Fe.value=!0})}),(e,t)=>{let n=T,r=rt,i=et,a=p,c=Xe,l=Qe,d=Ze,f=D,m=Ge,h=qe,_=We,v=E,y=w,S=he,ee=g;return M(),G(`div`,null,[L(n,{position:`center`},{default:F(()=>[z(`span`,zn,q(e.$t(`views.recordings.title`)),1)]),_:1}),L(n,{position:`left`},{default:F(()=>[L(a,{id:`recordings-sidebar-toggle`,severity:`secondary`,class:`cui-button p-2 text-color`,text:``,rounded:``,onClick:Ft},{icon:F(()=>[R(W)===`closed`?(M(),I(r,{key:0,width:`100%`,height:`100%`})):(M(),I(i,{key:1,width:`100%`,height:`100%`}))]),_:1})]),_:1}),L(n,{position:`right`},{default:F(()=>[L(a,{severity:`secondary`,class:`cui-button p-2 text-color`,text:``,rounded:``,onClick:t[0]||=e=>R(je)?.toggleMenu(e)},{icon:F(()=>[L(c,{width:`100%`,height:`100%`})]),_:1})]),_:1}),L(Rn,{filters:R(J),cameras:R(Z),"is-open":R(X),"is-overlay":R($e),"result-count":R(xt).length,"semantic-count":R(vt)?R(Q).size:void 0,"semantic-search-available":R(ge),"semantic-search-loading":R(ie),"onUpdate:filters":Lt,onSemanticSearch:Rt,onClose:It},null,8,[`filters`,`cameras`,`is-open`,`is-overlay`,`result-count`,`semantic-count`,`semantic-search-available`,`semantic-search-loading`]),(M(),I(Me,{to:`#container`,defer:``},[R(X)&&R($e)?(M(),G(`div`,{key:0,class:`fixed top-0 left-0 right-0 bottom-0 w-full h-full bg-black/50 z-1`,onClick:It})):H(``,!0)])),z(`main`,{ref_key:`reindexAnchorRef`,ref:Ve,class:`relative w-full h-full`,style:Pe({paddingLeft:R(nt),transition:R(Fe)?`padding-left 200ms`:void 0})},[z(`div`,Bn,[R(b)?H(``,!0):(M(),G(`div`,Vn,[t[3]||=z(`div`,{class:`ml-2`},null,-1),R(x)?H(``,!0):(M(),I(a,{key:0,id:`recordings-sidebar-toggle`,severity:`secondary`,class:`mr-2 cui-icon-lg relative z-2`,text:``,rounded:``,onClick:Ft},{icon:F(()=>[R(X)?(M(),I(l,{key:0,width:`100%`,height:`100%`})):(M(),I(d,{key:1,width:`100%`,height:`100%`}))]),_:1})),z(`h1`,Hn,q(e.$t(`views.recordings.title`)),1),t[4]||=z(`div`,{class:`gradient-blur rotate-180 !h-[70px]`},[z(`div`),z(`div`),z(`div`),z(`div`),z(`div`),z(`div`)],-1)])),R(b)?H(``,!0):(M(),G(`div`,Un,[De((M(),I(a,{severity:`secondary`,text:``,rounded:``,class:`cui-icon-lg relative z-2`,onClick:t[1]||=e=>R(je)?.toggleMenu(e)},{icon:F(()=>[L(c,{width:`100%`,height:`100%`})]),_:1})),[[ee,{value:e.$t(`views.recordings.view_options`)},void 0,{bottom:!0}]])])),z(`div`,{class:Ae([`px-2 h-full w-full flex flex-col`,{"pt-4":R(b),"pt-[calc(40px+2rem)]":!R(b)}])},[R(xt).length?(M(),I(h,{key:0,ref_key:`gridRef`,ref:V,items:R(xt),"min-item-width":R(b)?160:180,gap:8,"has-more":R(pt),"load-more":R(mt),"item-key":e=>e.key,class:`flex-1 min-h-0`},{item:F(({item:e})=>[e.episode?(M(),I(f,{key:0,episode:e.episode,"camera-by-id":R(ot),fluid:``,"click-disabled":R(Ct)},null,8,[`episode`,`camera-by-id`,`click-disabled`])):(M(),I(m,{key:1,event:e.event,"camera-name":R(it).get(e.event.cameraId),camera:R(ot).get(e.event.cameraId),"load-thumbnails":R(ht),"semantic-score":R(Q).get(e.event.id),"seg-index":e.segIndex,"selection-mode":R(Ct),selected:R(wt).has(e.event.id),"sibling-active":e.segIndex!==void 0&&R(ze)===e.event.id,onSelect:t=>R(At)(e.event.id),onScrollToEvent:()=>Bt(e.event),onOpenEpisode:zt,onMouseenter:t=>ze.value=e.segIndex===void 0?null:e.event.id,onMouseleave:t[2]||=e=>ze.value=null},null,8,[`event`,`camera-name`,`camera`,`load-thumbnails`,`semantic-score`,`seg-index`,`selection-mode`,`selected`,`sibling-active`,`onSelect`,`onScrollToEvent`,`onMouseenter`]))]),_:1},8,[`items`,`min-item-width`,`has-more`,`load-more`,`item-key`])):H(``,!0),R(ft)||R(ie)?(M(),G(`div`,Wn,[L(_,{width:`24px`,height:`24px`,class:`text-muted`})])):H(``,!0),!R($).length&&!R(ft)&&!R(ie)?(M(),G(`div`,Gn,[L(v,{class:`w-12 h-12 text-muted`}),z(`span`,Kn,q(R(_t)?e.$t(`views.recordings.recordings_unavailable`):e.$t(`views.recordings.no_recordings`)),1)])):H(``,!0)],2)])],4),R(St)&&R(Z).length?(M(),G(`div`,{key:0,class:Ae([`fixed z-10`,R(tt)?`scale-0 opacity-0`:`scale-100 opacity-100`]),style:Pe({left:`calc(${R(He)}px + ${R(nt)} + 0.75rem + env(safe-area-inset-left, 0px))`,bottom:`calc(${R(o)}px + 1.25rem + env(safe-area-inset-bottom, 0px))`,transition:R(Fe)?`left 200ms, transform 200ms ease-in-out, opacity 200ms ease-in-out`:void 0})},[L(a,{severity:`secondary`,rounded:``,class:`shadow-lg`,disabled:R(s)?.running,label:R(u)?e.$t(`views.recordings.reindex.checking`):R(s)?.running?e.$t(`views.recordings.reindex.progress`,{done:R(s).done,total:R(s).total}):e.$t(`views.recordings.reindex.button`),onClick:Nt},{icon:F(()=>[R(s)?.running?(M(),I(R(We),{key:0})):(M(),I(R(at),{key:1}))]),_:1},8,[`disabled`,`label`])],6)):H(``,!0),R(Z).length?(M(),I(S,{key:1,"force-visible":R(Ct),"scroll-y":R(V)?.scrollY??0},{default:F(()=>[R(Ct)?(M(),G(A,{key:1},[L(y,{grouped:``,"tooltip-props":{value:e.$t(`components.form.tooltip.cancel_selection`)},"button-props":{severity:`secondary`},icon:R(Be),"icon-props":{width:`100%`,height:`100%`},onClick:R(Ot)},null,8,[`tooltip-props`,`icon`,`onClick`]),L(y,{grouped:``,"tooltip-props":{value:R(Tt)?e.$t(`components.form.tooltip.deselect_all`):e.$t(`components.form.tooltip.select_all`)},"button-props":{severity:R(Tt)?`primary`:`secondary`},icon:R(Ce),"icon-props":{width:`100%`,height:`100%`},onClick:R(kt)},null,8,[`tooltip-props`,`button-props`,`icon`,`onClick`]),L(y,{grouped:``,"tooltip-props":{value:e.$t(`components.form.tooltip.delete_selected`)},"button-props":{severity:`danger`,disabled:!R(wt).size||R(Et)},icon:R(ue),"icon-props":{width:`100%`,height:`100%`},onClick:jt},null,8,[`tooltip-props`,`button-props`,`icon`])],64)):(M(),G(A,{key:0},[R(St)&&R($).length?(M(),I(y,{key:0,grouped:``,"tooltip-props":{value:e.$t(`views.recordings.select`)},"button-props":{severity:`secondary`},icon:R(se),"icon-props":{width:`100%`,height:`100%`},onClick:R(Dt)},null,8,[`tooltip-props`,`icon`,`onClick`])):H(``,!0),L(y,{grouped:``,"tooltip-props":{value:e.$t(`views.recordings.export.title`)},"button-props":{class:`text-white`},icon:R(me),"icon-props":{width:`26px`,height:`26px`},onClick:Pt},null,8,[`tooltip-props`,`icon`])],64))]),_:1},8,[`force-visible`,`scroll-y`])):H(``,!0),L(_e,{ref_key:`viewMenuRef`,ref:je,items:R(Mt),"auto-hide":!1,popover:{pt:{root:{class:`w-[22rem]`},content:{class:`p-0! rounded-xl! overflow-hidden!`}}}},null,8,[`items`])])}}});export{Jn as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{$ as e,Dr as t,F as n,Fr as r,Tr as i,X as a,Y as o,Z as s,_r as c,ar as l,br as u,ct as d,dt as f,et as p,ft as m,gr as h,ir as ee,it as te,lt as g,mr as _,mt as v,nr as y,or as b,pr as x,rr as S,rt as ne,st as re,tt as ie,ur as ae,ut as oe,vr as C,wr as w,zr as T}from"./vendor-cameraui-OySaGjmo.js";import{kn as E,xn as D}from"./api-ou2-S3Z9.js";import{$t as se,Mn as O,Pn as k,Rn as A,Yn as j,an as M,dn as N,fn as P,gr as F,hr as I,in as L,mn as R,nr as z,on as B,pr as V,rn as H,sn as U,sr as W,vr as G,xn as K,yr as q}from"./vendor-AX0A8AMd.js";import{K as J,T as ce,l as le,z as ue}from"./vendor-primevue-CvHDsVi_.js";import{a as de,c as fe,d as pe,f as me,i as he,l as ge,m as _e,n as ve,o as ye,p as be,r as xe,s as Se,t as Ce,u as we}from"./CuiLightControl-CsK2cn7L.js";import{t as Y}from"./sensorIcons-tORVN7ay.js";var Te={disabled:!1,size:`medium`},Ee={class:`cui-measurement-info__header`},De={class:`cui-measurement-info__icon`},Oe={class:`cui-measurement-info__info`},ke={key:0,class:`cui-measurement-info__label`},Ae={class:`cui-measurement-info__value`},je=E(R({__name:`CuiMeasurementInfo`,props:K({type:{},unit:{},current:{},label:{},disabled:{type:Boolean},size:{}},Te),setup(e){let{type:t}=V(e),n=H(()=>Y(t.value));return(t,r)=>(O(),U(`div`,{class:F([`cui-measurement-info`,[`cui-measurement-info--${e.size}`,{"cui-measurement-info--disabled":e.disabled}]])},[L(`div`,Ee,[L(`div`,De,[(O(),M(A(I(n)),{class:`cui-measurement-info__icon-svg`}))]),L(`div`,Oe,[e.label?(O(),U(`span`,ke,q(e.label),1)):B(``,!0),L(`span`,Ae,q(e.current==null?`--`:`${e.current} ${e.unit}`),1)])])],2))}}),[[`__scopeId`,`data-v-3344cbd6`]]),Me={detected:!1,disabled:!1,size:`medium`},Ne={class:`cui-binary-sensor__header`},Pe={class:`cui-binary-sensor__icon`},Fe={class:`cui-binary-sensor__info`},Ie={key:0,class:`cui-binary-sensor__label`},Le=E(R({__name:`CuiBinarySensor`,props:K({type:{},detected:{type:Boolean},label:{},disabled:{type:Boolean},size:{}},Me),setup(e){let t=e,{t:n}=T(),{type:r,detected:i}=V(t),a=H(()=>Y(r.value)),o=H(()=>({color:`rgb(239, 68, 68)`,filter:`drop-shadow(0 0 6px rgba(239, 68, 68, 0.5))`})),s=H(()=>({color:`var(--text-secondary-color)`})),c=H(()=>i.value?`cui-binary-sensor__status--detected`:`cui-binary-sensor__status--clear`),l=H(()=>i.value?`cui-binary-sensor__indicator--detected`:`cui-binary-sensor__indicator--clear`);return(t,r)=>(O(),U(`div`,{class:F([`cui-binary-sensor`,[`cui-binary-sensor--${e.size}`,{"cui-binary-sensor--disabled":e.disabled,"cui-binary-sensor--clear":!I(i),"cui-binary-sensor--detected":I(i)}]])},[L(`div`,Ne,[L(`div`,Pe,[(O(),M(A(I(a)),{class:`cui-binary-sensor__icon-svg`,style:G(I(i)?I(o):I(s))},null,8,[`style`]))]),L(`div`,Fe,[e.label?(O(),U(`span`,Ie,q(e.label),1)):B(``,!0),L(`span`,{class:F([`cui-binary-sensor__status`,I(c)])},q(I(i)?I(n)(`components.binary_sensor.detected`):I(n)(`components.binary_sensor.clear`)),3)]),L(`div`,{class:F([`cui-binary-sensor__indicator`,I(l)])},null,2)])],2))}}),[[`__scopeId`,`data-v-c89ce8e7`]]),Re={detected:!1,size:`medium`},ze={class:`cui-detection-info__header`},Be={class:`cui-detection-info__icon`},Ve={class:`cui-detection-info__info`},He={key:0,class:`cui-detection-info__label`},Ue={key:0,class:`cui-detection-info__decibels`},We=E(R({__name:`CuiDetectionSensorInfo`,props:K({type:{},label:{},detected:{type:Boolean},labels:{},decibels:{},size:{}},Re),setup(e){let t=e,{t:n}=T(),r={color:`rgb(251, 146, 60)`,filter:`drop-shadow(0 0 8px rgba(251, 146, 60, 0.6))`},i=H(()=>{if(!t.detected)return n(`components.detection_sensor.idle`);let e=(t.labels??[]).filter(Boolean);return e.length?e.join(`, `):n(`components.detection_sensor.detected`)});return(t,n)=>(O(),U(`div`,{class:F([`cui-detection-info`,[`cui-detection-info--${e.size}`,{"cui-detection-info--active":e.detected}]])},[L(`div`,ze,[L(`div`,Be,[(O(),M(A(I(Y)(e.type)),{class:`cui-detection-info__icon-svg`,style:G(e.detected?r:void 0)},null,8,[`style`]))]),L(`div`,Ve,[e.label?(O(),U(`span`,He,q(e.label),1)):B(``,!0),L(`span`,{class:F([`cui-detection-info__status`,e.detected?`cui-detection-info__status--active`:`cui-detection-info__status--idle`])},q(I(i)),3)]),e.decibels===void 0?B(``,!0):(O(),U(`span`,Ue,q(Math.round(e.decibels))+` dB`,1)),L(`div`,{class:F([`cui-detection-info__indicator`,e.detected?`cui-detection-info__indicator--active`:`cui-detection-info__indicator--idle`])},null,2)])],2))}}),[[`__scopeId`,`data-v-f3272b7a`]]),X=new Set([r.Motion,r.Object,r.Audio,r.Face,r.LicensePlate,r.Classifier]),Z=new Set([r.Gas,r.CarbonMonoxide,r.Heat,r.Cold,r.Vibration,r.Tamper,r.Problem,r.Power]),Q=new Map([[r.Illuminance,`lx`],[r.CarbonDioxide,`ppm`]]),Ge=new Set([...X,...Z,...Q.keys(),r.Light,r.Switch,r.Lock,r.Siren,r.SecuritySystem,r.Garage,r.Doorbell,r.Contact,r.Occupancy,r.Smoke,r.Leak,r.Temperature,r.Humidity,r.Battery]);function Ke(e){return Ge.has(e)}var qe=R({__name:`CuiSensorControl`,props:{sensor:{},disabled:{type:Boolean}},setup(n){function v(e){return Z.has(e.type)}function T(e){return Q.get(e.type)}function E(e){return X.has(e.type)}function D(e){let t=e.getProperty(`detections`)??[];return[...new Set(t.map(e=>e.label??e.attribute).filter(e=>!!e))]}return(se,k)=>{let A=Ce,j=ve,N=xe,P=he,F=de,L=pe,R=ye,z=Se,V=fe,H=ge,U=we,W=me,G=be,K=_e,q=Le,J=je;return I(ne)(n.sensor)?(O(),M(A,{key:0,label:n.sensor.displayName.value,on:n.sensor.getProperty(I(_).On)??!1,brightness:n.sensor.getProperty(I(_).Brightness)??100,"has-brightness":n.sensor.hasCapability(`brightness`),disabled:n.disabled,size:`small`,class:`card-border`,"onUpdate:on":k[0]||=e=>n.sensor.setProperty(I(_).On,e),"onUpdate:brightness":k[1]||=e=>n.sensor.setProperty(I(_).Brightness,e)},null,8,[`label`,`on`,`brightness`,`has-brightness`,`disabled`])):I(f)(n.sensor)?(O(),M(j,{key:1,label:n.sensor.displayName.value,on:n.sensor.getProperty(I(S).On)??!1,disabled:n.disabled,size:`small`,class:`card-border`,"onUpdate:on":k[2]||=e=>n.sensor.setProperty(I(S).On,e)},null,8,[`label`,`on`,`disabled`])):I(te)(n.sensor)?(O(),M(N,{key:2,label:n.sensor.displayName.value,"current-state":n.sensor.getProperty(I(x).CurrentState)??2,"target-state":n.sensor.getProperty(I(x).TargetState)??0,disabled:n.disabled,size:`small`,class:`card-border`,"onUpdate:targetState":k[3]||=e=>n.sensor.setProperty(I(x).TargetState,e)},null,8,[`label`,`current-state`,`target-state`,`disabled`])):I(g)(n.sensor)?(O(),M(P,{key:3,label:n.sensor.displayName.value,active:n.sensor.getProperty(I(l).Active)??!1,volume:n.sensor.getProperty(I(l).Volume)??100,"has-volume":n.sensor.hasCapability(`volume`),disabled:n.disabled,size:`small`,class:`card-border`,"onUpdate:active":k[4]||=e=>n.sensor.setProperty(I(l).Active,e),"onUpdate:volume":k[5]||=e=>n.sensor.setProperty(I(l).Volume,e)},null,8,[`label`,`active`,`volume`,`has-volume`,`disabled`])):I(d)(n.sensor)?(O(),M(F,{key:4,label:n.sensor.displayName.value,"current-state":n.sensor.getProperty(I(b).CurrentState)??3,"target-state":n.sensor.getProperty(I(b).TargetState)??3,disabled:n.disabled,size:`small`,class:`card-border`,"onUpdate:targetState":k[6]||=e=>n.sensor.setProperty(I(b).TargetState,e)},null,8,[`label`,`current-state`,`target-state`,`disabled`])):I(e)(n.sensor)?(O(),M(L,{key:5,label:n.sensor.displayName.value,"current-state":n.sensor.getProperty(I(C).CurrentState)??1,"target-state":n.sensor.getProperty(I(C).TargetState)??1,"obstruction-detected":n.sensor.getProperty(I(C).ObstructionDetected)??!1,disabled:n.disabled,size:`small`,class:`card-border`,"onUpdate:targetState":k[7]||=e=>n.sensor.setProperty(I(C).TargetState,e)},null,8,[`label`,`current-state`,`target-state`,`obstruction-detected`,`disabled`])):I(s)(n.sensor)?(O(),M(R,{key:6,label:n.sensor.displayName.value,ring:n.sensor.getProperty(I(u).Ring)??!1,disabled:n.disabled,size:`small`,class:`card-border`,onTrigger:k[8]||=()=>n.sensor.setProperty(I(u).Ring,!0)},null,8,[`label`,`ring`,`disabled`])):I(a)(n.sensor)?(O(),M(z,{key:7,label:n.sensor.displayName.value,detected:n.sensor.getProperty(I(w).Detected)??!1,size:`small`,class:`card-border`},null,8,[`label`,`detected`])):I(re)(n.sensor)?(O(),M(V,{key:8,label:n.sensor.displayName.value,detected:n.sensor.getProperty(I(ae).Detected)??!1,size:`small`,class:`card-border`},null,8,[`label`,`detected`])):I(oe)(n.sensor)?(O(),M(H,{key:9,label:n.sensor.displayName.value,detected:n.sensor.getProperty(I(ee).Detected)??!1,size:`small`,class:`card-border`},null,8,[`label`,`detected`])):I(ie)(n.sensor)?(O(),M(U,{key:10,label:n.sensor.displayName.value,detected:n.sensor.getProperty(I(h).Detected)??!1,size:`small`,class:`card-border`},null,8,[`label`,`detected`])):I(m)(n.sensor)?(O(),M(W,{key:11,label:n.sensor.displayName.value,current:n.sensor.getProperty(I(y).Current),size:`small`,class:`card-border`},null,8,[`label`,`current`])):I(p)(n.sensor)?(O(),M(G,{key:12,label:n.sensor.displayName.value,current:n.sensor.getProperty(I(c).Current),size:`small`,class:`card-border`},null,8,[`label`,`current`])):I(o)(n.sensor)?(O(),M(K,{key:13,label:n.sensor.displayName.value,level:n.sensor.getProperty(I(i).Level)??100,charging:n.sensor.getProperty(I(i).Charging)??`NOT_CHARGING`,low:n.sensor.getProperty(I(i).Low)??!1,size:`small`,class:`card-border`},null,8,[`label`,`level`,`charging`,`low`])):v(n.sensor)?(O(),M(q,{key:14,type:n.sensor.type,label:n.sensor.displayName.value,detected:n.sensor.getProperty(`detected`)??!1,size:`small`,class:`card-border`},null,8,[`type`,`label`,`detected`])):T(n.sensor)?(O(),M(J,{key:15,type:n.sensor.type,label:n.sensor.displayName.value,current:n.sensor.getProperty(`current`)??void 0,unit:T(n.sensor),size:`small`,class:`card-border`},null,8,[`type`,`label`,`current`,`unit`])):E(n.sensor)?(O(),M(We,{key:16,type:n.sensor.type,label:n.sensor.displayName.value,detected:n.sensor.getProperty(`detected`)??!1,labels:D(n.sensor),decibels:n.sensor.type===I(r).Audio?n.sensor.getProperty(I(t).Decibels)??void 0:void 0,size:`small`,class:`card-border`},null,8,[`type`,`label`,`detected`,`labels`,`decibels`])):B(``,!0)}}}),Je={class:`flex flex-col gap-4 w-full`},$={key:0,class:`flex flex-col field-gap`},Ye={class:`cui-label`},Xe={class:`flex flex-col field-gap`},Ze={for:`sensorDisplayName`,class:`cui-label`},Qe={key:1,class:`flex flex-col field-gap`},$e={for:`sensorNativeId`,class:`cui-label`},et={class:`flex flex-col field-gap`},tt={class:`cui-label`},nt={key:0,class:`flex flex-wrap gap-2`},rt={key:2,class:`flex items-center gap-4 cui-toggle-switch`},it={class:`flex flex-col min-w-0`},at={class:`cui-label-switch`},ot={class:`text-xs text-muted`},st=R({__name:`SensorEdit`,props:{sensor:{},cameraOptions:{}},setup(e,{expose:t}){let r=e,i=W(r.sensor.displayName||r.sensor.name),a=W([...r.sensor.assignedCameraIds]),o=W(r.sensor.exposed),{sensors:s}=v(),c=H(()=>D(void 0,`admin`)),l=H(()=>r.cameraOptions.filter(e=>r.sensor.assignedCameraIds.includes(e.value))),u=H(()=>Ke(r.sensor.type)),d=H(()=>s.value.find(e=>e.id===r.sensor.id));return t({onConfirm:async()=>({displayName:i.value||r.sensor.name,assignedCameraIds:a.value,exposed:o.value})}),(t,r)=>{let s=ue,f=n,p=ce,m=le,h=J;return O(),U(`div`,Je,[I(u)?(O(),U(`div`,$,[L(`label`,Ye,q(t.$t(`views.sensors.control`)),1),I(d)?(O(),M(qe,{key:0,sensor:I(d),disabled:!I(c)},null,8,[`sensor`,`disabled`])):(O(),M(s,{key:1,severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:j(()=>[N(q(t.$t(`views.sensors.control_offline`)),1)]),_:1}))])):B(``,!0),L(`div`,Xe,[L(`label`,Ze,q(t.$t(`components.camera_options.sensor_display_name`)),1),P(f,{id:`sensorDisplayName`,modelValue:I(i),"onUpdate:modelValue":r[0]||=e=>z(i)?i.value=e:null,modelModifiers:{trim:!0},class:`w-full`},null,8,[`modelValue`])]),e.sensor.nativeId?(O(),U(`div`,Qe,[L(`label`,$e,q(t.$t(`views.sensors.native_id`)),1),P(f,{id:`sensorNativeId`,"model-value":e.sensor.nativeId,readonly:``,class:`w-full font-mono text-sm`},null,8,[`model-value`])])):B(``,!0),L(`div`,et,[L(`label`,tt,q(t.$t(`views.sensors.assigned_cameras`)),1),e.sensor.assignmentLocked?(O(),U(`div`,nt,[(O(!0),U(se,null,k(I(l),e=>(O(),M(p,{key:e.value,label:e.label},null,8,[`label`]))),128))])):(O(),M(m,{key:1,modelValue:I(a),"onUpdate:modelValue":r[1]||=e=>z(a)?a.value=e:null,options:e.cameraOptions,"option-label":`label`,"option-value":`value`,placeholder:t.$t(`views.sensors.assigned_cameras_placeholder`),class:`w-full`},null,8,[`modelValue`,`options`,`placeholder`])),P(s,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:j(()=>[N(q(e.sensor.assignmentLocked?t.$t(`views.sensors.assigned_cameras_locked_hint`):t.$t(`views.sensors.assigned_cameras_hint`)),1)]),_:1})]),e.sensor.cameraBound?B(``,!0):(O(),U(`div`,rt,[L(`div`,it,[L(`label`,at,q(t.$t(`views.sensors.exposed`)),1),L(`span`,ot,q(t.$t(`views.sensors.exposed_hint`)),1)]),P(h,{modelValue:I(o),"onUpdate:modelValue":r[2]||=e=>z(o)?o.value=e:null,class:`ml-auto shrink-0`},null,8,[`modelValue`])]))])}}});export{st as default};
|
|
1
|
+
import{$ as e,Dr as t,F as n,Fr as r,Tr as i,X as a,Y as o,Z as s,_r as c,ar as l,br as u,ct as d,dt as f,et as p,ft as m,gr as h,ir as ee,it as te,lt as g,mr as _,mt as v,nr as y,or as b,pr as x,rr as S,rt as ne,st as re,tt as ie,ur as ae,ut as oe,vr as C,wr as w,zr as T}from"./vendor-cameraui-ZyqPntQ7.js";import{kn as E,xn as D}from"./api-2VPaKkqc.js";import{$t as se,Mn as O,Pn as k,Rn as A,Yn as j,an as M,dn as N,fn as P,gr as F,hr as I,in as L,mn as R,nr as z,on as B,pr as V,rn as H,sn as U,sr as W,vr as G,xn as K,yr as q}from"./vendor-AX0A8AMd.js";import{K as J,T as ce,l as le,z as ue}from"./vendor-primevue-DXXRO7Z5.js";import{a as de,c as fe,d as pe,f as me,i as he,l as ge,m as _e,n as ve,o as ye,p as be,r as xe,s as Se,t as Ce,u as we}from"./CuiLightControl-9OhT9YYt.js";import{t as Y}from"./sensorIcons-FPxm3pDg.js";var Te={disabled:!1,size:`medium`},Ee={class:`cui-measurement-info__header`},De={class:`cui-measurement-info__icon`},Oe={class:`cui-measurement-info__info`},ke={key:0,class:`cui-measurement-info__label`},Ae={class:`cui-measurement-info__value`},je=E(R({__name:`CuiMeasurementInfo`,props:K({type:{},unit:{},current:{},label:{},disabled:{type:Boolean},size:{}},Te),setup(e){let{type:t}=V(e),n=H(()=>Y(t.value));return(t,r)=>(O(),U(`div`,{class:F([`cui-measurement-info`,[`cui-measurement-info--${e.size}`,{"cui-measurement-info--disabled":e.disabled}]])},[L(`div`,Ee,[L(`div`,De,[(O(),M(A(I(n)),{class:`cui-measurement-info__icon-svg`}))]),L(`div`,Oe,[e.label?(O(),U(`span`,ke,q(e.label),1)):B(``,!0),L(`span`,Ae,q(e.current==null?`--`:`${e.current} ${e.unit}`),1)])])],2))}}),[[`__scopeId`,`data-v-3344cbd6`]]),Me={detected:!1,disabled:!1,size:`medium`},Ne={class:`cui-binary-sensor__header`},Pe={class:`cui-binary-sensor__icon`},Fe={class:`cui-binary-sensor__info`},Ie={key:0,class:`cui-binary-sensor__label`},Le=E(R({__name:`CuiBinarySensor`,props:K({type:{},detected:{type:Boolean},label:{},disabled:{type:Boolean},size:{}},Me),setup(e){let t=e,{t:n}=T(),{type:r,detected:i}=V(t),a=H(()=>Y(r.value)),o=H(()=>({color:`rgb(239, 68, 68)`,filter:`drop-shadow(0 0 6px rgba(239, 68, 68, 0.5))`})),s=H(()=>({color:`var(--text-secondary-color)`})),c=H(()=>i.value?`cui-binary-sensor__status--detected`:`cui-binary-sensor__status--clear`),l=H(()=>i.value?`cui-binary-sensor__indicator--detected`:`cui-binary-sensor__indicator--clear`);return(t,r)=>(O(),U(`div`,{class:F([`cui-binary-sensor`,[`cui-binary-sensor--${e.size}`,{"cui-binary-sensor--disabled":e.disabled,"cui-binary-sensor--clear":!I(i),"cui-binary-sensor--detected":I(i)}]])},[L(`div`,Ne,[L(`div`,Pe,[(O(),M(A(I(a)),{class:`cui-binary-sensor__icon-svg`,style:G(I(i)?I(o):I(s))},null,8,[`style`]))]),L(`div`,Fe,[e.label?(O(),U(`span`,Ie,q(e.label),1)):B(``,!0),L(`span`,{class:F([`cui-binary-sensor__status`,I(c)])},q(I(i)?I(n)(`components.binary_sensor.detected`):I(n)(`components.binary_sensor.clear`)),3)]),L(`div`,{class:F([`cui-binary-sensor__indicator`,I(l)])},null,2)])],2))}}),[[`__scopeId`,`data-v-c89ce8e7`]]),Re={detected:!1,size:`medium`},ze={class:`cui-detection-info__header`},Be={class:`cui-detection-info__icon`},Ve={class:`cui-detection-info__info`},He={key:0,class:`cui-detection-info__label`},Ue={key:0,class:`cui-detection-info__decibels`},We=E(R({__name:`CuiDetectionSensorInfo`,props:K({type:{},label:{},detected:{type:Boolean},labels:{},decibels:{},size:{}},Re),setup(e){let t=e,{t:n}=T(),r={color:`rgb(251, 146, 60)`,filter:`drop-shadow(0 0 8px rgba(251, 146, 60, 0.6))`},i=H(()=>{if(!t.detected)return n(`components.detection_sensor.idle`);let e=(t.labels??[]).filter(Boolean);return e.length?e.join(`, `):n(`components.detection_sensor.detected`)});return(t,n)=>(O(),U(`div`,{class:F([`cui-detection-info`,[`cui-detection-info--${e.size}`,{"cui-detection-info--active":e.detected}]])},[L(`div`,ze,[L(`div`,Be,[(O(),M(A(I(Y)(e.type)),{class:`cui-detection-info__icon-svg`,style:G(e.detected?r:void 0)},null,8,[`style`]))]),L(`div`,Ve,[e.label?(O(),U(`span`,He,q(e.label),1)):B(``,!0),L(`span`,{class:F([`cui-detection-info__status`,e.detected?`cui-detection-info__status--active`:`cui-detection-info__status--idle`])},q(I(i)),3)]),e.decibels===void 0?B(``,!0):(O(),U(`span`,Ue,q(Math.round(e.decibels))+` dB`,1)),L(`div`,{class:F([`cui-detection-info__indicator`,e.detected?`cui-detection-info__indicator--active`:`cui-detection-info__indicator--idle`])},null,2)])],2))}}),[[`__scopeId`,`data-v-f3272b7a`]]),X=new Set([r.Motion,r.Object,r.Audio,r.Face,r.LicensePlate,r.Classifier]),Z=new Set([r.Gas,r.CarbonMonoxide,r.Heat,r.Cold,r.Vibration,r.Tamper,r.Problem,r.Power]),Q=new Map([[r.Illuminance,`lx`],[r.CarbonDioxide,`ppm`]]),Ge=new Set([...X,...Z,...Q.keys(),r.Light,r.Switch,r.Lock,r.Siren,r.SecuritySystem,r.Garage,r.Doorbell,r.Contact,r.Occupancy,r.Smoke,r.Leak,r.Temperature,r.Humidity,r.Battery]);function Ke(e){return Ge.has(e)}var qe=R({__name:`CuiSensorControl`,props:{sensor:{},disabled:{type:Boolean}},setup(n){function v(e){return Z.has(e.type)}function T(e){return Q.get(e.type)}function E(e){return X.has(e.type)}function D(e){let t=e.getProperty(`detections`)??[];return[...new Set(t.map(e=>e.label??e.attribute).filter(e=>!!e))]}return(se,k)=>{let A=Ce,j=ve,N=xe,P=he,F=de,L=pe,R=ye,z=Se,V=fe,H=ge,U=we,W=me,G=be,K=_e,q=Le,J=je;return I(ne)(n.sensor)?(O(),M(A,{key:0,label:n.sensor.displayName.value,on:n.sensor.getProperty(I(_).On)??!1,brightness:n.sensor.getProperty(I(_).Brightness)??100,"has-brightness":n.sensor.hasCapability(`brightness`),disabled:n.disabled,size:`small`,class:`card-border`,"onUpdate:on":k[0]||=e=>n.sensor.setProperty(I(_).On,e),"onUpdate:brightness":k[1]||=e=>n.sensor.setProperty(I(_).Brightness,e)},null,8,[`label`,`on`,`brightness`,`has-brightness`,`disabled`])):I(f)(n.sensor)?(O(),M(j,{key:1,label:n.sensor.displayName.value,on:n.sensor.getProperty(I(S).On)??!1,disabled:n.disabled,size:`small`,class:`card-border`,"onUpdate:on":k[2]||=e=>n.sensor.setProperty(I(S).On,e)},null,8,[`label`,`on`,`disabled`])):I(te)(n.sensor)?(O(),M(N,{key:2,label:n.sensor.displayName.value,"current-state":n.sensor.getProperty(I(x).CurrentState)??2,"target-state":n.sensor.getProperty(I(x).TargetState)??0,disabled:n.disabled,size:`small`,class:`card-border`,"onUpdate:targetState":k[3]||=e=>n.sensor.setProperty(I(x).TargetState,e)},null,8,[`label`,`current-state`,`target-state`,`disabled`])):I(g)(n.sensor)?(O(),M(P,{key:3,label:n.sensor.displayName.value,active:n.sensor.getProperty(I(l).Active)??!1,volume:n.sensor.getProperty(I(l).Volume)??100,"has-volume":n.sensor.hasCapability(`volume`),disabled:n.disabled,size:`small`,class:`card-border`,"onUpdate:active":k[4]||=e=>n.sensor.setProperty(I(l).Active,e),"onUpdate:volume":k[5]||=e=>n.sensor.setProperty(I(l).Volume,e)},null,8,[`label`,`active`,`volume`,`has-volume`,`disabled`])):I(d)(n.sensor)?(O(),M(F,{key:4,label:n.sensor.displayName.value,"current-state":n.sensor.getProperty(I(b).CurrentState)??3,"target-state":n.sensor.getProperty(I(b).TargetState)??3,disabled:n.disabled,size:`small`,class:`card-border`,"onUpdate:targetState":k[6]||=e=>n.sensor.setProperty(I(b).TargetState,e)},null,8,[`label`,`current-state`,`target-state`,`disabled`])):I(e)(n.sensor)?(O(),M(L,{key:5,label:n.sensor.displayName.value,"current-state":n.sensor.getProperty(I(C).CurrentState)??1,"target-state":n.sensor.getProperty(I(C).TargetState)??1,"obstruction-detected":n.sensor.getProperty(I(C).ObstructionDetected)??!1,disabled:n.disabled,size:`small`,class:`card-border`,"onUpdate:targetState":k[7]||=e=>n.sensor.setProperty(I(C).TargetState,e)},null,8,[`label`,`current-state`,`target-state`,`obstruction-detected`,`disabled`])):I(s)(n.sensor)?(O(),M(R,{key:6,label:n.sensor.displayName.value,ring:n.sensor.getProperty(I(u).Ring)??!1,disabled:n.disabled,size:`small`,class:`card-border`,onTrigger:k[8]||=()=>n.sensor.setProperty(I(u).Ring,!0)},null,8,[`label`,`ring`,`disabled`])):I(a)(n.sensor)?(O(),M(z,{key:7,label:n.sensor.displayName.value,detected:n.sensor.getProperty(I(w).Detected)??!1,size:`small`,class:`card-border`},null,8,[`label`,`detected`])):I(re)(n.sensor)?(O(),M(V,{key:8,label:n.sensor.displayName.value,detected:n.sensor.getProperty(I(ae).Detected)??!1,size:`small`,class:`card-border`},null,8,[`label`,`detected`])):I(oe)(n.sensor)?(O(),M(H,{key:9,label:n.sensor.displayName.value,detected:n.sensor.getProperty(I(ee).Detected)??!1,size:`small`,class:`card-border`},null,8,[`label`,`detected`])):I(ie)(n.sensor)?(O(),M(U,{key:10,label:n.sensor.displayName.value,detected:n.sensor.getProperty(I(h).Detected)??!1,size:`small`,class:`card-border`},null,8,[`label`,`detected`])):I(m)(n.sensor)?(O(),M(W,{key:11,label:n.sensor.displayName.value,current:n.sensor.getProperty(I(y).Current),size:`small`,class:`card-border`},null,8,[`label`,`current`])):I(p)(n.sensor)?(O(),M(G,{key:12,label:n.sensor.displayName.value,current:n.sensor.getProperty(I(c).Current),size:`small`,class:`card-border`},null,8,[`label`,`current`])):I(o)(n.sensor)?(O(),M(K,{key:13,label:n.sensor.displayName.value,level:n.sensor.getProperty(I(i).Level)??100,charging:n.sensor.getProperty(I(i).Charging)??`NOT_CHARGING`,low:n.sensor.getProperty(I(i).Low)??!1,size:`small`,class:`card-border`},null,8,[`label`,`level`,`charging`,`low`])):v(n.sensor)?(O(),M(q,{key:14,type:n.sensor.type,label:n.sensor.displayName.value,detected:n.sensor.getProperty(`detected`)??!1,size:`small`,class:`card-border`},null,8,[`type`,`label`,`detected`])):T(n.sensor)?(O(),M(J,{key:15,type:n.sensor.type,label:n.sensor.displayName.value,current:n.sensor.getProperty(`current`)??void 0,unit:T(n.sensor),size:`small`,class:`card-border`},null,8,[`type`,`label`,`current`,`unit`])):E(n.sensor)?(O(),M(We,{key:16,type:n.sensor.type,label:n.sensor.displayName.value,detected:n.sensor.getProperty(`detected`)??!1,labels:D(n.sensor),decibels:n.sensor.type===I(r).Audio?n.sensor.getProperty(I(t).Decibels)??void 0:void 0,size:`small`,class:`card-border`},null,8,[`type`,`label`,`detected`,`labels`,`decibels`])):B(``,!0)}}}),Je={class:`flex flex-col gap-4 w-full`},$={key:0,class:`flex flex-col field-gap`},Ye={class:`cui-label`},Xe={class:`flex flex-col field-gap`},Ze={for:`sensorDisplayName`,class:`cui-label`},Qe={key:1,class:`flex flex-col field-gap`},$e={for:`sensorNativeId`,class:`cui-label`},et={class:`flex flex-col field-gap`},tt={class:`cui-label`},nt={key:0,class:`flex flex-wrap gap-2`},rt={key:2,class:`flex items-center gap-4 cui-toggle-switch`},it={class:`flex flex-col min-w-0`},at={class:`cui-label-switch`},ot={class:`text-xs text-muted`},st=R({__name:`SensorEdit`,props:{sensor:{},cameraOptions:{}},setup(e,{expose:t}){let r=e,i=W(r.sensor.displayName||r.sensor.name),a=W([...r.sensor.assignedCameraIds]),o=W(r.sensor.exposed),{sensors:s}=v(),c=H(()=>D(void 0,`admin`)),l=H(()=>r.cameraOptions.filter(e=>r.sensor.assignedCameraIds.includes(e.value))),u=H(()=>Ke(r.sensor.type)),d=H(()=>s.value.find(e=>e.id===r.sensor.id));return t({onConfirm:async()=>({displayName:i.value||r.sensor.name,assignedCameraIds:a.value,exposed:o.value})}),(t,r)=>{let s=ue,f=n,p=ce,m=le,h=J;return O(),U(`div`,Je,[I(u)?(O(),U(`div`,$,[L(`label`,Ye,q(t.$t(`views.sensors.control`)),1),I(d)?(O(),M(qe,{key:0,sensor:I(d),disabled:!I(c)},null,8,[`sensor`,`disabled`])):(O(),M(s,{key:1,severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:j(()=>[N(q(t.$t(`views.sensors.control_offline`)),1)]),_:1}))])):B(``,!0),L(`div`,Xe,[L(`label`,Ze,q(t.$t(`components.camera_options.sensor_display_name`)),1),P(f,{id:`sensorDisplayName`,modelValue:I(i),"onUpdate:modelValue":r[0]||=e=>z(i)?i.value=e:null,modelModifiers:{trim:!0},class:`w-full`},null,8,[`modelValue`])]),e.sensor.nativeId?(O(),U(`div`,Qe,[L(`label`,$e,q(t.$t(`views.sensors.native_id`)),1),P(f,{id:`sensorNativeId`,"model-value":e.sensor.nativeId,readonly:``,class:`w-full font-mono text-sm`},null,8,[`model-value`])])):B(``,!0),L(`div`,et,[L(`label`,tt,q(t.$t(`views.sensors.assigned_cameras`)),1),e.sensor.assignmentLocked?(O(),U(`div`,nt,[(O(!0),U(se,null,k(I(l),e=>(O(),M(p,{key:e.value,label:e.label},null,8,[`label`]))),128))])):(O(),M(m,{key:1,modelValue:I(a),"onUpdate:modelValue":r[1]||=e=>z(a)?a.value=e:null,options:e.cameraOptions,"option-label":`label`,"option-value":`value`,placeholder:t.$t(`views.sensors.assigned_cameras_placeholder`),class:`w-full`},null,8,[`modelValue`,`options`,`placeholder`])),P(s,{severity:`secondary`,variant:`simple`,size:`small`,class:`cui-input-hint`},{default:j(()=>[N(q(e.sensor.assignmentLocked?t.$t(`views.sensors.assigned_cameras_locked_hint`):t.$t(`views.sensors.assigned_cameras_hint`)),1)]),_:1})]),e.sensor.cameraBound?B(``,!0):(O(),U(`div`,rt,[L(`div`,it,[L(`label`,at,q(t.$t(`views.sensors.exposed`)),1),L(`span`,ot,q(t.$t(`views.sensors.exposed_hint`)),1)]),P(h,{modelValue:I(o),"onUpdate:modelValue":r[2]||=e=>z(o)?o.value=e:null,class:`ml-auto shrink-0`},null,8,[`modelValue`])]))])}}});export{st as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{K as e,zr as t}from"./vendor-cameraui-
|
|
1
|
+
import{K as e,zr as t}from"./vendor-cameraui-ZyqPntQ7.js";import{$t as n,An as r,Mn as i,Pn as a,fn as o,hr as s,in as c,mn as l,sn as u,sr as d,yr as f}from"./vendor-AX0A8AMd.js";import{n as p}from"./sensors-Bshdwbki.js";import{t as m}from"./history-F0qTKQGT.js";var h={class:`flex flex-col gap-2 w-full min-h-[200px] max-h-[60vh] overflow-y-auto`},g={key:0,class:`flex flex-col gap-2`},_={class:`flex flex-col flex-1 min-w-0`},v={class:`text-sm font-medium truncate`},y={class:`text-xs text-muted`},b={class:`text-sm font-mono shrink-0`},x={key:2,class:`flex flex-1 flex-col items-center justify-center gap-3 py-10`},S={class:`text-muted text-sm`},C=l({__name:`SensorHistory`,props:{sensorId:{},sensorType:{}},setup(l){let C=l,{t:w,te:T}=t(),E=d([]),D=d(!0);r(async()=>{try{E.value=await p({id:C.sensorId})}catch{E.value=[]}finally{D.value=!1}});function O(e){let t=`components.automation_nodes.sensor_property_${e}`;return T(t)?w(t):e}function k(e){return e==null?`–`:String(e)}function A(e){return new Date(e).toLocaleString()}return(t,r)=>{let l=e,d=m;return i(),u(`div`,h,[s(D)?(i(),u(`div`,g,[(i(),u(n,null,a(6,e=>o(l,{key:e,height:`40px`,class:`rounded-md`})),64))])):s(E).length?(i(!0),u(n,{key:1},a(s(E),(e,t)=>(i(),u(`div`,{key:t,class:`flex items-center gap-3 p-2 rounded-md border-color`},[c(`div`,_,[c(`span`,v,f(O(e.property)),1),c(`span`,y,f(A(e.timestamp)),1)]),c(`span`,b,f(k(e.value)),1)]))),128)):(i(),u(`div`,x,[o(d,{class:`w-10 h-10 text-muted`}),c(`span`,S,f(t.$t(`views.sensors.history_empty`)),1)]))])}}});export{C as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./SensorEdit-
|
|
2
|
-
import{B as e,Bt as t,F as n,Fr as r,G as ee,Oi as i,Pt as te,Rt as ne,Wt as re,mt as ie,zr as a}from"./vendor-cameraui-OySaGjmo.js";import{An as ae,B as oe,Bn as se,I as o,It as ce,L as le,Mn as ue,Qn as de,ct as fe,jn as pe,kn as s,lt as c,mn as me,pr as l,xn as he,xr as ge,z as _e}from"./api-ou2-S3Z9.js";import{$t as ve,An as u,J as d,Kn as f,Mn as p,Qn as m,Qt as h,Rn as ye,Rt as g,Wn as be,Xn as _,Yn as v,an as y,ar as xe,dn as b,fn as x,gr as S,hr as C,in as w,jn as Se,mn as T,nr as Ce,on as E,or as D,rn as O,sn as k,sr as A,vr as we,yr as j}from"./vendor-AX0A8AMd.js";import{p as M}from"./vendor-core-BZ52eUwC.js";import{F as Te,P as Ee,S as De,T as Oe}from"./vendor-primevue-CvHDsVi_.js";import{t as ke}from"./close-ChGy_BeH.js";import{t as Ae}from"./sensors-ud0INKWh.js";import{t as je}from"./trash-can-outline-_aiv_oEu.js";import{t as Me}from"./CuiDataTable-BDyku8Vr.js";import{t as Ne}from"./history-F0qTKQGT.js";import{t as Pe}from"./ring-resize-DsW_XYdA.js";import{t as Fe}from"./search-Ck7b7yvI.js";import{n as Ie,t as Le}from"./sensorIcons-tORVN7ay.js";import{t as Re}from"./back-filled-MAIFvJqE.js";import{t as ze}from"./plus-Ct9djYce.js";import{t as Be}from"./settings-Bw6giVLH.js";import{t as Ve}from"./radar-8nK_pSbi.js";import{t as He}from"./eye-off-outline-Bj1tXD9w.js";var N=5e3,P=xe({isLoading:!0,sensors:[],isScanning:!1,error:null}),F=null,I=null,L=!1,R=0,z=null;function Ue(){P.isLoading=!0,P.sensors=[],P.isScanning=!1,P.error=null}function B(){return I||(F=m(!0),F.run(()=>{let e=l(`/sensors`);I=e,e.onReady(()=>{V()}),f(e.connected,(e,t)=>{!e&&t&&(L=!1)}),e.on(`sensors:discovered`,e=>{P.sensors=[...P.sensors.filter(t=>t.pluginId!==e.source),...e.sensors]}),e.on(`sensors:scanning`,e=>{P.isScanning=e.isScanning}),e.on(`sensors:adopted`,e=>{P.sensors=P.sensors.filter(t=>t.pluginId!==e.pluginId||t.id!==e.id)})}),I)}async function V(){if(!I||L)return{success:L,sensors:P.sensors,isScanning:P.isScanning};try{let e=await I.request(`sensors:subscribe`,{});return L=e.success,e.sensors&&(P.sensors=e.sensors),e.isScanning!==void 0&&(P.isScanning=e.isScanning),P.isLoading=!1,e}catch(e){return P.isLoading=!1,P.error=e instanceof Error?e.message:`subscribe failed`,{success:!1}}}async function H(){if(!I||!L)return{success:!0};try{let e=await I.request(`sensors:unsubscribe`,{});return L=!e.success,e}catch{return{success:!1}}}function U(){L&&H(),F?.stop(),F=null,I=null,L=!1,Ue()}function We(){z&&=(clearTimeout(z),null),R++;function e(){B(),I?.connected.value&&!L&&V()}function t(){L&&H()}async function n(){if(!I?.ready.value)return{success:!1,error:`Not connected`};P.sensors=[],P.isScanning=!0;try{let e=await I.request(`sensors:rescan`,{});return e.success||(P.isScanning=!1),e}catch(e){return P.isScanning=!1,{success:!1,error:e instanceof Error?e.message:`rescan failed`}}}async function r(e){if(!I?.ready.value)return{success:!1,error:`Not connected`};let{pluginId:t,pluginName:n,...r}=e;try{return await I.request(`sensors:adopt`,{pluginId:t,sensor:r})}catch(e){return{success:!1,error:e instanceof Error?e.message:`adopt failed`}}}let ee=O(()=>[...P.sensors].sort((e,t)=>e.name.localeCompare(t.name)));return i(()=>{R--,!(R>0)&&(R=0,z=setTimeout(()=>{R<=0&&(U(),z=null)},N))}),{state:D(P),isConnected:O(()=>I?.connected.value??!1),isLoading:O(()=>P.isLoading),sensors:O(()=>P.sensors),isScanning:O(()=>P.isScanning),error:O(()=>P.error),sortedSensors:ee,connect:e,disconnect:t,subscribe:V,unsubscribe:H,forceRescan:n,adoptSensor:r}}var Ge={class:`flex flex-col`},Ke={key:0,class:`page-title`},qe={class:`flex gap-2 mb-4`},Je={key:1,class:`flex flex-1 min-h-0 flex-col items-center justify-center w-full gap-4 py-16`},Ye={key:2,class:`flex flex-1 min-h-0 flex-col items-center justify-center w-full gap-4 py-20`},Xe={class:`text-muted text-sm`},Ze={key:3,class:`flex min-h-0 flex-col`},Qe={class:`card-title`},$e={class:`flex items-center justify-center`},et={class:`flex items-center gap-2 min-w-0`},tt={class:`flex flex-col min-w-0`},nt={class:`flex items-center gap-2 min-w-0`},rt={class:`font-bold text-color truncate`},it={key:0,class:`text-xs text-muted truncate`},at={key:1,class:`text-xs text-muted truncate font-mono`},ot={key:0,class:`text-xs text-muted truncate font-mono block`},st={key:1,class:`text-xs text-muted`},ct={class:`text-xs text-muted whitespace-nowrap`},lt={class:`flex items-center justify-center gap-1 min-w-0`},ut={class:`flex items-center justify-end gap-1`},dt={key:0,class:`shrink-0`},ft={key:4,class:`flex min-h-0 flex-col mt-6`},pt={class:`card-title`},mt={class:`flex items-center justify-center`},ht={class:`flex items-center gap-2 min-w-0`},gt={class:`flex flex-col min-w-0`},_t={class:`font-bold text-color truncate`},vt={class:`text-xs text-muted truncate font-mono`},yt={class:`text-xs text-muted whitespace-nowrap`},bt={key:1,class:`flex flex-col items-center justify-center py-6 gap-2`},xt={class:`text-muted text-sm`},St={class:`flex flex-wrap items-center gap-2 mt-4`},Ct=s(T({__name:`Sensors`,setup(i){let s=c(()=>g(()=>import(`./SensorEdit-CcD4LvZr.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]),import.meta.url)),l=c(()=>g(()=>import(`./SensorHistory-5nCWisih.js`),__vite__mapDeps([22,1,2,3,23,4,5,6,7,8,9,10,11,12,13,14,24]),import.meta.url)),m=c(()=>g(()=>import(`./VirtualSensorCreate-CSzlXcHk.js`),__vite__mapDeps([25,1,2,3,4,5,6,7,8,9,10,11,12,13,14]),import.meta.url)),xe={color:`rgb(251, 146, 60)`,filter:`drop-shadow(0 0 6px rgba(251, 146, 60, 0.6))`},T=new Set([r.Motion,r.Object,r.Audio,r.Face,r.LicensePlate,r.Classifier,r.Contact,r.Occupancy,r.Smoke,r.Leak,r.Gas,r.CarbonMonoxide,r.Heat,r.Cold,r.Vibration,r.Tamper,r.Problem,r.Power]),D=new Ae,N=new ce,P=fe(),F=We(),I=d(),L=ge(),{t:R}=a(),{smBreakpoint:z}=ue(),Ue=se(),{uiSettings:B}=M(Ue),{sensors:V}=ie(),{data:H,isBusy:U}=D.getSensorsQuery(),{data:Ct}=N.getCamerasQuery({page:1,pageSize:-1}),{mutateAsync:wt,isPending:Tt}=D.createVirtualSensorQuery(),{mutateAsync:Et}=D.patchSensorQuery(),{mutateAsync:Dt,isPending:Ot}=D.deleteSensorQuery(),{mutateAsync:kt}=D.bulkDeleteSensorsQuery(),At={bodyRow:{class:`text-sm text-secondary`},column:{columnTitle:{class:`text-sm`}},datatable:{class:`z-0`}},jt=be(`menuRef`),W=A(``),G=A(!1),K=O(()=>he(void 0,`admin`)),q=O(()=>H.value??[]),Mt=O(()=>q.value.filter(e=>e.assignmentLocked).length),Nt=O(()=>[{key:`hideCameraBound`,label:R(`views.sensors.hide_camera_bound`),description:R(`views.sensors.hide_camera_bound_hint`),badge:Mt.value?String(Mt.value):void 0,toggle:!0,toggleState:B.value.sensors.hideCameraBound,onClick:()=>B.value.sensors.hideCameraBound=!B.value.sensors.hideCameraBound}]),Pt=O(()=>(Ct.value?.result??[]).map(e=>({label:e.name,value:e._id}))),J=O(()=>{let e=W.value.toLowerCase().trim();return q.value.map(e=>({sensor:e,label:e.displayName||e.name,typeLabel:R(`components.camera_options.sensor_type_${e.type}`),nativeLabel:e.nativeId??``,pluginLabel:e.virtual?R(`views.sensors.owner_virtual`):e.pluginName,assignedLabel:e.assignedCameraIds.map(e=>Pt.value.find(t=>t.value===e)?.label).filter(Boolean).join(`, `)})).filter(e=>!B.value.sensors.hideCameraBound||!e.sensor.assignmentLocked).filter(t=>!e||[t.label,t.typeLabel,t.nativeLabel,t.pluginLabel,t.assignedLabel].some(t=>t.toLowerCase().includes(e))).sort((e,t)=>e.label.localeCompare(t.label))}),Y=O(()=>F.isScanning.value),X=O(()=>{let e=W.value.toLowerCase().trim();return F.sortedSensors.value.filter(t=>!e||[t.name,t.id,t.pluginName,t.room??``].some(t=>t.toLowerCase().includes(e)))}),Ft=O(()=>new Map(V.value.map(e=>[e.id,e]))),{selectionMode:Z,selectedIds:It,selectedItems:Lt,allSelected:Rt,bulkBusy:Q,enterSelectionMode:zt,exitSelectionMode:Bt,toggleSelectAll:Vt,toggleSelection:Ht}=o(()=>J.value,e=>e.sensor.id),Ut=O(()=>Lt.value.filter(e=>$(e.sensor)));function Wt(e){P.openTextDialog({data:{title:R(`views.sensors.adopt_title`),contentText:R(`views.sensors.adopt_confirm`,{name:e.name,plugin:e.pluginName}),confirmText:R(`components.form.button.add`),loading:G},onConfirm:async()=>{G.value=!0;try{let t=await F.adoptSensor(e);if(!t.success){L.add({severity:`error`,summary:R(`views.sensors.adopt_title`),detail:t.error,life:3e3});return}await I.refetchQueries({queryKey:[`sensorsList`]}),L.add({severity:`success`,detail:R(`views.sensors.adopted`,{name:e.name}),life:3e3})}finally{G.value=!1}}})}async function Gt(){let e=await F.forceRescan();e.success||L.add({severity:`error`,summary:R(`views.sensors.rescan`),detail:e.error,life:3e3})}function Kt(e){let t=Ft.value.get(e.id),n=n=>t?t.getProperty(n):e.properties?.[n];switch(e.type){case r.Light:case r.Switch:return!!n(`on`);case r.Siren:return!!n(`active`);case r.Doorbell:return!!n(`ring`);case r.Garage:case r.Lock:return n(`currentState`)===0;case r.SecuritySystem:return n(`currentState`)===4;case r.Battery:return!!n(`low`);default:return T.has(String(e.type))&&!!n(`detected`)}}function $(e){return e.virtual||!e.connected}function qt(e){if(Z.value){Ht(e.sensor.id);return}K.value&&P.openComponentDialog(s,{data:{title:e.label,confirmText:R(`components.form.button.save`),contentProps:{sensor:e.sensor,cameraOptions:Pt.value}},onConfirm:async t=>{t&&await Et({id:e.sensor.id,data:t})}})}function Jt(e){P.openComponentDialog(l,{data:{title:`${e.displayName||e.name} · ${R(`views.sensors.history`)}`,hideConfirmButton:!0,contentProps:{sensorId:e.id,sensorType:String(e.type)}}})}function Yt(e,t,n){t.length&&L.add({severity:`error`,summary:R(`views.sensors.bulk_failed`,{count:t.length}),detail:t.join(`, `),life:8e3}),e&&L.add({severity:`success`,detail:R(n,{count:e}),life:5e3})}function Xt(){let e=[...Ut.value];P.openTextDialog({data:{title:R(`components.dialog.title.confirm`),contentText:R(`views.sensors.delete_selected_confirm`,{count:e.length}),confirmText:R(`components.form.button.remove`),confirmButtonProps:{severity:`danger`}},onConfirm:async()=>{Q.value=!0;try{let{skipped:t}=await kt({ids:e.map(e=>e.sensor.id)}),n=e.filter(e=>t.includes(e.sensor.id)).map(e=>e.label);Bt(),Yt(e.length-n.length,n,`views.sensors.delete_selected_done`)}finally{Q.value=!1}}})}function Zt(){P.openComponentDialog(m,{data:{title:R(`views.sensors.create_virtual`),confirmText:R(`components.form.button.save`),loading:Tt,contentProps:{}},onConfirm:async e=>{e&&await wt({data:e})}})}function Qt(e){P.openTextDialog({data:{title:R(`views.sensors.delete`),contentText:R(`views.sensors.delete_confirm`),confirmText:R(`components.form.button.remove`),loading:Ot,confirmButtonProps:{severity:`danger`}},onConfirm:async()=>{await Dt({id:e.id})}})}return f(Y,(e,t)=>{t&&!e&&I.refetchQueries({queryKey:[`sensorsList`]})}),u(()=>{K.value&&F.connect()}),Se(()=>{K.value&&F.unsubscribe()}),(r,i)=>{let ie=Re,a=ne,se=oe,o=Fe,ce=Ee,ue=n,fe=Te,s=Be,c=me,l=te,he=de,ge=e,u=De,d=t,f=He,m=Oe,g=Ie,be=Ne,Se=je,T=Me,D=ee,O=Pe,A=Ve,M=ae,Ae=pe,N=re;return p(),k(`div`,Ge,[C(z)?E(``,!0):(p(),k(`h1`,Ke,j(C(R)(`views.sensors.title`)),1)),x(se,{position:`left`},{default:v(()=>[x(a,{severity:`secondary`,text:``,class:`cui-button p-2 text-color non-draggable-region`,onClick:i[0]||=e=>r.$router.push(`/menu`)},{icon:v(()=>[x(ie,{class:`w-6 h-6`})]),_:1})]),_:1}),w(`div`,qe,[x(fe,{class:`flex-1`},{default:v(()=>[x(ce,null,{default:v(()=>[x(o,{class:`w-4 h-4`})]),_:1}),x(ue,{modelValue:C(W),"onUpdate:modelValue":i[1]||=e=>Ce(W)?W.value=e:null,placeholder:C(R)(`views.sensors.search`),class:`w-full`},null,8,[`modelValue`,`placeholder`])]),_:1}),_((p(),y(a,{severity:`secondary`,outlined:``,class:`cui-button shrink-0`,onClick:i[2]||=e=>C(jt)?.toggleMenu(e)},{icon:v(()=>[x(s,{class:`w-4.5 h-4.5`})]),_:1})),[[N,{value:C(R)(`views.sensors.settings`)},void 0,{left:!0}]]),x(c,{ref_key:`menuRef`,ref:jt,items:C(Nt),"auto-hide":!1,popover:{pt:{root:{class:`w-[22rem]`},content:{class:`p-0! rounded-xl! overflow-hidden!`}}}},null,8,[`items`])]),C(U)?(p(),k(`div`,Je,[x(l,{"stroke-width":`5`,class:`w-[30px] h-[30px]`})])):!C(J).length&&!C(X).length&&!C(Y)?(p(),k(`div`,Ye,[x(he,{class:`w-12 h-12 text-muted`}),w(`span`,Xe,j(C(q).length?C(R)(`views.sensors.no_matches`):C(R)(`views.sensors.no_sensors`)),1)])):C(J).length?(p(),k(`div`,Ze,[w(`span`,Qe,j(C(R)(`views.sensors.adopted_title`)),1),x(D,{class:`cui-card`},{content:v(()=>[x(T,{value:C(J),"striped-rows":``,pt:At,class:`w-full`,onRowClick:i[4]||=e=>qt(e.data)},{default:v(()=>[C(Z)?(p(),y(u,{key:0,header:``,"header-class":`p-2 pl-4 w-8 max-w-8`,class:`p-2 pl-4 w-8 max-w-8`},{body:v(({data:e})=>[x(ge,{"model-value":C(It).has(e.sensor.id),binary:``,size:`small`,onClick:i[3]||=h(()=>{},[`stop`]),"onUpdate:modelValue":t=>C(Ht)(e.sensor.id)},null,8,[`model-value`,`onUpdate:modelValue`])]),_:1})):E(``,!0),x(u,{header:``,"header-class":`p-2 pl-4 w-5 max-w-5`,class:`p-2 pl-4 w-5 max-w-5`},{body:v(({data:e})=>[w(`div`,$e,[_(x(d,{style:we({background:e.sensor.connected?`green`:`gray`})},null,8,[`style`]),[[N,{value:e.sensor.connected?C(R)(`views.sensors.connected`):C(R)(`views.sensors.disconnected`)}]])])]),_:1}),x(u,{field:`label`,header:C(R)(`views.sensors.name`),sortable:``,"header-class":`p-2`,class:`p-2 w-[40%] min-w-[180px] max-w-0`},{body:v(({data:e})=>[w(`div`,et,[(p(),y(ye(C(Le)(e.sensor.type)),{class:S([`w-5 h-5 shrink-0 transition-colors`,{"text-muted":!Kt(e.sensor)}]),style:we(Kt(e.sensor)?xe:void 0)},null,8,[`class`,`style`])),w(`div`,tt,[w(`div`,nt,[_((p(),k(`span`,rt,[b(j(e.label),1)])),[[N,e.label]]),e.sensor.exposed?E(``,!0):_((p(),y(f,{key:0,class:`w-4 h-4 shrink-0 text-muted`},null,512)),[[N,C(R)(`views.sensors.not_exposed`)]])]),C(z)?(p(),k(`span`,it,j(e.typeLabel)+` · `+j(e.pluginLabel),1)):E(``,!0),C(z)&&e.nativeLabel?_((p(),k(`span`,at,[b(j(e.nativeLabel),1)])),[[N,e.nativeLabel]]):E(``,!0)])])]),_:1},8,[`header`]),C(z)?E(``,!0):(p(),y(u,{key:1,field:`nativeLabel`,header:C(R)(`views.sensors.native_id`),sortable:``,"header-class":`p-2 whitespace-nowrap cui-col-center`,class:`p-2 w-[28%] min-w-[160px] max-w-0 text-center`},{body:v(({data:e})=>[e.nativeLabel?_((p(),k(`span`,ot,[b(j(e.nativeLabel),1)])),[[N,e.nativeLabel]]):(p(),k(`span`,st,`—`))]),_:1},8,[`header`])),C(z)?E(``,!0):(p(),y(u,{key:2,field:`typeLabel`,header:C(R)(`views.sensors.type`),sortable:``,"header-class":`p-2 whitespace-nowrap cui-col-center`,class:`p-2 whitespace-nowrap text-center`},{body:v(({data:e})=>[w(`span`,ct,j(e.typeLabel),1)]),_:1},8,[`header`])),C(z)?E(``,!0):(p(),y(u,{key:3,field:`pluginLabel`,header:C(R)(`views.sensors.plugin`),sortable:``,"header-class":`p-2 whitespace-nowrap cui-col-center`,class:`p-2 whitespace-nowrap text-center`},{body:v(({data:e})=>[x(m,{label:e.pluginLabel,class:`text-xs whitespace-nowrap`},null,8,[`label`])]),_:1},8,[`header`])),x(u,{field:`assignedLabel`,header:C(R)(`views.sensors.assigned_cameras`),sortable:``,"header-class":`p-2 whitespace-nowrap cui-col-center`,class:`p-2 min-w-[140px] text-center`},{body:v(({data:e})=>[w(`div`,lt,[e.sensor.assignmentLocked?_((p(),y(g,{key:0,class:`w-3.5 h-3.5 shrink-0 text-muted`},null,512)),[[N,C(R)(`views.sensors.assigned_cameras_locked_hint`)]]):E(``,!0),w(`span`,{class:S([`text-xs truncate`,e.assignedLabel?`text-muted`:`text-muted italic`])},j(e.assignedLabel||C(R)(`views.sensors.unassigned`)),3)])]),_:1},8,[`header`]),x(u,{header:``,"header-class":`p-2 pr-4 w-28`,class:`p-2 pr-4 w-28`},{body:v(({data:e})=>[w(`div`,ut,[_((p(),y(a,{text:``,rounded:``,severity:`secondary`,class:`cui-icon-sm shrink-0`,onClick:h(t=>Jt(e.sensor),[`stop`])},{icon:v(()=>[x(be,{width:`100%`,height:`100%`})]),_:1},8,[`onClick`])),[[N,C(R)(`views.sensors.history`),void 0,{left:!0}]]),C(K)?_((p(),k(`span`,dt,[x(a,{text:``,rounded:``,severity:`danger`,class:`cui-icon-sm`,disabled:!$(e.sensor),onClick:h(t=>Qt(e.sensor),[`stop`])},{icon:v(()=>[x(Se,{width:`100%`,height:`100%`})]),_:1},8,[`disabled`,`onClick`])])),[[N,$(e.sensor)?C(R)(`views.sensors.delete`):C(R)(`views.sensors.delete_connected`),void 0,{left:!0}]]):E(``,!0)])]),_:1})]),_:1},8,[`value`])]),_:1})])):E(``,!0),C(K)&&!C(U)?(p(),k(`div`,ft,[w(`span`,pt,j(C(R)(`views.sensors.discovered_title`)),1),x(D,{class:`cui-card`},{content:v(()=>[C(X).length?(p(),y(T,{key:0,value:C(X),"striped-rows":``,pt:At,class:S([`w-full`,{"opacity-60 pointer-events-none":C(G)}]),onRowClick:i[5]||=e=>Wt(e.data)},{default:v(()=>[x(u,{header:``,"header-class":`p-2 pl-4 w-5 max-w-5`,class:`p-2 pl-4 w-5 max-w-5`},{body:v(()=>[w(`div`,mt,[_(x(d,{style:{background:`orange`}},null,512),[[N,{value:C(R)(`views.sensors.status_discovered`)}]])])]),_:1}),x(u,{field:`name`,header:C(R)(`views.sensors.name`),sortable:``,"header-class":`p-2`,class:`p-2 w-full min-w-[200px] max-w-0`},{body:v(({data:e})=>[w(`div`,ht,[(p(),y(ye(C(Le)(e.type)),{class:`w-5 h-5 shrink-0 text-muted`})),w(`div`,gt,[_((p(),k(`span`,_t,[b(j(e.name),1)])),[[N,e.name]]),_((p(),k(`span`,vt,[b(j(e.id),1)])),[[N,e.id]])])])]),_:1},8,[`header`]),C(z)?E(``,!0):(p(),y(u,{key:0,field:`type`,header:C(R)(`views.sensors.type`),sortable:``,"header-class":`p-2 whitespace-nowrap`,class:`p-2 whitespace-nowrap`},{body:v(({data:e})=>[w(`span`,yt,j(C(R)(`components.camera_options.sensor_type_${e.type}`)),1)]),_:1},8,[`header`])),C(z)?E(``,!0):(p(),y(u,{key:1,field:`room`,header:C(R)(`components.form.label.room`),sortable:``,"header-class":`p-2 whitespace-nowrap`,class:`p-2 whitespace-nowrap`},{body:v(({data:e})=>[e.room?(p(),y(m,{key:0,label:e.room,class:`text-xs whitespace-nowrap`},null,8,[`label`])):E(``,!0)]),_:1},8,[`header`])),x(u,{field:`pluginName`,header:C(R)(`views.sensors.plugin`),sortable:``,"header-class":`p-2 pr-4 whitespace-nowrap`,class:`p-2 pr-4 whitespace-nowrap`},{body:v(({data:e})=>[x(m,{label:e.pluginName,class:`text-xs whitespace-nowrap`},null,8,[`label`])]),_:1},8,[`header`])]),_:1},8,[`value`,`class`])):(p(),k(`div`,bt,[C(Y)?(p(),y(O,{key:0,width:`24px`,height:`24px`,class:`text-muted`})):(p(),y(A,{key:1,width:`32px`,height:`32px`,class:`text-muted`})),w(`span`,xt,j(C(Y)?C(R)(`views.sensors.scanning`):C(R)(`views.sensors.no_discovered`)),1)])),w(`div`,St,[i[6]||=w(`div`,{class:`ml-auto`},null,-1),x(a,{severity:`secondary`,class:`cui-button-medium`,label:C(R)(`views.sensors.rescan`),loading:C(Y),onClick:Gt},null,8,[`label`,`loading`])])]),_:1})])):E(``,!0),C(K)?(p(),y(Ae,{key:5,"force-visible":C(Z)},{default:v(()=>[C(Z)?(p(),k(ve,{key:1},[x(M,{grouped:``,"tooltip-props":{value:r.$t(`components.form.tooltip.cancel_selection`)},"button-props":{severity:`secondary`},icon:C(ke),"icon-props":{width:`100%`,height:`100%`},onClick:C(Bt)},null,8,[`tooltip-props`,`icon`,`onClick`]),x(M,{grouped:``,"tooltip-props":{value:r.$t(`components.form.tooltip.select_all`)},"button-props":{severity:C(Rt)?`primary`:`secondary`},icon:C(_e),"icon-props":{width:`100%`,height:`100%`},onClick:C(Vt)},null,8,[`tooltip-props`,`button-props`,`icon`,`onClick`]),x(M,{grouped:``,"tooltip-props":{value:C(R)(`views.sensors.delete_selected`)},"button-props":{severity:`danger`,disabled:!C(Ut).length||C(Q)},icon:C(je),"icon-props":{width:`100%`,height:`100%`},onClick:Xt},null,8,[`tooltip-props`,`button-props`,`icon`])],64)):(p(),k(ve,{key:0},[C(J).length?(p(),y(M,{key:0,grouped:``,"tooltip-props":{value:C(R)(`views.sensors.select`)},"button-props":{severity:`secondary`},icon:C(le),"icon-props":{width:`100%`,height:`100%`},onClick:C(zt)},null,8,[`tooltip-props`,`icon`,`onClick`])):E(``,!0),x(M,{grouped:``,"tooltip-props":{value:C(R)(`views.sensors.create_virtual`)},"button-props":{class:`text-white`},icon:C(ze),"icon-props":{width:`30px`,height:`30px`},onClick:Zt},null,8,[`tooltip-props`,`icon`])],64))]),_:1},8,[`force-visible`])):E(``,!0)])}}}),[[`__scopeId`,`data-v-c2e0b31d`]]);export{Ct as default};
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./SensorEdit-C9Ejdxaz.js","./vendor-cameraui-ZyqPntQ7.js","./rolldown-runtime-C0FnF6B9.js","./vendor-AX0A8AMd.js","./api-2VPaKkqc.js","./intercomService-Bjn0OsVT.js","./vendor-zod-B0ZFM2Pr.js","./types-BHgaZSm2.js","./lightbulb-outline-BtraGBwO.js","./vendor-core-DN-bpg68.js","./vendor-primevue-DXXRO7Z5.js","./vendor-dnd-onyWAbsd.js","./close-ChGy_BeH.js","./vendor-draggabilly-B7q3Src-.js","./api-CEbDxsSY.css","./CuiLightControl-9OhT9YYt.js","./bell-ring-DBCDVZQy.js","./home-DEKGoPL_.js","./cube-scan-BR5la6Qx.js","./CuiLightControl-DFrZm_sv.css","./sensorIcons-FPxm3pDg.js","./SensorEdit-ono85O3c.css","./SensorHistory-B16b4-Um.js","./sensors-Bshdwbki.js","./history-F0qTKQGT.js","./VirtualSensorCreate-3mJ8c6Tl.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{B as e,Bt as t,F as n,Fr as r,G as ee,Oi as i,Pt as te,Rt as ne,Wt as re,mt as ie,zr as a}from"./vendor-cameraui-ZyqPntQ7.js";import{An as ae,B as oe,Bn as se,I as o,It as ce,L as le,Mn as ue,Qn as de,ct as fe,jn as pe,kn as s,lt as c,mn as me,pr as l,xn as he,xr as ge,z as _e}from"./api-2VPaKkqc.js";import{$t as ve,An as u,J as d,Kn as f,Mn as p,Qn as m,Qt as h,Rn as ye,Rt as g,Wn as be,Xn as _,Yn as v,an as y,ar as xe,dn as b,fn as x,gr as S,hr as C,in as w,jn as Se,mn as T,nr as Ce,on as E,or as D,rn as O,sn as k,sr as A,vr as we,yr as j}from"./vendor-AX0A8AMd.js";import{p as M}from"./vendor-core-DN-bpg68.js";import{F as Te,P as Ee,S as De,T as Oe}from"./vendor-primevue-DXXRO7Z5.js";import{t as ke}from"./close-ChGy_BeH.js";import{t as Ae}from"./sensors-Bshdwbki.js";import{t as je}from"./trash-can-outline-_aiv_oEu.js";import{t as Me}from"./CuiDataTable-f_QVzRqq.js";import{t as Ne}from"./history-F0qTKQGT.js";import{t as Pe}from"./ring-resize-DsW_XYdA.js";import{t as Fe}from"./search-Ck7b7yvI.js";import{n as Ie,t as Le}from"./sensorIcons-FPxm3pDg.js";import{t as Re}from"./back-filled-MAIFvJqE.js";import{t as ze}from"./plus-Ct9djYce.js";import{t as Be}from"./settings-Bw6giVLH.js";import{t as Ve}from"./radar-8nK_pSbi.js";import{t as He}from"./eye-off-outline-Bj1tXD9w.js";var N=5e3,P=xe({isLoading:!0,sensors:[],isScanning:!1,error:null}),F=null,I=null,L=!1,R=0,z=null;function Ue(){P.isLoading=!0,P.sensors=[],P.isScanning=!1,P.error=null}function B(){return I||(F=m(!0),F.run(()=>{let e=l(`/sensors`);I=e,e.onReady(()=>{V()}),f(e.connected,(e,t)=>{!e&&t&&(L=!1)}),e.on(`sensors:discovered`,e=>{P.sensors=[...P.sensors.filter(t=>t.pluginId!==e.source),...e.sensors]}),e.on(`sensors:scanning`,e=>{P.isScanning=e.isScanning}),e.on(`sensors:adopted`,e=>{P.sensors=P.sensors.filter(t=>t.pluginId!==e.pluginId||t.id!==e.id)})}),I)}async function V(){if(!I||L)return{success:L,sensors:P.sensors,isScanning:P.isScanning};try{let e=await I.request(`sensors:subscribe`,{});return L=e.success,e.sensors&&(P.sensors=e.sensors),e.isScanning!==void 0&&(P.isScanning=e.isScanning),P.isLoading=!1,e}catch(e){return P.isLoading=!1,P.error=e instanceof Error?e.message:`subscribe failed`,{success:!1}}}async function H(){if(!I||!L)return{success:!0};try{let e=await I.request(`sensors:unsubscribe`,{});return L=!e.success,e}catch{return{success:!1}}}function U(){L&&H(),F?.stop(),F=null,I=null,L=!1,Ue()}function We(){z&&=(clearTimeout(z),null),R++;function e(){B(),I?.connected.value&&!L&&V()}function t(){L&&H()}async function n(){if(!I?.ready.value)return{success:!1,error:`Not connected`};P.sensors=[],P.isScanning=!0;try{let e=await I.request(`sensors:rescan`,{});return e.success||(P.isScanning=!1),e}catch(e){return P.isScanning=!1,{success:!1,error:e instanceof Error?e.message:`rescan failed`}}}async function r(e){if(!I?.ready.value)return{success:!1,error:`Not connected`};let{pluginId:t,pluginName:n,...r}=e;try{return await I.request(`sensors:adopt`,{pluginId:t,sensor:r})}catch(e){return{success:!1,error:e instanceof Error?e.message:`adopt failed`}}}let ee=O(()=>[...P.sensors].sort((e,t)=>e.name.localeCompare(t.name)));return i(()=>{R--,!(R>0)&&(R=0,z=setTimeout(()=>{R<=0&&(U(),z=null)},N))}),{state:D(P),isConnected:O(()=>I?.connected.value??!1),isLoading:O(()=>P.isLoading),sensors:O(()=>P.sensors),isScanning:O(()=>P.isScanning),error:O(()=>P.error),sortedSensors:ee,connect:e,disconnect:t,subscribe:V,unsubscribe:H,forceRescan:n,adoptSensor:r}}var Ge={class:`flex flex-col`},Ke={key:0,class:`page-title`},qe={class:`flex gap-2 mb-4`},Je={key:1,class:`flex flex-1 min-h-0 flex-col items-center justify-center w-full gap-4 py-16`},Ye={key:2,class:`flex flex-1 min-h-0 flex-col items-center justify-center w-full gap-4 py-20`},Xe={class:`text-muted text-sm`},Ze={key:3,class:`flex min-h-0 flex-col`},Qe={class:`card-title`},$e={class:`flex items-center justify-center`},et={class:`flex items-center gap-2 min-w-0`},tt={class:`flex flex-col min-w-0`},nt={class:`flex items-center gap-2 min-w-0`},rt={class:`font-bold text-color truncate`},it={key:0,class:`text-xs text-muted truncate`},at={key:1,class:`text-xs text-muted truncate font-mono`},ot={key:0,class:`text-xs text-muted truncate font-mono block`},st={key:1,class:`text-xs text-muted`},ct={class:`text-xs text-muted whitespace-nowrap`},lt={class:`flex items-center justify-center gap-1 min-w-0`},ut={class:`flex items-center justify-end gap-1`},dt={key:0,class:`shrink-0`},ft={key:4,class:`flex min-h-0 flex-col mt-6`},pt={class:`card-title`},mt={class:`flex items-center justify-center`},ht={class:`flex items-center gap-2 min-w-0`},gt={class:`flex flex-col min-w-0`},_t={class:`font-bold text-color truncate`},vt={class:`text-xs text-muted truncate font-mono`},yt={class:`text-xs text-muted whitespace-nowrap`},bt={key:1,class:`flex flex-col items-center justify-center py-6 gap-2`},xt={class:`text-muted text-sm`},St={class:`flex flex-wrap items-center gap-2 mt-4`},Ct=s(T({__name:`Sensors`,setup(i){let s=c(()=>g(()=>import(`./SensorEdit-C9Ejdxaz.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]),import.meta.url)),l=c(()=>g(()=>import(`./SensorHistory-B16b4-Um.js`),__vite__mapDeps([22,1,2,3,23,4,5,6,7,8,9,10,11,12,13,14,24]),import.meta.url)),m=c(()=>g(()=>import(`./VirtualSensorCreate-3mJ8c6Tl.js`),__vite__mapDeps([25,1,2,3,4,5,6,7,8,9,10,11,12,13,14]),import.meta.url)),xe={color:`rgb(251, 146, 60)`,filter:`drop-shadow(0 0 6px rgba(251, 146, 60, 0.6))`},T=new Set([r.Motion,r.Object,r.Audio,r.Face,r.LicensePlate,r.Classifier,r.Contact,r.Occupancy,r.Smoke,r.Leak,r.Gas,r.CarbonMonoxide,r.Heat,r.Cold,r.Vibration,r.Tamper,r.Problem,r.Power]),D=new Ae,N=new ce,P=fe(),F=We(),I=d(),L=ge(),{t:R}=a(),{smBreakpoint:z}=ue(),Ue=se(),{uiSettings:B}=M(Ue),{sensors:V}=ie(),{data:H,isBusy:U}=D.getSensorsQuery(),{data:Ct}=N.getCamerasQuery({page:1,pageSize:-1}),{mutateAsync:wt,isPending:Tt}=D.createVirtualSensorQuery(),{mutateAsync:Et}=D.patchSensorQuery(),{mutateAsync:Dt,isPending:Ot}=D.deleteSensorQuery(),{mutateAsync:kt}=D.bulkDeleteSensorsQuery(),At={bodyRow:{class:`text-sm text-secondary`},column:{columnTitle:{class:`text-sm`}},datatable:{class:`z-0`}},jt=be(`menuRef`),W=A(``),G=A(!1),K=O(()=>he(void 0,`admin`)),q=O(()=>H.value??[]),Mt=O(()=>q.value.filter(e=>e.assignmentLocked).length),Nt=O(()=>[{key:`hideCameraBound`,label:R(`views.sensors.hide_camera_bound`),description:R(`views.sensors.hide_camera_bound_hint`),badge:Mt.value?String(Mt.value):void 0,toggle:!0,toggleState:B.value.sensors.hideCameraBound,onClick:()=>B.value.sensors.hideCameraBound=!B.value.sensors.hideCameraBound}]),Pt=O(()=>(Ct.value?.result??[]).map(e=>({label:e.name,value:e._id}))),J=O(()=>{let e=W.value.toLowerCase().trim();return q.value.map(e=>({sensor:e,label:e.displayName||e.name,typeLabel:R(`components.camera_options.sensor_type_${e.type}`),nativeLabel:e.nativeId??``,pluginLabel:e.virtual?R(`views.sensors.owner_virtual`):e.pluginName,assignedLabel:e.assignedCameraIds.map(e=>Pt.value.find(t=>t.value===e)?.label).filter(Boolean).join(`, `)})).filter(e=>!B.value.sensors.hideCameraBound||!e.sensor.assignmentLocked).filter(t=>!e||[t.label,t.typeLabel,t.nativeLabel,t.pluginLabel,t.assignedLabel].some(t=>t.toLowerCase().includes(e))).sort((e,t)=>e.label.localeCompare(t.label))}),Y=O(()=>F.isScanning.value),X=O(()=>{let e=W.value.toLowerCase().trim();return F.sortedSensors.value.filter(t=>!e||[t.name,t.id,t.pluginName,t.room??``].some(t=>t.toLowerCase().includes(e)))}),Ft=O(()=>new Map(V.value.map(e=>[e.id,e]))),{selectionMode:Z,selectedIds:It,selectedItems:Lt,allSelected:Rt,bulkBusy:Q,enterSelectionMode:zt,exitSelectionMode:Bt,toggleSelectAll:Vt,toggleSelection:Ht}=o(()=>J.value,e=>e.sensor.id),Ut=O(()=>Lt.value.filter(e=>$(e.sensor)));function Wt(e){P.openTextDialog({data:{title:R(`views.sensors.adopt_title`),contentText:R(`views.sensors.adopt_confirm`,{name:e.name,plugin:e.pluginName}),confirmText:R(`components.form.button.add`),loading:G},onConfirm:async()=>{G.value=!0;try{let t=await F.adoptSensor(e);if(!t.success){L.add({severity:`error`,summary:R(`views.sensors.adopt_title`),detail:t.error,life:3e3});return}await I.refetchQueries({queryKey:[`sensorsList`]}),L.add({severity:`success`,detail:R(`views.sensors.adopted`,{name:e.name}),life:3e3})}finally{G.value=!1}}})}async function Gt(){let e=await F.forceRescan();e.success||L.add({severity:`error`,summary:R(`views.sensors.rescan`),detail:e.error,life:3e3})}function Kt(e){let t=Ft.value.get(e.id),n=n=>t?t.getProperty(n):e.properties?.[n];switch(e.type){case r.Light:case r.Switch:return!!n(`on`);case r.Siren:return!!n(`active`);case r.Doorbell:return!!n(`ring`);case r.Garage:case r.Lock:return n(`currentState`)===0;case r.SecuritySystem:return n(`currentState`)===4;case r.Battery:return!!n(`low`);default:return T.has(String(e.type))&&!!n(`detected`)}}function $(e){return e.virtual||!e.connected}function qt(e){if(Z.value){Ht(e.sensor.id);return}K.value&&P.openComponentDialog(s,{data:{title:e.label,confirmText:R(`components.form.button.save`),contentProps:{sensor:e.sensor,cameraOptions:Pt.value}},onConfirm:async t=>{t&&await Et({id:e.sensor.id,data:t})}})}function Jt(e){P.openComponentDialog(l,{data:{title:`${e.displayName||e.name} · ${R(`views.sensors.history`)}`,hideConfirmButton:!0,contentProps:{sensorId:e.id,sensorType:String(e.type)}}})}function Yt(e,t,n){t.length&&L.add({severity:`error`,summary:R(`views.sensors.bulk_failed`,{count:t.length}),detail:t.join(`, `),life:8e3}),e&&L.add({severity:`success`,detail:R(n,{count:e}),life:5e3})}function Xt(){let e=[...Ut.value];P.openTextDialog({data:{title:R(`components.dialog.title.confirm`),contentText:R(`views.sensors.delete_selected_confirm`,{count:e.length}),confirmText:R(`components.form.button.remove`),confirmButtonProps:{severity:`danger`}},onConfirm:async()=>{Q.value=!0;try{let{skipped:t}=await kt({ids:e.map(e=>e.sensor.id)}),n=e.filter(e=>t.includes(e.sensor.id)).map(e=>e.label);Bt(),Yt(e.length-n.length,n,`views.sensors.delete_selected_done`)}finally{Q.value=!1}}})}function Zt(){P.openComponentDialog(m,{data:{title:R(`views.sensors.create_virtual`),confirmText:R(`components.form.button.save`),loading:Tt,contentProps:{}},onConfirm:async e=>{e&&await wt({data:e})}})}function Qt(e){P.openTextDialog({data:{title:R(`views.sensors.delete`),contentText:R(`views.sensors.delete_confirm`),confirmText:R(`components.form.button.remove`),loading:Ot,confirmButtonProps:{severity:`danger`}},onConfirm:async()=>{await Dt({id:e.id})}})}return f(Y,(e,t)=>{t&&!e&&I.refetchQueries({queryKey:[`sensorsList`]})}),u(()=>{K.value&&F.connect()}),Se(()=>{K.value&&F.unsubscribe()}),(r,i)=>{let ie=Re,a=ne,se=oe,o=Fe,ce=Ee,ue=n,fe=Te,s=Be,c=me,l=te,he=de,ge=e,u=De,d=t,f=He,m=Oe,g=Ie,be=Ne,Se=je,T=Me,D=ee,O=Pe,A=Ve,M=ae,Ae=pe,N=re;return p(),k(`div`,Ge,[C(z)?E(``,!0):(p(),k(`h1`,Ke,j(C(R)(`views.sensors.title`)),1)),x(se,{position:`left`},{default:v(()=>[x(a,{severity:`secondary`,text:``,class:`cui-button p-2 text-color non-draggable-region`,onClick:i[0]||=e=>r.$router.push(`/menu`)},{icon:v(()=>[x(ie,{class:`w-6 h-6`})]),_:1})]),_:1}),w(`div`,qe,[x(fe,{class:`flex-1`},{default:v(()=>[x(ce,null,{default:v(()=>[x(o,{class:`w-4 h-4`})]),_:1}),x(ue,{modelValue:C(W),"onUpdate:modelValue":i[1]||=e=>Ce(W)?W.value=e:null,placeholder:C(R)(`views.sensors.search`),class:`w-full`},null,8,[`modelValue`,`placeholder`])]),_:1}),_((p(),y(a,{severity:`secondary`,outlined:``,class:`cui-button shrink-0`,onClick:i[2]||=e=>C(jt)?.toggleMenu(e)},{icon:v(()=>[x(s,{class:`w-4.5 h-4.5`})]),_:1})),[[N,{value:C(R)(`views.sensors.settings`)},void 0,{left:!0}]]),x(c,{ref_key:`menuRef`,ref:jt,items:C(Nt),"auto-hide":!1,popover:{pt:{root:{class:`w-[22rem]`},content:{class:`p-0! rounded-xl! overflow-hidden!`}}}},null,8,[`items`])]),C(U)?(p(),k(`div`,Je,[x(l,{"stroke-width":`5`,class:`w-[30px] h-[30px]`})])):!C(J).length&&!C(X).length&&!C(Y)?(p(),k(`div`,Ye,[x(he,{class:`w-12 h-12 text-muted`}),w(`span`,Xe,j(C(q).length?C(R)(`views.sensors.no_matches`):C(R)(`views.sensors.no_sensors`)),1)])):C(J).length?(p(),k(`div`,Ze,[w(`span`,Qe,j(C(R)(`views.sensors.adopted_title`)),1),x(D,{class:`cui-card`},{content:v(()=>[x(T,{value:C(J),"striped-rows":``,pt:At,class:`w-full`,onRowClick:i[4]||=e=>qt(e.data)},{default:v(()=>[C(Z)?(p(),y(u,{key:0,header:``,"header-class":`p-2 pl-4 w-8 max-w-8`,class:`p-2 pl-4 w-8 max-w-8`},{body:v(({data:e})=>[x(ge,{"model-value":C(It).has(e.sensor.id),binary:``,size:`small`,onClick:i[3]||=h(()=>{},[`stop`]),"onUpdate:modelValue":t=>C(Ht)(e.sensor.id)},null,8,[`model-value`,`onUpdate:modelValue`])]),_:1})):E(``,!0),x(u,{header:``,"header-class":`p-2 pl-4 w-5 max-w-5`,class:`p-2 pl-4 w-5 max-w-5`},{body:v(({data:e})=>[w(`div`,$e,[_(x(d,{style:we({background:e.sensor.connected?`green`:`gray`})},null,8,[`style`]),[[N,{value:e.sensor.connected?C(R)(`views.sensors.connected`):C(R)(`views.sensors.disconnected`)}]])])]),_:1}),x(u,{field:`label`,header:C(R)(`views.sensors.name`),sortable:``,"header-class":`p-2`,class:`p-2 w-[40%] min-w-[180px] max-w-0`},{body:v(({data:e})=>[w(`div`,et,[(p(),y(ye(C(Le)(e.sensor.type)),{class:S([`w-5 h-5 shrink-0 transition-colors`,{"text-muted":!Kt(e.sensor)}]),style:we(Kt(e.sensor)?xe:void 0)},null,8,[`class`,`style`])),w(`div`,tt,[w(`div`,nt,[_((p(),k(`span`,rt,[b(j(e.label),1)])),[[N,e.label]]),e.sensor.exposed?E(``,!0):_((p(),y(f,{key:0,class:`w-4 h-4 shrink-0 text-muted`},null,512)),[[N,C(R)(`views.sensors.not_exposed`)]])]),C(z)?(p(),k(`span`,it,j(e.typeLabel)+` · `+j(e.pluginLabel),1)):E(``,!0),C(z)&&e.nativeLabel?_((p(),k(`span`,at,[b(j(e.nativeLabel),1)])),[[N,e.nativeLabel]]):E(``,!0)])])]),_:1},8,[`header`]),C(z)?E(``,!0):(p(),y(u,{key:1,field:`nativeLabel`,header:C(R)(`views.sensors.native_id`),sortable:``,"header-class":`p-2 whitespace-nowrap cui-col-center`,class:`p-2 w-[28%] min-w-[160px] max-w-0 text-center`},{body:v(({data:e})=>[e.nativeLabel?_((p(),k(`span`,ot,[b(j(e.nativeLabel),1)])),[[N,e.nativeLabel]]):(p(),k(`span`,st,`—`))]),_:1},8,[`header`])),C(z)?E(``,!0):(p(),y(u,{key:2,field:`typeLabel`,header:C(R)(`views.sensors.type`),sortable:``,"header-class":`p-2 whitespace-nowrap cui-col-center`,class:`p-2 whitespace-nowrap text-center`},{body:v(({data:e})=>[w(`span`,ct,j(e.typeLabel),1)]),_:1},8,[`header`])),C(z)?E(``,!0):(p(),y(u,{key:3,field:`pluginLabel`,header:C(R)(`views.sensors.plugin`),sortable:``,"header-class":`p-2 whitespace-nowrap cui-col-center`,class:`p-2 whitespace-nowrap text-center`},{body:v(({data:e})=>[x(m,{label:e.pluginLabel,class:`text-xs whitespace-nowrap`},null,8,[`label`])]),_:1},8,[`header`])),x(u,{field:`assignedLabel`,header:C(R)(`views.sensors.assigned_cameras`),sortable:``,"header-class":`p-2 whitespace-nowrap cui-col-center`,class:`p-2 min-w-[140px] text-center`},{body:v(({data:e})=>[w(`div`,lt,[e.sensor.assignmentLocked?_((p(),y(g,{key:0,class:`w-3.5 h-3.5 shrink-0 text-muted`},null,512)),[[N,C(R)(`views.sensors.assigned_cameras_locked_hint`)]]):E(``,!0),w(`span`,{class:S([`text-xs truncate`,e.assignedLabel?`text-muted`:`text-muted italic`])},j(e.assignedLabel||C(R)(`views.sensors.unassigned`)),3)])]),_:1},8,[`header`]),x(u,{header:``,"header-class":`p-2 pr-4 w-28`,class:`p-2 pr-4 w-28`},{body:v(({data:e})=>[w(`div`,ut,[_((p(),y(a,{text:``,rounded:``,severity:`secondary`,class:`cui-icon-sm shrink-0`,onClick:h(t=>Jt(e.sensor),[`stop`])},{icon:v(()=>[x(be,{width:`100%`,height:`100%`})]),_:1},8,[`onClick`])),[[N,C(R)(`views.sensors.history`),void 0,{left:!0}]]),C(K)?_((p(),k(`span`,dt,[x(a,{text:``,rounded:``,severity:`danger`,class:`cui-icon-sm`,disabled:!$(e.sensor),onClick:h(t=>Qt(e.sensor),[`stop`])},{icon:v(()=>[x(Se,{width:`100%`,height:`100%`})]),_:1},8,[`disabled`,`onClick`])])),[[N,$(e.sensor)?C(R)(`views.sensors.delete`):C(R)(`views.sensors.delete_connected`),void 0,{left:!0}]]):E(``,!0)])]),_:1})]),_:1},8,[`value`])]),_:1})])):E(``,!0),C(K)&&!C(U)?(p(),k(`div`,ft,[w(`span`,pt,j(C(R)(`views.sensors.discovered_title`)),1),x(D,{class:`cui-card`},{content:v(()=>[C(X).length?(p(),y(T,{key:0,value:C(X),"striped-rows":``,pt:At,class:S([`w-full`,{"opacity-60 pointer-events-none":C(G)}]),onRowClick:i[5]||=e=>Wt(e.data)},{default:v(()=>[x(u,{header:``,"header-class":`p-2 pl-4 w-5 max-w-5`,class:`p-2 pl-4 w-5 max-w-5`},{body:v(()=>[w(`div`,mt,[_(x(d,{style:{background:`orange`}},null,512),[[N,{value:C(R)(`views.sensors.status_discovered`)}]])])]),_:1}),x(u,{field:`name`,header:C(R)(`views.sensors.name`),sortable:``,"header-class":`p-2`,class:`p-2 w-full min-w-[200px] max-w-0`},{body:v(({data:e})=>[w(`div`,ht,[(p(),y(ye(C(Le)(e.type)),{class:`w-5 h-5 shrink-0 text-muted`})),w(`div`,gt,[_((p(),k(`span`,_t,[b(j(e.name),1)])),[[N,e.name]]),_((p(),k(`span`,vt,[b(j(e.id),1)])),[[N,e.id]])])])]),_:1},8,[`header`]),C(z)?E(``,!0):(p(),y(u,{key:0,field:`type`,header:C(R)(`views.sensors.type`),sortable:``,"header-class":`p-2 whitespace-nowrap`,class:`p-2 whitespace-nowrap`},{body:v(({data:e})=>[w(`span`,yt,j(C(R)(`components.camera_options.sensor_type_${e.type}`)),1)]),_:1},8,[`header`])),C(z)?E(``,!0):(p(),y(u,{key:1,field:`room`,header:C(R)(`components.form.label.room`),sortable:``,"header-class":`p-2 whitespace-nowrap`,class:`p-2 whitespace-nowrap`},{body:v(({data:e})=>[e.room?(p(),y(m,{key:0,label:e.room,class:`text-xs whitespace-nowrap`},null,8,[`label`])):E(``,!0)]),_:1},8,[`header`])),x(u,{field:`pluginName`,header:C(R)(`views.sensors.plugin`),sortable:``,"header-class":`p-2 pr-4 whitespace-nowrap`,class:`p-2 pr-4 whitespace-nowrap`},{body:v(({data:e})=>[x(m,{label:e.pluginName,class:`text-xs whitespace-nowrap`},null,8,[`label`])]),_:1},8,[`header`])]),_:1},8,[`value`,`class`])):(p(),k(`div`,bt,[C(Y)?(p(),y(O,{key:0,width:`24px`,height:`24px`,class:`text-muted`})):(p(),y(A,{key:1,width:`32px`,height:`32px`,class:`text-muted`})),w(`span`,xt,j(C(Y)?C(R)(`views.sensors.scanning`):C(R)(`views.sensors.no_discovered`)),1)])),w(`div`,St,[i[6]||=w(`div`,{class:`ml-auto`},null,-1),x(a,{severity:`secondary`,class:`cui-button-medium`,label:C(R)(`views.sensors.rescan`),loading:C(Y),onClick:Gt},null,8,[`label`,`loading`])])]),_:1})])):E(``,!0),C(K)?(p(),y(Ae,{key:5,"force-visible":C(Z)},{default:v(()=>[C(Z)?(p(),k(ve,{key:1},[x(M,{grouped:``,"tooltip-props":{value:r.$t(`components.form.tooltip.cancel_selection`)},"button-props":{severity:`secondary`},icon:C(ke),"icon-props":{width:`100%`,height:`100%`},onClick:C(Bt)},null,8,[`tooltip-props`,`icon`,`onClick`]),x(M,{grouped:``,"tooltip-props":{value:r.$t(`components.form.tooltip.select_all`)},"button-props":{severity:C(Rt)?`primary`:`secondary`},icon:C(_e),"icon-props":{width:`100%`,height:`100%`},onClick:C(Vt)},null,8,[`tooltip-props`,`button-props`,`icon`,`onClick`]),x(M,{grouped:``,"tooltip-props":{value:C(R)(`views.sensors.delete_selected`)},"button-props":{severity:`danger`,disabled:!C(Ut).length||C(Q)},icon:C(je),"icon-props":{width:`100%`,height:`100%`},onClick:Xt},null,8,[`tooltip-props`,`button-props`,`icon`])],64)):(p(),k(ve,{key:0},[C(J).length?(p(),y(M,{key:0,grouped:``,"tooltip-props":{value:C(R)(`views.sensors.select`)},"button-props":{severity:`secondary`},icon:C(le),"icon-props":{width:`100%`,height:`100%`},onClick:C(zt)},null,8,[`tooltip-props`,`icon`,`onClick`])):E(``,!0),x(M,{grouped:``,"tooltip-props":{value:C(R)(`views.sensors.create_virtual`)},"button-props":{class:`text-white`},icon:C(ze),"icon-props":{width:`30px`,height:`30px`},onClick:Zt},null,8,[`tooltip-props`,`icon`])],64))]),_:1},8,[`force-visible`])):E(``,!0)])}}}),[[`__scopeId`,`data-v-c2e0b31d`]]);export{Ct as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Pt as e,Rt as t,ei as n,ki as r,pi as i,qr as a}from"./vendor-cameraui-
|
|
1
|
+
import{Pt as e,Rt as t,ei as n,ki as r,pi as i,qr as a}from"./vendor-cameraui-ZyqPntQ7.js";import{B as o,Bn as s,C as c,Ln as l,Mn as u,Nn as d,Rn as f,b as p,kn as m,xn as h,zn as g}from"./api-2VPaKkqc.js";import{$t as _,An as v,In as y,Kn as b,Mn as x,Pn as S,Rn as C,Wn as w,Yn as T,an as E,fn as D,gr as O,hr as k,in as A,mn as j,on as M,pr as N,rn as P,sn as F,sr as I,vr as L,wn as R,yr as z}from"./vendor-AX0A8AMd.js";import{p as B,u as V}from"./vendor-core-DN-bpg68.js";import{t as H}from"./back-filled-MAIFvJqE.js";import{t as U}from"./useTabSwipe-DxZfseQO.js";import{n as W,t as G}from"./round-alt-arrow-left-bold-2FHg8vBl.js";var K={},q={class:`w-full h-full flex items-center justify-center`};function J(t,n){let r=e;return x(),F(`div`,q,[D(r,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})])}var Y=m(K,[[`render`,J]]),X={key:0},Z={key:1},Q={class:`overflow-hidden w-full`},ee={class:`ml-2 flex flex-row items-center justify-between`},te={class:`text-start flex-1`},ne={class:`text-sm font-bold max-w-100 truncate`},re={key:0,class:`text-sm text-muted font-normal`},ie=m(j({__name:`CuiSubNavItem`,props:{label:{},to:{},description:{},icon:{},activeIcon:{}},setup(e){let{icon:n,activeIcon:r,label:i,description:a,to:o}=N(e);return(e,s)=>{let c=t,l=y(`RouterLink`);return x(),E(l,{to:k(o)},{default:T(({isExactActive:e})=>[D(c,{text:``,severity:`secondary`,class:O([`subnavitem-button w-full h-[120px] flex items-start justify-start p-6 bg-none text-color hover:!text-primary active:!text-primary focus:!text-primary rounded-none`,{"active !text-primary":e}]),fluid:``},{default:T(()=>[k(n)&&!e||!k(r)?(x(),F(`div`,X,[D(k(n),{class:`w-[24px] h-[24px]`})])):k(r)&&e?(x(),F(`div`,Z,[D(k(r),{class:`w-[24px] h-[24px]`})])):M(``,!0),A(`div`,Q,[A(`div`,ee,[A(`div`,te,[A(`div`,ne,z(k(i)),1),k(a)?(x(),F(`div`,re,z(k(a)),1)):M(``,!0)])])])]),_:2},1032,[`class`])]),_:1},8,[`to`])}}}),[[`__scopeId`,`data-v-a5399c04`]]),$={CLOSED:0,EXPANDED:288},ae=m(j({__name:`CuiSubNavbar`,setup(e,{expose:t}){let n=V(),{bus:o}=l(),{xlBreakpoint:s,mdBreakpoint:c}=u(),{bottombarHeight:f,subbarState:m,navbarState:g,topbarOffset:y}=d(),C=w(`subnavbarRef`),T=I(`closed`),D=P(()=>s.value?`opened`:T.value),O=P(()=>D.value===`closed`?$.CLOSED:$.EXPANDED),j=P(()=>p.find(e=>e.name===`Settings`).children.filter(e=>e.meta?.settingsBar&&h(e))),M=P(()=>[`personal`,`system`].map(e=>({key:e,routes:j.value.filter(t=>(t.meta.settingsBar.group??`personal`)===e)})).filter(e=>e.routes.length>0));function N(){T.value=`closed`,o.emit({subbarState:`closed`})}function B(){R(()=>{let e=C.value?.querySelector(`.subnavitem-button.active`);e&&e.scrollIntoView({block:`center`,behavior:`smooth`})})}let H=r(B,100);return a(C,e=>{let t=e.target,n=t.closest(`#menu-icon`),r=t.closest(`#submenu-icon`),i=t.closest(`#navbar-icon`);!n&&!r&&!i&&N()}),i(C,()=>{H()}),b(m,e=>{e&&e!==T.value&&(T.value=e)},{immediate:!0}),b(n.currentRoute,(e,t)=>{e.path!==t.path&&N()}),b(g,e=>{e===`opened`&&c.value&&N()}),v(()=>{B()}),t({subnavbarState:D}),(e,t)=>{let n=ie;return x(),F(`nav`,{ref_key:`subnavbarRef`,ref:C,class:`cui-subnavbar fixed transition-all duration-200 overflow-x-hidden overflow-y-scroll md:!pl-0 pl-safe pb-safe w-full h-full flex flex-col`,style:L({width:`${k(O)}px`,borderRightWidth:k(D)===`opened`?`1px`:`0px`,paddingBottom:`calc(env(safe-area-inset-top, 0px) + env(safe-area-inset-bottom, 0px) + ${k(f)}px + ${k(y)}px)`})},[(x(!0),F(_,null,S(k(M),t=>(x(),F(_,{key:t.key},[A(`span`,{class:`shrink-0 pl-4 pt-4 pb-1 text-[11px] font-semibold uppercase tracking-widest text-muted`,style:L({width:`${k($).EXPANDED}px`})},z(e.$t(`views.settings.section_${t.key}`)),5),(x(!0),F(_,null,S(t.routes,t=>(x(),E(n,{key:t.name,icon:t.meta.settingsBar.icon.default,"active-icon":t.meta.settingsBar.icon.active,to:t.path,label:e.$t(`navigation.${(t.meta?.name).toLowerCase()}`),description:e.$t(`navigation_description.${t.meta?.description}`),class:`cui-list-item !m-0 !p-0 shrink-0`,style:L({width:`${k($).EXPANDED}px`})},null,8,[`icon`,`active-icon`,`to`,`label`,`description`,`style`]))),128))],64))),128))],4)}}}),[[`__scopeId`,`data-v-962a92c6`]]),oe={class:`font-semibold text-xl truncate`},se={class:`w-full h-full relative`},ce={key:0,class:`w-full flex flex-row h-[calc(40px+1rem)] py-2 items-center fixed z-2`},le={class:`relative z-2 page-title !m-0`},ue=j({__name:`Settings`,setup(e){let r=V(),i=f(),{bus:a}=l(),{mdBreakpoint:d,xlBreakpoint:m,smBreakpoint:_}=u(),v=c(),{routerLoading:S}=B(v),j=[`personal`,`system`].flatMap(e=>p.find(e=>e.name===`Settings`).children.filter(t=>h(t)&&t.meta?.settingsBar&&(t.meta.settingsBar.group??`personal`)===e)),N=w(`subnavbarRef`),I=w(`containerRef`),R=P(()=>r.currentRoute.value.path===`/settings`);U(I,e=>{if(R.value)return;let t=j.findIndex(e=>e.path===r.currentRoute.value.path.split(`/settings/`)[1]),n=e===`right`?j[t-1]:j[t+1];n&&r.push({path:n.path})});let K=n(N),q=P(()=>N.value?.subnavbarState??`closed`);function J(){let e=q.value===`opened`?`closed`:`opened`;a.emit({subbarState:e})}return b(_,e=>{if(!e&&R.value){let e=s().uiSettings.interface.selectedSettingsView;r.replace(`/settings/${g.includes(e)?e:`account`}`)}}),(e,n)=>{let r=o,a=H,s=t,c=ae,l=G,u=W,f=Y,p=y(`RouterView`);return x(),F(`div`,null,[D(r,{position:`center`},{default:T(()=>[A(`span`,oe,z(e.$t(`views.settings.title_${e.$route.meta?.name}`)),1)]),_:1}),D(r,{position:`left`},{default:T(()=>[D(s,{severity:`secondary`,text:``,class:`cui-button p-2 text-color non-draggable-region`,onClick:n[0]||=t=>e.$router.push(k(R)?`/menu`:`/settings`)},{icon:T(()=>[D(a,{class:`w-6 h-6`})]),_:1})]),_:1}),k(_)?M(``,!0):(x(),E(c,{key:0,ref_key:`subnavbarRef`,ref:N,class:`z-4 min-w-0`},null,512)),A(`main`,{class:`relative w-full h-full`,style:L({paddingLeft:k(d)?`0px`:`${k(K).width.value}px`})},[A(`div`,se,[k(_)?M(``,!0):(x(),F(`div`,ce,[n[1]||=A(`div`,{class:`ml-2`},null,-1),k(m)?M(``,!0):(x(),E(s,{key:0,id:`submenu-icon`,severity:`secondary`,class:`mr-2 cui-icon-lg relative z-2`,text:``,rounded:``,onClick:J},{icon:T(()=>[k(q)===`opened`?(x(),E(l,{key:0,width:`100%`,height:`100%`})):(x(),E(u,{key:1,width:`100%`,height:`100%`}))]),_:1})),A(`h1`,le,z(e.$t(`views.settings.title_${e.$route.meta?.name}`)),1),n[2]||=A(`div`,{class:`gradient-blur rotate-180 !h-[70px]`},[A(`div`),A(`div`),A(`div`),A(`div`),A(`div`),A(`div`)],-1)])),A(`div`,{ref_key:`containerRef`,ref:I,class:O([`px-2 h-full w-full`,{"py-4":k(_),"pt-[calc(40px+2rem)] pb-2":!k(_)}])},[k(S)&&k(i).showRouterLoadingSub.value?(x(),E(f,{key:0,class:`w-full h-full relative overflow-x-hidden`})):(x(),E(p,{key:1},{default:T(({Component:e})=>[(x(),E(C(e),{class:`h-full`}))]),_:1}))],2)])],4)])}}});export{ue as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{t as e}from"./SettingsAccount-DYCCnjWY.js";export{e as default};
|