@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{Ar as e,Sr as t,xr as n,yr as r}from"./api-
|
|
1
|
+
import{Ar as e,Sr as t,xr as n,yr as r}from"./api-2VPaKkqc.js";import{J as i,U as a}from"./vendor-AX0A8AMd.js";async function o({signal:t}){return(await e.get(`/mqtt`,{signal:t})).data}async function s(t){return(await e.patch(`/mqtt`,t)).data}async function c({signal:t}){return(await e.get(`/mqtt/topics`,{signal:t})).data}async function l(t){return(await e.post(`/mqtt/test`,t)).data}var u=class{_queryClient=i();t=t.global.t;toast=n();get queryClient(){return this._queryClient}getMqttInfoQuery(){return r({queryKey:[`mqtt`],queryFn:({signal:e})=>o({signal:e}),staleTime:1e3})}patchMqttInfoMutation(){return a({mutationFn:s,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`mqtt`],exact:!0}),this.toast.add({severity:`success`,detail:this.t(`components.toast.mqtt_updated`),life:3e3})}})}getMqttTopicsQuery(){return r({queryKey:[`mqtt`,`topics`],queryFn:({signal:e})=>c({signal:e}),staleTime:1e4})}testMqttConnectionMutation(){return a({mutationFn:l})}};export{u as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Ar as e,Sr as t,xr as n,yr as r}from"./api-
|
|
1
|
+
import{Ar as e,Sr as t,xr as n,yr as r}from"./api-2VPaKkqc.js";import{J as i,U as a,sr as o}from"./vendor-AX0A8AMd.js";async function s({signal:t}){return(await e.get(`/notifications/settings`,{signal:t})).data}async function c({settings:t}){return(await e.put(`/notifications/settings`,t)).data}async function l({signal:t}){return(await e.get(`/notifications/devices`,{signal:t})).data}async function u({signal:t}){return(await e.get(`/notifications/sources`,{signal:t})).data}async function d({signal:t}){return(await e.get(`/notifications/history`,{signal:t})).data}async function f(){await e.delete(`/notifications/history`)}async function p({deviceId:t}){await e.delete(`/notifications/devices/${encodeURIComponent(t)}`)}async function m(t){return(await e.post(`/notifications/devices`,t)).data}async function h({deviceId:t,patch:n}){return(await e.patch(`/notifications/devices/${encodeURIComponent(t)}`,n)).data}var g=class{_queryClient=i();t=t.global.t;toast=n();queryActivator=o([{name:`getSettingsQuery`,enabled:!0},{name:`listDevicesQuery`,enabled:!0},{name:`listSourcesQuery`,enabled:!0},{name:`getHistoryQuery`,enabled:!0}]);get queryClient(){return this._queryClient}getSettingsQuery(){return r({queryKey:[`notifications`,`settings`],queryFn:({signal:e})=>s({signal:e}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getSettingsQuery`&&e.enabled)})}setSettingsQuery(){return a({mutationFn:c,onSuccess:e=>{this._queryClient.setQueryData([`notifications`,`settings`],e),this.toast.add({severity:`success`,detail:this.t(`views.settings.notifications.saved`),life:3e3})},onError:e=>{this.toast.add({severity:`error`,detail:e,life:3e3})}})}setSettingsQuerySilent(){return a({mutationFn:c,onSuccess:e=>{this._queryClient.setQueryData([`notifications`,`settings`],e)}})}listDevicesQuery(e){return r({queryKey:[`notifications`,`devices`],queryFn:({signal:e})=>l({signal:e}),enabled:()=>(e?.()??!0)&&this.queryActivator.value.some(e=>e.name===`listDevicesQuery`&&e.enabled)})}listSourcesQuery(){return r({queryKey:[`notifications`,`sources`],queryFn:({signal:e})=>u({signal:e}),enabled:()=>this.queryActivator.value.some(e=>e.name===`listSourcesQuery`&&e.enabled)})}getHistoryQuery(){return r({queryKey:[`notifications`,`history`],queryFn:({signal:e})=>d({signal:e}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getHistoryQuery`&&e.enabled)})}clearHistoryQuery(){return a({mutationFn:f,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`notifications`,`history`]})}})}revokeDeviceQuery(){return a({mutationFn:p,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`notifications`,`devices`]}),this.toast.add({severity:`success`,detail:this.t(`views.settings.notifications.device_revoked`),life:3e3})},onError:e=>{this.toast.add({severity:`error`,detail:e,life:3e3})}})}updateDeviceQuery(){return a({mutationFn:h,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`notifications`,`devices`]})},onError:e=>{this.toast.add({severity:`error`,detail:e,life:3e3})}})}toggleQueryActivator(e,t){let n=this.queryActivator.value.find(t=>t.name===e);return n&&(n.enabled=t),this}};export{m as n,g as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Ar as e,Sr as t,xr as n,yr as r}from"./api-ou2-S3Z9.js";import{J as i,U as a,hr as o,sr as s}from"./vendor-AX0A8AMd.js";var c=18e5,l=6e5;async function u({pluginData:t}){return(await e.post(`/plugins`,t,{timeout:c})).data}async function d({plugins:t}){return(await e.post(`/plugins/install`,{plugins:t},{timeout:c})).data}async function f({pluginNames:t}){return(await e.put(`/plugins/enable`,{pluginNames:t})).data}async function p({pluginNames:t}){return(await e.put(`/plugins/disable`,{pluginNames:t})).data}async function m({pluginNames:t,removeStorage:n}){return(await e.delete(`/plugins`,{data:{pluginNames:t},params:n?{removeStorage:!0}:void 0,timeout:l})).data}async function h({pluginName:t,signal:n}){return(await e.get(`/plugins/${t}`,{signal:n})).data}async function g({pluginname:t,signal:n}){return(await e.get(`/plugins/${t}/versions`,{signal:n})).data}async function _({pluginName:t,signal:n}){return(await e.get(`/plugins/${t}/update`,{signal:n})).data}async function v({pluginName:t,signal:n}){return(await e.get(`/plugins/${t}/logo`,{signal:n})).data}async function y({pluginName:t,signal:n}){return(await e.get(`/plugins/${t}/config`,{signal:n})).data}async function b({pluginName:t,signal:n}){return(await e.get(`/plugins/${t}/contract`,{signal:n})).data}async function x({pluginName:t,signal:n}){return(await e.get(`/plugins/${t}/readme`,{signal:n})).data}async function S({pluginName:t,query:n,signal:r}){return(await e.get(`/plugins/${t}/changelog`,{params:n,signal:r})).data}async function C({pluginName:t,query:n,signal:r}){return(await e.get(`/plugins/${t}/compat`,{params:n,signal:r})).data}async function w({pluginName:t,signal:n}){return(await e.get(`/plugins/${t}/interface`,{signal:n})).data}async function T({parameter:t,signal:n}){return(await e.get(`/plugins`,{params:t,signal:n})).data}async function E({parameter:t,signal:n}){return(await e.get(`/plugins/extensions`,{params:t,signal:n})).data}async function D({pluginName:t}){return(await e.delete(`/plugins/${t}/log`)).data}async function O({pluginName:t,signal:n}){return(await e.get(`/plugins/${t}/log/download`,{signal:n})).data}async function k({parameter:t,signal:n}){return(await e.get(`/plugins/progress`,{params:t,signal:n})).data}async function A({query:t,parameter:n,refresh:r,signal:i}){return(await e.get(`/plugins/search`,{params:{...t,...n,...r?{refresh:!0}:{}},signal:i})).data}async function j({pluginName:t}){return(await e.put(`/plugins/${t}/enable`)).data}async function M({pluginName:t,configData:n}){return(await e.patch(`/plugins/${t}/config`,n)).data}async function N({pluginname:t,configData:n}){return(await e.put(`/plugins/${t}/config`,n)).data}async function P({pluginname:t,configData:n}){return(await e.post(`/plugins/${t}/config`,n)).data}async function F({pluginName:t}){return(await e.put(`/plugins/${t}/disable`)).data}async function I({pluginName:t}){return(await e.put(`/plugins/${t}/start`)).data}async function L({pluginName:t}){return(await e.put(`/plugins/${t}/stop`)).data}async function R({pluginName:t}){return(await e.put(`/plugins/${t}/restart`)).data}async function z({pluginName:t,removeStorage:n}){return(await e.delete(`/plugins/${t}`,{params:{removeStorage:n},timeout:l})).data}async function B(){return(await e.delete(`/plugins`,{timeout:l})).data}var V=class{_queryClient=i();t=t.global.t;toast=n();queryActivator=s([{name:`getPluginQuery`,enabled:!0},{name:`getPluginsQuery`,enabled:!0},{name:`getPluginsExtensionsQuery`,enabled:!0},{name:`searchPluginsQuery`,enabled:!0},{name:`getPluginVersionsQuery`,enabled:!0},{name:`getPluginUpdateQuery`,enabled:!0},{name:`getPluginLogoQuery`,enabled:!0},{name:`getPluginConfigQuery`,enabled:!0},{name:`getPluginContractQuery`,enabled:!0},{name:`getPluginReadmeQuery`,enabled:!0},{name:`getPluginInterfaceQuery`,enabled:!0},{name:`getPluginChangelogQuery`,enabled:!0},{name:`getPluginCompatQuery`,enabled:!0},{name:`getPluginsProgressQuery`,enabled:!0},{name:`installPluginQuery`,enabled:!0},{name:`enablePluginQuery`,enabled:!0},{name:`disablePluginQuery`,enabled:!0},{name:`patchPluginConfigQuery`,enabled:!0},{name:`setPluginConfigQuery`,enabled:!0},{name:`submitPluginConfigQuery`,enabled:!0},{name:`startPluginQuery`,enabled:!0},{name:`stopPluginQuery`,enabled:!0},{name:`restartPluginQuery`,enabled:!0},{name:`uninstallPluginQuery`,enabled:!0},{name:`uninstallPluginsQuery`,enabled:!0},{name:`downloadLogQuery`,enabled:!0}]);get queryClient(){return this._queryClient}installPluginQuery(){return a({mutationFn:u,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`pluginsList`]}),await this._queryClient.refetchQueries({queryKey:[`plugins`]}),await this._queryClient.refetchQueries({queryKey:[`pluginsSearch`]}),await this._queryClient.refetchQueries({queryKey:[`pluginsProgress`]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.plugin_installed`),life:3e3})}})}getPluginQuery(e){return r({queryKey:[`plugins`,e],queryFn:({signal:t})=>h({pluginName:o(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginQuery`&&e.enabled)})}getPluginsQuery(e){return r({queryKey:[`pluginsList`,e],queryFn:({signal:t})=>T({parameter:o(e),signal:t}),placeholderData:e=>e,enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginsQuery`&&e.enabled)})}getPluginsExtensionsQuery(e){return r({queryKey:[`extensionsList`,e],queryFn:({signal:t})=>E({parameter:o(e),signal:t}),placeholderData:e=>e,enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginsExtensionsQuery`&&e.enabled)})}getPluginsProgressQuery(e){return r({queryKey:[`pluginsProgress`,e],queryFn:({signal:t})=>k({parameter:o(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginsProgressQuery`&&e.enabled)})}searchPluginsQuery(e,t,n){return r({queryKey:[`pluginsSearch`,e,t],queryFn:({signal:r})=>A({query:o(e),parameter:o(t),refresh:o(n),signal:r}),placeholderData:e=>e,enabled:()=>this.queryActivator.value.some(e=>e.name===`searchPluginsQuery`&&e.enabled)})}getPluginVersionsQuery(e){return r({queryKey:[`plugins`,e,`versions`],queryFn:({signal:t})=>g({pluginname:o(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginVersionsQuery`&&e.enabled)})}getPluginUpdateQuery(e){return r({queryKey:[`plugins`,e,`update`],queryFn:({signal:t})=>_({pluginName:o(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginUpdateQuery`&&e.enabled)})}getPluginLogoQuery(e){return r({queryKey:[`plugins`,e,`logo`],queryFn:({signal:t})=>v({pluginName:o(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginLogoQuery`&&e.enabled)})}getPluginConfigQuery(e){return r({queryKey:[`plugins`,e,`config`],queryFn:({signal:t})=>y({pluginName:o(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginConfigQuery`&&e.enabled)})}getPluginContractQuery(e){return r({queryKey:[`plugins`,e,`contract`],queryFn:({signal:t})=>b({pluginName:o(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginContractQuery`&&e.enabled)})}getPluginReadmeQuery(e){return r({queryKey:[`plugins`,e,`readme`],queryFn:({signal:t})=>x({pluginName:o(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginReadmeQuery`&&e.enabled),retry:(e,t)=>t instanceof Error&&t.message.includes(`404`)?!1:e<3})}getPluginInterfaceQuery(e){return r({queryKey:[`plugins`,e,`interface`],queryFn:({signal:t})=>w({pluginName:o(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginInterfaceQuery`&&e.enabled)})}getPluginChangelogQuery(e,t){return r({queryKey:[`plugins`,e,`changelog`],queryFn:({signal:n})=>S({pluginName:o(e),query:o(t),signal:n}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginChangelogQuery`&&e.enabled),retry:(e,t)=>t instanceof Error&&t.message.includes(`404`)?!1:e<3})}getPluginCompatQuery(e,t){return r({queryKey:[`plugins`,e,`compat`],queryFn:({signal:n})=>C({pluginName:o(e),query:o(t),signal:n}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginCompatQuery`&&e.enabled)})}patchPluginConfigQuery(){return a({mutationFn:M,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`plugins`,t.pluginName]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.plugin_config_updated`),life:3e3})}})}startPluginQuery(){return a({mutationFn:I,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`plugins`,t.pluginName]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.plugin_started`),life:3e3})}})}stopPluginQuery(){return a({mutationFn:L,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`plugins`,t.pluginName]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.plugin_stopped`),life:3e3})}})}restartPluginQuery(){return a({mutationFn:R,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`plugins`,t.pluginName]}),await this._queryClient.refetchQueries({queryKey:[`pluginsList`]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.plugin_restarted`),life:3e3})}})}setPluginConfigQuery(){return a({mutationFn:N,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`plugins`,t.pluginname,t.configData]})}})}submitPluginConfigQuery(){return a({mutationFn:P,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`plugins`,t.pluginname,t.configData]})}})}enablePluginQuery(){return a({mutationFn:j,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`pluginsList`]}),await this._queryClient.refetchQueries({queryKey:[`plugins`,t.pluginName]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.plugin_enabled`),life:3e3})}})}disablePluginQuery(){return a({mutationFn:F,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`pluginsList`]}),await this._queryClient.refetchQueries({queryKey:[`plugins`,t.pluginName]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.plugin_disabled`),life:3e3})}})}uninstallPluginQuery(){return a({mutationFn:z,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`pluginsList`]}),await this._queryClient.refetchQueries({queryKey:[`pluginsSearch`]}),await this._queryClient.refetchQueries({queryKey:[`pluginsProgress`]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.plugin_removed`),life:3e3})}})}uninstallPluginsQuery(){return a({mutationFn:B,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`pluginsList`]}),await this._queryClient.refetchQueries({queryKey:[`pluginsSearch`]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.plugins_removed`),life:3e3})}})}downloadLogQuery(e){return r({queryKey:[`logs`,e],queryFn:({signal:t})=>O({pluginName:o(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`downloadLogQuery`&&e.enabled)})}clearLogQuery(){return a({mutationFn:D,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`logs`,t.pluginName],exact:!0}),this.toast.add({severity:`success`,detail:this.t(`components.toast.log_cleared`),life:3e3})}})}toggleQueryActivator(e,t){let n=this.queryActivator.value.find(t=>t.name===e);return n&&(n.enabled=t),this}};export{m as a,S as c,d as i,_ as l,p as n,D as o,f as r,O as s,V as t,u};
|
|
1
|
+
import{Ar as e,Sr as t,xr as n,yr as r}from"./api-2VPaKkqc.js";import{J as i,U as a,hr as o,sr as s}from"./vendor-AX0A8AMd.js";var c=18e5,l=6e5;async function u({pluginData:t}){return(await e.post(`/plugins`,t,{timeout:c})).data}async function d({plugins:t}){return(await e.post(`/plugins/install`,{plugins:t},{timeout:c})).data}async function f({pluginNames:t}){return(await e.put(`/plugins/enable`,{pluginNames:t})).data}async function p({pluginNames:t}){return(await e.put(`/plugins/disable`,{pluginNames:t})).data}async function m({pluginNames:t,removeStorage:n}){return(await e.delete(`/plugins`,{data:{pluginNames:t},params:n?{removeStorage:!0}:void 0,timeout:l})).data}async function h({pluginName:t,signal:n}){return(await e.get(`/plugins/${t}`,{signal:n})).data}async function g({pluginname:t,signal:n}){return(await e.get(`/plugins/${t}/versions`,{signal:n})).data}async function _({pluginName:t,signal:n}){return(await e.get(`/plugins/${t}/update`,{signal:n})).data}async function v({pluginName:t,signal:n}){return(await e.get(`/plugins/${t}/logo`,{signal:n})).data}async function y({pluginName:t,signal:n}){return(await e.get(`/plugins/${t}/config`,{signal:n})).data}async function b({pluginName:t,signal:n}){return(await e.get(`/plugins/${t}/contract`,{signal:n})).data}async function x({pluginName:t,signal:n}){return(await e.get(`/plugins/${t}/readme`,{signal:n})).data}async function S({pluginName:t,query:n,signal:r}){return(await e.get(`/plugins/${t}/changelog`,{params:n,signal:r})).data}async function C({pluginName:t,query:n,signal:r}){return(await e.get(`/plugins/${t}/compat`,{params:n,signal:r})).data}async function w({pluginName:t,signal:n}){return(await e.get(`/plugins/${t}/interface`,{signal:n})).data}async function T({parameter:t,signal:n}){return(await e.get(`/plugins`,{params:t,signal:n})).data}async function E({parameter:t,signal:n}){return(await e.get(`/plugins/extensions`,{params:t,signal:n})).data}async function D({pluginName:t}){return(await e.delete(`/plugins/${t}/log`)).data}async function O({pluginName:t,signal:n}){return(await e.get(`/plugins/${t}/log/download`,{signal:n})).data}async function k({parameter:t,signal:n}){return(await e.get(`/plugins/progress`,{params:t,signal:n})).data}async function A({query:t,parameter:n,refresh:r,signal:i}){return(await e.get(`/plugins/search`,{params:{...t,...n,...r?{refresh:!0}:{}},signal:i})).data}async function j({pluginName:t}){return(await e.put(`/plugins/${t}/enable`)).data}async function M({pluginName:t,configData:n}){return(await e.patch(`/plugins/${t}/config`,n)).data}async function N({pluginname:t,configData:n}){return(await e.put(`/plugins/${t}/config`,n)).data}async function P({pluginname:t,configData:n}){return(await e.post(`/plugins/${t}/config`,n)).data}async function F({pluginName:t}){return(await e.put(`/plugins/${t}/disable`)).data}async function I({pluginName:t}){return(await e.put(`/plugins/${t}/start`)).data}async function L({pluginName:t}){return(await e.put(`/plugins/${t}/stop`)).data}async function R({pluginName:t}){return(await e.put(`/plugins/${t}/restart`)).data}async function z({pluginName:t,removeStorage:n}){return(await e.delete(`/plugins/${t}`,{params:{removeStorage:n},timeout:l})).data}async function B(){return(await e.delete(`/plugins`,{timeout:l})).data}var V=class{_queryClient=i();t=t.global.t;toast=n();queryActivator=s([{name:`getPluginQuery`,enabled:!0},{name:`getPluginsQuery`,enabled:!0},{name:`getPluginsExtensionsQuery`,enabled:!0},{name:`searchPluginsQuery`,enabled:!0},{name:`getPluginVersionsQuery`,enabled:!0},{name:`getPluginUpdateQuery`,enabled:!0},{name:`getPluginLogoQuery`,enabled:!0},{name:`getPluginConfigQuery`,enabled:!0},{name:`getPluginContractQuery`,enabled:!0},{name:`getPluginReadmeQuery`,enabled:!0},{name:`getPluginInterfaceQuery`,enabled:!0},{name:`getPluginChangelogQuery`,enabled:!0},{name:`getPluginCompatQuery`,enabled:!0},{name:`getPluginsProgressQuery`,enabled:!0},{name:`installPluginQuery`,enabled:!0},{name:`enablePluginQuery`,enabled:!0},{name:`disablePluginQuery`,enabled:!0},{name:`patchPluginConfigQuery`,enabled:!0},{name:`setPluginConfigQuery`,enabled:!0},{name:`submitPluginConfigQuery`,enabled:!0},{name:`startPluginQuery`,enabled:!0},{name:`stopPluginQuery`,enabled:!0},{name:`restartPluginQuery`,enabled:!0},{name:`uninstallPluginQuery`,enabled:!0},{name:`uninstallPluginsQuery`,enabled:!0},{name:`downloadLogQuery`,enabled:!0}]);get queryClient(){return this._queryClient}installPluginQuery(){return a({mutationFn:u,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`pluginsList`]}),await this._queryClient.refetchQueries({queryKey:[`plugins`]}),await this._queryClient.refetchQueries({queryKey:[`pluginsSearch`]}),await this._queryClient.refetchQueries({queryKey:[`pluginsProgress`]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.plugin_installed`),life:3e3})}})}getPluginQuery(e){return r({queryKey:[`plugins`,e],queryFn:({signal:t})=>h({pluginName:o(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginQuery`&&e.enabled)})}getPluginsQuery(e){return r({queryKey:[`pluginsList`,e],queryFn:({signal:t})=>T({parameter:o(e),signal:t}),placeholderData:e=>e,enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginsQuery`&&e.enabled)})}getPluginsExtensionsQuery(e){return r({queryKey:[`extensionsList`,e],queryFn:({signal:t})=>E({parameter:o(e),signal:t}),placeholderData:e=>e,enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginsExtensionsQuery`&&e.enabled)})}getPluginsProgressQuery(e){return r({queryKey:[`pluginsProgress`,e],queryFn:({signal:t})=>k({parameter:o(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginsProgressQuery`&&e.enabled)})}searchPluginsQuery(e,t,n){return r({queryKey:[`pluginsSearch`,e,t],queryFn:({signal:r})=>A({query:o(e),parameter:o(t),refresh:o(n),signal:r}),placeholderData:e=>e,enabled:()=>this.queryActivator.value.some(e=>e.name===`searchPluginsQuery`&&e.enabled)})}getPluginVersionsQuery(e){return r({queryKey:[`plugins`,e,`versions`],queryFn:({signal:t})=>g({pluginname:o(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginVersionsQuery`&&e.enabled)})}getPluginUpdateQuery(e){return r({queryKey:[`plugins`,e,`update`],queryFn:({signal:t})=>_({pluginName:o(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginUpdateQuery`&&e.enabled)})}getPluginLogoQuery(e){return r({queryKey:[`plugins`,e,`logo`],queryFn:({signal:t})=>v({pluginName:o(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginLogoQuery`&&e.enabled)})}getPluginConfigQuery(e){return r({queryKey:[`plugins`,e,`config`],queryFn:({signal:t})=>y({pluginName:o(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginConfigQuery`&&e.enabled)})}getPluginContractQuery(e){return r({queryKey:[`plugins`,e,`contract`],queryFn:({signal:t})=>b({pluginName:o(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginContractQuery`&&e.enabled)})}getPluginReadmeQuery(e){return r({queryKey:[`plugins`,e,`readme`],queryFn:({signal:t})=>x({pluginName:o(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginReadmeQuery`&&e.enabled),retry:(e,t)=>t instanceof Error&&t.message.includes(`404`)?!1:e<3})}getPluginInterfaceQuery(e){return r({queryKey:[`plugins`,e,`interface`],queryFn:({signal:t})=>w({pluginName:o(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginInterfaceQuery`&&e.enabled)})}getPluginChangelogQuery(e,t){return r({queryKey:[`plugins`,e,`changelog`],queryFn:({signal:n})=>S({pluginName:o(e),query:o(t),signal:n}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginChangelogQuery`&&e.enabled),retry:(e,t)=>t instanceof Error&&t.message.includes(`404`)?!1:e<3})}getPluginCompatQuery(e,t){return r({queryKey:[`plugins`,e,`compat`],queryFn:({signal:n})=>C({pluginName:o(e),query:o(t),signal:n}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getPluginCompatQuery`&&e.enabled)})}patchPluginConfigQuery(){return a({mutationFn:M,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`plugins`,t.pluginName]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.plugin_config_updated`),life:3e3})}})}startPluginQuery(){return a({mutationFn:I,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`plugins`,t.pluginName]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.plugin_started`),life:3e3})}})}stopPluginQuery(){return a({mutationFn:L,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`plugins`,t.pluginName]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.plugin_stopped`),life:3e3})}})}restartPluginQuery(){return a({mutationFn:R,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`plugins`,t.pluginName]}),await this._queryClient.refetchQueries({queryKey:[`pluginsList`]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.plugin_restarted`),life:3e3})}})}setPluginConfigQuery(){return a({mutationFn:N,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`plugins`,t.pluginname,t.configData]})}})}submitPluginConfigQuery(){return a({mutationFn:P,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`plugins`,t.pluginname,t.configData]})}})}enablePluginQuery(){return a({mutationFn:j,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`pluginsList`]}),await this._queryClient.refetchQueries({queryKey:[`plugins`,t.pluginName]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.plugin_enabled`),life:3e3})}})}disablePluginQuery(){return a({mutationFn:F,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`pluginsList`]}),await this._queryClient.refetchQueries({queryKey:[`plugins`,t.pluginName]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.plugin_disabled`),life:3e3})}})}uninstallPluginQuery(){return a({mutationFn:z,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`pluginsList`]}),await this._queryClient.refetchQueries({queryKey:[`pluginsSearch`]}),await this._queryClient.refetchQueries({queryKey:[`pluginsProgress`]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.plugin_removed`),life:3e3})}})}uninstallPluginsQuery(){return a({mutationFn:B,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`pluginsList`]}),await this._queryClient.refetchQueries({queryKey:[`pluginsSearch`]}),this.toast.add({severity:`success`,detail:this.t(`components.toast.plugins_removed`),life:3e3})}})}downloadLogQuery(e){return r({queryKey:[`logs`,e],queryFn:({signal:t})=>O({pluginName:o(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`downloadLogQuery`&&e.enabled)})}clearLogQuery(){return a({mutationFn:D,onSuccess:async(e,t)=>{await this._queryClient.refetchQueries({queryKey:[`logs`,t.pluginName],exact:!0}),this.toast.add({severity:`success`,detail:this.t(`components.toast.log_cleared`),life:3e3})}})}toggleQueryActivator(e,t){let n=this.queryActivator.value.find(t=>t.name===e);return n&&(n.enabled=t),this}};export{m as a,S as c,d as i,_ as l,p as n,D as o,f as r,O as s,V as t,u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Ar as e,yr as t}from"./api-
|
|
1
|
+
import{Ar as e,yr as t}from"./api-2VPaKkqc.js";import{J as n,U as r}from"./vendor-AX0A8AMd.js";async function i({signal:t}={}){return(await e.get(`/rooms`,{signal:t})).data}async function a(t){return(await e.post(`/rooms`,t)).data}async function o(t){await e.delete(`/rooms/${t}`)}var s=class{queryClient=n();getRoomsQuery(){return t({queryKey:[`rooms`],queryFn:({signal:e})=>i({signal:e}),staleTime:1e4})}createRoomMutation(){return r({mutationFn:a,onSuccess:async()=>{await this.queryClient.refetchQueries({queryKey:[`rooms`],exact:!0})}})}deleteRoomMutation(){return r({mutationFn:o,onSuccess:async()=>{await Promise.all([this.queryClient.refetchQueries({queryKey:[`rooms`],exact:!0}),this.queryClient.refetchQueries({queryKey:[`cameras`]})])}})}};export{i as n,s as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Fr as e}from"./vendor-cameraui-
|
|
1
|
+
import{Fr as e}from"./vendor-cameraui-ZyqPntQ7.js";import{$ as t,J as n,Jn as r,K as i,Q as a,Wt as o,X as s,Y as c,Z as l,Zt as u,et as d,nn as f,q as p}from"./api-2VPaKkqc.js";import{Mn as m,in as h,rr as g,sn as _}from"./vendor-AX0A8AMd.js";import{t as v}from"./lightbulb-outline-BtraGBwO.js";import{n as y,t as b}from"./cube-scan-BR5la6Qx.js";var x={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function S(e,t){return m(),_(`svg`,x,[...t[0]||=[h(`path`,{fill:`currentColor`,d:`m22 12l-2 1l-1 1l-1-1l-1 3l-1-3l-1 8l-1-8l-1 2l-1-2l-1 4l-1-4l-1 9l-1-9l-1 6l-1-6l-1 1l-1-1l-2-1l2-1l1-1l1 1l1-6l1 6l1-9l1 9l1-4l1 4l1-2l1 2l1-8l1 8l1-3l1 3l1-1l1 1z`},null,-1)]])}var C=g({name:`mdi-waveform`,render:S}),w={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function T(e,t){return m(),_(`svg`,w,[...t[0]||=[h(`path`,{fill:`currentColor`,d:`M16 10H8V6h8m.67-2H15V2H9v2H7.33A1.33 1.33 0 0 0 6 5.33v15.34C6 21.4 6.6 22 7.33 22h9.34A1.33 1.33 0 0 0 18 20.67V5.33C18 4.6 17.4 4 16.67 4`},null,-1)]])}var E=g({name:`mdi-battery-70`,render:T}),D={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function O(e,t){return m(),_(`svg`,D,[...t[0]||=[h(`path`,{fill:`currentColor`,d:`M12 18a6 6 0 0 1-6-6a6 6 0 0 1 6-6a6 6 0 0 1 6 6a6 6 0 0 1-6 6m8-2.69L23.31 12L20 8.69V4h-4.69L12 .69L8.69 4H4v4.69L.69 12L4 15.31V20h4.69L12 23.31L15.31 20H20z`},null,-1)]])}var k=g({name:`mdi-brightness-5`,render:O}),A={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function j(e,t){return m(),_(`svg`,A,[...t[0]||=[h(`path`,{fill:`currentColor`,d:`M5 7a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h3v-2H5V9h3V7zm6 0a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2zm0 2h2v6h-2zm5 1.5V12h3v1.5h-1.5A1.5 1.5 0 0 0 16 15v3h4.5v-1.5h-3V15H19a1.5 1.5 0 0 0 1.5-1.5V12a1.5 1.5 0 0 0-1.5-1.5z`},null,-1)]])}var M=g({name:`mdi-molecule-co2`,render:j}),N={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function P(e,t){return m(),_(`svg`,N,[...t[0]||=[h(`path`,{fill:`currentColor`,d:`M4 18h9l-2 2H4c-.5 0-1.03-.21-1.41-.59S2 18.5 2 18V8h2zM17.63 4.84C17.27 4.33 16.67 4 16 4H8c-1.1 0-2 .9-2 2v8c0 1.1.9 2 2 2h8c.67 0 1.27-.34 1.63-.85L22 10zM16 14H8V6h8l3.55 4Z`},null,-1)]])}var F=g({name:`mdi-label-multiple-outline`,render:P}),I={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function L(e,t){return m(),_(`svg`,I,[...t[0]||=[h(`path`,{fill:`currentColor`,d:`M15.5 9c.7 0 1.29-.24 1.77-.73c.49-.48.73-1.07.73-1.77c0-.67-.24-1.27-.73-1.77c-.48-.5-1.07-.73-1.77-.73c-.67 0-1.27.23-1.77.73S13 5.83 13 6.5c0 .7.23 1.29.73 1.77c.5.49 1.1.73 1.77.73m3.81-.09l3.1 3.09L21 13.41l-3.14-3.1c-.78.47-1.58.69-2.39.69c-1.25 0-2.31-.42-3.17-1.3c-.85-.87-1.3-1.93-1.3-3.2c0-1.23.45-2.3 1.33-3.17C13.2 2.45 14.27 2 15.5 2c1.27 0 2.33.45 3.2 1.33c.88.87 1.3 1.94 1.3 3.17c0 .83-.22 1.63-.69 2.41M16.5 18h-11l2.75-3.5l1.97 2.33l2.72-3.52zm1.5-5l2 2v5c0 .55-.19 1-.59 1.4c-.41.39-.88.6-1.41.6H4c-.55 0-1-.21-1.4-.6c-.39-.4-.6-.85-.6-1.4V6c0-.53.21-1 .6-1.41C3 4.19 3.45 4 4 4h5.5c-.3.64-.47 1.31-.5 2H4v14h14z`},null,-1)]])}var R=g({name:`mdi-image-search-outline`,render:L}),z={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function B(e,t){return m(),_(`svg`,z,[...t[0]||=[h(`path`,{fill:`currentColor`,d:`M8 3c-1.11 0-2 .89-2 2v16h12V5c0-1.11-.89-2-2-2zm0 2h8v14H8zm5 6v2h2v-2z`},null,-1)]])}var V=g({name:`mdi-door`,render:B}),H={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function U(e,t){return m(),_(`svg`,H,[...t[0]||=[h(`path`,{fill:`currentColor`,d:`M12 3.25S6 10 6 14c0 3.32 2.69 6 6 6a6 6 0 0 0 6-6c0-4-6-10.75-6-10.75m2.47 6.72l1.06 1.06l-6 6l-1.06-1.06M9.75 10A1.25 1.25 0 0 1 11 11.25a1.25 1.25 0 0 1-1.25 1.25a1.25 1.25 0 0 1-1.25-1.25A1.25 1.25 0 0 1 9.75 10m4.5 4.5a1.25 1.25 0 0 1 1.25 1.25A1.25 1.25 0 0 1 14.25 17A1.25 1.25 0 0 1 13 15.75a1.25 1.25 0 0 1 1.25-1.25`},null,-1)]])}var W=g({name:`mdi-water-percent`,render:U}),ee={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function G(e,t){return m(),_(`svg`,ee,[...t[0]||=[h(`path`,{fill:`currentColor`,d:`M9.61 16.11c0-2.08.98-3.92 2.49-5.11H5l1.5-4.5h11l1.22 3.66c.84.37 1.58.91 2.19 1.58L18.92 6c-.2-.58-.76-1-1.42-1h-11c-.66 0-1.22.42-1.42 1L3 12v8c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-1h4.29c-.43-.87-.68-1.85-.68-2.89M6.5 16c-.83 0-1.5-.67-1.5-1.5S5.67 13 6.5 13s1.5.67 1.5 1.5S7.33 16 6.5 16m14.21 4.7l-.01.01zm-4.6-9.09c2.5 0 4.5 2 4.5 4.5c0 .89-.25 1.71-.69 2.39L23 21.61L21.61 23l-3.11-3.07c-.7.43-1.5.68-2.39.68c-2.5 0-4.5-2-4.5-4.5s2-4.5 4.5-4.5m0 2a2.5 2.5 0 1 0 2.5 2.5c0-1.39-1.11-2.5-2.5-2.5`},null,-1)]])}var K=g({name:`mdi-car-search`,render:G}),q={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function J(e,t){return m(),_(`svg`,q,[...t[0]||=[h(`path`,{fill:`currentColor`,d:`M12 17a2 2 0 0 1-2-2c0-1.11.89-2 2-2a2 2 0 0 1 2 2a2 2 0 0 1-2 2m6 3V10H6v10zm0-12a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V10c0-1.11.89-2 2-2h1V6a5 5 0 0 1 5-5a5 5 0 0 1 5 5v2zm-6-5a3 3 0 0 0-3 3v2h6V6a3 3 0 0 0-3-3`},null,-1)]])}var Y=g({name:`mdi-lock-outline`,render:J}),X={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Z(e,t){return m(),_(`svg`,X,[...t[0]||=[h(`path`,{fill:`currentColor`,d:`M21 16.5c0 .38-.21.71-.53.88l-7.9 4.44c-.16.12-.36.18-.57.18s-.41-.06-.57-.18l-7.9-4.44A.99.99 0 0 1 3 16.5v-9c0-.38.21-.71.53-.88l7.9-4.44c.16-.12.36-.18.57-.18s.41.06.57.18l7.9 4.44c.32.17.53.5.53.88zM12 4.15L6.04 7.5L12 10.85l5.96-3.35zM5 15.91l6 3.38v-6.71L5 9.21zm14 0v-6.7l-6 3.37v6.71z`},null,-1)]])}var Q=g({name:`mdi-cube-outline`,render:Z}),$={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function te(e,t){return m(),_(`svg`,$,[...t[0]||=[h(`path`,{fill:`currentColor`,d:`M12 3L2 12h3v8h14v-8h3zm0 5.75A2.25 2.25 0 0 1 14.25 11A2.25 2.25 0 0 1 12 13.25A2.25 2.25 0 0 1 9.75 11A2.25 2.25 0 0 1 12 8.75M12 15c1.5 0 4.5.75 4.5 2.25V18h-9v-.75c0-1.5 3-2.25 4.5-2.25`},null,-1)]])}var ne=g({name:`mdi-home-account`,render:te}),re={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function ie(e,t){return m(),_(`svg`,re,[...t[0]||=[h(`path`,{fill:`currentColor`,d:`M16 7V3h-2v4h-4V3H8v4C7 7 6 8 6 9v5.5L9.5 18v3h5v-3l3.5-3.5V9c0-1-1-2-2-2m0 6.67l-2.91 2.92l-.42.41h-1.34l-.41-.41L8 13.67V9.09c0-.03.06-.09.09-.09h7.83c.03 0 .08.06.08.09z`},null,-1)]])}var ae=g({name:`mdi-power-plug-outline`,render:ie}),oe={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function se(e,t){return m(),_(`svg`,oe,[...t[0]||=[h(`path`,{fill:`currentColor`,d:`M8 14.25L4.75 11H7c.25-5.61 2.39-10 5-10c2 0 3.77 2.64 4.55 6.45C20.36 8.23 23 10 23 12c0 1.83-2.17 3.43-5.4 4.3l.29-2.03C19.8 13.72 21 12.91 21 12c0-1.06-1.65-2-4.13-2.5c.08.79.13 1.63.13 2.5c0 6.08-2.24 11-5 11c-1.83 0-3.43-2.17-4.3-5.4l2.03.29C10.28 19.8 11.09 21 12 21c1.66 0 3-4.03 3-9q0-1.5-.15-2.85Q13.5 9 12 9l-1.86.06l.29-2.01L12 7c.87 0 1.71.05 2.5.13C14 4.65 13.06 3 12 3c-1.54 0-2.82 3.5-3 8h2.25zM14.25 16L11 19.25V17c-5.61-.25-10-2.39-10-5c0-1.83 2.17-3.43 5.4-4.3l-.29 2.03C4.2 10.28 3 11.09 3 12c0 1.54 3.5 2.82 8 3v-2.25z`},null,-1)]])}var ce=g({name:`mdi-rotate-orbit`,render:se}),le={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function ue(e,t){return m(),_(`svg`,le,[...t[0]||=[h(`path`,{fill:`currentColor`,d:`M21 11c0 5.55-3.84 10.74-9 12c-5.16-1.26-9-6.45-9-12V5l9-4l9 4zm-9 10c3.75-1 7-5.46 7-9.78V6.3l-7-3.12L5 6.3v4.92C5 15.54 8.25 20 12 21m-1-7h2v3h3v-5h2l-6-5l-6 5h2v5h3z`},null,-1)]])}var de=g({name:`mdi-shield-home-outline`,render:ue}),fe={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function pe(e,t){return m(),_(`svg`,fe,[...t[0]||=[h(`path`,{fill:`currentColor`,d:`M17 6H7c-3.31 0-6 2.69-6 6s2.69 6 6 6h10c3.31 0 6-2.69 6-6s-2.69-6-6-6m0 10H7c-2.21 0-4-1.79-4-4s1.79-4 4-4h10c2.21 0 4 1.79 4 4s-1.79 4-4 4m0-7c-1.66 0-3 1.34-3 3s1.34 3 3 3s3-1.34 3-3s-1.34-3-3-3`},null,-1)]])}var me=g({name:`mdi-toggle-switch-outline`,render:pe}),he={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function ge(e,t){return m(),_(`svg`,he,[...t[0]||=[h(`path`,{fill:`currentColor`,d:`M15 13V5a3 3 0 0 0-6 0v8a5 5 0 1 0 6 0m-3-9a1 1 0 0 1 1 1v3h-2V5a1 1 0 0 1 1-1`},null,-1)]])}var _e=g({name:`mdi-thermometer`,render:ge}),ve={[e.Motion]:o,[e.Object]:b,[e.Audio]:C,[e.Face]:r,[e.LicensePlate]:K,[e.Classifier]:F,[e.Clip]:R,[e.ObjectAssist]:Q,[e.Contact]:V,[e.Temperature]:_e,[e.Humidity]:W,[e.Occupancy]:ne,[e.Smoke]:c,[e.Leak]:i,[e.Gas]:t,[e.CarbonMonoxide]:a,[e.CarbonDioxide]:M,[e.Heat]:d,[e.Cold]:n,[e.Vibration]:p,[e.Tamper]:s,[e.Problem]:f,[e.Power]:ae,[e.Illuminance]:k,[e.Light]:v,[e.Siren]:y,[e.Switch]:me,[e.Lock]:Y,[e.PTZ]:ce,[e.SecuritySystem]:de,[e.Garage]:l,[e.Doorbell]:u,[e.Battery]:E};function ye(e){return ve[e]??o}export{Y as n,ye as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Ar as e,Sr as t,xr as n,yr as r}from"./api-
|
|
1
|
+
import{Ar as e,Sr as t,xr as n,yr as r}from"./api-2VPaKkqc.js";import{J as i,U as a,hr as o,sr as s}from"./vendor-AX0A8AMd.js";async function c({signal:t,cameraId:n}){return(await e.get(`/sensors`,{signal:t,params:n?{camera:n}:void 0})).data.sensors}async function l({data:t}){return(await e.post(`/sensors`,t)).data}async function u({id:t,data:n}){return(await e.patch(`/sensors/${t}`,n)).data}async function d({id:t}){await e.delete(`/sensors/${t}`)}async function f({ids:t}){return(await e.delete(`/sensors`,{data:{ids:t}})).data}async function p({id:t,signal:n}){return(await e.get(`/sensors/${t}/history`,{signal:n})).data.history}var m=class{_queryClient=i();t=t.global.t;toast=n();queryActivator=s([{name:`getSensorsQuery`,enabled:!0},{name:`getCameraSensorsQuery`,enabled:!0}]);getSensorsQuery(){return r({queryKey:[`sensorsList`],queryFn:({signal:e})=>c({signal:e}),placeholderData:e=>e,enabled:()=>this.queryActivator.value.some(e=>e.name===`getSensorsQuery`&&e.enabled)})}getCameraSensorsQuery(e){return r({queryKey:[`sensorsList`,e],queryFn:({signal:t})=>c({signal:t,cameraId:o(e)}),placeholderData:e=>e,enabled:()=>this.queryActivator.value.some(e=>e.name===`getCameraSensorsQuery`&&e.enabled)})}createVirtualSensorQuery(){return a({mutationFn:l,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`sensorsList`]}),this.toast.add({severity:`success`,detail:this.t(`components.camera_options.virtual_sensor_created`),life:3e3})}})}patchSensorQuery(){return a({mutationFn:u,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`sensorsList`]})}})}deleteSensorQuery(){return a({mutationFn:d,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`sensorsList`]})}})}bulkDeleteSensorsQuery(){return a({mutationFn:f,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`sensorsList`]})}})}};export{p as n,m as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Ar as e,Sr as t,xr as n,yr as r}from"./api-
|
|
1
|
+
import{Ar as e,Sr as t,xr as n,yr as r}from"./api-2VPaKkqc.js";import{J as i,U as a,hr as o,sr as s}from"./vendor-AX0A8AMd.js";async function c(){return(await e.get(`/server`)).data}async function l(t){return(await e.patch(`/server`,t)).data}async function u(){return(await e.get(`/server/certificate`)).data}async function d(t){let n=new FormData;return n.append(`cert`,t.cert),n.append(`key`,t.key),t.chain&&n.append(`chain`,t.chain),(await e.post(`/server/certificate`,n)).data}async function f(){return(await e.delete(`/server/certificate`)).data}async function p({serverData:t}){return(await e.post(`/server/update`,t,{timeout:96e4})).data}async function m({signal:t}){return(await e.get(`/server/version`,{signal:t})).data}async function h({version:t,signal:n}){return(await e.get(`/server/changelog`,{params:{version:t},signal:n})).data}async function g(t){let n=t&&t!==`all`?{source:t}:void 0;return(await e.delete(`/server/log`,{params:n})).data}async function _({signal:t,source:n}){let r=n&&n!==`all`?{source:n}:void 0;return(await e.get(`/server/log/download`,{signal:t,params:r})).data}async function v(){return(await e.post(`/server/cert`,{responseType:`arraybuffer`})).data}async function y({signal:t}){return(await e.get(`/server/go2rtc`,{signal:t})).data}async function b(){return(await e.put(`/server/restart`)).data}async function x(){return(await e.put(`/server/restart/go2rtc`)).data}async function S(){return(await e.put(`/server/reset`)).data}var C=class{_queryClient=i();t=t.global.t;toast=n();queryActivator=s([{name:`downloadLogQuery`,enabled:!0},{name:`getGo2RtcInfoQuery`,enabled:!0},{name:`checkVersionQuery`,enabled:!0},{name:`getServerChangelogQuery`,enabled:!0},{name:`getServerInfoQuery`,enabled:!0}]);get queryClient(){return this._queryClient}getServerInfoQuery(){return r({queryKey:[`server`],queryFn:c})}patchSystemInfoQuery(){return a({mutationFn:l,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`server`],exact:!0}),this.toast.add({severity:`success`,detail:this.t(`components.toast.server_updated`),life:3e3})}})}updateServerQuery(){return a({mutationFn:p,onSuccess:async()=>{this.toast.add({severity:`success`,detail:this.t(`components.toast.server_updated`),life:3e3})}})}downloadLogQuery(e){return r({queryKey:[`logs`,`server`,e??`all`],queryFn:({signal:t})=>_({signal:t,source:o(e)}),enabled:()=>this.queryActivator.value.some(e=>e.name===`downloadLogQuery`&&e.enabled)})}downloadCertQuery(){return a({mutationFn:v})}clearLogQuery(){return a({mutationFn:e=>g(e),onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`logs`,`server`],exact:!1}),this.toast.add({severity:`success`,detail:this.t(`components.toast.log_cleared`),life:3e3})}})}checkVersionQuery(){return r({queryKey:[`version`],queryFn:({signal:e})=>m({signal:e}),enabled:()=>this.queryActivator.value.some(e=>e.name===`checkVersionQuery`&&e.enabled)})}getServerChangelogQuery(e){return r({queryKey:[`version`,`changelog`,e],queryFn:({signal:t})=>h({version:o(e),signal:t}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getServerChangelogQuery`&&e.enabled),retry:(e,t)=>t instanceof Error&&t.message.includes(`404`)?!1:e<3})}getGo2RtcInfoQuery(){return r({queryKey:[`go2rtc`],queryFn:({signal:e})=>y({signal:e}),enabled:()=>this.queryActivator.value.some(e=>e.name===`getGo2RtcInfoQuery`&&e.enabled)})}restartGo2RtcQuery(){return a({mutationFn:x,onSuccess:async()=>{this.toast.add({severity:`success`,detail:this.t(`components.toast.go2rtc_restarted`),life:3e3})}})}restartServerQuery(){return a({mutationFn:b,onSuccess:async()=>{this.toast.add({severity:`success`,detail:this.t(`components.toast.server_restarted`),life:3e3})},onError:e=>{let t=e?.response?.status;if(t===void 0||t>=500){this.toast.add({severity:`success`,detail:this.t(`components.toast.server_restarted`),life:3e3});return}this.toast.add({severity:`error`,detail:e,life:3e3})}})}resetServerQuery(){return a({mutationFn:S,onSuccess:async()=>{this.toast.add({severity:`success`,detail:this.t(`components.toast.server_resetted`),life:3e3})}})}toggleQueryActivator(e,t){let n=this.queryActivator.value.find(t=>t.name===e);return n&&(n.enabled=t),this}};export{u as a,x as c,d,_ as i,b as l,g as n,h as o,v as r,f as s,C as t,p as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Ei as e,si as t}from"./vendor-cameraui-
|
|
1
|
+
import{Ei as e,si as t}from"./vendor-cameraui-ZyqPntQ7.js";import"./api-2VPaKkqc.js";import{Kn as n,ar as r,sr as i,wn as a}from"./vendor-AX0A8AMd.js";import{f as o}from"./vendor-core-DN-bpg68.js";async function s(e){}function c(){if(typeof window>`u`)return null;let e=new URLSearchParams(window.location.search).get(`cui_theme`);return e===`dark`||e===`light`?e:null}function l(){let e={theme:`dark`,autoMode:!0},t=localStorage.getItem(`theme`);if(!t)return e;if(t===`dark`||t===`light`)return{theme:t,autoMode:!1};try{let n=JSON.parse(t);return n?.theme!==`dark`&&n?.theme!==`light`?e:{theme:n.theme,autoMode:n.autoMode!==!1}}catch{return e}}var u=o(`theme`,()=>{let o=l(),u=c();u&&(o.theme=u,o.autoMode=!1);let d=e(o.theme,{onBeforeChange(){if(!p.value)return!1},onChanged(e){o.theme=e,localStorage.setItem(`theme`,JSON.stringify(o))}}),f=e(o.autoMode,{onBeforeChange(e){if(e&&!p.value)return!1},onChanged(e){o.autoMode=e,localStorage.setItem(`theme`,JSON.stringify(o))}}),p=i(!0),m=r([`light`,`dark`]);function h(){return window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`}function g(){return f.value?h():d.value}function _(e){switch(document.documentElement.setAttribute(`data-mode`,e),document.documentElement.style.background=e===`dark`?`#0d0d0d`:`#f8fafc`,e){case`light`:document.documentElement.classList.remove(`dark-mode`),document.documentElement.classList.add(`light-mode`);break;case`dark`:document.documentElement.classList.remove(`light-mode`),document.documentElement.classList.add(`dark-mode`)}s(e)}function v(e){f.value=!1,d.value=e}function y(){f.value?(f.value=!1,d.value=`light`):d.value===`light`?d.value=`dark`:f.value=!0}let b=t(`(prefers-color-scheme: dark)`);return n(f,e=>{e&&(d.value=h())},{immediate:!0,deep:!0}),n(d,e=>{a(()=>{_(e),p.value=!0}),p.value=!1}),n(b,e=>{f.value&&(d.value=e?`dark`:`light`)}),_(g()),{colors:m,theme:d,autoMode:f,setAppTheme:_,getSystemMode:h,toggleTheme:y,applyHostTheme:v}});export{u as n,l as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Br as e,Hr as t,Ur as n,Vr as r}from"./vendor-cameraui-OySaGjmo.js";import{C as i,S as a,_ as o,a as s,b as c,c as l,d as u,f as ee,g as d,h as f,i as p,l as m,m as te,o as h,p as ne,s as g,u as _,v as re,w as v,x as y,y as b}from"./vendor-zod-B0ZFM2Pr.js";o({tempToken:c().trim().min(1,`Temporary token is required`),code:c().trim().min(1,`Code is required`)}).strict(),o({code:c().trim().length(6,`Code must be 6 digits`)}).strict(),o({code:c().trim().min(1,`Code is required`)}).strict(),o({code:c().trim().min(1,`Code is required`)}).strict(),o({grant_type:c().optional(),username:c().trim().min(1,`Username is required`),password:c().min(1,`Password is required`),scope:c().optional(),client_id:c().optional(),client_secret:c().optional()}),o({refresh_token:c().min(1,`Refresh token is required`)}),o({id:c()}),o({name:c().trim().min(1,`Name is required`).max(64,`Name is too long`)}).strict(),o({id:c()});function ie(e){return{privacyFallback:e?.privacyFallback??`send`,motion:e?.motion??[],object:e?.object??[],privacy:e?.privacy??[],alert:e?.alert??[],lines:e?.lines??[]}}function ae(e){let t=[`kasa://`,`nest:`,`ring:`,`tapo://`];return e.some(e=>t.some(t=>e.startsWith(t)))}var oe=o({enabled:_().default(!0),mode:g([`continuous`,`event`,`adhoc`]).default(`continuous`),preBuffer:d().min(0).max(60).default(10),sources:m(g([`high`,`mid`,`low`])).default([`high`,`mid`,`low`])}).strict(),se={enabled:!0,mode:`continuous`,preBuffer:10,sources:[`high`,`mid`,`low`]},ce=o({enabled:_().default(!0),video:_().default(!1),audio:c().trim().min(1).array().default([]),sensors:c().trim().min(1).array().default([]),cooldown:d().min(0).max(600).default(30),speed:g([`immediate`,`balanced`,`best`]).default(`balanced`)}).strict(),le={enabled:!0,video:!1,audio:[`glass_break`,`scream`,`gunshot`,`alarm`,`siren`,`smoke_alarm`],sensors:[`doorbell`,`contact`,`siren`,`security_system`,`smoke`,`gas`,`carbonMonoxide`,`heat`,`leak`,`cold`,`vibration`,`tamper`,`problem`],cooldown:30,speed:`balanced`},ue=c().trim().min(1,`Detection label is required`),de=c().trim().min(1,`Zone label is required`),x=y([d(),d()]),fe=c().trim().regex(/^#([0-9A-Fa-f]{3}){1,2}$/,`Must be a valid hex color (e.g. #FF0000 or #F00)`).default(`#df2a4c`),pe=o({name:c().trim().min(1,`Zone Name is required`),points:x.array().min(3,`At least 3 points are required`),color:fe}).array(),me=o({name:c().trim().min(1,`Zone Name is required`),points:x.array().min(3,`At least 3 points are required`),type:a([f(`intersect`),f(`contain`)]).default(`intersect`),labels:de.array(),color:fe}).array(),he=o({name:c().trim().min(1,`Zone Name is required`),points:x.array().min(3,`At least 3 points are required`),dropDetections:_().default(!0)}).array(),ge=o({name:c().trim().min(1,`Zone Name is required`),points:x.array().min(3,`At least 3 points are required`),labels:ue.array(),faces:c().trim().min(1).array().optional(),plates:c().trim().min(1).array().optional(),match:a([f(`anchor`),f(`intersect`),f(`contain`)]).default(`contain`),color:c().trim().regex(/^#([0-9A-Fa-f]{3}){1,2}$/,`Must be a valid hex color (e.g. #FF0000 or #F00)`).default(`#df2a4c`)}).array(),_e=o({name:c().trim().min(1,`Line Name is required`),points:y([x,x]),direction:a([f(`both`),f(`a-to-b`),f(`b-to-a`)]),labels:ue.array(),color:c().trim().regex(/^#([0-9A-Fa-f]{3}){1,2}$/,`Must be a valid hex color (e.g. #FF0000 or #F00)`).default(`#df2a4c`)}).array(),ve=o({privacyFallback:a([f(`send`),f(`drop`)]).default(`send`),motion:pe.default([]),object:me.default([]),privacy:he.default([]),alert:ge.default([]),lines:_e.default([])}).strict(),S=o({motion:o({resolution:a([f(`low`),f(`medium`),f(`high`)]),timeout:d().min(10,`Minimum 10 seconds`)}),object:o({confidences:o({person:d().min(.3,`Minimum 0.3`).max(1,`Maximum 1`).default(.5),vehicle:d().min(.3,`Minimum 0.3`).max(1,`Maximum 1`).default(.5),animal:d().min(.3,`Minimum 0.3`).max(1,`Maximum 1`).default(.5)}).default({person:.5,vehicle:.5,animal:.5}),suppressStatic:_().default(!0),timeout:d().min(10,`Minimum 10 seconds`).default(15)}),audio:o({minDecibels:d().min(-100,`Minimum -100 dBFS`).max(0,`Maximum 0 dBFS`),timeout:d().min(10,`Minimum 10 seconds`),confidence:d().min(0,`Minimum 0`).max(1,`Maximum 1`).default(.7)}),face:o({confidence:d().min(0,`Minimum 0`).max(1,`Maximum 1`).default(.5),matchThreshold:d().min(.3,`Minimum 0.3`).max(.95,`Maximum 0.95`).default(.55)}).default({confidence:.5,matchThreshold:.55}),licensePlate:o({confidence:d().min(0,`Minimum 0`).max(1,`Maximum 1`).default(.3),ocrConfidence:d().min(0,`Minimum 0`).max(1,`Maximum 1`).default(.9),minLength:d().int().min(1,`Minimum 1`).max(10,`Maximum 10`).default(4)}).default({confidence:.3,ocrConfidence:.9,minLength:4}),sensor:o({timeout:d().min(10,`Minimum 10 seconds`),triggers:m(c().trim().min(1,`Sensor id is required`)).default([])}),cascadeDetection:_().default(!0),cascadeTimeout:d().min(1,`Minimum 1 second`).max(300,`Maximum 300 seconds`).default(10),snooze:_().default(!1)}),ye=o({from:c().regex(/^\d{1,2}:\d{2}$/,`Use HH:mm`),to:c().regex(/^\d{1,2}:\d{2}$/,`Use HH:mm`),timezone:c().trim().min(1,`Timezone is required`)}),be={enabled:!1,targetLabels:[`person`],minConfidence:.5,triggerDeadZone:.05,trackingSpeed:2,leadMs:1800,panRate:.85,returnToHome:!1,homeWaitMs:1e4,minTargetSize:0,maxTargetSize:0},C=o({enabled:_().default(!1),targetLabels:c().trim().min(1,`Target label is required`).array().default([`person`]),minConfidence:d().min(.3,`Minimum 0.3`).max(1,`Maximum 1`).default(.5),triggerDeadZone:d().min(0,`Minimum 0`).max(.3,`Maximum 0.3`).default(.05),trackingSpeed:d().min(1,`Minimum 1`).max(5,`Maximum 5`).default(2),leadMs:d().min(0,`Minimum 0`).max(4e3,`Maximum 4000 ms`).default(1800),panRate:d().min(.1,`Minimum 0.1`).max(3,`Maximum 3`).default(.85),returnToHome:_().default(!1),homeWaitMs:d().min(1e3,`Minimum 1000 ms`).max(6e4,`Maximum 60000 ms`).default(1e4),minTargetSize:d().min(0,`Minimum 0`).max(.5,`Maximum 0.5`).default(0),maxTargetSize:d().min(0,`Minimum 0`).max(1,`Maximum 1`).default(0),activeHours:ye.optional()}),w=a([f(`high-resolution`),f(`mid-resolution`),f(`low-resolution`),f(`snapshot`)]),xe=a([f(`high-resolution`),f(`mid-resolution`),f(`low-resolution`)]),T=a([f(`bubble://`),f(`cui://`),f(`doorbird://`),f(`dvrip://`),f(`eseecloud://`),f(`ffmpeg:`),f(`flussonic://`),f(`gopro://`),f(`hass:`),f(`homekit://`),f(`http://`),f(`https://`),f(`httpx://`),f(`isapi://`),f(`ivideon:`),f(`kasa://`),f(`nest:`),f(`onvif://`),f(`ring:`),f(`roborock://`),f(`rtmp://`),f(`rtsp://`),f(`rtspx://`),f(`tapo://`),f(`tcp://`),f(`tuya://`),f(`xiaomi://`),f(`yandex:`),f(`webrtc:`),f(`webtorrent:`),f(`wyze://`)]).options.map(e=>e.value),Se=RegExp(`^(${T.join(`|`)})`),E=c().refine(e=>{if(!Se.test(e))return!1;try{return new URL(e),!0}catch{return!1}},{message:`Invalid URL format or unsupported protocol`});function D(e,t){let n=new Set;e.forEach((e,r)=>{let i=e.name.replace(/ /g,`_`).toLowerCase();n.has(i)&&t.addIssue({code:`custom`,message:`Source name is already used by another source`,path:[r,`name`]}),n.add(i)})}var Ce=o({_id:c().default(r()).transform(()=>r()),name:c().trim().min(1,`Camera Source Name is required`).transform(e=>e.replace(/ /g,`_`).toLowerCase()),role:w,useForSnapshot:_().default(!1),hotMode:_().default(!0),preload:_().default(!0),muted:_().default(!1),backchannelDisabled:_().default(!1),urls:E.array().min(1,`At least one valid URL is required`),childSourceId:c().trim().min(1,`Child Source ID is required`).nullish().transform(e=>e??void 0).optional()}).strict().transform(e=>e.role===`snapshot`?{...e,useForSnapshot:!1,hotMode:!1,preload:!1}:e),we=o({_id:c().default(r()).transform(()=>r()),name:c().trim().min(1,`Camera Source Name is required`).transform(e=>e.replace(/ /g,`_`).toLowerCase()),role:w,useForSnapshot:_().default(!1),hotMode:_().default(!0),preload:_().default(!0),muted:_().default(!1),backchannelDisabled:_().default(!1),urls:E.array().min(1,`At least one valid URL is required`),childSourceId:c().trim().min(1,`Child Source ID is required`).nullish().transform(e=>e??void 0).optional()}).strict().transform(e=>e.role===`snapshot`?{...e,useForSnapshot:!1,hotMode:!1,preload:!1}:e),O=o({id:c(),name:c().trim()}),k=o({motion:O.optional(),object:O.optional(),objectAssist:O.optional(),audio:O.optional(),face:O.optional(),licensePlate:O.optional(),ptz:O.optional(),battery:O.optional(),cameraController:O.optional(),clip:O.optional(),classifier:O.array().optional(),light:O.array().optional(),siren:O.array().optional(),switch:O.array().optional(),securitySystem:O.array().optional(),contact:O.array().optional(),doorbell:O.array().optional(),lock:O.array().optional(),temperature:O.array().optional(),humidity:O.array().optional(),occupancy:O.array().optional(),smoke:O.array().optional(),leak:O.array().optional(),garage:O.array().optional(),gas:O.array().optional(),carbonMonoxide:O.array().optional(),carbonDioxide:O.array().optional(),heat:O.array().optional(),cold:O.array().optional(),vibration:O.array().optional(),tamper:O.array().optional(),problem:O.array().optional(),power:O.array().optional(),illuminance:O.array().optional(),hub:O.array().optional()}).strict(),Te=a([f(`auto`),f(`mse`),f(`webrtc`),f(`webrtc/tcp`)]),Ee=c().regex(/^\d+(?:\.\d+)?:\d+(?:\.\d+)?$/,`Use a width:height ratio, e.g. 16:9`).refine(e=>{let[t,n]=e.split(`:`).map(Number);return Number.isFinite(t)&&Number.isFinite(n)&&t>0&&n>0},`Both sides must be greater than 0`).transform(e=>e),A=o({hardware:g([`auto`,`cpu`,`cuda`,`vaapi`,`qsv`,`videotoolbox`,`d3d11va`,`d3d12va`,`dxva2`,`vulkan`,`opencl`,`drm`,`rkmpp`]).default(`auto`),device:c().trim().max(128).optional()}).strict(),j=o({mainStreamAnalysis:_().default(!1),decoder:A.optional(),workerDecoder:A.nullable().transform(e=>e??void 0).optional()}),M=a([f(`camera`),f(`doorbell`)]),De=a([f(`auto`),f(`high`),f(`mid`),f(`low`)]),Oe=a([f(`always-on`),f(`activity`),f(`standby`)]),N=o({streamingMode:Te,streamingSource:xe,playbackSource:De.default(`auto`),activityMode:Oe.default(`always-on`),aspectRatio:Ee}),P=o({model:c().trim().optional(),manufacturer:c().trim().optional(),hardware:c().trim().optional(),serialNumber:c().trim().optional(),firmwareVersion:c().trim().optional(),supportUrl:c().trim().optional()}),ke=o({id:c(),name:c().trim()}).strict(),F=o({autoRefresh:_().default(!0),ttl:d().min(10,`Minimum 10 seconds`).max(60,`Maximum 60 seconds`).default(50),interval:d().min(10,`Minimum 10 seconds`).max(60,`Maximum 60 seconds`).default(60)}).strict(),I=o({_id:c().default(r()).transform(()=>r()),nativeId:c().trim().optional(),pluginInfo:ke.optional(),disabled:_().default(!1),name:c().trim().min(1,`Camera name is required`),room:c().trim().min(1,`Room is required`).default(`Default`),roomId:c().trim().min(1).nullable().default(null),type:M.default(`camera`),isCloud:_().default(!1),snapshotSettings:F.default({autoRefresh:!0,ttl:50,interval:60}),info:P.default({model:`IP Camera`,manufacturer:`camera.ui`,hardware:`Camera`,serialNumber:`Unknown`,firmwareVersion:`Unknown`,supportUrl:`Unknown`}),sources:Ce.array().refine(e=>e.some(e=>e.role===`high-resolution`||e.role===`mid-resolution`||e.role===`low-resolution`),{path:[`sources[].role`],message:`One of the roles "high-resolution", "mid-resolution" or "low-resolution" is required`}).refine(e=>e.filter(e=>e.useForSnapshot).length<=1,{message:`Only one source can be used for snapshot`,path:[`sources`]}).refine(e=>{let t=e.map(e=>e.role).filter(Boolean);return new Set(t).size===t.length},{message:`Each source role can be assigned to only one source`,path:[`sources`]}).superRefine(D),plugins:O.array().default([]),assignments:k.default({}),interfaceSettings:N.default({streamingMode:`webrtc`,streamingSource:`high-resolution`,playbackSource:`auto`,activityMode:`always-on`,aspectRatio:`16:9`}),zones:ve.default(ie()),detectionSettings:S.default({motion:{resolution:`low`,timeout:30},object:{confidences:{person:.5,vehicle:.5,animal:.5},suppressStatic:!0,timeout:15},audio:{minDecibels:-40,timeout:30,confidence:.7},face:{confidence:.5,matchThreshold:.55},licensePlate:{confidence:.3,ocrConfidence:.9,minLength:4},sensor:{timeout:30,triggers:[]},cascadeDetection:!0,cascadeTimeout:10,snooze:!1}),ptzAutotrack:C.default(be),recordingSettings:oe.default(se),notificationSettings:ce.default(le),frameWorkerSettings:j.default({mainStreamAnalysis:!1})}).strict();function Ae(){let{_id:e,name:t,sources:n,nativeId:r,pluginInfo:i,...a}=I.parse({name:`default`,sources:[{name:`default`,role:`high-resolution`,urls:[`rtsp://localhost`]}]});return a}I.transform(e=>{let t=e.sources.flatMap(e=>e.urls);return e.isCloud||ae(t)?{...e,isCloud:!0}:{...e}});var je=o({disabled:_().optional(),type:M.optional(),name:c().trim().min(1,`Camera name is required`).optional(),room:c().trim().min(1,`Room is required`).optional(),roomId:c().trim().min(1).nullable().optional(),isCloud:_().optional(),snapshotSettings:F.partial().optional(),info:P.partial().optional(),sources:we.array().refine(e=>e.some(e=>e.role===`high-resolution`||e.role===`mid-resolution`||e.role===`low-resolution`),{path:[`sources[].role`],message:`One of the roles "high-resolution", "mid-resolution" or "low-resolution" is required`}).refine(e=>e.filter(e=>e.useForSnapshot).length<=1,{message:`Only one source can be used for snapshot`,path:[`sources`]}).refine(e=>{let t=e.map(e=>e.role).filter(Boolean);return new Set(t).size===t.length},{message:`Each source role can be assigned to only one source`,path:[`sources`]}).superRefine(D).optional(),plugins:O.array().optional(),assignments:k.partial().optional(),interfaceSettings:N.partial().optional(),zones:ve.optional(),detectionSettings:S.partial().optional(),ptzAutotrack:C.partial().optional(),recordingSettings:oe.partial().optional(),notificationSettings:ce.partial().optional(),frameWorkerSettings:j.partial().optional()}).strict().transform(e=>{if(e.sources){let t=e.sources.flatMap(e=>e.urls);if(e.isCloud===!0||ae(t))return{...e,isCloud:!0}}return e});o({url:c().trim().refine(e=>!/^\s*(exec|echo|expr):/i.test(e),`Command-execution stream sources are not allowed`)}).strict(),o({cameraname:c()}),o({cameraname:c(),sourcename:c()}),o({cameraid:c(),sourcename:c()}),o({cameraname:c(),pluginname:c()}),o({cameraname:c(),scope:c(),pluginname:c()}),o({cameraname:c(),pluginname:c(),sensorId:c()}),o({cameraname:c(),scope:c(),pluginname:c(),sensorId:c()}),o({type:c().optional()}),o({video:p().optional(),audio:p().optional(),microphone:p().optional(),refresh:p().optional()}),o({forceNew:p().optional()}),o({cameranames:m(c().min(1)).min(1).max(1e3),cameraData:o({disabled:_().optional(),detectionSettings:o({snooze:_()}).optional(),recordingSettings:o({enabled:_()}).optional()}).refine(e=>e.disabled!==void 0||e.detectionSettings!==void 0||e.recordingSettings!==void 0,{message:`Nothing to update`})}),o({cameranames:m(c().min(1)).min(1).max(1e3)});var Me=o({id:c().trim().min(1),name:c().trim().min(1,`Level name is required`).max(64),order:d().int().min(0).default(0)}),Ne=o({id:c().trim().min(1),roomId:c().trim().min(1),name:c().trim().min(1,`Room name is required`).max(64),levelId:c().trim().min(1),outdoor:_().default(!1),publicSpace:_().default(!1),note:c().trim().max(240).default(``),x:d(),y:d(),width:d().min(1),height:d().min(1)}),Pe=o({id:c().trim().min(1),fromRoomId:c().trim().min(1),toRoomId:c().trim().min(1),fromShapeId:c().trim().min(1).nullable().default(null),toShapeId:c().trim().min(1).nullable().default(null),offset:d().nullable().default(null),width:d().min(10).max(2e3).default(90),note:c().trim().max(240).default(``),type:g([`door`,`opening`,`stairs`]).default(`door`)}),Fe=o({cameraId:c().trim().min(1),roomId:c().trim().min(1),note:c().trim().max(240).default(``),x:d(),y:d(),rotation:d(),fov:d().min(1).max(360),range:d().min(1)}),Ie=o({sensorId:c().trim().min(1),sensorType:c().trim().min(1),roomId:c().trim().min(1),connectionId:c().trim().min(1).nullable().default(null),note:c().trim().max(240).default(``),x:d(),y:d()});o({catalogVersion:d().int().min(0),north:d().nullable().default(null),levels:Me.array().max(20),rooms:Ne.array().max(200),connections:Pe.array().max(500),cameras:Fe.array().max(500),sensors:Ie.array().max(500)}).strict(),o({name:c().trim().min(1,`Name is required`).max(100,`Name cannot be more than 100 characters`),url:v(`Must be a valid URL`).trim(),credentials:o({username:c().trim().min(1,`Username is required`),password:c().min(1,`Password is required`)})}),o({name:c().trim().min(1,`Name is required`).max(100,`Name cannot be more than 100 characters`).optional(),url:v(`Must be a valid URL`).trim().optional(),credentials:o({username:c().trim().min(1,`Username is required`),password:c().min(1,`Password is required`)}).nullable().optional()}),o({id:c().min(1,`ID is required`)}),o({code:c().trim().min(1,`Code is required`).optional()}).optional(),o({ids:m(c().min(1)).min(1).max(1e3)});var L=/^[\w-]+(\/[\w-]+)*$/,Le=o({enabled:_().optional(),mode:g([`external`,`embedded`]).optional(),broker:o({port:d().int().min(1).max(65535).optional(),username:c().trim().max(200,`Username cannot be more than 200 characters`).nullable().optional(),password:c().max(500,`Password cannot be more than 500 characters`).nullable().optional()}).strict().optional(),host:c().trim().min(1,`Host is required`).max(253,`Host cannot be more than 253 characters`).nullable().optional(),port:d().int().min(1).max(65535).optional(),protocol:g([`mqtt`,`mqtts`]).optional(),username:c().trim().max(200,`Username cannot be more than 200 characters`).nullable().optional(),password:c().max(500,`Password cannot be more than 500 characters`).nullable().optional(),clientId:c().trim().min(1,`Client ID is required`).max(128,`Client ID cannot be more than 128 characters`).optional(),topicPrefix:c().trim().min(1,`Topic prefix is required`).max(128,`Topic prefix cannot be more than 128 characters`).regex(L,`Topic prefix may only contain letters, numbers, "_", "-" and "/" separators`).optional(),tls:o({rejectUnauthorized:_().optional(),ca:c().trim().nullable().optional(),cert:c().trim().nullable().optional(),key:c().trim().nullable().optional()}).strict().optional(),haDiscovery:o({enabled:_().optional(),prefix:c().trim().min(1,`Discovery prefix is required`).max(128,`Discovery prefix cannot be more than 128 characters`).regex(L,`Discovery prefix may only contain letters, numbers, "_", "-" and "/" separators`).optional()}).strict().optional()}).strict(),Re=/^((@[\w-.]*)\/)?(camera-ui-[\w-]*)$/,ze=function(e){return e.READY=`ready`,e.STARTING=`starting`,e.STARTED=`started`,e.STOPPING=`stopping`,e.STOPPED=`stopped`,e.ERROR=`error`,e.UNKNOWN=`unknown`,e.DISABLED=`disabled`,e.INCOMPATIBLE=`incompatible`,e.UPDATE_REQUIRED=`update_required`,e.SERVER_UPDATE_REQUIRED=`server_update_required`,e}({});function R(e){return e.mimetype!==void 0}function Be(e){return R(e)?Buffer.byteLength(e._buf):e.size}function Ve(e){return R(e)?e.mimetype:e.type}function z(e,t,n,r){return u().refine(t=>Be(t)<=e,n).refine(e=>t.includes(Ve(e)),r)}var He=o({start:s().optional(),page:s().optional(),pageSize:s().optional()}),Ue=[`image/jpeg`,`image/png`],We=2097152,Ge=[`video/mp4`,`video/quicktime`],Ke=10485760,qe=[`audio/mpeg`,`audio/wav`,`audio/ogg`],Je=2097152,B=()=>z(We,Ue,`Max file size is 2 MB`,`.jpeg and .png files are accepted`),V=u().transform(e=>JSON.parse(e.value)),H=u().transform(e=>JSON.parse(e.value)),Ye=u().transform(e=>JSON.parse(e.value)),Xe=o({pluginname:c().trim().refine(e=>Re.test(e),`Not a valid plugin name`),pluginversion:c().trim().refine(e=>/^[a-z][\w-]*$/i.test(e)||/^v?\d+\.\d+\.\d+(?:[-+][\w.-]+)?$/i.test(e),`Not a valid plugin version (expected a dist-tag or exact semver)`).optional().default(`latest`)}).strict();o({actionId:c(),payload:l()}).strict(),b(l(),l()),o({upload:B(),metadata:H,config:V}),o({upload:z(Je,qe,`Max file size is 2 MB`,`.mp3, .wav and .ogg files are accepted`),metadata:Ye,config:V}),o({upload:z(Ke,Ge,`Max file size is 5 MB`,`.mp4 files are accepted`),config:V}),o({upload:B(),metadata:H,config:V}),o({upload:B(),metadata:H,config:V}),o({upload:B(),metadata:H,config:V}),o({pluginname:c()}),o({scope:c(),pluginname:c()}),He.extend({pluginname:c().trim().optional(),refresh:p().optional()}),o({removeStorage:p().optional()}),o({pluginversion:c().trim().optional()}),o({pluginNames:m(c().trim().min(1)).min(1).max(1e3)}),o({plugins:m(Xe).min(1).max(1e3)});var Ze=o({enabled:_().optional(),directEnabled:_().optional(),directMode:g([`cloudflare`,`customDomain`]).optional(),customDomain:o({url:v(`Must be a valid URL`).trim().nullable()}).strict().optional(),cloudflare:o({mode:g([`quick`,`token`,`managed`]).optional(),hostname:c().trim().min(1,`Hostname is required`).max(253,`Hostname cannot be more than 253 characters`).nullable().optional(),token:c().trim().min(1,`Token is required`).nullable().optional()}).strict().optional()}).strict().refine(e=>!(e.directMode===`customDomain`&&!e.customDomain?.url),{message:`Custom domain URL is required when directMode is "customDomain"`,path:[`customDomain`,`url`]}).refine(e=>!(e.cloudflare?.mode&&e.cloudflare.mode!==`quick`&&!e.cloudflare?.hostname),{message:`Hostname is required when cloudflare.mode is "token" or "managed"`,path:[`cloudflare`,`hostname`]});o({mode:g([`cloudflare`,`customDomain`])}).strict(),o({hostname:c().trim().min(1,`Hostname is required`).max(253,`Hostname cannot be more than 253 characters`).regex(/^[a-z0-9.-]+\.[a-z]{2,}$/i,`Invalid hostname`)}).strict(),o({name:c().trim().min(1,`Name is required`).max(100,`Name cannot be more than 100 characters`).optional()}).strict(),o({name:c().trim().min(1,`Name is required`).max(100,`Name cannot be more than 100 characters`).optional()}).strict(),o({name:c().trim().min(1,`Server name is required`).max(100,`Server name cannot be more than 100 characters`)}).strict(),o({name:c().trim().min(1,`Room name is required`).max(64),levelId:c().trim().min(1).nullable().default(null),outdoor:_().default(!1),publicSpace:_().default(!1),note:c().trim().max(240).default(``)}).strict(),o({roomid:c().trim().min(1)});function Qe(){let e={};for(let n of t)e[n.type]={category:n.category,assignmentKey:n.assignmentKey,multiProvider:n.multiProvider,isDetectionType:n.isDetectionType,cameraBound:n.cameraBound??!1,...n.cascadeTrigger?{cascadeTrigger:n.cascadeTrigger}:{}};return e}var U=Qe();Object.fromEntries(t.filter(e=>e.propertyCapabilities).map(e=>[e.type,e.propertyCapabilities]));function $e(){return Object.entries(U).filter(([,e])=>e.multiProvider).map(([e])=>e)}function et(){return t.filter(e=>e.shortcutable).map(e=>e.type)}function tt(){return Object.entries(U).filter(([,e])=>e.isDetectionType).map(([e])=>e)}function nt(e){return U[e].assignmentKey}function rt(){return Object.entries(U).filter(([,e])=>e.category===n.Sensor&&!e.multiProvider).map(([e])=>e)}function it(){return Object.entries(U).filter(([,e])=>!e.multiProvider&&e.category!==n.Sensor).map(([e])=>e)}function at(){return Object.entries(U).filter(([,e])=>e.multiProvider).map(([e])=>e)}function ot(e){return!U[e].multiProvider}Object.fromEntries(t.map(e=>[e.type,Object.keys(e.properties)]));var W=Object.fromEntries(t.map(e=>[e.type,e.properties]));function st(e,t){return W[e]?.[t]}function ct(e){let t=W[e];return t?Object.entries(t).filter(([,e])=>!e.internal).map(([e])=>e):[]}function lt(e){let t=W[e];return t?Object.entries(t).filter(([,e])=>e.writable).map(([e])=>e):[]}function ut(e,t){let r=U[e];return r?r.category===n.Control||r.category===n.Trigger||t===`cameraui.virtual`&&!r.isDetectionType:!1}new Set($e()),new Set(tt());var dt=`cameraui.virtual`,ft=t.filter(e=>e.virtual).map(e=>e.type);Object.fromEntries(t.filter(e=>e.virtual).map(e=>[e.type,e.virtual?.properties??{}])),Object.fromEntries(t.filter(e=>e.virtual?.capabilities).map(e=>[e.type,e.virtual?.capabilities])),o({id:c().min(1,`Sensor ID is required`)});var pt=o({cameraId:c().min(1).optional(),type:g(ft),name:c().trim().min(1,`Name is required`).max(100,`Name cannot be more than 100 characters`)});o({displayName:c().trim().min(1,`Display name is required`).max(100,`Display name cannot be more than 100 characters`).optional(),assignedCameraIds:m(c().min(1)).optional(),exposed:_().optional()}).refine(e=>e.displayName!==void 0||e.assignedCameraIds!==void 0||e.exposed!==void 0,{message:`Nothing to update`}),o({property:c().trim().min(1,`Property is required`),value:i()}),o({ids:m(c()).min(1).max(1e4)}),o({version:c().trim().optional().default(`latest`)}).strict();var mt=o({serverAddresses:a([ne().trim(),te().trim()]).array().default([]),localUrl:a([f(``),v({protocol:/^https?$/})]).default(``).transform(e=>e.replace(/\/+$/,``))}).strict();o({version:c().trim()}).strict(),b(c(),l()),o({key:c()}).strict(),o({key:c(),payload:l()}).strict();var ht=[`de`,`en`],gt=[`image/jpeg`,`image/jpg`,`image/png`],_t=5242880,vt=o({index:d(),cameraId:c(),colSpan:d().optional(),rowSpan:d().optional(),x:d().optional(),y:d().optional()}),yt=a([f(1),f(4),f(6),f(7),f(9),f(10),f(12),f(13),f(15),f(16),f(20),f(26)]),bt=a([f(`dnd`),f(`view`)]),xt=g([`aspect`,`fill`,`cover`]),St=o({_id:c().default(r()).transform(()=>r()),name:c().trim().min(1,`Layout name is required`),viewSize:yt,cameras:vt.array(),type:bt,cardFit:xt.optional()});o({name:c().trim().min(1,`Layout name is required`),viewSize:yt,cameras:vt.array(),cardFit:xt}).partial().optional();var Ct=o({views:St.array()}),wt=t.filter(e=>e.shortcutable).map(e=>String(e.type)),Tt=g(wt),Et=o({_id:c().default(r()).transform(()=>r()),type:f(`camera`),cameraId:c(),points:x}),Dt=o({_id:c().default(r()).transform(()=>r()),type:f(`sensor`),sensorId:c(),sensorType:Tt,points:x}),Ot=ee(`type`,[Et,Dt]),kt=o({type:f(`camera`),cameraId:c(),points:x}).partial(),At=o({type:f(`sensor`),sensorId:c(),sensorType:Tt,points:x}).partial();a([kt,At]).optional();var jt=o({shortcuts:Ot.array()}),Mt=g([`auto`,...ht]),Nt=o({ungrouped:_()}),Pt=o({main:c().array(),manage:c().array(),system:c().array(),settings:c().array()}).partial(),Ft=o({main:_(),manage:_(),system:_(),settings:_()}).partial(),It=o({order:Pt.optional(),collapsible:Ft.optional(),settingsInNav:_().optional(),hidden:c().array().optional()}),Lt=o({language:Mt.optional(),camview:Ct,cameras:b(c().trim(),jt),recordings:Nt.optional(),navLayout:It.nullable().optional()}),G=c().trim().min(10,`Password must be at least 10 characters long`).regex(/[A-Z]/,`Password must contain at least one uppercase letter`).regex(/[!@#$%^&*()_+\-=[\]{};':"\\|,.<>/?]/,`Password must contain at least one special character (!@#$%^&*()_+-=[]{};:'"\\|,.<>/?)`).max(32,`Password cannot be more than 32 characters`),Rt=o({_id:c().default(r()).transform(()=>r()),username:c().trim().min(1,`Username is required`),password:G,passwordConfirm:c().trim().min(1,`Please confirm your password`),role:a([f(`admin`),f(`user`)]),firstLogin:_().default(!0),preferences:Lt.default({language:`auto`,camview:{views:[]},cameras:{}})}).strict().refine(e=>e.password===e.passwordConfirm,{path:[`passwordConfirm`],message:`Passwords do not match`});o({username:c().trim().min(1,`Username is required`),password:c().trim().min(1,`Password is required`),kind:g([`native`,`web`,`tv`]),persistent:_().default(!1),device:o({id:c().min(1,`Device id is required`).max(128,`Device id cannot be more than 128 characters`),name:c().trim().min(1,`Device name is required`).max(100,`Device name cannot be more than 100 characters`)})}).strict();var zt=o({username:c().trim().min(1,`Username is required`).optional(),password:G.optional(),passwordConfirm:c().trim().optional(),role:a([f(`admin`),f(`user`)]).optional(),upload:re(z(_t,gt,`Max file size is 5MB.`,`.jpg, .jpeg, .png files are accepted.`)),firstLogin:_().optional(),preferences:Lt.partial().optional()}).strict().refine(e=>e.password===e.passwordConfirm,{path:[`passwordConfirm`],message:`Passwords do not match`});o({username:c()}),o({username:c(),cameraname:c()}),o({username:c(),cameraname:c(),shortcutid:c()}),o({username:c(),viewid:c()}),o({username:c()}),o({cameraId:c().min(1,`Camera ID is required`),agentId:c().min(1,`Agent ID is required`)}),o({cameraId:c().min(1,`Camera ID is required`)}),o({agentId:c().min(1,`Agent ID is required`)}),o({version:c().min(1).optional()}).optional(),o({code:c().min(1,`Pairing code is required`),agentId:c().min(1,`Agent ID is required`),name:c().min(1,`Worker name is required`)}),o({pluginName:c().min(1,`Plugin name is required`),agentId:c().min(1,`Agent ID is required`)}),o({pluginName:c().min(1,`Plugin name is required`)}),o({name:c().trim().min(1,`Name is required`).max(64,`Maximum 64 characters`)}),o({enabled:_().optional(),address:c().trim().optional(),port:d().min(1024,`Minimum 1024`).max(65535,`Maximum 65535`).optional()}).strict();function K(e){return e.type===`string`&&!(`enum`in e)}function Bt(e){return e.type===`number`}function Vt(e){return e.type===`boolean`}function q(e){return e.type===`string`&&`enum`in e}function Ht(e){return e.type===`array`}function Ut(e){return e.type===`object`}function J(e){return e.type===`button`}function Y(e){return e.type===`submit`}function Wt(e){return K(e)&&(!e.format||e.format!==`qrCode`&&e.format!==`image`)}var Gt=(e,t)=>{let n=Q(t,e.key),r=e.value;switch(e.operator??`eq`){case`eq`:return n===r;case`neq`:return n==null||n===``?!1:n!==r;case`gt`:return typeof n==`number`&&typeof r==`number`&&n>r;case`lt`:return typeof n==`number`&&typeof r==`number`&&n<r;case`in`:return(Array.isArray(r)?r:[r]).includes(n);case`nin`:return n==null||n===``?!1:!(Array.isArray(r)?r:[r]).includes(n);default:return!0}};function X(e,t){return Array.isArray(e)?e.every(e=>Gt(e,t)):Gt(e,t)}function Kt(t,n){if(!t||Object.keys(t).length===0)return!0;let r=n.filter(e=>!J(e)&&!Y(e));for(let n of r){let r=Q(t,n.key),i=Z(n);if(r!==void 0&&!e(r,i,!0))return!1}return!0}function Z(e){if(`defaultValue`in e&&e.defaultValue!==void 0)return e.defaultValue;switch(e.type){case`string`:return q(e)?e.multiple?[]:e.required?e.enum[0]:``:``;case`number`:return 0;case`boolean`:return!1;case`array`:return[];case`object`:{let t={};for(let n of e.properties??[])J(n)||Y(n)||(t[n.key]=Z(n));return t}default:return}}function qt(e){let t={};for(let n of e)J(n)||Y(n)||(t[n.key]=Z(n));return t}function Jt(e){return e.split(`.`).reduce((e,t)=>{if(t.includes(`[`)){let[n,r]=t.split(`[`);e.push(n,r.slice(0,-1))}else e.push(t);return e},[])}function Yt(e){return!isNaN(Number(e))}function Q(e={},t){if(!t.includes(`.`)&&!t.includes(`[`))return e[t];let n=e;for(let e of Jt(t)){if(n==null)return;n=n[e]}return n}function Xt(e,t,n){if(!t.includes(`.`)&&!t.includes(`[`)){e[t]=n;return}let r=Jt(t),i=r.pop();if(!i)return;let a=e;for(let e=0;e<r.length;e++){let t=r[e];(typeof a[t]!=`object`||a[t]===null)&&(a[t]=Yt(r[e+1]??i)?[]:{}),a=a[t]}a[i]=n}function Zt(e,t){let n={};for(let r of e)if(`store`in r&&r.store&&!J(r)&&!Y(r)){let e=Q(t,r.key);e!==void 0&&(n[r.key]=e)}return n}function Qt(e,t){return t?e.filter(e=>`group`in e&&e.group===t):e}function $t(e,t){let n=Qt(e,t);return n.length>0&&n.every(e=>`readonly`in e&&e.readonly)}function en(e,t){let n=Qt(e,t);return n.length>0&&n.some(e=>`store`in e&&e.store)}function tn(e,t){if(!t)return!0;let n={"date-time":e=>/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(.\d+)?(Z|[+-]\d{2}:\d{2})?$/.test(e),date:e=>/^\d{4}-\d{2}-\d{2}$/.test(e),time:e=>/^([01]?[0-9]|2[0-3]):([0-5][0-9])(:([0-5][0-9]))?$/.test(e),email:e=>/^\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,7}\b$/.test(e),uuid:e=>/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/.test(e),ipv4:e=>/^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$/.test(e),ipv6:e=>/^\s*([0-9a-fA-F]{1,4}:){7}([0-9a-fA-F]{1,4})\s*$/.test(e)};return t in n?n[t](e):!0}function $(e){if(J(e)||Y(e))return l();switch(e.type){case`string`:if(q(e)){if(e.multiple){let t=m(c().trim().refine(t=>e.enum.includes(t),{error:`Invalid selection`}));return e.minItems===void 0?e.required&&(t=t.min(1,{error:`Required`})):t=t.min(e.minItems,{error:`Select at least ${e.minItems}`}),e.required?t:t.optional()}{let t=g(e.enum);return e.required?t:a([f(``),t]).optional()}}let t=c().trim();return e.required&&(t=t.nonempty(`Required`)),e.minLength!==void 0&&(t=t.min(e.minLength)),e.maxLength!==void 0&&(t=t.max(e.maxLength)),e.format&&(t=t.refine(t=>!t||t.trim()===``||tn(t,e.format),{message:`Invalid ${e.format} format`})),e.required?t:t.optional();case`number`:let n=d();return e.minimum!==void 0&&(n=n.min(e.minimum)),e.maximum!==void 0&&(n=n.max(e.maximum)),e.required&&(n=n.refine(e=>e!=null,{error:`Required`})),e.required?n:n.optional();case`boolean`:return e.required?_():_().optional();case`array`:{let t=e.items?$(e.items):l(),n=m(t);return e.minItems!==void 0&&(n=n.min(e.minItems,{error:`At least ${e.minItems} entries required`})),e.required?n:n.optional()}case`object`:{let t={};for(let n of e.properties??[])J(n)||Y(n)||(t[n.key]=$(n));let n=o(t);return e.required?n:n.optional()}default:return e.required?l():l().optional()}}var nn=(e,t,n)=>t.filter(e=>`group`in e&&e.group===n).some(t=>{let n=e[t.key];return n!=null&&n!==``});function rn(e){let t={},n=new Set;e.forEach(e=>{`group`in e&&e.group&&n.add(e.group)}),e.forEach(e=>{if(!J(e)&&!Y(e)){let n=`group`in e&&e.group,r=`condition`in e&&e.condition;(n||r)&&e.required?t[e.key]=$({...e,required:!1}):t[e.key]=$(e)}});let r=o(t),i=e.filter(e=>`condition`in e&&e.condition&&`required`in e&&e.required&&!J(e)&&!Y(e));return(n.size>0||i.length>0)&&(r=r.superRefine((t,r)=>{for(let i of n)if(nn(t,e,i)){let n=e.filter(e=>`group`in e&&e.group===i);for(let e of n)if(`required`in e&&e.required){if(`condition`in e&&e.condition&&!X(e.condition,t))continue;let n=t[e.key];(n==null||n===``)&&r.addIssue({code:h.custom,message:`Required`,path:[e.key]})}}for(let e of i)if(!(`group`in e&&e.group)&&`condition`in e&&e.condition&&X(e.condition,t)){let n=t[e.key];(n==null||n===``)&&r.addIssue({code:h.custom,message:`Required`,path:[e.key]})}})),r}export{w as $,ft as A,ut as B,G as C,pt as D,mt as E,ct as F,Je as G,qe as H,st as I,Le as J,Ke as K,et as L,nt as M,it as N,U as O,rt as P,_e as Q,lt as R,Rt as S,St as T,Ge as U,Ze as V,Ue as W,I as X,T as Y,Ae as Z,$t as _,rn as a,_t as b,Vt as c,q as d,me as et,Bt as f,Wt as g,Y as h,Zt as i,at as j,dt as k,J as l,K as m,qt as n,D as nt,Q as o,Ut as p,ze as q,Z as r,Ht as s,X as t,je as tt,Kt as u,en as v,zt as w,ht as x,Xt as y,ot as z};
|
|
1
|
+
import{Br as e,Hr as t,Ur as n,Vr as r}from"./vendor-cameraui-ZyqPntQ7.js";import{C as i,S as a,_ as o,a as s,b as c,c as l,d as u,f as ee,g as d,h as f,i as p,l as m,m as te,o as h,p as ne,s as g,u as _,v as re,w as v,x as y,y as b}from"./vendor-zod-B0ZFM2Pr.js";o({tempToken:c().trim().min(1,`Temporary token is required`),code:c().trim().min(1,`Code is required`)}).strict(),o({code:c().trim().length(6,`Code must be 6 digits`)}).strict(),o({code:c().trim().min(1,`Code is required`)}).strict(),o({code:c().trim().min(1,`Code is required`)}).strict(),o({grant_type:c().optional(),username:c().trim().min(1,`Username is required`),password:c().min(1,`Password is required`),scope:c().optional(),client_id:c().optional(),client_secret:c().optional()}),o({refresh_token:c().min(1,`Refresh token is required`)}),o({id:c()}),o({name:c().trim().min(1,`Name is required`).max(64,`Name is too long`)}).strict(),o({id:c()});function ie(e){return{privacyFallback:e?.privacyFallback??`send`,motion:e?.motion??[],object:e?.object??[],privacy:e?.privacy??[],alert:e?.alert??[],lines:e?.lines??[]}}function ae(e){let t=[`kasa://`,`nest:`,`ring:`,`tapo://`];return e.some(e=>t.some(t=>e.startsWith(t)))}var oe=o({enabled:_().default(!0),mode:g([`continuous`,`event`,`adhoc`]).default(`continuous`),preBuffer:d().min(0).max(60).default(10),sources:m(g([`high`,`mid`,`low`])).default([`high`,`mid`,`low`])}).strict(),se={enabled:!0,mode:`continuous`,preBuffer:10,sources:[`high`,`mid`,`low`]},ce=o({enabled:_().default(!0),video:_().default(!1),audio:c().trim().min(1).array().default([]),sensors:c().trim().min(1).array().default([]),cooldown:d().min(0).max(600).default(30),speed:g([`immediate`,`balanced`,`best`]).default(`balanced`)}).strict(),le={enabled:!0,video:!1,audio:[`glass_break`,`scream`,`gunshot`,`alarm`,`siren`,`smoke_alarm`],sensors:[`doorbell`,`contact`,`siren`,`security_system`,`smoke`,`gas`,`carbonMonoxide`,`heat`,`leak`,`cold`,`vibration`,`tamper`,`problem`],cooldown:30,speed:`balanced`},ue=c().trim().min(1,`Detection label is required`),de=c().trim().min(1,`Zone label is required`),x=y([d(),d()]),fe=c().trim().regex(/^#([0-9A-Fa-f]{3}){1,2}$/,`Must be a valid hex color (e.g. #FF0000 or #F00)`).default(`#df2a4c`),pe=o({name:c().trim().min(1,`Zone Name is required`),points:x.array().min(3,`At least 3 points are required`),color:fe}).array(),me=o({name:c().trim().min(1,`Zone Name is required`),points:x.array().min(3,`At least 3 points are required`),type:a([f(`intersect`),f(`contain`)]).default(`intersect`),labels:de.array(),color:fe}).array(),he=o({name:c().trim().min(1,`Zone Name is required`),points:x.array().min(3,`At least 3 points are required`),dropDetections:_().default(!0)}).array(),ge=o({name:c().trim().min(1,`Zone Name is required`),points:x.array().min(3,`At least 3 points are required`),labels:ue.array(),faces:c().trim().min(1).array().optional(),plates:c().trim().min(1).array().optional(),match:a([f(`anchor`),f(`intersect`),f(`contain`)]).default(`contain`),color:c().trim().regex(/^#([0-9A-Fa-f]{3}){1,2}$/,`Must be a valid hex color (e.g. #FF0000 or #F00)`).default(`#df2a4c`)}).array(),_e=o({name:c().trim().min(1,`Line Name is required`),points:y([x,x]),direction:a([f(`both`),f(`a-to-b`),f(`b-to-a`)]),labels:ue.array(),color:c().trim().regex(/^#([0-9A-Fa-f]{3}){1,2}$/,`Must be a valid hex color (e.g. #FF0000 or #F00)`).default(`#df2a4c`)}).array(),ve=o({privacyFallback:a([f(`send`),f(`drop`)]).default(`send`),motion:pe.default([]),object:me.default([]),privacy:he.default([]),alert:ge.default([]),lines:_e.default([])}).strict(),S=o({motion:o({resolution:a([f(`low`),f(`medium`),f(`high`)]),timeout:d().min(10,`Minimum 10 seconds`)}),object:o({confidences:o({person:d().min(.3,`Minimum 0.3`).max(1,`Maximum 1`).default(.5),vehicle:d().min(.3,`Minimum 0.3`).max(1,`Maximum 1`).default(.5),animal:d().min(.3,`Minimum 0.3`).max(1,`Maximum 1`).default(.5)}).default({person:.5,vehicle:.5,animal:.5}),suppressStatic:_().default(!0),timeout:d().min(10,`Minimum 10 seconds`).default(15)}),audio:o({minDecibels:d().min(-100,`Minimum -100 dBFS`).max(0,`Maximum 0 dBFS`),timeout:d().min(10,`Minimum 10 seconds`),confidence:d().min(0,`Minimum 0`).max(1,`Maximum 1`).default(.7)}),face:o({confidence:d().min(0,`Minimum 0`).max(1,`Maximum 1`).default(.5),matchThreshold:d().min(.3,`Minimum 0.3`).max(.95,`Maximum 0.95`).default(.55)}).default({confidence:.5,matchThreshold:.55}),licensePlate:o({confidence:d().min(0,`Minimum 0`).max(1,`Maximum 1`).default(.3),ocrConfidence:d().min(0,`Minimum 0`).max(1,`Maximum 1`).default(.9),minLength:d().int().min(1,`Minimum 1`).max(10,`Maximum 10`).default(4)}).default({confidence:.3,ocrConfidence:.9,minLength:4}),sensor:o({timeout:d().min(10,`Minimum 10 seconds`),triggers:m(c().trim().min(1,`Sensor id is required`)).default([])}),cascadeDetection:_().default(!0),cascadeTimeout:d().min(1,`Minimum 1 second`).max(300,`Maximum 300 seconds`).default(10),snooze:_().default(!1)}),ye=o({from:c().regex(/^\d{1,2}:\d{2}$/,`Use HH:mm`),to:c().regex(/^\d{1,2}:\d{2}$/,`Use HH:mm`),timezone:c().trim().min(1,`Timezone is required`)}),be={enabled:!1,targetLabels:[`person`],minConfidence:.5,triggerDeadZone:.05,trackingSpeed:2,leadMs:1800,panRate:.85,returnToHome:!1,homeWaitMs:1e4,minTargetSize:0,maxTargetSize:0},C=o({enabled:_().default(!1),targetLabels:c().trim().min(1,`Target label is required`).array().default([`person`]),minConfidence:d().min(.3,`Minimum 0.3`).max(1,`Maximum 1`).default(.5),triggerDeadZone:d().min(0,`Minimum 0`).max(.3,`Maximum 0.3`).default(.05),trackingSpeed:d().min(1,`Minimum 1`).max(5,`Maximum 5`).default(2),leadMs:d().min(0,`Minimum 0`).max(4e3,`Maximum 4000 ms`).default(1800),panRate:d().min(.1,`Minimum 0.1`).max(3,`Maximum 3`).default(.85),returnToHome:_().default(!1),homeWaitMs:d().min(1e3,`Minimum 1000 ms`).max(6e4,`Maximum 60000 ms`).default(1e4),minTargetSize:d().min(0,`Minimum 0`).max(.5,`Maximum 0.5`).default(0),maxTargetSize:d().min(0,`Minimum 0`).max(1,`Maximum 1`).default(0),activeHours:ye.optional()}),w=a([f(`high-resolution`),f(`mid-resolution`),f(`low-resolution`),f(`snapshot`)]),xe=a([f(`high-resolution`),f(`mid-resolution`),f(`low-resolution`)]),T=a([f(`bubble://`),f(`cui://`),f(`doorbird://`),f(`dvrip://`),f(`eseecloud://`),f(`ffmpeg:`),f(`flussonic://`),f(`gopro://`),f(`hass:`),f(`homekit://`),f(`http://`),f(`https://`),f(`httpx://`),f(`isapi://`),f(`ivideon:`),f(`kasa://`),f(`nest:`),f(`onvif://`),f(`ring:`),f(`roborock://`),f(`rtmp://`),f(`rtsp://`),f(`rtspx://`),f(`tapo://`),f(`tcp://`),f(`tuya://`),f(`xiaomi://`),f(`yandex:`),f(`webrtc:`),f(`webtorrent:`),f(`wyze://`)]).options.map(e=>e.value),Se=RegExp(`^(${T.join(`|`)})`),E=c().refine(e=>{if(!Se.test(e))return!1;try{return new URL(e),!0}catch{return!1}},{message:`Invalid URL format or unsupported protocol`});function D(e,t){let n=new Set;e.forEach((e,r)=>{let i=e.name.replace(/ /g,`_`).toLowerCase();n.has(i)&&t.addIssue({code:`custom`,message:`Source name is already used by another source`,path:[r,`name`]}),n.add(i)})}var Ce=o({_id:c().default(r()).transform(()=>r()),name:c().trim().min(1,`Camera Source Name is required`).transform(e=>e.replace(/ /g,`_`).toLowerCase()),role:w,useForSnapshot:_().default(!1),hotMode:_().default(!0),preload:_().default(!0),muted:_().default(!1),backchannelDisabled:_().default(!1),urls:E.array().min(1,`At least one valid URL is required`),childSourceId:c().trim().min(1,`Child Source ID is required`).nullish().transform(e=>e??void 0).optional()}).strict().transform(e=>e.role===`snapshot`?{...e,useForSnapshot:!1,hotMode:!1,preload:!1}:e),we=o({_id:c().default(r()).transform(()=>r()),name:c().trim().min(1,`Camera Source Name is required`).transform(e=>e.replace(/ /g,`_`).toLowerCase()),role:w,useForSnapshot:_().default(!1),hotMode:_().default(!0),preload:_().default(!0),muted:_().default(!1),backchannelDisabled:_().default(!1),urls:E.array().min(1,`At least one valid URL is required`),childSourceId:c().trim().min(1,`Child Source ID is required`).nullish().transform(e=>e??void 0).optional()}).strict().transform(e=>e.role===`snapshot`?{...e,useForSnapshot:!1,hotMode:!1,preload:!1}:e),O=o({id:c(),name:c().trim()}),k=o({motion:O.optional(),object:O.optional(),objectAssist:O.optional(),audio:O.optional(),face:O.optional(),licensePlate:O.optional(),ptz:O.optional(),battery:O.optional(),cameraController:O.optional(),clip:O.optional(),classifier:O.array().optional(),light:O.array().optional(),siren:O.array().optional(),switch:O.array().optional(),securitySystem:O.array().optional(),contact:O.array().optional(),doorbell:O.array().optional(),lock:O.array().optional(),temperature:O.array().optional(),humidity:O.array().optional(),occupancy:O.array().optional(),smoke:O.array().optional(),leak:O.array().optional(),garage:O.array().optional(),gas:O.array().optional(),carbonMonoxide:O.array().optional(),carbonDioxide:O.array().optional(),heat:O.array().optional(),cold:O.array().optional(),vibration:O.array().optional(),tamper:O.array().optional(),problem:O.array().optional(),power:O.array().optional(),illuminance:O.array().optional(),hub:O.array().optional()}).strict(),Te=a([f(`auto`),f(`mse`),f(`webrtc`),f(`webrtc/tcp`)]),Ee=c().regex(/^\d+(?:\.\d+)?:\d+(?:\.\d+)?$/,`Use a width:height ratio, e.g. 16:9`).refine(e=>{let[t,n]=e.split(`:`).map(Number);return Number.isFinite(t)&&Number.isFinite(n)&&t>0&&n>0},`Both sides must be greater than 0`).transform(e=>e),A=o({hardware:g([`auto`,`cpu`,`cuda`,`vaapi`,`qsv`,`videotoolbox`,`d3d11va`,`d3d12va`,`dxva2`,`vulkan`,`opencl`,`drm`,`rkmpp`]).default(`auto`),device:c().trim().max(128).optional()}).strict(),j=o({mainStreamAnalysis:_().default(!1),decoder:A.optional(),workerDecoder:A.nullable().transform(e=>e??void 0).optional()}),M=a([f(`camera`),f(`doorbell`)]),De=a([f(`auto`),f(`high`),f(`mid`),f(`low`)]),Oe=a([f(`always-on`),f(`activity`),f(`standby`)]),N=o({streamingMode:Te,streamingSource:xe,playbackSource:De.default(`auto`),activityMode:Oe.default(`always-on`),aspectRatio:Ee}),P=o({model:c().trim().optional(),manufacturer:c().trim().optional(),hardware:c().trim().optional(),serialNumber:c().trim().optional(),firmwareVersion:c().trim().optional(),supportUrl:c().trim().optional()}),ke=o({id:c(),name:c().trim()}).strict(),F=o({autoRefresh:_().default(!0),ttl:d().min(10,`Minimum 10 seconds`).max(60,`Maximum 60 seconds`).default(50),interval:d().min(10,`Minimum 10 seconds`).max(60,`Maximum 60 seconds`).default(60)}).strict(),I=o({_id:c().default(r()).transform(()=>r()),nativeId:c().trim().optional(),pluginInfo:ke.optional(),disabled:_().default(!1),name:c().trim().min(1,`Camera name is required`),room:c().trim().min(1,`Room is required`).default(`Default`),roomId:c().trim().min(1).nullable().default(null),type:M.default(`camera`),isCloud:_().default(!1),snapshotSettings:F.default({autoRefresh:!0,ttl:50,interval:60}),info:P.default({model:`IP Camera`,manufacturer:`camera.ui`,hardware:`Camera`,serialNumber:`Unknown`,firmwareVersion:`Unknown`,supportUrl:`Unknown`}),sources:Ce.array().refine(e=>e.some(e=>e.role===`high-resolution`||e.role===`mid-resolution`||e.role===`low-resolution`),{path:[`sources[].role`],message:`One of the roles "high-resolution", "mid-resolution" or "low-resolution" is required`}).refine(e=>e.filter(e=>e.useForSnapshot).length<=1,{message:`Only one source can be used for snapshot`,path:[`sources`]}).refine(e=>{let t=e.map(e=>e.role).filter(Boolean);return new Set(t).size===t.length},{message:`Each source role can be assigned to only one source`,path:[`sources`]}).superRefine(D),plugins:O.array().default([]),assignments:k.default({}),interfaceSettings:N.default({streamingMode:`webrtc`,streamingSource:`high-resolution`,playbackSource:`auto`,activityMode:`always-on`,aspectRatio:`16:9`}),zones:ve.default(ie()),detectionSettings:S.default({motion:{resolution:`low`,timeout:30},object:{confidences:{person:.5,vehicle:.5,animal:.5},suppressStatic:!0,timeout:15},audio:{minDecibels:-40,timeout:30,confidence:.7},face:{confidence:.5,matchThreshold:.55},licensePlate:{confidence:.3,ocrConfidence:.9,minLength:4},sensor:{timeout:30,triggers:[]},cascadeDetection:!0,cascadeTimeout:10,snooze:!1}),ptzAutotrack:C.default(be),recordingSettings:oe.default(se),notificationSettings:ce.default(le),frameWorkerSettings:j.default({mainStreamAnalysis:!1})}).strict();function Ae(){let{_id:e,name:t,sources:n,nativeId:r,pluginInfo:i,...a}=I.parse({name:`default`,sources:[{name:`default`,role:`high-resolution`,urls:[`rtsp://localhost`]}]});return a}I.transform(e=>{let t=e.sources.flatMap(e=>e.urls);return e.isCloud||ae(t)?{...e,isCloud:!0}:{...e}});var je=o({disabled:_().optional(),type:M.optional(),name:c().trim().min(1,`Camera name is required`).optional(),room:c().trim().min(1,`Room is required`).optional(),roomId:c().trim().min(1).nullable().optional(),isCloud:_().optional(),snapshotSettings:F.partial().optional(),info:P.partial().optional(),sources:we.array().refine(e=>e.some(e=>e.role===`high-resolution`||e.role===`mid-resolution`||e.role===`low-resolution`),{path:[`sources[].role`],message:`One of the roles "high-resolution", "mid-resolution" or "low-resolution" is required`}).refine(e=>e.filter(e=>e.useForSnapshot).length<=1,{message:`Only one source can be used for snapshot`,path:[`sources`]}).refine(e=>{let t=e.map(e=>e.role).filter(Boolean);return new Set(t).size===t.length},{message:`Each source role can be assigned to only one source`,path:[`sources`]}).superRefine(D).optional(),plugins:O.array().optional(),assignments:k.partial().optional(),interfaceSettings:N.partial().optional(),zones:ve.optional(),detectionSettings:S.partial().optional(),ptzAutotrack:C.partial().optional(),recordingSettings:oe.partial().optional(),notificationSettings:ce.partial().optional(),frameWorkerSettings:j.partial().optional()}).strict().transform(e=>{if(e.sources){let t=e.sources.flatMap(e=>e.urls);if(e.isCloud===!0||ae(t))return{...e,isCloud:!0}}return e});o({url:c().trim().refine(e=>!/^\s*(exec|echo|expr):/i.test(e),`Command-execution stream sources are not allowed`)}).strict(),o({cameraname:c()}),o({cameraname:c(),sourcename:c()}),o({cameraid:c(),sourcename:c()}),o({cameraname:c(),pluginname:c()}),o({cameraname:c(),scope:c(),pluginname:c()}),o({cameraname:c(),pluginname:c(),sensorId:c()}),o({cameraname:c(),scope:c(),pluginname:c(),sensorId:c()}),o({type:c().optional()}),o({video:p().optional(),audio:p().optional(),microphone:p().optional(),refresh:p().optional()}),o({forceNew:p().optional()}),o({cameranames:m(c().min(1)).min(1).max(1e3),cameraData:o({disabled:_().optional(),detectionSettings:o({snooze:_()}).optional(),recordingSettings:o({enabled:_()}).optional()}).refine(e=>e.disabled!==void 0||e.detectionSettings!==void 0||e.recordingSettings!==void 0,{message:`Nothing to update`})}),o({cameranames:m(c().min(1)).min(1).max(1e3)});var Me=o({id:c().trim().min(1),name:c().trim().min(1,`Level name is required`).max(64),order:d().int().min(0).default(0)}),Ne=o({id:c().trim().min(1),roomId:c().trim().min(1),name:c().trim().min(1,`Room name is required`).max(64),levelId:c().trim().min(1),outdoor:_().default(!1),publicSpace:_().default(!1),note:c().trim().max(240).default(``),x:d(),y:d(),width:d().min(1),height:d().min(1)}),Pe=o({id:c().trim().min(1),fromRoomId:c().trim().min(1),toRoomId:c().trim().min(1),fromShapeId:c().trim().min(1).nullable().default(null),toShapeId:c().trim().min(1).nullable().default(null),offset:d().nullable().default(null),width:d().min(10).max(2e3).default(90),note:c().trim().max(240).default(``),type:g([`door`,`opening`,`stairs`]).default(`door`)}),Fe=o({cameraId:c().trim().min(1),roomId:c().trim().min(1),note:c().trim().max(240).default(``),x:d(),y:d(),rotation:d(),fov:d().min(1).max(360),range:d().min(1)}),Ie=o({sensorId:c().trim().min(1),sensorType:c().trim().min(1),roomId:c().trim().min(1),connectionId:c().trim().min(1).nullable().default(null),note:c().trim().max(240).default(``),x:d(),y:d()});o({catalogVersion:d().int().min(0),north:d().nullable().default(null),levels:Me.array().max(20),rooms:Ne.array().max(200),connections:Pe.array().max(500),cameras:Fe.array().max(500),sensors:Ie.array().max(500)}).strict(),o({name:c().trim().min(1,`Name is required`).max(100,`Name cannot be more than 100 characters`),url:v(`Must be a valid URL`).trim(),credentials:o({username:c().trim().min(1,`Username is required`),password:c().min(1,`Password is required`)})}),o({name:c().trim().min(1,`Name is required`).max(100,`Name cannot be more than 100 characters`).optional(),url:v(`Must be a valid URL`).trim().optional(),credentials:o({username:c().trim().min(1,`Username is required`),password:c().min(1,`Password is required`)}).nullable().optional()}),o({id:c().min(1,`ID is required`)}),o({code:c().trim().min(1,`Code is required`).optional()}).optional(),o({ids:m(c().min(1)).min(1).max(1e3)});var L=/^[\w-]+(\/[\w-]+)*$/,Le=o({enabled:_().optional(),mode:g([`external`,`embedded`]).optional(),broker:o({port:d().int().min(1).max(65535).optional(),username:c().trim().max(200,`Username cannot be more than 200 characters`).nullable().optional(),password:c().max(500,`Password cannot be more than 500 characters`).nullable().optional()}).strict().optional(),host:c().trim().min(1,`Host is required`).max(253,`Host cannot be more than 253 characters`).nullable().optional(),port:d().int().min(1).max(65535).optional(),protocol:g([`mqtt`,`mqtts`]).optional(),username:c().trim().max(200,`Username cannot be more than 200 characters`).nullable().optional(),password:c().max(500,`Password cannot be more than 500 characters`).nullable().optional(),clientId:c().trim().min(1,`Client ID is required`).max(128,`Client ID cannot be more than 128 characters`).optional(),topicPrefix:c().trim().min(1,`Topic prefix is required`).max(128,`Topic prefix cannot be more than 128 characters`).regex(L,`Topic prefix may only contain letters, numbers, "_", "-" and "/" separators`).optional(),tls:o({rejectUnauthorized:_().optional(),ca:c().trim().nullable().optional(),cert:c().trim().nullable().optional(),key:c().trim().nullable().optional()}).strict().optional(),haDiscovery:o({enabled:_().optional(),prefix:c().trim().min(1,`Discovery prefix is required`).max(128,`Discovery prefix cannot be more than 128 characters`).regex(L,`Discovery prefix may only contain letters, numbers, "_", "-" and "/" separators`).optional()}).strict().optional()}).strict(),Re=/^((@[\w-.]*)\/)?(camera-ui-[\w-]*)$/,ze=function(e){return e.READY=`ready`,e.STARTING=`starting`,e.STARTED=`started`,e.STOPPING=`stopping`,e.STOPPED=`stopped`,e.ERROR=`error`,e.UNKNOWN=`unknown`,e.DISABLED=`disabled`,e.INCOMPATIBLE=`incompatible`,e.UPDATE_REQUIRED=`update_required`,e.SERVER_UPDATE_REQUIRED=`server_update_required`,e}({});function R(e){return e.mimetype!==void 0}function Be(e){return R(e)?Buffer.byteLength(e._buf):e.size}function Ve(e){return R(e)?e.mimetype:e.type}function z(e,t,n,r){return u().refine(t=>Be(t)<=e,n).refine(e=>t.includes(Ve(e)),r)}var He=o({start:s().optional(),page:s().optional(),pageSize:s().optional()}),Ue=[`image/jpeg`,`image/png`],We=2097152,Ge=[`video/mp4`,`video/quicktime`],Ke=10485760,qe=[`audio/mpeg`,`audio/wav`,`audio/ogg`],Je=2097152,B=()=>z(We,Ue,`Max file size is 2 MB`,`.jpeg and .png files are accepted`),V=u().transform(e=>JSON.parse(e.value)),H=u().transform(e=>JSON.parse(e.value)),Ye=u().transform(e=>JSON.parse(e.value)),Xe=o({pluginname:c().trim().refine(e=>Re.test(e),`Not a valid plugin name`),pluginversion:c().trim().refine(e=>/^[a-z][\w-]*$/i.test(e)||/^v?\d+\.\d+\.\d+(?:[-+][\w.-]+)?$/i.test(e),`Not a valid plugin version (expected a dist-tag or exact semver)`).optional().default(`latest`)}).strict();o({actionId:c(),payload:l()}).strict(),b(l(),l()),o({upload:B(),metadata:H,config:V}),o({upload:z(Je,qe,`Max file size is 2 MB`,`.mp3, .wav and .ogg files are accepted`),metadata:Ye,config:V}),o({upload:z(Ke,Ge,`Max file size is 5 MB`,`.mp4 files are accepted`),config:V}),o({upload:B(),metadata:H,config:V}),o({upload:B(),metadata:H,config:V}),o({upload:B(),metadata:H,config:V}),o({pluginname:c()}),o({scope:c(),pluginname:c()}),He.extend({pluginname:c().trim().optional(),refresh:p().optional()}),o({removeStorage:p().optional()}),o({pluginversion:c().trim().optional()}),o({pluginNames:m(c().trim().min(1)).min(1).max(1e3)}),o({plugins:m(Xe).min(1).max(1e3)});var Ze=o({enabled:_().optional(),directEnabled:_().optional(),directMode:g([`cloudflare`,`customDomain`]).optional(),customDomain:o({url:v(`Must be a valid URL`).trim().nullable()}).strict().optional(),cloudflare:o({mode:g([`quick`,`token`,`managed`]).optional(),hostname:c().trim().min(1,`Hostname is required`).max(253,`Hostname cannot be more than 253 characters`).nullable().optional(),token:c().trim().min(1,`Token is required`).nullable().optional()}).strict().optional()}).strict().refine(e=>!(e.directMode===`customDomain`&&!e.customDomain?.url),{message:`Custom domain URL is required when directMode is "customDomain"`,path:[`customDomain`,`url`]}).refine(e=>!(e.cloudflare?.mode&&e.cloudflare.mode!==`quick`&&!e.cloudflare?.hostname),{message:`Hostname is required when cloudflare.mode is "token" or "managed"`,path:[`cloudflare`,`hostname`]});o({mode:g([`cloudflare`,`customDomain`])}).strict(),o({hostname:c().trim().min(1,`Hostname is required`).max(253,`Hostname cannot be more than 253 characters`).regex(/^[a-z0-9.-]+\.[a-z]{2,}$/i,`Invalid hostname`)}).strict(),o({name:c().trim().min(1,`Name is required`).max(100,`Name cannot be more than 100 characters`).optional()}).strict(),o({name:c().trim().min(1,`Name is required`).max(100,`Name cannot be more than 100 characters`).optional()}).strict(),o({name:c().trim().min(1,`Server name is required`).max(100,`Server name cannot be more than 100 characters`)}).strict(),o({name:c().trim().min(1,`Room name is required`).max(64),levelId:c().trim().min(1).nullable().default(null),outdoor:_().default(!1),publicSpace:_().default(!1),note:c().trim().max(240).default(``)}).strict(),o({roomid:c().trim().min(1)});function Qe(){let e={};for(let n of t)e[n.type]={category:n.category,assignmentKey:n.assignmentKey,multiProvider:n.multiProvider,isDetectionType:n.isDetectionType,cameraBound:n.cameraBound??!1,...n.cascadeTrigger?{cascadeTrigger:n.cascadeTrigger}:{}};return e}var U=Qe();Object.fromEntries(t.filter(e=>e.propertyCapabilities).map(e=>[e.type,e.propertyCapabilities]));function $e(){return Object.entries(U).filter(([,e])=>e.multiProvider).map(([e])=>e)}function et(){return t.filter(e=>e.shortcutable).map(e=>e.type)}function tt(){return Object.entries(U).filter(([,e])=>e.isDetectionType).map(([e])=>e)}function nt(e){return U[e].assignmentKey}function rt(){return Object.entries(U).filter(([,e])=>e.category===n.Sensor&&!e.multiProvider).map(([e])=>e)}function it(){return Object.entries(U).filter(([,e])=>!e.multiProvider&&e.category!==n.Sensor).map(([e])=>e)}function at(){return Object.entries(U).filter(([,e])=>e.multiProvider).map(([e])=>e)}function ot(e){return!U[e].multiProvider}Object.fromEntries(t.map(e=>[e.type,Object.keys(e.properties)]));var W=Object.fromEntries(t.map(e=>[e.type,e.properties]));function st(e,t){return W[e]?.[t]}function ct(e){let t=W[e];return t?Object.entries(t).filter(([,e])=>!e.internal).map(([e])=>e):[]}function lt(e){let t=W[e];return t?Object.entries(t).filter(([,e])=>e.writable).map(([e])=>e):[]}function ut(e,t){let r=U[e];return r?r.category===n.Control||r.category===n.Trigger||t===`cameraui.virtual`&&!r.isDetectionType:!1}new Set($e()),new Set(tt());var dt=`cameraui.virtual`,ft=t.filter(e=>e.virtual).map(e=>e.type);Object.fromEntries(t.filter(e=>e.virtual).map(e=>[e.type,e.virtual?.properties??{}])),Object.fromEntries(t.filter(e=>e.virtual?.capabilities).map(e=>[e.type,e.virtual?.capabilities])),o({id:c().min(1,`Sensor ID is required`)});var pt=o({cameraId:c().min(1).optional(),type:g(ft),name:c().trim().min(1,`Name is required`).max(100,`Name cannot be more than 100 characters`)});o({displayName:c().trim().min(1,`Display name is required`).max(100,`Display name cannot be more than 100 characters`).optional(),assignedCameraIds:m(c().min(1)).optional(),exposed:_().optional()}).refine(e=>e.displayName!==void 0||e.assignedCameraIds!==void 0||e.exposed!==void 0,{message:`Nothing to update`}),o({property:c().trim().min(1,`Property is required`),value:i()}),o({ids:m(c()).min(1).max(1e4)}),o({version:c().trim().optional().default(`latest`)}).strict();var mt=o({serverAddresses:a([ne().trim(),te().trim()]).array().default([]),localUrl:a([f(``),v({protocol:/^https?$/})]).default(``).transform(e=>e.replace(/\/+$/,``))}).strict();o({version:c().trim()}).strict(),b(c(),l()),o({key:c()}).strict(),o({key:c(),payload:l()}).strict();var ht=[`de`,`en`],gt=[`image/jpeg`,`image/jpg`,`image/png`],_t=5242880,vt=o({index:d(),cameraId:c(),colSpan:d().optional(),rowSpan:d().optional(),x:d().optional(),y:d().optional()}),yt=a([f(1),f(4),f(6),f(7),f(9),f(10),f(12),f(13),f(15),f(16),f(20),f(26)]),bt=a([f(`dnd`),f(`view`)]),xt=g([`aspect`,`fill`,`cover`]),St=o({_id:c().default(r()).transform(()=>r()),name:c().trim().min(1,`Layout name is required`),viewSize:yt,cameras:vt.array(),type:bt,cardFit:xt.optional()});o({name:c().trim().min(1,`Layout name is required`),viewSize:yt,cameras:vt.array(),cardFit:xt}).partial().optional();var Ct=o({views:St.array()}),wt=t.filter(e=>e.shortcutable).map(e=>String(e.type)),Tt=g(wt),Et=o({_id:c().default(r()).transform(()=>r()),type:f(`camera`),cameraId:c(),points:x}),Dt=o({_id:c().default(r()).transform(()=>r()),type:f(`sensor`),sensorId:c(),sensorType:Tt,points:x}),Ot=ee(`type`,[Et,Dt]),kt=o({type:f(`camera`),cameraId:c(),points:x}).partial(),At=o({type:f(`sensor`),sensorId:c(),sensorType:Tt,points:x}).partial();a([kt,At]).optional();var jt=o({shortcuts:Ot.array()}),Mt=g([`auto`,...ht]),Nt=o({ungrouped:_()}),Pt=o({main:c().array(),manage:c().array(),system:c().array(),settings:c().array()}).partial(),Ft=o({main:_(),manage:_(),system:_(),settings:_()}).partial(),It=o({order:Pt.optional(),collapsible:Ft.optional(),settingsInNav:_().optional(),hidden:c().array().optional()}),Lt=o({language:Mt.optional(),camview:Ct,cameras:b(c().trim(),jt),recordings:Nt.optional(),navLayout:It.nullable().optional()}),G=c().trim().min(10,`Password must be at least 10 characters long`).regex(/[A-Z]/,`Password must contain at least one uppercase letter`).regex(/[!@#$%^&*()_+\-=[\]{};':"\\|,.<>/?]/,`Password must contain at least one special character (!@#$%^&*()_+-=[]{};:'"\\|,.<>/?)`).max(32,`Password cannot be more than 32 characters`),Rt=o({_id:c().default(r()).transform(()=>r()),username:c().trim().min(1,`Username is required`),password:G,passwordConfirm:c().trim().min(1,`Please confirm your password`),role:a([f(`admin`),f(`user`)]),firstLogin:_().default(!0),preferences:Lt.default({language:`auto`,camview:{views:[]},cameras:{}})}).strict().refine(e=>e.password===e.passwordConfirm,{path:[`passwordConfirm`],message:`Passwords do not match`});o({username:c().trim().min(1,`Username is required`),password:c().trim().min(1,`Password is required`),kind:g([`native`,`web`,`tv`]),persistent:_().default(!1),device:o({id:c().min(1,`Device id is required`).max(128,`Device id cannot be more than 128 characters`),name:c().trim().min(1,`Device name is required`).max(100,`Device name cannot be more than 100 characters`)})}).strict();var zt=o({username:c().trim().min(1,`Username is required`).optional(),password:G.optional(),passwordConfirm:c().trim().optional(),role:a([f(`admin`),f(`user`)]).optional(),upload:re(z(_t,gt,`Max file size is 5MB.`,`.jpg, .jpeg, .png files are accepted.`)),firstLogin:_().optional(),preferences:Lt.partial().optional()}).strict().refine(e=>e.password===e.passwordConfirm,{path:[`passwordConfirm`],message:`Passwords do not match`});o({username:c()}),o({username:c(),cameraname:c()}),o({username:c(),cameraname:c(),shortcutid:c()}),o({username:c(),viewid:c()}),o({username:c()}),o({cameraId:c().min(1,`Camera ID is required`),agentId:c().min(1,`Agent ID is required`)}),o({cameraId:c().min(1,`Camera ID is required`)}),o({agentId:c().min(1,`Agent ID is required`)}),o({version:c().min(1).optional()}).optional(),o({code:c().min(1,`Pairing code is required`),agentId:c().min(1,`Agent ID is required`),name:c().min(1,`Worker name is required`)}),o({pluginName:c().min(1,`Plugin name is required`),agentId:c().min(1,`Agent ID is required`)}),o({pluginName:c().min(1,`Plugin name is required`)}),o({name:c().trim().min(1,`Name is required`).max(64,`Maximum 64 characters`)}),o({enabled:_().optional(),address:c().trim().optional(),port:d().min(1024,`Minimum 1024`).max(65535,`Maximum 65535`).optional()}).strict();function K(e){return e.type===`string`&&!(`enum`in e)}function Bt(e){return e.type===`number`}function Vt(e){return e.type===`boolean`}function q(e){return e.type===`string`&&`enum`in e}function Ht(e){return e.type===`array`}function Ut(e){return e.type===`object`}function J(e){return e.type===`button`}function Y(e){return e.type===`submit`}function Wt(e){return K(e)&&(!e.format||e.format!==`qrCode`&&e.format!==`image`)}var Gt=(e,t)=>{let n=Q(t,e.key),r=e.value;switch(e.operator??`eq`){case`eq`:return n===r;case`neq`:return n==null||n===``?!1:n!==r;case`gt`:return typeof n==`number`&&typeof r==`number`&&n>r;case`lt`:return typeof n==`number`&&typeof r==`number`&&n<r;case`in`:return(Array.isArray(r)?r:[r]).includes(n);case`nin`:return n==null||n===``?!1:!(Array.isArray(r)?r:[r]).includes(n);default:return!0}};function X(e,t){return Array.isArray(e)?e.every(e=>Gt(e,t)):Gt(e,t)}function Kt(t,n){if(!t||Object.keys(t).length===0)return!0;let r=n.filter(e=>!J(e)&&!Y(e));for(let n of r){let r=Q(t,n.key),i=Z(n);if(r!==void 0&&!e(r,i,!0))return!1}return!0}function Z(e){if(`defaultValue`in e&&e.defaultValue!==void 0)return e.defaultValue;switch(e.type){case`string`:return q(e)?e.multiple?[]:e.required?e.enum[0]:``:``;case`number`:return 0;case`boolean`:return!1;case`array`:return[];case`object`:{let t={};for(let n of e.properties??[])J(n)||Y(n)||(t[n.key]=Z(n));return t}default:return}}function qt(e){let t={};for(let n of e)J(n)||Y(n)||(t[n.key]=Z(n));return t}function Jt(e){return e.split(`.`).reduce((e,t)=>{if(t.includes(`[`)){let[n,r]=t.split(`[`);e.push(n,r.slice(0,-1))}else e.push(t);return e},[])}function Yt(e){return!isNaN(Number(e))}function Q(e={},t){if(!t.includes(`.`)&&!t.includes(`[`))return e[t];let n=e;for(let e of Jt(t)){if(n==null)return;n=n[e]}return n}function Xt(e,t,n){if(!t.includes(`.`)&&!t.includes(`[`)){e[t]=n;return}let r=Jt(t),i=r.pop();if(!i)return;let a=e;for(let e=0;e<r.length;e++){let t=r[e];(typeof a[t]!=`object`||a[t]===null)&&(a[t]=Yt(r[e+1]??i)?[]:{}),a=a[t]}a[i]=n}function Zt(e,t){let n={};for(let r of e)if(`store`in r&&r.store&&!J(r)&&!Y(r)){let e=Q(t,r.key);e!==void 0&&(n[r.key]=e)}return n}function Qt(e,t){return t?e.filter(e=>`group`in e&&e.group===t):e}function $t(e,t){let n=Qt(e,t);return n.length>0&&n.every(e=>`readonly`in e&&e.readonly)}function en(e,t){let n=Qt(e,t);return n.length>0&&n.some(e=>`store`in e&&e.store)}function tn(e,t){if(!t)return!0;let n={"date-time":e=>/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(.\d+)?(Z|[+-]\d{2}:\d{2})?$/.test(e),date:e=>/^\d{4}-\d{2}-\d{2}$/.test(e),time:e=>/^([01]?[0-9]|2[0-3]):([0-5][0-9])(:([0-5][0-9]))?$/.test(e),email:e=>/^\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,7}\b$/.test(e),uuid:e=>/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/.test(e),ipv4:e=>/^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$/.test(e),ipv6:e=>/^\s*([0-9a-fA-F]{1,4}:){7}([0-9a-fA-F]{1,4})\s*$/.test(e)};return t in n?n[t](e):!0}function $(e){if(J(e)||Y(e))return l();switch(e.type){case`string`:if(q(e)){if(e.multiple){let t=m(c().trim().refine(t=>e.enum.includes(t),{error:`Invalid selection`}));return e.minItems===void 0?e.required&&(t=t.min(1,{error:`Required`})):t=t.min(e.minItems,{error:`Select at least ${e.minItems}`}),e.required?t:t.optional()}{let t=g(e.enum);return e.required?t:a([f(``),t]).optional()}}let t=c().trim();return e.required&&(t=t.nonempty(`Required`)),e.minLength!==void 0&&(t=t.min(e.minLength)),e.maxLength!==void 0&&(t=t.max(e.maxLength)),e.format&&(t=t.refine(t=>!t||t.trim()===``||tn(t,e.format),{message:`Invalid ${e.format} format`})),e.required?t:t.optional();case`number`:let n=d();return e.minimum!==void 0&&(n=n.min(e.minimum)),e.maximum!==void 0&&(n=n.max(e.maximum)),e.required&&(n=n.refine(e=>e!=null,{error:`Required`})),e.required?n:n.optional();case`boolean`:return e.required?_():_().optional();case`array`:{let t=e.items?$(e.items):l(),n=m(t);return e.minItems!==void 0&&(n=n.min(e.minItems,{error:`At least ${e.minItems} entries required`})),e.required?n:n.optional()}case`object`:{let t={};for(let n of e.properties??[])J(n)||Y(n)||(t[n.key]=$(n));let n=o(t);return e.required?n:n.optional()}default:return e.required?l():l().optional()}}var nn=(e,t,n)=>t.filter(e=>`group`in e&&e.group===n).some(t=>{let n=e[t.key];return n!=null&&n!==``});function rn(e){let t={},n=new Set;e.forEach(e=>{`group`in e&&e.group&&n.add(e.group)}),e.forEach(e=>{if(!J(e)&&!Y(e)){let n=`group`in e&&e.group,r=`condition`in e&&e.condition;(n||r)&&e.required?t[e.key]=$({...e,required:!1}):t[e.key]=$(e)}});let r=o(t),i=e.filter(e=>`condition`in e&&e.condition&&`required`in e&&e.required&&!J(e)&&!Y(e));return(n.size>0||i.length>0)&&(r=r.superRefine((t,r)=>{for(let i of n)if(nn(t,e,i)){let n=e.filter(e=>`group`in e&&e.group===i);for(let e of n)if(`required`in e&&e.required){if(`condition`in e&&e.condition&&!X(e.condition,t))continue;let n=t[e.key];(n==null||n===``)&&r.addIssue({code:h.custom,message:`Required`,path:[e.key]})}}for(let e of i)if(!(`group`in e&&e.group)&&`condition`in e&&e.condition&&X(e.condition,t)){let n=t[e.key];(n==null||n===``)&&r.addIssue({code:h.custom,message:`Required`,path:[e.key]})}})),r}export{w as $,ft as A,ut as B,G as C,pt as D,mt as E,ct as F,Je as G,qe as H,st as I,Le as J,Ke as K,et as L,nt as M,it as N,U as O,rt as P,_e as Q,lt as R,Rt as S,St as T,Ge as U,Ze as V,Ue as W,I as X,T as Y,Ae as Z,$t as _,rn as a,_t as b,Vt as c,q as d,me as et,Bt as f,Wt as g,Y as h,Zt as i,at as j,dt as k,J as l,K as m,qt as n,D as nt,Q as o,Ut as p,ze as q,Z as r,Ht as s,X as t,je as tt,Kt as u,en as v,zt as w,ht as x,Xt as y,ot as z};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Wt as e,kn as t}from"./api-
|
|
1
|
+
import{Wt as e,kn as t}from"./api-2VPaKkqc.js";import{Mn as n,Rn as r,an as i,hr as a,in as o,mn as s,on as c,rn as l,rr as u,sn as d,yr as f}from"./vendor-AX0A8AMd.js";import{n as p}from"./lightbulb-outline-BtraGBwO.js";import{t as m}from"./bell-ring-DBCDVZQy.js";import{n as h,t as g}from"./webhook-CPF2kUgU.js";import{i as _,n as v,r as y}from"./CuiPluginTrustBadge-B4bxBl3A.js";var b={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function x(e,t){return n(),d(`svg`,b,[...t[0]||=[o(`path`,{fill:`currentColor`,d:`M15 13h1.5v2.82l2.44 1.41l-.75 1.3L15 16.69zm4-5H5v11h4.67c-.43-.91-.67-1.93-.67-3a7 7 0 0 1 7-7c1.07 0 2.09.24 3 .67zM5 21a2 2 0 0 1-2-2V5c0-1.11.89-2 2-2h1V1h2v2h8V1h2v2h1a2 2 0 0 1 2 2v6.1c1.24 1.26 2 2.99 2 4.9a7 7 0 0 1-7 7c-1.91 0-3.64-.76-4.9-2zm11-9.85A4.85 4.85 0 0 0 11.15 16c0 2.68 2.17 4.85 4.85 4.85A4.85 4.85 0 0 0 20.85 16c0-2.68-2.17-4.85-4.85-4.85`},null,-1)]])}var S=u({name:`mdi-calendar-clock`,render:x}),C={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function w(e,t){return n(),d(`svg`,C,[...t[0]||=[o(`path`,{fill:`currentColor`,d:`m20.84 2.18l-3.93.78l2.74 3.54l1.97-.4zm-6.87 1.36L12 3.93l2.75 3.53l1.96-.39zm-4.9.96l-1.97.41l2.75 3.53l1.96-.39zm-4.91 1l-.98.19a2 2 0 0 0-1.57 2.35L2 10l4.9-.97zM2 10v10a2 2 0 0 0 2 2h16c1.11 0 2-.89 2-2V10z`},null,-1)]])}var T=u({name:`mdi-movie-open`,render:w}),E={notification:{icon:m,labelKey:`components.automation_store.category_notification`},recording:{icon:y,labelKey:`components.automation_store.category_recording`},presence:{icon:h,labelKey:`components.automation_store.category_presence`},detection:{icon:e,labelKey:`components.automation_store.category_detection`},schedule:{icon:S,labelKey:`components.automation_store.category_schedule`},webhook:{icon:g,labelKey:`components.automation_store.category_webhook`},mqtt:{icon:p,labelKey:`components.automation_store.category_mqtt`},scene:{icon:T,labelKey:`components.automation_store.category_scene`},utility:{icon:v,labelKey:`components.automation_store.category_utility`},other:{icon:_,labelKey:`components.automation_store.category_other`}},D=[`notification`,`recording`,`presence`,`detection`,`schedule`,`webhook`,`mqtt`,`scene`,`utility`,`other`];function O(e){return e&&e in E?E[e]:E.other}var k={key:0,class:`cui-category-chip`},A={class:`cui-category-chip-label`},j=t(s({__name:`CuiAutomationCategoryChip`,props:{category:{}},setup(e){let t=e,s=l(()=>O(t.category));return(t,l)=>e.category?(n(),d(`span`,k,[(n(),i(r(a(s).icon),{class:`cui-category-chip-icon`})),o(`span`,A,f(t.$t(a(s).labelKey)),1)])):c(``,!0)}}),[[`__scopeId`,`data-v-ea2e312f`]]),M={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function N(e,t){return n(),d(`svg`,M,[...t[0]||=[o(`path`,{fill:`currentColor`,d:`M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.62L12 2L9.19 8.62L2 9.24l5.45 4.73L5.82 21z`},null,-1)]])}var P=u({name:`mdi-star`,render:N}),F={camera:`components.automation_store.input_camera`,plugin:`components.automation_store.input_plugin`,sensor:`components.automation_store.input_sensor`,"notification-targets":`components.automation_store.input_notification_targets`,"system-target":`components.automation_store.input_system_target`,text:`components.automation_store.input_text`};function I(e,t){return e?.length?e.map(e=>t(F[e.type],{count:e.count??1})):[]}export{D as a,E as i,P as n,j as r,I as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Cr as e}from"./vendor-cameraui-
|
|
1
|
+
import{Cr as e}from"./vendor-cameraui-ZyqPntQ7.js";import{i as t}from"./eventLabels-BsPoPWS9.js";var n={trigger:`#22c55e`,condition:`#f59e0b`,action:`#3b82f6`,utility:`#8b5cf6`},r={mode:`drag`},i=[{key:`detectionSettings.snooze`,labelKey:`components.automation_nodes.camera_prop_snooze`,inputType:`boolean`,defaultValue:`false`},{key:`disabled`,labelKey:`components.automation_nodes.camera_prop_disabled`,inputType:`boolean`,defaultValue:`false`},{key:`recordingSettings.enabled`,labelKey:`components.automation_nodes.camera_prop_recording`,inputType:`boolean`,defaultValue:`true`},{key:`recordingSettings.mode`,labelKey:`components.automation_nodes.camera_prop_recording_mode`,inputType:`select`,options:[{labelKey:`components.automation_nodes.option_continuous`,value:`continuous`},{labelKey:`components.automation_nodes.option_event`,value:`event`},{labelKey:`components.automation_nodes.option_adhoc`,value:`adhoc`}],defaultValue:`continuous`},{key:`recordingSettings.preBuffer`,labelKey:`components.automation_nodes.camera_prop_recording_prebuffer`,inputType:`number`,min:0,max:60,step:1,defaultValue:`10`},{key:`recordingSettings.sources`,labelKey:`components.automation_nodes.camera_prop_recording_sources`,inputType:`multiselect`,options:[{labelKey:`components.automation_nodes.option_high`,value:`high`},{labelKey:`components.automation_nodes.option_mid`,value:`mid`},{labelKey:`components.automation_nodes.option_low`,value:`low`}],defaultValue:`["high","mid","low"]`},{key:`ptzAutotrack.enabled`,labelKey:`components.automation_nodes.camera_prop_ptz_autotrack`,inputType:`boolean`,defaultValue:`false`},{key:`ptzAutotrack.returnToHome`,labelKey:`components.automation_nodes.camera_prop_ptz_return_home`,inputType:`boolean`,defaultValue:`false`},{key:`ptzAutotrack.targetLabels`,labelKey:`components.automation_nodes.camera_prop_ptz_target_labels`,inputType:`multiselect`,options:e.map(e=>({labelKey:t(e),value:e})),defaultValue:`["person"]`},{key:`ptzAutotrack.minConfidence`,labelKey:`components.automation_nodes.camera_prop_ptz_min_confidence`,inputType:`number`,min:.3,max:1,step:.05,defaultValue:`0.5`},...e.map(e=>({key:`detectionSettings.object.confidences.${e}`,labelKey:`components.automation_nodes.camera_prop_object_confidence_${e}`,inputType:`number`,min:.3,max:1,step:.05,defaultValue:`0.5`})),{key:`detectionSettings.motion.timeout`,labelKey:`components.automation_nodes.camera_prop_motion_timeout`,inputType:`number`,min:10,defaultValue:`30`},{key:`detectionSettings.motion.resolution`,labelKey:`components.automation_nodes.camera_prop_motion_resolution`,inputType:`select`,options:[{labelKey:`components.automation_nodes.option_low`,value:`low`},{labelKey:`components.automation_nodes.option_medium`,value:`medium`},{labelKey:`components.automation_nodes.option_high`,value:`high`}],defaultValue:`low`},{key:`detectionSettings.audio.timeout`,labelKey:`components.automation_nodes.camera_prop_audio_timeout`,inputType:`number`,min:10,defaultValue:`30`},{key:`detectionSettings.audio.minDecibels`,labelKey:`components.automation_nodes.camera_prop_audio_min_decibels`,inputType:`number`,min:-100,max:0,defaultValue:`-40`},{key:`detectionSettings.audio.confidence`,labelKey:`components.automation_nodes.camera_prop_audio_confidence`,inputType:`number`,min:0,max:1,step:.05,defaultValue:`0.7`},{key:`detectionSettings.object.suppressStatic`,labelKey:`components.automation_nodes.camera_prop_suppress_static`,inputType:`boolean`,defaultValue:`true`},{key:`detectionSettings.object.timeout`,labelKey:`components.automation_nodes.camera_prop_object_timeout`,inputType:`number`,min:10,defaultValue:`15`},{key:`detectionSettings.face.confidence`,labelKey:`components.automation_nodes.camera_prop_face_confidence`,inputType:`number`,min:0,max:1,step:.05,defaultValue:`0.5`},{key:`detectionSettings.face.matchThreshold`,labelKey:`components.automation_nodes.camera_prop_face_match_threshold`,inputType:`number`,min:.3,max:.95,step:.05,defaultValue:`0.55`},{key:`detectionSettings.licensePlate.confidence`,labelKey:`components.automation_nodes.camera_prop_plate_confidence`,inputType:`number`,min:0,max:1,step:.05,defaultValue:`0.3`},{key:`detectionSettings.licensePlate.ocrConfidence`,labelKey:`components.automation_nodes.camera_prop_plate_ocr_confidence`,inputType:`number`,min:0,max:1,step:.05,defaultValue:`0.9`},{key:`detectionSettings.licensePlate.minLength`,labelKey:`components.automation_nodes.camera_prop_plate_min_length`,inputType:`number`,min:1,max:10,step:1,defaultValue:`4`},{key:`detectionSettings.sensor.timeout`,labelKey:`components.automation_nodes.camera_prop_sensor_timeout`,inputType:`number`,min:10,defaultValue:`30`},{key:`detectionSettings.cascadeDetection`,labelKey:`components.automation_nodes.camera_prop_cascade_detection`,inputType:`boolean`,defaultValue:`true`},{key:`detectionSettings.cascadeTimeout`,labelKey:`components.automation_nodes.camera_prop_cascade_timeout`,inputType:`number`,min:1,max:300,defaultValue:`10`},{key:`frameWorkerSettings.mainStreamAnalysis`,labelKey:`components.automation_nodes.camera_prop_main_stream_analysis`,inputType:`boolean`,defaultValue:`false`},{key:`snapshotSettings.autoRefresh`,labelKey:`components.automation_nodes.camera_prop_auto_refresh`,inputType:`boolean`,defaultValue:`false`},{key:`snapshotSettings.interval`,labelKey:`components.automation_nodes.camera_prop_snapshot_interval`,inputType:`number`,min:10,max:60,defaultValue:`60`},{key:`snapshotSettings.ttl`,labelKey:`components.automation_nodes.camera_prop_snapshot_ttl`,inputType:`number`,min:10,max:60,defaultValue:`50`}];export{n,r,i as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{An as e,D as t,Dt as n,E as r,K as i,Mn as a,Pt as o,Rt as s,Ut as c,Vt as l,Wn as u,Wt as d,Zn as f,ei as p,f as m,i as h,l as g,m as _,t as ee,w as te,zr as ne}from"./vendor-cameraui-OySaGjmo.js";import{Cn as v,Dn as re,G as ie,On as ae,W as oe,_n as se,bn as ce,it as le,kn as y,nt as ue,s as de,tt as fe,vn as pe,xr as me,yn as he}from"./api-ou2-S3Z9.js";import{$t as b,An as ge,Cn as x,Fn as S,In as C,Kn as _e,Mn as w,Pn as T,Qt as E,Rn as ve,Wn as D,Xn as ye,Xt as be,Yn as O,an as k,fn as A,gr as j,hr as M,in as N,mn as P,on as F,rn as I,sn as L,sr as R,vr as z,wn as B,yn as xe,yr as V}from"./vendor-AX0A8AMd.js";import{a as Se}from"./intercomService-JoKcW49f.js";import{N as H}from"./vendor-primevue-CvHDsVi_.js";var Ce=[`src`],we={key:2,class:`w-full h-full flex items-center justify-center bg-neutral-800/80`},Te={class:`absolute top-0 left-0 right-0 p-2 bg-gradient-to-b from-black/80 to-transparent z-[3]`},Ee={class:`flex items-center gap-1.5`},De={class:`text-xs font-semibold text-white truncate min-w-0 flex-1`},Oe={key:1,class:`text-[10px] font-semibold text-white/80 bg-black/60 px-1.5 py-0.5 rounded-md shrink-0`},ke={class:`text-[10px] text-white/70`},Ae={key:5,class:`absolute bottom-10 left-1/2 -translate-x-1/2 z-[3] max-w-[85%] pointer-events-none`},je={class:`block text-[11px] text-white font-medium truncate bg-black/50 rounded-md px-2 py-0.5`},Me={class:`flex items-center gap-1 min-w-0`},Ne=[`title`],Pe={key:0,class:`flex items-center gap-0.5 shrink-0 opacity-85 group-hover:opacity-100 transition-opacity duration-200`},Fe=[`onClick`],Ie=[`src`,`alt`],Le={key:0,class:`text-[10px] text-white/60 font-medium`},Re={key:6,class:`absolute inset-0 z-[4] flex items-center justify-center pointer-events-none`},ze={key:7,class:`absolute bottom-2 left-1/2 -translate-x-1/2 z-[4] pointer-events-none`},Be={class:`text-[10px] font-semibold text-white bg-black/60 px-1.5 py-0.5 rounded-md whitespace-nowrap`,style:{"font-variant-numeric":`tabular-nums`}},Ve=24,He=30,Ue=22,We=28,Ge=8,Ke=y(P({__name:`RecordingCard`,props:{event:{},cameraName:{},camera:{},loadThumbnails:{type:Function},semanticScore:{},segIndex:{},hideSegmentBadge:{type:Boolean},selectionMode:{type:Boolean},selected:{type:Boolean},siblingActive:{type:Boolean}},emits:[`scrollToEvent`,`select`,`openEpisode`],setup(e,{emit:a}){let c=e,l=a,u=Se(),f=me(),{t:y}=ne(),x=t(`@camera.ui/camera-ui-nvr`),{plugin:S}=n(`@camera.ui/camera-ui-nvr`),{icons:C}=ie(),P=x.getCachedThumbnails(c.event.id),z=P?r(P,c.event,`card`,c.segIndex).url?`loaded`:`empty`:`loading`,B=xe(te,void 0),H=D(`rootRef`),Ke=D(`previewCanvasRef`),qe=D(`footerRef`),U=R(!1),Je=oe(H,()=>Ct(),()=>$()),W=R(!1),G=R(P??null),K=R(z),q=R(!1),Ye=R(0),{width:Xe}=p(qe),Ze=I(()=>(x.storeVersion.value,c.event.segments?.find(e=>e?.description)?.description?.title)),Qe=I(()=>(x.storeVersion.value,c.event.episodeIds?.[0])),$e=I(()=>{if(c.semanticScore==null)return;let e=Math.max(0,Math.min(1,c.semanticScore));return{pct:e,label:`${(e*100).toFixed(0)}%`,color:e>=.5?`bg-green-500/80`:e>=.25?`bg-yellow-500/80`:`bg-red-400/80`}}),J=I(()=>G.value?r(G.value,c.event,`card`,c.segIndex):null),et=I(()=>{let e=c.segIndex??J.value?.segIndex;return e===void 0?void 0:c.event.segments?.[e]}),tt=I(()=>J.value?.url),nt=I(()=>J.value?.label),rt=I(()=>J.value?.type??c.event.types[0]??`motion`),it=I(()=>{if(c.hideSegmentBadge)return;let e=c.event.segments?.length??0;return c.segIndex!==void 0&&e>1?`${c.segIndex+1}/${e}`:void 0}),Y=I(()=>{let e=G.value,t=J.value?.url;if(!e||!t)return[];let n=[{url:t,label:J.value?.label,type:rt.value,crop:!1}];for(let t of ee(e,c.segIndex))n.some(e=>e.url===t.url)||n.push({url:t.url,label:t.label,type:t.type,crop:!0});if(c.segIndex===void 0)for(let t of Object.keys(e.cards??e.strips??{}).sort((e,t)=>Number(e)-Number(t))){let r=g(e.cards?.[t]??e.strips?.[t]);if(!r||n.some(e=>e.url===r))continue;let i=ue(c.event,t);n.push({url:r,label:i,type:i,crop:!1})}return n.length>1?n:[]}),at=I(()=>Y.value.length>1),X=I(()=>Y.value.length?Math.min(Ye.value,Y.value.length-1):0),ot=I(()=>at.value?Y.value[X.value]:void 0),st=I(()=>!!ot.value?.crop),ct=I(()=>ot.value?.url??tt.value),lt=I(()=>ot.value?.label??nt.value),Z=I(()=>{let e=et.value;return(e?_(c.event,e):[...new Set(c.event.types)]).filter(e=>e!==`motion`&&e!==`audio`)}),ut=I(()=>c.cameraName??c.event.cameraId),Q=I(()=>Y.value.map(e=>({url:e.url,type:e.type}))),dt=I(()=>Z.value.slice(0,ft.value.icons)),ft=I(()=>{let e=Xe.value;if(!e)return{icons:2,tiles:2};let t=e-Ge;c.selectionMode&&(t-=We);let n=Q.value.length>0?52:0,r=yt(Z.value.length,Math.max(0,t-n),Ve),i=Z.value.length>0?Math.max(1,r):0,a=i*Ve+(i<Z.value.length?Ue:0);return{icons:i,tiles:yt(Q.value.length,Math.max(0,t-a),He)}}),pt=I(()=>Z.value.slice(ft.value.icons)),mt=I(()=>Q.value.slice(0,ft.value.tiles)),ht=I(()=>Q.value.length-ft.value.tiles),gt=I(()=>{let e=c.segIndex===void 0?void 0:c.event.segments?.[c.segIndex]?.firstSeen,t=new Date(e??c.event.thumbnailAt??c.event.startTime),n=new Date,r=t.toDateString()===n.toDateString(),i=t.toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`});return r?i:`${t.toLocaleDateString([],{month:`short`,day:`numeric`})} ${i}`}),_t=I(()=>!!(S.value&&c.event.endTime&&c.event.hasRecording!==!1)),vt=I(()=>B?U.value?y(`views.recordings.no_preview`):W.value?B.status.value===`unavailable`?y(`views.recordings.no_preview`):B.status.value===`playing`&&B.previewTimeMs.value?St(B.previewTimeMs.value):``:``:``);function yt(e,t,n){return e===0||t<n?0:e*n<=t?e:Math.max(0,Math.floor((t-Ue)/n))}function bt(e){let t=Y.value.length;t&&($(),Ye.value=(X.value+e+t)%t)}function xt(e,t){at.value&&(t.stopPropagation(),$(),Ye.value=e)}function $(){U.value=!1,!(!B||!W.value)&&(W.value=!1,B.onHoverEnd())}function St(e){let t=new Date(e);return`${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}:${String(t.getSeconds()).padStart(2,`0`)}`}function Ct(){if(!B||X.value>0)return;let e=Ke.value;if(!e)return;let t=m(c.event);if(c.event.hasRecording===!1||!t){U.value=!0;return}W.value=!0,B.onHoverStart(e,c.event.cameraId,c.event.id,c.event.startTime,t,c.camera?.zones?.privacy,h(c.event))}function wt(){Je.blocksMouseEnter()||Ct()}function Tt(){U.value=!1,B&&(W.value=!1,B.onHoverEnd())}async function Et(e=2){let t=await c.loadThumbnails(c.event.id,c.event.startTime);if(t){G.value=t;let e=r(t,c.event,`card`);K.value=e.url?`loaded`:`empty`}else if(e>0)return await new Promise(e=>setTimeout(e,500)),Et(e-1);else K.value=c.event.state===`active`?`loading`:`empty`}function Dt(){Qe.value&&l(`openEpisode`,Qe.value)}function Ot(){if(!Je.consumesClick()){if(c.selectionMode){l(`select`);return}l(`scrollToEvent`,et.value?.firstSeen??fe(c.event))}}async function kt(){if(q.value)return;let e=S.value;if(!(!e?.nvrExport||!c.event.endTime)){q.value=!0;try{let t=await e.nvrExport(c.event.cameraId,c.event.startTime*1e3,c.event.endTime*1e3);await re({url:t.url,filename:t.filename})}catch(e){u.error(`Download failed:`,e),f.add({severity:`error`,summary:y(`views.recordings.download_failed`),detail:de(e),life:5e3})}finally{q.value=!1}}}return _e(()=>x.storeVersion.value,()=>{let e=x.getCachedThumbnails(c.event.id);e&&(G.value=e,r(e,c.event,`card`).url&&(K.value=`loaded`))}),ge(()=>{z===`loading`&&Et()}),(t,n)=>{let r=i,a=ae,c=se,l=pe,u=s,f=le,p=he,m=ce,h=v,g=o,_=d;return w(),L(`div`,{ref_key:`rootRef`,ref:H,class:`recording-card relative group cursor-pointer`,onClick:Ot,onMouseenter:wt,onMouseleave:Tt},[N(`div`,{class:j([`bg-neutral-900 w-full rounded-xl overflow-hidden relative transition-shadow duration-200`,{"ring-2 ring-inset ring-primary/70":e.siblingActive}]),style:{"aspect-ratio":`1/1`}},[M(K)===`loading`?(w(),k(r,{key:0,width:`100%`,height:`100%`,class:`rounded-xl`})):M(ct)?(w(),L(b,{key:1},[M(st)?(w(),L(`img`,{key:0,src:M(ct),"aria-hidden":`true`,class:`absolute inset-0 w-full h-full object-cover blur-xl scale-110 opacity-50 pointer-events-none`},null,8,Ce)):F(``,!0),A(a,{src:M(ct),alt:M(ut),class:`pointer-events-none w-full h-full transition-transform duration-300 group-hover:scale-105`,"image-style":{objectFit:M(st)?`contain`:`cover`},"image-container-class":`w-full h-full`},null,8,[`src`,`alt`,`image-style`])],64)):(w(),L(`div`,we,[(w(),k(ve(M(C)[M(rt)]??M(C).motion),{class:`w-10 h-10 text-white/20`}))])),M(B)?ye((w(),L(`canvas`,{key:3,ref_key:`previewCanvasRef`,ref:Ke,class:`absolute inset-0 w-full h-full object-cover pointer-events-none z-[1]`},null,512)),[[be,M(W)]]):F(``,!0),n[2]||=N(`div`,{class:`absolute inset-0 bg-transparent group-hover:bg-black/30 pointer-events-none transition-colors duration-200 z-[2]`},null,-1),N(`div`,Te,[N(`div`,Ee,[M(Ze)?(w(),k(c,{key:0,position:`inline`})):F(``,!0),N(`p`,De,V(M(ut)),1),M(it)?(w(),L(`span`,Oe,V(M(it)),1)):F(``,!0),M($e)?(w(),L(`span`,{key:2,class:j([`text-[10px] font-bold text-white px-1.5 py-0.5 rounded-md shrink-0`,M($e).color])},V(M($e).label),3)):F(``,!0),M(Qe)&&!e.selectionMode?ye((w(),k(u,{key:3,rounded:``,text:``,severity:`secondary`,class:`!w-5 !h-5 !p-0 shrink-0 bg-black/60 hover:!bg-black/80`,onClick:E(Dt,[`stop`])},{icon:O(()=>[A(l,{class:`w-3 h-3 text-white`})]),_:1})),[[_,{value:t.$t(`views.recordings.open_episode`)},void 0,{left:!0}]]):F(``,!0),M(_t)&&!e.selectionMode?ye((w(),k(u,{key:4,rounded:``,text:``,severity:`secondary`,loading:M(q),class:`!w-5 !h-5 !p-0 shrink-0 bg-black/60 hover:!bg-black/80`,onClick:E(kt,[`stop`])},{icon:O(()=>[A(f,{class:`w-3 h-3 text-white`})]),_:1},8,[`loading`])),[[_,{value:t.$t(`views.recordings.download`)},void 0,{left:!0}]]):F(``,!0)]),N(`p`,ke,V(M(gt)),1)]),M(Y).length>1?(w(),L(b,{key:4},[A(u,{rounded:``,text:``,severity:`secondary`,class:`carousel-nav !absolute left-1 top-1/2 -translate-y-1/2 z-[3] !w-7 !h-7 !p-0 bg-black/40 hover:!bg-black/60 transition-opacity duration-200`,"aria-label":t.$t(`views.recordings.prev_image`),onClick:n[0]||=E(e=>bt(-1),[`stop`]),onMouseenter:$},{icon:O(()=>[A(p,{class:`w-5 h-5 text-white`})]),_:1},8,[`aria-label`]),A(u,{rounded:``,text:``,severity:`secondary`,class:`carousel-nav !absolute right-1 top-1/2 -translate-y-1/2 z-[3] !w-7 !h-7 !p-0 bg-black/40 hover:!bg-black/60 transition-opacity duration-200`,"aria-label":t.$t(`views.recordings.next_image`),onClick:n[1]||=E(e=>bt(1),[`stop`]),onMouseenter:$},{icon:O(()=>[A(m,{class:`w-5 h-5 text-white`})]),_:1},8,[`aria-label`])],64)):F(``,!0),M(lt)?(w(),L(`div`,Ae,[N(`span`,je,V(M(lt)),1)])):F(``,!0),N(`div`,{ref_key:`footerRef`,ref:qe,class:`absolute bottom-2 left-2 right-2 flex items-center justify-between gap-2 z-[3]`},[N(`div`,Me,[e.selectionMode?(w(),L(`div`,{key:0,class:j([`w-6 h-6 rounded-full border-2 flex items-center justify-center transition-colors shrink-0`,e.selected?`bg-primary border-primary`:`bg-black/40 border-white/80`])},[e.selected?(w(),k(h,{key:0,class:`w-4 h-4 text-white`})):F(``,!0)],2)):F(``,!0),(w(!0),L(b,null,T(M(dt),e=>(w(),L(`div`,{key:e,class:`flex items-center justify-center w-5 h-5 rounded-md bg-black/60 shrink-0`},[(w(),k(ve(M(C)[e]??M(C).motion),{class:`w-3 h-3 text-white/80`}))]))),128)),M(pt).length>0?(w(),L(`span`,{key:1,title:M(pt).join(`, `),class:`text-[10px] text-white/60 font-medium shrink-0`},` +`+V(M(pt).length),9,Ne)):F(``,!0)]),M(mt).length>0||M(ht)>0?(w(),L(`div`,Pe,[(w(!0),L(b,null,T(M(mt),(e,t)=>(w(),L(`div`,{key:t,class:j([`w-7 h-7 rounded overflow-hidden border bg-neutral-800 cursor-pointer`,t===M(X)?`border-primary/80`:`border-white/20`]),onClick:e=>xt(t,e)},[N(`img`,{src:e.url,alt:e.type,decoding:`async`,loading:`lazy`,class:`w-full h-full object-cover`},null,8,Ie)],10,Fe))),128)),M(ht)>0?(w(),L(`span`,Le,`+`+V(M(ht)),1)):F(``,!0)])):F(``,!0)],512),M(B)&&M(W)&&M(B).isLoading.value?(w(),L(`div`,Re,[A(g,{class:`w-[28px] h-[28px] m-0`,"stroke-width":`6`})])):F(``,!0),M(vt)?(w(),L(`div`,ze,[N(`span`,Be,V(M(vt)),1)])):F(``,!0)],2)],544)}}}),[[`__scopeId`,`data-v-52c7a97b`]]),qe={name:`VirtualScroller`,components:{SpinnerIcon:l},extends:{name:`BaseVirtualScroller`,extends:c,provide(){return{$pcVirtualScroller:this,$parentInstance:this}},props:{id:{type:String,default:null},style:null,class:null,items:{type:Array,default:null},itemSize:{type:[Number,Array],default:0},scrollHeight:null,scrollWidth:null,orientation:{type:String,default:`vertical`},rtl:{type:Boolean,default:!1},numToleratedItems:{type:Number,default:null},delay:{type:Number,default:0},resizeDelay:{type:Number,default:10},lazy:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},loaderDisabled:{type:Boolean,default:!1},columns:{type:Array,default:null},loading:{type:Boolean,default:!1},showSpacer:{type:Boolean,default:!0},showLoader:{type:Boolean,default:!1},tabindex:{type:Number,default:0},inline:{type:Boolean,default:!1},step:{type:Number,default:0},appendOnly:{type:Boolean,default:!1},autoSize:{type:Boolean,default:!1},itemKey:{type:[String,Function],default:null}},style:H,beforeMount(){H.loadCSS({nonce:this.$primevueConfig?.csp?.nonce})}},inheritAttrs:!1,emits:[`update:numToleratedItems`,`scroll`,`scroll-index-change`,`lazy-load`],data(){let e=this.isBoth();return{first:e?{rows:0,cols:0}:0,last:e?{rows:0,cols:0}:0,page:e?{rows:0,cols:0}:0,numItemsInViewport:e?{rows:0,cols:0}:0,lastScrollPos:e?{top:0,left:0}:0,d_numToleratedItems:this.numToleratedItems,d_loading:this.loading,loaderArr:[],spacerStyle:{},contentStyle:{}}},element:null,content:null,lastScrollPos:null,scrollTimeout:null,resizeTimeout:null,defaultWidth:0,defaultHeight:0,defaultContentWidth:0,defaultContentHeight:0,isRangeChanged:!1,lazyLoadState:{},resizeListener:null,initialized:!1,computed:{containerClass(){return[`p-virtualscroller`,this.class,{"p-virtualscroller-inline":this.inline,"p-virtualscroller-both p-both-scroll":this.isBoth(),"p-virtualscroller-horizontal p-horizontal-scroll":this.isHorizontal(),"p-virtualscroller-rtl":this.rtl&&this.isHorizontal()}]},contentClass(){return[`p-virtualscroller-content`,{"p-virtualscroller-loading":this.d_loading}]},loaderClass(){return[`p-virtualscroller-loader`,{"p-virtualscroller-loader-mask":!this.$slots.loader}]},loadedItems(){return this.items&&!this.d_loading?this.isBoth()?this.items.slice(this.appendOnly?0:this.first.rows,this.last.rows).map(e=>this.columns?e:e.slice(this.appendOnly?0:this.first.cols,this.last.cols)):this.isHorizontal()&&this.columns?this.items:this.items.slice(this.appendOnly?0:this.first,this.last):[]},loadedRows(){return this.d_loading?this.loaderDisabled?this.loaderArr:[]:this.loadedItems},loadedColumns(){if(this.columns){let e=this.isBoth(),t=this.isHorizontal();if(e||t)return this.d_loading&&this.loaderDisabled?e?this.loaderArr[0]:this.loaderArr:this.columns.slice(e?this.first.cols:this.first,e?this.last.cols:this.last)}return this.columns}},watch:{numToleratedItems(e){this.d_numToleratedItems=e},loading(e,t){this.lazy&&e!==t&&e!==this.d_loading&&(this.d_loading=e)},items(e,t){(!t||t.length!==(e||[]).length)&&this.scheduleInit()},itemSize(){this.scheduleInit()},orientation(){this.lastScrollPos=this.isBoth()?{top:0,left:0}:0},scrollHeight(){this.scheduleInit()},scrollWidth(){this.scheduleInit()}},mounted(){this.viewInit(),this.lastScrollPos=this.isBoth()?{top:0,left:0}:0,this.lazyLoadState=this.lazyLoadState||{}},updated(){!this.initialized&&this.viewInit()},unmounted(){this.unbindResizeListener(),this.initialized=!1},methods:{resolveItemKey(e,t){let n=this.itemKey;return typeof n==`function`?n(e,t)??t:typeof n==`string`&&typeof e==`object`&&e?e[n]??t:t},viewInit(){u(this.element)&&(this.setContentEl(this.content),this.init(),this.calculateAutoSize(),this.bindResizeListener(),this.defaultWidth=e(this.element),this.defaultHeight=a(this.element),this.defaultContentWidth=e(this.content),this.defaultContentHeight=a(this.content),this.initialized=!0)},init(){this.disabled||(this.setSize(),this.calculateOptions(),this.setSpacerSize())},scheduleInit(){this._initScheduled||(this._initScheduled=!0,Promise.resolve().then(()=>{this._initScheduled=!1,this.init(),this.calculateAutoSize()}))},isVertical(){return this.orientation===`vertical`},isHorizontal(){return this.orientation===`horizontal`},isBoth(){return this.orientation===`both`},scrollTo(e){this.element&&this.element.scrollTo(e)},scrollToIndex(e,t=`auto`){let n=this.isBoth(),r=this.isHorizontal(),i=this.rtl&&r;if(n?e.every(e=>e>-1):e>-1){let a=this.first,{scrollTop:o=0,scrollLeft:s=0}=this.element,{numToleratedItems:c}=this.calculateNumItems(),l=this.getContentPosition(),u=this.itemSize,d=(e=0,t)=>e<=t?0:e,f=(e,t,n)=>e*t+n,p=(e=0,n=0)=>{i&&(e=this.element.scrollWidth-this.element.clientWidth-e),this.scrollTo({left:e,top:n,behavior:t})},m=n?{rows:0,cols:0}:0,h=!1,g=!1;n?(m={rows:d(e[0],c[0]),cols:d(e[1],c[1])},p(f(m.cols,u[1],l.left),f(m.rows,u[0],l.top)),g=this.lastScrollPos.top!==o||this.lastScrollPos.left!==s,h=m.rows!==a.rows||m.cols!==a.cols):(m=d(e,c),r?p(f(m,u,l.left),o):p(s,f(m,u,l.top)),g=this.lastScrollPos!==(r?s:o),h=m!==a),this.isRangeChanged=h,g&&(this.first=m)}},scrollInView(e,t,n=`auto`){if(t){let r=this.isBoth(),i=this.isHorizontal();if(r?e.every(e=>e>-1):e>-1){let{first:a,viewport:o}=this.getRenderedRange(),s=(e=0,t=0)=>this.scrollTo({left:e,top:t,behavior:n}),c=t===`to-start`,l=t===`to-end`;if(c){if(r)o.first.rows-a.rows>e[0]?s(o.first.cols*this.itemSize[1],(o.first.rows-1)*this.itemSize[0]):o.first.cols-a.cols>e[1]&&s((o.first.cols-1)*this.itemSize[1],o.first.rows*this.itemSize[0]);else if(o.first-a>e){let e=(o.first-1)*this.itemSize;i?s(e,0):s(0,e)}}else if(l){if(r)o.last.rows-a.rows<=e[0]+1?s(o.first.cols*this.itemSize[1],(o.first.rows+1)*this.itemSize[0]):o.last.cols-a.cols<=e[1]+1&&s((o.first.cols+1)*this.itemSize[1],o.first.rows*this.itemSize[0]);else if(o.last-a<=e+1){let e=(o.first+1)*this.itemSize;i?s(e,0):s(0,e)}}}}else this.scrollToIndex(e,n)},getRenderedRange(){let e=(e,t)=>Math.floor(e/(t||e)),t=this.first,n=0;if(this.element){let r=this.isBoth(),i=this.isHorizontal(),{scrollTop:a,scrollLeft:o}=this.element;r?(t={rows:e(a,this.itemSize[0]),cols:e(o,this.itemSize[1])},n={rows:t.rows+this.numItemsInViewport.rows,cols:t.cols+this.numItemsInViewport.cols}):(t=e(i?o:a,this.itemSize),n=t+this.numItemsInViewport)}return{first:this.first,last:this.last,viewport:{first:t,last:n}}},calculateNumItems(){let e=this.isBoth(),t=this.isHorizontal(),n=this.itemSize,r=this.getContentPosition(),i=this.element?this.element.offsetWidth-r.left:0,a=this.element?this.element.offsetHeight-r.top:0,o=(e,t)=>Math.ceil(e/(t||e)),s=e=>Math.ceil(e/2),c=e?{rows:o(a,n[0]),cols:o(i,n[1])}:o(t?i:a,n);return{numItemsInViewport:c,numToleratedItems:this.d_numToleratedItems||(e?[s(c.rows),s(c.cols)]:s(c))}},calculateOptions(){let e=this.isBoth(),t=this.first,{numItemsInViewport:n,numToleratedItems:r}=this.calculateNumItems(),i=(e,t,n,r=!1)=>this.getLast(e+t+(e<n?2:3)*n,r),a=e?{rows:i(t.rows,n.rows,r[0]),cols:i(t.cols,n.cols,r[1],!0)}:i(t,n,r);this.last=a,this.numItemsInViewport=n,this.d_numToleratedItems=r,this.$emit(`update:numToleratedItems`,this.d_numToleratedItems),this.showLoader&&(this.loaderArr=e?Array.from({length:n.rows}).map(()=>Array.from({length:n.cols})):Array.from({length:n})),this.lazy&&Promise.resolve().then(()=>{this.lazyLoadState={first:this.step?e?{rows:0,cols:t.cols}:0:t,last:Math.min(this.step?this.step:a,this.items?.length-1||0)},this.$emit(`lazy-load`,this.lazyLoadState)})},calculateAutoSize(){this.autoSize&&!this.d_loading&&Promise.resolve().then(()=>{if(this.content){let t=this.isBoth(),n=this.isHorizontal(),r=this.isVertical();this.content.style.minHeight=this.content.style.minWidth=`auto`,this.content.style.position=`relative`,this.element.style.contain=`none`;let[i,o]=[e(this.element),a(this.element)];(t||n)&&(this.element.style.width=i<this.defaultWidth?i+`px`:this.scrollWidth||this.defaultWidth+`px`),(t||r)&&(this.element.style.height=o<this.defaultHeight?o+`px`:this.scrollHeight||this.defaultHeight+`px`),this.content.style.minHeight=this.content.style.minWidth=``,this.content.style.position=``,this.element.style.contain=``}})},getLast(e=0,t){return this.items?Math.min(t?(this.columns||this.items[0])?.length||0:this.items?.length||0,e):0},getContentPosition(){if(this.content){let e=getComputedStyle(this.content),t=parseFloat(e.paddingLeft)+Math.max(parseFloat(e.left)||0,0),n=parseFloat(e.paddingRight)+Math.max(parseFloat(e.right)||0,0),r=parseFloat(e.paddingTop)+Math.max(parseFloat(e.top)||0,0),i=parseFloat(e.paddingBottom)+Math.max(parseFloat(e.bottom)||0,0);return{left:t,right:n,top:r,bottom:i,x:t+n,y:r+i}}return{left:0,right:0,top:0,bottom:0,x:0,y:0}},setSize(){if(this.element){let e=this.isBoth(),t=this.isHorizontal(),n=this.element.parentElement,r=this.scrollWidth||`${this.element.offsetWidth||n.offsetWidth}px`,i=this.scrollHeight||`${this.element.offsetHeight||n.offsetHeight}px`,a=(e,t)=>this.element.style[e]=t;e||t?(a(`height`,i),a(`width`,r)):a(`height`,i)}},setSpacerSize(){let e=this.items;if(e){let t=this.isBoth(),n=this.isHorizontal(),r=this.getContentPosition(),i=(e,t,n,r=0)=>this.spacerStyle={...this.spacerStyle,[`${e}`]:(t||[]).length*n+r+`px`};t?(i(`height`,e,this.itemSize[0],r.y),i(`width`,this.columns||e[1],this.itemSize[1],r.x)):n?i(`width`,this.columns||e,this.itemSize,r.x):i(`height`,e,this.itemSize,r.y)}},setContentPosition(e){if(this.content&&!this.appendOnly){let t=this.isBoth(),n=this.isHorizontal(),r=this.rtl&&n,i=e?e.first:this.first,a=(e,t)=>e*t,o=(e=0,t=0)=>{let n=r?-e:e;this.contentStyle={...this.contentStyle,transform:`translate3d(${n}px, ${t}px, 0)`}};if(t){let e=i.rows,t=i.cols,n=this.itemSize;o(a(t,n[1]),a(e,n[0]))}else{let e=i,t=this.itemSize,r=a(e,t);n?o(r,0):o(0,r)}}},onScrollPositionChange(e){let t=e.target,n=this.isBoth(),r=this.isHorizontal(),i=this.rtl&&r,a=this.getContentPosition(),o=(e,t)=>e?e>t?e-t:e:0,s=(e,t)=>Math.floor(e/(t||e)),c=o(t.scrollTop,a.top),l=o(t.scrollLeft,a.left);i&&l<0&&(l=Math.abs(l));let u=n?{rows:0,cols:0}:0,d=this.last,f=!1,p=this.lastScrollPos;if(n){let e=this.lastScrollPos.top<=c,n=this.lastScrollPos.left<=l;if(!this.appendOnly||this.appendOnly&&(e||n)){let r={rows:s(c,this.itemSize[0]),cols:s(l,this.itemSize[1])},i={rows:this.calculateTriggerIndex(r.rows,this.first.rows,this.last.rows,this.numItemsInViewport.rows,this.d_numToleratedItems[0],e),cols:this.calculateTriggerIndex(r.cols,this.first.cols,this.last.cols,this.numItemsInViewport.cols,this.d_numToleratedItems[1],n)};u={rows:this.calculateFirst(r.rows,i.rows,this.first.rows,this.last.rows,this.numItemsInViewport.rows,this.d_numToleratedItems[0],e),cols:this.calculateFirst(r.cols,i.cols,this.first.cols,this.last.cols,this.numItemsInViewport.cols,this.d_numToleratedItems[1],n,!0)},d={rows:this.calculateLast(r.rows,u.rows,this.last.rows,this.numItemsInViewport.rows,this.d_numToleratedItems[0]),cols:this.calculateLast(r.cols,u.cols,this.last.cols,this.numItemsInViewport.cols,this.d_numToleratedItems[1],!0)},f=u.rows!==this.first.rows||d.rows!==this.last.rows||u.cols!==this.first.cols||d.cols!==this.last.cols||this.isRangeChanged,p={top:c,left:t.scrollLeft}}}else{let e=r?l:c,t=this.lastScrollPos<=e;if(!this.appendOnly||this.appendOnly&&t){let n=s(e,this.itemSize),r=this.calculateTriggerIndex(n,this.first,this.last,this.numItemsInViewport,this.d_numToleratedItems,t);u=this.calculateFirst(n,r,this.first,this.last,this.numItemsInViewport,this.d_numToleratedItems,t),d=this.calculateLast(n,u,this.last,this.numItemsInViewport,this.d_numToleratedItems),f=u!==this.first||d!==this.last||this.isRangeChanged,p=e}}return{first:u,last:d,isRangeChanged:f,scrollPos:p}},calculateTriggerIndex(e,t,n,r,i,a){return e<=i?i:a?n-r-i:t+i-1},calculateFirst(e,t,n,r,i,a,o,s=!1){if(e<=a)return 0;let c=Math.max(0,o?e<t?n:e-a:e>t?n:e-2*a),l=this.getLast(c,s);return c>l?l-i:c},calculateLast(e,t,n,r,i,a=!1){let o=t+r+2*i;return e>=i&&(o+=i+1),this.getLast(o,a)},onScrollChange(e){let{first:t,last:n,isRangeChanged:r,scrollPos:i}=this.onScrollPositionChange(e);if(r){let e={first:t,last:n};if(this.setContentPosition(e),this.first=t,this.last=n,this.lastScrollPos=i,this.$emit(`scroll-index-change`,e),this.lazy&&this.isPageChanged(t)){let e={first:this.step?Math.min(this.getPageByFirst(t)*this.step,(this.items?.length||0)-this.step):t,last:Math.min(this.step?(this.getPageByFirst(t)+1)*this.step:n,this.items?.length-1||0)};(this.lazyLoadState.first!==e.first||this.lazyLoadState.last!==e.last)&&this.$emit(`lazy-load`,e),this.lazyLoadState=e}}},onScroll(e){if(this.$emit(`scroll`,e),this.delay){if(this.scrollTimeout&&clearTimeout(this.scrollTimeout),this.isPageChanged()){if(!this.d_loading&&this.showLoader){let{isRangeChanged:t}=this.onScrollPositionChange(e);(t||this.step&&this.isPageChanged())&&(this.d_loading=!0)}this.scrollTimeout=setTimeout(()=>{this.onScrollChange(e),this.d_loading&&this.showLoader&&(!this.lazy||this.loading===void 0)&&(this.d_loading=!1,this.page=this.getPageByFirst())},this.delay)}}else this.onScrollChange(e)},onResize(){this.resizeTimeout&&clearTimeout(this.resizeTimeout),this.resizeTimeout=setTimeout(()=>{if(u(this.element)){let t=this.isBoth(),n=this.isVertical(),r=this.isHorizontal(),[i,o]=[e(this.element),a(this.element)],[s,c]=[i!==this.defaultWidth,o!==this.defaultHeight];(t?s||c:r?s:n&&c)&&(this.d_numToleratedItems=this.numToleratedItems,this.defaultWidth=i,this.defaultHeight=o,this.defaultContentWidth=e(this.content),this.defaultContentHeight=a(this.content),this.init())}},this.resizeDelay)},bindResizeListener(){this.resizeListener||(this.resizeListener=this.onResize.bind(this),window.addEventListener(`resize`,this.resizeListener),window.addEventListener(`orientationchange`,this.resizeListener))},unbindResizeListener(){this.resizeListener&&=(window.removeEventListener(`resize`,this.resizeListener),window.removeEventListener(`orientationchange`,this.resizeListener),null)},getOptions(e){let t=(this.items||[]).length,n=this.isBoth()?this.first.rows+e:this.first+e;return{index:n,count:t,first:n===0,last:n===t-1,even:n%2==0,odd:n%2!=0}},getLoaderOptions(e,t){let n=this.loaderArr.length;return{index:e,count:n,first:e===0,last:e===n-1,even:e%2==0,odd:e%2!=0,...t}},getPageByFirst(e){return Math.floor(((e??this.first)+this.d_numToleratedItems*4)/(this.step||1))},isPageChanged(e){return this.step&&!this.lazy?this.page!==this.getPageByFirst(e??this.first):!0},setContentEl(e){this.content=e||this.content||f(this.element,`[data-pc-section="content"]`)},elementRef(e){this.element=e},contentRef(e){this.content=e}}},U=[`tabindex`];function Je(e,t,n,r,i,a){let o=C(`SpinnerIcon`);return e.disabled?(w(),L(b,{key:1},[S(e.$slots,`default`),S(e.$slots,`content`,{items:e.items,rows:e.items,columns:a.loadedColumns})],64)):(w(),L(`div`,x({key:0,ref:a.elementRef,class:a.containerClass,tabindex:e.tabindex,style:e.style},e.ptmi(`root`),{onScroll:t[0]||=(...e)=>a.onScroll&&a.onScroll(...e)}),[S(e.$slots,`content`,{styleClass:a.contentClass,items:a.loadedItems,getItemOptions:a.getOptions,loading:i.d_loading,getLoaderOptions:a.getLoaderOptions,itemSize:e.itemSize,rows:a.loadedRows,columns:a.loadedColumns,contentRef:a.contentRef,spacerStyle:i.spacerStyle,contentStyle:i.contentStyle,vertical:a.isVertical(),horizontal:a.isHorizontal(),both:a.isBoth()},()=>[N(`div`,x({ref:a.contentRef,class:a.contentClass,style:i.contentStyle},e.ptm(`content`)),[(w(!0),L(b,null,T(a.loadedItems,(t,n)=>S(e.$slots,`item`,{item:t,options:a.getOptions(n)},void 0,void 0,a.resolveItemKey(t,n))),128))],16)]),e.showSpacer?(w(),L(`div`,x({key:0,class:`p-virtualscroller-spacer`,style:i.spacerStyle},e.ptm(`spacer`)),null,16)):F(``,!0),!e.loaderDisabled&&e.showLoader&&i.d_loading?(w(),L(`div`,x({key:1,class:a.loaderClass},e.ptm(`loader`)),[e.$slots&&e.$slots.loader?(w(!0),L(b,{key:0},T(i.loaderArr,(t,n)=>S(e.$slots,`loader`,{options:a.getLoaderOptions(n,a.isBoth()&&{numCols:e.d_numItemsInViewport.cols})},void 0,void 0,n)),128)):F(``,!0),S(e.$slots,`loadingicon`,{},()=>[A(o,x({spin:``,class:`p-virtualscroller-loading-icon`},e.ptm(`loadingIcon`)),null,16)])],16)):F(``,!0)],16,U))}var W=y(qe,[[`render`,Je]]),G=y(P({__name:`CuiRecordingsGrid`,props:{items:{},minItemWidth:{},aspectRatio:{default:1},gap:{default:8},hasMore:{type:Boolean,default:!1},loadMore:{type:Function,default:void 0},itemKey:{type:Function,default:void 0}},setup(e,{expose:t}){let n=e,r=D(`containerRef`),{width:i,height:a}=p(r),o=I(()=>a.value>0?`${a.value}px`:void 0),s=I(()=>{let e=i.value;if(!e)return 0;let t=n.gap;return Math.max(1,Math.floor((e+t)/(n.minItemWidth+t)))}),c=I(()=>{let e=i.value,t=s.value;return!e||!t?0:Math.floor((e-(t-1)*n.gap)/t)}),l=I(()=>c.value?Math.floor(c.value/n.aspectRatio):0),u=I(()=>l.value?l.value+n.gap:0),d=I(()=>{let e=s.value;if(!e)return[];let t=[];for(let r=0;r<n.items.length;r+=e)t.push(n.items.slice(r,r+e));return t});function f(e){if(n.itemKey)return n.itemKey(e);let t=e;return t.id??t.key??JSON.stringify(e)}function m(e){let t=e;if(!(!t||t.length===0))return f(t[0])}let h=!1,g=null;async function _(){if(h||!n.hasMore||!n.loadMore||g!==null&&n.items.length===g)return;h=!0;let e=n.items.length;try{await Promise.resolve(n.loadMore())}finally{h=!1,g=n.items.length===e?e:null}}let ee=R(0);function te(e){let t=e.target;if(!t)return;ee.value=t.scrollTop;let n=u.value*3;t.scrollTop+t.clientHeight>=t.scrollHeight-n&&_()}function ne(){(r.value?.querySelector(`.recordings-scroll`))?.scrollTo({top:0,behavior:`smooth`})}let v=!1;return _e([()=>n.items.length,a,u,()=>n.hasMore],()=>{v||(v=!0,B(()=>{if(v=!1,!n.hasMore)return;let e=a.value,t=d.value.length*u.value;e>0&&u.value>0&&t<e+u.value&&_()}))},{flush:`post`}),t({scrollToTop:ne,scrollY:ee}),(t,n)=>{let i=W;return w(),L(`div`,{ref_key:`containerRef`,ref:r,class:`recordings-grid-root`},[M(d).length>0&&M(c)>0?(w(),k(i,{key:0,items:M(d),"item-size":M(u),"scroll-height":M(o),orientation:`vertical`,class:`recordings-scroll`,"num-tolerated-items":2,"item-key":m,onScroll:te},{item:O(({item:n})=>[N(`div`,{class:`recordings-row`,style:z({height:`${M(u)}px`,gap:`${e.gap}px`})},[(w(!0),L(b,null,T(n,e=>(w(),L(`div`,{key:f(e),style:z({width:`${M(c)}px`,height:`${M(l)}px`})},[S(t.$slots,`item`,{item:e},void 0,!0)],4))),128))],4)]),_:3},8,[`items`,`item-size`,`scroll-height`])):F(``,!0)],512)}}}),[[`__scopeId`,`data-v-e61b8b84`]]);function K(e){if(e.episode)return e.episode.endTime;if(e.segIndex!==void 0){let t=e.event.segments?.[e.segIndex];if(t)return t.firstSeen}return e.event.thumbnailAt??e.event.startTime}function q(e){let t=[];for(let n of e){let e=n.segments??[];if(e.length<=1){t.push({event:n,key:n.id});continue}e.forEach((e,r)=>{e&&t.push({event:n,key:`${n.id}:seg:${r}`,segIndex:r})})}return t.sort((e,t)=>K(t)-K(e)),t}export{Ke as i,K as n,G as r,q as t};
|
|
1
|
+
import{An as e,D as t,Dt as n,E as r,K as i,Mn as a,Pt as o,Rt as s,Ut as c,Vt as l,Wn as u,Wt as d,Zn as f,ei as p,f as m,i as h,l as g,m as _,t as ee,w as te,zr as ne}from"./vendor-cameraui-ZyqPntQ7.js";import{Cn as v,Dn as re,G as ie,On as ae,W as oe,_n as se,bn as ce,it as le,kn as y,nt as ue,s as de,tt as fe,vn as pe,xr as me,yn as he}from"./api-2VPaKkqc.js";import{$t as b,An as ge,Cn as x,Fn as S,In as C,Kn as _e,Mn as w,Pn as T,Qt as E,Rn as ve,Wn as D,Xn as ye,Xt as be,Yn as O,an as k,fn as A,gr as j,hr as M,in as N,mn as P,on as F,rn as I,sn as L,sr as R,vr as z,wn as B,yn as xe,yr as V}from"./vendor-AX0A8AMd.js";import{a as Se}from"./intercomService-Bjn0OsVT.js";import{N as H}from"./vendor-primevue-DXXRO7Z5.js";var Ce=[`src`],we={key:2,class:`w-full h-full flex items-center justify-center bg-neutral-800/80`},Te={class:`absolute top-0 left-0 right-0 p-2 bg-gradient-to-b from-black/80 to-transparent z-[3]`},Ee={class:`flex items-center gap-1.5`},De={class:`text-xs font-semibold text-white truncate min-w-0 flex-1`},Oe={key:1,class:`text-[10px] font-semibold text-white/80 bg-black/60 px-1.5 py-0.5 rounded-md shrink-0`},ke={class:`text-[10px] text-white/70`},Ae={key:5,class:`absolute bottom-10 left-1/2 -translate-x-1/2 z-[3] max-w-[85%] pointer-events-none`},je={class:`block text-[11px] text-white font-medium truncate bg-black/50 rounded-md px-2 py-0.5`},Me={class:`flex items-center gap-1 min-w-0`},Ne=[`title`],Pe={key:0,class:`flex items-center gap-0.5 shrink-0 opacity-85 group-hover:opacity-100 transition-opacity duration-200`},Fe=[`onClick`],Ie=[`src`,`alt`],Le={key:0,class:`text-[10px] text-white/60 font-medium`},Re={key:6,class:`absolute inset-0 z-[4] flex items-center justify-center pointer-events-none`},ze={key:7,class:`absolute bottom-2 left-1/2 -translate-x-1/2 z-[4] pointer-events-none`},Be={class:`text-[10px] font-semibold text-white bg-black/60 px-1.5 py-0.5 rounded-md whitespace-nowrap`,style:{"font-variant-numeric":`tabular-nums`}},Ve=24,He=30,Ue=22,We=28,Ge=8,Ke=y(P({__name:`RecordingCard`,props:{event:{},cameraName:{},camera:{},loadThumbnails:{type:Function},semanticScore:{},segIndex:{},hideSegmentBadge:{type:Boolean},selectionMode:{type:Boolean},selected:{type:Boolean},siblingActive:{type:Boolean}},emits:[`scrollToEvent`,`select`,`openEpisode`],setup(e,{emit:a}){let c=e,l=a,u=Se(),f=me(),{t:y}=ne(),x=t(`@camera.ui/camera-ui-nvr`),{plugin:S}=n(`@camera.ui/camera-ui-nvr`),{icons:C}=ie(),P=x.getCachedThumbnails(c.event.id),z=P?r(P,c.event,`card`,c.segIndex).url?`loaded`:`empty`:`loading`,B=xe(te,void 0),H=D(`rootRef`),Ke=D(`previewCanvasRef`),qe=D(`footerRef`),U=R(!1),Je=oe(H,()=>Ct(),()=>$()),W=R(!1),G=R(P??null),K=R(z),q=R(!1),Ye=R(0),{width:Xe}=p(qe),Ze=I(()=>(x.storeVersion.value,c.event.segments?.find(e=>e?.description)?.description?.title)),Qe=I(()=>(x.storeVersion.value,c.event.episodeIds?.[0])),$e=I(()=>{if(c.semanticScore==null)return;let e=Math.max(0,Math.min(1,c.semanticScore));return{pct:e,label:`${(e*100).toFixed(0)}%`,color:e>=.5?`bg-green-500/80`:e>=.25?`bg-yellow-500/80`:`bg-red-400/80`}}),J=I(()=>G.value?r(G.value,c.event,`card`,c.segIndex):null),et=I(()=>{let e=c.segIndex??J.value?.segIndex;return e===void 0?void 0:c.event.segments?.[e]}),tt=I(()=>J.value?.url),nt=I(()=>J.value?.label),rt=I(()=>J.value?.type??c.event.types[0]??`motion`),it=I(()=>{if(c.hideSegmentBadge)return;let e=c.event.segments?.length??0;return c.segIndex!==void 0&&e>1?`${c.segIndex+1}/${e}`:void 0}),Y=I(()=>{let e=G.value,t=J.value?.url;if(!e||!t)return[];let n=[{url:t,label:J.value?.label,type:rt.value,crop:!1}];for(let t of ee(e,c.segIndex))n.some(e=>e.url===t.url)||n.push({url:t.url,label:t.label,type:t.type,crop:!0});if(c.segIndex===void 0)for(let t of Object.keys(e.cards??e.strips??{}).sort((e,t)=>Number(e)-Number(t))){let r=g(e.cards?.[t]??e.strips?.[t]);if(!r||n.some(e=>e.url===r))continue;let i=ue(c.event,t);n.push({url:r,label:i,type:i,crop:!1})}return n.length>1?n:[]}),at=I(()=>Y.value.length>1),X=I(()=>Y.value.length?Math.min(Ye.value,Y.value.length-1):0),ot=I(()=>at.value?Y.value[X.value]:void 0),st=I(()=>!!ot.value?.crop),ct=I(()=>ot.value?.url??tt.value),lt=I(()=>ot.value?.label??nt.value),Z=I(()=>{let e=et.value;return(e?_(c.event,e):[...new Set(c.event.types)]).filter(e=>e!==`motion`&&e!==`audio`)}),ut=I(()=>c.cameraName??c.event.cameraId),Q=I(()=>Y.value.map(e=>({url:e.url,type:e.type}))),dt=I(()=>Z.value.slice(0,ft.value.icons)),ft=I(()=>{let e=Xe.value;if(!e)return{icons:2,tiles:2};let t=e-Ge;c.selectionMode&&(t-=We);let n=Q.value.length>0?52:0,r=yt(Z.value.length,Math.max(0,t-n),Ve),i=Z.value.length>0?Math.max(1,r):0,a=i*Ve+(i<Z.value.length?Ue:0);return{icons:i,tiles:yt(Q.value.length,Math.max(0,t-a),He)}}),pt=I(()=>Z.value.slice(ft.value.icons)),mt=I(()=>Q.value.slice(0,ft.value.tiles)),ht=I(()=>Q.value.length-ft.value.tiles),gt=I(()=>{let e=c.segIndex===void 0?void 0:c.event.segments?.[c.segIndex]?.firstSeen,t=new Date(e??c.event.thumbnailAt??c.event.startTime),n=new Date,r=t.toDateString()===n.toDateString(),i=t.toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`});return r?i:`${t.toLocaleDateString([],{month:`short`,day:`numeric`})} ${i}`}),_t=I(()=>!!(S.value&&c.event.endTime&&c.event.hasRecording!==!1)),vt=I(()=>B?U.value?y(`views.recordings.no_preview`):W.value?B.status.value===`unavailable`?y(`views.recordings.no_preview`):B.status.value===`playing`&&B.previewTimeMs.value?St(B.previewTimeMs.value):``:``:``);function yt(e,t,n){return e===0||t<n?0:e*n<=t?e:Math.max(0,Math.floor((t-Ue)/n))}function bt(e){let t=Y.value.length;t&&($(),Ye.value=(X.value+e+t)%t)}function xt(e,t){at.value&&(t.stopPropagation(),$(),Ye.value=e)}function $(){U.value=!1,!(!B||!W.value)&&(W.value=!1,B.onHoverEnd())}function St(e){let t=new Date(e);return`${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}:${String(t.getSeconds()).padStart(2,`0`)}`}function Ct(){if(!B||X.value>0)return;let e=Ke.value;if(!e)return;let t=m(c.event);if(c.event.hasRecording===!1||!t){U.value=!0;return}W.value=!0,B.onHoverStart(e,c.event.cameraId,c.event.id,c.event.startTime,t,c.camera?.zones?.privacy,h(c.event))}function wt(){Je.blocksMouseEnter()||Ct()}function Tt(){U.value=!1,B&&(W.value=!1,B.onHoverEnd())}async function Et(e=2){let t=await c.loadThumbnails(c.event.id,c.event.startTime);if(t){G.value=t;let e=r(t,c.event,`card`);K.value=e.url?`loaded`:`empty`}else if(e>0)return await new Promise(e=>setTimeout(e,500)),Et(e-1);else K.value=c.event.state===`active`?`loading`:`empty`}function Dt(){Qe.value&&l(`openEpisode`,Qe.value)}function Ot(){if(!Je.consumesClick()){if(c.selectionMode){l(`select`);return}l(`scrollToEvent`,et.value?.firstSeen??fe(c.event))}}async function kt(){if(q.value)return;let e=S.value;if(!(!e?.nvrExport||!c.event.endTime)){q.value=!0;try{let t=await e.nvrExport(c.event.cameraId,c.event.startTime*1e3,c.event.endTime*1e3);await re({url:t.url,filename:t.filename})}catch(e){u.error(`Download failed:`,e),f.add({severity:`error`,summary:y(`views.recordings.download_failed`),detail:de(e),life:5e3})}finally{q.value=!1}}}return _e(()=>x.storeVersion.value,()=>{let e=x.getCachedThumbnails(c.event.id);e&&(G.value=e,r(e,c.event,`card`).url&&(K.value=`loaded`))}),ge(()=>{z===`loading`&&Et()}),(t,n)=>{let r=i,a=ae,c=se,l=pe,u=s,f=le,p=he,m=ce,h=v,g=o,_=d;return w(),L(`div`,{ref_key:`rootRef`,ref:H,class:`recording-card relative group cursor-pointer`,onClick:Ot,onMouseenter:wt,onMouseleave:Tt},[N(`div`,{class:j([`bg-neutral-900 w-full rounded-xl overflow-hidden relative transition-shadow duration-200`,{"ring-2 ring-inset ring-primary/70":e.siblingActive}]),style:{"aspect-ratio":`1/1`}},[M(K)===`loading`?(w(),k(r,{key:0,width:`100%`,height:`100%`,class:`rounded-xl`})):M(ct)?(w(),L(b,{key:1},[M(st)?(w(),L(`img`,{key:0,src:M(ct),"aria-hidden":`true`,class:`absolute inset-0 w-full h-full object-cover blur-xl scale-110 opacity-50 pointer-events-none`},null,8,Ce)):F(``,!0),A(a,{src:M(ct),alt:M(ut),class:`pointer-events-none w-full h-full transition-transform duration-300 group-hover:scale-105`,"image-style":{objectFit:M(st)?`contain`:`cover`},"image-container-class":`w-full h-full`},null,8,[`src`,`alt`,`image-style`])],64)):(w(),L(`div`,we,[(w(),k(ve(M(C)[M(rt)]??M(C).motion),{class:`w-10 h-10 text-white/20`}))])),M(B)?ye((w(),L(`canvas`,{key:3,ref_key:`previewCanvasRef`,ref:Ke,class:`absolute inset-0 w-full h-full object-cover pointer-events-none z-[1]`},null,512)),[[be,M(W)]]):F(``,!0),n[2]||=N(`div`,{class:`absolute inset-0 bg-transparent group-hover:bg-black/30 pointer-events-none transition-colors duration-200 z-[2]`},null,-1),N(`div`,Te,[N(`div`,Ee,[M(Ze)?(w(),k(c,{key:0,position:`inline`})):F(``,!0),N(`p`,De,V(M(ut)),1),M(it)?(w(),L(`span`,Oe,V(M(it)),1)):F(``,!0),M($e)?(w(),L(`span`,{key:2,class:j([`text-[10px] font-bold text-white px-1.5 py-0.5 rounded-md shrink-0`,M($e).color])},V(M($e).label),3)):F(``,!0),M(Qe)&&!e.selectionMode?ye((w(),k(u,{key:3,rounded:``,text:``,severity:`secondary`,class:`!w-5 !h-5 !p-0 shrink-0 bg-black/60 hover:!bg-black/80`,onClick:E(Dt,[`stop`])},{icon:O(()=>[A(l,{class:`w-3 h-3 text-white`})]),_:1})),[[_,{value:t.$t(`views.recordings.open_episode`)},void 0,{left:!0}]]):F(``,!0),M(_t)&&!e.selectionMode?ye((w(),k(u,{key:4,rounded:``,text:``,severity:`secondary`,loading:M(q),class:`!w-5 !h-5 !p-0 shrink-0 bg-black/60 hover:!bg-black/80`,onClick:E(kt,[`stop`])},{icon:O(()=>[A(f,{class:`w-3 h-3 text-white`})]),_:1},8,[`loading`])),[[_,{value:t.$t(`views.recordings.download`)},void 0,{left:!0}]]):F(``,!0)]),N(`p`,ke,V(M(gt)),1)]),M(Y).length>1?(w(),L(b,{key:4},[A(u,{rounded:``,text:``,severity:`secondary`,class:`carousel-nav !absolute left-1 top-1/2 -translate-y-1/2 z-[3] !w-7 !h-7 !p-0 bg-black/40 hover:!bg-black/60 transition-opacity duration-200`,"aria-label":t.$t(`views.recordings.prev_image`),onClick:n[0]||=E(e=>bt(-1),[`stop`]),onMouseenter:$},{icon:O(()=>[A(p,{class:`w-5 h-5 text-white`})]),_:1},8,[`aria-label`]),A(u,{rounded:``,text:``,severity:`secondary`,class:`carousel-nav !absolute right-1 top-1/2 -translate-y-1/2 z-[3] !w-7 !h-7 !p-0 bg-black/40 hover:!bg-black/60 transition-opacity duration-200`,"aria-label":t.$t(`views.recordings.next_image`),onClick:n[1]||=E(e=>bt(1),[`stop`]),onMouseenter:$},{icon:O(()=>[A(m,{class:`w-5 h-5 text-white`})]),_:1},8,[`aria-label`])],64)):F(``,!0),M(lt)?(w(),L(`div`,Ae,[N(`span`,je,V(M(lt)),1)])):F(``,!0),N(`div`,{ref_key:`footerRef`,ref:qe,class:`absolute bottom-2 left-2 right-2 flex items-center justify-between gap-2 z-[3]`},[N(`div`,Me,[e.selectionMode?(w(),L(`div`,{key:0,class:j([`w-6 h-6 rounded-full border-2 flex items-center justify-center transition-colors shrink-0`,e.selected?`bg-primary border-primary`:`bg-black/40 border-white/80`])},[e.selected?(w(),k(h,{key:0,class:`w-4 h-4 text-white`})):F(``,!0)],2)):F(``,!0),(w(!0),L(b,null,T(M(dt),e=>(w(),L(`div`,{key:e,class:`flex items-center justify-center w-5 h-5 rounded-md bg-black/60 shrink-0`},[(w(),k(ve(M(C)[e]??M(C).motion),{class:`w-3 h-3 text-white/80`}))]))),128)),M(pt).length>0?(w(),L(`span`,{key:1,title:M(pt).join(`, `),class:`text-[10px] text-white/60 font-medium shrink-0`},` +`+V(M(pt).length),9,Ne)):F(``,!0)]),M(mt).length>0||M(ht)>0?(w(),L(`div`,Pe,[(w(!0),L(b,null,T(M(mt),(e,t)=>(w(),L(`div`,{key:t,class:j([`w-7 h-7 rounded overflow-hidden border bg-neutral-800 cursor-pointer`,t===M(X)?`border-primary/80`:`border-white/20`]),onClick:e=>xt(t,e)},[N(`img`,{src:e.url,alt:e.type,decoding:`async`,loading:`lazy`,class:`w-full h-full object-cover`},null,8,Ie)],10,Fe))),128)),M(ht)>0?(w(),L(`span`,Le,`+`+V(M(ht)),1)):F(``,!0)])):F(``,!0)],512),M(B)&&M(W)&&M(B).isLoading.value?(w(),L(`div`,Re,[A(g,{class:`w-[28px] h-[28px] m-0`,"stroke-width":`6`})])):F(``,!0),M(vt)?(w(),L(`div`,ze,[N(`span`,Be,V(M(vt)),1)])):F(``,!0)],2)],544)}}}),[[`__scopeId`,`data-v-52c7a97b`]]),qe={name:`VirtualScroller`,components:{SpinnerIcon:l},extends:{name:`BaseVirtualScroller`,extends:c,provide(){return{$pcVirtualScroller:this,$parentInstance:this}},props:{id:{type:String,default:null},style:null,class:null,items:{type:Array,default:null},itemSize:{type:[Number,Array],default:0},scrollHeight:null,scrollWidth:null,orientation:{type:String,default:`vertical`},rtl:{type:Boolean,default:!1},numToleratedItems:{type:Number,default:null},delay:{type:Number,default:0},resizeDelay:{type:Number,default:10},lazy:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},loaderDisabled:{type:Boolean,default:!1},columns:{type:Array,default:null},loading:{type:Boolean,default:!1},showSpacer:{type:Boolean,default:!0},showLoader:{type:Boolean,default:!1},tabindex:{type:Number,default:0},inline:{type:Boolean,default:!1},step:{type:Number,default:0},appendOnly:{type:Boolean,default:!1},autoSize:{type:Boolean,default:!1},itemKey:{type:[String,Function],default:null}},style:H,beforeMount(){H.loadCSS({nonce:this.$primevueConfig?.csp?.nonce})}},inheritAttrs:!1,emits:[`update:numToleratedItems`,`scroll`,`scroll-index-change`,`lazy-load`],data(){let e=this.isBoth();return{first:e?{rows:0,cols:0}:0,last:e?{rows:0,cols:0}:0,page:e?{rows:0,cols:0}:0,numItemsInViewport:e?{rows:0,cols:0}:0,lastScrollPos:e?{top:0,left:0}:0,d_numToleratedItems:this.numToleratedItems,d_loading:this.loading,loaderArr:[],spacerStyle:{},contentStyle:{}}},element:null,content:null,lastScrollPos:null,scrollTimeout:null,resizeTimeout:null,defaultWidth:0,defaultHeight:0,defaultContentWidth:0,defaultContentHeight:0,isRangeChanged:!1,lazyLoadState:{},resizeListener:null,initialized:!1,computed:{containerClass(){return[`p-virtualscroller`,this.class,{"p-virtualscroller-inline":this.inline,"p-virtualscroller-both p-both-scroll":this.isBoth(),"p-virtualscroller-horizontal p-horizontal-scroll":this.isHorizontal(),"p-virtualscroller-rtl":this.rtl&&this.isHorizontal()}]},contentClass(){return[`p-virtualscroller-content`,{"p-virtualscroller-loading":this.d_loading}]},loaderClass(){return[`p-virtualscroller-loader`,{"p-virtualscroller-loader-mask":!this.$slots.loader}]},loadedItems(){return this.items&&!this.d_loading?this.isBoth()?this.items.slice(this.appendOnly?0:this.first.rows,this.last.rows).map(e=>this.columns?e:e.slice(this.appendOnly?0:this.first.cols,this.last.cols)):this.isHorizontal()&&this.columns?this.items:this.items.slice(this.appendOnly?0:this.first,this.last):[]},loadedRows(){return this.d_loading?this.loaderDisabled?this.loaderArr:[]:this.loadedItems},loadedColumns(){if(this.columns){let e=this.isBoth(),t=this.isHorizontal();if(e||t)return this.d_loading&&this.loaderDisabled?e?this.loaderArr[0]:this.loaderArr:this.columns.slice(e?this.first.cols:this.first,e?this.last.cols:this.last)}return this.columns}},watch:{numToleratedItems(e){this.d_numToleratedItems=e},loading(e,t){this.lazy&&e!==t&&e!==this.d_loading&&(this.d_loading=e)},items(e,t){(!t||t.length!==(e||[]).length)&&this.scheduleInit()},itemSize(){this.scheduleInit()},orientation(){this.lastScrollPos=this.isBoth()?{top:0,left:0}:0},scrollHeight(){this.scheduleInit()},scrollWidth(){this.scheduleInit()}},mounted(){this.viewInit(),this.lastScrollPos=this.isBoth()?{top:0,left:0}:0,this.lazyLoadState=this.lazyLoadState||{}},updated(){!this.initialized&&this.viewInit()},unmounted(){this.unbindResizeListener(),this.initialized=!1},methods:{resolveItemKey(e,t){let n=this.itemKey;return typeof n==`function`?n(e,t)??t:typeof n==`string`&&typeof e==`object`&&e?e[n]??t:t},viewInit(){u(this.element)&&(this.setContentEl(this.content),this.init(),this.calculateAutoSize(),this.bindResizeListener(),this.defaultWidth=e(this.element),this.defaultHeight=a(this.element),this.defaultContentWidth=e(this.content),this.defaultContentHeight=a(this.content),this.initialized=!0)},init(){this.disabled||(this.setSize(),this.calculateOptions(),this.setSpacerSize())},scheduleInit(){this._initScheduled||(this._initScheduled=!0,Promise.resolve().then(()=>{this._initScheduled=!1,this.init(),this.calculateAutoSize()}))},isVertical(){return this.orientation===`vertical`},isHorizontal(){return this.orientation===`horizontal`},isBoth(){return this.orientation===`both`},scrollTo(e){this.element&&this.element.scrollTo(e)},scrollToIndex(e,t=`auto`){let n=this.isBoth(),r=this.isHorizontal(),i=this.rtl&&r;if(n?e.every(e=>e>-1):e>-1){let a=this.first,{scrollTop:o=0,scrollLeft:s=0}=this.element,{numToleratedItems:c}=this.calculateNumItems(),l=this.getContentPosition(),u=this.itemSize,d=(e=0,t)=>e<=t?0:e,f=(e,t,n)=>e*t+n,p=(e=0,n=0)=>{i&&(e=this.element.scrollWidth-this.element.clientWidth-e),this.scrollTo({left:e,top:n,behavior:t})},m=n?{rows:0,cols:0}:0,h=!1,g=!1;n?(m={rows:d(e[0],c[0]),cols:d(e[1],c[1])},p(f(m.cols,u[1],l.left),f(m.rows,u[0],l.top)),g=this.lastScrollPos.top!==o||this.lastScrollPos.left!==s,h=m.rows!==a.rows||m.cols!==a.cols):(m=d(e,c),r?p(f(m,u,l.left),o):p(s,f(m,u,l.top)),g=this.lastScrollPos!==(r?s:o),h=m!==a),this.isRangeChanged=h,g&&(this.first=m)}},scrollInView(e,t,n=`auto`){if(t){let r=this.isBoth(),i=this.isHorizontal();if(r?e.every(e=>e>-1):e>-1){let{first:a,viewport:o}=this.getRenderedRange(),s=(e=0,t=0)=>this.scrollTo({left:e,top:t,behavior:n}),c=t===`to-start`,l=t===`to-end`;if(c){if(r)o.first.rows-a.rows>e[0]?s(o.first.cols*this.itemSize[1],(o.first.rows-1)*this.itemSize[0]):o.first.cols-a.cols>e[1]&&s((o.first.cols-1)*this.itemSize[1],o.first.rows*this.itemSize[0]);else if(o.first-a>e){let e=(o.first-1)*this.itemSize;i?s(e,0):s(0,e)}}else if(l){if(r)o.last.rows-a.rows<=e[0]+1?s(o.first.cols*this.itemSize[1],(o.first.rows+1)*this.itemSize[0]):o.last.cols-a.cols<=e[1]+1&&s((o.first.cols+1)*this.itemSize[1],o.first.rows*this.itemSize[0]);else if(o.last-a<=e+1){let e=(o.first+1)*this.itemSize;i?s(e,0):s(0,e)}}}}else this.scrollToIndex(e,n)},getRenderedRange(){let e=(e,t)=>Math.floor(e/(t||e)),t=this.first,n=0;if(this.element){let r=this.isBoth(),i=this.isHorizontal(),{scrollTop:a,scrollLeft:o}=this.element;r?(t={rows:e(a,this.itemSize[0]),cols:e(o,this.itemSize[1])},n={rows:t.rows+this.numItemsInViewport.rows,cols:t.cols+this.numItemsInViewport.cols}):(t=e(i?o:a,this.itemSize),n=t+this.numItemsInViewport)}return{first:this.first,last:this.last,viewport:{first:t,last:n}}},calculateNumItems(){let e=this.isBoth(),t=this.isHorizontal(),n=this.itemSize,r=this.getContentPosition(),i=this.element?this.element.offsetWidth-r.left:0,a=this.element?this.element.offsetHeight-r.top:0,o=(e,t)=>Math.ceil(e/(t||e)),s=e=>Math.ceil(e/2),c=e?{rows:o(a,n[0]),cols:o(i,n[1])}:o(t?i:a,n);return{numItemsInViewport:c,numToleratedItems:this.d_numToleratedItems||(e?[s(c.rows),s(c.cols)]:s(c))}},calculateOptions(){let e=this.isBoth(),t=this.first,{numItemsInViewport:n,numToleratedItems:r}=this.calculateNumItems(),i=(e,t,n,r=!1)=>this.getLast(e+t+(e<n?2:3)*n,r),a=e?{rows:i(t.rows,n.rows,r[0]),cols:i(t.cols,n.cols,r[1],!0)}:i(t,n,r);this.last=a,this.numItemsInViewport=n,this.d_numToleratedItems=r,this.$emit(`update:numToleratedItems`,this.d_numToleratedItems),this.showLoader&&(this.loaderArr=e?Array.from({length:n.rows}).map(()=>Array.from({length:n.cols})):Array.from({length:n})),this.lazy&&Promise.resolve().then(()=>{this.lazyLoadState={first:this.step?e?{rows:0,cols:t.cols}:0:t,last:Math.min(this.step?this.step:a,this.items?.length-1||0)},this.$emit(`lazy-load`,this.lazyLoadState)})},calculateAutoSize(){this.autoSize&&!this.d_loading&&Promise.resolve().then(()=>{if(this.content){let t=this.isBoth(),n=this.isHorizontal(),r=this.isVertical();this.content.style.minHeight=this.content.style.minWidth=`auto`,this.content.style.position=`relative`,this.element.style.contain=`none`;let[i,o]=[e(this.element),a(this.element)];(t||n)&&(this.element.style.width=i<this.defaultWidth?i+`px`:this.scrollWidth||this.defaultWidth+`px`),(t||r)&&(this.element.style.height=o<this.defaultHeight?o+`px`:this.scrollHeight||this.defaultHeight+`px`),this.content.style.minHeight=this.content.style.minWidth=``,this.content.style.position=``,this.element.style.contain=``}})},getLast(e=0,t){return this.items?Math.min(t?(this.columns||this.items[0])?.length||0:this.items?.length||0,e):0},getContentPosition(){if(this.content){let e=getComputedStyle(this.content),t=parseFloat(e.paddingLeft)+Math.max(parseFloat(e.left)||0,0),n=parseFloat(e.paddingRight)+Math.max(parseFloat(e.right)||0,0),r=parseFloat(e.paddingTop)+Math.max(parseFloat(e.top)||0,0),i=parseFloat(e.paddingBottom)+Math.max(parseFloat(e.bottom)||0,0);return{left:t,right:n,top:r,bottom:i,x:t+n,y:r+i}}return{left:0,right:0,top:0,bottom:0,x:0,y:0}},setSize(){if(this.element){let e=this.isBoth(),t=this.isHorizontal(),n=this.element.parentElement,r=this.scrollWidth||`${this.element.offsetWidth||n.offsetWidth}px`,i=this.scrollHeight||`${this.element.offsetHeight||n.offsetHeight}px`,a=(e,t)=>this.element.style[e]=t;e||t?(a(`height`,i),a(`width`,r)):a(`height`,i)}},setSpacerSize(){let e=this.items;if(e){let t=this.isBoth(),n=this.isHorizontal(),r=this.getContentPosition(),i=(e,t,n,r=0)=>this.spacerStyle={...this.spacerStyle,[`${e}`]:(t||[]).length*n+r+`px`};t?(i(`height`,e,this.itemSize[0],r.y),i(`width`,this.columns||e[1],this.itemSize[1],r.x)):n?i(`width`,this.columns||e,this.itemSize,r.x):i(`height`,e,this.itemSize,r.y)}},setContentPosition(e){if(this.content&&!this.appendOnly){let t=this.isBoth(),n=this.isHorizontal(),r=this.rtl&&n,i=e?e.first:this.first,a=(e,t)=>e*t,o=(e=0,t=0)=>{let n=r?-e:e;this.contentStyle={...this.contentStyle,transform:`translate3d(${n}px, ${t}px, 0)`}};if(t){let e=i.rows,t=i.cols,n=this.itemSize;o(a(t,n[1]),a(e,n[0]))}else{let e=i,t=this.itemSize,r=a(e,t);n?o(r,0):o(0,r)}}},onScrollPositionChange(e){let t=e.target,n=this.isBoth(),r=this.isHorizontal(),i=this.rtl&&r,a=this.getContentPosition(),o=(e,t)=>e?e>t?e-t:e:0,s=(e,t)=>Math.floor(e/(t||e)),c=o(t.scrollTop,a.top),l=o(t.scrollLeft,a.left);i&&l<0&&(l=Math.abs(l));let u=n?{rows:0,cols:0}:0,d=this.last,f=!1,p=this.lastScrollPos;if(n){let e=this.lastScrollPos.top<=c,n=this.lastScrollPos.left<=l;if(!this.appendOnly||this.appendOnly&&(e||n)){let r={rows:s(c,this.itemSize[0]),cols:s(l,this.itemSize[1])},i={rows:this.calculateTriggerIndex(r.rows,this.first.rows,this.last.rows,this.numItemsInViewport.rows,this.d_numToleratedItems[0],e),cols:this.calculateTriggerIndex(r.cols,this.first.cols,this.last.cols,this.numItemsInViewport.cols,this.d_numToleratedItems[1],n)};u={rows:this.calculateFirst(r.rows,i.rows,this.first.rows,this.last.rows,this.numItemsInViewport.rows,this.d_numToleratedItems[0],e),cols:this.calculateFirst(r.cols,i.cols,this.first.cols,this.last.cols,this.numItemsInViewport.cols,this.d_numToleratedItems[1],n,!0)},d={rows:this.calculateLast(r.rows,u.rows,this.last.rows,this.numItemsInViewport.rows,this.d_numToleratedItems[0]),cols:this.calculateLast(r.cols,u.cols,this.last.cols,this.numItemsInViewport.cols,this.d_numToleratedItems[1],!0)},f=u.rows!==this.first.rows||d.rows!==this.last.rows||u.cols!==this.first.cols||d.cols!==this.last.cols||this.isRangeChanged,p={top:c,left:t.scrollLeft}}}else{let e=r?l:c,t=this.lastScrollPos<=e;if(!this.appendOnly||this.appendOnly&&t){let n=s(e,this.itemSize),r=this.calculateTriggerIndex(n,this.first,this.last,this.numItemsInViewport,this.d_numToleratedItems,t);u=this.calculateFirst(n,r,this.first,this.last,this.numItemsInViewport,this.d_numToleratedItems,t),d=this.calculateLast(n,u,this.last,this.numItemsInViewport,this.d_numToleratedItems),f=u!==this.first||d!==this.last||this.isRangeChanged,p=e}}return{first:u,last:d,isRangeChanged:f,scrollPos:p}},calculateTriggerIndex(e,t,n,r,i,a){return e<=i?i:a?n-r-i:t+i-1},calculateFirst(e,t,n,r,i,a,o,s=!1){if(e<=a)return 0;let c=Math.max(0,o?e<t?n:e-a:e>t?n:e-2*a),l=this.getLast(c,s);return c>l?l-i:c},calculateLast(e,t,n,r,i,a=!1){let o=t+r+2*i;return e>=i&&(o+=i+1),this.getLast(o,a)},onScrollChange(e){let{first:t,last:n,isRangeChanged:r,scrollPos:i}=this.onScrollPositionChange(e);if(r){let e={first:t,last:n};if(this.setContentPosition(e),this.first=t,this.last=n,this.lastScrollPos=i,this.$emit(`scroll-index-change`,e),this.lazy&&this.isPageChanged(t)){let e={first:this.step?Math.min(this.getPageByFirst(t)*this.step,(this.items?.length||0)-this.step):t,last:Math.min(this.step?(this.getPageByFirst(t)+1)*this.step:n,this.items?.length-1||0)};(this.lazyLoadState.first!==e.first||this.lazyLoadState.last!==e.last)&&this.$emit(`lazy-load`,e),this.lazyLoadState=e}}},onScroll(e){if(this.$emit(`scroll`,e),this.delay){if(this.scrollTimeout&&clearTimeout(this.scrollTimeout),this.isPageChanged()){if(!this.d_loading&&this.showLoader){let{isRangeChanged:t}=this.onScrollPositionChange(e);(t||this.step&&this.isPageChanged())&&(this.d_loading=!0)}this.scrollTimeout=setTimeout(()=>{this.onScrollChange(e),this.d_loading&&this.showLoader&&(!this.lazy||this.loading===void 0)&&(this.d_loading=!1,this.page=this.getPageByFirst())},this.delay)}}else this.onScrollChange(e)},onResize(){this.resizeTimeout&&clearTimeout(this.resizeTimeout),this.resizeTimeout=setTimeout(()=>{if(u(this.element)){let t=this.isBoth(),n=this.isVertical(),r=this.isHorizontal(),[i,o]=[e(this.element),a(this.element)],[s,c]=[i!==this.defaultWidth,o!==this.defaultHeight];(t?s||c:r?s:n&&c)&&(this.d_numToleratedItems=this.numToleratedItems,this.defaultWidth=i,this.defaultHeight=o,this.defaultContentWidth=e(this.content),this.defaultContentHeight=a(this.content),this.init())}},this.resizeDelay)},bindResizeListener(){this.resizeListener||(this.resizeListener=this.onResize.bind(this),window.addEventListener(`resize`,this.resizeListener),window.addEventListener(`orientationchange`,this.resizeListener))},unbindResizeListener(){this.resizeListener&&=(window.removeEventListener(`resize`,this.resizeListener),window.removeEventListener(`orientationchange`,this.resizeListener),null)},getOptions(e){let t=(this.items||[]).length,n=this.isBoth()?this.first.rows+e:this.first+e;return{index:n,count:t,first:n===0,last:n===t-1,even:n%2==0,odd:n%2!=0}},getLoaderOptions(e,t){let n=this.loaderArr.length;return{index:e,count:n,first:e===0,last:e===n-1,even:e%2==0,odd:e%2!=0,...t}},getPageByFirst(e){return Math.floor(((e??this.first)+this.d_numToleratedItems*4)/(this.step||1))},isPageChanged(e){return this.step&&!this.lazy?this.page!==this.getPageByFirst(e??this.first):!0},setContentEl(e){this.content=e||this.content||f(this.element,`[data-pc-section="content"]`)},elementRef(e){this.element=e},contentRef(e){this.content=e}}},U=[`tabindex`];function Je(e,t,n,r,i,a){let o=C(`SpinnerIcon`);return e.disabled?(w(),L(b,{key:1},[S(e.$slots,`default`),S(e.$slots,`content`,{items:e.items,rows:e.items,columns:a.loadedColumns})],64)):(w(),L(`div`,x({key:0,ref:a.elementRef,class:a.containerClass,tabindex:e.tabindex,style:e.style},e.ptmi(`root`),{onScroll:t[0]||=(...e)=>a.onScroll&&a.onScroll(...e)}),[S(e.$slots,`content`,{styleClass:a.contentClass,items:a.loadedItems,getItemOptions:a.getOptions,loading:i.d_loading,getLoaderOptions:a.getLoaderOptions,itemSize:e.itemSize,rows:a.loadedRows,columns:a.loadedColumns,contentRef:a.contentRef,spacerStyle:i.spacerStyle,contentStyle:i.contentStyle,vertical:a.isVertical(),horizontal:a.isHorizontal(),both:a.isBoth()},()=>[N(`div`,x({ref:a.contentRef,class:a.contentClass,style:i.contentStyle},e.ptm(`content`)),[(w(!0),L(b,null,T(a.loadedItems,(t,n)=>S(e.$slots,`item`,{item:t,options:a.getOptions(n)},void 0,void 0,a.resolveItemKey(t,n))),128))],16)]),e.showSpacer?(w(),L(`div`,x({key:0,class:`p-virtualscroller-spacer`,style:i.spacerStyle},e.ptm(`spacer`)),null,16)):F(``,!0),!e.loaderDisabled&&e.showLoader&&i.d_loading?(w(),L(`div`,x({key:1,class:a.loaderClass},e.ptm(`loader`)),[e.$slots&&e.$slots.loader?(w(!0),L(b,{key:0},T(i.loaderArr,(t,n)=>S(e.$slots,`loader`,{options:a.getLoaderOptions(n,a.isBoth()&&{numCols:e.d_numItemsInViewport.cols})},void 0,void 0,n)),128)):F(``,!0),S(e.$slots,`loadingicon`,{},()=>[A(o,x({spin:``,class:`p-virtualscroller-loading-icon`},e.ptm(`loadingIcon`)),null,16)])],16)):F(``,!0)],16,U))}var W=y(qe,[[`render`,Je]]),G=y(P({__name:`CuiRecordingsGrid`,props:{items:{},minItemWidth:{},aspectRatio:{default:1},gap:{default:8},hasMore:{type:Boolean,default:!1},loadMore:{type:Function,default:void 0},itemKey:{type:Function,default:void 0}},setup(e,{expose:t}){let n=e,r=D(`containerRef`),{width:i,height:a}=p(r),o=I(()=>a.value>0?`${a.value}px`:void 0),s=I(()=>{let e=i.value;if(!e)return 0;let t=n.gap;return Math.max(1,Math.floor((e+t)/(n.minItemWidth+t)))}),c=I(()=>{let e=i.value,t=s.value;return!e||!t?0:Math.floor((e-(t-1)*n.gap)/t)}),l=I(()=>c.value?Math.floor(c.value/n.aspectRatio):0),u=I(()=>l.value?l.value+n.gap:0),d=I(()=>{let e=s.value;if(!e)return[];let t=[];for(let r=0;r<n.items.length;r+=e)t.push(n.items.slice(r,r+e));return t});function f(e){if(n.itemKey)return n.itemKey(e);let t=e;return t.id??t.key??JSON.stringify(e)}function m(e){let t=e;if(!(!t||t.length===0))return f(t[0])}let h=!1,g=null;async function _(){if(h||!n.hasMore||!n.loadMore||g!==null&&n.items.length===g)return;h=!0;let e=n.items.length;try{await Promise.resolve(n.loadMore())}finally{h=!1,g=n.items.length===e?e:null}}let ee=R(0);function te(e){let t=e.target;if(!t)return;ee.value=t.scrollTop;let n=u.value*3;t.scrollTop+t.clientHeight>=t.scrollHeight-n&&_()}function ne(){(r.value?.querySelector(`.recordings-scroll`))?.scrollTo({top:0,behavior:`smooth`})}let v=!1;return _e([()=>n.items.length,a,u,()=>n.hasMore],()=>{v||(v=!0,B(()=>{if(v=!1,!n.hasMore)return;let e=a.value,t=d.value.length*u.value;e>0&&u.value>0&&t<e+u.value&&_()}))},{flush:`post`}),t({scrollToTop:ne,scrollY:ee}),(t,n)=>{let i=W;return w(),L(`div`,{ref_key:`containerRef`,ref:r,class:`recordings-grid-root`},[M(d).length>0&&M(c)>0?(w(),k(i,{key:0,items:M(d),"item-size":M(u),"scroll-height":M(o),orientation:`vertical`,class:`recordings-scroll`,"num-tolerated-items":2,"item-key":m,onScroll:te},{item:O(({item:n})=>[N(`div`,{class:`recordings-row`,style:z({height:`${M(u)}px`,gap:`${e.gap}px`})},[(w(!0),L(b,null,T(n,e=>(w(),L(`div`,{key:f(e),style:z({width:`${M(c)}px`,height:`${M(l)}px`})},[S(t.$slots,`item`,{item:e},void 0,!0)],4))),128))],4)]),_:3},8,[`items`,`item-size`,`scroll-height`])):F(``,!0)],512)}}}),[[`__scopeId`,`data-v-e61b8b84`]]);function K(e){if(e.episode)return e.episode.endTime;if(e.segIndex!==void 0){let t=e.event.segments?.[e.segIndex];if(t)return t.firstSeen}return e.event.thumbnailAt??e.event.startTime}function q(e){let t=[];for(let n of e){let e=n.segments??[];if(e.length<=1){t.push({event:n,key:n.id});continue}e.forEach((e,r)=>{e&&t.push({event:n,key:`${n.id}:seg:${r}`,segIndex:r})})}return t.sort((e,t)=>K(t)-K(e)),t}export{Ke as i,K as n,G as r,q as t};
|