@camera.ui/server 2.2.5 → 2.2.6
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-CiOxoqnT.js → 404-BLVuKvLk.js} +1 -1
- package/dist/interface/assets/{About-DWOlfWEm.js → About-C-AJ0jfI.js} +1 -1
- package/dist/interface/assets/Assistant-BJKGIvVo.js +1 -0
- package/dist/interface/assets/{Assistant-CXx7EY1W.css → Assistant-BQ6Ld-bt.css} +1 -1
- package/dist/interface/assets/{Automation-BJgwUkUB.js → Automation-C95DzuZb.js} +3 -3
- package/dist/interface/assets/{AutomationImport-9GRAndAt.js → AutomationImport-C8VYjDzf.js} +2 -2
- package/dist/interface/assets/{AutomationStore-D_HR2Xby.js → AutomationStore-CE4PKRGd.js} +2 -2
- package/dist/interface/assets/{AutomationStoreDetail-B9MxV2py.js → AutomationStoreDetail-DavWfjLv.js} +2 -2
- package/dist/interface/assets/Automations-BOP_17Ri.js +2 -0
- package/dist/interface/assets/Camera-BW9ikKqh.css +1 -0
- package/dist/interface/assets/Camera-C5S7eI9a.js +2 -0
- package/dist/interface/assets/{CameraConsole-BKPTLSTO.js → CameraConsole-C4AmtcrM.js} +1 -1
- package/dist/interface/assets/{Cameras-DcrVCgLy.js → Cameras-DR577Bno.js} +2 -2
- package/dist/interface/assets/{Camview-DasO326h.css → Camview-Bri_T7Tq.css} +1 -1
- package/dist/interface/assets/Camview-CHxKB41T.js +1 -0
- package/dist/interface/assets/{Config-BmEL5EaW.js → Config-BrDDGWpr.js} +1 -1
- package/dist/interface/assets/{ConfigActionAssistant-DM4tIhoa.js → ConfigActionAssistant-YtCVI8LZ.js} +1 -1
- package/dist/interface/assets/{ConfigActionCameraControl-Deo0eDPS.js → ConfigActionCameraControl-Dg_1zOYt.js} +1 -1
- package/dist/interface/assets/{ConfigActionHttp-BxJmoshF.js → ConfigActionHttp-BzwLv2tn.js} +1 -1
- package/dist/interface/assets/{ConfigActionImageInput-KrzXFQDm.js → ConfigActionImageInput-CLdY2sV4.js} +1 -1
- package/dist/interface/assets/{ConfigActionMqtt-BoYBomRC.js → ConfigActionMqtt-lGqYshl3.js} +1 -1
- package/dist/interface/assets/{ConfigActionNotification-CSAOijDt.js → ConfigActionNotification-D5Dj3EoU.js} +1 -1
- package/dist/interface/assets/{ConfigActionNotificationControl-BOdyKiOs.js → ConfigActionNotificationControl-Dy5fKamr.js} +1 -1
- package/dist/interface/assets/{ConfigActionOutput-CwsPcnd_.js → ConfigActionOutput-DzsQ31L0.js} +1 -1
- package/dist/interface/assets/{ConfigActionPlugin-D3wyULpp.js → ConfigActionPlugin-BFrBcXvL.js} +1 -1
- package/dist/interface/assets/{ConfigActionSensor-BmeaIxYY.js → ConfigActionSensor-CX8ePlan.js} +1 -1
- package/dist/interface/assets/{ConfigActionSnapshot-DbyFKcYr.js → ConfigActionSnapshot-BATLRmh6.js} +1 -1
- package/dist/interface/assets/{ConfigActionVariable-cThGJ1Pc.js → ConfigActionVariable-Dgn5jvaR.js} +1 -1
- package/dist/interface/assets/{ConfigConditionIfElse-BugkJeXR.js → ConfigConditionIfElse-D5IIBjyk.js} +1 -1
- package/dist/interface/assets/{ConfigConditionSensorState-Bf-mMf4E.js → ConfigConditionSensorState-C0JxBWdG.js} +1 -1
- package/dist/interface/assets/{ConfigConditionSwitch-DcpFoYET.js → ConfigConditionSwitch-Brlgd0XP.js} +1 -1
- package/dist/interface/assets/{ConfigSensorValueInput-CgAI34__.js → ConfigSensorValueInput-CtuH8dCa.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerDetection-BWK6gfwM.js → ConfigTriggerDetection-DsL7lLQl.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerGeofence-Cm3CU7Tl.js → ConfigTriggerGeofence-CAGIk1_W.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerMqtt-BMFjTAso.js → ConfigTriggerMqtt-B_iFalAQ.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerSensor-DOdJkZRo.js → ConfigTriggerSensor-hYNbLXUu.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerSystem-BFDIbZsE.js → ConfigTriggerSystem-DR1EFpE9.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerWebhook-DDoUEVHb.js → ConfigTriggerWebhook-C-B5GGFH.js} +1 -1
- package/dist/interface/assets/{Console-BIj7cIqO.js → Console-cIr6lYux.js} +1 -1
- package/dist/interface/assets/CuiAssistantConversation-Bigl43Ph.js +5 -0
- package/dist/interface/assets/CuiAssistantConversation-BmshW6Vc.css +1 -0
- package/dist/interface/assets/{CuiAutomationRunsDialog-DMUfNcsf.js → CuiAutomationRunsDialog-Ci7SWAml.js} +1 -1
- package/dist/interface/assets/{CuiBottomSheet-FwsPnJ3n.js → CuiBottomSheet-C2sM2E3M.js} +1 -1
- package/dist/interface/assets/CuiBottomSheet-ViBOgklN.js +1 -0
- package/dist/interface/assets/CuiCameraPipCard-wdK7xir-.js +1 -0
- package/dist/interface/assets/{CuiCameraRecordings-BeciatDY.js → CuiCameraRecordings-BB7bF67B.js} +1 -1
- package/dist/interface/assets/{CuiCameraShares-CSFwIYsg.js → CuiCameraShares-B6jdUBVm.js} +1 -1
- package/dist/interface/assets/CuiCameraTable-CHnQFkce.js +1 -0
- package/dist/interface/assets/{CuiCameraTable-DBRfGX3I.js → CuiCameraTable-CpBo25Qc.js} +1 -1
- package/dist/interface/assets/{CuiChartTable-CtasoxMM.js → CuiChartTable-dIcxGtfl.js} +1 -1
- package/dist/interface/assets/{CuiConsole-DQbAafiz.js → CuiConsole-BGptpT6r.js} +1 -1
- package/dist/interface/assets/{CuiDataTable-JlD7Agky.js → CuiDataTable-CQmp5mAy.js} +1 -1
- package/dist/interface/assets/CuiLightControl-wbZi3fA1.js +1 -0
- package/dist/interface/assets/CuiPluginCard-BjIc7It9.js +2 -0
- package/dist/interface/assets/{CuiPluginCategoryChip-B2bR5LQa.js → CuiPluginCategoryChip-BtJ_6_gN.js} +1 -1
- package/dist/interface/assets/{CuiPluginOAuthButton-DfEjfcY-.js → CuiPluginOAuthButton-Duf35I8K.js} +2 -2
- package/dist/interface/assets/{CuiPluginTrustBadge-C6CW6Soh.js → CuiPluginTrustBadge-jxXeRTH2.js} +1 -1
- package/dist/interface/assets/{CuiQRCode-DGKBhDib.js → CuiQRCode-BNchrpoB.js} +1 -1
- package/dist/interface/assets/{CuiSchema-pAAVh28m.js → CuiSchema-DGTMkVSe.js} +1 -1
- package/dist/interface/assets/{CuiTopNavbarItem-ve-3Dsc3.js → CuiTopNavbarItem-CHtLvn53.js} +1 -1
- package/dist/interface/assets/Faces-p18jNfXl.js +1 -0
- package/dist/interface/assets/FirstSteps-HzaBMDbH.js +1 -0
- package/dist/interface/assets/Floorplan-DYyEx7WO.js +1 -0
- package/dist/interface/assets/Instances-Dl-6rL5O.js +1 -0
- package/dist/interface/assets/{Logs-BhRactvQ.js → Logs-DsJkuQFq.js} +2 -2
- package/dist/interface/assets/{Menu-DMCmUVDs.js → Menu-D_woMkjL.js} +1 -1
- package/dist/interface/assets/Metrics-l3UwykCM.js +12 -0
- package/dist/interface/assets/{OAuthDeviceFlow-BMEwVkIa.js → OAuthDeviceFlow-CXfILAE1.js} +1 -1
- package/dist/interface/assets/Plugin-Ldj3HygQ.js +1 -0
- package/dist/interface/assets/{PluginConsole-C4Ba_U_1.js → PluginConsole-C96m5zKy.js} +1 -1
- package/dist/interface/assets/{PluginDetail-13OWIzdd.js → PluginDetail-CnfaI1vh.js} +2 -2
- package/dist/interface/assets/{PluginSchema-DN0cSU8s.js → PluginSchema-u1bqXU29.js} +1 -1
- package/dist/interface/assets/{PluginSearch-sPkO8aH3.js → PluginSearch-BiXG3Xk2.js} +2 -2
- package/dist/interface/assets/PluginSearch-BuE7we1T.js +1 -0
- package/dist/interface/assets/{PluginUpdateProgress-CeWuRp3Z.js → PluginUpdateProgress-BT4lN9HT.js} +1 -1
- package/dist/interface/assets/{Plugins-C8yjhxnQ.js → Plugins-Csx6AXaW.js} +1 -1
- package/dist/interface/assets/Recordings-BEKAn6QK.css +1 -0
- package/dist/interface/assets/Recordings-D0KTY5cI.js +1 -0
- package/dist/interface/assets/{SensorEdit-C-yJdJuP.js → SensorEdit-zs-f_o1N.js} +1 -1
- package/dist/interface/assets/{SensorHistory-ClAcOgHj.js → SensorHistory-Cet35_RO.js} +1 -1
- package/dist/interface/assets/Sensors-BLAoalEt.js +2 -0
- package/dist/interface/assets/Settings-C-LCDIbK.js +1 -0
- package/dist/interface/assets/SettingsAccount-BsN7jGmo.js +1 -0
- package/dist/interface/assets/SettingsAccount-DuVyCSE-.js +1 -0
- package/dist/interface/assets/{SettingsAppearance-CJt4xJEW.js → SettingsAppearance-BS4EQNjH.js} +1 -1
- package/dist/interface/assets/SettingsAppearance-DQcGbYbV.js +1 -0
- package/dist/interface/assets/SettingsAssistant-B0PF3Rdg.css +1 -0
- package/dist/interface/assets/SettingsAssistant-DViJklFd.js +1 -0
- package/dist/interface/assets/{SettingsBackup-DIJmci05.js → SettingsBackup-DBlV1gej.js} +1 -1
- package/dist/interface/assets/{SettingsList-Cb_dLy5T.js → SettingsList-D8eSwbBY.js} +1 -1
- package/dist/interface/assets/{SettingsMqtt-LIuCRPT5.js → SettingsMqtt-JoszJJgV.js} +1 -1
- package/dist/interface/assets/{SettingsNotifications-CZxqqH_8.js → SettingsNotifications-3veSrxa_.js} +1 -1
- package/dist/interface/assets/{SettingsRecordings-BEpwMh-y.js → SettingsRecordings-CLz9Zp47.js} +1 -1
- package/dist/interface/assets/{SettingsRemote-DRt-N_yA.js → SettingsRemote-DUyl8k7I.js} +2 -2
- package/dist/interface/assets/{SettingsSystem-Cncdpx8T.js → SettingsSystem-txTFGomQ.js} +2 -2
- package/dist/interface/assets/{SettingsUsers-DZkz8WlI.js → SettingsUsers-CUp6vQPc.js} +1 -1
- package/dist/interface/assets/{Terminal-U4yfJN3O.js → Terminal-hln2UuSR.js} +2 -2
- package/dist/interface/assets/Training-D6lhvUf-.js +1 -0
- package/dist/interface/assets/Updates-BwSWt9w7.js +2 -0
- package/dist/interface/assets/{VariableInput-PVsqGYW0.js → VariableInput-183LygmK.js} +1 -1
- package/dist/interface/assets/{VersionsHandler-Df7dhddp.js → VersionsHandler-DkbkcypK.js} +1 -1
- package/dist/interface/assets/{VirtualSensorCreate-FTKANjd-.js → VirtualSensorCreate-Bn4tgdxA.js} +1 -1
- package/dist/interface/assets/Workers-B6b15izn.js +2 -0
- package/dist/interface/assets/api-C9mnOxie.js +4 -0
- package/dist/interface/assets/api-Cj9a6qPu.css +2 -0
- package/dist/interface/assets/{api-DpqXhwcx.js → api-h4HRB3ef.js} +1 -1
- package/dist/interface/assets/{assistant-Lz3mFLDo.js → assistant-4hYyIu6D.js} +1 -1
- package/dist/interface/assets/{auth-L7_5vsJs.js → auth-DFesRtwI.js} +1 -1
- package/dist/interface/assets/{automations-D1XFFSrm.js → automations-D2bnX8uw.js} +1 -1
- package/dist/interface/assets/{cameraSources-DEGJDtmK.js → cameraSources-DmVZWs4-.js} +1 -1
- package/dist/interface/assets/cloudHandoff-Ba98bzeq.js +1 -0
- package/dist/interface/assets/{config-CVqy37fG.js → config-DDaCrMSU.js} +1 -1
- package/dist/interface/assets/esm-Bn9gXwX4.js +1 -0
- package/dist/interface/assets/esm-BzM6y2-F.js +1 -0
- package/dist/interface/assets/esm-CP3JWrtj.js +1 -0
- package/dist/interface/assets/esm-CjAXkqCf.js +1 -0
- package/dist/interface/assets/esm-Cqxk-j1S.js +1 -0
- package/dist/interface/assets/esm-DFHd3JNU.js +1 -0
- package/dist/interface/assets/esm-DfMLJtug.js +1 -0
- package/dist/interface/assets/esm-DhDrpq7a.js +1 -0
- package/dist/interface/assets/esm-DvhM-SOd.js +1 -0
- package/dist/interface/assets/esm-G63bqygQ.js +1 -0
- package/dist/interface/assets/esm-Gn-Y59hU.js +1 -0
- package/dist/interface/assets/esm-KJSOz2vj.js +1 -0
- package/dist/interface/assets/esm-Ryfc94Tm.js +1 -0
- package/dist/interface/assets/esm-rSfI5Poy.js +1 -0
- package/dist/interface/assets/{flowSchema-CppNBDy1.js → flowSchema-YJtAu9gB.js} +1 -1
- package/dist/interface/assets/main-C796FmqQ.js +3 -0
- package/dist/interface/assets/{main-Bo0Lb1y2.css → main-DVa5U7UB.css} +1 -1
- package/dist/interface/assets/{mqtt-BENV9Fx4.js → mqtt-DGBPptzB.js} +1 -1
- package/dist/interface/assets/native-CZJE8bTs.js +1 -0
- package/dist/interface/assets/native-DKZwialB.js +1 -0
- package/dist/interface/assets/{notifications-By40oPng.js → notifications-5yeK345h.js} +1 -1
- package/dist/interface/assets/plugin-DSEMkqaK.js +1 -0
- package/dist/interface/assets/{plugins-09rEDbMz.js → plugins-BTOdE_zv.js} +1 -1
- package/dist/interface/assets/{rooms-LBxn-Uuu.js → rooms-BCdm6IAx.js} +1 -1
- package/dist/interface/assets/{sensorIcons-Csu5s0uk.js → sensorIcons-5Ynqwo3e.js} +1 -1
- package/dist/interface/assets/{sensorSlots-CtbKmsGG.js → sensorSlots-BF70tpV7.js} +1 -1
- package/dist/interface/assets/{sensors-CbzNs18A.js → sensors-CeFEEz8r.js} +1 -1
- package/dist/interface/assets/{server-Btp5KILd.js → server-bhW2Mw4D.js} +1 -1
- package/dist/interface/assets/{theme-GhzGwpqd.js → theme-DF_XA58O.js} +1 -1
- package/dist/interface/assets/{types-D8QWPhe-.js → types-ArGM5-5O.js} +1 -1
- package/dist/interface/assets/{types-BAwhu9iv.js → types-BcAxmlqC.js} +1 -1
- package/dist/interface/assets/{ungrouped-BMk56E3L.js → ungrouped-CkIlDUwl.js} +1 -1
- package/dist/interface/assets/{updates-CGo0T4sn.js → updates-D3x_kPMM.js} +1 -1
- package/dist/interface/assets/{useAppVersion-CJlexqyz.js → useAppVersion-Dcvu95bZ.js} +1 -1
- package/dist/interface/assets/{useBackupRestore-_s8vS5WF.js → useBackupRestore-xp5KhKVn.js} +1 -1
- package/dist/interface/assets/{useCameraOptions-CFISVNgk.js → useCameraOptions-8I4MTDgj.js} +1 -1
- package/dist/interface/assets/useKeyboardInset-C0Lp0UcX.js +1 -0
- package/dist/interface/assets/{useLogsSocket-D-ndWAg0.js → useLogsSocket-bpOiLgWT.js} +1 -1
- package/dist/interface/assets/{useNavLayout-CG0X_3kt.js → useNavLayout-Cjf6Da2u.js} +1 -1
- package/dist/interface/assets/{usePluginUpdates-nW_dt66E.js → usePluginUpdates-bOMj-IvL.js} +1 -1
- package/dist/interface/assets/{usePushRegistration-DCqOAxR4.js → usePushRegistration-HOvLuUVP.js} +2 -2
- package/dist/interface/assets/{useServerRestart-CxJGxAcU.js → useServerRestart-CQN4cdHJ.js} +1 -1
- package/dist/interface/assets/{useStreamStatus-CXb1HbAq.js → useStreamStatus-Da7c2Wme.js} +1 -1
- package/dist/interface/assets/{useTabSwipe-DHb8__wU.js → useTabSwipe-fFuyJJBQ.js} +1 -1
- package/dist/interface/assets/{useUpdateChannel-BR4PMh1R.js → useUpdateChannel-Ca1RX32u.js} +1 -1
- package/dist/interface/assets/{useUpdatesSocket-DKDRZhvc.js → useUpdatesSocket-DHZNpLQX.js} +1 -1
- package/dist/interface/assets/{useUserOptions-lyc4WJ4L.js → useUserOptions-BQdOB-Dp.js} +1 -1
- package/dist/interface/assets/{vendor-capacitor-f9ShAzys.js → vendor-capacitor-Bs_WzL0Q.js} +2 -2
- package/dist/interface/assets/web-BDNQnMmA.js +1 -0
- package/dist/interface/assets/web-BhJykCtq.js +1 -0
- package/dist/interface/assets/web-BjKL51lK-wWFeZlLg.js +1 -0
- package/dist/interface/assets/web-C7nJwIOa.js +1 -0
- package/dist/interface/assets/web-CGJsJQDb.js +1 -0
- package/dist/interface/assets/web-CJwASxrl.js +1 -0
- package/dist/interface/assets/web-CLe0L31Y.js +1 -0
- package/dist/interface/assets/web-DEv1hAn1.js +1 -0
- package/dist/interface/assets/web-DaeQvsXT.js +1 -0
- package/dist/interface/assets/web-H3-wNunW.js +1 -0
- package/dist/interface/assets/web-LCdyqJq1.js +1 -0
- package/dist/interface/assets/web-XZWYTK65.js +1 -0
- package/dist/interface/assets/web-rU5hlxxW.js +1 -0
- package/dist/interface/ha/{404-B2T8Gktj.js → 404-C0mWQGWl.js} +1 -1
- package/dist/interface/ha/{About-CrTKzU9_.js → About-ByE7XErJ.js} +3 -3
- package/dist/interface/ha/{Assistant-BDHJmYx_.js → Assistant-Z3FTR868.js} +2264 -2133
- package/dist/interface/ha/{Automation-Czo5EsAg.js → Automation-COQqTFNw.js} +170 -170
- package/dist/interface/ha/{AutomationImport-CuFAQbiX.js → AutomationImport-ueWqMBX9.js} +6 -6
- package/dist/interface/ha/{AutomationStore-D-6x0JIt.js → AutomationStore-DBO4aZqy.js} +73 -73
- package/dist/interface/ha/{AutomationStoreDetail-Dad4q1MN.js → AutomationStoreDetail-DMnYu7hf.js} +6 -6
- package/dist/interface/ha/{Automations-C-oGM5SR.js → Automations-CMdbidc0.js} +70 -70
- package/dist/interface/ha/Camera-C28q_3pu.js +657 -0
- package/dist/interface/ha/{CameraConsole-hRGwbjsD.js → CameraConsole-oMNZfKE6.js} +3 -3
- package/dist/interface/ha/{Cameras-Bk5TFXA8.js → Cameras-CsqrLx97.js} +182 -182
- package/dist/interface/ha/{Camview-CsKKqxxY.js → Camview-Br0LUakz.js} +542 -542
- package/dist/interface/ha/{Config-Vl4-K3A_.js → Config-Y5eUNSW7.js} +110 -110
- package/dist/interface/ha/{ConfigActionAssistant-OWUX8glZ.js → ConfigActionAssistant-hl-6ZACj.js} +4 -4
- package/dist/interface/ha/{ConfigActionCameraControl-DEaOot8w.js → ConfigActionCameraControl-DnXlVFWD.js} +3 -3
- package/dist/interface/ha/{ConfigActionHttp-CSr2BpKL.js → ConfigActionHttp-BkpkMmRd.js} +2 -2
- package/dist/interface/ha/{ConfigActionImageInput--O8Tyca-.js → ConfigActionImageInput-Dp78_QS_.js} +1 -1
- package/dist/interface/ha/{ConfigActionMqtt-DQJ4-gs2.js → ConfigActionMqtt-DA_UWb5j.js} +4 -4
- package/dist/interface/ha/{ConfigActionNotification-wR8CCA_T.js → ConfigActionNotification-CQ4Ses3a.js} +3 -3
- package/dist/interface/ha/{ConfigActionNotificationControl-DNMrHwPz.js → ConfigActionNotificationControl-Cb5PNGz-.js} +2 -2
- package/dist/interface/ha/{ConfigActionOutput-C-LVFxFP.js → ConfigActionOutput-DLuNHwRb.js} +1 -1
- package/dist/interface/ha/{ConfigActionPlugin-BCREAkNo.js → ConfigActionPlugin-ChKFCNaj.js} +4 -4
- package/dist/interface/ha/{ConfigActionSensor-D48CQ6qR.js → ConfigActionSensor-DOutFalW.js} +5 -5
- package/dist/interface/ha/{ConfigActionSnapshot-DpDy88Mg.js → ConfigActionSnapshot-GWgY6YIN.js} +2 -2
- package/dist/interface/ha/{ConfigActionVariable-D9BxmwvB.js → ConfigActionVariable-bu-9VYTG.js} +1 -1
- package/dist/interface/ha/{ConfigConditionIfElse-CW42tQFY.js → ConfigConditionIfElse-iNp8tlZV.js} +3 -3
- package/dist/interface/ha/{ConfigConditionSensorState-BZpij7kB.js → ConfigConditionSensorState-Dn7kcHpJ.js} +4 -4
- package/dist/interface/ha/{ConfigConditionSwitch-DlTuJ9Sf.js → ConfigConditionSwitch-DaUlDgo0.js} +4 -4
- package/dist/interface/ha/{ConfigSensorValueInput-2QLHESlE.js → ConfigSensorValueInput-D6m6suqJ.js} +7 -7
- package/dist/interface/ha/{ConfigTriggerDetection-DPmUkmUJ.js → ConfigTriggerDetection-C5B_DC_L.js} +11 -11
- package/dist/interface/ha/{ConfigTriggerGeofence--T9OXhGl.js → ConfigTriggerGeofence-B4WVNcK5.js} +5 -5
- package/dist/interface/ha/{ConfigTriggerMqtt-fZn_X6yY.js → ConfigTriggerMqtt-wnMfk_Un.js} +1 -1
- package/dist/interface/ha/{ConfigTriggerSensor-_3O6iBFX.js → ConfigTriggerSensor-xFpI5KPu.js} +1 -1
- package/dist/interface/ha/{ConfigTriggerSystem-CC9lqi8Q.js → ConfigTriggerSystem-YI9WYYVM.js} +2 -2
- package/dist/interface/ha/{ConfigTriggerWebhook-BuBcgXqf.js → ConfigTriggerWebhook-58c2KgUe.js} +2 -2
- package/dist/interface/ha/{Console-DNc49UEt.js → Console-Coiqh32K.js} +4 -4
- package/dist/interface/ha/{CuiAutomationRunsDialog-Dj_iiZht.js → CuiAutomationRunsDialog-CJ2MGfEY.js} +2 -2
- package/dist/interface/ha/{CuiBottomSheet-DG7wOV7m.js → CuiBottomSheet-BlG9Pl9j.js} +1 -1
- package/dist/interface/ha/{CuiCameraRecordings-BlOZTfQ4.js → CuiCameraRecordings-DLXEB4Q7.js} +12 -12
- package/dist/interface/ha/{CuiCameraShares-BOn-mobi.js → CuiCameraShares-BCIeaM6u.js} +6 -6
- package/dist/interface/ha/{CuiCameraTable-D50FLiK8.js → CuiCameraTable-PYYC7sOu.js} +2 -2
- package/dist/interface/ha/{CuiChartTable-CfcVRvdZ.js → CuiChartTable-FQ2iR5Hd.js} +4 -4
- package/dist/interface/ha/{CuiConsole-UpN0Wihm.js → CuiConsole-C77k5q_-.js} +1 -1
- package/dist/interface/ha/{CuiDataTable-CpADXKNF.js → CuiDataTable-CIKQLseG.js} +2 -2
- package/dist/interface/ha/{CuiPluginCard-CT6ZfL9o.js → CuiPluginCard-DZNXKP_P.js} +42 -42
- package/dist/interface/ha/{CuiPluginOAuthButton-BJVKd6Ac.js → CuiPluginOAuthButton-DVf52_Zc.js} +2 -2
- package/dist/interface/ha/{CuiPluginTrustBadge-gb9GI24w.js → CuiPluginTrustBadge-CPljYiM8.js} +1 -1
- package/dist/interface/ha/{CuiQRCode-DqKDx9zR.js → CuiQRCode-oe8PLnLj.js} +2 -2
- package/dist/interface/ha/{CuiSchema-CHeJkx0k.js → CuiSchema-CQy94ZTs.js} +152 -152
- package/dist/interface/ha/{CuiTopNavbarItem-CFeI6ZYU.js → CuiTopNavbarItem-D6OHZLQY.js} +1 -1
- package/dist/interface/ha/{Faces-CTfvhhCj.js → Faces-DxAPvemO.js} +15 -15
- package/dist/interface/ha/{FirstSteps-C-WXJ8IL.js → FirstSteps-ZINTSaeL.js} +30 -30
- package/dist/interface/ha/{Floorplan-CDKTYN7B.js → Floorplan-DkbL8ppT.js} +155 -155
- package/dist/interface/ha/{Instances-n23yvN3L.js → Instances-totWtqd7.js} +13 -13
- package/dist/interface/ha/{Logs-Dfm0BWOQ.js → Logs-CzabIFja.js} +12 -12
- package/dist/interface/ha/{Menu-76kvdAEF.js → Menu-DcVBOQfw.js} +15 -15
- package/dist/interface/ha/{Metrics-lnivlTWm.js → Metrics-B_SN5hbp.js} +407 -407
- package/dist/interface/ha/{OAuthDeviceFlow-4ChaymHu.js → OAuthDeviceFlow-B28TPsTQ.js} +2 -2
- package/dist/interface/ha/{Plugin-BV8YA8aN.js → Plugin-B2PbbB8d.js} +208 -208
- package/dist/interface/ha/{PluginConsole-csf1Km7f.js → PluginConsole-_KeG4FvO.js} +4 -4
- package/dist/interface/ha/{PluginDetail-DTff6cbA.js → PluginDetail-GK_Fx14e.js} +7 -7
- package/dist/interface/ha/{PluginSearch-CdjxmFPN.js → PluginSearch-qSy4aqAW.js} +96 -96
- package/dist/interface/ha/{PluginUpdateProgress-ClyF4pbA.js → PluginUpdateProgress-C4Q2j6VO.js} +3 -3
- package/dist/interface/ha/{Plugins-_xOrqP36.js → Plugins-D0tvZHie.js} +54 -54
- package/dist/interface/ha/{Recordings-dTZv0pkp.js → Recordings-CpxJYaAa.js} +303 -307
- package/dist/interface/ha/{SensorEdit-DDRkZjmm.js → SensorEdit-8KtqLXEu.js} +377 -377
- package/dist/interface/ha/{SensorHistory-DSGlRITr.js → SensorHistory-CPTTsdjM.js} +2 -2
- package/dist/interface/ha/{Sensors-DjhGRUzM.js → Sensors-DJt_Hnn2.js} +102 -102
- package/dist/interface/ha/{Settings-DYuvz4de.js → Settings-B-OdG5pG.js} +10 -10
- package/dist/interface/ha/{SettingsAccount-DQAo8SnK.js → SettingsAccount-Ba2-2Lbi.js} +233 -233
- package/dist/interface/ha/{SettingsAppearance-_tbhpUA0.js → SettingsAppearance-D56HjSuQ.js} +7 -7
- package/dist/interface/ha/{SettingsAssistant-DSf-dYuD.js → SettingsAssistant-DglU0auc.js} +666 -621
- package/dist/interface/ha/{SettingsBackup-wLOa7xtw.js → SettingsBackup-DZx4McDz.js} +8 -8
- package/dist/interface/ha/{SettingsList-CYujivw5.js → SettingsList-D9nIGkbE.js} +4 -4
- package/dist/interface/ha/{SettingsMqtt-DbxJ-h3J.js → SettingsMqtt-BOszh--k.js} +180 -180
- package/dist/interface/ha/{SettingsNotifications-DO2-KJvq.js → SettingsNotifications-DBVpZfp0.js} +3 -3
- package/dist/interface/ha/{SettingsRecordings-C47i1UhI.js → SettingsRecordings-D3oJnizu.js} +3 -3
- package/dist/interface/ha/{SettingsRemote-BPvb-KLI.js → SettingsRemote-BOotvcOT.js} +54 -54
- package/dist/interface/ha/{SettingsSystem-BJPrv9JE.js → SettingsSystem-Bg11qoQX.js} +9 -9
- package/dist/interface/ha/{SettingsUsers-CcpCz6Y1.js → SettingsUsers-KpLs9Jnh.js} +25 -25
- package/dist/interface/ha/{Terminal-DT7-WNH1.js → Terminal-D6opTHYI.js} +168 -173
- package/dist/interface/ha/{Training-CqGBf8k1.js → Training-OB2KOQ7L.js} +537 -537
- package/dist/interface/ha/{Updates-CgdrqX6R.js → Updates-C_OvXJjd.js} +14 -14
- package/dist/interface/ha/{VariableInput-DOzSFgxT.js → VariableInput-CfaDp67S.js} +1 -1
- package/dist/interface/ha/{VersionsHandler-ItklhE2t.js → VersionsHandler-D1FVeYUZ.js} +10 -10
- package/dist/interface/ha/{VirtualSensorCreate-DbS3VqHC.js → VirtualSensorCreate-DJIgMVrt.js} +7 -7
- package/dist/interface/ha/{Workers-6PU7yUv1.js → Workers-cJMI4mYX.js} +26 -26
- package/dist/interface/ha/{api-anWolhVj.js → api-CDawdL4p.js} +1 -1
- package/dist/interface/ha/{api-Dv3Lk_g5.js → api-D2VzV4is.js} +9257 -9084
- package/dist/interface/ha/{assistant-B3m0Kgev.js → assistant-BmDAfChm.js} +1 -1
- package/dist/interface/ha/{auth-CAkpM_7A.js → auth-CvLz9C4w.js} +1 -1
- package/dist/interface/ha/{automationBlueprint-DwVvbKbw.js → automationBlueprint-BhNaeOZ1.js} +2 -2
- package/dist/interface/ha/{base-C-TYDHjS.js → base-XgWmQghV.js} +14 -3
- package/dist/interface/ha/cameraui-cards.js +1 -1
- package/dist/interface/ha/{cards-B0qagpBw.js → cards-MQrnU0T8.js} +1334 -1334
- package/dist/interface/ha/{config-C20itAPE.js → config-t_oAKFkJ.js} +1 -1
- package/dist/interface/ha/{esm-i8Tigknm.js → esm-C9XVFkXu.js} +4 -4
- package/dist/interface/ha/{mqtt-C6JvkA5E.js → mqtt-C20h1uze.js} +1 -1
- package/dist/interface/ha/{native-DBH9ocSq.js → native-BVUxNLM1.js} +4 -4
- package/dist/interface/ha/{notifications-gLmNZxwZ.js → notifications-Cy9DKiEn.js} +1 -1
- package/dist/interface/ha/{pinia-Du8AM917.js → pinia-BokSpDzj.js} +1 -0
- package/dist/interface/ha/{plugins-6x0kBuQb.js → plugins-jozYyBhV.js} +1 -1
- package/dist/interface/ha/{rooms-C-mLT6mX.js → rooms-DyfT3cXp.js} +1 -1
- package/dist/interface/ha/{server-DuikIt69.js → server-hCCjQjZE.js} +1 -1
- package/dist/interface/ha/{types-C0NcQ4Cz.js → types-RG0SckNR.js} +1 -1
- package/dist/interface/ha/{ungrouped-ooCH0Izh.js → ungrouped-BbyfoCQp.js} +19 -19
- package/dist/interface/ha/{updates-H8MlOQLC.js → updates-hUgVDgoD.js} +6 -6
- package/dist/interface/ha/{useAppVersion-DAUCV_cn.js → useAppVersion-wNhZDuvR.js} +1 -1
- package/dist/interface/ha/useKeyboardInset-Cmbvb_W3.js +27 -0
- package/dist/interface/ha/{useLogsSocket-BOLAXPuD.js → useLogsSocket-y9Aex3tJ.js} +1 -1
- package/dist/interface/ha/{useNavLayout-B7VoHzM1.js → useNavLayout-Ehb0t34k.js} +2 -2
- package/dist/interface/ha/{useServerRestart-qSH0bqwY.js → useServerRestart-CRSVcz3z.js} +1 -1
- package/dist/interface/ha/{useTabSwipe-DYzG_gVG.js → useTabSwipe-B_bseZkI.js} +1 -1
- package/dist/interface/ha/{useUpdateChannel-CK7JiWbG.js → useUpdateChannel-C_GU6lj6.js} +2 -2
- package/dist/interface/ha/{useUpdatesSocket-DrqkGMuR.js → useUpdatesSocket-CYgHb7UX.js} +1 -1
- package/dist/interface/ha/{useUserOptions-BteVUdaT.js → useUserOptions-pVYr-s3O.js} +1 -1
- package/dist/interface/ha/{web-D_q41D0i.js → web-CLbVbnCW.js} +5 -5
- package/dist/interface/index.html +28 -28
- package/dist/interface/sw.js +1 -1
- package/dist/server/package.json +3 -3
- package/dist/server/requirements.txt +1 -1
- package/dist/server/src/api/controllers/rooms.controller.js +3 -1
- package/dist/server/src/api/controllers/rooms.controller.js.map +1 -1
- package/dist/server/src/api/database/types.d.ts +1 -0
- package/dist/server/src/api/schemas/assistant.schema.d.ts +2 -0
- package/dist/server/src/api/schemas/assistant.schema.js +1 -0
- package/dist/server/src/api/schemas/assistant.schema.js.map +1 -1
- package/dist/server/src/api/services/cameras.service.d.ts +1 -0
- package/dist/server/src/api/services/cameras.service.js +8 -0
- package/dist/server/src/api/services/cameras.service.js.map +1 -1
- package/dist/server/src/assistant/manager.d.ts +1 -0
- package/dist/server/src/assistant/manager.js +1 -1
- package/dist/server/src/assistant/manager.js.map +1 -1
- package/dist/server/src/assistant/scheduler.js +8 -1
- package/dist/server/src/assistant/scheduler.js.map +1 -1
- package/dist/server/src/plugins/index.js +5 -4
- package/dist/server/src/plugins/index.js.map +1 -1
- package/npm-shrinkwrap.json +6 -6
- package/package.json +3 -3
- package/dist/interface/assets/Assistant-B1xdMAkA.js +0 -1
- package/dist/interface/assets/Automations-Bpw8olkc.js +0 -2
- package/dist/interface/assets/Camera-B4ojNnKb.css +0 -1
- package/dist/interface/assets/Camera-BpFfZDaS.js +0 -2
- package/dist/interface/assets/Camview-C16pyCZk.js +0 -1
- package/dist/interface/assets/CuiAssistantConversation-CRNCKRHz.js +0 -5
- package/dist/interface/assets/CuiAssistantConversation-DQ0wOJvV.css +0 -1
- package/dist/interface/assets/CuiBottomSheet-CYi5c3fP.js +0 -1
- package/dist/interface/assets/CuiCameraPipCard-Cb_Qbly6.js +0 -1
- package/dist/interface/assets/CuiCameraTable-BgL5FZso.js +0 -1
- package/dist/interface/assets/CuiLightControl-CLYl5pfN.js +0 -1
- package/dist/interface/assets/CuiPluginCard-CC1oXY16.js +0 -2
- package/dist/interface/assets/Faces-1xd5yGuO.js +0 -1
- package/dist/interface/assets/FirstSteps-E9cMqa0a.js +0 -1
- package/dist/interface/assets/Floorplan-BovV_ATh.js +0 -1
- package/dist/interface/assets/Instances-BbxyB7vR.js +0 -1
- package/dist/interface/assets/Metrics-BgXrNl38.js +0 -12
- package/dist/interface/assets/Plugin-CDNywaVE.js +0 -1
- package/dist/interface/assets/PluginSearch-xNIlfXk4.js +0 -1
- package/dist/interface/assets/Recordings-BHT8Vvv_.js +0 -1
- package/dist/interface/assets/Recordings-DwuojaAw.css +0 -1
- package/dist/interface/assets/Sensors-Cza4Et2c.js +0 -2
- package/dist/interface/assets/Settings-Cj0leoGd.js +0 -1
- package/dist/interface/assets/SettingsAccount-COkcBBSz.js +0 -1
- package/dist/interface/assets/SettingsAccount-DjrJdssy.js +0 -1
- package/dist/interface/assets/SettingsAppearance-D20YW7Vq.js +0 -1
- package/dist/interface/assets/SettingsAssistant-CDdbbG-c.css +0 -1
- package/dist/interface/assets/SettingsAssistant-DKWDp1AI.js +0 -1
- package/dist/interface/assets/Training-DfgE_dA8.js +0 -1
- package/dist/interface/assets/Updates-cCvbFq3w.js +0 -2
- package/dist/interface/assets/Workers-Ba37_3cY.js +0 -2
- package/dist/interface/assets/api-C1mraOYr.js +0 -4
- package/dist/interface/assets/api-z8ZVnoOl.css +0 -2
- package/dist/interface/assets/cloudHandoff-DkUx4m3P.js +0 -1
- package/dist/interface/assets/esm-0kxqa_1s.js +0 -1
- package/dist/interface/assets/esm-4p_M5mFV.js +0 -1
- package/dist/interface/assets/esm-8G-vO1KQ.js +0 -1
- package/dist/interface/assets/esm-8cB56ICb.js +0 -1
- package/dist/interface/assets/esm-B92csSEb.js +0 -1
- package/dist/interface/assets/esm-BHiNTIiN.js +0 -1
- package/dist/interface/assets/esm-Bu9PMLmw.js +0 -1
- package/dist/interface/assets/esm-CS6Ra46d.js +0 -1
- package/dist/interface/assets/esm-CWvQWALL.js +0 -1
- package/dist/interface/assets/esm-D2UDrwmt.js +0 -1
- package/dist/interface/assets/esm-D8OHF2X1.js +0 -1
- package/dist/interface/assets/esm-DrXkS8eG.js +0 -1
- package/dist/interface/assets/esm-pfoHiO1a.js +0 -1
- package/dist/interface/assets/esm-tJSCF7Vh.js +0 -1
- package/dist/interface/assets/main-BK3kmiG2.js +0 -3
- package/dist/interface/assets/native-BEkWOGyD.js +0 -1
- package/dist/interface/assets/native-ugMg173F.js +0 -1
- package/dist/interface/assets/plugin-eafNQWg2.js +0 -1
- package/dist/interface/assets/useKeyboardInset-DkUn62i7.js +0 -1
- package/dist/interface/assets/web-3OOGlctS.js +0 -1
- package/dist/interface/assets/web-5NFVd9gs.js +0 -1
- package/dist/interface/assets/web-A4yovlXr.js +0 -1
- package/dist/interface/assets/web-BBC3YoWX.js +0 -1
- package/dist/interface/assets/web-BjKL51lK-DUIsII0n.js +0 -1
- package/dist/interface/assets/web-C2-YAfsx.js +0 -1
- package/dist/interface/assets/web-CUL_MhvM.js +0 -1
- package/dist/interface/assets/web-CZVCXYLV.js +0 -1
- package/dist/interface/assets/web-DJ-LUxlV.js +0 -1
- package/dist/interface/assets/web-DNsEGLGS.js +0 -1
- package/dist/interface/assets/web-DZsU0QT_.js +0 -1
- package/dist/interface/assets/web-MoyOTbiU.js +0 -1
- package/dist/interface/assets/web-avRH_3t7.js +0 -1
- package/dist/interface/ha/Camera-CerkQGbZ.js +0 -654
|
@@ -1,123 +1,123 @@
|
|
|
1
1
|
import { m as e } from "./ripple-ZDATPc2w.js";
|
|
2
|
-
import { D as t, G as n, H as r, I as i, Jt as a, St as o, Tt as s, Wt as
|
|
3
|
-
import { t as
|
|
4
|
-
import { t as
|
|
5
|
-
import { t as
|
|
6
|
-
import { $i as
|
|
7
|
-
import { C as
|
|
8
|
-
import { n as
|
|
9
|
-
import { t as
|
|
10
|
-
import { n as
|
|
11
|
-
import { t as
|
|
12
|
-
import { t as
|
|
13
|
-
import { t as
|
|
14
|
-
import { t as
|
|
15
|
-
import { t as
|
|
16
|
-
import { t as
|
|
17
|
-
import { n as
|
|
18
|
-
import { u as
|
|
19
|
-
import { t as
|
|
20
|
-
import { t as
|
|
21
|
-
import { t as
|
|
22
|
-
import { t as
|
|
2
|
+
import { D as t, G as n, H as r, I as i, Jt as a, St as o, Tt as s, Wt as ee, Y as c, _t as l, d as u, f as d, ft as f, gt as p, kt as m, l as h, lt as g, ot as te, p as _, qt as v, r as y, rt as b, u as x, ut as ne, v as S, wt as C, x as w, xt as T, y as E, yt as D } from "./runtime-core.esm-bundler-_TfE0DWz.js";
|
|
3
|
+
import { t as re } from "./tooltip-BDrlgLof.js";
|
|
4
|
+
import { t as ie } from "./chevron-down-BNj8w2js.js";
|
|
5
|
+
import { t as ae } from "./tag-mchuCAPR.js";
|
|
6
|
+
import { $i as O, $r as oe, Ar as se, B as ce, Bi as le, Ci as k, Dn as ue, Dr as A, Dt as de, Er as fe, Jt as pe, L as me, Or as he, Ot as ge, R as j, Si as _e, Tr as ve, U as ye, bi as M, c as be, d as N, et as xe, fi as P, gt as F, hn as Se, kt as I, lr as L, m as Ce, q as R, st as we, ua as Te, ur as Ee, z as De } from "./api-D2VzV4is.js";
|
|
7
|
+
import { C as Oe, M as z, S as ke, _ as Ae, b as je, i as Me, w as Ne } from "./intercomService-B7HkLs6z.js";
|
|
8
|
+
import { n as Pe } from "./vue-i18n-D5EAy78K.js";
|
|
9
|
+
import { t as Fe } from "./button-BouAFgf5.js";
|
|
10
|
+
import { n as Ie, t as B } from "./inputicon-1w06U-Jl.js";
|
|
11
|
+
import { t as Le } from "./inputtext-C_ygnPrC.js";
|
|
12
|
+
import { t as Re } from "./checkbox-CAKzZcqk.js";
|
|
13
|
+
import { t as V } from "./close-CxFbonhd.js";
|
|
14
|
+
import { t as ze } from "./progressbar-CaUaM8Bt.js";
|
|
15
|
+
import { t as Be } from "./information-outline-DSSRyysT.js";
|
|
16
|
+
import { t as Ve } from "./search-BViwEHdF.js";
|
|
17
|
+
import { n as He, t as Ue } from "./cloud-check-aaxn1VZr.js";
|
|
18
|
+
import { u as We } from "./cards-MQrnU0T8.js";
|
|
19
|
+
import { t as Ge } from "./trash-can-outline-CBwv40Ck.js";
|
|
20
|
+
import { t as Ke } from "./back-filled-CaxrZv0Q.js";
|
|
21
|
+
import { t as qe } from "./help-circle-outline-BniRuJRv.js";
|
|
22
|
+
import { t as Je } from "./settings-lWJfHaif.js";
|
|
23
23
|
//#region ~icons/mdi/cloud-check-outline
|
|
24
|
-
var
|
|
24
|
+
var Ye = {
|
|
25
25
|
viewBox: "0 0 24 24",
|
|
26
26
|
width: "1.2em",
|
|
27
27
|
height: "1.2em"
|
|
28
28
|
};
|
|
29
|
-
function
|
|
30
|
-
return r(),
|
|
29
|
+
function Xe(e, t) {
|
|
30
|
+
return r(), _("svg", Ye, [...t[0] ||= [x("path", {
|
|
31
31
|
fill: "currentColor",
|
|
32
32
|
d: "M13 19c0 .34.04.67.09 1H6.5c-1.5 0-2.81-.5-3.89-1.57C1.54 17.38 1 16.09 1 14.58q0-1.95 1.17-3.48C3.34 9.57 4 9.43 5.25 9.15c.42-1.53 1.25-2.77 2.5-3.72S10.42 4 12 4c1.95 0 3.6.68 4.96 2.04S19 9.05 19 11c1.15.13 2.1.63 2.86 1.5c.51.57.84 1.21 1 1.92A5.9 5.9 0 0 0 19 13h-2v-2c0-1.38-.5-2.56-1.46-3.54C14.56 6.5 13.38 6 12 6s-2.56.5-3.54 1.46C7.5 8.44 7 9.62 7 11h-.5c-.97 0-1.79.34-2.47 1.03c-.69.68-1.03 1.5-1.03 2.47s.34 1.79 1.03 2.5c.68.66 1.5 1 2.47 1h6.59c-.05.33-.09.66-.09 1m4.75.43l-1.59-1.59L15 19l2.75 3l4.75-4.75l-1.16-1.41z"
|
|
33
33
|
}, null, -1)]]);
|
|
34
34
|
}
|
|
35
|
-
var
|
|
35
|
+
var Ze = l({
|
|
36
36
|
name: "mdi-cloud-check-outline",
|
|
37
|
-
render:
|
|
38
|
-
}),
|
|
37
|
+
render: Xe
|
|
38
|
+
}), H = {
|
|
39
39
|
viewBox: "0 0 24 24",
|
|
40
40
|
width: "1.2em",
|
|
41
41
|
height: "1.2em"
|
|
42
42
|
};
|
|
43
|
-
function
|
|
44
|
-
return r(),
|
|
43
|
+
function U(e, t) {
|
|
44
|
+
return r(), _("svg", H, [...t[0] ||= [x("path", {
|
|
45
45
|
fill: "currentColor",
|
|
46
46
|
d: "M6 13h12v-2H6M3 6v2h18V6M10 18h4v-2h-4z"
|
|
47
47
|
}, null, -1)]]);
|
|
48
48
|
}
|
|
49
|
-
var
|
|
49
|
+
var Qe = l({
|
|
50
50
|
name: "mdi-filter-variant",
|
|
51
|
-
render:
|
|
52
|
-
}),
|
|
51
|
+
render: U
|
|
52
|
+
}), $e = {
|
|
53
53
|
viewBox: "0 0 24 24",
|
|
54
54
|
width: "1.2em",
|
|
55
55
|
height: "1.2em"
|
|
56
56
|
};
|
|
57
|
-
function
|
|
58
|
-
return r(),
|
|
57
|
+
function et(e, t) {
|
|
58
|
+
return r(), _("svg", $e, [...t[0] ||= [x("path", {
|
|
59
59
|
fill: "currentColor",
|
|
60
60
|
d: "M6.5 20q-2.28 0-3.89-1.57Q1 16.85 1 14.58q0-1.95 1.17-3.48q1.18-1.53 3.08-1.95q.63-2.3 2.5-3.72Q9.63 4 12 4q2.93 0 4.96 2.04Q19 8.07 19 11q1.73.2 2.86 1.5q1.14 1.28 1.14 3q0 1.88-1.31 3.19T18.5 20H13q-.82 0-1.41-.59Q11 18.83 11 18v-5.15L9.4 14.4L8 13l4-4l4 4l-1.4 1.4l-1.6-1.55V18h5.5q1.05 0 1.77-.73q.73-.72.73-1.77t-.73-1.77Q19.55 13 18.5 13H17v-2q0-2.07-1.46-3.54Q14.08 6 12 6Q9.93 6 8.46 7.46Q7 8.93 7 11h-.5q-1.45 0-2.47 1.03Q3 13.05 3 14.5T4.03 17q1.02 1 2.47 1H9v2m3-7"
|
|
61
61
|
}, null, -1)]]);
|
|
62
62
|
}
|
|
63
|
-
var
|
|
63
|
+
var tt = l({
|
|
64
64
|
name: "mdi-cloud-upload-outline",
|
|
65
|
-
render:
|
|
66
|
-
}),
|
|
67
|
-
async function
|
|
68
|
-
return (await
|
|
65
|
+
render: et
|
|
66
|
+
}), nt = 200;
|
|
67
|
+
async function rt(e = {}, { signal: t } = {}) {
|
|
68
|
+
return (await O.get("/training/candidates", {
|
|
69
69
|
params: e,
|
|
70
70
|
signal: t
|
|
71
71
|
})).data;
|
|
72
72
|
}
|
|
73
|
-
async function
|
|
74
|
-
return (await
|
|
73
|
+
async function it(e, t) {
|
|
74
|
+
return (await O.patch(`/training/candidates/${e}`, t)).data;
|
|
75
75
|
}
|
|
76
|
-
async function
|
|
77
|
-
await
|
|
76
|
+
async function W(e) {
|
|
77
|
+
await O.delete(`/training/candidates/${e}`);
|
|
78
78
|
}
|
|
79
|
-
async function
|
|
79
|
+
async function G(e) {
|
|
80
80
|
let t = 0;
|
|
81
|
-
for (let n = 0; n < e.length; n +=
|
|
82
|
-
let r = await
|
|
81
|
+
for (let n = 0; n < e.length; n += nt) {
|
|
82
|
+
let r = await O.post("/training/candidates/submit", { ids: e.slice(n, n + nt) });
|
|
83
83
|
t += r.data.queued;
|
|
84
84
|
}
|
|
85
85
|
return { queued: t };
|
|
86
86
|
}
|
|
87
|
-
async function
|
|
88
|
-
return (await
|
|
87
|
+
async function at({ cursor: e, signal: t } = {}) {
|
|
88
|
+
return (await O.get("/training/submissions", {
|
|
89
89
|
params: e ? { cursor: e } : void 0,
|
|
90
90
|
signal: t
|
|
91
91
|
})).data;
|
|
92
92
|
}
|
|
93
|
-
async function
|
|
94
|
-
await
|
|
93
|
+
async function K(e) {
|
|
94
|
+
await O.delete(`/training/submissions/${e}`);
|
|
95
95
|
}
|
|
96
96
|
async function q({ signal: e } = {}) {
|
|
97
|
-
return (await
|
|
97
|
+
return (await O.get("/training/settings", { signal: e })).data;
|
|
98
98
|
}
|
|
99
99
|
async function ot(e) {
|
|
100
|
-
return (await
|
|
100
|
+
return (await O.patch("/training/settings", e)).data;
|
|
101
101
|
}
|
|
102
102
|
var st = class {
|
|
103
103
|
queryClient = le();
|
|
104
104
|
getCandidatesQuery() {
|
|
105
|
-
return
|
|
105
|
+
return M({
|
|
106
106
|
queryKey: ["training-candidates"],
|
|
107
|
-
queryFn: ({ signal: e }) =>
|
|
107
|
+
queryFn: ({ signal: e }) => rt({}, { signal: e }),
|
|
108
108
|
staleTime: 5e3
|
|
109
109
|
});
|
|
110
110
|
}
|
|
111
111
|
getSettingsQuery() {
|
|
112
|
-
return
|
|
112
|
+
return M({
|
|
113
113
|
queryKey: ["training-settings"],
|
|
114
114
|
queryFn: ({ signal: e }) => q({ signal: e }),
|
|
115
115
|
staleTime: 3e4
|
|
116
116
|
});
|
|
117
117
|
}
|
|
118
118
|
patchCandidateMutation() {
|
|
119
|
-
return
|
|
120
|
-
mutationFn: ({ id: e, patch: t }) =>
|
|
119
|
+
return k({
|
|
120
|
+
mutationFn: ({ id: e, patch: t }) => it(e, t),
|
|
121
121
|
onSuccess: async () => {
|
|
122
122
|
await this.queryClient.refetchQueries({
|
|
123
123
|
queryKey: ["training-candidates"],
|
|
@@ -127,8 +127,8 @@ var st = class {
|
|
|
127
127
|
});
|
|
128
128
|
}
|
|
129
129
|
deleteCandidateMutation() {
|
|
130
|
-
return
|
|
131
|
-
mutationFn:
|
|
130
|
+
return k({
|
|
131
|
+
mutationFn: W,
|
|
132
132
|
onSuccess: async () => {
|
|
133
133
|
await this.queryClient.refetchQueries({
|
|
134
134
|
queryKey: ["training-candidates"],
|
|
@@ -138,11 +138,11 @@ var st = class {
|
|
|
138
138
|
});
|
|
139
139
|
}
|
|
140
140
|
deleteSubmissionMutation() {
|
|
141
|
-
return
|
|
141
|
+
return k({ mutationFn: K });
|
|
142
142
|
}
|
|
143
143
|
submitCandidatesMutation() {
|
|
144
|
-
return
|
|
145
|
-
mutationFn:
|
|
144
|
+
return k({
|
|
145
|
+
mutationFn: G,
|
|
146
146
|
onSuccess: async () => {
|
|
147
147
|
await this.queryClient.refetchQueries({
|
|
148
148
|
queryKey: ["training-candidates"],
|
|
@@ -152,7 +152,7 @@ var st = class {
|
|
|
152
152
|
});
|
|
153
153
|
}
|
|
154
154
|
patchSettingsMutation() {
|
|
155
|
-
return
|
|
155
|
+
return k({
|
|
156
156
|
mutationFn: ot,
|
|
157
157
|
onSuccess: async () => {
|
|
158
158
|
await this.queryClient.refetchQueries({
|
|
@@ -168,12 +168,12 @@ var st = class {
|
|
|
168
168
|
height: "1.2em"
|
|
169
169
|
};
|
|
170
170
|
function J(e, t) {
|
|
171
|
-
return r(),
|
|
171
|
+
return r(), _("svg", ct, [...t[0] ||= [x("path", {
|
|
172
172
|
fill: "currentColor",
|
|
173
173
|
d: "M17 14h2v3h3v2h-3v3h-2v-3h-3v-2h3zm-6 2L2 9l9-7l9 7zm0 2.54l1-.79V18c0 .71.12 1.39.35 2L11 21.07l-9-7l1.62-1.26z"
|
|
174
174
|
}, null, -1)]]);
|
|
175
175
|
}
|
|
176
|
-
var lt =
|
|
176
|
+
var lt = l({
|
|
177
177
|
name: "mdi-layers-plus",
|
|
178
178
|
render: J
|
|
179
179
|
}), ut = [
|
|
@@ -186,7 +186,7 @@ var lt = u({
|
|
|
186
186
|
], Y = { desktop: {
|
|
187
187
|
maxWidth: "1280px",
|
|
188
188
|
width: "85vw"
|
|
189
|
-
} }, X =
|
|
189
|
+
} }, X = D({ progress: null }), dt = null, ft = null, Z = /* @__PURE__ */ new Set(), Q = /* @__PURE__ */ new Set();
|
|
190
190
|
function pt(e, t) {
|
|
191
191
|
for (let n of e) try {
|
|
192
192
|
n(t);
|
|
@@ -202,8 +202,8 @@ function ht() {
|
|
|
202
202
|
mt(), pt(Z, {}), pt(Q, void 0);
|
|
203
203
|
}
|
|
204
204
|
function gt() {
|
|
205
|
-
return ft || (dt =
|
|
206
|
-
let e =
|
|
205
|
+
return ft || (dt = f(!0), dt.run(() => {
|
|
206
|
+
let e = P("/training");
|
|
207
207
|
ft = e, e.on("candidates-changed", (e) => pt(Z, e ?? {})), e.on("submit-progress", (e) => {
|
|
208
208
|
X.progress = e, pt(Z, {});
|
|
209
209
|
}), e.onReady(ht);
|
|
@@ -223,7 +223,7 @@ function _t() {
|
|
|
223
223
|
X.progress = null;
|
|
224
224
|
}
|
|
225
225
|
return {
|
|
226
|
-
submitProgress:
|
|
226
|
+
submitProgress: h(() => X.progress),
|
|
227
227
|
connect: e,
|
|
228
228
|
onCandidatesChanged: t,
|
|
229
229
|
onResync: n,
|
|
@@ -294,7 +294,7 @@ var vt = { class: "flex items-center justify-between gap-2 text-sm" }, yt = { cl
|
|
|
294
294
|
}, Gt = { class: "flex flex-col items-center gap-0.5" }, Kt = { class: "flex items-center justify-center gap-1.5" }, qt = { class: "text-muted text-sm text-center" }, Jt = { class: "text-muted text-sm text-center" }, Yt = {
|
|
295
295
|
key: 1,
|
|
296
296
|
class: "grid grid-cols-[auto_1fr] gap-x-3 gap-y-1 justify-center mx-auto text-sm text-muted"
|
|
297
|
-
}, Xt = .01, Zt = .006, Qt = 26, $t = 60, en = 400, tn = 110, nn = 2, rn = 80, an = 50, on = .003, sn = .5, cn = /*#__PURE__*/
|
|
297
|
+
}, Xt = .01, Zt = .006, Qt = 26, $t = 60, en = 400, tn = 110, nn = 2, rn = 80, an = 50, on = .003, sn = .5, cn = /*#__PURE__*/ fe(/* @__PURE__ */ w({
|
|
298
298
|
__name: "TrainingBoxEditor",
|
|
299
299
|
props: {
|
|
300
300
|
candidates: {},
|
|
@@ -304,45 +304,45 @@ var vt = { class: "flex items-center justify-between gap-2 text-sm" }, yt = { cl
|
|
|
304
304
|
onSave: { type: Function },
|
|
305
305
|
onDelete: { type: Function }
|
|
306
306
|
},
|
|
307
|
-
setup(
|
|
308
|
-
let
|
|
307
|
+
setup(l, { expose: f }) {
|
|
308
|
+
let w = l, ie = t("dialogRef"), { t: O, te: oe } = Pe(), se = _e(), ce = _t(), le = [
|
|
309
309
|
"nw",
|
|
310
310
|
"ne",
|
|
311
311
|
"sw",
|
|
312
312
|
"se"
|
|
313
|
-
],
|
|
313
|
+
], k = /* @__PURE__ */ new Map(), A = D(/* @__PURE__ */ new Set()), de = D(/* @__PURE__ */ new Set()), fe = o(/* @__PURE__ */ new Map()), pe = 0, me = Math.max(0, w.candidates.findIndex((e) => e.id === w.startId)), he = Ce(), ge = b("rootRef"), j = b("labelMenuRef"), ve = b("stageRef"), ye = b("frameRef"), M = b("svgRef"), N = T(w.candidates[me]?.boxes.map((e) => ({ ...e })) ?? []), xe = T({
|
|
314
314
|
w: 16,
|
|
315
315
|
h: 9
|
|
316
|
-
}),
|
|
316
|
+
}), P = T(null), F = T(null), R = T(-1), Te = T(!1), De = T(!1), Oe = Ne("(any-pointer: fine)"), z = T(null), ke = null, Me = T(-1), Ie = T("person"), B = T(me), Re = C([]), V = T(!1), { zoom: ze, pan: Be, constraining: Ve, minimapStyle: He, minimapBoxStyle: Ue, onZoomPan: Ke, onDoubleClick: Je, onTouchStart: Ye, onTouchEnd: Xe, reset: Ze } = we(ve, ye), { height: H } = Ae(ye), U = h(() => w.candidates[B.value]), Qe = h(() => w.candidates.slice(0, B.value + 1).filter((e) => !A.has(e.id)).length), $e = h(() => w.candidates.filter((e) => !A.has(e.id)).length), et = h(() => w.candidates.slice(0, B.value).some((e) => !A.has(e.id))), tt = h(() => w.candidates.slice(B.value + 1).some((e) => !A.has(e.id))), nt = h(() => de.has(U.value.id) ? "verified" : U.value.status), rt = h(() => N.value.map((e, t) => ({
|
|
317
317
|
box: e,
|
|
318
318
|
i: t
|
|
319
|
-
})).sort((e, t) => st(e) - st(t))),
|
|
320
|
-
let e =
|
|
319
|
+
})).sort((e, t) => st(e) - st(t))), it = h(() => new Map(rt.value.map(({ i: e }, t) => [e, t + 1]))), W = h(() => N.value[R.value]), G = h(() => {
|
|
320
|
+
let e = N.value[R.value];
|
|
321
321
|
return e?.label === "license_plate" ? e : null;
|
|
322
|
-
}),
|
|
322
|
+
}), at = h(() => V.value ? Re.value.filter((e) => !N.value.some((t) => Z(t, e) >= sn)) : []), K = h(() => [...ut.map((e) => ({
|
|
323
323
|
key: e,
|
|
324
324
|
label: ct(e),
|
|
325
325
|
icon: Se(e).icon,
|
|
326
326
|
iconProps: { style: { color: Se(e).color } },
|
|
327
|
-
active:
|
|
327
|
+
active: N.value[Me.value]?.label === e,
|
|
328
328
|
onClick: () => Sn(e)
|
|
329
329
|
})), {
|
|
330
330
|
key: "remove",
|
|
331
|
-
label:
|
|
332
|
-
icon:
|
|
331
|
+
label: O("components.training_editor.remove_box"),
|
|
332
|
+
icon: Ge,
|
|
333
333
|
iconProps: { class: "text-red-500" },
|
|
334
334
|
labelProps: { class: "text-red-500" },
|
|
335
|
-
onClick: () => wn(
|
|
336
|
-
}]), q =
|
|
337
|
-
let t =
|
|
335
|
+
onClick: () => wn(Me.value)
|
|
336
|
+
}]), q = h(() => (e) => {
|
|
337
|
+
let t = H.value || 360;
|
|
338
338
|
return e.y * t >= Qt ? "above" : t - (e.y + e.height) * t >= Qt ? "below" : "inside";
|
|
339
|
-
}), ot =
|
|
339
|
+
}), ot = h(() => (e) => e.x > .7);
|
|
340
340
|
function st({ box: e, i: t }) {
|
|
341
|
-
return t ===
|
|
341
|
+
return t === R.value ? 2 ** 53 - 1 : fe.get(s(e)) ?? t;
|
|
342
342
|
}
|
|
343
343
|
function ct(e) {
|
|
344
344
|
let t = `components.training_editor.labels.${e}`;
|
|
345
|
-
return
|
|
345
|
+
return oe(t) ? O(t) : e;
|
|
346
346
|
}
|
|
347
347
|
function J(e) {
|
|
348
348
|
return Se(e);
|
|
@@ -376,13 +376,13 @@ var vt = { class: "flex items-center justify-between gap-2 text-sm" }, yt = { cl
|
|
|
376
376
|
};
|
|
377
377
|
}
|
|
378
378
|
function pt(e) {
|
|
379
|
-
|
|
379
|
+
N.value.push({
|
|
380
380
|
...e,
|
|
381
381
|
confidence: 1
|
|
382
|
-
}),
|
|
382
|
+
}), R.value = N.value.length - 1;
|
|
383
383
|
}
|
|
384
384
|
function mt() {
|
|
385
|
-
for (let e of
|
|
385
|
+
for (let e of at.value) N.value.push({
|
|
386
386
|
...e,
|
|
387
387
|
confidence: 1
|
|
388
388
|
});
|
|
@@ -395,7 +395,7 @@ var vt = { class: "flex items-center justify-between gap-2 text-sm" }, yt = { cl
|
|
|
395
395
|
});
|
|
396
396
|
}
|
|
397
397
|
function gt(e) {
|
|
398
|
-
let t =
|
|
398
|
+
let t = M.value?.getBoundingClientRect();
|
|
399
399
|
return !t || t.width === 0 || t.height === 0 ? {
|
|
400
400
|
x: 0,
|
|
401
401
|
y: 0
|
|
@@ -405,13 +405,13 @@ var vt = { class: "flex items-center justify-between gap-2 text-sm" }, yt = { cl
|
|
|
405
405
|
};
|
|
406
406
|
}
|
|
407
407
|
function cn(e, t) {
|
|
408
|
-
|
|
408
|
+
P.value = {
|
|
409
409
|
...t,
|
|
410
410
|
moved: !1
|
|
411
|
-
},
|
|
411
|
+
}, M.value?.setPointerCapture(e.pointerId);
|
|
412
412
|
}
|
|
413
413
|
function ln(e) {
|
|
414
|
-
if (
|
|
414
|
+
if (j.value?.hide(), ze.value > 1 || !e.isPrimary) return;
|
|
415
415
|
let { x: t, y: n } = gt(e);
|
|
416
416
|
cn(e, {
|
|
417
417
|
mode: "draw",
|
|
@@ -419,7 +419,7 @@ var vt = { class: "flex items-center justify-between gap-2 text-sm" }, yt = { cl
|
|
|
419
419
|
startX: t,
|
|
420
420
|
startY: n,
|
|
421
421
|
origin: {
|
|
422
|
-
label:
|
|
422
|
+
label: Ie.value,
|
|
423
423
|
confidence: 1,
|
|
424
424
|
x: t,
|
|
425
425
|
y: n,
|
|
@@ -431,39 +431,39 @@ var vt = { class: "flex items-center justify-between gap-2 text-sm" }, yt = { cl
|
|
|
431
431
|
function un(e, t) {
|
|
432
432
|
if (!t.isPrimary) return;
|
|
433
433
|
let { x: n, y: r } = gt(t);
|
|
434
|
-
|
|
434
|
+
R.value = e, cn(t, {
|
|
435
435
|
mode: "move",
|
|
436
436
|
index: e,
|
|
437
437
|
startX: n,
|
|
438
438
|
startY: r,
|
|
439
|
-
origin: { ...
|
|
439
|
+
origin: { ...N.value[e] }
|
|
440
440
|
});
|
|
441
441
|
}
|
|
442
442
|
function dn(e, t, n) {
|
|
443
443
|
if (!n.isPrimary) return;
|
|
444
|
-
|
|
444
|
+
j.value?.hide();
|
|
445
445
|
let { x: r, y: i } = gt(n);
|
|
446
|
-
|
|
446
|
+
R.value = e, cn(n, {
|
|
447
447
|
mode: "resize",
|
|
448
448
|
index: e,
|
|
449
449
|
corner: t,
|
|
450
450
|
startX: r,
|
|
451
451
|
startY: i,
|
|
452
|
-
origin: { ...
|
|
452
|
+
origin: { ...N.value[e] }
|
|
453
453
|
});
|
|
454
454
|
}
|
|
455
455
|
function fn(e) {
|
|
456
|
-
e.touches.length > 1 &&
|
|
456
|
+
e.touches.length > 1 && P.value && (P.value = null, F.value = null, z.value = null), Ye(e);
|
|
457
457
|
}
|
|
458
458
|
function pn(e) {
|
|
459
|
-
let t =
|
|
459
|
+
let t = P.value;
|
|
460
460
|
if (!t) return;
|
|
461
461
|
let { x: n, y: r } = gt(e);
|
|
462
|
-
if (Math.hypot(n - t.startX, r - t.startY) > Zt && (t.moved = !0), e.pointerType === "touch" && t.moved && (hn(t) ? gn(e) :
|
|
462
|
+
if (Math.hypot(n - t.startX, r - t.startY) > Zt && (t.moved = !0), e.pointerType === "touch" && t.moved && (hn(t) ? gn(e) : z.value = null), t.mode === "draw") {
|
|
463
463
|
if (t.moved) {
|
|
464
464
|
let e = bn(t.startX, t.startY, n, r);
|
|
465
|
-
|
|
466
|
-
label:
|
|
465
|
+
F.value = e.width >= Xt && e.height >= Xt ? {
|
|
466
|
+
label: Ie.value,
|
|
467
467
|
confidence: 1,
|
|
468
468
|
...e
|
|
469
469
|
} : null;
|
|
@@ -472,37 +472,37 @@ var vt = { class: "flex items-center justify-between gap-2 text-sm" }, yt = { cl
|
|
|
472
472
|
}
|
|
473
473
|
if (t.mode === "move") {
|
|
474
474
|
if (!t.moved) return;
|
|
475
|
-
let e =
|
|
475
|
+
let e = N.value[t.index];
|
|
476
476
|
e.x = Math.min(1 - t.origin.width, Math.max(0, t.origin.x + (n - t.startX))), e.y = Math.min(1 - t.origin.height, Math.max(0, t.origin.y + (r - t.startY)));
|
|
477
477
|
return;
|
|
478
478
|
}
|
|
479
479
|
let i = t.corner === "nw" || t.corner === "sw" ? t.origin.x + t.origin.width : t.origin.x, a = t.corner === "nw" || t.corner === "ne" ? t.origin.y + t.origin.height : t.origin.y;
|
|
480
|
-
Object.assign(
|
|
480
|
+
Object.assign(N.value[t.index], bn(i, a, n, r));
|
|
481
481
|
}
|
|
482
482
|
function mn(e) {
|
|
483
|
-
let t =
|
|
484
|
-
if (
|
|
483
|
+
let t = P.value;
|
|
484
|
+
if (P.value = null, z.value = null, t) {
|
|
485
485
|
if (t.mode === "draw") {
|
|
486
|
-
|
|
486
|
+
F.value && F.value.width >= Xt && F.value.height >= Xt ? (N.value.push({ ...F.value }), R.value = N.value.length - 1) : t.moved || (R.value = -1), F.value = null;
|
|
487
487
|
return;
|
|
488
488
|
}
|
|
489
489
|
t.mode === "move" && !t.moved && xn(t.index, e);
|
|
490
490
|
}
|
|
491
491
|
}
|
|
492
492
|
function hn(e) {
|
|
493
|
-
let t =
|
|
493
|
+
let t = M.value?.getBoundingClientRect();
|
|
494
494
|
if (!t || t.width === 0) return !1;
|
|
495
|
-
let n = e.mode === "draw" ?
|
|
495
|
+
let n = e.mode === "draw" ? F.value : N.value[e.index];
|
|
496
496
|
return !n || Math.max(n.width * t.width, n.height * t.height) <= an;
|
|
497
497
|
}
|
|
498
498
|
function gn(e) {
|
|
499
|
-
let t =
|
|
499
|
+
let t = ye.value?.getBoundingClientRect(), n = ve.value?.getBoundingClientRect();
|
|
500
500
|
if (!t || !n || t.width === 0 || t.height === 0) {
|
|
501
|
-
|
|
501
|
+
z.value = null;
|
|
502
502
|
return;
|
|
503
503
|
}
|
|
504
504
|
let r = tn / 2, i = Math.min(Math.max(e.clientX - n.left, 59), n.width - r - 4), a = e.clientY - n.top - rn;
|
|
505
|
-
a - r < 4 && (a = e.clientY - n.top + rn),
|
|
505
|
+
a - r < 4 && (a = e.clientY - n.top + rn), z.value = {
|
|
506
506
|
x: i,
|
|
507
507
|
y: a,
|
|
508
508
|
frameW: t.width,
|
|
@@ -514,21 +514,21 @@ var vt = { class: "flex items-center justify-between gap-2 text-sm" }, yt = { cl
|
|
|
514
514
|
function _n(e) {
|
|
515
515
|
let t = e instanceof HTMLElement || e instanceof SVGElement ? e : null;
|
|
516
516
|
if (!t || ve.value?.contains(t) || t.closest(".p-dialog-header") || t.closest("button")) return !1;
|
|
517
|
-
let n =
|
|
518
|
-
return !(n && n !==
|
|
517
|
+
let n = ge.value?.closest(".p-dialog-content")?.lastElementChild;
|
|
518
|
+
return !(n && n !== ge.value && n.contains(t));
|
|
519
519
|
}
|
|
520
520
|
function vn(e) {
|
|
521
|
-
if (
|
|
521
|
+
if (ke = null, e.touches.length !== 1 || !_n(e.target)) return;
|
|
522
522
|
let t = e.touches[0];
|
|
523
|
-
|
|
523
|
+
ke = {
|
|
524
524
|
x: t.clientX,
|
|
525
525
|
y: t.clientY,
|
|
526
526
|
at: Date.now()
|
|
527
527
|
};
|
|
528
528
|
}
|
|
529
529
|
function yn(e) {
|
|
530
|
-
let t =
|
|
531
|
-
if (
|
|
530
|
+
let t = ke;
|
|
531
|
+
if (ke = null, !t || e.changedTouches.length !== 1) return;
|
|
532
532
|
let n = e.changedTouches[0], r = n.clientX - t.x, i = n.clientY - t.y;
|
|
533
533
|
Date.now() - t.at <= en && Math.abs(r) >= $t && Math.abs(r) > 2 * Math.abs(i) && $(r < 0 ? 1 : -1);
|
|
534
534
|
}
|
|
@@ -541,89 +541,89 @@ var vt = { class: "flex items-center justify-between gap-2 text-sm" }, yt = { cl
|
|
|
541
541
|
};
|
|
542
542
|
}
|
|
543
543
|
function xn(e, t) {
|
|
544
|
-
|
|
545
|
-
let n =
|
|
546
|
-
|
|
544
|
+
Me.value = e;
|
|
545
|
+
let n = ye.value?.querySelector(`[data-box-label="${e}"]`), r = { currentTarget: ye.value ?? t.currentTarget };
|
|
546
|
+
j.value?.toggleMenu(r, n ?? void 0);
|
|
547
547
|
}
|
|
548
548
|
function Sn(e) {
|
|
549
|
-
let t =
|
|
550
|
-
t && (t.label = e, t.confidence = 1,
|
|
549
|
+
let t = N.value[Me.value];
|
|
550
|
+
t && (t.label = e, t.confidence = 1, Ie.value = e);
|
|
551
551
|
}
|
|
552
552
|
function Cn(e) {
|
|
553
|
-
let t =
|
|
553
|
+
let t = N.value[R.value];
|
|
554
554
|
t && (t.text = (e ?? "").toUpperCase().replace(/[^A-Z0-9ÄÖÜ\- ]/g, "") || void 0);
|
|
555
555
|
}
|
|
556
556
|
function wn(e) {
|
|
557
|
-
e < 0 || e >=
|
|
557
|
+
e < 0 || e >= N.value.length || (N.value.splice(e, 1), R.value = -1, Me.value = -1, j.value?.hide());
|
|
558
558
|
}
|
|
559
559
|
function Tn(e, t = !0) {
|
|
560
|
-
e < 0 || e >=
|
|
560
|
+
e < 0 || e >= w.candidates.length || (t && k.set(U.value.id, N.value.map((e) => ({ ...e }))), Re.value = N.value.map((e) => ({ ...e })), B.value = e, N.value = (k.get(U.value.id) ?? U.value.boxes).map((e) => ({ ...e })), F.value = null, P.value = null, z.value = null, R.value = -1, Me.value = -1, fe.clear(), j.value?.hide(), Ze());
|
|
561
561
|
}
|
|
562
562
|
async function En(e) {
|
|
563
|
-
return await
|
|
563
|
+
return await w.onSave(U.value.id, N.value.map((e) => ({ ...e })), e), k.set(U.value.id, N.value.map((e) => ({ ...e }))), e === "verified" && de.add(U.value.id), $(1, !1) ? null : void 0;
|
|
564
564
|
}
|
|
565
565
|
function $(e, t = !0) {
|
|
566
|
-
let n =
|
|
567
|
-
for (; n >= 0 && n <
|
|
568
|
-
return n < 0 || n >=
|
|
566
|
+
let n = B.value + e;
|
|
567
|
+
for (; n >= 0 && n < w.candidates.length && A.has(w.candidates[n].id);) n += e;
|
|
568
|
+
return n < 0 || n >= w.candidates.length ? !1 : (Tn(n, t), !0);
|
|
569
569
|
}
|
|
570
570
|
async function Dn() {
|
|
571
|
-
let e =
|
|
572
|
-
|
|
571
|
+
let e = U.value.id;
|
|
572
|
+
A.add(e);
|
|
573
573
|
try {
|
|
574
|
-
await
|
|
574
|
+
await w.onDelete(e);
|
|
575
575
|
} catch (t) {
|
|
576
|
-
throw
|
|
576
|
+
throw A.delete(e), t;
|
|
577
577
|
}
|
|
578
|
-
return
|
|
578
|
+
return k.delete(e), $(1, !1) || $(-1, !1) ? null : void 0;
|
|
579
579
|
}
|
|
580
580
|
function On(e) {
|
|
581
581
|
let t = !1;
|
|
582
|
-
for (let n of e) !
|
|
583
|
-
t && (
|
|
582
|
+
for (let n of e) !A.has(n) && w.candidates.some((e) => e.id === n) && (A.add(n), k.delete(n), n === U.value.id && (t = !0));
|
|
583
|
+
t && (se.add({
|
|
584
584
|
severity: "warn",
|
|
585
|
-
detail:
|
|
585
|
+
detail: O("components.training_editor.removed_meanwhile"),
|
|
586
586
|
life: 4e3
|
|
587
|
-
}), !$(1, !1) && !$(-1, !1) &&
|
|
587
|
+
}), !$(1, !1) && !$(-1, !1) && ie.value.close({ status: "cancel" }));
|
|
588
588
|
}
|
|
589
589
|
function kn() {
|
|
590
590
|
for (let e of [1, -1]) {
|
|
591
|
-
let t =
|
|
592
|
-
for (; t >= 0 && t <
|
|
593
|
-
let n =
|
|
594
|
-
n && (new Image().src =
|
|
591
|
+
let t = B.value + e;
|
|
592
|
+
for (; t >= 0 && t < w.candidates.length && A.has(w.candidates[t].id);) t += e;
|
|
593
|
+
let n = w.candidates[t];
|
|
594
|
+
n && (new Image().src = w.imageUrl(n.id));
|
|
595
595
|
}
|
|
596
596
|
}
|
|
597
597
|
function An(e) {
|
|
598
|
-
|
|
598
|
+
N.value.length && (R.value = (R.value + e + N.value.length) % N.value.length);
|
|
599
599
|
}
|
|
600
600
|
function jn(e) {
|
|
601
|
-
let t =
|
|
601
|
+
let t = N.value[R.value];
|
|
602
602
|
if (!t) return;
|
|
603
603
|
let n = ut, r = n[(n.indexOf(t.label) + e + n.length) % n.length];
|
|
604
|
-
t.label = r, t.confidence = 1,
|
|
604
|
+
t.label = r, t.confidence = 1, Ie.value = r;
|
|
605
605
|
}
|
|
606
606
|
function Mn(e, t, n) {
|
|
607
|
-
let r =
|
|
607
|
+
let r = N.value[R.value];
|
|
608
608
|
r && (n ? (r.width = Math.min(1 - r.x, Math.max(Xt, r.width + e)), r.height = Math.min(1 - r.y, Math.max(Xt, r.height + t))) : (r.x = Math.min(1 - r.width, Math.max(0, r.x + e)), r.y = Math.min(1 - r.height, Math.max(0, r.y + t))));
|
|
609
609
|
}
|
|
610
610
|
async function Nn() {
|
|
611
|
-
if (!
|
|
612
|
-
|
|
611
|
+
if (!De.value) {
|
|
612
|
+
De.value = !0;
|
|
613
613
|
try {
|
|
614
614
|
let e = await En("verified");
|
|
615
|
-
e !== null &&
|
|
615
|
+
e !== null && ie.value.close({
|
|
616
616
|
status: "confirm",
|
|
617
617
|
data: e
|
|
618
618
|
});
|
|
619
619
|
} finally {
|
|
620
|
-
|
|
620
|
+
De.value = !1;
|
|
621
621
|
}
|
|
622
622
|
}
|
|
623
623
|
}
|
|
624
|
-
|
|
625
|
-
t && t !== e &&
|
|
626
|
-
}),
|
|
624
|
+
te(B, kn, { immediate: !0 }), te(W, (e, t) => {
|
|
625
|
+
t && t !== e && N.value.includes(t) && fe.set(s(t), --pe);
|
|
626
|
+
}), je(window, "keydown", (e) => {
|
|
627
627
|
if (e.target?.closest?.("input, textarea")) return;
|
|
628
628
|
let t = {
|
|
629
629
|
ArrowLeft: [-.003, 0],
|
|
@@ -632,136 +632,136 @@ var vt = { class: "flex items-center justify-between gap-2 text-sm" }, yt = { cl
|
|
|
632
632
|
ArrowDown: [0, on]
|
|
633
633
|
};
|
|
634
634
|
if (t[e.key]) {
|
|
635
|
-
if (
|
|
635
|
+
if (R.value >= 0) {
|
|
636
636
|
e.preventDefault();
|
|
637
637
|
let [n, r] = t[e.key];
|
|
638
638
|
Mn(n, r, e.shiftKey);
|
|
639
639
|
} else !e.repeat && e.key === "ArrowLeft" ? $(-1) : !e.repeat && e.key === "ArrowRight" && $(1);
|
|
640
640
|
return;
|
|
641
641
|
}
|
|
642
|
-
e.repeat || (e.key === "Tab" ? (e.preventDefault(), An(e.shiftKey ? -1 : 1)) : e.key === "Escape" ? (
|
|
643
|
-
}),
|
|
642
|
+
e.repeat || (e.key === "Tab" ? (e.preventDefault(), An(e.shiftKey ? -1 : 1)) : e.key === "Escape" ? (R.value = -1, j.value?.hide()) : (e.key === "Delete" || e.key === "Backspace") && R.value >= 0 ? wn(R.value) : e.key === "v" || e.key === "V" ? e.shiftKey ? mt() : Re.value.length > 0 && (V.value = !V.value) : e.key === "s" || e.key === "S" ? jn(e.shiftKey ? -1 : 1) : e.key === " " && !j.value?.isOpen && (e.preventDefault(), Nn()));
|
|
643
|
+
}), je(() => ge.value?.closest(".p-dialog-content") ?? void 0, "touchstart", vn, { passive: !0 }), je(() => ge.value?.closest(".p-dialog-content") ?? void 0, "touchend", yn, { passive: !0 }), ce.connect();
|
|
644
644
|
let Pn = ce.onCandidatesChanged((e) => {
|
|
645
645
|
e.removed?.length && On(e.removed);
|
|
646
646
|
});
|
|
647
647
|
return i(() => {
|
|
648
648
|
Pn();
|
|
649
|
-
}),
|
|
650
|
-
isLoading:
|
|
649
|
+
}), f({
|
|
650
|
+
isLoading: De,
|
|
651
651
|
onConfirm: () => En("verified"),
|
|
652
652
|
onCancel: () => Dn()
|
|
653
653
|
}), (t, i) => {
|
|
654
|
-
let o =
|
|
655
|
-
return r(),
|
|
654
|
+
let o = ae, s = lt, f = Fe, h = We, te = L, b = Ee, C = Le, w = qe, T = re;
|
|
655
|
+
return r(), _("div", {
|
|
656
656
|
ref_key: "rootRef",
|
|
657
|
-
ref:
|
|
657
|
+
ref: ge,
|
|
658
658
|
class: "flex flex-col gap-3 h-full min-h-0"
|
|
659
659
|
}, [
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
severity:
|
|
663
|
-
value: t.$t(`views.training.status_${
|
|
660
|
+
x("div", vt, [x("div", yt, [
|
|
661
|
+
E(o, {
|
|
662
|
+
severity: m(nt) === "verified" ? "success" : "info",
|
|
663
|
+
value: t.$t(`views.training.status_${m(nt)}`),
|
|
664
664
|
class: "shrink-0"
|
|
665
665
|
}, null, 8, ["severity", "value"]),
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
]),
|
|
666
|
+
x("span", bt, a(l.cameraName(m(U).cameraId)), 1),
|
|
667
|
+
x("span", xt, a(m(be)(m(U).createdAt)), 1)
|
|
668
|
+
]), x("div", St, [m(Re).length > 0 ? ne((r(), u(f, {
|
|
669
669
|
key: 0,
|
|
670
|
-
severity:
|
|
670
|
+
severity: m(V) ? "primary" : "secondary",
|
|
671
671
|
text: "",
|
|
672
672
|
rounded: "",
|
|
673
673
|
class: "cui-icon-sm",
|
|
674
|
-
onClick: i[0] ||= (e) =>
|
|
674
|
+
onClick: i[0] ||= (e) => V.value = !m(V)
|
|
675
675
|
}, {
|
|
676
|
-
icon:
|
|
676
|
+
icon: g(() => [E(s, { class: "w-4 h-4" })]),
|
|
677
677
|
_: 1
|
|
678
678
|
}, 8, ["severity"])), [[
|
|
679
|
-
|
|
679
|
+
T,
|
|
680
680
|
t.$t("components.training_editor.ghosts_toggle"),
|
|
681
681
|
void 0,
|
|
682
682
|
{ bottom: !0 }
|
|
683
|
-
]]) :
|
|
684
|
-
|
|
683
|
+
]]) : d("", !0), x("span", Ct, a(m(Qe)) + " / " + a(m($e)), 1)])]),
|
|
684
|
+
x("div", {
|
|
685
685
|
ref_key: "stageRef",
|
|
686
686
|
ref: ve,
|
|
687
687
|
class: "stage relative w-full bg-black rounded-lg shrink-0 overflow-hidden select-none"
|
|
688
688
|
}, [
|
|
689
|
-
|
|
690
|
-
pan:
|
|
691
|
-
"onUpdate:pan": i[10] ||= (e) =>
|
|
692
|
-
zoom:
|
|
693
|
-
"onUpdate:zoom": i[11] ||= (e) =>
|
|
694
|
-
"pan-enabled":
|
|
689
|
+
E(m(I), {
|
|
690
|
+
pan: m(Be),
|
|
691
|
+
"onUpdate:pan": i[10] ||= (e) => p(Be) ? Be.value = e : null,
|
|
692
|
+
zoom: m(ze),
|
|
693
|
+
"onUpdate:zoom": i[11] ||= (e) => p(ze) ? ze.value = e : null,
|
|
694
|
+
"pan-enabled": m(ze) > 1 && !m(P),
|
|
695
695
|
"enable-control-button": !1,
|
|
696
696
|
"dbl-click-enabled": !1,
|
|
697
697
|
"min-zoom": 1,
|
|
698
|
-
"max-zoom":
|
|
699
|
-
selector: `[data-stage-zoom='${
|
|
698
|
+
"max-zoom": m(5),
|
|
699
|
+
selector: `[data-stage-zoom='${m(he)}']`,
|
|
700
700
|
"zoom-origin": "pointer",
|
|
701
|
-
class:
|
|
702
|
-
onPanned:
|
|
703
|
-
onZoom:
|
|
704
|
-
onDblclick:
|
|
701
|
+
class: ee(["absolute inset-0 flex items-center justify-center", { "zoom-constraining": m(Ve) }]),
|
|
702
|
+
onPanned: m(Ke),
|
|
703
|
+
onZoom: m(Ke),
|
|
704
|
+
onDblclick: m(Je),
|
|
705
705
|
onTouchstart: fn,
|
|
706
|
-
onTouchend:
|
|
706
|
+
onTouchend: m(Xe)
|
|
707
707
|
}, {
|
|
708
|
-
default:
|
|
708
|
+
default: g(() => [x("div", {
|
|
709
709
|
ref_key: "frameRef",
|
|
710
|
-
ref:
|
|
711
|
-
"data-stage-zoom":
|
|
710
|
+
ref: ye,
|
|
711
|
+
"data-stage-zoom": m(he),
|
|
712
712
|
class: "frame relative",
|
|
713
|
-
style:
|
|
714
|
-
"--ar-w":
|
|
715
|
-
"--ar-h":
|
|
713
|
+
style: v({
|
|
714
|
+
"--ar-w": m(xe).w,
|
|
715
|
+
"--ar-h": m(xe).h
|
|
716
716
|
})
|
|
717
717
|
}, [
|
|
718
|
-
|
|
719
|
-
src:
|
|
718
|
+
x("img", {
|
|
719
|
+
src: l.imageUrl(m(U).id),
|
|
720
720
|
class: "absolute inset-0 w-full h-full",
|
|
721
721
|
draggable: "false",
|
|
722
722
|
onLoad: ht
|
|
723
723
|
}, null, 40, Tt),
|
|
724
|
-
(r(),
|
|
724
|
+
(r(), _("svg", {
|
|
725
725
|
ref_key: "svgRef",
|
|
726
|
-
ref:
|
|
727
|
-
class:
|
|
726
|
+
ref: M,
|
|
727
|
+
class: ee(["absolute inset-0 w-full h-full touch-none", m(ze) > 1 ? "cursor-grab" : "cursor-crosshair"]),
|
|
728
728
|
onPointerdown: ln,
|
|
729
729
|
onPointermove: pn,
|
|
730
730
|
onPointerup: mn,
|
|
731
731
|
onPointercancel: mn
|
|
732
732
|
}, [
|
|
733
|
-
(r(!0),
|
|
733
|
+
(r(!0), _(y, null, n(m(rt), ({ box: t, i: a }) => (r(), _("g", { key: a }, [x("rect", {
|
|
734
734
|
x: Y(t.x),
|
|
735
735
|
y: Y(t.y),
|
|
736
736
|
width: Y(t.width),
|
|
737
737
|
height: Y(t.height),
|
|
738
738
|
stroke: J(t.label).color,
|
|
739
739
|
fill: J(t.label).color,
|
|
740
|
-
"fill-opacity": a ===
|
|
741
|
-
"stroke-width": a ===
|
|
740
|
+
"fill-opacity": a === m(R) ? .22 : .12,
|
|
741
|
+
"stroke-width": a === m(R) ? 3.5 : 2,
|
|
742
742
|
"vector-effect": "non-scaling-stroke",
|
|
743
743
|
class: "cursor-move",
|
|
744
744
|
onPointerdown: e((e) => un(a, e), ["stop"]),
|
|
745
745
|
onTouchstart: i[1] ||= e(() => {}, ["stop"]),
|
|
746
746
|
onMousedown: i[2] ||= e(() => {}, ["stop"])
|
|
747
|
-
}, null, 40, Et), (r(),
|
|
747
|
+
}, null, 40, Et), (r(), _(y, null, n(le, (n) => x("g", {
|
|
748
748
|
key: n,
|
|
749
749
|
class: "cursor-nwse-resize",
|
|
750
750
|
onPointerdown: e((e) => dn(a, n, e), ["stop"]),
|
|
751
751
|
onTouchstart: i[3] ||= e(() => {}, ["stop"]),
|
|
752
752
|
onMousedown: i[4] ||= e(() => {}, ["stop"])
|
|
753
|
-
}, [
|
|
753
|
+
}, [x("circle", {
|
|
754
754
|
cx: X(t, n),
|
|
755
755
|
cy: dt(t, n),
|
|
756
756
|
r: "14",
|
|
757
757
|
fill: "transparent"
|
|
758
|
-
}, null, 8, Ot),
|
|
758
|
+
}, null, 8, Ot), x("circle", {
|
|
759
759
|
cx: X(t, n),
|
|
760
760
|
cy: dt(t, n),
|
|
761
761
|
r: "4.5",
|
|
762
762
|
fill: J(t.label).color
|
|
763
763
|
}, null, 8, kt)], 40, Dt)), 64))]))), 128)),
|
|
764
|
-
(r(!0),
|
|
764
|
+
(r(!0), _(y, null, n(m(at), (e, t) => (r(), _("rect", {
|
|
765
765
|
key: `ghost-${t}`,
|
|
766
766
|
x: Y(e.x),
|
|
767
767
|
y: Y(e.y),
|
|
@@ -775,51 +775,51 @@ var vt = { class: "flex items-center justify-between gap-2 text-sm" }, yt = { cl
|
|
|
775
775
|
"vector-effect": "non-scaling-stroke",
|
|
776
776
|
class: "pointer-events-none"
|
|
777
777
|
}, null, 8, At))), 128)),
|
|
778
|
-
|
|
778
|
+
m(F) ? (r(), _("rect", {
|
|
779
779
|
key: 0,
|
|
780
|
-
x: Y(
|
|
781
|
-
y: Y(
|
|
782
|
-
width: Y(
|
|
783
|
-
height: Y(
|
|
784
|
-
stroke: J(
|
|
785
|
-
fill: J(
|
|
780
|
+
x: Y(m(F).x),
|
|
781
|
+
y: Y(m(F).y),
|
|
782
|
+
width: Y(m(F).width),
|
|
783
|
+
height: Y(m(F).height),
|
|
784
|
+
stroke: J(m(F).label).color,
|
|
785
|
+
fill: J(m(F).label).color,
|
|
786
786
|
"fill-opacity": "0.1",
|
|
787
787
|
"stroke-dasharray": "6 4",
|
|
788
788
|
"stroke-width": "2",
|
|
789
789
|
"vector-effect": "non-scaling-stroke"
|
|
790
|
-
}, null, 8, jt)) :
|
|
790
|
+
}, null, 8, jt)) : d("", !0)
|
|
791
791
|
], 34)),
|
|
792
|
-
(r(!0),
|
|
792
|
+
(r(!0), _(y, null, n(m(at), (n, a) => ne((r(), _("button", {
|
|
793
793
|
key: `ghost-chip-${a}`,
|
|
794
794
|
type: "button",
|
|
795
795
|
class: "ghost-chip",
|
|
796
|
-
style:
|
|
796
|
+
style: v(Q(n)),
|
|
797
797
|
onPointerdown: i[5] ||= e(() => {}, ["stop"]),
|
|
798
798
|
onTouchstart: i[6] ||= e(() => {}, ["stop"]),
|
|
799
799
|
onMousedown: i[7] ||= e(() => {}, ["stop"]),
|
|
800
800
|
onClick: e((e) => pt(n), ["stop"])
|
|
801
|
-
}, [
|
|
802
|
-
|
|
801
|
+
}, [E(h, { class: "w-3.5 h-3.5 shrink-0" }), (r(), u(c(J(n.label).icon), { class: "bbox-label-icon" }))], 44, Mt)), [[
|
|
802
|
+
T,
|
|
803
803
|
t.$t("components.training_editor.ghost_take"),
|
|
804
804
|
void 0,
|
|
805
805
|
{ top: !0 }
|
|
806
806
|
]])), 128)),
|
|
807
|
-
(r(!0),
|
|
807
|
+
(r(!0), _(y, null, n(m(N), (t, n) => (r(), _("div", {
|
|
808
808
|
key: `label-${n}`,
|
|
809
|
-
class:
|
|
810
|
-
"label-bottom":
|
|
811
|
-
"label-inside":
|
|
812
|
-
"label-right":
|
|
809
|
+
class: ee(["bbox-label cursor-move", {
|
|
810
|
+
"label-bottom": m(q)(t) === "below",
|
|
811
|
+
"label-inside": m(q)(t) === "inside",
|
|
812
|
+
"label-right": m(ot)(t)
|
|
813
813
|
}]),
|
|
814
814
|
"data-box-label": n,
|
|
815
815
|
onPointerdown: e((e) => un(n, e), ["stop"]),
|
|
816
816
|
onTouchstart: i[8] ||= e(() => {}, ["stop"]),
|
|
817
817
|
onMousedown: i[9] ||= e(() => {}, ["stop"]),
|
|
818
|
-
style:
|
|
818
|
+
style: v([ft(t), { zIndex: m(it).get(n) }])
|
|
819
819
|
}, [
|
|
820
|
-
(r(),
|
|
821
|
-
|
|
822
|
-
t.text ? (r(),
|
|
820
|
+
(r(), u(c(J(t.label).icon), { class: "bbox-label-icon" })),
|
|
821
|
+
x("span", Pt, a(ct(t.label)), 1),
|
|
822
|
+
t.text ? (r(), _("span", Ft, a(t.text), 1)) : t.confidence < 1 ? (r(), _("span", It, a(Math.round(t.confidence * 100)) + "%", 1)) : d("", !0)
|
|
823
823
|
], 46, Nt))), 128))
|
|
824
824
|
], 12, wt)]),
|
|
825
825
|
_: 1
|
|
@@ -835,33 +835,33 @@ var vt = { class: "flex items-center justify-between gap-2 text-sm" }, yt = { cl
|
|
|
835
835
|
"onDblclick",
|
|
836
836
|
"onTouchend"
|
|
837
837
|
]),
|
|
838
|
-
|
|
838
|
+
m(He) ? (r(), _("div", {
|
|
839
839
|
key: 0,
|
|
840
840
|
class: "zoom-minimap",
|
|
841
|
-
style:
|
|
842
|
-
}, [
|
|
841
|
+
style: v(m(Ue) ?? void 0)
|
|
842
|
+
}, [x("div", {
|
|
843
843
|
class: "zoom-minimap-viewport",
|
|
844
|
-
style:
|
|
845
|
-
}, null, 4)], 4)) :
|
|
846
|
-
|
|
844
|
+
style: v(m(He))
|
|
845
|
+
}, null, 4)], 4)) : d("", !0),
|
|
846
|
+
m(z) ? (r(), _("div", {
|
|
847
847
|
key: 1,
|
|
848
848
|
class: "loupe",
|
|
849
|
-
style:
|
|
850
|
-
left: `${
|
|
851
|
-
top: `${
|
|
849
|
+
style: v({
|
|
850
|
+
left: `${m(z).x}px`,
|
|
851
|
+
top: `${m(z).y}px`
|
|
852
852
|
})
|
|
853
|
-
}, [
|
|
853
|
+
}, [x("div", {
|
|
854
854
|
class: "loupe-content",
|
|
855
|
-
style:
|
|
856
|
-
width: `${
|
|
857
|
-
height: `${
|
|
858
|
-
transform: `translate(${
|
|
855
|
+
style: v({
|
|
856
|
+
width: `${m(z).frameW}px`,
|
|
857
|
+
height: `${m(z).frameH}px`,
|
|
858
|
+
transform: `translate(${m(z).tx}px, ${m(z).ty}px) scale(${nn})`
|
|
859
859
|
})
|
|
860
|
-
}, [
|
|
861
|
-
src:
|
|
860
|
+
}, [x("img", {
|
|
861
|
+
src: l.imageUrl(m(U).id),
|
|
862
862
|
class: "absolute inset-0 w-full h-full",
|
|
863
863
|
draggable: "false"
|
|
864
|
-
}, null, 8, Lt), (r(),
|
|
864
|
+
}, null, 8, Lt), (r(), _("svg", Rt, [(r(!0), _(y, null, n(m(N), (e, t) => (r(), _("rect", {
|
|
865
865
|
key: t,
|
|
866
866
|
x: Y(e.x),
|
|
867
867
|
y: Y(e.y),
|
|
@@ -871,110 +871,110 @@ var vt = { class: "flex items-center justify-between gap-2 text-sm" }, yt = { cl
|
|
|
871
871
|
fill: J(e.label).color,
|
|
872
872
|
"fill-opacity": "0.1",
|
|
873
873
|
"stroke-width": "1.5"
|
|
874
|
-
}, null, 8, zt))), 128)),
|
|
874
|
+
}, null, 8, zt))), 128)), m(F) ? (r(), _("rect", {
|
|
875
875
|
key: 0,
|
|
876
|
-
x: Y(
|
|
877
|
-
y: Y(
|
|
878
|
-
width: Y(
|
|
879
|
-
height: Y(
|
|
880
|
-
stroke: J(
|
|
881
|
-
fill: J(
|
|
876
|
+
x: Y(m(F).x),
|
|
877
|
+
y: Y(m(F).y),
|
|
878
|
+
width: Y(m(F).width),
|
|
879
|
+
height: Y(m(F).height),
|
|
880
|
+
stroke: J(m(F).label).color,
|
|
881
|
+
fill: J(m(F).label).color,
|
|
882
882
|
"fill-opacity": "0.1",
|
|
883
883
|
"stroke-dasharray": "4 3",
|
|
884
884
|
"stroke-width": "1.5"
|
|
885
|
-
}, null, 8, Bt)) :
|
|
886
|
-
|
|
885
|
+
}, null, 8, Bt)) : d("", !0)]))], 4), i[15] ||= x("div", { class: "loupe-crosshair" }, null, -1)], 4)) : d("", !0),
|
|
886
|
+
m(et) ? (r(), _("div", Vt, [E(f, {
|
|
887
887
|
severity: "secondary",
|
|
888
888
|
rounded: "",
|
|
889
889
|
class: "cui-icon-md opacity-60 hover:opacity-100",
|
|
890
890
|
onClick: i[12] ||= e((e) => $(-1), ["stop"])
|
|
891
891
|
}, {
|
|
892
|
-
icon:
|
|
892
|
+
icon: g(() => [E(te, {
|
|
893
893
|
width: "100%",
|
|
894
894
|
height: "100%"
|
|
895
895
|
})]),
|
|
896
896
|
_: 1
|
|
897
|
-
})])) :
|
|
898
|
-
|
|
897
|
+
})])) : d("", !0),
|
|
898
|
+
m(tt) ? (r(), _("div", Ht, [E(f, {
|
|
899
899
|
severity: "secondary",
|
|
900
900
|
rounded: "",
|
|
901
901
|
class: "cui-icon-md opacity-60 hover:opacity-100",
|
|
902
902
|
onClick: i[13] ||= e((e) => $(1), ["stop"])
|
|
903
903
|
}, {
|
|
904
|
-
icon:
|
|
904
|
+
icon: g(() => [E(b, {
|
|
905
905
|
width: "100%",
|
|
906
906
|
height: "100%"
|
|
907
907
|
})]),
|
|
908
908
|
_: 1
|
|
909
|
-
})])) :
|
|
909
|
+
})])) : d("", !0)
|
|
910
910
|
], 512),
|
|
911
|
-
|
|
911
|
+
m(G) ? (r(), _("div", Ut, [x("label", Wt, a(t.$t("components.training_editor.plate_text")), 1), E(C, {
|
|
912
912
|
id: "plate-text",
|
|
913
|
-
"model-value":
|
|
913
|
+
"model-value": m(G).text ?? "",
|
|
914
914
|
size: "small",
|
|
915
915
|
maxlength: "12",
|
|
916
916
|
class: "w-40 uppercase",
|
|
917
917
|
placeholder: "ABC 1234",
|
|
918
918
|
"onUpdate:modelValue": Cn
|
|
919
|
-
}, null, 8, ["model-value"])])) :
|
|
920
|
-
|
|
919
|
+
}, null, 8, ["model-value"])])) : d("", !0),
|
|
920
|
+
x("div", Gt, [x("div", Kt, [x("span", qt, a(t.$t("components.training_editor.hint")), 1), m(Oe) ? (r(), u(f, {
|
|
921
921
|
key: 0,
|
|
922
922
|
severity: "secondary",
|
|
923
923
|
text: "",
|
|
924
924
|
rounded: "",
|
|
925
925
|
class: "cui-icon-sm shrink-0",
|
|
926
|
-
onClick: i[14] ||= (e) =>
|
|
926
|
+
onClick: i[14] ||= (e) => Te.value = !m(Te)
|
|
927
927
|
}, {
|
|
928
|
-
icon:
|
|
928
|
+
icon: g(() => [E(w, { class: "w-4 h-4" })]),
|
|
929
929
|
_: 1
|
|
930
|
-
})) :
|
|
931
|
-
|
|
932
|
-
i[16] ||=
|
|
933
|
-
|
|
934
|
-
i[17] ||=
|
|
935
|
-
i[18] ||=
|
|
936
|
-
|
|
937
|
-
i[19] ||=
|
|
938
|
-
i[20] ||=
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
930
|
+
})) : d("", !0)]), x("span", Jt, a(t.$t("components.training_editor.hint_wrong")), 1)]),
|
|
931
|
+
m(Oe) && m(Te) ? (r(), _("div", Yt, [
|
|
932
|
+
i[16] ||= x("span", null, [x("kbd", null, "Tab")], -1),
|
|
933
|
+
x("span", null, a(t.$t("components.training_editor.sc_select")), 1),
|
|
934
|
+
i[17] ||= S(),
|
|
935
|
+
i[18] ||= x("span", null, [x("kbd", null, "←↑→↓")], -1),
|
|
936
|
+
x("span", null, a(t.$t("components.training_editor.sc_move")), 1),
|
|
937
|
+
i[19] ||= S(),
|
|
938
|
+
i[20] ||= x("span", null, [
|
|
939
|
+
x("kbd", null, "Shift"),
|
|
940
|
+
S(" + "),
|
|
941
|
+
x("kbd", null, "←↑→↓")
|
|
942
942
|
], -1),
|
|
943
|
-
|
|
944
|
-
i[21] ||=
|
|
945
|
-
i[22] ||=
|
|
946
|
-
|
|
947
|
-
i[23] ||=
|
|
948
|
-
i[24] ||=
|
|
949
|
-
|
|
950
|
-
i[25] ||=
|
|
951
|
-
i[26] ||=
|
|
952
|
-
|
|
953
|
-
i[27] ||=
|
|
954
|
-
i[28] ||=
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
943
|
+
x("span", null, a(t.$t("components.training_editor.sc_resize")), 1),
|
|
944
|
+
i[21] ||= S(),
|
|
945
|
+
i[22] ||= x("span", null, [x("kbd", null, "S")], -1),
|
|
946
|
+
x("span", null, a(t.$t("components.training_editor.sc_label")), 1),
|
|
947
|
+
i[23] ||= S(),
|
|
948
|
+
i[24] ||= x("span", null, [x("kbd", null, "Del")], -1),
|
|
949
|
+
x("span", null, a(t.$t("components.training_editor.sc_delete")), 1),
|
|
950
|
+
i[25] ||= S(),
|
|
951
|
+
i[26] ||= x("span", null, [x("kbd", null, "V")], -1),
|
|
952
|
+
x("span", null, a(t.$t("components.training_editor.sc_ghosts")), 1),
|
|
953
|
+
i[27] ||= S(),
|
|
954
|
+
i[28] ||= x("span", null, [
|
|
955
|
+
x("kbd", null, "Shift"),
|
|
956
|
+
S(" + "),
|
|
957
|
+
x("kbd", null, "V")
|
|
958
958
|
], -1),
|
|
959
|
-
|
|
960
|
-
i[29] ||=
|
|
961
|
-
i[30] ||=
|
|
962
|
-
|
|
963
|
-
i[31] ||=
|
|
964
|
-
i[32] ||=
|
|
965
|
-
|
|
966
|
-
i[33] ||=
|
|
967
|
-
i[34] ||=
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
959
|
+
x("span", null, a(t.$t("components.training_editor.sc_ghosts_all")), 1),
|
|
960
|
+
i[29] ||= S(),
|
|
961
|
+
i[30] ||= x("span", null, [x("kbd", null, "Esc")], -1),
|
|
962
|
+
x("span", null, a(t.$t("components.training_editor.sc_deselect")), 1),
|
|
963
|
+
i[31] ||= S(),
|
|
964
|
+
i[32] ||= x("span", null, [x("kbd", null, "Space")], -1),
|
|
965
|
+
x("span", null, a(t.$t("components.training_editor.sc_verify")), 1),
|
|
966
|
+
i[33] ||= S(),
|
|
967
|
+
i[34] ||= x("span", null, [
|
|
968
|
+
x("kbd", null, "←"),
|
|
969
|
+
S(" / "),
|
|
970
|
+
x("kbd", null, "→")
|
|
971
971
|
], -1),
|
|
972
|
-
|
|
973
|
-
])) :
|
|
974
|
-
|
|
972
|
+
x("span", null, a(t.$t("components.training_editor.sc_nav")), 1)
|
|
973
|
+
])) : d("", !0),
|
|
974
|
+
E(ue, {
|
|
975
975
|
ref_key: "labelMenuRef",
|
|
976
|
-
ref:
|
|
977
|
-
items:
|
|
976
|
+
ref: j,
|
|
977
|
+
items: m(K),
|
|
978
978
|
popover: { pt: { content: { class: "p-0! rounded-xl! overflow-hidden!" } } }
|
|
979
979
|
}, null, 8, ["items"])
|
|
980
980
|
], 512);
|
|
@@ -992,126 +992,126 @@ var vt = { class: "flex items-center justify-between gap-2 text-sm" }, yt = { cl
|
|
|
992
992
|
}, mn = { class: "text-muted text-sm text-center max-w-sm" }, hn = { class: "text-muted text-sm" }, gn = { class: "w-24 aspect-video rounded-lg overflow-hidden bg-black/5 dark:bg-black/30 shrink-0" }, _n = { class: "flex-1 min-w-0" }, vn = { class: "flex flex-wrap items-center gap-1" }, yn = { class: "text-xs text-muted mt-1" }, bn = {
|
|
993
993
|
key: 0,
|
|
994
994
|
class: "flex justify-center py-2"
|
|
995
|
-
}, xn = /* @__PURE__ */
|
|
995
|
+
}, xn = /* @__PURE__ */ w({
|
|
996
996
|
__name: "TrainingSubmissions",
|
|
997
997
|
setup(e) {
|
|
998
|
-
let t = new st(), { t: o, te: s } =
|
|
999
|
-
function
|
|
998
|
+
let t = new st(), { t: o, te: s } = Pe(), ee = _e(), c = _t(), l = t.deleteSubmissionMutation(), f = T(""), p = T([]), h = T(0), S = T(), C = T(!0), w = T(!1), D = T(!1), ie = b("loadMoreRef");
|
|
999
|
+
function O(e) {
|
|
1000
1000
|
let t = {};
|
|
1001
1001
|
for (let n of e.labels) t[n.label] = (t[n.label] ?? 0) + 1;
|
|
1002
1002
|
return t;
|
|
1003
1003
|
}
|
|
1004
|
-
function
|
|
1004
|
+
function oe(e) {
|
|
1005
1005
|
let t = `components.training_editor.labels.${e}`;
|
|
1006
1006
|
return s(t) ? o(t) : e;
|
|
1007
1007
|
}
|
|
1008
|
-
async function
|
|
1009
|
-
|
|
1008
|
+
async function se() {
|
|
1009
|
+
C.value = p.value.length === 0;
|
|
1010
1010
|
try {
|
|
1011
|
-
let e = await
|
|
1012
|
-
|
|
1011
|
+
let e = await at();
|
|
1012
|
+
p.value = e.items, h.value = e.total ?? e.items.length, S.value = e.nextCursor, D.value = !1;
|
|
1013
1013
|
} catch {
|
|
1014
|
-
|
|
1014
|
+
D.value = !0;
|
|
1015
1015
|
} finally {
|
|
1016
|
-
|
|
1016
|
+
C.value = !1;
|
|
1017
1017
|
}
|
|
1018
1018
|
}
|
|
1019
|
-
async function
|
|
1020
|
-
let e =
|
|
1021
|
-
if (e && !
|
|
1022
|
-
|
|
1019
|
+
async function ce() {
|
|
1020
|
+
let e = S.value;
|
|
1021
|
+
if (e && !w.value) {
|
|
1022
|
+
w.value = !0;
|
|
1023
1023
|
try {
|
|
1024
|
-
let t = await
|
|
1025
|
-
|
|
1024
|
+
let t = await at({ cursor: e }), n = new Set(p.value.map((e) => e.id));
|
|
1025
|
+
p.value.push(...t.items.filter((e) => !n.has(e.id))), S.value = t.nextCursor;
|
|
1026
1026
|
} catch (e) {
|
|
1027
|
-
|
|
1027
|
+
ee.add({
|
|
1028
1028
|
severity: "error",
|
|
1029
1029
|
detail: e?.message ?? String(e),
|
|
1030
1030
|
life: 5e3
|
|
1031
1031
|
});
|
|
1032
1032
|
} finally {
|
|
1033
|
-
|
|
1033
|
+
w.value = !1;
|
|
1034
1034
|
}
|
|
1035
1035
|
}
|
|
1036
1036
|
}
|
|
1037
|
-
async function
|
|
1038
|
-
|
|
1037
|
+
async function le(e) {
|
|
1038
|
+
f.value = e;
|
|
1039
1039
|
try {
|
|
1040
|
-
await
|
|
1040
|
+
await l.mutateAsync(e), p.value = p.value.filter((t) => t.id !== e), h.value = Math.max(0, h.value - 1);
|
|
1041
1041
|
} catch (e) {
|
|
1042
|
-
|
|
1042
|
+
ee.add({
|
|
1043
1043
|
severity: "error",
|
|
1044
1044
|
detail: e?.message ?? String(e),
|
|
1045
1045
|
life: 5e3
|
|
1046
1046
|
});
|
|
1047
1047
|
} finally {
|
|
1048
|
-
|
|
1048
|
+
f.value = "";
|
|
1049
1049
|
}
|
|
1050
1050
|
}
|
|
1051
|
-
|
|
1052
|
-
e?.isIntersecting &&
|
|
1053
|
-
}),
|
|
1054
|
-
t && !e &&
|
|
1051
|
+
ke(ie, ([e]) => {
|
|
1052
|
+
e?.isIntersecting && ce();
|
|
1053
|
+
}), te(() => c.submitProgress.value?.active, (e, t) => {
|
|
1054
|
+
t && !e && se();
|
|
1055
1055
|
});
|
|
1056
|
-
let
|
|
1057
|
-
|
|
1056
|
+
let k = c.onResync(() => {
|
|
1057
|
+
se();
|
|
1058
1058
|
});
|
|
1059
1059
|
return i(() => {
|
|
1060
|
-
|
|
1061
|
-
}),
|
|
1062
|
-
let i =
|
|
1063
|
-
return r(),
|
|
1060
|
+
k();
|
|
1061
|
+
}), se(), (e, t) => {
|
|
1062
|
+
let i = Te, o = He, s = me, ee = ve, c = ae, te = Ge, b = Fe, T = xe, se = re;
|
|
1063
|
+
return r(), _("div", ln, [m(C) ? (r(), _("div", un, [(r(), _(y, null, n(4, (e) => E(i, {
|
|
1064
1064
|
key: e,
|
|
1065
1065
|
height: "72px",
|
|
1066
1066
|
"border-radius": "12px"
|
|
1067
|
-
})), 64))])) :
|
|
1068
|
-
|
|
1069
|
-
(r(!0),
|
|
1067
|
+
})), 64))])) : m(D) ? (r(), _("div", dn, [E(o, { class: "w-10 h-10 text-muted" }), x("span", fn, a(e.$t("components.training_submissions.load_failed")), 1)])) : m(p).length ? (r(), _(y, { key: 3 }, [
|
|
1068
|
+
x("span", hn, a(e.$t("components.training_submissions.count", m(h))), 1),
|
|
1069
|
+
(r(!0), _(y, null, n(m(p), (t) => (r(), _("div", {
|
|
1070
1070
|
key: t.id,
|
|
1071
1071
|
class: "cui-card h-auto! shrink-0 p-2 flex items-center gap-3"
|
|
1072
1072
|
}, [
|
|
1073
|
-
|
|
1073
|
+
x("div", gn, [E(ee, {
|
|
1074
1074
|
src: t.imageUrl,
|
|
1075
1075
|
"image-container-class": "w-full h-full",
|
|
1076
1076
|
"image-style": { objectFit: "cover" }
|
|
1077
1077
|
}, null, 8, ["src"])]),
|
|
1078
|
-
|
|
1078
|
+
x("div", _n, [x("div", vn, [(r(!0), _(y, null, n(O(t), (e, t) => (r(), _("span", {
|
|
1079
1079
|
key: t,
|
|
1080
1080
|
class: "px-1.5 py-0.5 rounded text-xs font-medium text-white",
|
|
1081
|
-
style:
|
|
1082
|
-
}, a(
|
|
1083
|
-
|
|
1081
|
+
style: v({ backgroundColor: m(Se)(String(t)).color })
|
|
1082
|
+
}, a(oe(String(t))) + " ×" + a(e), 5))), 128))]), x("div", yn, a(m(be)(new Date(t.createdAt).getTime())), 1)]),
|
|
1083
|
+
E(c, {
|
|
1084
1084
|
severity: t.usedInWave ? "success" : "info",
|
|
1085
1085
|
value: t.usedInWave ? e.$t("components.training_submissions.status_trained") : e.$t("components.training_submissions.status_pool"),
|
|
1086
1086
|
class: "shrink-0"
|
|
1087
1087
|
}, null, 8, ["severity", "value"]),
|
|
1088
|
-
|
|
1088
|
+
ne((r(), u(b, {
|
|
1089
1089
|
severity: "danger",
|
|
1090
1090
|
text: "",
|
|
1091
1091
|
rounded: "",
|
|
1092
1092
|
class: "cui-icon-sm shrink-0",
|
|
1093
|
-
loading:
|
|
1094
|
-
onClick: (e) =>
|
|
1093
|
+
loading: m(l).isPending.value && m(f) === t.id,
|
|
1094
|
+
onClick: (e) => le(t.id)
|
|
1095
1095
|
}, {
|
|
1096
|
-
icon:
|
|
1096
|
+
icon: g(() => [E(te, {
|
|
1097
1097
|
width: "100%",
|
|
1098
1098
|
height: "100%"
|
|
1099
1099
|
})]),
|
|
1100
1100
|
_: 1
|
|
1101
1101
|
}, 8, ["loading", "onClick"])), [[
|
|
1102
|
-
|
|
1102
|
+
se,
|
|
1103
1103
|
e.$t("components.training_submissions.delete"),
|
|
1104
1104
|
void 0,
|
|
1105
1105
|
{ left: !0 }
|
|
1106
1106
|
]])
|
|
1107
1107
|
]))), 128)),
|
|
1108
|
-
|
|
1108
|
+
m(w) ? (r(), _("div", bn, [E(T, { class: "w-5 h-5 text-primary" })])) : m(S) ? (r(), _("div", {
|
|
1109
1109
|
key: 1,
|
|
1110
1110
|
ref_key: "loadMoreRef",
|
|
1111
|
-
ref:
|
|
1111
|
+
ref: ie,
|
|
1112
1112
|
class: "h-px"
|
|
1113
|
-
}, null, 512)) :
|
|
1114
|
-
], 64)) : (r(),
|
|
1113
|
+
}, null, 512)) : d("", !0)
|
|
1114
|
+
], 64)) : (r(), _("div", pn, [E(s, { class: "w-10 h-10 text-muted" }), x("span", mn, a(e.$t("components.training_submissions.empty")), 1)]))]);
|
|
1115
1115
|
};
|
|
1116
1116
|
}
|
|
1117
1117
|
}), Sn = { desktop: {
|
|
@@ -1135,80 +1135,80 @@ var vt = { class: "flex items-center justify-between gap-2 text-sm" }, yt = { cl
|
|
|
1135
1135
|
}, Rn = {
|
|
1136
1136
|
key: 1,
|
|
1137
1137
|
class: "absolute top-1.5 right-1.5 dark-mode"
|
|
1138
|
-
}, zn = { class: "flex items-center justify-between gap-2" }, Bn = { class: "flex items-center gap-2 min-w-0" }, Vn = { class: "min-w-0" }, Hn = { class: "font-medium truncate" }, Un = { class: "text-xs text-muted" }, Wn = 40, Gn = /*#__PURE__*/
|
|
1138
|
+
}, zn = { class: "flex items-center justify-between gap-2" }, Bn = { class: "flex items-center gap-2 min-w-0" }, Vn = { class: "min-w-0" }, Hn = { class: "font-medium truncate" }, Un = { class: "text-xs text-muted" }, Wn = 40, Gn = /*#__PURE__*/ fe(/* @__PURE__ */ w({
|
|
1139
1139
|
__name: "Training",
|
|
1140
1140
|
setup(t) {
|
|
1141
|
-
let o = new
|
|
1141
|
+
let o = new pe(), s = new st(), { t: c, te: l } = Pe(), f = F(), C = _e(), { smBreakpoint: w } = se(), D = s.getCandidatesQuery(), O = s.getSettingsQuery(), le = s.patchCandidateMutation(), k = s.deleteCandidateMutation(), fe = s.patchSettingsMutation(), me = s.submitCandidatesMutation(), M = _t(), { data: P } = o.getCamerasQuery({
|
|
1142
1142
|
page: 1,
|
|
1143
1143
|
pageSize: -1
|
|
1144
|
-
}),
|
|
1145
|
-
let e = [...new Set((
|
|
1144
|
+
}), I = T(""), L = Oe("cui-training-status-filter", "all"), Ce = T(Wn), we = b("statusMenuRef"), Ee = b("cameraMenuRef"), Ae = b("settingsMenuRef"), je = b("loadMoreRef"), Ne = b("scrollRef"), { y: We } = z(Ne), qe = h(() => ({ gridTemplateColumns: `repeat(auto-fill, minmax(${w.value ? "220px" : "260px"}, 1fr))` })), Ye = h(() => {
|
|
1145
|
+
let e = [...new Set((D.data.value ?? []).map((e) => Q(e.cameraId)))].sort((e, t) => e.localeCompare(t));
|
|
1146
1146
|
return [{
|
|
1147
1147
|
key: "all",
|
|
1148
|
-
label:
|
|
1149
|
-
active:
|
|
1148
|
+
label: c("views.training.all_cameras"),
|
|
1149
|
+
active: I.value === "",
|
|
1150
1150
|
onClick: () => {
|
|
1151
|
-
|
|
1151
|
+
I.value = "";
|
|
1152
1152
|
}
|
|
1153
1153
|
}, ...e.map((e) => ({
|
|
1154
1154
|
key: e,
|
|
1155
1155
|
label: e,
|
|
1156
|
-
active:
|
|
1156
|
+
active: I.value === e,
|
|
1157
1157
|
onClick: () => {
|
|
1158
|
-
|
|
1158
|
+
I.value = e;
|
|
1159
1159
|
}
|
|
1160
1160
|
}))];
|
|
1161
|
-
}),
|
|
1161
|
+
}), Xe = h(() => [{
|
|
1162
1162
|
key: "collect",
|
|
1163
|
-
label:
|
|
1164
|
-
description:
|
|
1163
|
+
label: c("views.training.collection_enabled"),
|
|
1164
|
+
description: c("views.training.collection_hint"),
|
|
1165
1165
|
toggle: !0,
|
|
1166
|
-
toggleState:
|
|
1166
|
+
toggleState: O.data.value?.enabled ?? !0,
|
|
1167
1167
|
onClick: () => {
|
|
1168
|
-
Tt(!(
|
|
1168
|
+
Tt(!(O.data.value?.enabled ?? !0));
|
|
1169
1169
|
}
|
|
1170
|
-
}]),
|
|
1171
|
-
let e =
|
|
1172
|
-
return e ? (
|
|
1173
|
-
}),
|
|
1170
|
+
}]), H = h(() => {
|
|
1171
|
+
let e = I.value.trim().toLowerCase();
|
|
1172
|
+
return e ? (D.data.value ?? []).filter((t) => Q(t.cameraId).toLowerCase().includes(e)) : D.data.value ?? [];
|
|
1173
|
+
}), U = h(() => L.value === "all" ? H.value : H.value.filter((e) => e.status === L.value)), $e = h(() => {
|
|
1174
1174
|
let e = {
|
|
1175
|
-
all:
|
|
1175
|
+
all: H.value.length,
|
|
1176
1176
|
new: 0,
|
|
1177
1177
|
verified: 0
|
|
1178
1178
|
};
|
|
1179
|
-
for (let t of
|
|
1179
|
+
for (let t of H.value) e[t.status]++;
|
|
1180
1180
|
return e;
|
|
1181
|
-
}),
|
|
1181
|
+
}), et = h(() => [
|
|
1182
1182
|
"all",
|
|
1183
1183
|
"new",
|
|
1184
1184
|
"verified"
|
|
1185
1185
|
].map((e) => ({
|
|
1186
1186
|
key: e,
|
|
1187
|
-
label:
|
|
1188
|
-
badge: String(
|
|
1189
|
-
active:
|
|
1187
|
+
label: c(`views.training.status_${e}`),
|
|
1188
|
+
badge: String($e.value[e]),
|
|
1189
|
+
active: L.value === e,
|
|
1190
1190
|
onClick: () => {
|
|
1191
|
-
|
|
1191
|
+
L.value = e;
|
|
1192
1192
|
}
|
|
1193
|
-
}))),
|
|
1193
|
+
}))), nt = h(() => L.value !== "all" || I.value.trim() !== ""), rt = h(() => U.value.slice(0, Ce.value)), it = h(() => U.value.length > rt.value.length), W = h(() => (D.data.value ?? []).filter((e) => K(e)).length), G = h(() => M.submitProgress.value ? M.submitProgress.value : W.value > 0 ? {
|
|
1194
1194
|
active: !0,
|
|
1195
|
-
total:
|
|
1195
|
+
total: W.value,
|
|
1196
1196
|
done: 0,
|
|
1197
1197
|
failed: 0
|
|
1198
|
-
} : null),
|
|
1199
|
-
function
|
|
1198
|
+
} : null), at = h(() => U.value.filter((e) => !K(e)));
|
|
1199
|
+
function K(e) {
|
|
1200
1200
|
return e.upload === "queued" || e.upload === "uploading";
|
|
1201
1201
|
}
|
|
1202
|
-
let { selectionMode: q, selectedIds: ot, allSelected: ct, bulkBusy: J, enterSelectionMode: lt, exitSelectionMode: ut, toggleSelectAll: X, toggleSelection: dt } =
|
|
1202
|
+
let { selectionMode: q, selectedIds: ot, allSelected: ct, bulkBusy: J, enterSelectionMode: lt, exitSelectionMode: ut, toggleSelectAll: X, toggleSelection: dt } = j(at, (e) => e.id), ft = h(() => [...ot.value].filter((e) => D.data.value?.find((t) => t.id === e)?.status === "verified")), Z = h(() => H.value.filter((e) => e.status === "verified" && !K(e)).map((e) => e.id));
|
|
1203
1203
|
function Q(e) {
|
|
1204
1204
|
return P.value?.result?.find((t) => t._id === e)?.name ?? e;
|
|
1205
1205
|
}
|
|
1206
1206
|
function pt(e) {
|
|
1207
|
-
return
|
|
1207
|
+
return N(`/api/training/candidates/${e}/image`) ?? "";
|
|
1208
1208
|
}
|
|
1209
1209
|
function mt(e) {
|
|
1210
1210
|
let t = `components.training_editor.labels.${e}`;
|
|
1211
|
-
return
|
|
1211
|
+
return l(t) ? c(t) : e;
|
|
1212
1212
|
}
|
|
1213
1213
|
function ht(e) {
|
|
1214
1214
|
let t = {};
|
|
@@ -1219,10 +1219,10 @@ var vt = { class: "flex items-center justify-between gap-2 text-sm" }, yt = { cl
|
|
|
1219
1219
|
return e === "verified" ? "success" : "info";
|
|
1220
1220
|
}
|
|
1221
1221
|
function vt() {
|
|
1222
|
-
|
|
1222
|
+
Ce.value += Wn;
|
|
1223
1223
|
}
|
|
1224
1224
|
function yt(e) {
|
|
1225
|
-
if (!
|
|
1225
|
+
if (!K(e)) {
|
|
1226
1226
|
if (q.value) {
|
|
1227
1227
|
dt(e.id);
|
|
1228
1228
|
return;
|
|
@@ -1231,19 +1231,19 @@ var vt = { class: "flex items-center justify-between gap-2 text-sm" }, yt = { cl
|
|
|
1231
1231
|
}
|
|
1232
1232
|
}
|
|
1233
1233
|
function bt(e) {
|
|
1234
|
-
|
|
1234
|
+
f.openComponentDialog(cn, {
|
|
1235
1235
|
data: {
|
|
1236
|
-
title:
|
|
1237
|
-
cancelText:
|
|
1238
|
-
confirmText:
|
|
1236
|
+
title: c("views.training.title"),
|
|
1237
|
+
cancelText: c("components.form.button.remove"),
|
|
1238
|
+
confirmText: c("components.training_editor.verify"),
|
|
1239
1239
|
cancelButtonProps: { severity: "danger" },
|
|
1240
1240
|
contentProps: {
|
|
1241
|
-
candidates:
|
|
1241
|
+
candidates: U.value.map((e) => ({ ...e })),
|
|
1242
1242
|
startId: e.id,
|
|
1243
1243
|
cameraName: Q,
|
|
1244
1244
|
imageUrl: pt,
|
|
1245
1245
|
onSave: async (e, t, n) => {
|
|
1246
|
-
await
|
|
1246
|
+
await le.mutateAsync({
|
|
1247
1247
|
id: e,
|
|
1248
1248
|
patch: {
|
|
1249
1249
|
boxes: t,
|
|
@@ -1252,7 +1252,7 @@ var vt = { class: "flex items-center justify-between gap-2 text-sm" }, yt = { cl
|
|
|
1252
1252
|
});
|
|
1253
1253
|
},
|
|
1254
1254
|
onDelete: async (e) => {
|
|
1255
|
-
await
|
|
1255
|
+
await k.mutateAsync(e);
|
|
1256
1256
|
}
|
|
1257
1257
|
}
|
|
1258
1258
|
},
|
|
@@ -1260,28 +1260,28 @@ var vt = { class: "flex items-center justify-between gap-2 text-sm" }, yt = { cl
|
|
|
1260
1260
|
});
|
|
1261
1261
|
}
|
|
1262
1262
|
function xt() {
|
|
1263
|
-
|
|
1263
|
+
f.openComponentDialog(xn, {
|
|
1264
1264
|
data: {
|
|
1265
|
-
title:
|
|
1265
|
+
title: c("views.training.submissions"),
|
|
1266
1266
|
hideConfirmButton: !0,
|
|
1267
|
-
cancelText:
|
|
1267
|
+
cancelText: c("components.form.button.close"),
|
|
1268
1268
|
contentProps: {}
|
|
1269
1269
|
},
|
|
1270
1270
|
dialogSize: Sn
|
|
1271
1271
|
});
|
|
1272
1272
|
}
|
|
1273
1273
|
function St(e) {
|
|
1274
|
-
e.length && !
|
|
1274
|
+
e.length && !me.isPending.value && f.openTextDialog({
|
|
1275
1275
|
data: {
|
|
1276
|
-
title:
|
|
1277
|
-
contentText:
|
|
1278
|
-
confirmText:
|
|
1276
|
+
title: c("components.dialog.title.confirm"),
|
|
1277
|
+
contentText: c("views.training.submit_confirm", { count: e.length }),
|
|
1278
|
+
confirmText: c("views.training.submit")
|
|
1279
1279
|
},
|
|
1280
1280
|
onConfirm: async () => {
|
|
1281
1281
|
try {
|
|
1282
|
-
await
|
|
1282
|
+
await me.mutateAsync(e), ut();
|
|
1283
1283
|
} catch (e) {
|
|
1284
|
-
|
|
1284
|
+
C.add({
|
|
1285
1285
|
severity: "error",
|
|
1286
1286
|
detail: e?.message ?? String(e),
|
|
1287
1287
|
life: 8e3
|
|
@@ -1292,24 +1292,24 @@ var vt = { class: "flex items-center justify-between gap-2 text-sm" }, yt = { cl
|
|
|
1292
1292
|
}
|
|
1293
1293
|
function Ct() {
|
|
1294
1294
|
let e = [...ot.value];
|
|
1295
|
-
e.length && !J.value &&
|
|
1295
|
+
e.length && !J.value && f.openTextDialog({
|
|
1296
1296
|
data: {
|
|
1297
|
-
title:
|
|
1298
|
-
contentText:
|
|
1299
|
-
confirmText:
|
|
1297
|
+
title: c("components.dialog.title.confirm"),
|
|
1298
|
+
contentText: c("views.training.delete_selected_confirm", { count: e.length }),
|
|
1299
|
+
confirmText: c("components.form.button.remove"),
|
|
1300
1300
|
confirmButtonProps: { severity: "danger" }
|
|
1301
1301
|
},
|
|
1302
1302
|
onConfirm: async () => {
|
|
1303
1303
|
J.value = !0;
|
|
1304
1304
|
try {
|
|
1305
|
-
for (let t of e) await
|
|
1306
|
-
ut(),
|
|
1305
|
+
for (let t of e) await k.mutateAsync(t);
|
|
1306
|
+
ut(), C.add({
|
|
1307
1307
|
severity: "success",
|
|
1308
|
-
detail:
|
|
1308
|
+
detail: c("views.training.delete_selected_done", { count: e.length }),
|
|
1309
1309
|
life: 5e3
|
|
1310
1310
|
});
|
|
1311
1311
|
} catch (e) {
|
|
1312
|
-
|
|
1312
|
+
C.add({
|
|
1313
1313
|
severity: "error",
|
|
1314
1314
|
detail: e?.message ?? String(e),
|
|
1315
1315
|
life: 5e3
|
|
@@ -1321,76 +1321,76 @@ var vt = { class: "flex items-center justify-between gap-2 text-sm" }, yt = { cl
|
|
|
1321
1321
|
});
|
|
1322
1322
|
}
|
|
1323
1323
|
async function wt(e) {
|
|
1324
|
-
await
|
|
1324
|
+
await k.mutateAsync(e.id);
|
|
1325
1325
|
}
|
|
1326
1326
|
async function Tt(e) {
|
|
1327
|
-
await
|
|
1327
|
+
await fe.mutateAsync({ enabled: e });
|
|
1328
1328
|
}
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
}),
|
|
1329
|
+
te([I, L], () => {
|
|
1330
|
+
Ce.value = Wn;
|
|
1331
|
+
}), ke(je, ([e]) => {
|
|
1332
1332
|
e?.isIntersecting && vt();
|
|
1333
|
-
}),
|
|
1334
|
-
let Et =
|
|
1335
|
-
|
|
1333
|
+
}), M.connect();
|
|
1334
|
+
let Et = M.onCandidatesChanged(() => {
|
|
1335
|
+
D.refetch();
|
|
1336
1336
|
});
|
|
1337
1337
|
return i(() => {
|
|
1338
1338
|
Et();
|
|
1339
1339
|
}), (t, i) => {
|
|
1340
|
-
let o =
|
|
1341
|
-
return r(),
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
default:
|
|
1340
|
+
let o = Ke, s = Fe, l = R, f = Ve, h = B, te = Le, b = Ie, C = Qe, T = de, O = ie, se = ge, le = Ze, k = Je, fe = xe, pe = ze, j = He, _e = Ue, N = V, P = Be, F = Te, Ce = oe, Oe = ve, z = ae, ke = Ge, Pe = Re, $e = Me, W = A, at = he, st = re;
|
|
1341
|
+
return r(), _("div", Cn, [
|
|
1342
|
+
m(w) ? d("", !0) : (r(), _("h1", wn, a(t.$t("views.training.title")), 1)),
|
|
1343
|
+
E(l, { position: "left" }, {
|
|
1344
|
+
default: g(() => [E(s, {
|
|
1345
1345
|
severity: "secondary",
|
|
1346
1346
|
text: "",
|
|
1347
1347
|
class: "cui-button p-2 text-color non-draggable-region",
|
|
1348
1348
|
onClick: i[0] ||= (e) => t.$router.push("/menu")
|
|
1349
1349
|
}, {
|
|
1350
|
-
icon:
|
|
1350
|
+
icon: g(() => [E(o, { class: "w-6 h-6" })]),
|
|
1351
1351
|
_: 1
|
|
1352
1352
|
})]),
|
|
1353
1353
|
_: 1
|
|
1354
1354
|
}),
|
|
1355
|
-
|
|
1356
|
-
default:
|
|
1355
|
+
E(l, { position: "center" }, {
|
|
1356
|
+
default: g(() => [x("span", Tn, a(t.$t("views.training.title")), 1)]),
|
|
1357
1357
|
_: 1
|
|
1358
1358
|
}),
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
default:
|
|
1362
|
-
|
|
1363
|
-
default:
|
|
1364
|
-
default:
|
|
1359
|
+
x("div", En, [
|
|
1360
|
+
E(se, { class: "flex-1" }, {
|
|
1361
|
+
default: g(() => [
|
|
1362
|
+
E(b, { class: "flex-1" }, {
|
|
1363
|
+
default: g(() => [E(h, null, {
|
|
1364
|
+
default: g(() => [E(f, { class: "w-4 h-4" })]),
|
|
1365
1365
|
_: 1
|
|
1366
|
-
}),
|
|
1367
|
-
modelValue:
|
|
1368
|
-
"onUpdate:modelValue": i[1] ||= (e) =>
|
|
1369
|
-
placeholder:
|
|
1366
|
+
}), E(te, {
|
|
1367
|
+
modelValue: m(I),
|
|
1368
|
+
"onUpdate:modelValue": i[1] ||= (e) => p(I) ? I.value = e : null,
|
|
1369
|
+
placeholder: m(c)("views.training.search"),
|
|
1370
1370
|
class: "w-full"
|
|
1371
1371
|
}, null, 8, ["modelValue", "placeholder"])]),
|
|
1372
1372
|
_: 1
|
|
1373
1373
|
}),
|
|
1374
|
-
|
|
1375
|
-
default:
|
|
1374
|
+
E(T, null, {
|
|
1375
|
+
default: g(() => [E(s, {
|
|
1376
1376
|
severity: "secondary",
|
|
1377
1377
|
text: "",
|
|
1378
|
-
class:
|
|
1379
|
-
onClick: i[2] ||= (e) =>
|
|
1378
|
+
class: ee(m(L) === "all" ? "text-color" : "text-primary"),
|
|
1379
|
+
onClick: i[2] ||= (e) => m(we)?.toggleMenu(e)
|
|
1380
1380
|
}, {
|
|
1381
|
-
icon:
|
|
1381
|
+
icon: g(() => [E(C, { class: "w-4 h-4" })]),
|
|
1382
1382
|
_: 1
|
|
1383
1383
|
}, 8, ["class"])]),
|
|
1384
1384
|
_: 1
|
|
1385
1385
|
}),
|
|
1386
|
-
|
|
1387
|
-
default:
|
|
1386
|
+
E(T, null, {
|
|
1387
|
+
default: g(() => [E(s, {
|
|
1388
1388
|
severity: "secondary",
|
|
1389
1389
|
text: "",
|
|
1390
1390
|
class: "text-color",
|
|
1391
|
-
onClick: i[3] ||= (e) =>
|
|
1391
|
+
onClick: i[3] ||= (e) => m(Ee)?.toggleMenu(e)
|
|
1392
1392
|
}, {
|
|
1393
|
-
icon:
|
|
1393
|
+
icon: g(() => [E(O, { class: ee(["w-4 h-4 transform transition-transform duration-300", { "rotate-180": m(Ee)?.isOpen }]) }, null, 8, ["class"])]),
|
|
1394
1394
|
_: 1
|
|
1395
1395
|
})]),
|
|
1396
1396
|
_: 1
|
|
@@ -1398,13 +1398,13 @@ var vt = { class: "flex items-center justify-between gap-2 text-sm" }, yt = { cl
|
|
|
1398
1398
|
]),
|
|
1399
1399
|
_: 1
|
|
1400
1400
|
}),
|
|
1401
|
-
|
|
1401
|
+
ne((r(), u(s, {
|
|
1402
1402
|
severity: "secondary",
|
|
1403
1403
|
outlined: "",
|
|
1404
1404
|
class: "cui-button shrink-0",
|
|
1405
1405
|
onClick: xt
|
|
1406
1406
|
}, {
|
|
1407
|
-
icon:
|
|
1407
|
+
icon: g(() => [E(le, { class: "w-4.5 h-4.5" })]),
|
|
1408
1408
|
_: 1
|
|
1409
1409
|
})), [[
|
|
1410
1410
|
st,
|
|
@@ -1412,13 +1412,13 @@ var vt = { class: "flex items-center justify-between gap-2 text-sm" }, yt = { cl
|
|
|
1412
1412
|
void 0,
|
|
1413
1413
|
{ left: !0 }
|
|
1414
1414
|
]]),
|
|
1415
|
-
|
|
1415
|
+
ne((r(), u(s, {
|
|
1416
1416
|
severity: "secondary",
|
|
1417
1417
|
outlined: "",
|
|
1418
1418
|
class: "cui-button shrink-0",
|
|
1419
|
-
onClick: i[4] ||= (e) =>
|
|
1419
|
+
onClick: i[4] ||= (e) => m(Ae)?.toggleMenu(e)
|
|
1420
1420
|
}, {
|
|
1421
|
-
icon:
|
|
1421
|
+
icon: g(() => [E(k, { class: "w-4.5 h-4.5" })]),
|
|
1422
1422
|
_: 1
|
|
1423
1423
|
})), [[
|
|
1424
1424
|
st,
|
|
@@ -1427,60 +1427,60 @@ var vt = { class: "flex items-center justify-between gap-2 text-sm" }, yt = { cl
|
|
|
1427
1427
|
{ left: !0 }
|
|
1428
1428
|
]])
|
|
1429
1429
|
]),
|
|
1430
|
-
|
|
1431
|
-
done:
|
|
1432
|
-
total:
|
|
1433
|
-
})), 1),
|
|
1434
|
-
value:
|
|
1430
|
+
m(G) ? (r(), _("div", $, [m(G).active ? (r(), _(y, { key: 0 }, [E(fe, { class: "w-4 h-4 text-primary shrink-0" }), x("div", Dn, [x("div", On, a(t.$t("views.training.upload_progress", {
|
|
1431
|
+
done: m(G).done + m(G).failed,
|
|
1432
|
+
total: m(G).total
|
|
1433
|
+
})), 1), E(pe, {
|
|
1434
|
+
value: m(G).total ? Math.round((m(G).done + m(G).failed) / m(G).total * 100) : 0,
|
|
1435
1435
|
"show-value": !1,
|
|
1436
1436
|
style: { height: "6px" },
|
|
1437
1437
|
class: "mt-1.5"
|
|
1438
|
-
}, null, 8, ["value"])])], 64)) : (r(),
|
|
1439
|
-
|
|
1438
|
+
}, null, 8, ["value"])])], 64)) : (r(), _(y, { key: 1 }, [
|
|
1439
|
+
m(G).failed ? (r(), u(j, {
|
|
1440
1440
|
key: 0,
|
|
1441
1441
|
class: "w-5 h-5 text-red-500 shrink-0"
|
|
1442
|
-
})) : (r(),
|
|
1442
|
+
})) : (r(), u(_e, {
|
|
1443
1443
|
key: 1,
|
|
1444
1444
|
class: "w-5 h-5 text-green-500 shrink-0"
|
|
1445
1445
|
})),
|
|
1446
|
-
|
|
1447
|
-
|
|
1446
|
+
x("span", kn, [S(a(t.$t("views.training.submit_done", m(G).done)), 1), m(G).failed ? (r(), _(y, { key: 0 }, [S(" · " + a(t.$t("views.training.upload_failed_summary", { count: m(G).failed })), 1)], 64)) : d("", !0)]),
|
|
1447
|
+
E(s, {
|
|
1448
1448
|
severity: "secondary",
|
|
1449
1449
|
text: "",
|
|
1450
1450
|
rounded: "",
|
|
1451
1451
|
class: "cui-icon-sm shrink-0",
|
|
1452
|
-
onClick: i[5] ||= (e) =>
|
|
1452
|
+
onClick: i[5] ||= (e) => m(M).dismissProgress()
|
|
1453
1453
|
}, {
|
|
1454
|
-
icon:
|
|
1454
|
+
icon: g(() => [E(N, { class: "w-4 h-4" })]),
|
|
1455
1455
|
_: 1
|
|
1456
1456
|
})
|
|
1457
|
-
], 64))])) :
|
|
1458
|
-
|
|
1457
|
+
], 64))])) : m(H).length && !m(Z).length ? (r(), _("div", An, [E(P, { class: "w-5 h-5 text-primary shrink-0" }), x("span", jn, a(t.$t("views.training.verify_hint")), 1)])) : d("", !0),
|
|
1458
|
+
x("div", {
|
|
1459
1459
|
ref_key: "scrollRef",
|
|
1460
|
-
ref:
|
|
1460
|
+
ref: Ne,
|
|
1461
1461
|
class: "flex-1 min-h-0 overflow-y-auto overscroll-contain"
|
|
1462
|
-
}, [
|
|
1462
|
+
}, [m(D).isLoading.value && !m(D).data.value ? (r(), _("div", {
|
|
1463
1463
|
key: 0,
|
|
1464
1464
|
class: "grid w-full gap-3 p-px",
|
|
1465
|
-
style:
|
|
1466
|
-
}, [(r(),
|
|
1465
|
+
style: v(m(qe))
|
|
1466
|
+
}, [(r(), _(y, null, n(8, (e) => x("div", {
|
|
1467
1467
|
key: e,
|
|
1468
1468
|
class: "cui-card overflow-hidden"
|
|
1469
|
-
}, [
|
|
1469
|
+
}, [E(F, {
|
|
1470
1470
|
class: "aspect-video",
|
|
1471
1471
|
width: "100%",
|
|
1472
1472
|
height: "100%"
|
|
1473
|
-
}),
|
|
1473
|
+
}), x("div", Mn, [E(F, {
|
|
1474
1474
|
height: "14px",
|
|
1475
1475
|
width: "70%",
|
|
1476
1476
|
class: "mb-1"
|
|
1477
|
-
}),
|
|
1477
|
+
}), E(F, {
|
|
1478
1478
|
height: "12px",
|
|
1479
1479
|
width: "40%"
|
|
1480
|
-
})])])), 64))], 4)) :
|
|
1480
|
+
})])])), 64))], 4)) : m(U).length === 0 ? (r(), _("div", Nn, [E(Ce, { class: "w-12 h-12 text-muted" }), x("span", Pn, a(t.$t(m(nt) ? "views.training.no_matches" : "views.training.no_candidates")), 1)])) : (r(), _(y, { key: 2 }, [x("div", {
|
|
1481
1481
|
class: "grid w-full gap-3 p-px",
|
|
1482
|
-
style:
|
|
1483
|
-
}, [(r(!0),
|
|
1482
|
+
style: v(m(qe))
|
|
1483
|
+
}, [(r(!0), _(y, null, n(m(rt), (o) => (r(), u($e, {
|
|
1484
1484
|
key: o.id,
|
|
1485
1485
|
class: "cui-card cui-training-card overflow-hidden transition-shadow cursor-pointer hover:shadow-md aspect-[1.17] flex flex-col",
|
|
1486
1486
|
pt: {
|
|
@@ -1492,20 +1492,20 @@ var vt = { class: "flex items-center justify-between gap-2 text-sm" }, yt = { cl
|
|
|
1492
1492
|
},
|
|
1493
1493
|
onClick: (e) => yt(o)
|
|
1494
1494
|
}, {
|
|
1495
|
-
header:
|
|
1496
|
-
|
|
1495
|
+
header: g(() => [x("div", Fn, [
|
|
1496
|
+
E(Oe, {
|
|
1497
1497
|
class: "absolute inset-0",
|
|
1498
1498
|
src: pt(o.id),
|
|
1499
1499
|
alt: Q(o.cameraId),
|
|
1500
1500
|
"image-container-class": "w-full h-full",
|
|
1501
1501
|
"image-style": { objectFit: "cover" }
|
|
1502
1502
|
}, null, 8, ["src", "alt"]),
|
|
1503
|
-
|
|
1503
|
+
x("div", In, [(r(!0), _(y, null, n(ht(o), (e, t) => (r(), _("span", {
|
|
1504
1504
|
key: t,
|
|
1505
1505
|
class: "px-1.5 py-0.5 rounded text-xs font-medium text-white",
|
|
1506
|
-
style:
|
|
1506
|
+
style: v({ backgroundColor: m(Se)(String(t)).color })
|
|
1507
1507
|
}, a(mt(String(t))) + " ×" + a(e), 5))), 128))]),
|
|
1508
|
-
o.upload ? (r(),
|
|
1508
|
+
o.upload ? (r(), _("div", Ln, [o.upload === "failed" ? ne((r(), u(z, {
|
|
1509
1509
|
key: 0,
|
|
1510
1510
|
severity: "danger",
|
|
1511
1511
|
value: t.$t("views.training.upload_failed")
|
|
@@ -1514,23 +1514,23 @@ var vt = { class: "flex items-center justify-between gap-2 text-sm" }, yt = { cl
|
|
|
1514
1514
|
o.uploadError,
|
|
1515
1515
|
void 0,
|
|
1516
1516
|
{ top: !0 }
|
|
1517
|
-
]]) : o.upload === "uploading" ? (r(),
|
|
1517
|
+
]]) : o.upload === "uploading" ? (r(), u(z, {
|
|
1518
1518
|
key: 1,
|
|
1519
1519
|
severity: "info",
|
|
1520
1520
|
value: t.$t("views.training.upload_uploading")
|
|
1521
|
-
}, null, 8, ["value"])) : (r(),
|
|
1521
|
+
}, null, 8, ["value"])) : (r(), u(z, {
|
|
1522
1522
|
key: 2,
|
|
1523
1523
|
severity: "secondary",
|
|
1524
1524
|
value: t.$t("views.training.upload_queued")
|
|
1525
|
-
}, null, 8, ["value"]))])) :
|
|
1526
|
-
!
|
|
1525
|
+
}, null, 8, ["value"]))])) : d("", !0),
|
|
1526
|
+
!m(q) && !K(o) ? (r(), _("div", Rn, [ne((r(), u(s, {
|
|
1527
1527
|
severity: "secondary",
|
|
1528
1528
|
rounded: "",
|
|
1529
1529
|
size: "small",
|
|
1530
1530
|
class: "cui-icon-sm text-white",
|
|
1531
1531
|
onClick: e((e) => wt(o), ["stop"])
|
|
1532
1532
|
}, {
|
|
1533
|
-
icon:
|
|
1533
|
+
icon: g(() => [E(ke, {
|
|
1534
1534
|
width: "100%",
|
|
1535
1535
|
height: "100%"
|
|
1536
1536
|
})]),
|
|
@@ -1540,86 +1540,86 @@ var vt = { class: "flex items-center justify-between gap-2 text-sm" }, yt = { cl
|
|
|
1540
1540
|
t.$t("views.training.delete_candidate"),
|
|
1541
1541
|
void 0,
|
|
1542
1542
|
{ top: !0 }
|
|
1543
|
-
]])])) :
|
|
1543
|
+
]])])) : d("", !0)
|
|
1544
1544
|
])]),
|
|
1545
|
-
content:
|
|
1545
|
+
content: g(() => [x("div", zn, [x("div", Bn, [m(q) && !K(o) ? (r(), u(Pe, {
|
|
1546
1546
|
key: 0,
|
|
1547
|
-
"model-value":
|
|
1547
|
+
"model-value": m(ot).has(o.id),
|
|
1548
1548
|
binary: "",
|
|
1549
1549
|
size: "small",
|
|
1550
1550
|
onClick: i[6] ||= e(() => {}, ["stop"]),
|
|
1551
|
-
"onUpdate:modelValue": (e) =>
|
|
1552
|
-
}, null, 8, ["model-value", "onUpdate:modelValue"])) :
|
|
1551
|
+
"onUpdate:modelValue": (e) => m(dt)(o.id)
|
|
1552
|
+
}, null, 8, ["model-value", "onUpdate:modelValue"])) : d("", !0), x("div", Vn, [x("div", Hn, a(Q(o.cameraId)), 1), x("div", Un, a(m(be)(o.createdAt)), 1)])]), E(z, {
|
|
1553
1553
|
severity: gt(o.status),
|
|
1554
1554
|
value: t.$t(`views.training.status_${o.status}`)
|
|
1555
1555
|
}, null, 8, ["severity", "value"])])]),
|
|
1556
1556
|
_: 2
|
|
1557
|
-
}, 1032, ["onClick"]))), 128))], 4),
|
|
1557
|
+
}, 1032, ["onClick"]))), 128))], 4), m(it) ? (r(), _("div", {
|
|
1558
1558
|
key: 0,
|
|
1559
1559
|
ref_key: "loadMoreRef",
|
|
1560
|
-
ref:
|
|
1560
|
+
ref: je,
|
|
1561
1561
|
class: "h-px"
|
|
1562
|
-
}, null, 512)) :
|
|
1563
|
-
|
|
1562
|
+
}, null, 512)) : d("", !0)], 64))], 512),
|
|
1563
|
+
m(U).length || m(q) ? (r(), u(at, {
|
|
1564
1564
|
key: 3,
|
|
1565
|
-
"force-visible":
|
|
1566
|
-
"scroll-y":
|
|
1565
|
+
"force-visible": m(q),
|
|
1566
|
+
"scroll-y": m(We)
|
|
1567
1567
|
}, {
|
|
1568
|
-
default:
|
|
1569
|
-
|
|
1568
|
+
default: g(() => [m(q) ? (r(), _(y, { key: 1 }, [
|
|
1569
|
+
E(W, {
|
|
1570
1570
|
grouped: "",
|
|
1571
1571
|
"tooltip-props": { value: t.$t("components.form.tooltip.cancel_selection") },
|
|
1572
1572
|
"button-props": { severity: "secondary" },
|
|
1573
|
-
icon:
|
|
1573
|
+
icon: m(V),
|
|
1574
1574
|
"icon-props": {
|
|
1575
1575
|
width: "100%",
|
|
1576
1576
|
height: "100%"
|
|
1577
1577
|
},
|
|
1578
|
-
onClick:
|
|
1578
|
+
onClick: m(ut)
|
|
1579
1579
|
}, null, 8, [
|
|
1580
1580
|
"tooltip-props",
|
|
1581
1581
|
"icon",
|
|
1582
1582
|
"onClick"
|
|
1583
1583
|
]),
|
|
1584
|
-
|
|
1584
|
+
E(W, {
|
|
1585
1585
|
grouped: "",
|
|
1586
|
-
"tooltip-props": { value:
|
|
1587
|
-
"button-props": { severity:
|
|
1588
|
-
icon:
|
|
1586
|
+
"tooltip-props": { value: m(ct) ? t.$t("views.training.deselect_all") : t.$t("views.training.select_all") },
|
|
1587
|
+
"button-props": { severity: m(ct) ? "primary" : "secondary" },
|
|
1588
|
+
icon: m(ye),
|
|
1589
1589
|
"icon-props": {
|
|
1590
1590
|
width: "100%",
|
|
1591
1591
|
height: "100%"
|
|
1592
1592
|
},
|
|
1593
|
-
onClick:
|
|
1593
|
+
onClick: m(X)
|
|
1594
1594
|
}, null, 8, [
|
|
1595
1595
|
"tooltip-props",
|
|
1596
1596
|
"button-props",
|
|
1597
1597
|
"icon",
|
|
1598
1598
|
"onClick"
|
|
1599
1599
|
]),
|
|
1600
|
-
|
|
1600
|
+
E(W, {
|
|
1601
1601
|
grouped: "",
|
|
1602
1602
|
"tooltip-props": { value: t.$t("views.training.submit_selected") },
|
|
1603
|
-
"button-props": { disabled: !
|
|
1604
|
-
icon:
|
|
1603
|
+
"button-props": { disabled: !m(ft).length || m(me).isPending.value },
|
|
1604
|
+
icon: m(tt),
|
|
1605
1605
|
"icon-props": {
|
|
1606
1606
|
width: "100%",
|
|
1607
1607
|
height: "100%"
|
|
1608
1608
|
},
|
|
1609
|
-
onClick: i[8] ||= (e) => St(
|
|
1609
|
+
onClick: i[8] ||= (e) => St(m(ft))
|
|
1610
1610
|
}, null, 8, [
|
|
1611
1611
|
"tooltip-props",
|
|
1612
1612
|
"button-props",
|
|
1613
1613
|
"icon"
|
|
1614
1614
|
]),
|
|
1615
|
-
|
|
1615
|
+
E(W, {
|
|
1616
1616
|
grouped: "",
|
|
1617
1617
|
"tooltip-props": { value: t.$t("views.training.delete_selected") },
|
|
1618
1618
|
"button-props": {
|
|
1619
1619
|
severity: "danger",
|
|
1620
|
-
disabled: !
|
|
1620
|
+
disabled: !m(ot).size || m(J)
|
|
1621
1621
|
},
|
|
1622
|
-
icon:
|
|
1622
|
+
icon: m(ce),
|
|
1623
1623
|
"icon-props": {
|
|
1624
1624
|
width: "100%",
|
|
1625
1625
|
height: "100%"
|
|
@@ -1630,56 +1630,56 @@ var vt = { class: "flex items-center justify-between gap-2 text-sm" }, yt = { cl
|
|
|
1630
1630
|
"button-props",
|
|
1631
1631
|
"icon"
|
|
1632
1632
|
])
|
|
1633
|
-
], 64)) : (r(),
|
|
1633
|
+
], 64)) : (r(), _(y, { key: 0 }, [E(W, {
|
|
1634
1634
|
grouped: "",
|
|
1635
1635
|
"tooltip-props": { value: t.$t("views.training.select") },
|
|
1636
1636
|
"button-props": { severity: "secondary" },
|
|
1637
|
-
icon:
|
|
1637
|
+
icon: m(De),
|
|
1638
1638
|
"icon-props": {
|
|
1639
1639
|
width: "100%",
|
|
1640
1640
|
height: "100%"
|
|
1641
1641
|
},
|
|
1642
|
-
onClick:
|
|
1642
|
+
onClick: m(lt)
|
|
1643
1643
|
}, null, 8, [
|
|
1644
1644
|
"tooltip-props",
|
|
1645
1645
|
"icon",
|
|
1646
1646
|
"onClick"
|
|
1647
|
-
]),
|
|
1647
|
+
]), E(W, {
|
|
1648
1648
|
grouped: "",
|
|
1649
|
-
"tooltip-props": { value:
|
|
1649
|
+
"tooltip-props": { value: m(Z).length ? t.$t("views.training.submit_ready", m(Z).length) : t.$t("views.training.submit_disabled") },
|
|
1650
1650
|
"button-props": {
|
|
1651
1651
|
class: "text-white",
|
|
1652
|
-
disabled: !
|
|
1652
|
+
disabled: !m(Z).length || m(me).isPending.value
|
|
1653
1653
|
},
|
|
1654
|
-
icon:
|
|
1654
|
+
icon: m(tt),
|
|
1655
1655
|
"icon-props": {
|
|
1656
1656
|
width: "26px",
|
|
1657
1657
|
height: "26px"
|
|
1658
1658
|
},
|
|
1659
|
-
onClick: i[7] ||= (e) => St(
|
|
1659
|
+
onClick: i[7] ||= (e) => St(m(Z))
|
|
1660
1660
|
}, null, 8, [
|
|
1661
1661
|
"tooltip-props",
|
|
1662
1662
|
"button-props",
|
|
1663
1663
|
"icon"
|
|
1664
1664
|
])], 64))]),
|
|
1665
1665
|
_: 1
|
|
1666
|
-
}, 8, ["force-visible", "scroll-y"])) :
|
|
1667
|
-
|
|
1666
|
+
}, 8, ["force-visible", "scroll-y"])) : d("", !0),
|
|
1667
|
+
E(ue, {
|
|
1668
1668
|
ref_key: "statusMenuRef",
|
|
1669
|
-
ref:
|
|
1670
|
-
items:
|
|
1669
|
+
ref: we,
|
|
1670
|
+
items: m(et),
|
|
1671
1671
|
popover: { pt: { content: { class: "p-0! rounded-xl! overflow-hidden!" } } }
|
|
1672
1672
|
}, null, 8, ["items"]),
|
|
1673
|
-
|
|
1673
|
+
E(ue, {
|
|
1674
1674
|
ref_key: "cameraMenuRef",
|
|
1675
|
-
ref:
|
|
1676
|
-
items:
|
|
1675
|
+
ref: Ee,
|
|
1676
|
+
items: m(Ye),
|
|
1677
1677
|
popover: { pt: { content: { class: "p-0! rounded-xl! overflow-hidden!" } } }
|
|
1678
1678
|
}, null, 8, ["items"]),
|
|
1679
|
-
|
|
1679
|
+
E(ue, {
|
|
1680
1680
|
ref_key: "settingsMenuRef",
|
|
1681
|
-
ref:
|
|
1682
|
-
items:
|
|
1681
|
+
ref: Ae,
|
|
1682
|
+
items: m(Xe),
|
|
1683
1683
|
"auto-hide": !1,
|
|
1684
1684
|
popover: { pt: {
|
|
1685
1685
|
root: { class: "w-[22rem]" },
|