@camera.ui/server 0.0.103 → 0.0.104
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-C4HBXE9H.js → 404-CJ99-HuF.js} +1 -1
- package/dist/interface/assets/{About-BB65Lzts.js → About-B0RkqPCF.js} +1 -1
- package/dist/interface/assets/{Adminpanel-DksrdOX6.js → Adminpanel-BzjRR4E-.js} +1 -1
- package/dist/interface/assets/{Automation-DSyCezSx.js → Automation-BxZOk7_I.js} +2 -2
- package/dist/interface/assets/{Automations-BqHoiN9D.js → Automations-DCnYU4ec.js} +1 -1
- package/dist/interface/assets/{Camera-BUkNxSX8.js → Camera-uZPZMDm6.js} +2 -2
- package/dist/interface/assets/{CameraConsole-B5tlzPMf.js → CameraConsole-C_TUwy4O.js} +1 -1
- package/dist/interface/assets/{Cameras-DnMkOoQ-.js → Cameras-CCjDWbDk.js} +1 -1
- package/dist/interface/assets/{Camview-pqMzyAGd.js → Camview-DGtE5Z3s.js} +1 -1
- package/dist/interface/assets/{Config-BXraGGzy.js → Config-QQ7HALtt.js} +1 -1
- package/dist/interface/assets/{ConfigActionCameraControl-BW8EcAmD.js → ConfigActionCameraControl-C7ZfjHnE.js} +1 -1
- package/dist/interface/assets/{ConfigActionDelay-Cv1Jc4Af.js → ConfigActionDelay-C9zOKCqa.js} +1 -1
- package/dist/interface/assets/{ConfigActionHttp-Exr4qXgr.js → ConfigActionHttp-zeFP7jW9.js} +1 -1
- package/dist/interface/assets/{ConfigActionImageInput-C_blNA7l.js → ConfigActionImageInput-D19IiOQh.js} +1 -1
- package/dist/interface/assets/{ConfigActionNotification-c82sNKGj.js → ConfigActionNotification-vKL_FJi6.js} +1 -1
- package/dist/interface/assets/{ConfigActionOutput-BWWI1I05.js → ConfigActionOutput-C9P9NVNR.js} +1 -1
- package/dist/interface/assets/{ConfigActionPlugin-C-ssa_L8.js → ConfigActionPlugin-BfjaRyTe.js} +1 -1
- package/dist/interface/assets/{ConfigActionSensor-D84c6MGM.js → ConfigActionSensor-BGIRJ1VF.js} +1 -1
- package/dist/interface/assets/{ConfigActionSnapshot-gVinlxno.js → ConfigActionSnapshot-ClUBwM1R.js} +1 -1
- package/dist/interface/assets/{ConfigActionVariable-BSQEmP0j.js → ConfigActionVariable-COV3XNCP.js} +1 -1
- package/dist/interface/assets/{ConfigConditionIfElse-C9741PPm.js → ConfigConditionIfElse-CRzCscc-.js} +1 -1
- package/dist/interface/assets/{ConfigConditionSensorState-BaTq_Nw9.js → ConfigConditionSensorState-DZJkEOJX.js} +1 -1
- package/dist/interface/assets/{ConfigConditionSwitch-BlGjAB9K.js → ConfigConditionSwitch-CY52JGdW.js} +1 -1
- package/dist/interface/assets/{ConfigConditionTime-Drt82ljn.js → ConfigConditionTime-o7CY--td.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerDetection-CsMfvz0e.js → ConfigTriggerDetection-DRM0HbdD.js} +1 -1
- package/dist/interface/assets/ConfigTriggerGeofence-CJi5c7cN.js +1 -0
- package/dist/interface/assets/{ConfigTriggerManual-Bq8BSgf-.js → ConfigTriggerManual-B8iZq1a7.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerSchedule-BBH8-VaZ.js → ConfigTriggerSchedule-sG8s23os.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerSensor-DqT2GK2o.js → ConfigTriggerSensor-Dc9qP7jS.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerSystem-wbIuPI0Y.js → ConfigTriggerSystem-wZjLxEWq.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerWebhook-B-8yle9W.js → ConfigTriggerWebhook-BpWO2kXx.js} +1 -1
- package/dist/interface/assets/{Console-CI1H4Qzv.js → Console-B79GknLp.js} +1 -1
- package/dist/interface/assets/{CuiActionButton-DGHrQXSc.js → CuiActionButton-DaeBGbij.js} +1 -1
- package/dist/interface/assets/{CuiAvatar-BNZbtuaI.js → CuiAvatar-CMR4MZZv.js} +1 -1
- package/dist/interface/assets/{CuiBBoxPlayground-_SGm4cz1.js → CuiBBoxPlayground-BJxrh8Hk.js} +1 -1
- package/dist/interface/assets/CuiBottomSheet-3-36plJ0.js +1 -0
- package/dist/interface/assets/{CuiBottomSheet-VX6AuCso.js → CuiBottomSheet-DmanZWbm.js} +1 -1
- package/dist/interface/assets/{CuiCameraCard-BEGdNbhj.js → CuiCameraCard-DYkArUIE.js} +1 -1
- package/dist/interface/assets/{CuiCameraPipCard-DpAujrhA.js → CuiCameraPipCard-BvJJFMV2.js} +1 -1
- package/dist/interface/assets/{CuiCameraRecordings-BRVbZCzz.js → CuiCameraRecordings-qS2sljLl.js} +1 -1
- package/dist/interface/assets/{CuiCameraShares-dY9bxWdp.js → CuiCameraShares-BNyn9lMv.js} +1 -1
- package/dist/interface/assets/{CuiCameraSnapshot-DvIhxEdj.js → CuiCameraSnapshot-DzweaAbD.js} +1 -1
- package/dist/interface/assets/{CuiCameraTable-Ykb8p1Tt.js → CuiCameraTable-CCu87mix.js} +1 -1
- package/dist/interface/assets/{CuiDataTable-DyzBmfqA.js → CuiDataTable-Q0cMKDSG.js} +1 -1
- package/dist/interface/assets/{CuiFloatingButton-B4byvsOs.js → CuiFloatingButton-CLb4OXWq.js} +1 -1
- package/dist/interface/assets/{CuiImage-C0GGnNA9.js → CuiImage-OMrwpQrB.js} +1 -1
- package/dist/interface/assets/{CuiMarkdownContent-C6-rAxQO.js → CuiMarkdownContent-DL3Xnrg7.js} +1 -1
- package/dist/interface/assets/CuiMenu-BXurM_rM.js +1 -0
- package/dist/interface/assets/{CuiPluginCard-DpllCJXe.js → CuiPluginCard-o4XyKYKV.js} +2 -2
- package/dist/interface/assets/{CuiPluginOAuthButton--Jp3Q0A3.js → CuiPluginOAuthButton-CT_taZrW.js} +2 -2
- package/dist/interface/assets/{CuiQRCode-D2hEZT9L.js → CuiQRCode-Dv03yW5H.js} +1 -1
- package/dist/interface/assets/{CuiRecordingsGrid-BdcRMu0G.js → CuiRecordingsGrid-34f2-J9w.js} +1 -1
- package/dist/interface/assets/{CuiSchema-CkgT_tmr.js → CuiSchema-DPegn_DL.js} +1 -1
- package/dist/interface/assets/{CuiTopNavbarItem-DdZ2xZLa.js → CuiTopNavbarItem-D1yZXVK4.js} +1 -1
- package/dist/interface/assets/{CuiTopbarSlot-BlbZqDDn.js → CuiTopbarSlot-D8e3DC_V.js} +1 -1
- package/dist/interface/assets/{Faces-BkETqRJ6.js → Faces-CNCw8AXF.js} +1 -1
- package/dist/interface/assets/{FirstSteps-BilLeQ5G.js → FirstSteps-Dcr9xd_H.js} +1 -1
- package/dist/interface/assets/{Instances-BdSaPTUA.js → Instances-DCrJqqdk.js} +1 -1
- package/dist/interface/assets/Logs-9KBZQ4SH.js +6 -0
- package/dist/interface/assets/Menu-D82CRc95.js +1 -0
- package/dist/interface/assets/{OAuthDeviceFlow-CX8VE9Op.js → OAuthDeviceFlow-C6sk2XbU.js} +1 -1
- package/dist/interface/assets/{Plugin-DiJY8ovk.js → Plugin-DY1-hTa-.js} +1 -1
- package/dist/interface/assets/{PluginConsole-B6YqeO05.js → PluginConsole-D8K2fOf6.js} +1 -1
- package/dist/interface/assets/{PluginSchema-g4Srx0FS.js → PluginSchema-JKttwvkD.js} +1 -1
- package/dist/interface/assets/{Plugins-CMvoQGbI.js → Plugins-5y2A-S9R.js} +2 -2
- package/dist/interface/assets/{Recordings-CRZXMXeZ.js → Recordings-Bdii8y2w.js} +1 -1
- package/dist/interface/assets/{Settings-B5CPx04W.js → Settings-BQSZwEux.js} +1 -1
- package/dist/interface/assets/{SettingsAccount-BfZ8sdKS.js → SettingsAccount-7HSGeh_G.js} +1 -1
- package/dist/interface/assets/SettingsAccount-pc1G5uya.js +1 -0
- package/dist/interface/assets/SettingsAppearance-CDlFqm-u.js +1 -0
- package/dist/interface/assets/{SettingsAppearance-CI7FpIXv.js → SettingsAppearance-DAtwb17b.js} +1 -1
- package/dist/interface/assets/{SettingsBackup-BybcQ1Qu.js → SettingsBackup-Bj2pUzxN.js} +1 -1
- package/dist/interface/assets/{SettingsNotifications-wtu6QB4B.js → SettingsNotifications-Bk40tvnT.js} +2 -2
- package/dist/interface/assets/{SettingsRecordings-CUAdt-gW.js → SettingsRecordings-BfbVsR6a.js} +1 -1
- package/dist/interface/assets/SettingsRemote-CPq1K5z8.js +1 -0
- package/dist/interface/assets/SettingsRemote-D9COJF4m.css +1 -0
- package/dist/interface/assets/{SettingsSystem-uDcUCmqx.js → SettingsSystem-C9qSkCyX.js} +2 -2
- package/dist/interface/assets/{SettingsUsers-DQD7uvLD.js → SettingsUsers-BpwM-HIU.js} +1 -1
- package/dist/interface/assets/{Terminal-BCqT206D.js → Terminal-BB9MM3FG.js} +1 -1
- package/dist/interface/assets/{VariableInput-B6XB9GPi.js → VariableInput-YR8KBCWL.js} +1 -1
- package/dist/interface/assets/{VariableSuggestions-Bz3FsUVi.js → VariableSuggestions-BF2MDSW8.js} +1 -1
- package/dist/interface/assets/{VersionsHandler-XIP-8qdF.js → VersionsHandler-D2lhMYGG.js} +1 -1
- package/dist/interface/assets/{Workers-n0R8LJrp.js → Workers-Cn-kFp5K.js} +1 -1
- package/dist/interface/assets/{alert-outline-C1wLiv_z.js → alert-outline-CQlVMOxC.js} +1 -1
- package/dist/interface/assets/api-BB9AG_h5.css +2 -0
- package/dist/interface/assets/{api-CPYyBUl4.js → api-BSSGwZUW.js} +1 -1
- package/dist/interface/assets/api-CPonLnGH.js +2 -0
- package/dist/interface/assets/{arrow-left-CGyu-P3h.js → arrow-left-YsUvJVC6.js} +1 -1
- package/dist/interface/assets/{arrow-right-outline-DQ_SaRc3.js → arrow-right-outline-DKHopCcO.js} +1 -1
- package/dist/interface/assets/{auth-BQz6cI2B.js → auth-DuxuZzUv.js} +1 -1
- package/dist/interface/assets/{automation-B4F575nU.js → automation-JqGk69ZM.js} +1 -1
- package/dist/interface/assets/{automations-DuP9VcsG.js → automations-BjPRCiP3.js} +1 -1
- package/dist/interface/assets/{automations-Cz8XYNjF.js → automations-D4BRxXp2.js} +1 -1
- package/dist/interface/assets/{back-filled-DVeRsKmt.js → back-filled-2dVfzfd3.js} +1 -1
- package/dist/interface/assets/{backup-CHJcbko5.js → backup-B01_Kkb-.js} +1 -1
- package/dist/interface/assets/{bell-D6XTudrP.js → bell-DAJo7K-Y.js} +1 -1
- package/dist/interface/assets/{bell-outline-k9_tJysZ.js → bell-outline-6UpM5pQx.js} +1 -1
- package/dist/interface/assets/{cameras-BOHWrQm2.js → cameras-B4_XIEvq.js} +1 -1
- package/dist/interface/assets/{cameras.schema-DGaqX6vz.js → cameras.schema-BJtNPf50.js} +1 -1
- package/dist/interface/assets/{cctv-C9H_8mDb.js → cctv-BLn_0bJ6.js} +1 -1
- package/dist/interface/assets/{check-HQ9W_dro.js → check-DoWZir_S.js} +1 -1
- package/dist/interface/assets/{chevron-down-BFDmLtMX.js → chevron-down-Bzr6VWQF.js} +1 -1
- package/dist/interface/assets/{chevron-right-C1Rdu1sM.js → chevron-right-HArXFSSz.js} +1 -1
- package/dist/interface/assets/{circular-connection-CaaBP9U6.js → circular-connection-DLItZj68.js} +1 -1
- package/dist/interface/assets/{close-CEZvWyN1.js → close-BlkMdXhr.js} +1 -1
- package/dist/interface/assets/{close-circle-BtZFk77i.js → close-circle-J1rQOUEG.js} +1 -1
- package/dist/interface/assets/{cloud-check-C0emdjhh.js → cloud-check-DqBwzaPC.js} +1 -1
- package/dist/interface/assets/{cloud-outline-U1SKfuPN.js → cloud-outline-9JADkpxw.js} +1 -1
- package/dist/interface/assets/{cloud-outline-a06O-YjU.js → cloud-outline-BEXrgKM1.js} +1 -1
- package/dist/interface/assets/cloudHandoff-DR4OiIia.js +1 -0
- package/dist/interface/assets/{cog-OzsdLKVr.js → cog-CWyAfGhY.js} +1 -1
- package/dist/interface/assets/{copy-16-filled-BcFxEpOL.js → copy-16-filled-BvGFaW1f.js} +1 -1
- package/dist/interface/assets/{copy-BYDiYBqr.js → copy-CEGSZQjo.js} +1 -1
- package/dist/interface/assets/{delete-C4Qcsafo.js → delete-CVqAtfTw.js} +1 -1
- package/dist/interface/assets/{deviceId-B9H0nPQf.js → deviceId-Csqx7wv1.js} +1 -1
- package/dist/interface/assets/{dist-ew0paqIa.js → dist-DDpgYwYa.js} +1 -1
- package/dist/interface/assets/{download-CkCfeLe7.js → download-7RwLjvMX.js} +1 -1
- package/dist/interface/assets/esm-BA2sVcC5.js +1 -0
- package/dist/interface/assets/esm-BABYdz4G.js +1 -0
- package/dist/interface/assets/esm-BChmgDDk.js +1 -0
- package/dist/interface/assets/esm-BgpyzSA5.js +1 -0
- package/dist/interface/assets/esm-BhMVOOUn2.js +1 -0
- package/dist/interface/assets/esm-BwSW-2xH.js +1 -0
- package/dist/interface/assets/esm-C4QiEuND.js +1 -0
- package/dist/interface/assets/esm-CydVduuF.js +1 -0
- package/dist/interface/assets/esm-DCbdltvd.js +1 -0
- package/dist/interface/assets/esm-DYq0vy7A.js +1 -0
- package/dist/interface/assets/esm-DfZgCbxC.js +1 -0
- package/dist/interface/assets/esm-SjVG7wXH.js +1 -0
- package/dist/interface/assets/esm-ir2psFWa.js +1 -0
- package/dist/interface/assets/{eventIcons-3Ey2FdFX.js → eventIcons-BMaAnQWe.js} +1 -1
- package/dist/interface/assets/{face-recognition-K0AJVYWA.js → face-recognition-Bx4cPKgu.js} +1 -1
- package/dist/interface/assets/{github-xiZ7fokg.js → github--PDCVHbp.js} +1 -1
- package/dist/interface/assets/{grid-fill-D0IgCOgV.js → grid-fill-8exr_unf.js} +1 -1
- package/dist/interface/assets/{hasPermission-BHM3xbrG.js → hasPermission-C2RWjXuT.js} +1 -1
- package/dist/interface/assets/{home-DNvuy9WS.js → home-y0BuJeID.js} +1 -1
- package/dist/interface/assets/{information-outline-C4BW3Gje.js → information-outline-CGFN6gSy.js} +1 -1
- package/dist/interface/assets/{instances-8zX84KmH.js → instances-Etl_yihq.js} +1 -1
- package/dist/interface/assets/{lightbulb-outline-B7AbCNpH.js → lightbulb-outline-BKhaucU3.js} +1 -1
- package/dist/interface/assets/locale-BslWmL0t.js +1 -0
- package/dist/interface/assets/{main-CZoUmEEu.js → main-QYfiMUtP.js} +2 -2
- package/dist/interface/assets/{microphone-lTCBD-us.js → microphone-DZUScXOm.js} +1 -1
- package/dist/interface/assets/native-B5ps1ru1.js +1 -0
- package/dist/interface/assets/native-CBhIZ6td.js +1 -0
- package/dist/interface/assets/{nodeDefinitions-Cs4Hqoah.js → nodeDefinitions-nL8hz16a.js} +1 -1
- package/dist/interface/assets/{notifications-DpmIWiCl.js → notifications-SVoDimTP.js} +1 -1
- package/dist/interface/assets/{play-solid-DhbA9x56.js → play-solid-D7ZnjJiZ.js} +1 -1
- package/dist/interface/assets/plugin-Z96u0Zx7.js +1 -0
- package/dist/interface/assets/{plugins-BWlFg8TN.js → plugins-VMgnZZzG.js} +1 -1
- package/dist/interface/assets/{plus-iXo1T1is.js → plus-Dxy9-axc.js} +1 -1
- package/dist/interface/assets/{plus-CuWXW2I0.js → plus-mhsNCxIy.js} +1 -1
- package/dist/interface/assets/{power-DvDhRSv2.js → power-CQJ3md0z.js} +1 -1
- package/dist/interface/assets/{ring-resize-5EO1Mgq-.js → ring-resize-BseE4cGi.js} +1 -1
- package/dist/interface/assets/{round-alt-arrow-left-bold-B9Q0L9Pk.js → round-alt-arrow-left-bold-pJUhUxdP.js} +1 -1
- package/dist/interface/assets/{round-restart-alt-CRc-4ova.js → round-restart-alt-D3SOXMVf.js} +1 -1
- package/dist/interface/assets/router-BqJLYjxq.js +2 -0
- package/dist/interface/assets/{routerState-BIdUnXLb.js → routerState-g4QLPAT2.js} +1 -1
- package/dist/interface/assets/{search-Bl5hzTQq.js → search-BN5ng-N8.js} +1 -1
- package/dist/interface/assets/server-8uNYIjzr.js +1 -0
- package/dist/interface/assets/{settings-CJt70Wkh.js → settings-Bme_5kdU.js} +1 -1
- package/dist/interface/assets/{shares-DgzHTM68.js → shares-DsjePQGf.js} +1 -1
- package/dist/interface/assets/{shield-check-BziCMoN8.js → shield-check-COlnpzrA.js} +1 -1
- package/dist/interface/assets/{terminal-BjLzhOKN.js → terminal-wNcO8uZM.js} +1 -1
- package/dist/interface/assets/{theme-BDv_45d8.js → theme-DN8GOT_w.js} +1 -1
- package/dist/interface/assets/{trash-2-BAlrGkbt.js → trash-2-C8brLIvo.js} +1 -1
- package/dist/interface/assets/{trash-fill-PLsykzhy.js → trash-fill-DRtvsGbK.js} +1 -1
- package/dist/interface/assets/{trash2-Cme16a25.js → trash2-D3jwZOwR.js} +1 -1
- package/dist/interface/assets/{types-DZNoDDGr.js → types-B39ppbYi.js} +1 -1
- package/dist/interface/assets/{types-CRVH38bx.js → types-DenR6qD2.js} +1 -1
- package/dist/interface/assets/{ui-DSOnsqS6.js → ui-CEzY0rCW.js} +1 -1
- package/dist/interface/assets/{upload-BqDLVQPw.js → upload-Cdmv3bqg.js} +1 -1
- package/dist/interface/assets/{useBiometricCredentials-CIfX40Td.js → useBiometricCredentials-BWuRf0H0.js} +1 -1
- package/dist/interface/assets/{useCameraOptions-C_h2n9yn.js → useCameraOptions-DLmEgMil.js} +1 -1
- package/dist/interface/assets/{useCuiCameraDrawer-Ca6U-GzM.js → useCuiCameraDrawer-PokkyjqH.js} +1 -1
- package/dist/interface/assets/{useCuiDialog-C-2PMjxH.js → useCuiDialog-BEerzsp3.js} +2 -2
- package/dist/interface/assets/{useFileDownload-DntU1WW7.js → useFileDownload-BzheFQ77.js} +1 -1
- package/dist/interface/assets/useLogsSocket-4F2-d9fa.css +1 -0
- package/dist/interface/assets/useLogsSocket-CeW070HG.js +5 -0
- package/dist/interface/assets/{useSharedComposables-CzkF-tst.js → useSharedComposables-B5-Uy9Br.js} +1 -1
- package/dist/interface/assets/{useStreamStatus-DFQPLtc1.js → useStreamStatus-BPixdI1Y.js} +1 -1
- package/dist/interface/assets/{users.schema-Oy4QkALa.js → users.schema-D443yTkQ.js} +1 -1
- package/dist/interface/assets/{vendor-cameraui-D-WYtlxb.js → vendor-cameraui-D9I8uPRL.js} +6 -6
- package/dist/interface/assets/{vendor-capacitor-Dj-v5ogO.js → vendor-capacitor-BtNHOGrF.js} +2 -2
- package/dist/interface/assets/{vendor-chart-DmAusBrV.js → vendor-chart-BKRjkkso.js} +1 -1
- package/dist/interface/assets/{vendor-core-CWeZebhd.js → vendor-core-DSNqTlQH.js} +1 -1
- package/dist/interface/assets/{vendor-dnd-UYEE071j.js → vendor-dnd-CQ6Y84Ed.js} +1 -1
- package/dist/interface/assets/{vendor-draggabilly-CH8RjBxh.js → vendor-draggabilly-H80KiwVT.js} +1 -1
- package/dist/interface/assets/{vendor-markdown-e7bfD1d7.js → vendor-markdown-BrmS8cUD.js} +2 -2
- package/dist/interface/assets/{vendor-primevue-01WhBsPb.js → vendor-primevue-CWF_imvX.js} +1 -1
- package/dist/interface/assets/{vendor-vueflow-DiKHypYV.js → vendor-vueflow-CqLtXe5N.js} +1 -1
- package/dist/interface/assets/{vendor-CUsAwmr-.js → vendor-zxCOTbSj.js} +1 -1
- package/dist/interface/assets/{view-grid-RH-li4l6.js → view-grid-BE5Jf7kM.js} +1 -1
- package/dist/interface/assets/web-7w3f7aLi.js +1 -0
- package/dist/interface/assets/web-BT5MaR7n.js +1 -0
- package/dist/interface/assets/web-BjKL51lK-BwIR9ZcW.js +1 -0
- package/dist/interface/assets/web-BlYmxOdT.js +1 -0
- package/dist/interface/assets/web-BwTMYkra.js +1 -0
- package/dist/interface/assets/web-C5ViZ_bO.js +1 -0
- package/dist/interface/assets/web-CLRw5PqE.js +1 -0
- package/dist/interface/assets/web-CXQ5ccCW.js +1 -0
- package/dist/interface/assets/web-CiGVMr2P.js +1 -0
- package/dist/interface/assets/web-D3RZyuLX.js +1 -0
- package/dist/interface/assets/web-RrW-c6nL.js +1 -0
- package/dist/interface/assets/web-mXYIlRZX.js +1 -0
- package/dist/interface/assets/workbox-window.prod.es5-b0JqyqHz.js +1 -0
- package/dist/interface/assets/{zoom-in-fuKu2une.js → zoom-in-BxhkL8eQ.js} +1 -1
- package/dist/interface/index.html +74 -74
- package/dist/interface/sw.js +1 -1
- package/dist/server/package.json +4 -4
- package/dist/server/src/api/controllers/server.controller.d.ts +3 -2
- package/dist/server/src/api/controllers/server.controller.js +19 -6
- package/dist/server/src/api/controllers/server.controller.js.map +1 -1
- package/dist/server/src/api/websocket/nsp/logs.d.ts +4 -0
- package/dist/server/src/api/websocket/nsp/logs.js +12 -0
- package/dist/server/src/api/websocket/nsp/logs.js.map +1 -1
- package/dist/server/src/go2rtc/index.js +1 -2
- package/dist/server/src/go2rtc/index.js.map +1 -1
- package/dist/server/src/remote/tunnel/client.js +1 -1
- package/dist/server/src/remote/tunnel/client.js.map +1 -1
- package/dist/server/src/rpc/server.js +1 -1
- package/dist/server/src/rpc/server.js.map +1 -1
- package/dist/server/src/services/logger/index.d.ts +2 -1
- package/dist/server/src/services/logger/index.js +7 -4
- package/dist/server/src/services/logger/index.js.map +1 -1
- package/dist/server/src/services/logger/logManager.d.ts +3 -1
- package/dist/server/src/services/logger/logManager.js +24 -2
- package/dist/server/src/services/logger/logManager.js.map +1 -1
- package/package.json +4 -4
- package/dist/interface/assets/ConfigTriggerGeofence-BDw4zW_P.js +0 -1
- package/dist/interface/assets/CuiBottomSheet-BcfVSQXw.js +0 -1
- package/dist/interface/assets/CuiMenu-KizSc3du.js +0 -1
- package/dist/interface/assets/Logs-Dgi4WIz_.js +0 -6
- package/dist/interface/assets/Menu-CaUSuqY2.js +0 -1
- package/dist/interface/assets/SettingsAccount-6i4VetmY.js +0 -1
- package/dist/interface/assets/SettingsAppearance-wh2bqft_.js +0 -1
- package/dist/interface/assets/SettingsRemote-CfMbi4U2.js +0 -1
- package/dist/interface/assets/SettingsRemote-PB1t8pgR.css +0 -1
- package/dist/interface/assets/api-CLcqLYO9.js +0 -2
- package/dist/interface/assets/api-Dbhyyb4d.css +0 -2
- package/dist/interface/assets/cloudHandoff-9LBU5i-Q.js +0 -1
- package/dist/interface/assets/esm-2lnAOjHs.js +0 -1
- package/dist/interface/assets/esm-BBV5a7C0.js +0 -1
- package/dist/interface/assets/esm-CZOTQSZO.js +0 -1
- package/dist/interface/assets/esm-CbRXoZZM.js +0 -1
- package/dist/interface/assets/esm-CeRrRtlf.js +0 -1
- package/dist/interface/assets/esm-Cj8JODrf.js +0 -1
- package/dist/interface/assets/esm-CqGR4fjd.js +0 -1
- package/dist/interface/assets/esm-CvywvXhO.js +0 -1
- package/dist/interface/assets/esm-DTSMvfe9.js +0 -1
- package/dist/interface/assets/esm-DiLxU9l9.js +0 -1
- package/dist/interface/assets/esm-DiyVK5c52.js +0 -1
- package/dist/interface/assets/esm-DnSyZMrH.js +0 -1
- package/dist/interface/assets/esm-iGk1166L.js +0 -1
- package/dist/interface/assets/locale-DXhDcKlE.js +0 -1
- package/dist/interface/assets/native-BAsSaSk8.js +0 -1
- package/dist/interface/assets/native-BPwfZDv_.js +0 -1
- package/dist/interface/assets/plugin-C2TEafc4.js +0 -1
- package/dist/interface/assets/router-CYuS11OS.js +0 -2
- package/dist/interface/assets/server-B3_iwGek.js +0 -1
- package/dist/interface/assets/useLogsSocket-DZ93-C8L.css +0 -1
- package/dist/interface/assets/useLogsSocket-R2SaD_bg.js +0 -5
- package/dist/interface/assets/web-43SKbD9K.js +0 -1
- package/dist/interface/assets/web-6w38of5K.js +0 -1
- package/dist/interface/assets/web-B-fOQXlB.js +0 -1
- package/dist/interface/assets/web-B8gAW1fJ.js +0 -1
- package/dist/interface/assets/web-BgY6GJTP.js +0 -1
- package/dist/interface/assets/web-BjKL51lK-CiovASye.js +0 -1
- package/dist/interface/assets/web-Bk5Tkroa.js +0 -1
- package/dist/interface/assets/web-D12Zinjs.js +0 -1
- package/dist/interface/assets/web-DGU3UU0v.js +0 -1
- package/dist/interface/assets/web-DMdJ4AXp.js +0 -1
- package/dist/interface/assets/web-KoJsMQg4.js +0 -1
- package/dist/interface/assets/web-dOswKNeM.js +0 -1
- package/dist/interface/assets/workbox-window.prod.es5-DBcE1m83.js +0 -1
- /package/dist/interface/assets/{logo-512-DLKVOU2S.png → error-256-DLKVOU2S.png} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{$t as e,Jt as t,On as n,Qn as r,Qt as i,Tn as a,cr as o,rr as s,sn as c,wn as l}from"./vendor-
|
|
1
|
+
import{$t as e,Jt as t,On as n,Qn as r,Qt as i,Tn as a,cr as o,rr as s,sn as c,wn as l}from"./vendor-zxCOTbSj.js";import{t as u}from"./useSharedComposables-B5-Uy9Br.js";var d=r(new Map),f=s();function p(){return{hasSlot:e=>(d.get(e)||0)>0,registerSlot:e=>{d.set(e,(d.get(e)||0)+1),l(()=>{let t=d.get(e)||0;t<=1?d.delete(e):d.set(e,t-1)})},registerScrollToTop:e=>{f.value=e,l(()=>{f.value===e&&(f.value=void 0)})},scrollToTop:()=>{f.value?f.value():window.scrollTo({top:0,behavior:`smooth`})}}}var m=c({__name:`CuiTopbarSlot`,props:{position:{}},setup(r){let s=r,{smBreakpoint:c}=u(),{registerSlot:l}=p();return l(s.position),(s,l)=>o(c)?(a(),i(t,{key:0,to:`#cui-topbar-${r.position}`,defer:``},[n(s.$slots,`default`)],8,[`to`])):e(``,!0)}});export{p as n,m as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Hn as e,N as t,Nn as n,R as r,ct as i,fi as a,jn as o,lt as s,tt as c}from"./vendor-cameraui-D-WYtlxb.js";import{C as l,s as u}from"./api-CLcqLYO9.js";import{$t as d,Dn as f,Gt as p,Hn as m,Kt as h,Ln as g,Qt as _,Tn as v,Un as y,Xn as b,Xt as x,Yn as S,Zt as C,an as w,cr as T,dr as E,en as D,er as O,fr as k,lr as A,sn as j,zn as M}from"./vendor-CUsAwmr-.js";import{a as N,t as P}from"./useSharedComposables-CzkF-tst.js";import{t as F}from"./close-CEZvWyN1.js";import{D as ee,E as te,J as I,O as ne,j as L,k as re,w as ie}from"./vendor-primevue-01WhBsPb.js";import{t as ae}from"./face-recognition-K0AJVYWA.js";import{t as oe}from"./CuiFloatingButton-B4byvsOs.js";import{t as R}from"./useCuiDialog-C-2PMjxH.js";import{t as se}from"./CuiTopbarSlot-BlbZqDDn.js";import{t as z}from"./plugins-BWlFg8TN.js";import{t as B}from"./delete-C4Qcsafo.js";import{t as ce}from"./back-filled-DVeRsKmt.js";import{t as le}from"./plus-CuWXW2I0.js";var V={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function H(e,t){return v(),D(`svg`,V,[...t[0]||=[C(`path`,{fill:`currentColor`,d:`M13 8a4 4 0 0 1-4 4a4 4 0 0 1-4-4a4 4 0 0 1 4-4a4 4 0 0 1 4 4m4 10v2H1v-2c0-2.21 3.58-4 8-4s8 1.79 8 4m3.5-3.5V16H19v-1.5zm-2-5H17V9a3 3 0 0 1 3-3a3 3 0 0 1 3 3c0 .97-.5 1.88-1.29 2.41l-.3.19c-.57.4-.91 1.01-.91 1.7v.2H19v-.2c0-1.19.6-2.3 1.59-2.95l.29-.19c.39-.26.62-.69.62-1.16A1.5 1.5 0 0 0 20 7.5A1.5 1.5 0 0 0 18.5 9z`},null,-1)]])}var ue=b({name:`mdi-account-question`,render:H}),U={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function W(e,t){return v(),D(`svg`,U,[...t[0]||=[C(`path`,{fill:`currentColor`,d:`M15 14c-2.67 0-8 1.33-8 4v2h16v-2c0-2.67-5.33-4-8-4m-9-4V7H4v3H1v2h3v3h2v-3h3v-2m6 2a4 4 0 0 0 4-4a4 4 0 0 0-4-4a4 4 0 0 0-4 4a4 4 0 0 0 4 4`},null,-1)]])}var G=b({name:`mdi-account-plus`,render:W}),K={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function q(e,t){return v(),D(`svg`,K,[...t[0]||=[C(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M5 12h14`},null,-1)]])}var J=b({name:`tabler-minus`,render:q}),Y={class:`aspect-square overflow-hidden flex items-center justify-center bg-black/5 dark:bg-black/30`},de=[`src`],fe=[`src`],pe={class:`font-medium truncate`},X={class:`text-xs text-muted`},Z={key:1,class:`relative cursor-default`},me={class:`bg-neutral-900 w-full rounded-xl overflow-hidden relative border-[1px] border-color shadow-lg`,style:{"aspect-ratio":`1 / 1`}},he=[`src`],ge={key:1,class:`w-full h-full flex items-center justify-center bg-neutral-800/80`},_e=[`src`],ve={class:`absolute top-0 left-0 right-0 p-2 bg-gradient-to-b from-black/60 to-transparent`},ye={class:`flex items-center justify-between`},be={class:`text-xs text-white/70`},xe={class:`absolute bottom-0 left-0 right-0 p-1.5 bg-gradient-to-t from-black/60 to-transparent flex items-center justify-center gap-1 dark-mode`},Se=j({__name:`CuiFaceCard`,props:{variant:{},thumbnail:{},name:{},imageCount:{},cameraName:{},timestamp:{},confidence:{},compact:{type:Boolean},showRemove:{type:Boolean},assignValue:{},assignOptions:{}},emits:[`click`,`assign`,`assign-prompt`,`skip`,`remove`],setup(t){let n=t,r=u(),a=x(()=>n.confidence?n.confidence>=.9?`text-green-400`:n.confidence>=.7?`text-yellow-400`:`text-red-400`:`text-white/50`),o=x(()=>n.timestamp?new Date(n.timestamp).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`}):``);return(n,s)=>{let c=i,l=J,u=e,f=G,h=B,g=I;return t.variant===`known`?(v(),_(c,{key:0,class:`cui-card transition-shadow cursor-pointer hover:shadow-md`,onClick:s[0]||=e=>n.$emit(`click`)},{header:m(()=>[C(`div`,Y,[t.thumbnail?(v(),D(`img`,{key:0,src:t.thumbnail,class:`w-full h-full object-cover`},null,8,de)):(v(),D(`img`,{key:1,src:T(r),class:`w-1/2 h-1/2 object-contain`},null,8,fe))])]),content:m(()=>[C(`div`,pe,k(t.name),1),C(`div`,X,k(t.imageCount)+` `+k(n.$t(`views.faces.images`)),1)]),_:1})):(v(),D(`div`,Z,[C(`div`,me,[t.thumbnail?(v(),D(`img`,{key:0,src:t.thumbnail,class:`w-full h-full object-cover`},null,8,he)):(v(),D(`div`,ge,[C(`img`,{src:T(r),class:`w-1/3 h-1/3 object-contain opacity-20`},null,8,_e)])),C(`div`,ve,[C(`div`,ye,[C(`span`,be,k(T(o)),1),t.confidence?(v(),D(`span`,{key:0,class:A([`text-xs font-medium`,T(a)])},k(Math.round(t.confidence*100))+`%`,3)):d(``,!0)])]),C(`div`,xe,[t.showRemove?y((v(),_(u,{key:0,severity:`secondary`,rounded:``,size:`small`,class:`cui-icon-sm text-white`,onClick:s[1]||=p(e=>n.$emit(`remove`),[`stop`])},{icon:m(()=>[w(l,{class:`w-4 h-4`})]),_:1})),[[g,n.$t(`views.faces.remove_from_cluster`),void 0,{top:!0}]]):y((v(),_(u,{key:1,severity:`secondary`,rounded:``,size:`small`,class:`cui-icon-sm text-white`,onClick:s[2]||=p(e=>n.$emit(`assign-prompt`),[`stop`])},{icon:m(()=>[w(f,{width:`100%`,height:`100%`})]),_:1})),[[g,n.$t(`views.faces.assign`),void 0,{top:!0}]]),y((v(),_(u,{severity:`danger`,rounded:``,size:`small`,class:`cui-icon-sm text-white`,onClick:s[3]||=p(e=>n.$emit(`skip`),[`stop`])},{icon:m(()=>[w(h,{width:`100%`,height:`100%`})]),_:1})),[[g,n.$t(`views.faces.discard`),void 0,{top:!0}]])])])]))}}}),Ce={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function we(e,t){return v(),D(`svg`,Ce,[...t[0]||=[C(`path`,{fill:`currentColor`,d:`M17.65 6.35A7.96 7.96 0 0 0 12 4a8 8 0 0 0-8 8a8 8 0 0 0 8 8c3.73 0 6.84-2.55 7.73-6h-2.08A5.99 5.99 0 0 1 12 18a6 6 0 0 1-6-6a6 6 0 0 1 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4z`},null,-1)]])}var Te=b({name:`mdi-refresh`,render:we}),Ee={key:0,class:`text-sm text-muted mb-4`},De={key:1,class:`grid grid-cols-3 gap-2`},Oe=[`src`],ke={key:2,class:`text-muted text-sm text-center py-8`},Ae=j({__name:`FaceDetail`,props:{face:{},onRemoveImage:{type:Function},onDeletePerson:{type:Function}},setup(t,{expose:n}){let r=t,i=x(()=>r.face);return n({onConfirm:async()=>(r.onDeletePerson(),!0)}),(n,r)=>{let a=F,o=e;return v(),D(`div`,null,[T(i).imageCount?(v(),D(`div`,Ee,k(T(i).imageCount)+` `+k(n.$t(`views.faces.training_images`)),1)):d(``,!0),T(i).images.length?(v(),D(`div`,De,[(v(!0),D(h,null,f(T(i).images,(e,n)=>(v(),D(`div`,{key:n,class:`relative aspect-square rounded-2xl overflow-hidden bg-surface-100 dark:bg-surface-800`},[C(`img`,{src:e.src,class:`w-full h-full object-cover`},null,8,Oe),e.confidence?(v(),D(`div`,{key:0,class:A([`absolute bottom-0.5 right-0.5 text-[10px] font-medium px-1 rounded bg-black/60`,e.confidence>=.9?`text-green-400`:e.confidence>=.7?`text-yellow-400`:`text-red-400`])},k(Math.round(e.confidence*100))+`% `,3)):d(``,!0),w(o,{severity:`danger`,rounded:``,class:`!absolute top-1 right-1 cui-icon-sm text-white`,onClick:e=>t.onRemoveImage(n)},{icon:m(()=>[w(a,{width:`100%`,height:`100%`})]),_:1},8,[`onClick`])]))),128))])):(v(),D(`div`,ke,k(n.$t(`views.faces.no_known_faces`)),1))])}}}),je={class:`flex flex-col gap-2 w-full`},Me={for:`personName`,class:`cui-label`},Q=j({__name:`FaceNewPerson`,props:{knownNames:{}},setup(e,{expose:t}){let n=e,r=O(``),i=O([]);function a(e){let t=e.query.toLowerCase();i.value=(n.knownNames??[]).filter(e=>e.toLowerCase().includes(t))}return t({onConfirm:async()=>r.value.trim()||null}),(e,t)=>{let n=ie;return v(),D(`div`,je,[C(`label`,Me,k(e.$t(`views.faces.name`)),1),w(n,{id:`personName`,modelValue:T(r),"onUpdate:modelValue":t[0]||=e=>S(r)?r.value=e:null,suggestions:T(i),class:`w-full`,fluid:``,placeholder:e.$t(`views.faces.enter_name`),autofocus:``,onComplete:a},null,8,[`modelValue`,`suggestions`,`placeholder`])])}}}),Ne={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Pe(e,t){return v(),D(`svg`,Ne,[...t[0]||=[C(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2M7 9l5-5l5 5m-5-5v12`},null,-1)]])}var Fe=b({name:`tabler-upload`,render:Pe}),$=[`image/jpeg`,`image/png`,`image/webp`],Ie={class:`flex flex-col gap-6`},Le={class:`cui-label`},Re={class:`cui-label`},ze={key:0},Be={class:`text-sm text-muted`},Ve={key:1},He=[`src`],Ue=[`accept`],We={key:0,class:`text-xs text-red-500 mt-1`},Ge={class:`flex items-center justify-center mt-2 text-xs text-muted`},Ke=j({__name:`FaceUpload`,props:{onEnroll:{type:Function}},setup(e,{expose:t}){let r=new z,i=e,{t:s}=a(),{data:l}=r.getPluginsExtensionsQuery({page:1,pageSize:-1}),u=O(``),f=O(``),m=O(``),h=O(null),g=O(``),_=O(),y=x(()=>(l.value?.result??[]).filter(e=>o(e.contract,n.FaceDetection)).map(e=>({label:e.displayName,value:e.pluginName})));function b(){_.value?.click()}function E(e){let t=e.target.files?.[0];t&&N(t)}function A(e){let t=e.dataTransfer?.files[0];t&&N(t)}function j(e){return $.includes(e.type)?e.size>10485760?s(`views.faces.file_too_large`,{maxSize:10}):null:s(`views.faces.invalid_format`)}function N(e){g.value=``;let t=j(e);if(t){g.value=t,h.value=null,m.value=``;return}let n=new FileReader;n.onload=()=>{h.value=new Uint8Array(n.result)},n.readAsArrayBuffer(e);let r=new FileReader;r.onload=()=>{m.value=r.result},r.readAsDataURL(e)}return M(y,e=>{!f.value&&e.length===1&&(f.value=e[0].value)},{immediate:!0}),t({onConfirm:async()=>!u.value||!f.value||!h.value?null:(await i.onEnroll(u.value,h.value,f.value),!0)}),(e,t)=>{let n=c,r=L,i=Fe;return v(),D(`div`,Ie,[C(`div`,null,[C(`label`,Le,k(e.$t(`views.faces.name`)),1),w(n,{modelValue:T(u),"onUpdate:modelValue":t[0]||=e=>S(u)?u.value=e:null,modelModifiers:{trim:!0},placeholder:e.$t(`views.faces.enter_name`),class:`w-full`,autofocus:``},null,8,[`modelValue`,`placeholder`])]),C(`div`,null,[C(`label`,Re,k(e.$t(`views.faces.face_plugin`)),1),w(r,{modelValue:T(f),"onUpdate:modelValue":t[1]||=e=>S(f)?f.value=e:null,options:T(y),"option-label":`label`,"option-value":`value`,placeholder:e.$t(`views.faces.select_plugin`),class:`w-full`},null,8,[`modelValue`,`options`,`placeholder`])]),C(`div`,null,[t[3]||=C(`label`,{class:`cui-label mb-1`},`Image`,-1),C(`div`,{class:`border-2 border-dashed border-surface-300 dark:border-surface-600 rounded-lg p-6 text-center cursor-pointer hover:border-primary transition-colors`,onClick:b,onDragover:t[2]||=p(()=>{},[`prevent`]),onDrop:p(A,[`prevent`])},[T(m)?(v(),D(`div`,Ve,[C(`img`,{src:T(m),class:`max-h-48 mx-auto rounded`},null,8,He)])):(v(),D(`div`,ze,[w(i,{class:`w-8 h-8 text-muted mx-auto mb-2`}),C(`div`,Be,k(e.$t(`views.faces.drop_image`)),1)]))],32),C(`input`,{ref_key:`fileInput`,ref:_,type:`file`,accept:T($).join(`,`),class:`hidden`,onChange:E},null,40,Ue),T(g)?(v(),D(`div`,We,k(T(g)),1)):d(``,!0),C(`div`,Ge,[C(`span`,null,`(`+k(T(10))+`MB, `+k(T($).join(`, `))+`)`,1)])])])}}}),qe={class:`flex flex-col`},Je={key:0,class:`page-title`},Ye={class:`p-3`},Xe={key:0,class:`flex flex-1 min-h-0 flex-col items-center justify-center w-full gap-4`},Ze={class:`text-muted text-sm`},Qe={class:`mb-6 p-px`},$e={class:`flex items-center justify-between mb-3`},et={class:`card-title m-0!`},tt={key:1,class:`text-muted text-sm`},nt={class:`mb-6 p-px`},rt={class:`flex items-center justify-between mb-3`},it={class:`card-title m-0!`},at={class:`flex items-center gap-3 w-full`},ot={class:`w-10 h-10 rounded-full overflow-hidden bg-surface-100 dark:bg-surface-800 shrink-0`},st=[`src`],ct={class:`font-medium`},lt={class:`flex items-center gap-3 w-full`},ut={class:`w-10 h-10 rounded-full overflow-hidden bg-surface-100 dark:bg-surface-800 shrink-0 flex items-center justify-center`},dt={class:`font-medium`},ft={key:1,class:`text-muted text-sm`},pt=j({__name:`Faces`,setup(n){let o=R(),c=l(),{t:u}=a(),{smBreakpoint:b}=P(),{width:S}=N(),j=r(),M=j.clusteredUnknowns,F=g(`knownSkeletonRef`),L=O(!1),ie=x(()=>{S.value;let e=b.value?140:160,t=F.value?.clientWidth??S.value;return Math.floor((t+12)/(e+12))||4});async function z(){L.value=!0;try{let e=await j.rescanFaces();e>0?c.add({severity:`success`,detail:u(`views.faces.rescan_complete`,{count:e}),life:3e3}):c.add({severity:`info`,detail:u(`views.faces.rescan_no_matches`),life:3e3})}catch(e){c.add({severity:`error`,detail:e,life:3e3})}finally{L.value=!1}}async function V(e){let n=O([]);try{n.value=(await j.getFaceImages(e.name)).map(e=>{let n=t(e.jpeg);return n?{src:n,confidence:e.confidence??0}:null}).filter(Boolean)}catch{}let r=o.openComponentDialog(Ae,{data:{title:e.name,contentProps:{face:x(()=>({...e,images:n.value,imageCount:n.value.length})),onRemoveImage:async t=>{try{await j.removeFaceImage(e.name,t),n.value.splice(t,1),c.add({severity:`success`,detail:u(`views.faces.image_removed`),life:3e3}),await j.refresh(!0)}catch(e){c.add({severity:`error`,detail:e,life:3e3})}},onDeletePerson:async()=>{try{await j.deleteFace(e.name),c.add({severity:`success`,detail:u(`views.faces.person_deleted`),life:3e3}),r.close(),await j.refresh(!0)}catch(e){c.add({severity:`error`,detail:e,life:3e3})}}},confirmText:u(`views.faces.delete_person`),confirmButtonProps:{severity:`danger`}}})}function H(){o.openComponentDialog(Ke,{data:{title:u(`views.faces.add_face`),confirmText:u(`views.faces.enroll`),contentProps:{onEnroll:async(e,t,n)=>{await j.enrollFace(e,t,n),c.add({severity:`success`,detail:u(`views.faces.face_enrolled`),life:3e3}),await j.refresh(!0)}}}})}async function U(e,t){let n=e.faces.map(e=>e.id);if(t===`__new__`){W(n);return}try{await j.enrollCluster(t,n),c.add({severity:`success`,detail:u(`views.faces.face_assigned`),life:3e3})}catch(e){c.add({severity:`error`,detail:e,life:3e3})}}function W(e){o.openComponentDialog(Q,{data:{title:u(`views.faces.enter_person_name`),confirmText:u(`views.faces.enroll`),contentProps:{knownNames:j.knownFaces.value.map(e=>e.name)}},onConfirm:async t=>{try{await j.enrollCluster(t,e),c.add({severity:`success`,detail:u(`views.faces.face_enrolled`),life:3e3})}catch(e){c.add({severity:`error`,detail:e,life:3e3})}}})}async function K(e){try{await j.deleteUnknownFacesByCluster(e.clusterId)}catch(e){c.add({severity:`error`,detail:e,life:3e3})}}async function q(e){try{await j.deleteUnknownFace(e.id)}catch(e){c.add({severity:`error`,detail:e,life:3e3})}}async function J(e){try{await j.removeFromCluster(e.id)}catch(e){c.add({severity:`error`,detail:e,life:3e3})}}function Y(e){o.openComponentDialog(Q,{data:{title:u(`views.faces.assign`),confirmText:u(`views.faces.enroll`),contentProps:{knownNames:j.knownFaces.value.map(e=>e.name)}},onConfirm:async t=>{try{await j.enrollFromEvent(t,e.id),c.add({severity:`success`,detail:u(`views.faces.face_assigned`),life:3e3}),await j.refresh(!0)}catch(e){c.add({severity:`error`,detail:e,life:3e3})}}})}async function de(){try{await j.deleteUngroupedUnknownFaces(),c.add({severity:`success`,detail:u(`views.faces.all_unknown_cleared`),life:3e3})}catch(e){c.add({severity:`error`,detail:e,life:3e3})}}return(n,r)=>{let a=ce,o=e,c=se,l=s,u=ae,g=Te,x=Se,S=G,O=B,N=ne,P=re,R=ee,W=ue,fe=te,pe=i,X=oe,Z=I;return v(),D(`div`,qe,[T(b)?d(``,!0):(v(),D(`h1`,Je,k(n.$t(`views.faces.title`)),1)),w(c,{position:`left`},{default:m(()=>[w(o,{severity:`secondary`,text:``,class:`cui-button p-2 text-color non-draggable-region`,onClick:r[0]||=e=>n.$router.push(`/menu`)},{icon:m(()=>[w(a,{class:`w-6 h-6`})]),_:1})]),_:1}),T(j).isLoading.value?(v(),D(`section`,{key:1,ref_key:`knownSkeletonRef`,ref:F,class:`mb-6 p-px`},[w(l,{height:`16px`,width:`140px`,class:`mb-3`}),C(`div`,{class:`grid w-full gap-3 p-px`,style:E({gridTemplateColumns:`repeat(auto-fill, minmax(${T(b)?`140px`:`160px`}, 1fr))`})},[(v(!0),D(h,null,f(T(ie),e=>(v(),D(`div`,{key:e,class:`cui-card overflow-hidden`},[w(l,{class:`aspect-square`,width:`100%`,height:`100%`}),C(`div`,Ye,[w(l,{height:`14px`,width:`70%`,class:`mb-1`}),w(l,{height:`12px`,width:`40%`})])]))),128))],4)],512)):(v(),D(h,{key:2},[!T(j).knownFaces.value.length&&!T(j).unknownFaces.value.length?(v(),D(`div`,Xe,[w(u,{class:`w-12 h-12 text-muted`}),C(`span`,Ze,k(n.$t(`views.faces.no_faces_yet`)),1)])):(v(),D(h,{key:1},[C(`section`,Qe,[C(`div`,$e,[C(`span`,et,k(n.$t(`views.faces.known_faces`))+` (`+k(T(j).knownFaces.value.length)+`)`,1),T(j).knownFaces.value.length?y((v(),_(o,{key:0,severity:`secondary`,text:``,rounded:``,class:`cui-icon-lg`,loading:T(L),onClick:z},{icon:m(()=>[w(g,{class:`w-4 h-4`})]),_:1},8,[`loading`])),[[Z,n.$t(`views.faces.rescan_events`),void 0,{top:!0}]]):d(``,!0)]),T(j).knownFaces.value.length?(v(),D(`div`,{key:0,class:`grid w-full gap-3 p-px`,style:E({gridTemplateColumns:`repeat(auto-fill, minmax(${T(b)?`140px`:`160px`}, 1fr))`})},[(v(!0),D(h,null,f(T(j).knownFaces.value,e=>(v(),_(x,{key:e.name,variant:`known`,thumbnail:T(t)(e.thumbnail),name:e.name,"image-count":e.imageCount,onClick:t=>V(e)},null,8,[`thumbnail`,`name`,`image-count`,`onClick`]))),128))],4)):(v(),D(`div`,tt,k(n.$t(`views.faces.no_known_faces`)),1))]),C(`section`,nt,[C(`div`,rt,[C(`span`,it,k(n.$t(`views.faces.unknown_faces`))+` (`+k(T(j).unknownFaces.value.length)+`)`,1)]),T(j).unknownFaces.value.length||T(M).ungrouped.length?(v(),_(pe,{key:0,class:`cui-card border-color-inner h-auto!`,pt:{body:{class:`pb-0`}}},{content:m(()=>[T(j).unknownFaces.value.length?(v(),_(fe,{key:0,multiple:``},{default:m(()=>[(v(!0),D(h,null,f(T(M).clusters,(e,i)=>(v(),_(R,{key:e.clusterId,value:e.clusterId,class:A({"border-b-0":T(M).ungrouped.length===0&&i===T(M).clusters.length-1})},{default:m(()=>[w(N,{class:A({"px-0 pt-0":i===0,"px-0":i!==0,"pb-5":T(M).ungrouped.length===0&&i===T(M).clusters.length-1})},{default:m(()=>[C(`span`,at,[C(`div`,ot,[e.bestThumbnail?(v(),D(`img`,{key:0,src:e.bestThumbnail,class:`w-full h-full object-cover`},null,8,st)):d(``,!0)]),C(`span`,ct,k(e.faces.length)+` `+k(n.$t(`views.faces.faces_in_cluster`)),1),C(`span`,{class:`ml-auto flex items-center gap-1 mr-2`,onClick:r[1]||=p(()=>{},[`stop`])},[y((v(),_(o,{severity:`secondary`,text:``,rounded:``,class:`cui-icon-lg`,onClick:t=>U(e,`__new__`)},{icon:m(()=>[w(S,{class:`w-4 h-4`})]),_:1},8,[`onClick`])),[[Z,n.$t(`views.faces.assign_cluster`),void 0,{top:!0}]]),y((v(),_(o,{severity:`danger`,text:``,rounded:``,class:`cui-icon-lg`,onClick:t=>K(e)},{icon:m(()=>[w(O,{width:`100%`,height:`100%`})]),_:1},8,[`onClick`])),[[Z,n.$t(`views.faces.discard`),void 0,{top:!0}]])])])]),_:2},1032,[`class`]),w(P,{pt:{content:{class:{"px-0":!0,"pb-5":T(M).ungrouped.length===0&&i===T(M).clusters.length-1}}}},{default:m(()=>[C(`div`,{class:`grid w-full gap-3`,style:E({gridTemplateColumns:`repeat(auto-fill, minmax(${T(b)?`120px`:`140px`}, 1fr))`})},[(v(!0),D(h,null,f(e.faces,e=>(v(),_(x,{key:e.id,variant:`unknown`,"show-remove":``,thumbnail:T(t)(e.thumbnail),timestamp:e.timestamp,confidence:e.confidence,onAssignPrompt:t=>Y(e),onRemove:t=>J(e),onSkip:t=>q(e)},null,8,[`thumbnail`,`timestamp`,`confidence`,`onAssignPrompt`,`onRemove`,`onSkip`]))),128))],4)]),_:2},1032,[`pt`])]),_:2},1032,[`value`,`class`]))),128)),T(M).ungrouped.length?(v(),_(R,{key:0,value:`__ungrouped__`,class:A({"border-b-0":!0})},{default:m(()=>[w(N,{class:A({"px-0 pt-0":T(M).clusters.length===0,"px-0":T(M).clusters.length!==0,"pb-5":!0})},{default:m(()=>[C(`span`,lt,[C(`div`,ut,[w(W,{class:`w-5 h-5 text-muted`})]),C(`span`,dt,k(T(M).ungrouped.length)+` `+k(n.$t(`views.faces.ungrouped`)),1),C(`span`,{class:`ml-auto flex items-center gap-1 mr-2`,onClick:r[2]||=p(()=>{},[`stop`])},[y((v(),_(o,{severity:`danger`,text:``,rounded:``,class:`cui-icon-lg`,onClick:de},{icon:m(()=>[w(O,{width:`100%`,height:`100%`})]),_:1})),[[Z,n.$t(`views.faces.discard`),void 0,{top:!0}]])])])]),_:1},8,[`class`]),w(P,{pt:{content:{class:{"px-0 pb-0":!0,"mb-5":!0}}}},{default:m(()=>[C(`div`,{class:`grid w-full gap-3`,style:E({gridTemplateColumns:`repeat(auto-fill, minmax(${T(b)?`120px`:`140px`}, 1fr))`})},[(v(!0),D(h,null,f(T(M).ungrouped,e=>(v(),_(x,{key:e.id,variant:`unknown`,thumbnail:T(t)(e.thumbnail),timestamp:e.timestamp,confidence:e.confidence,onAssignPrompt:t=>Y(e),onSkip:t=>q(e)},null,8,[`thumbnail`,`timestamp`,`confidence`,`onAssignPrompt`,`onSkip`]))),128))],4)]),_:1})]),_:1})):d(``,!0)]),_:1})):d(``,!0)]),_:1})):(v(),D(`div`,ft,k(n.$t(`views.faces.no_unknown_faces`)),1))])],64))],64)),w(X,{"tooltip-props":{value:n.$t(`views.faces.add_face`)},"button-props":{class:`text-white`},icon:T(le),"icon-props":{width:`30px`,height:`30px`},onClick:H},null,8,[`tooltip-props`,`icon`])])}}});export{pt as default};
|
|
1
|
+
import{Hn as e,N as t,Nn as n,R as r,ct as i,fi as a,jn as o,lt as s,tt as c}from"./vendor-cameraui-D9I8uPRL.js";import{C as l,s as u}from"./api-CPonLnGH.js";import{$t as d,Dn as f,Gt as p,Hn as m,Kt as h,Ln as g,Qt as _,Tn as v,Un as y,Xn as b,Xt as x,Yn as S,Zt as C,an as w,cr as T,dr as E,en as D,er as O,fr as k,lr as A,sn as j,zn as M}from"./vendor-zxCOTbSj.js";import{a as N,t as P}from"./useSharedComposables-B5-Uy9Br.js";import{t as F}from"./close-BlkMdXhr.js";import{D as ee,E as te,J as I,O as ne,j as L,k as re,w as ie}from"./vendor-primevue-CWF_imvX.js";import{t as ae}from"./face-recognition-Bx4cPKgu.js";import{t as oe}from"./CuiFloatingButton-CLb4OXWq.js";import{t as R}from"./useCuiDialog-BEerzsp3.js";import{t as se}from"./CuiTopbarSlot-D8e3DC_V.js";import{t as z}from"./plugins-VMgnZZzG.js";import{t as B}from"./delete-CVqAtfTw.js";import{t as ce}from"./back-filled-2dVfzfd3.js";import{t as le}from"./plus-mhsNCxIy.js";var V={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function H(e,t){return v(),D(`svg`,V,[...t[0]||=[C(`path`,{fill:`currentColor`,d:`M13 8a4 4 0 0 1-4 4a4 4 0 0 1-4-4a4 4 0 0 1 4-4a4 4 0 0 1 4 4m4 10v2H1v-2c0-2.21 3.58-4 8-4s8 1.79 8 4m3.5-3.5V16H19v-1.5zm-2-5H17V9a3 3 0 0 1 3-3a3 3 0 0 1 3 3c0 .97-.5 1.88-1.29 2.41l-.3.19c-.57.4-.91 1.01-.91 1.7v.2H19v-.2c0-1.19.6-2.3 1.59-2.95l.29-.19c.39-.26.62-.69.62-1.16A1.5 1.5 0 0 0 20 7.5A1.5 1.5 0 0 0 18.5 9z`},null,-1)]])}var ue=b({name:`mdi-account-question`,render:H}),U={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function W(e,t){return v(),D(`svg`,U,[...t[0]||=[C(`path`,{fill:`currentColor`,d:`M15 14c-2.67 0-8 1.33-8 4v2h16v-2c0-2.67-5.33-4-8-4m-9-4V7H4v3H1v2h3v3h2v-3h3v-2m6 2a4 4 0 0 0 4-4a4 4 0 0 0-4-4a4 4 0 0 0-4 4a4 4 0 0 0 4 4`},null,-1)]])}var G=b({name:`mdi-account-plus`,render:W}),K={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function q(e,t){return v(),D(`svg`,K,[...t[0]||=[C(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M5 12h14`},null,-1)]])}var J=b({name:`tabler-minus`,render:q}),Y={class:`aspect-square overflow-hidden flex items-center justify-center bg-black/5 dark:bg-black/30`},de=[`src`],fe=[`src`],pe={class:`font-medium truncate`},X={class:`text-xs text-muted`},Z={key:1,class:`relative cursor-default`},me={class:`bg-neutral-900 w-full rounded-xl overflow-hidden relative border-[1px] border-color shadow-lg`,style:{"aspect-ratio":`1 / 1`}},he=[`src`],ge={key:1,class:`w-full h-full flex items-center justify-center bg-neutral-800/80`},_e=[`src`],ve={class:`absolute top-0 left-0 right-0 p-2 bg-gradient-to-b from-black/60 to-transparent`},ye={class:`flex items-center justify-between`},be={class:`text-xs text-white/70`},xe={class:`absolute bottom-0 left-0 right-0 p-1.5 bg-gradient-to-t from-black/60 to-transparent flex items-center justify-center gap-1 dark-mode`},Se=j({__name:`CuiFaceCard`,props:{variant:{},thumbnail:{},name:{},imageCount:{},cameraName:{},timestamp:{},confidence:{},compact:{type:Boolean},showRemove:{type:Boolean},assignValue:{},assignOptions:{}},emits:[`click`,`assign`,`assign-prompt`,`skip`,`remove`],setup(t){let n=t,r=u(),a=x(()=>n.confidence?n.confidence>=.9?`text-green-400`:n.confidence>=.7?`text-yellow-400`:`text-red-400`:`text-white/50`),o=x(()=>n.timestamp?new Date(n.timestamp).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`}):``);return(n,s)=>{let c=i,l=J,u=e,f=G,h=B,g=I;return t.variant===`known`?(v(),_(c,{key:0,class:`cui-card transition-shadow cursor-pointer hover:shadow-md`,onClick:s[0]||=e=>n.$emit(`click`)},{header:m(()=>[C(`div`,Y,[t.thumbnail?(v(),D(`img`,{key:0,src:t.thumbnail,class:`w-full h-full object-cover`},null,8,de)):(v(),D(`img`,{key:1,src:T(r),class:`w-1/2 h-1/2 object-contain`},null,8,fe))])]),content:m(()=>[C(`div`,pe,k(t.name),1),C(`div`,X,k(t.imageCount)+` `+k(n.$t(`views.faces.images`)),1)]),_:1})):(v(),D(`div`,Z,[C(`div`,me,[t.thumbnail?(v(),D(`img`,{key:0,src:t.thumbnail,class:`w-full h-full object-cover`},null,8,he)):(v(),D(`div`,ge,[C(`img`,{src:T(r),class:`w-1/3 h-1/3 object-contain opacity-20`},null,8,_e)])),C(`div`,ve,[C(`div`,ye,[C(`span`,be,k(T(o)),1),t.confidence?(v(),D(`span`,{key:0,class:A([`text-xs font-medium`,T(a)])},k(Math.round(t.confidence*100))+`%`,3)):d(``,!0)])]),C(`div`,xe,[t.showRemove?y((v(),_(u,{key:0,severity:`secondary`,rounded:``,size:`small`,class:`cui-icon-sm text-white`,onClick:s[1]||=p(e=>n.$emit(`remove`),[`stop`])},{icon:m(()=>[w(l,{class:`w-4 h-4`})]),_:1})),[[g,n.$t(`views.faces.remove_from_cluster`),void 0,{top:!0}]]):y((v(),_(u,{key:1,severity:`secondary`,rounded:``,size:`small`,class:`cui-icon-sm text-white`,onClick:s[2]||=p(e=>n.$emit(`assign-prompt`),[`stop`])},{icon:m(()=>[w(f,{width:`100%`,height:`100%`})]),_:1})),[[g,n.$t(`views.faces.assign`),void 0,{top:!0}]]),y((v(),_(u,{severity:`danger`,rounded:``,size:`small`,class:`cui-icon-sm text-white`,onClick:s[3]||=p(e=>n.$emit(`skip`),[`stop`])},{icon:m(()=>[w(h,{width:`100%`,height:`100%`})]),_:1})),[[g,n.$t(`views.faces.discard`),void 0,{top:!0}]])])])]))}}}),Ce={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function we(e,t){return v(),D(`svg`,Ce,[...t[0]||=[C(`path`,{fill:`currentColor`,d:`M17.65 6.35A7.96 7.96 0 0 0 12 4a8 8 0 0 0-8 8a8 8 0 0 0 8 8c3.73 0 6.84-2.55 7.73-6h-2.08A5.99 5.99 0 0 1 12 18a6 6 0 0 1-6-6a6 6 0 0 1 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4z`},null,-1)]])}var Te=b({name:`mdi-refresh`,render:we}),Ee={key:0,class:`text-sm text-muted mb-4`},De={key:1,class:`grid grid-cols-3 gap-2`},Oe=[`src`],ke={key:2,class:`text-muted text-sm text-center py-8`},Ae=j({__name:`FaceDetail`,props:{face:{},onRemoveImage:{type:Function},onDeletePerson:{type:Function}},setup(t,{expose:n}){let r=t,i=x(()=>r.face);return n({onConfirm:async()=>(r.onDeletePerson(),!0)}),(n,r)=>{let a=F,o=e;return v(),D(`div`,null,[T(i).imageCount?(v(),D(`div`,Ee,k(T(i).imageCount)+` `+k(n.$t(`views.faces.training_images`)),1)):d(``,!0),T(i).images.length?(v(),D(`div`,De,[(v(!0),D(h,null,f(T(i).images,(e,n)=>(v(),D(`div`,{key:n,class:`relative aspect-square rounded-2xl overflow-hidden bg-surface-100 dark:bg-surface-800`},[C(`img`,{src:e.src,class:`w-full h-full object-cover`},null,8,Oe),e.confidence?(v(),D(`div`,{key:0,class:A([`absolute bottom-0.5 right-0.5 text-[10px] font-medium px-1 rounded bg-black/60`,e.confidence>=.9?`text-green-400`:e.confidence>=.7?`text-yellow-400`:`text-red-400`])},k(Math.round(e.confidence*100))+`% `,3)):d(``,!0),w(o,{severity:`danger`,rounded:``,class:`!absolute top-1 right-1 cui-icon-sm text-white`,onClick:e=>t.onRemoveImage(n)},{icon:m(()=>[w(a,{width:`100%`,height:`100%`})]),_:1},8,[`onClick`])]))),128))])):(v(),D(`div`,ke,k(n.$t(`views.faces.no_known_faces`)),1))])}}}),je={class:`flex flex-col gap-2 w-full`},Me={for:`personName`,class:`cui-label`},Q=j({__name:`FaceNewPerson`,props:{knownNames:{}},setup(e,{expose:t}){let n=e,r=O(``),i=O([]);function a(e){let t=e.query.toLowerCase();i.value=(n.knownNames??[]).filter(e=>e.toLowerCase().includes(t))}return t({onConfirm:async()=>r.value.trim()||null}),(e,t)=>{let n=ie;return v(),D(`div`,je,[C(`label`,Me,k(e.$t(`views.faces.name`)),1),w(n,{id:`personName`,modelValue:T(r),"onUpdate:modelValue":t[0]||=e=>S(r)?r.value=e:null,suggestions:T(i),class:`w-full`,fluid:``,placeholder:e.$t(`views.faces.enter_name`),autofocus:``,onComplete:a},null,8,[`modelValue`,`suggestions`,`placeholder`])])}}}),Ne={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Pe(e,t){return v(),D(`svg`,Ne,[...t[0]||=[C(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2M7 9l5-5l5 5m-5-5v12`},null,-1)]])}var Fe=b({name:`tabler-upload`,render:Pe}),$=[`image/jpeg`,`image/png`,`image/webp`],Ie={class:`flex flex-col gap-6`},Le={class:`cui-label`},Re={class:`cui-label`},ze={key:0},Be={class:`text-sm text-muted`},Ve={key:1},He=[`src`],Ue=[`accept`],We={key:0,class:`text-xs text-red-500 mt-1`},Ge={class:`flex items-center justify-center mt-2 text-xs text-muted`},Ke=j({__name:`FaceUpload`,props:{onEnroll:{type:Function}},setup(e,{expose:t}){let r=new z,i=e,{t:s}=a(),{data:l}=r.getPluginsExtensionsQuery({page:1,pageSize:-1}),u=O(``),f=O(``),m=O(``),h=O(null),g=O(``),_=O(),y=x(()=>(l.value?.result??[]).filter(e=>o(e.contract,n.FaceDetection)).map(e=>({label:e.displayName,value:e.pluginName})));function b(){_.value?.click()}function E(e){let t=e.target.files?.[0];t&&N(t)}function A(e){let t=e.dataTransfer?.files[0];t&&N(t)}function j(e){return $.includes(e.type)?e.size>10485760?s(`views.faces.file_too_large`,{maxSize:10}):null:s(`views.faces.invalid_format`)}function N(e){g.value=``;let t=j(e);if(t){g.value=t,h.value=null,m.value=``;return}let n=new FileReader;n.onload=()=>{h.value=new Uint8Array(n.result)},n.readAsArrayBuffer(e);let r=new FileReader;r.onload=()=>{m.value=r.result},r.readAsDataURL(e)}return M(y,e=>{!f.value&&e.length===1&&(f.value=e[0].value)},{immediate:!0}),t({onConfirm:async()=>!u.value||!f.value||!h.value?null:(await i.onEnroll(u.value,h.value,f.value),!0)}),(e,t)=>{let n=c,r=L,i=Fe;return v(),D(`div`,Ie,[C(`div`,null,[C(`label`,Le,k(e.$t(`views.faces.name`)),1),w(n,{modelValue:T(u),"onUpdate:modelValue":t[0]||=e=>S(u)?u.value=e:null,modelModifiers:{trim:!0},placeholder:e.$t(`views.faces.enter_name`),class:`w-full`,autofocus:``},null,8,[`modelValue`,`placeholder`])]),C(`div`,null,[C(`label`,Re,k(e.$t(`views.faces.face_plugin`)),1),w(r,{modelValue:T(f),"onUpdate:modelValue":t[1]||=e=>S(f)?f.value=e:null,options:T(y),"option-label":`label`,"option-value":`value`,placeholder:e.$t(`views.faces.select_plugin`),class:`w-full`},null,8,[`modelValue`,`options`,`placeholder`])]),C(`div`,null,[t[3]||=C(`label`,{class:`cui-label mb-1`},`Image`,-1),C(`div`,{class:`border-2 border-dashed border-surface-300 dark:border-surface-600 rounded-lg p-6 text-center cursor-pointer hover:border-primary transition-colors`,onClick:b,onDragover:t[2]||=p(()=>{},[`prevent`]),onDrop:p(A,[`prevent`])},[T(m)?(v(),D(`div`,Ve,[C(`img`,{src:T(m),class:`max-h-48 mx-auto rounded`},null,8,He)])):(v(),D(`div`,ze,[w(i,{class:`w-8 h-8 text-muted mx-auto mb-2`}),C(`div`,Be,k(e.$t(`views.faces.drop_image`)),1)]))],32),C(`input`,{ref_key:`fileInput`,ref:_,type:`file`,accept:T($).join(`,`),class:`hidden`,onChange:E},null,40,Ue),T(g)?(v(),D(`div`,We,k(T(g)),1)):d(``,!0),C(`div`,Ge,[C(`span`,null,`(`+k(T(10))+`MB, `+k(T($).join(`, `))+`)`,1)])])])}}}),qe={class:`flex flex-col`},Je={key:0,class:`page-title`},Ye={class:`p-3`},Xe={key:0,class:`flex flex-1 min-h-0 flex-col items-center justify-center w-full gap-4`},Ze={class:`text-muted text-sm`},Qe={class:`mb-6 p-px`},$e={class:`flex items-center justify-between mb-3`},et={class:`card-title m-0!`},tt={key:1,class:`text-muted text-sm`},nt={class:`mb-6 p-px`},rt={class:`flex items-center justify-between mb-3`},it={class:`card-title m-0!`},at={class:`flex items-center gap-3 w-full`},ot={class:`w-10 h-10 rounded-full overflow-hidden bg-surface-100 dark:bg-surface-800 shrink-0`},st=[`src`],ct={class:`font-medium`},lt={class:`flex items-center gap-3 w-full`},ut={class:`w-10 h-10 rounded-full overflow-hidden bg-surface-100 dark:bg-surface-800 shrink-0 flex items-center justify-center`},dt={class:`font-medium`},ft={key:1,class:`text-muted text-sm`},pt=j({__name:`Faces`,setup(n){let o=R(),c=l(),{t:u}=a(),{smBreakpoint:b}=P(),{width:S}=N(),j=r(),M=j.clusteredUnknowns,F=g(`knownSkeletonRef`),L=O(!1),ie=x(()=>{S.value;let e=b.value?140:160,t=F.value?.clientWidth??S.value;return Math.floor((t+12)/(e+12))||4});async function z(){L.value=!0;try{let e=await j.rescanFaces();e>0?c.add({severity:`success`,detail:u(`views.faces.rescan_complete`,{count:e}),life:3e3}):c.add({severity:`info`,detail:u(`views.faces.rescan_no_matches`),life:3e3})}catch(e){c.add({severity:`error`,detail:e,life:3e3})}finally{L.value=!1}}async function V(e){let n=O([]);try{n.value=(await j.getFaceImages(e.name)).map(e=>{let n=t(e.jpeg);return n?{src:n,confidence:e.confidence??0}:null}).filter(Boolean)}catch{}let r=o.openComponentDialog(Ae,{data:{title:e.name,contentProps:{face:x(()=>({...e,images:n.value,imageCount:n.value.length})),onRemoveImage:async t=>{try{await j.removeFaceImage(e.name,t),n.value.splice(t,1),c.add({severity:`success`,detail:u(`views.faces.image_removed`),life:3e3}),await j.refresh(!0)}catch(e){c.add({severity:`error`,detail:e,life:3e3})}},onDeletePerson:async()=>{try{await j.deleteFace(e.name),c.add({severity:`success`,detail:u(`views.faces.person_deleted`),life:3e3}),r.close(),await j.refresh(!0)}catch(e){c.add({severity:`error`,detail:e,life:3e3})}}},confirmText:u(`views.faces.delete_person`),confirmButtonProps:{severity:`danger`}}})}function H(){o.openComponentDialog(Ke,{data:{title:u(`views.faces.add_face`),confirmText:u(`views.faces.enroll`),contentProps:{onEnroll:async(e,t,n)=>{await j.enrollFace(e,t,n),c.add({severity:`success`,detail:u(`views.faces.face_enrolled`),life:3e3}),await j.refresh(!0)}}}})}async function U(e,t){let n=e.faces.map(e=>e.id);if(t===`__new__`){W(n);return}try{await j.enrollCluster(t,n),c.add({severity:`success`,detail:u(`views.faces.face_assigned`),life:3e3})}catch(e){c.add({severity:`error`,detail:e,life:3e3})}}function W(e){o.openComponentDialog(Q,{data:{title:u(`views.faces.enter_person_name`),confirmText:u(`views.faces.enroll`),contentProps:{knownNames:j.knownFaces.value.map(e=>e.name)}},onConfirm:async t=>{try{await j.enrollCluster(t,e),c.add({severity:`success`,detail:u(`views.faces.face_enrolled`),life:3e3})}catch(e){c.add({severity:`error`,detail:e,life:3e3})}}})}async function K(e){try{await j.deleteUnknownFacesByCluster(e.clusterId)}catch(e){c.add({severity:`error`,detail:e,life:3e3})}}async function q(e){try{await j.deleteUnknownFace(e.id)}catch(e){c.add({severity:`error`,detail:e,life:3e3})}}async function J(e){try{await j.removeFromCluster(e.id)}catch(e){c.add({severity:`error`,detail:e,life:3e3})}}function Y(e){o.openComponentDialog(Q,{data:{title:u(`views.faces.assign`),confirmText:u(`views.faces.enroll`),contentProps:{knownNames:j.knownFaces.value.map(e=>e.name)}},onConfirm:async t=>{try{await j.enrollFromEvent(t,e.id),c.add({severity:`success`,detail:u(`views.faces.face_assigned`),life:3e3}),await j.refresh(!0)}catch(e){c.add({severity:`error`,detail:e,life:3e3})}}})}async function de(){try{await j.deleteUngroupedUnknownFaces(),c.add({severity:`success`,detail:u(`views.faces.all_unknown_cleared`),life:3e3})}catch(e){c.add({severity:`error`,detail:e,life:3e3})}}return(n,r)=>{let a=ce,o=e,c=se,l=s,u=ae,g=Te,x=Se,S=G,O=B,N=ne,P=re,R=ee,W=ue,fe=te,pe=i,X=oe,Z=I;return v(),D(`div`,qe,[T(b)?d(``,!0):(v(),D(`h1`,Je,k(n.$t(`views.faces.title`)),1)),w(c,{position:`left`},{default:m(()=>[w(o,{severity:`secondary`,text:``,class:`cui-button p-2 text-color non-draggable-region`,onClick:r[0]||=e=>n.$router.push(`/menu`)},{icon:m(()=>[w(a,{class:`w-6 h-6`})]),_:1})]),_:1}),T(j).isLoading.value?(v(),D(`section`,{key:1,ref_key:`knownSkeletonRef`,ref:F,class:`mb-6 p-px`},[w(l,{height:`16px`,width:`140px`,class:`mb-3`}),C(`div`,{class:`grid w-full gap-3 p-px`,style:E({gridTemplateColumns:`repeat(auto-fill, minmax(${T(b)?`140px`:`160px`}, 1fr))`})},[(v(!0),D(h,null,f(T(ie),e=>(v(),D(`div`,{key:e,class:`cui-card overflow-hidden`},[w(l,{class:`aspect-square`,width:`100%`,height:`100%`}),C(`div`,Ye,[w(l,{height:`14px`,width:`70%`,class:`mb-1`}),w(l,{height:`12px`,width:`40%`})])]))),128))],4)],512)):(v(),D(h,{key:2},[!T(j).knownFaces.value.length&&!T(j).unknownFaces.value.length?(v(),D(`div`,Xe,[w(u,{class:`w-12 h-12 text-muted`}),C(`span`,Ze,k(n.$t(`views.faces.no_faces_yet`)),1)])):(v(),D(h,{key:1},[C(`section`,Qe,[C(`div`,$e,[C(`span`,et,k(n.$t(`views.faces.known_faces`))+` (`+k(T(j).knownFaces.value.length)+`)`,1),T(j).knownFaces.value.length?y((v(),_(o,{key:0,severity:`secondary`,text:``,rounded:``,class:`cui-icon-lg`,loading:T(L),onClick:z},{icon:m(()=>[w(g,{class:`w-4 h-4`})]),_:1},8,[`loading`])),[[Z,n.$t(`views.faces.rescan_events`),void 0,{top:!0}]]):d(``,!0)]),T(j).knownFaces.value.length?(v(),D(`div`,{key:0,class:`grid w-full gap-3 p-px`,style:E({gridTemplateColumns:`repeat(auto-fill, minmax(${T(b)?`140px`:`160px`}, 1fr))`})},[(v(!0),D(h,null,f(T(j).knownFaces.value,e=>(v(),_(x,{key:e.name,variant:`known`,thumbnail:T(t)(e.thumbnail),name:e.name,"image-count":e.imageCount,onClick:t=>V(e)},null,8,[`thumbnail`,`name`,`image-count`,`onClick`]))),128))],4)):(v(),D(`div`,tt,k(n.$t(`views.faces.no_known_faces`)),1))]),C(`section`,nt,[C(`div`,rt,[C(`span`,it,k(n.$t(`views.faces.unknown_faces`))+` (`+k(T(j).unknownFaces.value.length)+`)`,1)]),T(j).unknownFaces.value.length||T(M).ungrouped.length?(v(),_(pe,{key:0,class:`cui-card border-color-inner h-auto!`,pt:{body:{class:`pb-0`}}},{content:m(()=>[T(j).unknownFaces.value.length?(v(),_(fe,{key:0,multiple:``},{default:m(()=>[(v(!0),D(h,null,f(T(M).clusters,(e,i)=>(v(),_(R,{key:e.clusterId,value:e.clusterId,class:A({"border-b-0":T(M).ungrouped.length===0&&i===T(M).clusters.length-1})},{default:m(()=>[w(N,{class:A({"px-0 pt-0":i===0,"px-0":i!==0,"pb-5":T(M).ungrouped.length===0&&i===T(M).clusters.length-1})},{default:m(()=>[C(`span`,at,[C(`div`,ot,[e.bestThumbnail?(v(),D(`img`,{key:0,src:e.bestThumbnail,class:`w-full h-full object-cover`},null,8,st)):d(``,!0)]),C(`span`,ct,k(e.faces.length)+` `+k(n.$t(`views.faces.faces_in_cluster`)),1),C(`span`,{class:`ml-auto flex items-center gap-1 mr-2`,onClick:r[1]||=p(()=>{},[`stop`])},[y((v(),_(o,{severity:`secondary`,text:``,rounded:``,class:`cui-icon-lg`,onClick:t=>U(e,`__new__`)},{icon:m(()=>[w(S,{class:`w-4 h-4`})]),_:1},8,[`onClick`])),[[Z,n.$t(`views.faces.assign_cluster`),void 0,{top:!0}]]),y((v(),_(o,{severity:`danger`,text:``,rounded:``,class:`cui-icon-lg`,onClick:t=>K(e)},{icon:m(()=>[w(O,{width:`100%`,height:`100%`})]),_:1},8,[`onClick`])),[[Z,n.$t(`views.faces.discard`),void 0,{top:!0}]])])])]),_:2},1032,[`class`]),w(P,{pt:{content:{class:{"px-0":!0,"pb-5":T(M).ungrouped.length===0&&i===T(M).clusters.length-1}}}},{default:m(()=>[C(`div`,{class:`grid w-full gap-3`,style:E({gridTemplateColumns:`repeat(auto-fill, minmax(${T(b)?`120px`:`140px`}, 1fr))`})},[(v(!0),D(h,null,f(e.faces,e=>(v(),_(x,{key:e.id,variant:`unknown`,"show-remove":``,thumbnail:T(t)(e.thumbnail),timestamp:e.timestamp,confidence:e.confidence,onAssignPrompt:t=>Y(e),onRemove:t=>J(e),onSkip:t=>q(e)},null,8,[`thumbnail`,`timestamp`,`confidence`,`onAssignPrompt`,`onRemove`,`onSkip`]))),128))],4)]),_:2},1032,[`pt`])]),_:2},1032,[`value`,`class`]))),128)),T(M).ungrouped.length?(v(),_(R,{key:0,value:`__ungrouped__`,class:A({"border-b-0":!0})},{default:m(()=>[w(N,{class:A({"px-0 pt-0":T(M).clusters.length===0,"px-0":T(M).clusters.length!==0,"pb-5":!0})},{default:m(()=>[C(`span`,lt,[C(`div`,ut,[w(W,{class:`w-5 h-5 text-muted`})]),C(`span`,dt,k(T(M).ungrouped.length)+` `+k(n.$t(`views.faces.ungrouped`)),1),C(`span`,{class:`ml-auto flex items-center gap-1 mr-2`,onClick:r[2]||=p(()=>{},[`stop`])},[y((v(),_(o,{severity:`danger`,text:``,rounded:``,class:`cui-icon-lg`,onClick:de},{icon:m(()=>[w(O,{width:`100%`,height:`100%`})]),_:1})),[[Z,n.$t(`views.faces.discard`),void 0,{top:!0}]])])])]),_:1},8,[`class`]),w(P,{pt:{content:{class:{"px-0 pb-0":!0,"mb-5":!0}}}},{default:m(()=>[C(`div`,{class:`grid w-full gap-3`,style:E({gridTemplateColumns:`repeat(auto-fill, minmax(${T(b)?`120px`:`140px`}, 1fr))`})},[(v(!0),D(h,null,f(T(M).ungrouped,e=>(v(),_(x,{key:e.id,variant:`unknown`,thumbnail:T(t)(e.thumbnail),timestamp:e.timestamp,confidence:e.confidence,onAssignPrompt:t=>Y(e),onSkip:t=>q(e)},null,8,[`thumbnail`,`timestamp`,`confidence`,`onAssignPrompt`,`onSkip`]))),128))],4)]),_:1})]),_:1})):d(``,!0)]),_:1})):d(``,!0)]),_:1})):(v(),D(`div`,ft,k(n.$t(`views.faces.no_unknown_faces`)),1))])],64))],64)),w(X,{"tooltip-props":{value:n.$t(`views.faces.add_face`)},"button-props":{class:`text-white`},icon:T(le),"icon-props":{width:`30px`,height:`30px`},onClick:H},null,8,[`tooltip-props`,`icon`])])}}});export{pt as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Hn as e,ct as t,fi as n}from"./vendor-cameraui-
|
|
1
|
+
import{Hn as e,ct as t,fi as n}from"./vendor-cameraui-D9I8uPRL.js";import{C as r,O as i,a,f as o,s}from"./api-CPonLnGH.js";import{$t as c,Bn as l,Dn as ee,Hn as u,Kt as d,Ln as f,P as p,Qt as m,Tn as h,Xn as g,Xt as _,Yn as te,Zt as v,an as y,cr as b,en as x,er as S,fr as C,lr as w,rr as T,sn as E}from"./vendor-zxCOTbSj.js";import{f as ne}from"./vendor-core-DSNqTlQH.js";import{G as re,H as ie,W as ae}from"./vendor-primevue-CWF_imvX.js";import{t as oe}from"./hasPermission-C2RWjXuT.js";import{t as se}from"./useCuiDialog-BEerzsp3.js";import{a as ce}from"./server-8uNYIjzr.js";import{t as le}from"./SettingsAccount-7HSGeh_G.js";import{t as ue}from"./SettingsAppearance-DAtwb17b.js";import{n as de}from"./backup-B01_Kkb-.js";var D={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function O(e,t){return h(),x(`svg`,D,[...t[0]||=[v(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`m5 12l5 5L20 7`},null,-1)]])}var fe=g({name:`tabler-check`,render:O}),pe={class:`h-full flex flex-col`},me={class:`border-color-bottom draggable-region`},k={class:`max-w-3xl mx-auto flex items-center justify-between px-4 py-3`},A={class:`flex items-center gap-2`},j={class:`flex-1 overflow-auto`},M={class:`max-w-3xl mx-auto px-4 py-6 flex flex-col gap-6`},N={class:`flex items-center w-full`},P={class:`flex flex-col items-center gap-2 flex-shrink-0`},F={key:1},I={class:`flex flex-col items-center gap-6 py-6`},L={class:`text-muted`},R={class:`flex flex-row items-center justify-center gap-2`},z={class:`max-w-[375px] text-center text-muted`},he={key:0,class:`flex flex-col items-center gap-3 w-full`},ge={class:`text-center text-muted max-w-[375px]`},_e={class:`flex flex-row items-center justify-center gap-2`},ve={class:`flex flex-col items-center gap-6 py-8`},ye={class:`text-center text-muted max-w-[375px]`},be={class:`flex items-center justify-between gap-2`},xe={key:1},B=E({__name:`FirstSteps`,setup(g){let E=i(),D=se(),O=r(),{t:B}=n(),V=o(),{loginLoading:Se}=ne(V),H=S([`welcome`,`appearance`,`account`,`finish`]),U=f(`accountFormRef`),W=f(`backupFileInputRef`),G=T(),K=T(),q=S(0),J=S(!1),Y=S(),X=_(()=>J.value||Se.value),Z=_(()=>oe(void 0,`master`)),Q=_(()=>U.value?.formRef);function Ce(e){return e<q.value?`bg-primary-500 text-white`:e===q.value?`bg-primary-500 text-white ring-4 ring-primary-500/20`:`border border-color text-muted`}async function $(){if(q.value<H.value.length-1)if(q.value===2){let e=Q.value?.getValues();if(e){if(!e.password||!e.passwordConfirm){Q.value?.setFieldError(`password`,`Required`),Q.value?.setFieldError(`passwordConfirm`,`Required`);return}if(!e.username){Q.value?.setFieldError(`username`,`Required`);return}}let t=await Q.value?.validate();t?.valid?(Y.value=a(e),q.value++):t?.valid||(E.error(`Validation failed`,t),O.add({severity:`error`,detail:B(`components.toast.validation_failed`),life:3e3}))}else q.value++}function we(){q.value>0&&q.value--}async function Te(){try{await V.logout()}catch(e){E.error(e.response?.data?.message??e.message??e)}}function Ee(){W.value?.click()}function De(e){let t=e.target;t.files&&t.files[0]&&(K.value=t.files[0],D.openTextDialog({data:{title:B(`components.dialog.title.confirm`),confirmText:B(`components.form.button.restore_and_restart`),contentText:B(`components.dialog.message.confirm_restore`),loading:X},onConfirm:Oe})),t.value=``}async function Oe(){if(J.value=!0,!K.value){J.value=!1;return}try{let e=new FormData;e.append(`upload`,K.value),ke(await de(e)),O.add({severity:`success`,detail:B(`components.toast.backup_restored`),life:3e3}),ce(),V.logout()}catch(e){O.add({severity:`error`,detail:e,life:3e3}),J.value=!1}}function ke(e){e.theme&&localStorage.setItem(`theme`,JSON.stringify(e.theme)),e.locale&&localStorage.setItem(`locale`,e.locale),e.ui&&localStorage.setItem(`ui`,JSON.stringify(e.ui))}async function Ae(){if(!Y.value){O.add({severity:`error`,detail:B(`components.toast.validation_failed`),life:3e3});return}let e,t=a(Y.value);t.firstLogin=!1,delete t.upload;try{G.value&&(e=new FormData,e.append(`upload`,G.value)),await V.updateUser(t,e),V.logout()}catch{}}return l(()=>{q.value===2&&(Y.value=void 0)}),(n,r)=>{let i=e,a=fe,o=t,l=ie,f=ae,g=re;return h(),x(`div`,pe,[v(`div`,me,[v(`div`,k,[v(`div`,A,[y(b(p),{src:b(s)(`logo_animated.svg`),width:`20px`,height:`22px`,title:`camera.ui`,"aria-label":`camera.ui`},null,8,[`src`]),r[1]||=v(`span`,{class:`font-semibold`},`camera.ui`,-1)]),y(i,{class:`cui-button-small non-draggable-region`,severity:`secondary`,variant:`text`,label:n.$t(`components.form.button.logout`),onClick:Te},null,8,[`label`])])]),v(`div`,j,[v(`div`,M,[v(`div`,N,[(h(!0),x(d,null,ee(b(H),(e,t)=>(h(),x(d,{key:e},[v(`div`,P,[v(`div`,{class:w([`w-9 h-9 rounded-full flex items-center justify-center text-sm font-semibold transition-all duration-200`,Ce(t)])},[t<b(q)?(h(),m(a,{key:0,class:`w-4 h-4`})):(h(),x(`span`,F,C(t+1),1))],2),v(`span`,{class:w([`text-xs font-medium hidden sm:block whitespace-nowrap`,t<=b(q)?`text-color`:`text-muted`])},C(n.$t(`views.firststeps.step_${e}`)),3)]),t<b(H).length-1?(h(),x(`div`,{key:0,class:w([`flex-1 h-px mx-2 sm:mx-3 transition-colors duration-200`,t<b(q)?`bg-primary-500`:`bg-[var(--border-color)]`])},null,2)):c(``,!0)],64))),128))]),y(g,{value:b(q),"onUpdate:value":r[0]||=e=>te(q)?q.value=e:null,lazy:``},{default:u(()=>[y(f,{class:`!p-0 !bg-transparent`},{default:u(()=>[y(l,{value:0},{default:u(()=>[y(o,{class:`cui-card`},{content:u(()=>[v(`div`,I,[v(`span`,L,C(n.$t(`views.firststeps.welcome_to`)),1),v(`div`,R,[y(b(p),{src:b(s)(`logo_animated.svg`),width:`26px`,height:`32px`,title:`camera.ui`,"aria-label":`camera.ui`},null,8,[`src`]),r[2]||=v(`span`,{class:`text-4xl`},`camera.ui`,-1)]),v(`p`,z,C(n.$t(`views.firststeps.slogan`)),1),b(Z)?(h(),x(`div`,he,[v(`p`,ge,C(n.$t(`views.firststeps.start_message`)),1),v(`div`,_e,[y(i,{class:`cui-button-medium`,loading:b(X),label:n.$t(`views.firststeps.new_installation`),onClick:$},null,8,[`loading`,`label`]),y(i,{class:`cui-button-medium`,severity:`secondary`,loading:b(X),label:n.$t(`views.firststeps.from_backup`),onClick:Ee},null,8,[`loading`,`label`])]),v(`input`,{ref_key:`backupFileInputRef`,ref:W,type:`file`,accept:`application/gzip, .tar, .tar.gz`,class:`hidden`,onChange:De},null,544)])):(h(),m(i,{key:1,class:`cui-button-medium`,loading:b(X),label:n.$t(`views.firststeps.start`),onClick:$},null,8,[`loading`,`label`]))])]),_:1})]),_:1}),y(l,{value:1},{default:u(()=>[y(ue)]),_:1}),y(l,{value:2},{default:u(()=>[y(le,{ref_key:`accountFormRef`,ref:U,firststeps:``},null,512)]),_:1}),y(l,{value:3},{default:u(()=>[y(o,{class:`cui-card`},{content:u(()=>[v(`div`,ve,[y(b(p),{src:b(s)(`logo_animated.svg`),width:`78px`,height:`84px`,title:`camera.ui`,"aria-label":`camera.ui`},null,8,[`src`]),v(`p`,ye,C(n.$t(`views.firststeps.finish_message`)),1)])]),_:1})]),_:1})]),_:1})]),_:1},8,[`value`]),v(`div`,be,[b(q)>0?(h(),m(i,{key:0,class:`cui-button-medium`,severity:`secondary`,label:n.$t(`components.form.button.previous`),onClick:we},null,8,[`label`])):(h(),x(`span`,xe)),b(q)>0&&b(q)<b(H).length-1?(h(),m(i,{key:2,class:`cui-button-medium`,label:n.$t(`components.form.button.next`),onClick:$},null,8,[`label`])):b(q)===b(H).length-1?(h(),m(i,{key:3,class:`cui-button-medium`,loading:b(X),label:n.$t(`views.firststeps.enjoy`),onClick:Ae},null,8,[`loading`,`label`])):c(``,!0)])])])])}}});export{B as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Hn as e,Ji as t,Zt as n,ct as r,fi as i,lt as a,tt as o}from"./vendor-cameraui-D-WYtlxb.js";import{C as s}from"./api-CLcqLYO9.js";import{$t as c,Dn as l,Gt as u,Hn as d,Kt as f,Ln as p,Qn as m,Qt as h,Tn as g,Xn as _,Xt as v,Yn as y,Zt as b,an as x,bn as S,cr as C,dr as w,en as T,er as E,fr as D,lr as O,or as k,sn as A,zn as j,zt as ee}from"./vendor-CUsAwmr-.js";import{a as te,t as ne}from"./useSharedComposables-CzkF-tst.js";import{F as re,P as ie,a as M}from"./vendor-primevue-01WhBsPb.js";import{i as N,n as ae,r as oe,t as se}from"./instances-8zX84KmH.js";import{t as ce}from"./CuiFloatingButton-B4byvsOs.js";import{t as le}from"./CuiMenu-KizSc3du.js";import{t as ue}from"./useCuiDialog-C-2PMjxH.js";import{t as de}from"./CuiTopbarSlot-BlbZqDDn.js";import{t as fe}from"./back-filled-DVeRsKmt.js";import{t as pe}from"./plus-CuWXW2I0.js";import{t as me}from"./search-Bl5hzTQq.js";import{t as he}from"./trash-fill-PLsykzhy.js";var P={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function F(e,t){return g(),T(`svg`,P,[...t[0]||=[b(`path`,{fill:`currentColor`,d:`M6 2h12a2 2 0 0 1 2 2v16a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2m6 2a6 6 0 0 0-6 6c0 3.31 2.69 6 6.1 6l-.88-2.23a1.01 1.01 0 0 1 .37-1.37l.86-.5a1.01 1.01 0 0 1 1.37.37l1.92 2.42A5.98 5.98 0 0 0 18 10a6 6 0 0 0-6-6m0 5a1 1 0 0 1 1 1a1 1 0 0 1-1 1a1 1 0 0 1-1-1a1 1 0 0 1 1-1m-5 9a1 1 0 0 0-1 1a1 1 0 0 0 1 1a1 1 0 0 0 1-1a1 1 0 0 0-1-1m5.09-4.73l2.49 6.31l2.59-1.5l-4.22-5.31z`},null,-1)]])}var I=_({name:`mdi-harddisk`,render:F}),L={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function R(e,t){return g(),T(`svg`,L,[...t[0]||=[b(`path`,{fill:`currentColor`,d:`M12 2A10 10 0 0 0 2 12a10 10 0 0 0 10 10a10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 2a8 8 0 0 1 8 8a8 8 0 0 1-8 8a8 8 0 0 1-8-8a8 8 0 0 1 8-8m0 5a3 3 0 0 0-3 3a3 3 0 0 0 3 3a3 3 0 0 0 3-3a3 3 0 0 0-3-3`},null,-1)]])}var z=_({name:`mdi-record-circle-outline`,render:R}),B={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function V(e,t){return g(),T(`svg`,B,[...t[0]||=[b(`path`,{fill:`currentColor`,d:`M9.153 5.408C10.42 3.136 11.053 2 12 2s1.58 1.136 2.847 3.408l.328.588c.36.646.54.969.82 1.182s.63.292 1.33.45l.636.144c2.46.557 3.689.835 3.982 1.776c.292.94-.546 1.921-2.223 3.882l-.434.507c-.476.557-.715.836-.822 1.18c-.107.345-.071.717.001 1.46l.066.677c.253 2.617.38 3.925-.386 4.506s-1.918.051-4.22-1.009l-.597-.274c-.654-.302-.981-.452-1.328-.452s-.674.15-1.328.452l-.596.274c-2.303 1.06-3.455 1.59-4.22 1.01c-.767-.582-.64-1.89-.387-4.507l.066-.676c.072-.744.108-1.116 0-1.46c-.106-.345-.345-.624-.821-1.18l-.434-.508c-1.677-1.96-2.515-2.941-2.223-3.882S3.58 8.328 6.04 7.772l.636-.144c.699-.158 1.048-.237 1.329-.45s.46-.536.82-1.182z`},null,-1)]])}var H=_({name:`solar-star-bold`,render:V}),U={class:`flex flex-col gap-2`},W={class:`flex items-center justify-between gap-2`},G={class:`flex items-center gap-1.5 min-w-0`},K={class:`text-xl font-semibold truncate`},q={class:`flex items-center gap-1 shrink-0`},J={class:`relative w-5 h-5`},Y={class:`flex items-center gap-2`},X={class:`text-sm text-muted-color truncate`},ge={key:0,class:`text-xs text-muted-color ml-auto shrink-0`},Z={key:0,class:`flex flex-col gap-2 mt-2`},_e={class:`cui-progress-track w-full h-2 rounded-full overflow-hidden`},ve={class:`flex items-center justify-between text-sm text-muted-color`},ye={key:1,class:`mt-1`},be={class:`text-sm text-orange-500`},xe={key:2,class:`mt-1`},Se={class:`text-sm text-muted-color`},Ce={class:`flex items-center text-muted-color`},we={key:0,class:`flex items-center gap-4`},Te={class:`flex items-center gap-1.5`},Ee={class:`text-sm text-color font-medium`},De={class:`flex items-center gap-1.5`},Oe={class:`text-sm text-color font-medium`},ke={key:1,class:`flex items-center gap-1.5 ml-auto`},Ae={class:`text-sm text-color font-medium`},je=A({__name:`CuiInstanceCard`,props:{instance:{},menuOpen:{type:Boolean}},emits:[`toggle-favorite`,`open-menu`],setup(t,{emit:n}){let i=t,a=n,{instance:o}=k(i),s=v(()=>o.value.lastUpdatedAt?m(o.value.lastUpdatedAt):``);function l(e){return e>=1024?`${(e/1024).toFixed(1)} GB`:`${e} MB`}function f(e){return e>=1e6?`${(e/1e6).toFixed(1)} TB`:e>=1e3?`${(e/1e3).toFixed(0)} GB`:`${e} MB`}function p(e){return e>=90?`bg-red-500`:e>=70?`bg-orange-400`:e>=50?`bg-yellow-400`:`bg-green-500`}function m(e){let t=Date.now()-(typeof e==`number`?e:new Date(e).getTime()),n=Math.floor(t/6e4);if(n<1)return`< 1m`;if(n<60)return`${n}m`;let r=Math.floor(n/60);return r<24?`${r}h`:`${Math.floor(r/24)}d`}return(n,i)=>{let m=H,_=e,v=M,y=N,S=z,E=I,k=r;return g(),h(k,{class:O([`cui-card transition-shadow h-[176px]`,{"ring-1 ring-primary":C(o).active,"cursor-pointer hover:shadow-md":C(o).status!==`offline`,"opacity-60":C(o).status===`offline`}])},{content:d(()=>[b(`div`,U,[b(`div`,W,[b(`div`,G,[x(_,{severity:`secondary`,text:``,rounded:``,class:`cui-icon-sm shrink-0 !ml-[calc(-0.25rem*2)]`,onClick:i[0]||=u(e=>a(`toggle-favorite`),[`stop`])},{icon:d(()=>[C(o).favorite?(g(),h(m,{key:0,class:`w-4 h-4 text-yellow-500`})):(g(),h(m,{key:1,class:`w-4 h-4`}))]),_:1}),b(`h3`,K,D(C(o).name),1)]),b(`div`,q,[C(o).status===`offline`?(g(),h(v,{key:0,severity:`danger`,value:n.$t(`views.instances.offline`),class:`text-xs`},null,8,[`value`])):c(``,!0),C(o).active?(g(),h(v,{key:1,severity:`success`,value:n.$t(`views.instances.active`)},null,8,[`value`])):c(``,!0),x(_,{severity:`secondary`,text:``,rounded:``,class:`cui-icon-sm`,onClick:i[1]||=u(e=>a(`open-menu`,e),[`stop`])},{icon:d(()=>[b(`div`,J,[b(`div`,{class:O([`absolute top-0.5 left-1/2 -translate-x-1/2 w-1 h-1 rounded-full transform transition-all duration-100 origin-center bg-current`,{"w-3.5 h-[2px] rotate-45 top-1/2 -translate-y-1/2 rounded-none":t.menuOpen}])},null,2),b(`div`,{class:O([`absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-1 h-1 rounded-full transition-all duration-100 bg-current`,{"opacity-0 scale-0":t.menuOpen}])},null,2),b(`div`,{class:O([`absolute bottom-0.5 left-1/2 -translate-x-1/2 w-1 h-1 rounded-full transform transition-all duration-100 origin-center bg-current`,{"w-3.5 h-[2px] -rotate-45 bottom-1/2 translate-y-1/2 rounded-none":t.menuOpen}])},null,2)])]),_:1})])]),b(`div`,Y,[b(`div`,{class:O([`w-2 h-2 rounded-full shrink-0`,{"bg-green-500":C(o).status===`online`,"bg-red-500":C(o).status===`offline`,"bg-gray-400":C(o).status===`unknown`}])},null,2),b(`span`,X,D(C(o).version?`v${C(o).version}`:C(o).url||``),1),C(s)?(g(),T(`span`,ge,D(C(s)),1)):c(``,!0)]),C(o).resources?(g(),T(`div`,Z,[b(`div`,_e,[b(`div`,{class:O([`h-full rounded-full transition-all duration-300`,p(C(o).resources.cpuUsage)]),style:w({width:`${C(o).resources.cpuUsage}%`})},null,6)]),b(`div`,ve,[b(`span`,null,`CPU `+D(C(o).resources.cpuUsage)+`%`,1),b(`span`,null,D(l(C(o).resources.memUsed))+` / `+D(l(C(o).resources.memTotal)),1)])])):C(o).hasCredentials?(g(),T(`div`,xe,[b(`span`,Se,D(C(o).status===`offline`?n.$t(`views.instances.server_offline`):n.$t(`views.instances.no_data`)),1)])):(g(),T(`div`,ye,[b(`span`,be,D(n.$t(`views.instances.credentials_required`)),1)]))])]),footer:d(()=>[b(`div`,Ce,[C(o).cameras?(g(),T(`div`,we,[b(`div`,Te,[x(y,{class:`w-4 h-4`}),b(`span`,Ee,D(C(o).cameras.online)+`/`+D(C(o).cameras.total),1)]),b(`div`,De,[x(S,{class:`w-4 h-4 text-red-500`}),b(`span`,Oe,D(C(o).cameras.recording),1)])])):c(``,!0),C(o).resources?(g(),T(`div`,ke,[x(E,{class:`w-4 h-4`}),b(`span`,Ae,D(f(C(o).resources.diskUsed))+` / `+D(f(C(o).resources.diskTotal)),1)])):c(``,!0)])]),_:1},8,[`class`])}}}),Me={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Ne(e,t){return g(),T(`svg`,Me,[...t[0]||=[b(`path`,{fill:`currentColor`,d:`m14.06 9l.94.94L5.92 19H5v-.92zm3.6-6c-.25 0-.51.1-.7.29l-1.83 1.83l3.75 3.75l1.83-1.83c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.2-.2-.45-.29-.71-.29m-3.6 3.19L3 17.25V21h3.75L17.81 9.94z`},null,-1)]])}var Pe=_({name:`mdi-pencil-outline`,render:Ne}),Fe={class:`flex flex-col gap-6 w-full`},Ie={class:`flex flex-col field-gap`},Le={for:`instanceName`,class:`cui-label`},Re={class:`flex flex-col field-gap`},ze={for:`instanceUrl`,class:`cui-label`},Be={class:`flex flex-col field-gap`},Ve={for:`credUsername`,class:`cui-label`},He={class:`flex flex-col field-gap`},Ue={for:`credPassword`,class:`cui-label`},Q=A({__name:`EditInstanceDialog`,props:{currentName:{},currentUrl:{},hasCredentials:{type:Boolean}},setup(e,{expose:t}){let n=e,{t:r}=i(),a=s(),c=E(n.currentName),l=E(n.currentUrl??``),u=E(``),d=E(``),f=v(()=>!n.currentName),p=v(()=>!!n.hasCredentials);return t({onConfirm:async()=>{let e=c.value.trim();if(!e)return null;if(f.value){let t=l.value.trim();if(!t)return null;let n=u.value.trim();return!n||!d.value?(a.add({severity:`warn`,detail:r(`views.settings.instances.credentials_required`),life:3e3}),null):{name:e,url:t,credentials:{username:n,password:d.value}}}return{name:e,credentials:u.value.trim()&&d.value?{username:u.value.trim(),password:d.value}:void 0}}}),(t,n)=>{let r=o;return g(),T(`div`,Fe,[b(`div`,Ie,[b(`label`,Le,D(t.$t(`views.settings.instances.name`)),1),x(r,{id:`instanceName`,modelValue:C(c),"onUpdate:modelValue":n[0]||=e=>y(c)?c.value=e:null,placeholder:t.$t(`views.settings.instances.name`),class:`w-full`,autofocus:``},null,8,[`modelValue`,`placeholder`])]),b(`div`,Re,[b(`label`,ze,D(t.$t(`views.settings.instances.url`)),1),C(f)?(g(),h(r,{key:0,id:`instanceUrl`,modelValue:C(l),"onUpdate:modelValue":n[1]||=e=>y(l)?l.value=e:null,placeholder:t.$t(`views.settings.instances.url_placeholder`),class:`w-full`},null,8,[`modelValue`,`placeholder`])):(g(),h(r,{key:1,id:`instanceUrl`,"model-value":e.currentUrl,class:`w-full`,readonly:``},null,8,[`model-value`]))]),b(`div`,Be,[b(`label`,Ve,D(t.$t(`views.settings.instances.credentials_username`)),1),x(r,{id:`credUsername`,modelValue:C(u),"onUpdate:modelValue":n[2]||=e=>y(u)?u.value=e:null,placeholder:C(p)?t.$t(`views.settings.instances.credentials_unchanged`):t.$t(`views.settings.instances.credentials_username`),class:`w-full`,autocomplete:`off`},null,8,[`modelValue`,`placeholder`])]),b(`div`,He,[b(`label`,Ue,D(t.$t(`views.settings.instances.credentials_password`)),1),x(r,{id:`credPassword`,modelValue:C(d),"onUpdate:modelValue":n[3]||=e=>y(d)?d.value=e:null,type:`password`,placeholder:C(p)?t.$t(`views.settings.instances.credentials_unchanged`):t.$t(`views.settings.instances.credentials_password`),class:`w-full`,autocomplete:`new-password`},null,8,[`modelValue`,`placeholder`])])])}}}),We={class:`flex flex-col`},Ge={key:0,class:`page-title`},Ke={class:`flex gap-2 mb-4`},qe={key:`empty`,class:`flex flex-1 min-h-0 flex-col items-center justify-center w-full gap-4`},Je={class:`text-muted text-sm`},Ye=176,$=280,Xe=15e3,Ze=A({__name:`Instances`,setup(r){let u=new ae,{t:_}=i(),{smBreakpoint:O}=ne(),{width:k,height:A}=te(),M=ue(),N=s(),P=se(),F=v(()=>P.serverInstances.filter(e=>!!e.credentials)),{data:I,isPending:L}=u.listQuery(),{mutateAsync:R}=u.createMutation(),{mutateAsync:z}=u.updateMutation(),{mutateAsync:B}=u.deleteMutation(),{mutateAsync:V}=u.toggleFavoriteMutation(),H=u.statusQueries(F),U,W=p(`menuRef`),G=E(!1),K=E(``),q=m({}),J=v(()=>(O.value?1:Math.max(1,Math.floor(k.value/$)))*Math.max(1,Math.ceil(A.value/184))),Y=v(()=>{let e=0;return P.serverInstances.map(t=>{let n=!!t.credentials;if(!n)return{id:t.id,name:t.name,url:t.url,status:`unknown`,active:t.id===P.activeId,favorite:P.isFavorite(t.id),hasCredentials:n};let r=H.value[e++],i=r?.data,a=q[t.id],o=`unknown`;return a===`online`?o=`online`:a===`offline`&&(o=`offline`),{id:t.id,name:t.name,url:t.url,status:o,active:t.id===P.activeId,favorite:P.isFavorite(t.id),hasCredentials:n,version:i?.version,lastUpdatedAt:r?.dataUpdatedAt,cameras:i?.cameras,resources:i?{cpuUsage:i.cpuUsage,memUsed:i.memUsed,memTotal:i.memTotal,diskUsed:i.diskUsed,diskTotal:i.diskTotal}:void 0}})}),X=v(()=>{let e=K.value.toLowerCase().trim();return e?Y.value.filter(t=>t.name.toLowerCase().includes(e)||t.url?.toLowerCase().includes(e)):Y.value}),ge=v(()=>[{label:_(`views.settings.edit`),icon:Pe,onClick:e=>{let t=_e(e);t&&be(t)}},{label:_(`views.settings.remove`),icon:he,iconProps:{class:`text-red-500`},labelProps:{class:`text-red-500`},buttonProps:{severity:`danger`},onClick:e=>{xe(e.id)}}]);function Z(){U?.abort(),U=new AbortController;let{signal:e}=U;for(let t of F.value)q[t.id]===void 0&&(q[t.id]=`checking`),P.probeInstance(t.id,e).then(n=>{e.aborted||(q[t.id]=n?`online`:`offline`)}).catch(()=>{e.aborted||(q[t.id]=`offline`)})}function _e(e){let t=P.serverInstances.find(t=>t.id===e.id);if(!t)return;let n=P.instanceTokens[t.id];return{id:t.id,name:t.name,url:t.url,hasCredentials:!!t.credentials,favorite:t.favorite??!0,userData:n?.userData??null,lastConnectedAt:n?.lastConnectedAt??null,isHome:!1}}function ve(e){e.active||e.status===`offline`||(e.id===`__home__`?P.switchInstance(null):P.switchInstance(e.id))}function ye(){M.openComponentDialog(Q,{data:{title:_(`views.instances.add`),confirmText:_(`components.form.button.add`),contentProps:{currentName:``,hasCredentials:!1}},onConfirm:async e=>{if(e)try{await R({name:e.name,url:e.url,credentials:e.credentials})}catch(e){N.add({severity:`error`,detail:e,life:3e3})}}})}function be(e){M.openComponentDialog(Q,{data:{title:_(`views.settings.instances.edit`),confirmText:_(`components.form.button.save`),contentProps:{currentName:e.name,currentUrl:e.url,hasCredentials:e.hasCredentials}},onConfirm:async t=>{if(t)try{await z({id:e.id,data:{name:t.name===e.name?void 0:t.name,credentials:t.credentials??void 0}})}catch(e){N.add({severity:`error`,detail:e,life:3e3})}}})}function xe(e){M.openTextDialog({data:{title:_(`components.dialog.title.confirm`),contentText:_(`views.settings.instances.confirm_remove`),confirmText:_(`views.settings.instances.remove`),loading:G},onConfirm:async()=>{G.value=!0;try{await B(e)}catch(e){N.add({severity:`error`,detail:e,life:3e3})}G.value=!1}})}return j(I,e=>{e&&(n(P.serverInstances,e.instances)||(P.serverInstances=e.instances),P.serverHomeId!==e.homeId&&(P.serverHomeId=e.homeId))},{immediate:!0}),j(F,Z,{immediate:!0,deep:!0}),t(Z,Xe),S(()=>{U?.abort()}),(t,n)=>{let r=fe,i=e,s=de,u=me,p=ie,m=o,v=re,S=a,E=je,k=oe,A=ce;return g(),T(`div`,We,[C(O)?c(``,!0):(g(),T(`h1`,Ge,D(t.$t(`views.instances.title`)),1)),x(s,{position:`left`},{default:d(()=>[x(i,{severity:`secondary`,text:``,class:`cui-button p-2 text-color non-draggable-region`,onClick:n[0]||=e=>t.$router.push(`/menu`)},{icon:d(()=>[x(r,{class:`w-6 h-6`})]),_:1})]),_:1}),b(`div`,Ke,[x(v,{class:`flex-1`},{default:d(()=>[x(p,null,{default:d(()=>[x(u,{class:`w-4 h-4`})]),_:1}),x(m,{modelValue:C(K),"onUpdate:modelValue":n[1]||=e=>y(K)?K.value=e:null,placeholder:C(_)(`views.instances.search`),class:`w-full`},null,8,[`modelValue`,`placeholder`])]),_:1})]),x(ee,{name:`fade-2`,mode:`out-in`},{default:d(()=>[C(L)?(g(),T(`div`,{key:`loading`,class:`grid w-full gap-2 p-px`,style:w({gridTemplateColumns:`repeat(auto-fill, minmax(${C(O)?`100%`:`${$}px`}, 1fr))`})},[(g(!0),T(f,null,l(C(J),e=>(g(),h(S,{key:e,height:`${Ye}px`,class:`cui-card`},null,8,[`height`]))),128))],4)):C(X).length?(g(),T(`div`,{key:`content`,class:`grid w-full gap-2 p-px`,style:w({gridTemplateColumns:`repeat(auto-fill, minmax(${C(O)?`100%`:`${$}px`}, 1fr))`})},[(g(!0),T(f,null,l(C(X),e=>(g(),h(E,{key:e.id,instance:e,"menu-open":C(W)?.isOpen&&C(W)?.data?.id===e.id,onClick:t=>ve(e),onToggleFavorite:t=>C(V)(e.id),onOpenMenu:t=>C(W)?.toggleMenu(t,void 0,e)},null,8,[`instance`,`menu-open`,`onClick`,`onToggleFavorite`,`onOpenMenu`]))),128))],4)):(g(),T(`div`,qe,[x(k,{class:`w-12 h-12 text-muted`}),b(`span`,Je,D(t.$t(`views.instances.no_instances`)),1)]))]),_:1}),x(A,{"tooltip-props":{value:t.$t(`views.instances.add`)},"button-props":{class:`text-white`},icon:C(pe),"icon-props":{width:`30px`,height:`30px`},onClick:ye},null,8,[`tooltip-props`,`icon`]),x(le,{ref_key:`menuRef`,ref:W,items:C(ge),popover:{pt:{content:{class:`p-0! rounded-xl! overflow-hidden!`}}}},null,8,[`items`])])}}});export{Ze as default};
|
|
1
|
+
import{Hn as e,Ji as t,Zt as n,ct as r,fi as i,lt as a,tt as o}from"./vendor-cameraui-D9I8uPRL.js";import{C as s}from"./api-CPonLnGH.js";import{$t as c,Dn as l,Gt as u,Hn as d,Kt as f,Ln as p,Qn as m,Qt as h,Tn as g,Xn as _,Xt as v,Yn as y,Zt as b,an as x,bn as S,cr as C,dr as w,en as T,er as E,fr as D,lr as O,or as k,sn as A,zn as j,zt as ee}from"./vendor-zxCOTbSj.js";import{a as te,t as ne}from"./useSharedComposables-B5-Uy9Br.js";import{F as re,P as ie,a as M}from"./vendor-primevue-CWF_imvX.js";import{i as N,n as ae,r as oe,t as se}from"./instances-Etl_yihq.js";import{t as ce}from"./CuiFloatingButton-CLb4OXWq.js";import{t as le}from"./CuiMenu-BXurM_rM.js";import{t as ue}from"./useCuiDialog-BEerzsp3.js";import{t as de}from"./CuiTopbarSlot-D8e3DC_V.js";import{t as fe}from"./back-filled-2dVfzfd3.js";import{t as pe}from"./plus-mhsNCxIy.js";import{t as me}from"./search-BN5ng-N8.js";import{t as he}from"./trash-fill-DRtvsGbK.js";var P={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function F(e,t){return g(),T(`svg`,P,[...t[0]||=[b(`path`,{fill:`currentColor`,d:`M6 2h12a2 2 0 0 1 2 2v16a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2m6 2a6 6 0 0 0-6 6c0 3.31 2.69 6 6.1 6l-.88-2.23a1.01 1.01 0 0 1 .37-1.37l.86-.5a1.01 1.01 0 0 1 1.37.37l1.92 2.42A5.98 5.98 0 0 0 18 10a6 6 0 0 0-6-6m0 5a1 1 0 0 1 1 1a1 1 0 0 1-1 1a1 1 0 0 1-1-1a1 1 0 0 1 1-1m-5 9a1 1 0 0 0-1 1a1 1 0 0 0 1 1a1 1 0 0 0 1-1a1 1 0 0 0-1-1m5.09-4.73l2.49 6.31l2.59-1.5l-4.22-5.31z`},null,-1)]])}var I=_({name:`mdi-harddisk`,render:F}),L={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function R(e,t){return g(),T(`svg`,L,[...t[0]||=[b(`path`,{fill:`currentColor`,d:`M12 2A10 10 0 0 0 2 12a10 10 0 0 0 10 10a10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 2a8 8 0 0 1 8 8a8 8 0 0 1-8 8a8 8 0 0 1-8-8a8 8 0 0 1 8-8m0 5a3 3 0 0 0-3 3a3 3 0 0 0 3 3a3 3 0 0 0 3-3a3 3 0 0 0-3-3`},null,-1)]])}var z=_({name:`mdi-record-circle-outline`,render:R}),B={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function V(e,t){return g(),T(`svg`,B,[...t[0]||=[b(`path`,{fill:`currentColor`,d:`M9.153 5.408C10.42 3.136 11.053 2 12 2s1.58 1.136 2.847 3.408l.328.588c.36.646.54.969.82 1.182s.63.292 1.33.45l.636.144c2.46.557 3.689.835 3.982 1.776c.292.94-.546 1.921-2.223 3.882l-.434.507c-.476.557-.715.836-.822 1.18c-.107.345-.071.717.001 1.46l.066.677c.253 2.617.38 3.925-.386 4.506s-1.918.051-4.22-1.009l-.597-.274c-.654-.302-.981-.452-1.328-.452s-.674.15-1.328.452l-.596.274c-2.303 1.06-3.455 1.59-4.22 1.01c-.767-.582-.64-1.89-.387-4.507l.066-.676c.072-.744.108-1.116 0-1.46c-.106-.345-.345-.624-.821-1.18l-.434-.508c-1.677-1.96-2.515-2.941-2.223-3.882S3.58 8.328 6.04 7.772l.636-.144c.699-.158 1.048-.237 1.329-.45s.46-.536.82-1.182z`},null,-1)]])}var H=_({name:`solar-star-bold`,render:V}),U={class:`flex flex-col gap-2`},W={class:`flex items-center justify-between gap-2`},G={class:`flex items-center gap-1.5 min-w-0`},K={class:`text-xl font-semibold truncate`},q={class:`flex items-center gap-1 shrink-0`},J={class:`relative w-5 h-5`},Y={class:`flex items-center gap-2`},X={class:`text-sm text-muted-color truncate`},ge={key:0,class:`text-xs text-muted-color ml-auto shrink-0`},Z={key:0,class:`flex flex-col gap-2 mt-2`},_e={class:`cui-progress-track w-full h-2 rounded-full overflow-hidden`},ve={class:`flex items-center justify-between text-sm text-muted-color`},ye={key:1,class:`mt-1`},be={class:`text-sm text-orange-500`},xe={key:2,class:`mt-1`},Se={class:`text-sm text-muted-color`},Ce={class:`flex items-center text-muted-color`},we={key:0,class:`flex items-center gap-4`},Te={class:`flex items-center gap-1.5`},Ee={class:`text-sm text-color font-medium`},De={class:`flex items-center gap-1.5`},Oe={class:`text-sm text-color font-medium`},ke={key:1,class:`flex items-center gap-1.5 ml-auto`},Ae={class:`text-sm text-color font-medium`},je=A({__name:`CuiInstanceCard`,props:{instance:{},menuOpen:{type:Boolean}},emits:[`toggle-favorite`,`open-menu`],setup(t,{emit:n}){let i=t,a=n,{instance:o}=k(i),s=v(()=>o.value.lastUpdatedAt?m(o.value.lastUpdatedAt):``);function l(e){return e>=1024?`${(e/1024).toFixed(1)} GB`:`${e} MB`}function f(e){return e>=1e6?`${(e/1e6).toFixed(1)} TB`:e>=1e3?`${(e/1e3).toFixed(0)} GB`:`${e} MB`}function p(e){return e>=90?`bg-red-500`:e>=70?`bg-orange-400`:e>=50?`bg-yellow-400`:`bg-green-500`}function m(e){let t=Date.now()-(typeof e==`number`?e:new Date(e).getTime()),n=Math.floor(t/6e4);if(n<1)return`< 1m`;if(n<60)return`${n}m`;let r=Math.floor(n/60);return r<24?`${r}h`:`${Math.floor(r/24)}d`}return(n,i)=>{let m=H,_=e,v=M,y=N,S=z,E=I,k=r;return g(),h(k,{class:O([`cui-card transition-shadow h-[176px]`,{"ring-1 ring-primary":C(o).active,"cursor-pointer hover:shadow-md":C(o).status!==`offline`,"opacity-60":C(o).status===`offline`}])},{content:d(()=>[b(`div`,U,[b(`div`,W,[b(`div`,G,[x(_,{severity:`secondary`,text:``,rounded:``,class:`cui-icon-sm shrink-0 !ml-[calc(-0.25rem*2)]`,onClick:i[0]||=u(e=>a(`toggle-favorite`),[`stop`])},{icon:d(()=>[C(o).favorite?(g(),h(m,{key:0,class:`w-4 h-4 text-yellow-500`})):(g(),h(m,{key:1,class:`w-4 h-4`}))]),_:1}),b(`h3`,K,D(C(o).name),1)]),b(`div`,q,[C(o).status===`offline`?(g(),h(v,{key:0,severity:`danger`,value:n.$t(`views.instances.offline`),class:`text-xs`},null,8,[`value`])):c(``,!0),C(o).active?(g(),h(v,{key:1,severity:`success`,value:n.$t(`views.instances.active`)},null,8,[`value`])):c(``,!0),x(_,{severity:`secondary`,text:``,rounded:``,class:`cui-icon-sm`,onClick:i[1]||=u(e=>a(`open-menu`,e),[`stop`])},{icon:d(()=>[b(`div`,J,[b(`div`,{class:O([`absolute top-0.5 left-1/2 -translate-x-1/2 w-1 h-1 rounded-full transform transition-all duration-100 origin-center bg-current`,{"w-3.5 h-[2px] rotate-45 top-1/2 -translate-y-1/2 rounded-none":t.menuOpen}])},null,2),b(`div`,{class:O([`absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-1 h-1 rounded-full transition-all duration-100 bg-current`,{"opacity-0 scale-0":t.menuOpen}])},null,2),b(`div`,{class:O([`absolute bottom-0.5 left-1/2 -translate-x-1/2 w-1 h-1 rounded-full transform transition-all duration-100 origin-center bg-current`,{"w-3.5 h-[2px] -rotate-45 bottom-1/2 translate-y-1/2 rounded-none":t.menuOpen}])},null,2)])]),_:1})])]),b(`div`,Y,[b(`div`,{class:O([`w-2 h-2 rounded-full shrink-0`,{"bg-green-500":C(o).status===`online`,"bg-red-500":C(o).status===`offline`,"bg-gray-400":C(o).status===`unknown`}])},null,2),b(`span`,X,D(C(o).version?`v${C(o).version}`:C(o).url||``),1),C(s)?(g(),T(`span`,ge,D(C(s)),1)):c(``,!0)]),C(o).resources?(g(),T(`div`,Z,[b(`div`,_e,[b(`div`,{class:O([`h-full rounded-full transition-all duration-300`,p(C(o).resources.cpuUsage)]),style:w({width:`${C(o).resources.cpuUsage}%`})},null,6)]),b(`div`,ve,[b(`span`,null,`CPU `+D(C(o).resources.cpuUsage)+`%`,1),b(`span`,null,D(l(C(o).resources.memUsed))+` / `+D(l(C(o).resources.memTotal)),1)])])):C(o).hasCredentials?(g(),T(`div`,xe,[b(`span`,Se,D(C(o).status===`offline`?n.$t(`views.instances.server_offline`):n.$t(`views.instances.no_data`)),1)])):(g(),T(`div`,ye,[b(`span`,be,D(n.$t(`views.instances.credentials_required`)),1)]))])]),footer:d(()=>[b(`div`,Ce,[C(o).cameras?(g(),T(`div`,we,[b(`div`,Te,[x(y,{class:`w-4 h-4`}),b(`span`,Ee,D(C(o).cameras.online)+`/`+D(C(o).cameras.total),1)]),b(`div`,De,[x(S,{class:`w-4 h-4 text-red-500`}),b(`span`,Oe,D(C(o).cameras.recording),1)])])):c(``,!0),C(o).resources?(g(),T(`div`,ke,[x(E,{class:`w-4 h-4`}),b(`span`,Ae,D(f(C(o).resources.diskUsed))+` / `+D(f(C(o).resources.diskTotal)),1)])):c(``,!0)])]),_:1},8,[`class`])}}}),Me={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Ne(e,t){return g(),T(`svg`,Me,[...t[0]||=[b(`path`,{fill:`currentColor`,d:`m14.06 9l.94.94L5.92 19H5v-.92zm3.6-6c-.25 0-.51.1-.7.29l-1.83 1.83l3.75 3.75l1.83-1.83c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.2-.2-.45-.29-.71-.29m-3.6 3.19L3 17.25V21h3.75L17.81 9.94z`},null,-1)]])}var Pe=_({name:`mdi-pencil-outline`,render:Ne}),Fe={class:`flex flex-col gap-6 w-full`},Ie={class:`flex flex-col field-gap`},Le={for:`instanceName`,class:`cui-label`},Re={class:`flex flex-col field-gap`},ze={for:`instanceUrl`,class:`cui-label`},Be={class:`flex flex-col field-gap`},Ve={for:`credUsername`,class:`cui-label`},He={class:`flex flex-col field-gap`},Ue={for:`credPassword`,class:`cui-label`},Q=A({__name:`EditInstanceDialog`,props:{currentName:{},currentUrl:{},hasCredentials:{type:Boolean}},setup(e,{expose:t}){let n=e,{t:r}=i(),a=s(),c=E(n.currentName),l=E(n.currentUrl??``),u=E(``),d=E(``),f=v(()=>!n.currentName),p=v(()=>!!n.hasCredentials);return t({onConfirm:async()=>{let e=c.value.trim();if(!e)return null;if(f.value){let t=l.value.trim();if(!t)return null;let n=u.value.trim();return!n||!d.value?(a.add({severity:`warn`,detail:r(`views.settings.instances.credentials_required`),life:3e3}),null):{name:e,url:t,credentials:{username:n,password:d.value}}}return{name:e,credentials:u.value.trim()&&d.value?{username:u.value.trim(),password:d.value}:void 0}}}),(t,n)=>{let r=o;return g(),T(`div`,Fe,[b(`div`,Ie,[b(`label`,Le,D(t.$t(`views.settings.instances.name`)),1),x(r,{id:`instanceName`,modelValue:C(c),"onUpdate:modelValue":n[0]||=e=>y(c)?c.value=e:null,placeholder:t.$t(`views.settings.instances.name`),class:`w-full`,autofocus:``},null,8,[`modelValue`,`placeholder`])]),b(`div`,Re,[b(`label`,ze,D(t.$t(`views.settings.instances.url`)),1),C(f)?(g(),h(r,{key:0,id:`instanceUrl`,modelValue:C(l),"onUpdate:modelValue":n[1]||=e=>y(l)?l.value=e:null,placeholder:t.$t(`views.settings.instances.url_placeholder`),class:`w-full`},null,8,[`modelValue`,`placeholder`])):(g(),h(r,{key:1,id:`instanceUrl`,"model-value":e.currentUrl,class:`w-full`,readonly:``},null,8,[`model-value`]))]),b(`div`,Be,[b(`label`,Ve,D(t.$t(`views.settings.instances.credentials_username`)),1),x(r,{id:`credUsername`,modelValue:C(u),"onUpdate:modelValue":n[2]||=e=>y(u)?u.value=e:null,placeholder:C(p)?t.$t(`views.settings.instances.credentials_unchanged`):t.$t(`views.settings.instances.credentials_username`),class:`w-full`,autocomplete:`off`},null,8,[`modelValue`,`placeholder`])]),b(`div`,He,[b(`label`,Ue,D(t.$t(`views.settings.instances.credentials_password`)),1),x(r,{id:`credPassword`,modelValue:C(d),"onUpdate:modelValue":n[3]||=e=>y(d)?d.value=e:null,type:`password`,placeholder:C(p)?t.$t(`views.settings.instances.credentials_unchanged`):t.$t(`views.settings.instances.credentials_password`),class:`w-full`,autocomplete:`new-password`},null,8,[`modelValue`,`placeholder`])])])}}}),We={class:`flex flex-col`},Ge={key:0,class:`page-title`},Ke={class:`flex gap-2 mb-4`},qe={key:`empty`,class:`flex flex-1 min-h-0 flex-col items-center justify-center w-full gap-4`},Je={class:`text-muted text-sm`},Ye=176,$=280,Xe=15e3,Ze=A({__name:`Instances`,setup(r){let u=new ae,{t:_}=i(),{smBreakpoint:O}=ne(),{width:k,height:A}=te(),M=ue(),N=s(),P=se(),F=v(()=>P.serverInstances.filter(e=>!!e.credentials)),{data:I,isPending:L}=u.listQuery(),{mutateAsync:R}=u.createMutation(),{mutateAsync:z}=u.updateMutation(),{mutateAsync:B}=u.deleteMutation(),{mutateAsync:V}=u.toggleFavoriteMutation(),H=u.statusQueries(F),U,W=p(`menuRef`),G=E(!1),K=E(``),q=m({}),J=v(()=>(O.value?1:Math.max(1,Math.floor(k.value/$)))*Math.max(1,Math.ceil(A.value/184))),Y=v(()=>{let e=0;return P.serverInstances.map(t=>{let n=!!t.credentials;if(!n)return{id:t.id,name:t.name,url:t.url,status:`unknown`,active:t.id===P.activeId,favorite:P.isFavorite(t.id),hasCredentials:n};let r=H.value[e++],i=r?.data,a=q[t.id],o=`unknown`;return a===`online`?o=`online`:a===`offline`&&(o=`offline`),{id:t.id,name:t.name,url:t.url,status:o,active:t.id===P.activeId,favorite:P.isFavorite(t.id),hasCredentials:n,version:i?.version,lastUpdatedAt:r?.dataUpdatedAt,cameras:i?.cameras,resources:i?{cpuUsage:i.cpuUsage,memUsed:i.memUsed,memTotal:i.memTotal,diskUsed:i.diskUsed,diskTotal:i.diskTotal}:void 0}})}),X=v(()=>{let e=K.value.toLowerCase().trim();return e?Y.value.filter(t=>t.name.toLowerCase().includes(e)||t.url?.toLowerCase().includes(e)):Y.value}),ge=v(()=>[{label:_(`views.settings.edit`),icon:Pe,onClick:e=>{let t=_e(e);t&&be(t)}},{label:_(`views.settings.remove`),icon:he,iconProps:{class:`text-red-500`},labelProps:{class:`text-red-500`},buttonProps:{severity:`danger`},onClick:e=>{xe(e.id)}}]);function Z(){U?.abort(),U=new AbortController;let{signal:e}=U;for(let t of F.value)q[t.id]===void 0&&(q[t.id]=`checking`),P.probeInstance(t.id,e).then(n=>{e.aborted||(q[t.id]=n?`online`:`offline`)}).catch(()=>{e.aborted||(q[t.id]=`offline`)})}function _e(e){let t=P.serverInstances.find(t=>t.id===e.id);if(!t)return;let n=P.instanceTokens[t.id];return{id:t.id,name:t.name,url:t.url,hasCredentials:!!t.credentials,favorite:t.favorite??!0,userData:n?.userData??null,lastConnectedAt:n?.lastConnectedAt??null,isHome:!1}}function ve(e){e.active||e.status===`offline`||(e.id===`__home__`?P.switchInstance(null):P.switchInstance(e.id))}function ye(){M.openComponentDialog(Q,{data:{title:_(`views.instances.add`),confirmText:_(`components.form.button.add`),contentProps:{currentName:``,hasCredentials:!1}},onConfirm:async e=>{if(e)try{await R({name:e.name,url:e.url,credentials:e.credentials})}catch(e){N.add({severity:`error`,detail:e,life:3e3})}}})}function be(e){M.openComponentDialog(Q,{data:{title:_(`views.settings.instances.edit`),confirmText:_(`components.form.button.save`),contentProps:{currentName:e.name,currentUrl:e.url,hasCredentials:e.hasCredentials}},onConfirm:async t=>{if(t)try{await z({id:e.id,data:{name:t.name===e.name?void 0:t.name,credentials:t.credentials??void 0}})}catch(e){N.add({severity:`error`,detail:e,life:3e3})}}})}function xe(e){M.openTextDialog({data:{title:_(`components.dialog.title.confirm`),contentText:_(`views.settings.instances.confirm_remove`),confirmText:_(`views.settings.instances.remove`),loading:G},onConfirm:async()=>{G.value=!0;try{await B(e)}catch(e){N.add({severity:`error`,detail:e,life:3e3})}G.value=!1}})}return j(I,e=>{e&&(n(P.serverInstances,e.instances)||(P.serverInstances=e.instances),P.serverHomeId!==e.homeId&&(P.serverHomeId=e.homeId))},{immediate:!0}),j(F,Z,{immediate:!0,deep:!0}),t(Z,Xe),S(()=>{U?.abort()}),(t,n)=>{let r=fe,i=e,s=de,u=me,p=ie,m=o,v=re,S=a,E=je,k=oe,A=ce;return g(),T(`div`,We,[C(O)?c(``,!0):(g(),T(`h1`,Ge,D(t.$t(`views.instances.title`)),1)),x(s,{position:`left`},{default:d(()=>[x(i,{severity:`secondary`,text:``,class:`cui-button p-2 text-color non-draggable-region`,onClick:n[0]||=e=>t.$router.push(`/menu`)},{icon:d(()=>[x(r,{class:`w-6 h-6`})]),_:1})]),_:1}),b(`div`,Ke,[x(v,{class:`flex-1`},{default:d(()=>[x(p,null,{default:d(()=>[x(u,{class:`w-4 h-4`})]),_:1}),x(m,{modelValue:C(K),"onUpdate:modelValue":n[1]||=e=>y(K)?K.value=e:null,placeholder:C(_)(`views.instances.search`),class:`w-full`},null,8,[`modelValue`,`placeholder`])]),_:1})]),x(ee,{name:`fade-2`,mode:`out-in`},{default:d(()=>[C(L)?(g(),T(`div`,{key:`loading`,class:`grid w-full gap-2 p-px`,style:w({gridTemplateColumns:`repeat(auto-fill, minmax(${C(O)?`100%`:`${$}px`}, 1fr))`})},[(g(!0),T(f,null,l(C(J),e=>(g(),h(S,{key:e,height:`${Ye}px`,class:`cui-card`},null,8,[`height`]))),128))],4)):C(X).length?(g(),T(`div`,{key:`content`,class:`grid w-full gap-2 p-px`,style:w({gridTemplateColumns:`repeat(auto-fill, minmax(${C(O)?`100%`:`${$}px`}, 1fr))`})},[(g(!0),T(f,null,l(C(X),e=>(g(),h(E,{key:e.id,instance:e,"menu-open":C(W)?.isOpen&&C(W)?.data?.id===e.id,onClick:t=>ve(e),onToggleFavorite:t=>C(V)(e.id),onOpenMenu:t=>C(W)?.toggleMenu(t,void 0,e)},null,8,[`instance`,`menu-open`,`onClick`,`onToggleFavorite`,`onOpenMenu`]))),128))],4)):(g(),T(`div`,qe,[x(k,{class:`w-12 h-12 text-muted`}),b(`span`,Je,D(t.$t(`views.instances.no_instances`)),1)]))]),_:1}),x(A,{"tooltip-props":{value:t.$t(`views.instances.add`)},"button-props":{class:`text-white`},icon:C(pe),"icon-props":{width:`30px`,height:`30px`},onClick:ye},null,8,[`tooltip-props`,`icon`]),x(le,{ref_key:`menuRef`,ref:W,items:C(ge),popover:{pt:{content:{class:`p-0! rounded-xl! overflow-hidden!`}}}},null,8,[`items`])])}}});export{Ze as default};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import{Hn as e,fi as t,qi as n,tt as r}from"./vendor-cameraui-D9I8uPRL.js";import{C as i}from"./api-CPonLnGH.js";import{Hn as a,Ln as o,Qt as s,Tn as c,Un as ee,Xn as l,Xt as u,Yn as d,Zt as f,_n as p,an as m,cr as h,dr as te,en as g,er as _,gn as ne,jn as re,lr as v,nn as ie,or as y,sn as b,wn as x,yn as S,zn as C}from"./vendor-zxCOTbSj.js";import{f as w}from"./vendor-core-DSNqTlQH.js";import{n as T}from"./ui-CEzY0rCW.js";import{F as ae,J as oe,P as se,o as ce}from"./vendor-primevue-CWF_imvX.js";import{t as E}from"./useFileDownload-BzheFQ77.js";import{t as le}from"./CuiMenu-BXurM_rM.js";import{n as ue,r as de,t as fe}from"./cameras-B4_XIEvq.js";import{t as pe}from"./useCuiDialog-BEerzsp3.js";import{t as me}from"./CuiTopbarSlot-D8e3DC_V.js";import{n as he,r as ge,t as _e}from"./plugins-VMgnZZzG.js";import{n as ve,t as ye}from"./useLogsSocket-CeW070HG.js";import{i as D,n as O}from"./server-8uNYIjzr.js";import{t as k}from"./back-filled-2dVfzfd3.js";import{t as A}from"./search-BN5ng-N8.js";import{n as j,t as M}from"./zoom-in-BxhkL8eQ.js";import{n as N,t as P}from"./CuiTopNavbarItem-D1yZXVK4.js";import{t as be}from"./arrow-left-YsUvJVC6.js";import{t as xe}from"./trash-2-C8brLIvo.js";var F={viewBox:`0 0 32 32`,width:`1.2em`,height:`1.2em`};function I(e,t){return c(),g(`svg`,F,[...t[0]||=[f(`path`,{fill:`currentColor`,d:`M16 18L6 8l1.4-1.4l8.6 8.6l8.6-8.6L26 8zM4 22h24v2H4z`},null,-1)]])}var Se=l({name:`carbon-down-to-bottom`,render:I}),L={viewBox:`0 0 20 20`,width:`1.2em`,height:`1.2em`};function R(e,t){return c(),g(`svg`,L,[...t[0]||=[f(`path`,{fill:`currentColor`,"fill-rule":`evenodd`,d:`M3 17a1 1 0 0 1 1-1h12a1 1 0 1 1 0 2H4a1 1 0 0 1-1-1m3.293-7.707a1 1 0 0 1 1.414 0L9 10.586V3a1 1 0 1 1 2 0v7.586l1.293-1.293a1 1 0 1 1 1.414 1.414l-3 3a1 1 0 0 1-1.414 0l-3-3a1 1 0 0 1 0-1.414`,"clip-rule":`evenodd`},null,-1)]])}var Ce=l({name:`heroicons-solid-download`,render:R}),we={class:`h-full w-full dark-mode relative`},Te={class:`relative w-6 h-6`},Ee=5e3,z=b({__name:`Logs`,props:{navbarWidth:{default:0},navbarLeft:{default:0}},setup(l){let b=new fe,F=new _e,I=l,{t:L}=t(),R=pe(),z=i(),{uiSettings:B}=w(T()),{data:De}=b.getCamerasQuery({page:1,pageSize:-1}),{data:Oe}=F.getPluginsQuery({page:1,pageSize:-1}),V=[{id:`server`,label:`Server`},{id:`go2rtc`,label:`go2rtc`},{id:`nats`,label:`nats`},{id:`tunnel`,label:`tunnel`}],{navbarWidth:ke,navbarLeft:Ae}=y(I),H=o(`consoleRef`),U=o(`menuRef`),W=o(`mobileSearchInput`),G=_({kind:`all`}),K=_(``),q=_([]),J=_(!1),Y=_(!1),je=u(()=>ke.value+Ae.value),Me=u(()=>G.value.kind===`all`?`all`:G.value.id),Ne=u(()=>{let e=G.value;return e.kind===`all`?`All`:e.kind===`system`?V.find(t=>t.id===e.id)?.label??e.id??``:e.id??``}),Pe=u(()=>{let e=[],t=(e,t,n)=>({key:`${e.kind}:${e.id??``}`,label:t,group:n,active:ze(e),onClick:()=>Be(e)});e.push(t({kind:`all`},`All`));for(let n of V)e.push(t({kind:`system`,id:n.id},n.label,L(`views.logs.groups.system`)));let n=L(`views.logs.groups.plugins`);for(let r of Oe.value?.result??[])e.push(t({kind:`plugin`,id:r.pluginName},r.pluginName,n));let r=L(`views.logs.groups.cameras`);for(let n of De.value?.result??[])e.push(t({kind:`camera`,id:n.name},n.name,r));return e}),Fe=u(()=>({fontSize:B.value.console.zoom}));function Ie(){J.value=!0,p(()=>{W.value?.$el?.focus()})}function Le(){J.value=!1,K.value=``}function X(e,t){return t.trim()?e.replace(/\x1b\[[0-9;]*m/g,``).toLowerCase().includes(t.toLowerCase()):!0}function Z(){q.value=[],H.value?.clearTerminal()}function Re(){if(H.value){H.value.clearTerminal();for(let e of q.value)X(e,K.value)&&H.value.writeTerminal(e)}}let Q=n(Re,300);function ze(e){return G.value.kind===e.kind&&G.value.id===e.id}function Be(e){G.value=e,Z(),$.switchSource(e)}let $=ye({onStdout:e=>{let t=e.split(/(?<=\r?\n)/);for(let e of t)e.trim()&&q.value.push(e);q.value.length>Ee&&(q.value=q.value.slice(-5e3)),X(e,K.value)&&H.value?.writeTerminal(e)},onDisconnect:()=>H.value?.writeTerminal(`\r
|
|
2
|
+
Websocket failed to connect! Is the server running?\r
|
|
3
|
+
\r
|
|
4
|
+
`),onClearLog:e=>{e===Me.value&&Z()},onReconnected:()=>{Z(),H.value?.writeTerminal(`--- Reconnected ---\r
|
|
5
|
+
\r
|
|
6
|
+
`)}});async function Ve(){Y.value=!0;try{let e=G.value;e.kind===`camera`&&e.id?(await ue({cameraname:e.id}),Z()):e.kind===`plugin`&&e.id?(await he({pluginName:e.id}),Z()):await O(e.kind===`system`?e.id:void 0),z.add({severity:`success`,detail:L(`components.toast.log_cleared`),life:3e3})}finally{Y.value=!1}}async function He(){Y.value=!0;try{let e=G.value,t=new AbortController,n,r;if(e.kind===`camera`&&e.id)n=await de({cameraname:e.id,signal:t.signal}),r=`camera.ui.${e.id}.log.txt`;else if(e.kind===`plugin`&&e.id)n=await ge({pluginName:e.id,signal:t.signal}),r=`camera.ui.${e.id}.log.txt`;else{let i=e.kind===`system`?e.id:`all`;n=await D({signal:t.signal,source:i}),r=i&&i!==`all`?`${i}.log.txt`:`camera.ui.log.txt`}await E({blob:new Blob([n]),filename:r,mimeType:`text/plain`})}finally{Y.value=!1}}function Ue(){B.value.console.zoom!==20&&B.value.console.zoom++}function We(){B.value.console.zoom!==8&&B.value.console.zoom--}let Ge=_([{label:L(`components.form.tooltip.download`),icon:Ce,buttonProps:{severity:`success`},command:()=>{He()}},{label:L(`components.form.tooltip.delete`),icon:xe,buttonProps:{severity:`danger`},command:()=>{R.openTextDialog({data:{title:L(`components.dialog.title.confirm`),contentText:L(`components.dialog.message.confirm_clear_log`),confirmText:L(`components.form.button.clear`),confirmButtonProps:{severity:`danger`}},onConfirm:Ve})}},{label:L(`components.form.tooltip.zoom_out`),icon:j,command:()=>{We()}},{label:L(`components.form.tooltip.zoom_in`),icon:M,command:()=>{Ue()}}]);return C(K,()=>{Q()}),S(()=>{$.connect(),$.switchSource({kind:`all`})}),x(()=>{$.disconnect()}),(t,n)=>{let i=k,o=e,l=me,u=be,p=P,_=A,y=se,b=r,x=ae,S=N,C=ce,w=Se,T=le,E=oe;return c(),g(`div`,we,[m(l,{position:`left`},{default:a(()=>[m(o,{severity:`secondary`,text:``,class:`cui-button p-2 text-color non-draggable-region`,onClick:n[0]||=e=>t.$router.push(`/menu`)},{icon:a(()=>[m(i,{class:`w-6 h-6`})]),_:1})]),_:1}),m(S,{"left-offset":h(je),animate:``},ie({_:2},[h(J)?{name:`full`,fn:a(()=>[m(p,{class:`sm:hidden`,onClick:Le},{icon:a(()=>[m(u,{class:`text-sm`})]),_:1}),m(x,{class:`dark-mode w-full sm:hidden`},{default:a(()=>[m(y,null,{default:a(()=>[m(_,{class:`text-sm`})]),_:1}),m(b,{ref_key:`mobileSearchInput`,ref:W,modelValue:h(K),"onUpdate:modelValue":n[1]||=e=>d(K)?K.value=e:null,placeholder:h(L)(`components.form.placeholder.search`),class:`dark-mode text-xs h-8 w-full`},null,8,[`modelValue`,`placeholder`])]),_:1})]),key:`0`}:void 0,h(J)?void 0:{name:`left`,fn:a(()=>[m(p,{type:`dropdown`,label:h(Ne),"menu-open":h(U)?.isOpen,onClick:n[2]||=e=>h(U)?.toggleMenu(e)},null,8,[`label`,`menu-open`])]),key:`1`},h(J)?void 0:{name:`right`,fn:a(()=>[m(p,{class:`sm:hidden`,onClick:Ie},{icon:a(()=>[m(_,{class:`text-sm`})]),_:1}),m(x,{class:`dark-mode hidden sm:flex`},{default:a(()=>[m(y,null,{default:a(()=>[m(_,{class:`text-sm`})]),_:1}),m(b,{modelValue:h(K),"onUpdate:modelValue":n[3]||=e=>d(K)?K.value=e:null,placeholder:h(L)(`components.form.placeholder.search`),class:`dark-mode text-xs h-8 w-40`},null,8,[`modelValue`,`placeholder`])]),_:1})]),key:`2`}]),1032,[`left-offset`]),f(`div`,{class:`w-full h-full flex relative`,style:te({paddingTop:`${h(55)}px`})},[m(ve,{ref_key:`consoleRef`,ref:H,options:h(Fe)},null,8,[`options`])],4),m(C,{model:h(Ge),direction:`up`,"transition-delay":80,"tooltip-options":{position:`left`,event:void 0},class:`absolute right-3 bottom-3 z-11`,pt:{root:{style:`pointer-events: none`}}},{button:a(({visible:e,toggleCallback:t})=>[m(o,{severity:`secondary`,class:v([`dark-mode opacity-40 hover:opacity-100 active:opacity-100 focus:opacity-100 transition pointer-events-auto`,{"opacity-100":e}]),rounded:``,loading:h(Y),onClick:t},{icon:a(()=>[f(`div`,Te,[f(`div`,{class:v([`absolute top-0.5 left-1/2 -translate-x-1/2 w-1.5 h-1.5 rounded-full transform transition-all duration-100 origin-center`,{"w-4 h-[2px] rotate-45 top-1/2 -translate-y-1/2 rounded-none":e}]),style:{backgroundColor:`var(--text-color)`}},null,2),f(`div`,{class:v([`absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-1.5 h-1.5 rounded-full transition-all duration-100`,{"opacity-0 scale-0":e}]),style:{backgroundColor:`var(--text-color)`}},null,2),f(`div`,{class:v([`absolute bottom-0.5 left-1/2 -translate-x-1/2 w-1.5 h-1.5 rounded-full transform transition-all duration-100 origin-center`,{"w-4 h-[2px] -rotate-45 bottom-1/2 translate-y-1/2 rounded-none":e}]),style:{backgroundColor:`var(--text-color)`}},null,2)])]),_:2},1032,[`class`,`loading`,`onClick`])]),item:a(({item:e,toggleCallback:t})=>[ee((c(),s(o,ne({loading:h(Y),severity:`secondary`},e.buttonProps,{rounded:``,onClick:t}),{icon:a(()=>[(c(),s(re(e.icon)))]),_:2},1040,[`loading`,`onClick`])),[[E,{value:e.label}]])]),_:1},8,[`model`]),m(o,{class:v([`dark-mode opacity-40 transition absolute bottom-3 right-14 z-11 text-white`,{"!opacity-20":h(H)?.atBottom,"hover:opacity-100 active:opacity-100 focus:opacity-100":!h(H)?.atBottom}]),rounded:``,loading:h(Y),disabled:h(H)?.atBottom,onClick:h(H)?.scrollToBottom},{icon:a(()=>[m(w,{class:`text-white`})]),_:1},8,[`class`,`loading`,`disabled`,`onClick`]),m(T,{ref_key:`menuRef`,ref:U,items:h(Pe),dividers:`sections`,"max-height":`300px`,class:`dark-mode`,popover:{pt:{content:{class:`p-0! rounded-xl! overflow-hidden!`}}}},null,8,[`items`])])}}});export{z as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{ct as e,fi as t}from"./vendor-cameraui-D9I8uPRL.js";import{f as n,p as r}from"./api-CPonLnGH.js";import{$t as i,Dn as a,Hn as o,In as s,Kt as c,Qt as l,Tn as u,Xn as d,Xt as f,Zt as p,an as m,cr as h,en as g,fr as _,gn as v,in as y,jn as b,kn as x,or as S,rn as C,sn as w}from"./vendor-zxCOTbSj.js";import{f as T}from"./vendor-core-DSNqTlQH.js";import{n as E}from"./router-BqJLYjxq.js";import{t as D}from"./power-CQJ3md0z.js";import{t as O}from"./CuiAvatar-CMR4MZZv.js";import{t as k}from"./hasPermission-C2RWjXuT.js";import{n as A}from"./CuiMenu-BXurM_rM.js";import{t as j}from"./information-outline-CGFN6gSy.js";import{t as M}from"./chevron-right-HArXFSSz.js";var N={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function P(e,t){return u(),g(`svg`,N,[...t[0]||=[p(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`1.5`,d:`M17 20V4m0 0l3 3m-3-3l-3 3M7 4v16m0 0l3-3m-3 3l-3-3`},null,-1)]])}var F=d({name:`iconoir-data-transfer-both`,render:P}),I={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function L(e,t){return u(),g(`svg`,I,[...t[0]||=[C(`<g fill="none" stroke="currentColor" stroke-linecap="round" stroke-width="1.5"><path d="M11 21H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v7"></path><path stroke-linejoin="round" d="M2 7h20M5 5.01l.01-.011M8 5.01l.01-.011M11 5.01l.01-.011m10.657 11.668C21.047 15.097 19.635 14 17.99 14c-1.758 0-3.252 1.255-3.793 3"></path><path stroke-linejoin="round" d="M19.995 16.772H21.4a.6.6 0 0 0 .6-.6V14.55m-7.666 4.783C14.953 20.903 16.366 22 18.01 22c1.758 0 3.252-1.255 3.793-3"></path><path stroke-linejoin="round" d="M16.005 19.228H14.6a.6.6 0 0 0-.6.6v1.622"></path></g>`,1)]])}var R=d({name:`iconoir-reload-window`,render:L}),z=w({__name:`CuiList`,props:{size:{default:`default`},dividers:{type:Boolean},cardProps:{},cardClass:{type:[Boolean,null,String,Object,Array]},cardStyle:{type:[Boolean,null,String,Object,Array]}},setup(t){let n=t,r=s(),{cardProps:i,cardClass:d,cardStyle:p,dividers:m}=S(n),_=f(()=>{let e=r.default?.();if(!e)return[];let t=[];for(let n of e)if(n.type===c&&Array.isArray(n.children))for(let e of n.children)typeof e==`object`&&e&&t.push(e);else t.push(n);return t});return(n,r)=>{let s=e;return u(),l(s,v({class:`cui-card`,pt:{body:{class:`p-0`}}},h(i),{class:h(d),style:h(p)}),{content:o(()=>[(u(!0),g(c,null,a(h(_),(e,n)=>(u(),l(b(e),v({key:n,ref_for:!0},h(m)===!1?{}:{divider:n<h(_).length-1},{size:t.size,radius:h(_).length===1?`both`:n===0?`top`:n===h(_).length-1?`bottom`:`none`}),null,16,[`size`,`radius`]))),128))]),_:1},16,[`class`,`style`])}}}),B={class:`flex flex-col items-center py-8`},V={class:`mt-3 text-lg font-semibold`},H={class:`text-sm text-muted`},U={class:`px-4 mb-4`},W={class:`card-title`},G={key:0,class:`px-4 mb-4`},K={class:`card-title`},q={class:`px-4 mb-4`},J={class:`card-title`},Y={class:`text-primary`},X=w({__name:`Menu`,setup(e){let{t:s}=t(),d=n(),{user:v}=T(d),S=new Set([`Faces`,`Plugins`,`Settings`]),C=f(()=>E.filter(e=>e.meta?.menu&&e.meta.auth&&k(e))),w=f(()=>C.value.filter(e=>S.has(e.name)).map(e=>({to:e.path,label:s(`navigation.${e.name.toLowerCase()}`),icon:e.meta.menu.icon.default}))),N=f(()=>C.value.filter(e=>!S.has(e.name)).map(e=>({to:e.path,label:s(`navigation.${e.name.toLowerCase()}`),icon:e.meta.menu.icon.default})));function P(){window.location.reload()}async function I(){await r()}return(e,t)=>{let n=O,r=x(`RouterLink`),s=M,f=A,S=z,C=j,T=R,E=F,k=D;return u(),g(`div`,null,[p(`section`,B,[m(r,{to:`/settings/account`,class:`flex flex-col items-center justify-center`},{default:o(()=>[m(n,{src:`avatar`,size:80,style:{width:`80px`,height:`80px`}}),p(`div`,V,_(h(v)?.username??`Unknown`),1),p(`div`,H,_(h(v)?.role??`user`),1)]),_:1})]),p(`section`,U,[p(`span`,W,_(e.$t(`views.menu.section_app`)),1),m(S,{size:`large`,dividers:``},{default:o(()=>[(u(!0),g(c,null,a(h(w),e=>(u(),l(f,{key:e.to,to:e.to},{prepend:o(()=>[(u(),l(b(e.icon),{class:`w-5 h-5 text-muted`}))]),append:o(()=>[m(s,{class:`w-5 h-5 text-muted`})]),default:o(()=>[y(` `+_(e.label)+` `,1)]),_:2},1032,[`to`]))),128))]),_:1})]),h(N).length?(u(),g(`section`,G,[p(`span`,K,_(e.$t(`views.menu.section_system`)),1),m(S,{size:`large`,dividers:``},{default:o(()=>[(u(!0),g(c,null,a(h(N),e=>(u(),l(f,{key:e.to,to:e.to},{prepend:o(()=>[(u(),l(b(e.icon),{class:`w-5 h-5 text-muted`}))]),append:o(()=>[m(s,{class:`w-5 h-5 text-muted`})]),default:o(()=>[y(` `+_(e.label)+` `,1)]),_:2},1032,[`to`]))),128))]),_:1})])):i(``,!0),p(`section`,q,[p(`span`,J,_(e.$t(`views.menu.section_actions`)),1),m(S,{size:`large`,dividers:``},{default:o(()=>[m(f,{to:`/about`},{prepend:o(()=>[m(C,{class:`w-5 h-5 text-muted`})]),append:o(()=>[m(s,{class:`w-5 h-5 text-muted`})]),default:o(()=>[y(` `+_(e.$t(`navigation.about`))+` `,1)]),_:1}),m(f,{onClick:P},{prepend:o(()=>[m(T,{class:`w-5 h-5 text-muted`})]),default:o(()=>[y(` `+_(e.$t(`views.menu.reload`)),1)]),_:1}),h(!1)?(u(),l(f,{key:0,onClick:I},{prepend:o(()=>[m(E,{class:`w-5 h-5 text-muted`})]),default:o(()=>[y(` `+_(e.$t(`views.menu.switch_server`)),1)]),_:1})):i(``,!0),m(f,{onClick:t[0]||=()=>h(d).logout()},{prepend:o(()=>[m(k,{class:`w-5 h-5 text-primary`})]),default:o(()=>[p(`span`,Y,_(e.$t(`views.menu.logout`)),1)]),_:1})]),_:1})])])}}});export{X as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Bt as e,Vn as t,fi as n}from"./vendor-cameraui-
|
|
1
|
+
import{Bt as e,Vn as t,fi as n}from"./vendor-cameraui-D9I8uPRL.js";import{$t as r,Dn as i,Hn as a,Kt as o,Qt as s,Tn as c,Xt as l,Zt as u,an as d,cr as f,en as p,fr as m,in as h,sn as g,zt as _}from"./vendor-zxCOTbSj.js";import{z as v}from"./vendor-primevue-CWF_imvX.js";import{n as y,t as b}from"./cloud-check-DqBwzaPC.js";import{t as x}from"./CuiQRCode-Dv03yW5H.js";var S={class:`flex flex-col`},C={key:`intro`,class:`flex flex-col gap-4`},w={key:0,class:`flex flex-col gap-1.5 list-disc pl-5 text-sm text-muted`},T={key:`awaiting`,class:`flex flex-col items-center gap-5 text-center`},E={class:`flex flex-col items-center gap-2`},D={class:`text-sm text-muted`},O=[`href`],k={class:`mt-1 card-background border border-color rounded-xl px-6 py-3`},A={class:`text-2xl font-mono font-semibold tracking-[0.25em]`},j={class:`flex items-center gap-2 text-muted`},M={class:`text-sm`},N={key:`connected`,class:`flex flex-col items-center gap-3 py-2 text-center`},P={class:`text-sm`},F={key:`error`,class:`flex flex-col items-center gap-3 py-2 text-center`},I={class:`text-sm`},L=g({__name:`OAuthDeviceFlow`,props:{pluginName:{}},setup(g,{expose:L}){let R=g,{t:z}=n(),{state:B,metadata:V,startDeviceFlow:H,disconnect:U,cancel:W}=e(R.pluginName),G=l(()=>Object.keys(V.value?.scopeDescriptions??{}));function K(e){switch(e){case`access_denied`:return z(`components.oauth.error_access_denied`);case`expired_token`:return z(`components.oauth.error_expired`);default:return z(`components.oauth.error_generic`)}}async function q(){return B.value.status===`disconnected`||B.value.status===`error`?await H(G.value):B.value.status===`connected`&&await U(),null}async function J(){(B.value.status===`awaiting_user`||B.value.status===`polling`)&&await W()}return L({onConfirm:q,onCancel:J}),(e,n)=>{let l=v,g=x,L=t,R=b,z=y;return c(),p(`div`,S,[d(_,{name:`fade`,mode:`out-in`},{default:a(()=>[f(B).status===`disconnected`?(c(),p(`div`,C,[d(l,{severity:`secondary`,variant:`simple`,size:`small`},{default:a(()=>[h(m(e.$t(`components.oauth.intro`,{idp:f(V)?.idpDisplayName??`cameraui.com`})),1)]),_:1}),f(G).length?(c(),p(`ul`,w,[(c(!0),p(o,null,i(f(G),e=>(c(),p(`li`,{key:e},m(f(V)?.scopeDescriptions[e]??e),1))),128))])):r(``,!0)])):f(B).status===`awaiting_user`||f(B).status===`polling`?(c(),p(`div`,T,[f(B).verificationUriComplete?(c(),s(g,{key:0,value:f(B).verificationUriComplete,size:184,"logo-size":36},null,8,[`value`])):r(``,!0),u(`div`,E,[u(`span`,D,m(e.$t(`components.oauth.enter_code_at`)),1),u(`a`,{href:f(B).verificationUriComplete||f(B).verificationUri,target:`_blank`,rel:`noopener`,class:`text-sm font-mono text-primary hover:underline break-all`},m(f(B).verificationUri),9,O),u(`div`,k,[u(`span`,A,m(f(B).userCode),1)])]),u(`div`,j,[d(L,{class:`w-4 h-4 m-0`,"stroke-width":`5`}),u(`span`,M,m(e.$t(`components.oauth.waiting`)),1)])])):f(B).status===`connected`?(c(),p(`div`,N,[d(R,{class:`text-green-500 w-10 h-10`}),u(`span`,P,m(e.$t(`components.oauth.connected_as`,{email:f(B).userEmail||`—`})),1)])):f(B).status===`error`?(c(),p(`div`,F,[d(z,{class:`text-red-500 w-10 h-10`}),u(`span`,I,m(f(B).errorMessage||K(f(B).errorCode)),1)])):r(``,!0)]),_:1})])}}});export{L as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Hn as e,Mn as t,Nn as n,On as r,Ut as i,Vn as a,Wt as o,ct as s,fi as c,jn as l,tt as u}from"./vendor-cameraui-D-WYtlxb.js";import{C as ee,O as te,f as d,l as ne}from"./api-CLcqLYO9.js";import{$t as f,Cn as p,Dn as re,Gt as m,Hn as h,Kt as g,Ln as _,Qn as v,Qt as y,Tn as b,Un as x,Wt as S,Xn as C,Xt as w,Yn as T,Zt as E,_n as D,an as O,cr as k,en as A,er as j,fr as M,gn as N,in as P,jn as F,kn as I,lr as L,nn as R,or as z,rr as B,sn as V,zn as H}from"./vendor-CUsAwmr-.js";import{c as ie,f as U}from"./vendor-core-CWeZebhd.js";import{t as W}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{t as ae}from"./useSharedComposables-CzkF-tst.js";import{B as G,G as K,H as q,J as oe,K as se,V as ce,W as le,a as J,i as ue,j as de,u as fe}from"./vendor-primevue-01WhBsPb.js";import{t as pe}from"./cctv-C9H_8mDb.js";import{t as me}from"./bell-D6XTudrP.js";import{t as he}from"./cog-OzsdLKVr.js";import{t as ge}from"./hasPermission-BHM3xbrG.js";import{n as _e}from"./CuiMenu-KizSc3du.js";import{t as ve}from"./CuiBBoxPlayground-_SGm4cz1.js";import{t as ye}from"./cameras-BOHWrQm2.js";import{n as be}from"./useCuiCameraDrawer-Ca6U-GzM.js";import{t as xe}from"./useCuiDialog-C-2PMjxH.js";import{t as Se}from"./CuiTopbarSlot-BlbZqDDn.js";import{F as Ce,G as Y,H as X,K as we,U as Te,W as Ee,a as De}from"./types-DZNoDDGr.js";import{t as Oe}from"./CuiSchema-CkgT_tmr.js";import{t as ke}from"./plugins-BWlFg8TN.js";import{t as Ae}from"./PluginSchema-g4Srx0FS.js";import{t as je}from"./plus-iXo1T1is.js";import{a as Me,i as Ne,n as Pe,o as Fe,r as Ie,t as Le}from"./vendor-markdown-e7bfD1d7.js";import{t as Re}from"./close-circle-BtZFk77i.js";import{t as ze}from"./back-filled-DVeRsKmt.js";import{t as Be}from"./CuiPluginCard-DpllCJXe.js";var Z={class:`text-base font-semibold border-b-[1px] border-color mb-3 pb-3`},Q={class:`flex flex-col gap-4`},$={class:`flex flex-col field-gap`},Ve={class:`cui-label`},He={key:0,class:`text-red-500 text-sm`},Ue={class:`flex flex-col field-gap`},We={class:`cui-label`},Ge={class:`flex flex-col field-gap`},Ke={class:`cui-label`},qe={class:`flex flex-col field-gap`},Je={class:`cui-label`},Ye={class:`flex flex-col field-gap`},Xe={class:`cui-label`},Ze={class:`flex flex-col field-gap`},Qe={class:`cui-label`},$e={class:`flex flex-col field-gap`},et={class:`cui-label`},tt={class:`flex flex-col field-gap`},nt={class:`cui-label`},rt={class:`mt-8`},it={class:`text-base font-semibold border-b-[1px] border-color mb-3 pb-3`},at={key:0,class:`flex items-center justify-center w-full py-4`},ot={key:1,class:`flex items-center justify-center text-sm text-muted py-4 text-center`},st={key:2,class:`flex flex-col field-gap`},ct={class:`text-xs text-muted`},lt={key:0,class:`mt-8`},ut={class:`text-base font-semibold border-b-[1px] border-color mb-3 pb-3`},dt=V({__name:`CuiNotificationInterface`,props:{pluginName:{}},setup(t){let n=t,o=te(),{t:s}=c(),l=ee(),{user:ne}=U(d()),{pluginName:p}=z(n),{plugin:m}=i(p),_=w(()=>Object.values(r).map(e=>({label:s(`components.notification_interface.severity_${e}`),value:e}))),y=v({title:`Test notification`,subtitle:``,body:`This is a test notification from camera.ui`,severity:r.Info,tag:``,imageUrl:``,deepLink:``}),x=j([]),S=j(!1),C=j(!1),D=B([]),N=j(!1),P=j([]),F=B(),I=j(!1),L=w(()=>D.value.map(e=>({id:e.id,label:e.name})));async function R(){if(!(!m.value||!ne.value?._id)){N.value=!0;try{let e=ge(void 0,`admin`)?[]:[ne.value._id];D.value=await m.value.getDevices?.(e)??[]}catch(e){o.error(`Failed to load notifier devices:`,e),D.value=[]}finally{N.value=!1}}}async function V(){if(m.value){I.value=!0;try{F.value=await m.value.notificationSettings?.()}catch(e){o.error(`Failed to load notification settings schema:`,e),F.value=void 0}finally{I.value=!1}}}function ie(){x.value.push({key:``,value:``})}function W(e){x.value.splice(e,1)}function ae(){let e={};for(let t of x.value)t.key.trim()&&(e[t.key.trim()]=t.value);return{title:y.title.trim(),subtitle:y.subtitle.trim()||void 0,body:y.body.trim()||void 0,severity:y.severity,tag:y.tag.trim()||void 0,imageUrl:y.imageUrl.trim()||void 0,deepLink:y.deepLink.trim()||void 0,data:Object.keys(e).length?e:void 0}}async function G(){let e=m.value;if(!(!e||C.value)){if(!y.title.trim()){S.value=!0;return}C.value=!0;try{let t=ae(),n=P.value.length?P.value:D.value.map(e=>e.id);await e.sendNotification?.(n,t),l.add({severity:`success`,detail:s(`components.notification_interface.sent`),life:3e3})}catch(e){l.add({severity:`error`,detail:e,life:3e3})}finally{C.value=!1}}}return H(m,e=>{e&&(R(),V())},{immediate:!0}),(t,n)=>{let r=u,i=ue,o=de,s=Re,c=e,l=je,ee=a,te=fe,d=Oe;return b(),A(`div`,null,[E(`h3`,Z,M(t.$t(`components.notification_interface.template`)),1),E(`div`,Q,[E(`div`,$,[E(`label`,Ve,M(t.$t(`components.notification_interface.title`)),1),O(r,{modelValue:k(y).title,"onUpdate:modelValue":[n[0]||=e=>k(y).title=e,n[1]||=e=>S.value=!1],placeholder:t.$t(`components.notification_interface.title`),invalid:k(S),class:`w-full`},null,8,[`modelValue`,`placeholder`,`invalid`]),k(S)?(b(),A(`p`,He,M(t.$t(`components.notification_interface.title_required`)),1)):f(``,!0)]),E(`div`,Ue,[E(`label`,We,M(t.$t(`components.notification_interface.subtitle`)),1),O(r,{modelValue:k(y).subtitle,"onUpdate:modelValue":n[2]||=e=>k(y).subtitle=e,placeholder:t.$t(`components.notification_interface.subtitle`),class:`w-full`},null,8,[`modelValue`,`placeholder`])]),E(`div`,Ge,[E(`label`,Ke,M(t.$t(`components.notification_interface.body`)),1),O(i,{modelValue:k(y).body,"onUpdate:modelValue":n[3]||=e=>k(y).body=e,placeholder:t.$t(`components.notification_interface.body`),rows:`3`,class:`w-full`},null,8,[`modelValue`,`placeholder`])]),E(`div`,qe,[E(`label`,Je,M(t.$t(`components.notification_interface.severity`)),1),O(o,{modelValue:k(y).severity,"onUpdate:modelValue":n[4]||=e=>k(y).severity=e,options:k(_),"option-label":`label`,"option-value":`value`,class:`w-full`},null,8,[`modelValue`,`options`])]),E(`div`,Ye,[E(`label`,Xe,M(t.$t(`components.notification_interface.tag`)),1),O(r,{modelValue:k(y).tag,"onUpdate:modelValue":n[5]||=e=>k(y).tag=e,placeholder:`motion:cam-1`,class:`w-full`},null,8,[`modelValue`])]),E(`div`,Ze,[E(`label`,Qe,M(t.$t(`components.notification_interface.image_url`)),1),O(r,{modelValue:k(y).imageUrl,"onUpdate:modelValue":n[6]||=e=>k(y).imageUrl=e,placeholder:`https://…`,class:`w-full`},null,8,[`modelValue`])]),E(`div`,$e,[E(`label`,et,M(t.$t(`components.notification_interface.deep_link`)),1),O(r,{modelValue:k(y).deepLink,"onUpdate:modelValue":n[7]||=e=>k(y).deepLink=e,placeholder:`/cameras/cam-1`,class:`w-full`},null,8,[`modelValue`])]),E(`div`,tt,[E(`label`,nt,M(t.$t(`components.notification_interface.data`)),1),(b(!0),A(g,null,re(k(x),(e,n)=>(b(),A(`div`,{key:n,class:`flex gap-2 items-center`},[O(r,{modelValue:e.key,"onUpdate:modelValue":t=>e.key=t,placeholder:t.$t(`components.notification_interface.data_key`),class:`flex-1 min-w-0`},null,8,[`modelValue`,`onUpdate:modelValue`,`placeholder`]),O(r,{modelValue:e.value,"onUpdate:modelValue":t=>e.value=t,placeholder:t.$t(`components.notification_interface.data_value`),class:`flex-1 min-w-0`},null,8,[`modelValue`,`onUpdate:modelValue`,`placeholder`]),O(c,{text:``,rounded:``,severity:`danger`,class:`cui-icon-md shrink-0`,onClick:e=>W(n)},{icon:h(()=>[O(s,{width:`100%`,height:`100%`})]),_:1},8,[`onClick`])]))),128)),O(c,{severity:`secondary`,outlined:``,fluid:``,class:`cui-button-medium`,label:t.$t(`components.notification_interface.add_data`),onClick:ie},{icon:h(()=>[O(l,{class:`w-4 h-4`})]),_:1},8,[`label`])])]),E(`div`,rt,[E(`h3`,it,M(t.$t(`components.notification_interface.targets`)),1),k(N)?(b(),A(`div`,at,[O(ee,{class:`w-[24px] h-[24px] m-0`,"stroke-width":`5`})])):k(L).length?(b(),A(`div`,st,[E(`span`,ct,M(t.$t(`components.notification_interface.targets_hint`)),1),O(te,{modelValue:k(P),"onUpdate:modelValue":n[8]||=e=>T(P)?P.value=e:null,options:k(L),"option-label":`label`,"option-value":`id`,placeholder:t.$t(`components.notification_interface.all_devices`),display:`chip`,filter:``,class:`w-full`},null,8,[`modelValue`,`options`,`placeholder`])])):(b(),A(`div`,ot,M(t.$t(`components.notification_interface.no_devices`)),1))]),k(F)?.length?(b(),A(`div`,lt,[E(`h3`,ut,M(t.$t(`components.notification_interface.settings`)),1),O(d,{"schema-form":{schema:k(F),config:{}},loading:k(I)},null,8,[`schema-form`,`loading`])])):f(``,!0),O(c,{fluid:``,class:`mt-8 cui-button-medium`,severity:`success`,loading:k(C),disabled:!k(m)||k(C),label:t.$t(`components.notification_interface.send_test`),onClick:G},null,8,[`loading`,`disabled`,`label`])])}}}),ft=.15,pt=.38,mt={class:`mb-4 rounded-xl overflow-hidden`},ht=[`src`],gt={class:`text-sm text-muted mb-4`},_t={key:0,class:`ml-1`},vt={class:`flex gap-2 mb-4`},yt={key:0,class:`flex flex-col gap-2`},bt={class:`text-sm truncate flex-1 mr-3`},xt={class:`flex items-center gap-2 shrink-0`},St=V({__name:`PluginClipInterface`,props:{src:{},response:{},onTextSearch:{type:Function}},setup(t,{expose:n}){let r=t,i=te(),a=j(``),o=j(!1),s=j([]);function c(e){return Math.max(0,Math.min(1,(e-ft)/(pt-ft)))}async function l(){let e=a.value.trim();if(!(!e||o.value)){o.value=!0;try{let{score:t}=await r.onTextSearch(e);s.value.unshift({query:e,rawScore:t,displayScore:c(t)}),a.value=``}catch(e){i.error(`CLIP text search failed:`,e)}finally{o.value=!1}}}return n({}),(n,r)=>{let i=u,c=e,ee=J;return b(),A(`div`,null,[E(`div`,mt,[E(`img`,{src:t.src,alt:`CLIP test image`,class:`w-full object-contain`},null,8,ht)]),E(`div`,gt,[P(M(t.response.embeddings.length)+` embedding(s), `+M(t.response.embeddings[0]?.embedding?.length??0)+`-dim `,1),t.response.embeddingModel?(b(),A(`span`,_t,`(`+M(t.response.embeddingModel)+`)`,1)):f(``,!0)]),E(`div`,vt,[O(i,{modelValue:k(a),"onUpdate:modelValue":r[0]||=e=>T(a)?a.value=e:null,class:`flex-1`,placeholder:n.$t(`components.clip_interface.enter_query`),onKeyup:S(l,[`enter`])},null,8,[`modelValue`,`placeholder`]),O(c,{class:`cui-button-medium`,label:n.$t(`components.clip_interface.search`),loading:k(o),onClick:l},null,8,[`label`,`loading`])]),k(s).length?(b(),A(`div`,yt,[(b(!0),A(g,null,re(k(s),(e,t)=>(b(),A(`div`,{key:t,class:`flex items-center justify-between p-3 rounded-lg content-background`},[E(`span`,bt,M(e.query),1),E(`div`,xt,[E(`div`,{class:L([`text-sm font-medium`,e.displayScore>=.5?`text-green-500`:e.displayScore>=.25?`text-yellow-500`:`text-red-400`])},M((e.displayScore*100).toFixed(0))+`% `,3),O(ee,{value:e.displayScore>=.5?`Match`:e.displayScore>=.25?`Possible`:`No match`,severity:e.displayScore>=.5?`success`:e.displayScore>=.25?`warn`:`danger`,class:`text-xs`},null,8,[`value`,`severity`])])]))),128))])):f(``,!0)])}}}),Ct=V({__name:`PluginMotionInterface`,props:{response:{}},setup(e){let{response:t}=z(e),n=_(`videoPlayerRef`);return p(()=>{if(n.value){let e=new Blob([t.value.videoData],{type:`video/mp4`});n.value.src=URL.createObjectURL(e),n.value.load()}}),(e,t)=>(b(),A(`div`,null,[E(`video`,{ref_key:`videoPlayerRef`,ref:n,controls:``,class:`w-full`},`Your browser does not support the video tag.`,512)]))}}),wt={class:`mb-5 h-min`},Tt=[`src`],Et=V({__name:`PluginObjectInterface`,props:{src:{},response:{}},setup(e){let{response:t,src:n}=z(e),r=w(()=>t.value.detections);return(e,t)=>{let i=ve;return b(),A(`div`,wt,[O(i,{detections:k(r)},null,8,[`detections`]),E(`img`,{src:k(n),alt:`Preview`,class:`w-full`},null,8,Tt)])}}}),Dt={key:0,class:`w-full`},Ot={class:`flex flex-col justify-center items-center mb-5`},kt={for:`restoreInput`,class:`cursor-pointer text-center text-sm`},At=[`accept`],jt={key:0,class:`text-red-500 text-sm`},Mt={key:1,class:`w-full flex flex-col items-center justify-center`},Nt={key:0,class:`relative mb-4`},Pt=[`src`],Ft={key:1,class:`relative mb-4 w-full`},It={key:2,class:`relative mb-4 w-full`},Lt=[`src`,`type`],Rt={class:`flex items-center justify-center`},zt={class:`mx-2`},Bt={class:`text-muted`},Vt={class:`flex items-center justify-center mt-2 text-xs text-muted`},Ht={class:`mt-10`},Ut={class:`text-base font-semibold border-b-[1px] border-color mb-3 pb-3`},Wt={key:0,class:`flex items-center justify-center text-sm text-muted mt-5`},Gt=V({__name:`CuiDetectionInterface`,props:{type:{},pluginName:{}},emits:[`update:file`,`update:metadata`],setup(t,{emit:n}){let r=t,a=n,o=te(),{t:s}=c(),l=ee(),u=xe(),{type:d,pluginName:ne}=z(r),{plugin:p,isLoading:re}=i(ne),g=_(`fileInputRef`),v=_(`videoPlayerRef`),x=_(`audioPlayerRef`),S=B([]),C=j(!1),T=j(!1),N=j(!1),F=j(!1),I=j(``),R=j(!1),V=j(),ie=j(!0),U=B(),W=j(!1),ae=w(()=>W.value||re.value||R.value),G=w(()=>{switch(d.value){case`objectDetection`:case`faceDetection`:case`licensePlateDetection`:case`classifierDetection`:case`clipDetection`:return`image`;case`motionDetection`:return`video`;case`audioDetection`:return`audio`;default:return`image`}}),K=w(()=>{switch(G.value){case`image`:return Ee;case`video`:return Te;case`audio`:return X;default:return[]}}),q=w(()=>{switch(G.value){case`image`:return Ce;case`video`:return we;case`audio`:return Y;default:return 0}}),oe=w(()=>K.value.join(`,`));async function se(){if(p.value){W.value=!0;try{let e;switch(d.value){case`motionDetection`:e=await p.value.motionDetectionSettings?.();break;case`objectDetection`:e=await p.value.objectDetectionSettings?.();break;case`audioDetection`:e=await p.value.audioDetectionSettings?.();break;case`faceDetection`:e=await p.value.faceDetectionSettings?.();break;case`licensePlateDetection`:e=await p.value.licensePlateDetectionSettings?.();break;case`classifierDetection`:e=await p.value.classifierDetectionSettings?.();break;case`clipDetection`:e=await p.value.clipSettings?.();break}U.value=e}catch(e){o.error(`Failed to load interface schema:`,e),U.value=void 0}finally{W.value=!1}}}function ce(e){let t=S.value.findIndex(t=>t.name===e);t>-1&&(S.value.splice(t,1),ue(),I.value=``,G.value===`video`&&v.value&&(v.value.src=``),V.value=void 0,a(`update:file`,null),a(`update:metadata`,null))}function le(e){if(C.value=!1,T.value=!1,F.value=!1,S.value=[],e.dataTransfer)if(e.dataTransfer.files.length>1)T.value=!0;else{let t=e.dataTransfer.files[0];(K.value.length===0||K.value.includes(t.type))&&t.size<=q.value?(S.value.push(t),D(()=>{de(t)})):t.size>q.value?F.value=!0:T.value=!0}}function J(e){T.value=!1,F.value=!1,S.value=[];let t=e.target;if(t&&t.files){if(t.files?.length>1)T.value=!0;else if(t.files.length===1){let e=t.files[0],n=K.value.length===0||K.value.includes(e.type);e.size<=q.value&&n?(S.value.push(e),D(()=>{de(e)})):e.size>q.value?F.value=!0:T.value=!0}}}function ue(){g.value&&(g.value.value=``)}function de(e){R.value=!0;let t=URL.createObjectURL(e);switch(G.value){case`image`:fe(e,t);break;case`video`:pe(e,t);break;case`audio`:me(e,t);break}}function fe(e,t){let n=new Image;n.src=t,n.onload=()=>{I.value=n.src;let t={width:n.width,height:n.height};V.value=t,a(`update:metadata`,t),a(`update:file`,e),R.value=!1}}function pe(e,t){v.value&&(v.value.src=t,v.value.load(),v.value.onloadeddata=()=>{a(`update:file`,e),R.value=!1})}function me(e,t){I.value=t;let n=new Audio;n.src=t,n.onloadedmetadata=()=>{let t={mimeType:e.type};V.value=t,a(`update:metadata`,t),a(`update:file`,e),R.value=!1}}function he(e){return e<1024?e+` bytes`:e<1048576?(e/1024).toFixed(1)+` KB`:(e/1048576).toFixed(1)+` MB`}function ge(e,t){let n=0,r=0,i=0;for(let a=0;a<e.length;a++)n+=e[a]*t[a],r+=e[a]*e[a],i+=t[a]*t[a];return r&&i?n/(Math.sqrt(r)*Math.sqrt(i)):0}async function _e(e){if(!S.value.length){N.value=!0;return}if(!p.value){o.error(`Plugin not connected`);return}R.value=!0;try{let t=await S.value[0].arrayBuffer();if(d.value===`audioDetection`){let n=await p.value.testAudioDetection?.(new Uint8Array(t),V.value,e);if(!n){o.warn(`No audio detection interface available`);return}if(n.detected&&n.detections?.length){let e=n.detections.map(e=>`${e.label} (${Math.round(e.confidence*100)}%)`).join(`, `),t=n.decibels==null?``:` | ${n.decibels.toFixed(1)} dBFS`;l.add({severity:`success`,detail:`${e}${t}`,life:3e3})}else l.add({severity:`info`,detail:s(`components.detection_interface.audio_not_detected`),life:3e3})}else if(d.value===`motionDetection`){let n=await p.value.testMotionDetection?.(new Uint8Array(t),e);if(!n){o.warn(`No motion detection interface available`);return}u.openComponentDialog(Ct,{data:{title:s(`components.dialog.title.result`),hideConfirmButton:!0,contentProps:{response:n}}})}else if(d.value===`faceDetection`){let n=await p.value.testFaceDetection?.(new Uint8Array(t),V.value,e);if(!n){o.warn(`No face detection interface available`);return}u.openComponentDialog(Et,{data:{title:s(`components.dialog.title.result`),hideConfirmButton:!0,contentProps:{src:I,response:n}}})}else if(d.value===`licensePlateDetection`){let n=await p.value.testLicensePlateDetection?.(new Uint8Array(t),V.value,e);if(!n){o.warn(`No license plate detection interface available`);return}u.openComponentDialog(Et,{data:{title:s(`components.dialog.title.result`),hideConfirmButton:!0,contentProps:{src:I,response:n}}})}else if(d.value===`classifierDetection`){let n=await p.value.testClassifierDetection?.(new Uint8Array(t),V.value,e);if(!n){o.warn(`No classifier detection interface available`);return}u.openComponentDialog(Et,{data:{title:s(`components.dialog.title.result`),hideConfirmButton:!0,contentProps:{src:I,response:n}}})}else if(d.value===`clipDetection`){let n=await p.value.testClipEmbedding?.(new Uint8Array(t),V.value,e);if(!n){o.warn(`No CLIP detection interface available`);return}if(!n.embeddings?.length){l.add({severity:`info`,detail:s(`components.detection_interface.no_detections`),life:3e3});return}let r=n.embeddings[0].embedding;u.openComponentDialog(St,{data:{title:s(`components.dialog.title.result`),hideConfirmButton:!0,contentProps:{src:I,response:n,onTextSearch:async e=>{let t=await p.value.getTextEmbedding(e);return t?.embedding?.length?{score:ge(r,t.embedding)}:{score:0}}}}})}else{let n=await p.value.testObjectDetection?.(new Uint8Array(t),V.value,e);if(!n){o.warn(`No object detection interface available`);return}u.openComponentDialog(Et,{data:{title:s(`components.dialog.title.result`),hideConfirmButton:!0,contentProps:{src:I,response:n}}})}}catch(e){l.add({severity:`error`,detail:e,life:3e3})}finally{R.value=!1}}return H(p,e=>{e&&se()},{immediate:!0}),H(S,e=>{e.length>0?(N.value=!1,ie.value=!1):(I.value=``,V.value=void 0,ie.value=!0)},{immediate:!0,deep:!0}),(t,n)=>{let r=Re,i=e,a=Oe;return b(),A(`div`,null,[E(`div`,{class:`file-upload-box`,onDrop:n[1]||=m(e=>le(e),[`prevent`]),onDragover:n[2]||=m(e=>C.value=!0,[`prevent`]),onDragenter:n[3]||=m(e=>C.value=!0,[`prevent`]),onDragleave:n[4]||=m(e=>C.value=!1,[`prevent`])},[k(S).length?(b(),A(`div`,Mt,[k(G)===`image`?(b(),A(`div`,Nt,[E(`img`,{src:k(I),alt:`Preview`,class:`w-full`},null,8,Pt)])):k(G)===`video`?(b(),A(`div`,Ft,[E(`video`,{ref_key:`videoPlayerRef`,ref:v,controls:``,class:`w-full`},`Your browser does not support the video tag.`,512)])):k(G)===`audio`?(b(),A(`div`,It,[E(`audio`,{ref_key:`audioPlayerRef`,ref:x,controls:``,class:`w-full`},[E(`source`,{src:k(I),type:k(S)[0].type},null,8,Lt),n[5]||=P(` Your browser does not support the audio element. `,-1)],512)])):f(``,!0),E(`div`,Rt,[O(i,{text:``,rounded:``,severity:`danger`,class:`cui-icon-md shrink-0`,onClick:n[0]||=m(e=>ce(k(S)[0].name),[`stop`])},{icon:h(()=>[O(r,{width:`100%`,height:`100%`})]),_:1}),E(`b`,zt,M(k(S)[0].name),1),E(`span`,Bt,`(`+M(he(k(S)[0].size))+`)`,1)])])):(b(),A(`div`,Dt,[E(`div`,Ot,[E(`label`,kt,M(t.$t(`components.detection_interface.drop_or_select_${k(G)}_to_detect${k(G)===`image`?`_objects`:k(G)===`video`?`_motion`:``}`)),1),E(`input`,{id:`restoreInput`,ref_key:`fileInputRef`,ref:g,type:`file`,class:`hidden`,accept:k(oe),onChange:J},null,40,At),k(T)?(b(),A(`p`,jt,M(t.$t(`components.detection_interface.only_one_${k(G)}_allowed`)),1)):f(``,!0),k(N)?(b(),A(`p`,{key:1,class:L([`text-red-500 text-sm`,{"mt-2":k(T)}])},M(t.$t(`components.detection_interface.${k(G)}_required`)),3)):f(``,!0),k(F)?(b(),A(`p`,{key:2,class:L([`text-red-500 text-sm`,{"mt-2":k(T)||k(N)}])},M(t.$t(`components.detection_interface.file_size_error`)),3)):f(``,!0)])]))],32),E(`div`,Vt,[E(`span`,null,`(`+M(k(q)/1024/1024)+`MB, `+M(k(K).join(`, `))+`)`,1)]),E(`div`,Ht,[E(`h3`,Ut,M(t.$t(`components.detection_interface.interface_config`)),1),k(U)?.length?(b(),y(a,{key:1,"schema-form":{schema:k(U),config:{}},loading:k(ae),"save-button-label":t.$t(`components.detection_interface.detect`),"disable-button":k(ie),"show-button":``,onOnFormSubmit:_e},null,8,[`schema-form`,`loading`,`save-button-label`,`disable-button`])):(b(),A(`div`,Wt,M(t.$t(`components.detection_interface.no_interface_config`)),1))])])}}}),Kt={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function qt(e,t){return b(),A(`svg`,Kt,[...t[0]||=[E(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M2 10v3m4-7v11m4-14v18m4-13v7m4-10v13m4-8v3`},null,-1)]])}var Jt=C({name:`lucide-audio-lines`,render:qt}),Yt={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Xt(e,t){return b(),A(`svg`,Yt,[...t[0]||=[E(`path`,{fill:`currentColor`,d:`M2 7V4q0-.825.588-1.412T4 2h3v2H4v3zm5 15H4q-.825 0-1.412-.587T2 20v-3h2v3h3zm10 0v-2h3v-3h2v3q0 .825-.587 1.413T20 22zm3-15V4h-3V2h3q.825 0 1.413.588T22 4v3zm-7.913 1.913Q11.5 8.325 11.5 7.5t.588-1.412T13.5 5.5t1.413.588T15.5 7.5t-.587 1.413T13.5 9.5t-1.412-.587M12.8 18h-4l1-5.1l-1.8.7V17H6v-4.7l3.95-1.7q.875-.375 1.288-.487T12 10q.525 0 .975.275T13.7 11l1 1.6q.65 1.05 1.763 1.725T19 15v2q-1.65 0-3.088-.687T13.5 14.5z`},null,-1)]])}var Zt=C({name:`material-symbols-detection-and-zone`,render:Xt}),Qt={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function $t(e,t){return b(),A(`svg`,Qt,[...t[0]||=[E(`path`,{fill:`currentColor`,d:`M8.113 13.888Q7.75 13.525 7.75 13t.363-.888T9 11.75t.888.363t.362.887t-.363.888T9 14.25t-.888-.363m6 0q-.362-.362-.362-.887t.363-.888t.887-.362t.888.363t.362.887t-.363.888t-.887.362t-.888-.363M12 20q3.35 0 5.675-2.325T20 12q0-.6-.075-1.162T19.65 9.75q-.525.125-1.05.188T17.5 10q-2.275 0-4.3-.975T9.75 6.3q-.8 1.95-2.287 3.388T4 11.85V12q0 3.35 2.325 5.675T12 20m0 2q-2.075 0-3.9-.787t-3.175-2.138T2.788 15.9T2 12t.788-3.9t2.137-3.175T8.1 2.788T12 2t3.9.788t3.175 2.137T21.213 8.1T22 12t-.788 3.9t-2.137 3.175t-3.175 2.138T12 22`},null,-1)]])}var en=C({name:`material-symbols-face`,render:$t}),tn={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function nn(e,t){return b(),A(`svg`,tn,[...t[0]||=[E(`path`,{fill:`currentColor`,d:`M8 17q-.425 0-.712-.288T7 16t.288-.712T8 15h5q-.35-.425-.562-.925T12.1 13H10q-.425 0-.712-.288T9 12t.288-.712T10 11h2.1q.125-.575.338-1.075T13 9H4q-.425 0-.712-.288T3 8t.288-.712T4 7h13q2.075 0 3.538 1.463T22 12t-1.463 3.538T17 17zm9-2q1.25 0 2.125-.875T20 12t-.875-2.125T17 9t-2.125.875T14 12t.875 2.125T17 15M3 13q-.425 0-.712-.288T2 12t.288-.712T3 11h4q.425 0 .713.288T8 12t-.288.713T7 13zm1 4q-.425 0-.712-.288T3 16t.288-.712T4 15h1q.425 0 .713.288T6 16t-.288.713T5 17z`},null,-1)]])}var rn=C({name:`material-symbols-motion-blur-rounded`,render:nn}),an={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function on(e,t){return b(),A(`svg`,an,[...t[0]||=[E(`g`,{fill:`none`,"fill-rule":`evenodd`},[E(`path`,{d:`m12.594 23.258l-.012.002l-.071.035l-.02.004l-.014-.004l-.071-.036q-.016-.004-.024.006l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.016-.018m.264-.113l-.014.002l-.184.093l-.01.01l-.003.011l.018.43l.005.012l.008.008l.201.092q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.003-.011l.018-.43l-.003-.012l-.01-.01z`}),E(`path`,{fill:`currentColor`,d:`M15.586 2.757a2 2 0 0 1 2.828 0l2.829 2.829a2 2 0 0 1 0 2.828l-2.829 2.829a2 2 0 0 1-2.828 0l-2.829-2.829a2 2 0 0 1 0-2.828zM9 3a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2zm12 12a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h4a2 2 0 0 0 2-2zM9 13a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4a2 2 0 0 1 2-2z`})],-1)]])}var sn=C({name:`mingcute-classify-2-fill`,render:on}),cn={viewBox:`0 0 256 256`,width:`1.2em`,height:`1.2em`};function ln(e,t){return b(),A(`svg`,cn,[...t[0]||=[E(`path`,{fill:`currentColor`,d:`M200 156c0 6.5-7.33 12-16 12s-16-5.5-16-12s7.33-12 16-12s16 5.5 16 12m32-100v144a16 16 0 0 1-16 16H40a16 16 0 0 1-16-16V56a16 16 0 0 1 16-16h176a16 16 0 0 1 16 16m-88.63 116.88l-44-104a8 8 0 0 0-14.74 0l-44 104a8 8 0 0 0 14.74 6.24L66.84 152h50.32l11.47 27.12a8 8 0 0 0 14.74-6.24M216 124c0-15.44-14.36-28-32-28a34.86 34.86 0 0 0-20.78 6.68a8 8 0 0 0 9.56 12.83A18.84 18.84 0 0 1 184 112c8.56 0 15.8 5.36 16 11.76v8a35.24 35.24 0 0 0-16-3.76c-17.64 0-32 12.56-32 28s14.36 28 32 28a35.1 35.1 0 0 0 16.93-4.26A8 8 0 0 0 216 176ZM73.61 136h36.78L92 92.53Z`},null,-1)]])}var un=C({name:`ph-text-aa-fill`,render:ln}),dn={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function fn(e,t){return b(),A(`svg`,dn,[...t[0]||=[E(`path`,{fill:`currentColor`,d:`M12.75 3a.75.75 0 0 0-1.5 0v2a.75.75 0 0 0 1.5 0z`},null,-1),E(`path`,{fill:`currentColor`,"fill-rule":`evenodd`,d:`M22.75 12.057c0 1.837 0 3.293-.153 4.432c-.158 1.172-.49 2.121-1.238 2.87c-.749.748-1.698 1.08-2.87 1.238c-1.14.153-2.595.153-4.433.153H9.944c-1.837 0-3.293 0-4.432-.153c-1.172-.158-2.121-.49-2.87-1.238c-.748-.749-1.08-1.698-1.238-2.87c-.153-1.14-.153-2.595-.153-4.433v-.926q.001-.575.008-1.096c.014-.975.05-1.81.145-2.523c.158-1.172.49-2.121 1.238-2.87c.749-.748 1.698-1.08 2.87-1.238c.716-.096 1.558-.132 2.541-.145l.697-.005a1 1 0 0 1 1.001.999V5a2.25 2.25 0 0 0 4.5 0v-.75c0-.552.448-1 1-.998c1.29.006 2.359.033 3.239.151c1.172.158 2.121.49 2.87 1.238c.748.749 1.08 1.698 1.238 2.87c.153 1.14.153 2.595.153 4.433zM8 9.75a.75.75 0 0 0 0 1.5h8a.75.75 0 0 0 0-1.5zm0 3.5a.75.75 0 0 0 0 1.5h5.5a.75.75 0 0 0 0-1.5z`,"clip-rule":`evenodd`},null,-1)]])}var pn=C({name:`solar-plate-bold`,render:fn}),mn={class:`font-semibold text-xl truncate`},hn={class:`lg:col-span-2 order-1 !h-[220px]`},gn={class:`flex w-full h-full items-center justify-center`},_n={class:`lg:col-span-1 lg:row-span-3 order-2`},vn={class:`lg:!hidden card-title`},yn={key:0,class:`w-full h-full flex items-center justify-center`},bn={key:1},xn={class:`hidden lg:block text-base font-semibold border-b-[1px] border-color mb-3 pb-3`},Sn={key:0,class:`flex items-center justify-center w-full h-full text-muted text-sm`},Cn=[`onClick`],wn={key:0,class:`w-full h-full`},Tn={key:0,class:`flex flex-col items-center justify-center w-full h-full text-muted text-sm gap-1 text-center`},En={key:2,class:`flex items-center justify-center w-full h-full text-muted text-sm`},Dn={key:9,class:`w-full h-full`},On={key:0,class:`flex items-center justify-center w-full h-full text-muted text-sm`},kn={class:`lg:col-span-2 order-3`},An={class:`lg:!hidden card-title`},jn={class:`hidden lg:block text-base font-semibold border-b-[1px] border-color mb-3 pb-3`},Mn={key:0,class:`flex w-full h-full items-center justify-center`},Nn=[`innerHTML`],Pn={class:`lg:col-span-2 order-4`},Fn={class:`lg:!hidden card-title`},In={class:`hidden lg:block text-base font-semibold border-b-[1px] border-color mb-3 pb-3`},Ln={key:0,class:`flex w-full h-full items-center justify-center`},Rn=[`innerHTML`],zn=W(V({__name:`Plugin`,setup(r){let u=new ye,d=new ke,p=te(),m=be(),_=ie(),v=ee(),S=xe(),{lgBreakpoint:C}=ae(),{t:D}=c(),z=j(_.params.scope),B=j(_.params.pluginname),V=w(()=>z.value?`${z.value}/${B.value}`:B.value),{contract:U,error:W}=i(V);d.toggleQueryActivator(`getPluginContractQuery`,!1);let{data:J,isBusy:ue}=d.getPluginQuery(V),{data:de,isBusy:fe}=d.getPluginReadmeQuery(V),{data:ge,isBusy:ve}=d.getPluginChangelogQuery(V),{data:Ce}=d.getPluginContractQuery(V),Y=o(V),X=Y.config,we=Y.isLoading,{mutate:Te,isPending:Ee}=u.addCameraExtensionQuery(),{mutate:je,isPending:Re}=u.removeCameraExtensionQuery(),Z=j(`settings`),Q=j([]),$=j([]),Ve=w(()=>!!U.value&&l(U.value,n.NVR)),He=Le(`commonmark`,{highlight(e,t){if(t&&Fe.getLanguage(t))try{return`<pre><code class="hljs">`+Fe.highlight(e,{language:t,ignoreIllegals:!0}).value+`</code></pre>`}catch{}return`<pre><code class="hljs">`+He.utils.escapeHtml(e)+`</code></pre>`}});Fe.registerLanguage(`typescript`,Ie),Fe.registerLanguage(`yaml`,Pe),Fe.registerLanguage(`json`,Me),Fe.registerLanguage(`python`,Ne);function Ue(e,t){return e.pluginInfo?.name===t}async function We(e){try{await Y.setValue(e.key,void 0),v.add({severity:`success`,detail:D(`components.toast.config_updated`),life:3e3})}catch(e){v.add({severity:`error`,detail:e,life:3e3})}}async function Ge(e){try{let t=await Y.submitValue(e.key,e.payload);if(t?.toast){let e=ne(t.toast.type);v.add({severity:e,detail:t.toast.message,life:3e3})}t?.schema?.length&&S.openComponentDialog(Ae,{data:{title:D(`components.dialog.title.config`),hideConfirmButton:!0,contentProps:{schemaConfig:{schema:t.schema,config:e.payload},pluginName:V.value,buttonKey:e.key}}})}catch(e){v.add({severity:`error`,detail:e,life:3e3})}}async function Ke(e){if(X.value?.schema.length)try{let t=De(X.value.schema,e);await Y.setConfig(t),v.add({severity:`success`,detail:D(`components.toast.config_updated`),life:3e3})}catch(e){v.add({severity:`error`,detail:e,life:3e3})}}async function qe(e){if(J.value&&J.value.contract){let n=t(J.value.contract)?[`hub`]:J.value.contract.provides;if($.value.includes(e.name))for(let t of n)je({cameraname:e.name,pluginname:J.value.pluginName,type:t},{onSuccess:()=>{$.value=$.value.filter(t=>t!==e.name)}});else for(let t of n)Te({cameraname:e.name,pluginname:J.value.pluginName,type:t},{onSuccess:()=>{$.value=[...$.value,e.name]}})}}return H(J,e=>{if(!e||e.disabled){let e=Q.value.some(e=>e.name===`settings`),t=Q.value.some(e=>e.name===`cameras`);e?Z.value=`settings`:t&&(Z.value=`cameras`)}},{deep:!0}),H(_,()=>{B.value=_.params.pluginname},{deep:!0,immediate:!0}),H([J,Y.isConnected],async([e,t])=>{e&&!e.disabled&&t&&await Y.getConfig()},{immediate:!0}),H(X,()=>{X.value?d.toggleQueryActivator(`getPluginContractQuery`,!0):d.toggleQueryActivator(`getPluginContractQuery`,!1)},{deep:!0,immediate:!0}),H([Ce,X,U],()=>{let e=[],t=!1,r=Ve.value||!!X.value?.schema.length;e.push({name:`settings`,icon:he,isInterface:!1,tooltip:D(`views.plugin.settings_tab_tooltip`)}),U.value&&l(U.value,n.MotionDetection)&&(t=!0,e.push({name:`motion_detection`,icon:rn,isInterface:!0,tooltip:D(`views.plugin.motion_detection_tab_tooltip`)})),U.value&&l(U.value,n.ObjectDetection)&&(t=!0,e.push({name:`object_detection`,icon:Zt,isInterface:!0,tooltip:D(`views.plugin.object_detection_tab_tooltip`)})),U.value&&l(U.value,n.AudioDetection)&&(t=!0,e.push({name:`audio_detection`,icon:Jt,isInterface:!0,tooltip:D(`views.plugin.audio_detection_tab_tooltip`)})),U.value&&l(U.value,n.FaceDetection)&&(t=!0,e.push({name:`face_detection`,icon:en,isInterface:!0,tooltip:D(`views.plugin.face_detection_tab_tooltip`)})),U.value&&l(U.value,n.LicensePlateDetection)&&(t=!0,e.push({name:`license_plate_detection`,icon:pn,isInterface:!0,tooltip:D(`views.plugin.license_plate_detection_tab_tooltip`)})),U.value&&l(U.value,n.ClassifierDetection)&&(t=!0,e.push({name:`classifier_detection`,icon:sn,isInterface:!0,tooltip:D(`views.plugin.classifier_detection_tab_tooltip`)})),U.value&&l(U.value,n.ClipDetection)&&(t=!0,e.push({name:`clip_detection`,icon:un,isInterface:!0,tooltip:D(`views.plugin.clip_detection_tab_tooltip`)})),U.value&&l(U.value,n.Notifier)&&(t=!0,e.push({name:`notification`,icon:me,isInterface:!0,tooltip:D(`views.plugin.notification_tab_tooltip`)})),e.push({name:`cameras`,icon:pe,isInterface:!1,tooltip:D(`views.plugin.cameras_tab_tooltip`)}),Ce.value?.cameras.length&&($.value=Ce.value.cameras.filter(e=>e.plugins?.some(e=>e.name===V.value)).map(e=>e.name)),Q.value=[...e],J.value?.disabled||(r?Z.value=`settings`:t?Z.value=Q.value.filter(e=>e.isInterface)[0].name:Z.value=`settings`)},{deep:!0,immediate:!0}),H(W,e=>{e&&J.value&&!J.value.disabled&&p.error(`Error connecting to plugin:`,e)}),(t,n)=>{let r=ze,i=e,o=Se,c=a,l=s,u=Be,ee=G,te=ce,d=I(`RouterLink`),ne=Oe,p=Gt,_=dt,v=se,S=_e,w=q,D=le,j=K,z=oe;return b(),A(`div`,{key:k(V)},[O(o,{position:`left`},{default:h(()=>[O(i,{severity:`secondary`,text:``,class:`cui-button p-2 text-color non-draggable-region`,onClick:n[0]||=e=>t.$router.push(`/plugins`)},{icon:h(()=>[O(r,{class:`w-6 h-6`})]),_:1})]),_:1}),O(o,{position:`center`},{default:h(()=>[E(`span`,mn,M(t.$t(`views.plugin.title`)),1)]),_:1}),E(`div`,{class:L([`grid grid-auto grid-cols-1 lg:grid-cols-3 gap-6 lg:h-full`,{"!gap-2":k(C)}])},[E(`div`,hn,[k(J)?(b(),y(u,{key:1,plugin:k(J),class:`h-[220px]`},null,8,[`plugin`])):(b(),y(l,{key:0,class:`cui-card items-center justify-center !h-[220px]`},{content:h(()=>[E(`div`,gn,[O(c,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})])]),_:1}))]),E(`div`,_n,[E(`span`,vn,M(t.$t(`views.plugin.settings`)),1),O(l,{class:L([`cui-card !h-auto lg:!h-full`,{"items-center justify-center":k(ue)||k(we)}])},{content:h(()=>[k(ue)||k(we)?(b(),A(`div`,yn,[O(c,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})])):(b(),A(`div`,bn,[E(`h3`,xn,M(t.$t(`views.plugin.settings`)),1),k(J)?.disabled?(b(),A(`div`,Sn,[E(`span`,null,M(t.$t(`views.plugin.disabled_info`)),1)])):(b(),y(j,{key:1,value:k(Z),"onUpdate:value":n[1]||=e=>T(Z)?Z.value=e:null,scrollable:``},{default:h(()=>[O(te,{class:`justify-between`,pt:{activeBar:{class:`!w-auto`},content:{class:`border-[1px] border-color cui-rounded-corner overflow-hidden`}}},{default:h(()=>[(b(!0),A(g,null,re(k(Q),(e,t)=>(b(),y(ee,{key:t,disabled:e.isInterface&&k(J)?.disabled,value:e.name,"as-child":``},{default:h(t=>[x((b(),A(`div`,N({ref_for:!0},t.a11yAttrs,{class:[`flex flex-col items-center justify-center flex-1 content-background !py-3 h-[55px]`,[{"hover:!text-color active:!text-color focus:!text-color":!t.active},t.class]],onClick:t.onClick}),[(b(),y(F(e.icon),{class:`w-5 h-5`}))],16,Cn)),[[z,{value:e.tooltip}]])]),_:2},1032,[`disabled`,`value`]))),128))]),_:1}),O(D,{class:`px-0 pb-0`},{default:h(()=>[(b(!0),A(g,null,re(k(Q),(e,n)=>(b(),y(w,{key:n,value:e.name,"as-child":``},{default:h(n=>[n.active?(b(),A(`div`,N({key:0,class:n.class},{ref_for:!0},n.a11yAttrs),[e.name===`settings`?(b(),A(`div`,wn,[k(Ve)?(b(),A(`div`,Tn,[E(`span`,null,M(t.$t(`views.plugin.nvr_settings_hint`)),1),O(d,{to:`/settings/recordings`,class:`text-primary-500 hover:underline`},{default:h(()=>[P(M(t.$t(`views.plugin.nvr_settings_link`)),1)]),_:1})])):k(X)?.schema?.length?(b(),y(ne,{key:1,"schema-form":{schema:k(X).schema,config:k(X).config},loading:k(Y).isLoading.value,"save-button-color":`success`,onOnAction:We,onOnSubmit:Ge,onOnFormSubmit:Ke},null,8,[`schema-form`,`loading`])):(b(),A(`div`,En,[E(`span`,null,M(t.$t(`views.plugin.no_settings`)),1)]))])):e.name===`motion_detection`?(b(),y(p,{key:1,"plugin-name":k(V),type:`motionDetection`},null,8,[`plugin-name`])):e.name===`object_detection`?(b(),y(p,{key:2,"plugin-name":k(V),type:`objectDetection`},null,8,[`plugin-name`])):e.name===`audio_detection`?(b(),y(p,{key:3,"plugin-name":k(V),type:`audioDetection`},null,8,[`plugin-name`])):e.name===`face_detection`?(b(),y(p,{key:4,"plugin-name":k(V),type:`faceDetection`},null,8,[`plugin-name`])):e.name===`license_plate_detection`?(b(),y(p,{key:5,"plugin-name":k(V),type:`licensePlateDetection`},null,8,[`plugin-name`])):e.name===`classifier_detection`?(b(),y(p,{key:6,"plugin-name":k(V),type:`classifierDetection`},null,8,[`plugin-name`])):e.name===`clip_detection`?(b(),y(p,{key:7,"plugin-name":k(V),type:`clipDetection`},null,8,[`plugin-name`])):e.name===`notification`?(b(),y(_,{key:8,"plugin-name":k(V)},null,8,[`plugin-name`])):e.name===`cameras`?(b(),A(`div`,Dn,[k(Ce)?.cameras?.length?(b(!0),A(g,{key:1},re(k(Ce).cameras,e=>(b(),A(`div`,{key:e.name,class:`cui-list-item`},[O(S,{disabled:k(Ee)||k(Re)||k(Y).isLoading.value,active:k($).includes(e.name),class:`h-14`,onClick:t=>k(m).open({cameraName:e.name})},R({default:h(()=>[E(`span`,null,M(e.name),1)]),_:2},[!k(J)||!Ue(e,k(J).pluginName)?{name:`append`,fn:h(()=>[O(v,{"model-value":k($).includes(e.name),disabled:k(Ee)||k(Re)||k(Y).isLoading.value,"onUpdate:modelValue":()=>qe(e)},null,8,[`model-value`,`disabled`,`onUpdate:modelValue`])]),key:`0`}:void 0]),1032,[`disabled`,`active`,`onClick`])]))),128)):(b(),A(`div`,On,[E(`span`,null,M(t.$t(`views.plugin.no_cameras`)),1)]))])):f(``,!0)],16)):f(``,!0)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`value`]))]))]),_:1},8,[`class`])]),E(`div`,kn,[E(`span`,An,M(t.$t(`views.plugin.readme`)),1),O(l,{class:`cui-card !h-auto lg:!h-full`},{content:h(()=>[E(`h3`,jn,M(t.$t(`views.plugin.readme`)),1),k(fe)?(b(),A(`div`,Mn,[O(c,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})])):(b(),A(`div`,{key:1,class:`markdown-body`,innerHTML:k(He).render(k(de)||t.$t(`views.plugin.no_readme`))},null,8,Nn))]),_:1})]),E(`div`,Pn,[E(`span`,Fn,M(t.$t(`views.plugin.changelog`)),1),O(l,{class:`cui-card !h-auto lg:!h-full`},{content:h(()=>[E(`h3`,In,M(t.$t(`views.plugin.changelog`)),1),k(ve)?(b(),A(`div`,Ln,[O(c,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})])):(b(),A(`div`,{key:1,class:`markdown-body`,innerHTML:k(He).render(k(ge)||t.$t(`views.plugin.no_changelog`))},null,8,Rn))]),_:1})])],2)])}}}),[[`__scopeId`,`data-v-869e4fd8`]]);export{zn as default};
|
|
1
|
+
import{Hn as e,Mn as t,Nn as n,On as r,Ut as i,Vn as a,Wt as o,ct as s,fi as c,jn as l,tt as u}from"./vendor-cameraui-D9I8uPRL.js";import{C as ee,O as te,f as d,l as ne}from"./api-CPonLnGH.js";import{$t as f,Cn as p,Dn as re,Gt as m,Hn as h,Kt as g,Ln as _,Qn as v,Qt as y,Tn as b,Un as x,Wt as S,Xn as C,Xt as w,Yn as T,Zt as E,_n as D,an as O,cr as k,en as A,er as j,fr as M,gn as N,in as P,jn as F,kn as I,lr as L,nn as R,or as z,rr as B,sn as V,zn as H}from"./vendor-zxCOTbSj.js";import{c as ie,f as U}from"./vendor-core-DSNqTlQH.js";import{t as W}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{t as ae}from"./useSharedComposables-B5-Uy9Br.js";import{B as G,G as K,H as q,J as oe,K as se,V as ce,W as le,a as J,i as ue,j as de,u as fe}from"./vendor-primevue-CWF_imvX.js";import{t as pe}from"./cctv-BLn_0bJ6.js";import{t as me}from"./bell-DAJo7K-Y.js";import{t as he}from"./cog-CWyAfGhY.js";import{t as ge}from"./hasPermission-C2RWjXuT.js";import{n as _e}from"./CuiMenu-BXurM_rM.js";import{t as ve}from"./CuiBBoxPlayground-BJxrh8Hk.js";import{t as ye}from"./cameras-B4_XIEvq.js";import{n as be}from"./useCuiCameraDrawer-PokkyjqH.js";import{t as xe}from"./useCuiDialog-BEerzsp3.js";import{t as Se}from"./CuiTopbarSlot-D8e3DC_V.js";import{F as Ce,G as Y,H as X,K as we,U as Te,W as Ee,a as De}from"./types-B39ppbYi.js";import{t as Oe}from"./CuiSchema-DPegn_DL.js";import{t as ke}from"./plugins-VMgnZZzG.js";import{t as Ae}from"./PluginSchema-JKttwvkD.js";import{t as je}from"./plus-Dxy9-axc.js";import{a as Me,i as Ne,n as Pe,o as Fe,r as Ie,t as Le}from"./vendor-markdown-BrmS8cUD.js";import{t as Re}from"./close-circle-J1rQOUEG.js";import{t as ze}from"./back-filled-2dVfzfd3.js";import{t as Be}from"./CuiPluginCard-o4XyKYKV.js";var Z={class:`text-base font-semibold border-b-[1px] border-color mb-3 pb-3`},Q={class:`flex flex-col gap-4`},$={class:`flex flex-col field-gap`},Ve={class:`cui-label`},He={key:0,class:`text-red-500 text-sm`},Ue={class:`flex flex-col field-gap`},We={class:`cui-label`},Ge={class:`flex flex-col field-gap`},Ke={class:`cui-label`},qe={class:`flex flex-col field-gap`},Je={class:`cui-label`},Ye={class:`flex flex-col field-gap`},Xe={class:`cui-label`},Ze={class:`flex flex-col field-gap`},Qe={class:`cui-label`},$e={class:`flex flex-col field-gap`},et={class:`cui-label`},tt={class:`flex flex-col field-gap`},nt={class:`cui-label`},rt={class:`mt-8`},it={class:`text-base font-semibold border-b-[1px] border-color mb-3 pb-3`},at={key:0,class:`flex items-center justify-center w-full py-4`},ot={key:1,class:`flex items-center justify-center text-sm text-muted py-4 text-center`},st={key:2,class:`flex flex-col field-gap`},ct={class:`text-xs text-muted`},lt={key:0,class:`mt-8`},ut={class:`text-base font-semibold border-b-[1px] border-color mb-3 pb-3`},dt=V({__name:`CuiNotificationInterface`,props:{pluginName:{}},setup(t){let n=t,o=te(),{t:s}=c(),l=ee(),{user:ne}=U(d()),{pluginName:p}=z(n),{plugin:m}=i(p),_=w(()=>Object.values(r).map(e=>({label:s(`components.notification_interface.severity_${e}`),value:e}))),y=v({title:`Test notification`,subtitle:``,body:`This is a test notification from camera.ui`,severity:r.Info,tag:``,imageUrl:``,deepLink:``}),x=j([]),S=j(!1),C=j(!1),D=B([]),N=j(!1),P=j([]),F=B(),I=j(!1),L=w(()=>D.value.map(e=>({id:e.id,label:e.name})));async function R(){if(!(!m.value||!ne.value?._id)){N.value=!0;try{let e=ge(void 0,`admin`)?[]:[ne.value._id];D.value=await m.value.getDevices?.(e)??[]}catch(e){o.error(`Failed to load notifier devices:`,e),D.value=[]}finally{N.value=!1}}}async function V(){if(m.value){I.value=!0;try{F.value=await m.value.notificationSettings?.()}catch(e){o.error(`Failed to load notification settings schema:`,e),F.value=void 0}finally{I.value=!1}}}function ie(){x.value.push({key:``,value:``})}function W(e){x.value.splice(e,1)}function ae(){let e={};for(let t of x.value)t.key.trim()&&(e[t.key.trim()]=t.value);return{title:y.title.trim(),subtitle:y.subtitle.trim()||void 0,body:y.body.trim()||void 0,severity:y.severity,tag:y.tag.trim()||void 0,imageUrl:y.imageUrl.trim()||void 0,deepLink:y.deepLink.trim()||void 0,data:Object.keys(e).length?e:void 0}}async function G(){let e=m.value;if(!(!e||C.value)){if(!y.title.trim()){S.value=!0;return}C.value=!0;try{let t=ae(),n=P.value.length?P.value:D.value.map(e=>e.id);await e.sendNotification?.(n,t),l.add({severity:`success`,detail:s(`components.notification_interface.sent`),life:3e3})}catch(e){l.add({severity:`error`,detail:e,life:3e3})}finally{C.value=!1}}}return H(m,e=>{e&&(R(),V())},{immediate:!0}),(t,n)=>{let r=u,i=ue,o=de,s=Re,c=e,l=je,ee=a,te=fe,d=Oe;return b(),A(`div`,null,[E(`h3`,Z,M(t.$t(`components.notification_interface.template`)),1),E(`div`,Q,[E(`div`,$,[E(`label`,Ve,M(t.$t(`components.notification_interface.title`)),1),O(r,{modelValue:k(y).title,"onUpdate:modelValue":[n[0]||=e=>k(y).title=e,n[1]||=e=>S.value=!1],placeholder:t.$t(`components.notification_interface.title`),invalid:k(S),class:`w-full`},null,8,[`modelValue`,`placeholder`,`invalid`]),k(S)?(b(),A(`p`,He,M(t.$t(`components.notification_interface.title_required`)),1)):f(``,!0)]),E(`div`,Ue,[E(`label`,We,M(t.$t(`components.notification_interface.subtitle`)),1),O(r,{modelValue:k(y).subtitle,"onUpdate:modelValue":n[2]||=e=>k(y).subtitle=e,placeholder:t.$t(`components.notification_interface.subtitle`),class:`w-full`},null,8,[`modelValue`,`placeholder`])]),E(`div`,Ge,[E(`label`,Ke,M(t.$t(`components.notification_interface.body`)),1),O(i,{modelValue:k(y).body,"onUpdate:modelValue":n[3]||=e=>k(y).body=e,placeholder:t.$t(`components.notification_interface.body`),rows:`3`,class:`w-full`},null,8,[`modelValue`,`placeholder`])]),E(`div`,qe,[E(`label`,Je,M(t.$t(`components.notification_interface.severity`)),1),O(o,{modelValue:k(y).severity,"onUpdate:modelValue":n[4]||=e=>k(y).severity=e,options:k(_),"option-label":`label`,"option-value":`value`,class:`w-full`},null,8,[`modelValue`,`options`])]),E(`div`,Ye,[E(`label`,Xe,M(t.$t(`components.notification_interface.tag`)),1),O(r,{modelValue:k(y).tag,"onUpdate:modelValue":n[5]||=e=>k(y).tag=e,placeholder:`motion:cam-1`,class:`w-full`},null,8,[`modelValue`])]),E(`div`,Ze,[E(`label`,Qe,M(t.$t(`components.notification_interface.image_url`)),1),O(r,{modelValue:k(y).imageUrl,"onUpdate:modelValue":n[6]||=e=>k(y).imageUrl=e,placeholder:`https://…`,class:`w-full`},null,8,[`modelValue`])]),E(`div`,$e,[E(`label`,et,M(t.$t(`components.notification_interface.deep_link`)),1),O(r,{modelValue:k(y).deepLink,"onUpdate:modelValue":n[7]||=e=>k(y).deepLink=e,placeholder:`/cameras/cam-1`,class:`w-full`},null,8,[`modelValue`])]),E(`div`,tt,[E(`label`,nt,M(t.$t(`components.notification_interface.data`)),1),(b(!0),A(g,null,re(k(x),(e,n)=>(b(),A(`div`,{key:n,class:`flex gap-2 items-center`},[O(r,{modelValue:e.key,"onUpdate:modelValue":t=>e.key=t,placeholder:t.$t(`components.notification_interface.data_key`),class:`flex-1 min-w-0`},null,8,[`modelValue`,`onUpdate:modelValue`,`placeholder`]),O(r,{modelValue:e.value,"onUpdate:modelValue":t=>e.value=t,placeholder:t.$t(`components.notification_interface.data_value`),class:`flex-1 min-w-0`},null,8,[`modelValue`,`onUpdate:modelValue`,`placeholder`]),O(c,{text:``,rounded:``,severity:`danger`,class:`cui-icon-md shrink-0`,onClick:e=>W(n)},{icon:h(()=>[O(s,{width:`100%`,height:`100%`})]),_:1},8,[`onClick`])]))),128)),O(c,{severity:`secondary`,outlined:``,fluid:``,class:`cui-button-medium`,label:t.$t(`components.notification_interface.add_data`),onClick:ie},{icon:h(()=>[O(l,{class:`w-4 h-4`})]),_:1},8,[`label`])])]),E(`div`,rt,[E(`h3`,it,M(t.$t(`components.notification_interface.targets`)),1),k(N)?(b(),A(`div`,at,[O(ee,{class:`w-[24px] h-[24px] m-0`,"stroke-width":`5`})])):k(L).length?(b(),A(`div`,st,[E(`span`,ct,M(t.$t(`components.notification_interface.targets_hint`)),1),O(te,{modelValue:k(P),"onUpdate:modelValue":n[8]||=e=>T(P)?P.value=e:null,options:k(L),"option-label":`label`,"option-value":`id`,placeholder:t.$t(`components.notification_interface.all_devices`),display:`chip`,filter:``,class:`w-full`},null,8,[`modelValue`,`options`,`placeholder`])])):(b(),A(`div`,ot,M(t.$t(`components.notification_interface.no_devices`)),1))]),k(F)?.length?(b(),A(`div`,lt,[E(`h3`,ut,M(t.$t(`components.notification_interface.settings`)),1),O(d,{"schema-form":{schema:k(F),config:{}},loading:k(I)},null,8,[`schema-form`,`loading`])])):f(``,!0),O(c,{fluid:``,class:`mt-8 cui-button-medium`,severity:`success`,loading:k(C),disabled:!k(m)||k(C),label:t.$t(`components.notification_interface.send_test`),onClick:G},null,8,[`loading`,`disabled`,`label`])])}}}),ft=.15,pt=.38,mt={class:`mb-4 rounded-xl overflow-hidden`},ht=[`src`],gt={class:`text-sm text-muted mb-4`},_t={key:0,class:`ml-1`},vt={class:`flex gap-2 mb-4`},yt={key:0,class:`flex flex-col gap-2`},bt={class:`text-sm truncate flex-1 mr-3`},xt={class:`flex items-center gap-2 shrink-0`},St=V({__name:`PluginClipInterface`,props:{src:{},response:{},onTextSearch:{type:Function}},setup(t,{expose:n}){let r=t,i=te(),a=j(``),o=j(!1),s=j([]);function c(e){return Math.max(0,Math.min(1,(e-ft)/(pt-ft)))}async function l(){let e=a.value.trim();if(!(!e||o.value)){o.value=!0;try{let{score:t}=await r.onTextSearch(e);s.value.unshift({query:e,rawScore:t,displayScore:c(t)}),a.value=``}catch(e){i.error(`CLIP text search failed:`,e)}finally{o.value=!1}}}return n({}),(n,r)=>{let i=u,c=e,ee=J;return b(),A(`div`,null,[E(`div`,mt,[E(`img`,{src:t.src,alt:`CLIP test image`,class:`w-full object-contain`},null,8,ht)]),E(`div`,gt,[P(M(t.response.embeddings.length)+` embedding(s), `+M(t.response.embeddings[0]?.embedding?.length??0)+`-dim `,1),t.response.embeddingModel?(b(),A(`span`,_t,`(`+M(t.response.embeddingModel)+`)`,1)):f(``,!0)]),E(`div`,vt,[O(i,{modelValue:k(a),"onUpdate:modelValue":r[0]||=e=>T(a)?a.value=e:null,class:`flex-1`,placeholder:n.$t(`components.clip_interface.enter_query`),onKeyup:S(l,[`enter`])},null,8,[`modelValue`,`placeholder`]),O(c,{class:`cui-button-medium`,label:n.$t(`components.clip_interface.search`),loading:k(o),onClick:l},null,8,[`label`,`loading`])]),k(s).length?(b(),A(`div`,yt,[(b(!0),A(g,null,re(k(s),(e,t)=>(b(),A(`div`,{key:t,class:`flex items-center justify-between p-3 rounded-lg content-background`},[E(`span`,bt,M(e.query),1),E(`div`,xt,[E(`div`,{class:L([`text-sm font-medium`,e.displayScore>=.5?`text-green-500`:e.displayScore>=.25?`text-yellow-500`:`text-red-400`])},M((e.displayScore*100).toFixed(0))+`% `,3),O(ee,{value:e.displayScore>=.5?`Match`:e.displayScore>=.25?`Possible`:`No match`,severity:e.displayScore>=.5?`success`:e.displayScore>=.25?`warn`:`danger`,class:`text-xs`},null,8,[`value`,`severity`])])]))),128))])):f(``,!0)])}}}),Ct=V({__name:`PluginMotionInterface`,props:{response:{}},setup(e){let{response:t}=z(e),n=_(`videoPlayerRef`);return p(()=>{if(n.value){let e=new Blob([t.value.videoData],{type:`video/mp4`});n.value.src=URL.createObjectURL(e),n.value.load()}}),(e,t)=>(b(),A(`div`,null,[E(`video`,{ref_key:`videoPlayerRef`,ref:n,controls:``,class:`w-full`},`Your browser does not support the video tag.`,512)]))}}),wt={class:`mb-5 h-min`},Tt=[`src`],Et=V({__name:`PluginObjectInterface`,props:{src:{},response:{}},setup(e){let{response:t,src:n}=z(e),r=w(()=>t.value.detections);return(e,t)=>{let i=ve;return b(),A(`div`,wt,[O(i,{detections:k(r)},null,8,[`detections`]),E(`img`,{src:k(n),alt:`Preview`,class:`w-full`},null,8,Tt)])}}}),Dt={key:0,class:`w-full`},Ot={class:`flex flex-col justify-center items-center mb-5`},kt={for:`restoreInput`,class:`cursor-pointer text-center text-sm`},At=[`accept`],jt={key:0,class:`text-red-500 text-sm`},Mt={key:1,class:`w-full flex flex-col items-center justify-center`},Nt={key:0,class:`relative mb-4`},Pt=[`src`],Ft={key:1,class:`relative mb-4 w-full`},It={key:2,class:`relative mb-4 w-full`},Lt=[`src`,`type`],Rt={class:`flex items-center justify-center`},zt={class:`mx-2`},Bt={class:`text-muted`},Vt={class:`flex items-center justify-center mt-2 text-xs text-muted`},Ht={class:`mt-10`},Ut={class:`text-base font-semibold border-b-[1px] border-color mb-3 pb-3`},Wt={key:0,class:`flex items-center justify-center text-sm text-muted mt-5`},Gt=V({__name:`CuiDetectionInterface`,props:{type:{},pluginName:{}},emits:[`update:file`,`update:metadata`],setup(t,{emit:n}){let r=t,a=n,o=te(),{t:s}=c(),l=ee(),u=xe(),{type:d,pluginName:ne}=z(r),{plugin:p,isLoading:re}=i(ne),g=_(`fileInputRef`),v=_(`videoPlayerRef`),x=_(`audioPlayerRef`),S=B([]),C=j(!1),T=j(!1),N=j(!1),F=j(!1),I=j(``),R=j(!1),V=j(),ie=j(!0),U=B(),W=j(!1),ae=w(()=>W.value||re.value||R.value),G=w(()=>{switch(d.value){case`objectDetection`:case`faceDetection`:case`licensePlateDetection`:case`classifierDetection`:case`clipDetection`:return`image`;case`motionDetection`:return`video`;case`audioDetection`:return`audio`;default:return`image`}}),K=w(()=>{switch(G.value){case`image`:return Ee;case`video`:return Te;case`audio`:return X;default:return[]}}),q=w(()=>{switch(G.value){case`image`:return Ce;case`video`:return we;case`audio`:return Y;default:return 0}}),oe=w(()=>K.value.join(`,`));async function se(){if(p.value){W.value=!0;try{let e;switch(d.value){case`motionDetection`:e=await p.value.motionDetectionSettings?.();break;case`objectDetection`:e=await p.value.objectDetectionSettings?.();break;case`audioDetection`:e=await p.value.audioDetectionSettings?.();break;case`faceDetection`:e=await p.value.faceDetectionSettings?.();break;case`licensePlateDetection`:e=await p.value.licensePlateDetectionSettings?.();break;case`classifierDetection`:e=await p.value.classifierDetectionSettings?.();break;case`clipDetection`:e=await p.value.clipSettings?.();break}U.value=e}catch(e){o.error(`Failed to load interface schema:`,e),U.value=void 0}finally{W.value=!1}}}function ce(e){let t=S.value.findIndex(t=>t.name===e);t>-1&&(S.value.splice(t,1),ue(),I.value=``,G.value===`video`&&v.value&&(v.value.src=``),V.value=void 0,a(`update:file`,null),a(`update:metadata`,null))}function le(e){if(C.value=!1,T.value=!1,F.value=!1,S.value=[],e.dataTransfer)if(e.dataTransfer.files.length>1)T.value=!0;else{let t=e.dataTransfer.files[0];(K.value.length===0||K.value.includes(t.type))&&t.size<=q.value?(S.value.push(t),D(()=>{de(t)})):t.size>q.value?F.value=!0:T.value=!0}}function J(e){T.value=!1,F.value=!1,S.value=[];let t=e.target;if(t&&t.files){if(t.files?.length>1)T.value=!0;else if(t.files.length===1){let e=t.files[0],n=K.value.length===0||K.value.includes(e.type);e.size<=q.value&&n?(S.value.push(e),D(()=>{de(e)})):e.size>q.value?F.value=!0:T.value=!0}}}function ue(){g.value&&(g.value.value=``)}function de(e){R.value=!0;let t=URL.createObjectURL(e);switch(G.value){case`image`:fe(e,t);break;case`video`:pe(e,t);break;case`audio`:me(e,t);break}}function fe(e,t){let n=new Image;n.src=t,n.onload=()=>{I.value=n.src;let t={width:n.width,height:n.height};V.value=t,a(`update:metadata`,t),a(`update:file`,e),R.value=!1}}function pe(e,t){v.value&&(v.value.src=t,v.value.load(),v.value.onloadeddata=()=>{a(`update:file`,e),R.value=!1})}function me(e,t){I.value=t;let n=new Audio;n.src=t,n.onloadedmetadata=()=>{let t={mimeType:e.type};V.value=t,a(`update:metadata`,t),a(`update:file`,e),R.value=!1}}function he(e){return e<1024?e+` bytes`:e<1048576?(e/1024).toFixed(1)+` KB`:(e/1048576).toFixed(1)+` MB`}function ge(e,t){let n=0,r=0,i=0;for(let a=0;a<e.length;a++)n+=e[a]*t[a],r+=e[a]*e[a],i+=t[a]*t[a];return r&&i?n/(Math.sqrt(r)*Math.sqrt(i)):0}async function _e(e){if(!S.value.length){N.value=!0;return}if(!p.value){o.error(`Plugin not connected`);return}R.value=!0;try{let t=await S.value[0].arrayBuffer();if(d.value===`audioDetection`){let n=await p.value.testAudioDetection?.(new Uint8Array(t),V.value,e);if(!n){o.warn(`No audio detection interface available`);return}if(n.detected&&n.detections?.length){let e=n.detections.map(e=>`${e.label} (${Math.round(e.confidence*100)}%)`).join(`, `),t=n.decibels==null?``:` | ${n.decibels.toFixed(1)} dBFS`;l.add({severity:`success`,detail:`${e}${t}`,life:3e3})}else l.add({severity:`info`,detail:s(`components.detection_interface.audio_not_detected`),life:3e3})}else if(d.value===`motionDetection`){let n=await p.value.testMotionDetection?.(new Uint8Array(t),e);if(!n){o.warn(`No motion detection interface available`);return}u.openComponentDialog(Ct,{data:{title:s(`components.dialog.title.result`),hideConfirmButton:!0,contentProps:{response:n}}})}else if(d.value===`faceDetection`){let n=await p.value.testFaceDetection?.(new Uint8Array(t),V.value,e);if(!n){o.warn(`No face detection interface available`);return}u.openComponentDialog(Et,{data:{title:s(`components.dialog.title.result`),hideConfirmButton:!0,contentProps:{src:I,response:n}}})}else if(d.value===`licensePlateDetection`){let n=await p.value.testLicensePlateDetection?.(new Uint8Array(t),V.value,e);if(!n){o.warn(`No license plate detection interface available`);return}u.openComponentDialog(Et,{data:{title:s(`components.dialog.title.result`),hideConfirmButton:!0,contentProps:{src:I,response:n}}})}else if(d.value===`classifierDetection`){let n=await p.value.testClassifierDetection?.(new Uint8Array(t),V.value,e);if(!n){o.warn(`No classifier detection interface available`);return}u.openComponentDialog(Et,{data:{title:s(`components.dialog.title.result`),hideConfirmButton:!0,contentProps:{src:I,response:n}}})}else if(d.value===`clipDetection`){let n=await p.value.testClipEmbedding?.(new Uint8Array(t),V.value,e);if(!n){o.warn(`No CLIP detection interface available`);return}if(!n.embeddings?.length){l.add({severity:`info`,detail:s(`components.detection_interface.no_detections`),life:3e3});return}let r=n.embeddings[0].embedding;u.openComponentDialog(St,{data:{title:s(`components.dialog.title.result`),hideConfirmButton:!0,contentProps:{src:I,response:n,onTextSearch:async e=>{let t=await p.value.getTextEmbedding(e);return t?.embedding?.length?{score:ge(r,t.embedding)}:{score:0}}}}})}else{let n=await p.value.testObjectDetection?.(new Uint8Array(t),V.value,e);if(!n){o.warn(`No object detection interface available`);return}u.openComponentDialog(Et,{data:{title:s(`components.dialog.title.result`),hideConfirmButton:!0,contentProps:{src:I,response:n}}})}}catch(e){l.add({severity:`error`,detail:e,life:3e3})}finally{R.value=!1}}return H(p,e=>{e&&se()},{immediate:!0}),H(S,e=>{e.length>0?(N.value=!1,ie.value=!1):(I.value=``,V.value=void 0,ie.value=!0)},{immediate:!0,deep:!0}),(t,n)=>{let r=Re,i=e,a=Oe;return b(),A(`div`,null,[E(`div`,{class:`file-upload-box`,onDrop:n[1]||=m(e=>le(e),[`prevent`]),onDragover:n[2]||=m(e=>C.value=!0,[`prevent`]),onDragenter:n[3]||=m(e=>C.value=!0,[`prevent`]),onDragleave:n[4]||=m(e=>C.value=!1,[`prevent`])},[k(S).length?(b(),A(`div`,Mt,[k(G)===`image`?(b(),A(`div`,Nt,[E(`img`,{src:k(I),alt:`Preview`,class:`w-full`},null,8,Pt)])):k(G)===`video`?(b(),A(`div`,Ft,[E(`video`,{ref_key:`videoPlayerRef`,ref:v,controls:``,class:`w-full`},`Your browser does not support the video tag.`,512)])):k(G)===`audio`?(b(),A(`div`,It,[E(`audio`,{ref_key:`audioPlayerRef`,ref:x,controls:``,class:`w-full`},[E(`source`,{src:k(I),type:k(S)[0].type},null,8,Lt),n[5]||=P(` Your browser does not support the audio element. `,-1)],512)])):f(``,!0),E(`div`,Rt,[O(i,{text:``,rounded:``,severity:`danger`,class:`cui-icon-md shrink-0`,onClick:n[0]||=m(e=>ce(k(S)[0].name),[`stop`])},{icon:h(()=>[O(r,{width:`100%`,height:`100%`})]),_:1}),E(`b`,zt,M(k(S)[0].name),1),E(`span`,Bt,`(`+M(he(k(S)[0].size))+`)`,1)])])):(b(),A(`div`,Dt,[E(`div`,Ot,[E(`label`,kt,M(t.$t(`components.detection_interface.drop_or_select_${k(G)}_to_detect${k(G)===`image`?`_objects`:k(G)===`video`?`_motion`:``}`)),1),E(`input`,{id:`restoreInput`,ref_key:`fileInputRef`,ref:g,type:`file`,class:`hidden`,accept:k(oe),onChange:J},null,40,At),k(T)?(b(),A(`p`,jt,M(t.$t(`components.detection_interface.only_one_${k(G)}_allowed`)),1)):f(``,!0),k(N)?(b(),A(`p`,{key:1,class:L([`text-red-500 text-sm`,{"mt-2":k(T)}])},M(t.$t(`components.detection_interface.${k(G)}_required`)),3)):f(``,!0),k(F)?(b(),A(`p`,{key:2,class:L([`text-red-500 text-sm`,{"mt-2":k(T)||k(N)}])},M(t.$t(`components.detection_interface.file_size_error`)),3)):f(``,!0)])]))],32),E(`div`,Vt,[E(`span`,null,`(`+M(k(q)/1024/1024)+`MB, `+M(k(K).join(`, `))+`)`,1)]),E(`div`,Ht,[E(`h3`,Ut,M(t.$t(`components.detection_interface.interface_config`)),1),k(U)?.length?(b(),y(a,{key:1,"schema-form":{schema:k(U),config:{}},loading:k(ae),"save-button-label":t.$t(`components.detection_interface.detect`),"disable-button":k(ie),"show-button":``,onOnFormSubmit:_e},null,8,[`schema-form`,`loading`,`save-button-label`,`disable-button`])):(b(),A(`div`,Wt,M(t.$t(`components.detection_interface.no_interface_config`)),1))])])}}}),Kt={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function qt(e,t){return b(),A(`svg`,Kt,[...t[0]||=[E(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M2 10v3m4-7v11m4-14v18m4-13v7m4-10v13m4-8v3`},null,-1)]])}var Jt=C({name:`lucide-audio-lines`,render:qt}),Yt={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Xt(e,t){return b(),A(`svg`,Yt,[...t[0]||=[E(`path`,{fill:`currentColor`,d:`M2 7V4q0-.825.588-1.412T4 2h3v2H4v3zm5 15H4q-.825 0-1.412-.587T2 20v-3h2v3h3zm10 0v-2h3v-3h2v3q0 .825-.587 1.413T20 22zm3-15V4h-3V2h3q.825 0 1.413.588T22 4v3zm-7.913 1.913Q11.5 8.325 11.5 7.5t.588-1.412T13.5 5.5t1.413.588T15.5 7.5t-.587 1.413T13.5 9.5t-1.412-.587M12.8 18h-4l1-5.1l-1.8.7V17H6v-4.7l3.95-1.7q.875-.375 1.288-.487T12 10q.525 0 .975.275T13.7 11l1 1.6q.65 1.05 1.763 1.725T19 15v2q-1.65 0-3.088-.687T13.5 14.5z`},null,-1)]])}var Zt=C({name:`material-symbols-detection-and-zone`,render:Xt}),Qt={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function $t(e,t){return b(),A(`svg`,Qt,[...t[0]||=[E(`path`,{fill:`currentColor`,d:`M8.113 13.888Q7.75 13.525 7.75 13t.363-.888T9 11.75t.888.363t.362.887t-.363.888T9 14.25t-.888-.363m6 0q-.362-.362-.362-.887t.363-.888t.887-.362t.888.363t.362.887t-.363.888t-.887.362t-.888-.363M12 20q3.35 0 5.675-2.325T20 12q0-.6-.075-1.162T19.65 9.75q-.525.125-1.05.188T17.5 10q-2.275 0-4.3-.975T9.75 6.3q-.8 1.95-2.287 3.388T4 11.85V12q0 3.35 2.325 5.675T12 20m0 2q-2.075 0-3.9-.787t-3.175-2.138T2.788 15.9T2 12t.788-3.9t2.137-3.175T8.1 2.788T12 2t3.9.788t3.175 2.137T21.213 8.1T22 12t-.788 3.9t-2.137 3.175t-3.175 2.138T12 22`},null,-1)]])}var en=C({name:`material-symbols-face`,render:$t}),tn={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function nn(e,t){return b(),A(`svg`,tn,[...t[0]||=[E(`path`,{fill:`currentColor`,d:`M8 17q-.425 0-.712-.288T7 16t.288-.712T8 15h5q-.35-.425-.562-.925T12.1 13H10q-.425 0-.712-.288T9 12t.288-.712T10 11h2.1q.125-.575.338-1.075T13 9H4q-.425 0-.712-.288T3 8t.288-.712T4 7h13q2.075 0 3.538 1.463T22 12t-1.463 3.538T17 17zm9-2q1.25 0 2.125-.875T20 12t-.875-2.125T17 9t-2.125.875T14 12t.875 2.125T17 15M3 13q-.425 0-.712-.288T2 12t.288-.712T3 11h4q.425 0 .713.288T8 12t-.288.713T7 13zm1 4q-.425 0-.712-.288T3 16t.288-.712T4 15h1q.425 0 .713.288T6 16t-.288.713T5 17z`},null,-1)]])}var rn=C({name:`material-symbols-motion-blur-rounded`,render:nn}),an={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function on(e,t){return b(),A(`svg`,an,[...t[0]||=[E(`g`,{fill:`none`,"fill-rule":`evenodd`},[E(`path`,{d:`m12.594 23.258l-.012.002l-.071.035l-.02.004l-.014-.004l-.071-.036q-.016-.004-.024.006l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.016-.018m.264-.113l-.014.002l-.184.093l-.01.01l-.003.011l.018.43l.005.012l.008.008l.201.092q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.003-.011l.018-.43l-.003-.012l-.01-.01z`}),E(`path`,{fill:`currentColor`,d:`M15.586 2.757a2 2 0 0 1 2.828 0l2.829 2.829a2 2 0 0 1 0 2.828l-2.829 2.829a2 2 0 0 1-2.828 0l-2.829-2.829a2 2 0 0 1 0-2.828zM9 3a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2zm12 12a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h4a2 2 0 0 0 2-2zM9 13a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4a2 2 0 0 1 2-2z`})],-1)]])}var sn=C({name:`mingcute-classify-2-fill`,render:on}),cn={viewBox:`0 0 256 256`,width:`1.2em`,height:`1.2em`};function ln(e,t){return b(),A(`svg`,cn,[...t[0]||=[E(`path`,{fill:`currentColor`,d:`M200 156c0 6.5-7.33 12-16 12s-16-5.5-16-12s7.33-12 16-12s16 5.5 16 12m32-100v144a16 16 0 0 1-16 16H40a16 16 0 0 1-16-16V56a16 16 0 0 1 16-16h176a16 16 0 0 1 16 16m-88.63 116.88l-44-104a8 8 0 0 0-14.74 0l-44 104a8 8 0 0 0 14.74 6.24L66.84 152h50.32l11.47 27.12a8 8 0 0 0 14.74-6.24M216 124c0-15.44-14.36-28-32-28a34.86 34.86 0 0 0-20.78 6.68a8 8 0 0 0 9.56 12.83A18.84 18.84 0 0 1 184 112c8.56 0 15.8 5.36 16 11.76v8a35.24 35.24 0 0 0-16-3.76c-17.64 0-32 12.56-32 28s14.36 28 32 28a35.1 35.1 0 0 0 16.93-4.26A8 8 0 0 0 216 176ZM73.61 136h36.78L92 92.53Z`},null,-1)]])}var un=C({name:`ph-text-aa-fill`,render:ln}),dn={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function fn(e,t){return b(),A(`svg`,dn,[...t[0]||=[E(`path`,{fill:`currentColor`,d:`M12.75 3a.75.75 0 0 0-1.5 0v2a.75.75 0 0 0 1.5 0z`},null,-1),E(`path`,{fill:`currentColor`,"fill-rule":`evenodd`,d:`M22.75 12.057c0 1.837 0 3.293-.153 4.432c-.158 1.172-.49 2.121-1.238 2.87c-.749.748-1.698 1.08-2.87 1.238c-1.14.153-2.595.153-4.433.153H9.944c-1.837 0-3.293 0-4.432-.153c-1.172-.158-2.121-.49-2.87-1.238c-.748-.749-1.08-1.698-1.238-2.87c-.153-1.14-.153-2.595-.153-4.433v-.926q.001-.575.008-1.096c.014-.975.05-1.81.145-2.523c.158-1.172.49-2.121 1.238-2.87c.749-.748 1.698-1.08 2.87-1.238c.716-.096 1.558-.132 2.541-.145l.697-.005a1 1 0 0 1 1.001.999V5a2.25 2.25 0 0 0 4.5 0v-.75c0-.552.448-1 1-.998c1.29.006 2.359.033 3.239.151c1.172.158 2.121.49 2.87 1.238c.748.749 1.08 1.698 1.238 2.87c.153 1.14.153 2.595.153 4.433zM8 9.75a.75.75 0 0 0 0 1.5h8a.75.75 0 0 0 0-1.5zm0 3.5a.75.75 0 0 0 0 1.5h5.5a.75.75 0 0 0 0-1.5z`,"clip-rule":`evenodd`},null,-1)]])}var pn=C({name:`solar-plate-bold`,render:fn}),mn={class:`font-semibold text-xl truncate`},hn={class:`lg:col-span-2 order-1 !h-[220px]`},gn={class:`flex w-full h-full items-center justify-center`},_n={class:`lg:col-span-1 lg:row-span-3 order-2`},vn={class:`lg:!hidden card-title`},yn={key:0,class:`w-full h-full flex items-center justify-center`},bn={key:1},xn={class:`hidden lg:block text-base font-semibold border-b-[1px] border-color mb-3 pb-3`},Sn={key:0,class:`flex items-center justify-center w-full h-full text-muted text-sm`},Cn=[`onClick`],wn={key:0,class:`w-full h-full`},Tn={key:0,class:`flex flex-col items-center justify-center w-full h-full text-muted text-sm gap-1 text-center`},En={key:2,class:`flex items-center justify-center w-full h-full text-muted text-sm`},Dn={key:9,class:`w-full h-full`},On={key:0,class:`flex items-center justify-center w-full h-full text-muted text-sm`},kn={class:`lg:col-span-2 order-3`},An={class:`lg:!hidden card-title`},jn={class:`hidden lg:block text-base font-semibold border-b-[1px] border-color mb-3 pb-3`},Mn={key:0,class:`flex w-full h-full items-center justify-center`},Nn=[`innerHTML`],Pn={class:`lg:col-span-2 order-4`},Fn={class:`lg:!hidden card-title`},In={class:`hidden lg:block text-base font-semibold border-b-[1px] border-color mb-3 pb-3`},Ln={key:0,class:`flex w-full h-full items-center justify-center`},Rn=[`innerHTML`],zn=W(V({__name:`Plugin`,setup(r){let u=new ye,d=new ke,p=te(),m=be(),_=ie(),v=ee(),S=xe(),{lgBreakpoint:C}=ae(),{t:D}=c(),z=j(_.params.scope),B=j(_.params.pluginname),V=w(()=>z.value?`${z.value}/${B.value}`:B.value),{contract:U,error:W}=i(V);d.toggleQueryActivator(`getPluginContractQuery`,!1);let{data:J,isBusy:ue}=d.getPluginQuery(V),{data:de,isBusy:fe}=d.getPluginReadmeQuery(V),{data:ge,isBusy:ve}=d.getPluginChangelogQuery(V),{data:Ce}=d.getPluginContractQuery(V),Y=o(V),X=Y.config,we=Y.isLoading,{mutate:Te,isPending:Ee}=u.addCameraExtensionQuery(),{mutate:je,isPending:Re}=u.removeCameraExtensionQuery(),Z=j(`settings`),Q=j([]),$=j([]),Ve=w(()=>!!U.value&&l(U.value,n.NVR)),He=Le(`commonmark`,{highlight(e,t){if(t&&Fe.getLanguage(t))try{return`<pre><code class="hljs">`+Fe.highlight(e,{language:t,ignoreIllegals:!0}).value+`</code></pre>`}catch{}return`<pre><code class="hljs">`+He.utils.escapeHtml(e)+`</code></pre>`}});Fe.registerLanguage(`typescript`,Ie),Fe.registerLanguage(`yaml`,Pe),Fe.registerLanguage(`json`,Me),Fe.registerLanguage(`python`,Ne);function Ue(e,t){return e.pluginInfo?.name===t}async function We(e){try{await Y.setValue(e.key,void 0),v.add({severity:`success`,detail:D(`components.toast.config_updated`),life:3e3})}catch(e){v.add({severity:`error`,detail:e,life:3e3})}}async function Ge(e){try{let t=await Y.submitValue(e.key,e.payload);if(t?.toast){let e=ne(t.toast.type);v.add({severity:e,detail:t.toast.message,life:3e3})}t?.schema?.length&&S.openComponentDialog(Ae,{data:{title:D(`components.dialog.title.config`),hideConfirmButton:!0,contentProps:{schemaConfig:{schema:t.schema,config:e.payload},pluginName:V.value,buttonKey:e.key}}})}catch(e){v.add({severity:`error`,detail:e,life:3e3})}}async function Ke(e){if(X.value?.schema.length)try{let t=De(X.value.schema,e);await Y.setConfig(t),v.add({severity:`success`,detail:D(`components.toast.config_updated`),life:3e3})}catch(e){v.add({severity:`error`,detail:e,life:3e3})}}async function qe(e){if(J.value&&J.value.contract){let n=t(J.value.contract)?[`hub`]:J.value.contract.provides;if($.value.includes(e.name))for(let t of n)je({cameraname:e.name,pluginname:J.value.pluginName,type:t},{onSuccess:()=>{$.value=$.value.filter(t=>t!==e.name)}});else for(let t of n)Te({cameraname:e.name,pluginname:J.value.pluginName,type:t},{onSuccess:()=>{$.value=[...$.value,e.name]}})}}return H(J,e=>{if(!e||e.disabled){let e=Q.value.some(e=>e.name===`settings`),t=Q.value.some(e=>e.name===`cameras`);e?Z.value=`settings`:t&&(Z.value=`cameras`)}},{deep:!0}),H(_,()=>{B.value=_.params.pluginname},{deep:!0,immediate:!0}),H([J,Y.isConnected],async([e,t])=>{e&&!e.disabled&&t&&await Y.getConfig()},{immediate:!0}),H(X,()=>{X.value?d.toggleQueryActivator(`getPluginContractQuery`,!0):d.toggleQueryActivator(`getPluginContractQuery`,!1)},{deep:!0,immediate:!0}),H([Ce,X,U],()=>{let e=[],t=!1,r=Ve.value||!!X.value?.schema.length;e.push({name:`settings`,icon:he,isInterface:!1,tooltip:D(`views.plugin.settings_tab_tooltip`)}),U.value&&l(U.value,n.MotionDetection)&&(t=!0,e.push({name:`motion_detection`,icon:rn,isInterface:!0,tooltip:D(`views.plugin.motion_detection_tab_tooltip`)})),U.value&&l(U.value,n.ObjectDetection)&&(t=!0,e.push({name:`object_detection`,icon:Zt,isInterface:!0,tooltip:D(`views.plugin.object_detection_tab_tooltip`)})),U.value&&l(U.value,n.AudioDetection)&&(t=!0,e.push({name:`audio_detection`,icon:Jt,isInterface:!0,tooltip:D(`views.plugin.audio_detection_tab_tooltip`)})),U.value&&l(U.value,n.FaceDetection)&&(t=!0,e.push({name:`face_detection`,icon:en,isInterface:!0,tooltip:D(`views.plugin.face_detection_tab_tooltip`)})),U.value&&l(U.value,n.LicensePlateDetection)&&(t=!0,e.push({name:`license_plate_detection`,icon:pn,isInterface:!0,tooltip:D(`views.plugin.license_plate_detection_tab_tooltip`)})),U.value&&l(U.value,n.ClassifierDetection)&&(t=!0,e.push({name:`classifier_detection`,icon:sn,isInterface:!0,tooltip:D(`views.plugin.classifier_detection_tab_tooltip`)})),U.value&&l(U.value,n.ClipDetection)&&(t=!0,e.push({name:`clip_detection`,icon:un,isInterface:!0,tooltip:D(`views.plugin.clip_detection_tab_tooltip`)})),U.value&&l(U.value,n.Notifier)&&(t=!0,e.push({name:`notification`,icon:me,isInterface:!0,tooltip:D(`views.plugin.notification_tab_tooltip`)})),e.push({name:`cameras`,icon:pe,isInterface:!1,tooltip:D(`views.plugin.cameras_tab_tooltip`)}),Ce.value?.cameras.length&&($.value=Ce.value.cameras.filter(e=>e.plugins?.some(e=>e.name===V.value)).map(e=>e.name)),Q.value=[...e],J.value?.disabled||(r?Z.value=`settings`:t?Z.value=Q.value.filter(e=>e.isInterface)[0].name:Z.value=`settings`)},{deep:!0,immediate:!0}),H(W,e=>{e&&J.value&&!J.value.disabled&&p.error(`Error connecting to plugin:`,e)}),(t,n)=>{let r=ze,i=e,o=Se,c=a,l=s,u=Be,ee=G,te=ce,d=I(`RouterLink`),ne=Oe,p=Gt,_=dt,v=se,S=_e,w=q,D=le,j=K,z=oe;return b(),A(`div`,{key:k(V)},[O(o,{position:`left`},{default:h(()=>[O(i,{severity:`secondary`,text:``,class:`cui-button p-2 text-color non-draggable-region`,onClick:n[0]||=e=>t.$router.push(`/plugins`)},{icon:h(()=>[O(r,{class:`w-6 h-6`})]),_:1})]),_:1}),O(o,{position:`center`},{default:h(()=>[E(`span`,mn,M(t.$t(`views.plugin.title`)),1)]),_:1}),E(`div`,{class:L([`grid grid-auto grid-cols-1 lg:grid-cols-3 gap-6 lg:h-full`,{"!gap-2":k(C)}])},[E(`div`,hn,[k(J)?(b(),y(u,{key:1,plugin:k(J),class:`h-[220px]`},null,8,[`plugin`])):(b(),y(l,{key:0,class:`cui-card items-center justify-center !h-[220px]`},{content:h(()=>[E(`div`,gn,[O(c,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})])]),_:1}))]),E(`div`,_n,[E(`span`,vn,M(t.$t(`views.plugin.settings`)),1),O(l,{class:L([`cui-card !h-auto lg:!h-full`,{"items-center justify-center":k(ue)||k(we)}])},{content:h(()=>[k(ue)||k(we)?(b(),A(`div`,yn,[O(c,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})])):(b(),A(`div`,bn,[E(`h3`,xn,M(t.$t(`views.plugin.settings`)),1),k(J)?.disabled?(b(),A(`div`,Sn,[E(`span`,null,M(t.$t(`views.plugin.disabled_info`)),1)])):(b(),y(j,{key:1,value:k(Z),"onUpdate:value":n[1]||=e=>T(Z)?Z.value=e:null,scrollable:``},{default:h(()=>[O(te,{class:`justify-between`,pt:{activeBar:{class:`!w-auto`},content:{class:`border-[1px] border-color cui-rounded-corner overflow-hidden`}}},{default:h(()=>[(b(!0),A(g,null,re(k(Q),(e,t)=>(b(),y(ee,{key:t,disabled:e.isInterface&&k(J)?.disabled,value:e.name,"as-child":``},{default:h(t=>[x((b(),A(`div`,N({ref_for:!0},t.a11yAttrs,{class:[`flex flex-col items-center justify-center flex-1 content-background !py-3 h-[55px]`,[{"hover:!text-color active:!text-color focus:!text-color":!t.active},t.class]],onClick:t.onClick}),[(b(),y(F(e.icon),{class:`w-5 h-5`}))],16,Cn)),[[z,{value:e.tooltip}]])]),_:2},1032,[`disabled`,`value`]))),128))]),_:1}),O(D,{class:`px-0 pb-0`},{default:h(()=>[(b(!0),A(g,null,re(k(Q),(e,n)=>(b(),y(w,{key:n,value:e.name,"as-child":``},{default:h(n=>[n.active?(b(),A(`div`,N({key:0,class:n.class},{ref_for:!0},n.a11yAttrs),[e.name===`settings`?(b(),A(`div`,wn,[k(Ve)?(b(),A(`div`,Tn,[E(`span`,null,M(t.$t(`views.plugin.nvr_settings_hint`)),1),O(d,{to:`/settings/recordings`,class:`text-primary-500 hover:underline`},{default:h(()=>[P(M(t.$t(`views.plugin.nvr_settings_link`)),1)]),_:1})])):k(X)?.schema?.length?(b(),y(ne,{key:1,"schema-form":{schema:k(X).schema,config:k(X).config},loading:k(Y).isLoading.value,"save-button-color":`success`,onOnAction:We,onOnSubmit:Ge,onOnFormSubmit:Ke},null,8,[`schema-form`,`loading`])):(b(),A(`div`,En,[E(`span`,null,M(t.$t(`views.plugin.no_settings`)),1)]))])):e.name===`motion_detection`?(b(),y(p,{key:1,"plugin-name":k(V),type:`motionDetection`},null,8,[`plugin-name`])):e.name===`object_detection`?(b(),y(p,{key:2,"plugin-name":k(V),type:`objectDetection`},null,8,[`plugin-name`])):e.name===`audio_detection`?(b(),y(p,{key:3,"plugin-name":k(V),type:`audioDetection`},null,8,[`plugin-name`])):e.name===`face_detection`?(b(),y(p,{key:4,"plugin-name":k(V),type:`faceDetection`},null,8,[`plugin-name`])):e.name===`license_plate_detection`?(b(),y(p,{key:5,"plugin-name":k(V),type:`licensePlateDetection`},null,8,[`plugin-name`])):e.name===`classifier_detection`?(b(),y(p,{key:6,"plugin-name":k(V),type:`classifierDetection`},null,8,[`plugin-name`])):e.name===`clip_detection`?(b(),y(p,{key:7,"plugin-name":k(V),type:`clipDetection`},null,8,[`plugin-name`])):e.name===`notification`?(b(),y(_,{key:8,"plugin-name":k(V)},null,8,[`plugin-name`])):e.name===`cameras`?(b(),A(`div`,Dn,[k(Ce)?.cameras?.length?(b(!0),A(g,{key:1},re(k(Ce).cameras,e=>(b(),A(`div`,{key:e.name,class:`cui-list-item`},[O(S,{disabled:k(Ee)||k(Re)||k(Y).isLoading.value,active:k($).includes(e.name),class:`h-14`,onClick:t=>k(m).open({cameraName:e.name})},R({default:h(()=>[E(`span`,null,M(e.name),1)]),_:2},[!k(J)||!Ue(e,k(J).pluginName)?{name:`append`,fn:h(()=>[O(v,{"model-value":k($).includes(e.name),disabled:k(Ee)||k(Re)||k(Y).isLoading.value,"onUpdate:modelValue":()=>qe(e)},null,8,[`model-value`,`disabled`,`onUpdate:modelValue`])]),key:`0`}:void 0]),1032,[`disabled`,`active`,`onClick`])]))),128)):(b(),A(`div`,On,[E(`span`,null,M(t.$t(`views.plugin.no_cameras`)),1)]))])):f(``,!0)],16)):f(``,!0)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`value`]))]))]),_:1},8,[`class`])]),E(`div`,kn,[E(`span`,An,M(t.$t(`views.plugin.readme`)),1),O(l,{class:`cui-card !h-auto lg:!h-full`},{content:h(()=>[E(`h3`,jn,M(t.$t(`views.plugin.readme`)),1),k(fe)?(b(),A(`div`,Mn,[O(c,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})])):(b(),A(`div`,{key:1,class:`markdown-body`,innerHTML:k(He).render(k(de)||t.$t(`views.plugin.no_readme`))},null,8,Nn))]),_:1})]),E(`div`,Pn,[E(`span`,Fn,M(t.$t(`views.plugin.changelog`)),1),O(l,{class:`cui-card !h-auto lg:!h-full`},{content:h(()=>[E(`h3`,In,M(t.$t(`views.plugin.changelog`)),1),k(ve)?(b(),A(`div`,Ln,[O(c,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})])):(b(),A(`div`,{key:1,class:`markdown-body`,innerHTML:k(He).render(k(ge)||t.$t(`views.plugin.no_changelog`))},null,8,Rn))]),_:1})])],2)])}}}),[[`__scopeId`,`data-v-869e4fd8`]]);export{zn as default};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{Cn as e,Ln as t,Tn as n,Xt as r,an as i,cr as a,en as o,fn as s,or as c,sn as l,wn as u}from"./vendor-
|
|
1
|
+
import{Cn as e,Ln as t,Tn as n,Xt as r,an as i,cr as a,en as o,fn as s,or as c,sn as l,wn as u}from"./vendor-zxCOTbSj.js";import{t as d}from"./useSharedComposables-B5-Uy9Br.js";import{t as f}from"./useFileDownload-BzheFQ77.js";import{t as p}from"./plugins-VMgnZZzG.js";import{n as m,t as h}from"./useLogsSocket-CeW070HG.js";var g=l({__name:`PluginConsole`,props:{plugin:{},isInstalling:{type:Boolean}},setup(l,{expose:g}){let _=new p,v=l,{mdBreakpoint:y}=d(),b=s(`dialogRefProps`),{plugin:x,isInstalling:S}=c(v),C=h({target:x.value.pluginName,onStdout:e=>D.value?.writeTerminal(e),onDisconnect:()=>D.value?.writeTerminal(`\r
|
|
2
2
|
Websocket failed to connect! Is the server running?\r
|
|
3
3
|
\r
|
|
4
4
|
`),onClearLog:()=>D.value?.clearTerminal(),onReconnected:()=>{S.value||(D.value?.clearTerminal(),D.value?.writeTerminal(`\r
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Gt as e,Mt as t,Wt as n}from"./vendor-cameraui-
|
|
1
|
+
import{Gt as e,Mt as t,Wt as n}from"./vendor-cameraui-D9I8uPRL.js";import{C as r,l as i}from"./api-CPonLnGH.js";import{Qt as a,Tn as o,Xt as s,cr as c,er as l,fn as u,or as d,sn as f,zn as p}from"./vendor-zxCOTbSj.js";import{t as m}from"./CuiSchema-DPegn_DL.js";var h=f({__name:`PluginSchema`,props:{schemaConfig:{},pluginName:{},cameraName:{},buttonKey:{},sensorId:{},pluginId:{}},setup(f,{expose:h}){let g=f,_=r(),v=u(`dialogRef`),y=u(`dialogRefProps`),{schemaConfig:b,pluginName:x,cameraName:S,buttonKey:C,sensorId:w,pluginId:T}=d(g),E=n(x),D=t(S,x),O=e(S,w,T),k=l({schema:[],config:{}}),A=s(()=>S.value&&w.value?`sensor`:S.value?`camera`:`plugin`),j=s(()=>{switch(A.value){case`sensor`:return O;case`camera`:return D;default:return E}}),M=s(()=>!!(y.loading?.value||j.value.isLoading.value));async function N(e){await j.value.setValue(e.key,void 0)}async function P(e){let t={...b.value.config,...e},n=await j.value.submitValue(C.value,t);if(n?.toast){let e=i(n.toast.type);_.add({severity:e,detail:n.toast.message,life:3e3})}n?.schema&&Object.keys(n.schema).length&&k.value?k.value.schema=n.schema:v.value.close()}return p(b,e=>{k.value=e},{deep:!0,immediate:!0}),h({isLoading:M}),(e,t)=>{let n=m;return o(),a(n,{"schema-form":c(k),loading:c(M),"show-button":``,onOnAction:N,onOnFormSubmit:P},null,8,[`schema-form`,`loading`])}}});export{h as t};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/VersionsHandler-
|
|
2
|
-
import{Hn as e,Kn as t,fi as n,lt as r,tt as i}from"./vendor-cameraui-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/VersionsHandler-D2lhMYGG.js","assets/vendor-cameraui-D9I8uPRL.js","assets/rolldown-runtime-DAXXjFlN.js","assets/vendor-zxCOTbSj.js","assets/api-CPonLnGH.js","assets/vendor-core-DSNqTlQH.js","assets/api-BB9AG_h5.css","assets/useSharedComposables-B5-Uy9Br.js","assets/ui-CEzY0rCW.js","assets/vendor-primevue-CWF_imvX.js","assets/plugins-VMgnZZzG.js","assets/useLogsSocket-CeW070HG.js","assets/_plugin-vue_export-helper-BDNMzG2s.js","assets/vendor-xterm-BRN-hOYD.js","assets/vendor-xterm-BrP-ENHg.css","assets/useLogsSocket-4F2-d9fa.css","assets/vendor-markdown-BrmS8cUD.js","assets/vendor-markdown-DtOhvyRx.css","assets/server-8uNYIjzr.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{Hn as e,Kn as t,fi as n,lt as r,tt as i}from"./vendor-cameraui-D9I8uPRL.js";import{$t as a,At as o,Dn as s,Gt as c,Hn as l,Kt as u,Qt as d,Tn as f,Un as p,Xn as m,Xt as h,Yn as g,Zt as _,an as v,cr as y,dr as b,en as x,er as S,fn as C,fr as w,lr as T,sn as E,zn as D,zt as O}from"./vendor-zxCOTbSj.js";import{t as k}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{a as A,t as j}from"./useSharedComposables-B5-Uy9Br.js";import{t as M}from"./close-BlkMdXhr.js";import{F as N,J as P,L as F,P as I,R as L,U as R,s as ee}from"./vendor-primevue-CWF_imvX.js";import{n as te,r as z,t as ne}from"./github--PDCVHbp.js";import{t as B}from"./CuiFloatingButton-CLb4OXWq.js";import{t as V}from"./hasPermission-C2RWjXuT.js";import{n as H,t as U}from"./useCuiDialog-BEerzsp3.js";import{t as W}from"./CuiTopbarSlot-D8e3DC_V.js";import{t as G}from"./plugins-VMgnZZzG.js";import{t as K}from"./back-filled-2dVfzfd3.js";import{t as q}from"./plus-mhsNCxIy.js";import{t as J}from"./search-BN5ng-N8.js";import{n as Y,t as X}from"./CuiPluginCard-o4XyKYKV.js";var Z={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Q(e,t){return f(),x(`svg`,Z,[...t[0]||=[_(`g`,{fill:`none`},[_(`rect`,{width:`16.5`,height:`16.5`,x:`3.75`,y:`3.75`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`1.5`,rx:`2`}),_(`path`,{fill:`currentColor`,d:`M12 9a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v11.25h-4z`})],-1)]])}var re=m({name:`proicons-npm`,render:Q}),$={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function ie(e,t){return f(),x(`svg`,$,[...t[0]||=[_(`path`,{fill:`currentColor`,d:`M2 10.96a.985.985 0 0 1-.37-1.37L3.13 7c.11-.2.28-.34.47-.42l7.83-4.4c.16-.12.36-.18.57-.18s.41.06.57.18l7.9 4.44c.19.1.35.26.44.46l1.45 2.52c.28.48.11 1.09-.36 1.36l-1 .58v4.96c0 .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-5.54c-.3.17-.68.18-1 0m10-6.81v6.7l5.96-3.35zM5 15.91l6 3.38v-6.71L5 9.21zm14 0v-3.22l-5 2.9c-.33.18-.7.17-1 .01v3.69zm-5.15-2.55l6.28-3.63l-.58-1.01l-6.28 3.63z`},null,-1)]])}var ae=m({name:`mdi-package-variant`,render:ie}),oe={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function se(e,t){return f(),x(`svg`,oe,[...t[0]||=[_(`path`,{fill:`currentColor`,d:`M13 15.6c.3.2.7.2 1 0l5-2.9v.3c.7 0 1.4.1 2 .4v-1.8l1-.6c.5-.3.6-.9.4-1.4l-1.5-2.5c-.1-.2-.2-.4-.4-.5l-7.9-4.4c-.2-.1-.4-.2-.6-.2s-.4.1-.6.2L3.6 6.6c-.2.1-.4.2-.5.4L1.6 9.6c-.3.5-.1 1.1.4 1.4c.3.2.7.2 1 0v5.5c0 .4.2.7.5.9l7.9 4.4c.2.1.4.2.6.2s.4-.1.6-.2l.9-.5c-.3-.6-.4-1.3-.5-2m-2 0l-6-3.4V9.2l6 3.4zm9.1-9.6l-6.3 3.6l-.6-1l6.3-3.6zM12 10.8V4.2l6 3.3zm8 4.2v3h3v2h-3v3h-2v-3h-3v-2h3v-3z`},null,-1)]])}var ce=m({name:`mdi-package-variant-plus`,render:se}),le={class:`cui-label`},ue={class:`flex flex-row items-center justify-center w-full mt-8`},de={key:2,class:`text-center py-10`},fe={class:`text-muted mb-2`},pe={class:`text-muted`},me={key:3,class:`w-full`},he={key:4,class:`w-full plugin-list`},ge={class:`plugin-info`},_e={class:`flex items-center`},ve={class:`font-medium text-base`},ye={class:`text-sm text-muted mb-2`},be={class:`plugin-description`},xe={class:`plugin-meta`},Se={class:`plugin-meta-item`},Ce={class:`meta-label font-semibold`},we={class:`meta-value`},Te={class:`plugin-meta-item`},Ee={class:`meta-label font-semibold`},De={class:`meta-value`},Oe={class:`plugin-actions`},ke={class:`flex gap-2 mb-2`},Ae=k(E({__name:`PluginSearch`,setup(m,{expose:b}){let E=H(()=>o(()=>import(`./VersionsHandler-D2lhMYGG.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]))),O=new G,k=U(),{t:A}=n(),j=C(`dialogRefProps`),N=S(``),I=S({}),z=S([]),{data:B,isBusy:V,refetch:W}=O.searchPluginsQuery(I,{page:1,pageSize:-1}),{data:K,isBusy:q,refetch:J}=O.getPluginsProgressQuery({page:1,pageSize:-1}),Y=h(()=>V.value||q.value),X=h(()=>!!(j.loading?.value||Y.value));function Z(e){return K.value?.result.some(t=>t.pluginName===e)}function Q(e){e?.preventDefault(),I.value.pluginname=N.value??``}function $(){N.value=``,I.value={},Q()}function ie(){W(),J()}function oe(e){k.openComponentDialog(E,{data:{title:A(`components.dialog.title.install`),loading:X,contentProps:{target:y(e),installVersion:`latest`,isNewPlugin:!0}}})}return D(B,e=>{e?.result&&(z.value=e.result.filter(e=>!e.installPath))},{immediate:!0,deep:!0}),b({isLoading:X}),(n,o)=>{let m=i,h=M,b=e,S=F,C=L,E=te,D=t,O=ee,k=R,A=ce,j=r,I=ae,B=ne,V=re,H=P;return f(),x(`div`,null,[_(`form`,{onSubmit:c(Q,[`prevent`])},[_(`label`,le,w(n.$t(`components.form.label.name`)),1),v(C,null,{default:l(()=>[v(m,{modelValue:y(N),"onUpdate:modelValue":o[0]||=e=>g(N)?N.value=e:null,modelModifiers:{trim:!0},loading:y(Y),placeholder:`camera-ui-`,type:`text`},null,8,[`modelValue`,`loading`]),v(S,null,{default:l(()=>[v(b,{text:``,rounded:``,severity:`secondary`,class:`cui-icon-md`,onClick:$},{icon:l(()=>[v(h,{width:`100%`,height:`100%`})]),_:1})]),_:1})]),_:1})],32),_(`div`,ue,[_(`h3`,null,w(n.$t(`components.plugin_search.plugins`)),1),p((f(),d(b,{text:``,rounded:``,severity:`secondary`,class:`cui-icon-md ml-auto`,onClick:ie},{icon:l(()=>[v(E,{width:`100%`,height:`100%`})]),_:1})),[[H,{value:n.$t(`components.plugin_search.refresh`)}]]),v(D,{size:`small`,class:`ml-2 rounded-full`,value:String(y(z).length)},null,8,[`value`])]),y(Y)?(f(),d(O,{key:0,mode:`indeterminate`,class:`my-3 !h-[1px]`})):(f(),d(k,{key:1,class:`m-0 py-3`})),!y(Y)&&!y(z).length?(f(),x(`div`,de,[_(`div`,fe,[v(A,{class:`w-12 h-12 mx-auto opacity-30`})]),_(`p`,pe,w(n.$t(`views.plugins.no_plugins`)),1)])):y(Y)?(f(),x(`div`,me,[(f(),x(u,null,s(6,e=>v(j,{key:e,class:`mb-2`,height:`132px`})),64))])):(f(),x(`div`,he,[(f(!0),x(u,null,s(y(z),(e,t)=>p((f(),x(`div`,{key:t,class:T([`plugin-list-item shadow-sm transition-default card-background custom-scrollbar`,{"opacity-50 in-progress":Z(e.pluginName)}])},[_(`div`,ge,[_(`div`,_e,[v(I,{class:`w-5 h-5 text-primary mr-2`}),_(`h4`,ve,w(e.displayName),1)]),_(`div`,ye,w(e.pluginName),1),_(`p`,be,w(e.description),1),_(`div`,xe,[_(`div`,Se,[_(`span`,Ce,w(n.$t(`components.plugin_card.version`))+`:`,1),_(`span`,we,w(e.latestVersion),1)]),_(`div`,Te,[_(`span`,Ee,w(n.$t(`components.plugin_card.author`))+`:`,1),_(`span`,De,w(e.author),1)])])]),_(`div`,Oe,[_(`div`,ke,[e.links?.homepage?p((f(),d(b,{key:0,text:``,rounded:``,severity:`secondary`,class:`cui-icon-md`,onClick:t=>n.$router.absUrl(e.links.homepage,!0)},{icon:l(()=>[v(B,{width:`100%`,height:`100%`})]),_:1},8,[`onClick`])),[[H,{value:`Github`}]]):a(``,!0),e.links?.npm?p((f(),d(b,{key:1,text:``,rounded:``,severity:`secondary`,class:`cui-icon-md`,onClick:t=>n.$router.absUrl(e.links.npm,!0)},{icon:l(()=>[v(V,{width:`100%`,height:`100%`})]),_:1},8,[`onClick`])),[[H,{value:`NPM`}]]):a(``,!0)]),v(b,{class:`cui-button-medium`,label:n.$t(`components.form.button.install`),disabled:Z(e.pluginName),onClick:t=>oe(e)},null,8,[`label`,`disabled`,`onClick`])])],2)),[[H,{value:Z(e.pluginName)?n.$t(`components.plugin_search.in_progress`):void 0}]])),128))]))])}}}),[[`__scopeId`,`data-v-e84cbdf9`]]),je={class:`flex flex-col`},Me={key:0,class:`page-title`},Ne={class:`flex gap-2 mb-4`},Pe={key:1,class:`flex flex-1 min-h-0 flex-col items-center justify-center w-full gap-4`},Fe={class:`text-muted text-sm`},Ie=E({__name:`Plugins`,setup(t){let o=new G,c=U(),{t:p}=n(),{smBreakpoint:m}=j(),{width:C,height:T}=A(),{data:E,isBusy:D}=o.getPluginsQuery({page:1,pageSize:-1}),k=S(``),M=h(()=>D.value),P=h(()=>{let e=E.value?.result??[],t=k.value.toLowerCase().trim();return t?e.filter(e=>e.pluginName.toLowerCase().includes(t)||e.displayName?.toLowerCase().includes(t)):e}),F=h(()=>(m.value?1:Math.max(1,Math.floor(C.value/450)))*Math.max(1,Math.ceil(T.value/(Y.HEIGHT+8))));function L(){c.openComponentDialog(Ae,{data:{title:p(`components.dialog.title.search_plugin`),contentProps:{},hideConfirmButton:!0,fullscreen:!0}})}return(t,n)=>{let o=K,c=e,h=W,S=J,C=I,T=i,E=N,D=r,A=z,j=X,R=B;return f(),x(`div`,je,[y(m)?a(``,!0):(f(),x(`h1`,Me,w(t.$t(`views.${String(t.$route.name).toLowerCase()}.title`)),1)),v(h,{position:`left`},{default:l(()=>[v(c,{severity:`secondary`,text:``,class:`cui-button p-2 text-color non-draggable-region`,onClick:n[0]||=e=>t.$router.push(`/menu`)},{icon:l(()=>[v(o,{class:`w-6 h-6`})]),_:1})]),_:1}),_(`div`,Ne,[v(E,{class:`flex-1`},{default:l(()=>[v(C,null,{default:l(()=>[v(S,{class:`w-4 h-4`})]),_:1}),v(T,{modelValue:y(k),"onUpdate:modelValue":n[1]||=e=>g(k)?k.value=e:null,placeholder:y(p)(`views.plugins.search`),class:`w-full`},null,8,[`modelValue`,`placeholder`])]),_:1})]),v(O,{name:`fade-2`,mode:`out-in`},{default:l(()=>[y(M)?(f(),x(`div`,{key:`loading`,class:`grid w-full gap-2`,style:b({gridTemplateColumns:`repeat(auto-fill, minmax(${y(m)?`100%`:`450px`}, 1fr))`})},[(f(!0),x(u,null,s(y(F),e=>(f(),d(D,{key:e,height:`${y(Y).HEIGHT}px`,class:`cui-card`},null,8,[`height`]))),128))],4)):!y(P).length||!(`hasPermission`in t?t.hasPermission:y(V))(void 0,`admin`)?(f(),x(`div`,Pe,[v(A,{class:`w-12 h-12 text-muted`}),_(`span`,Fe,w(t.$t(`views.plugins.no_plugins`)),1)])):(f(),x(`div`,{key:`content`,class:`grid w-full gap-2`,style:b({gridTemplateColumns:`repeat(auto-fill, minmax(${y(m)?`100%`:`450px`}, 1fr))`})},[(f(!0),x(u,null,s(y(P),(e,t)=>(f(),d(j,{key:t,plugin:e},null,8,[`plugin`]))),128))],4))]),_:1}),(`hasPermission`in t?t.hasPermission:y(V))(void 0,`admin`)?(f(),d(R,{key:1,"tooltip-props":{value:t.$t(`views.plugins.search_plugins`)},"button-props":{class:`text-white`},icon:y(q),"icon-props":{width:`30px`,height:`30px`},onClick:L},null,8,[`tooltip-props`,`icon`])):a(``,!0)])}}});export{Ie as default};
|