@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.
Files changed (379) hide show
  1. package/dist/interface/assets/{404-CiOxoqnT.js → 404-BLVuKvLk.js} +1 -1
  2. package/dist/interface/assets/{About-DWOlfWEm.js → About-C-AJ0jfI.js} +1 -1
  3. package/dist/interface/assets/Assistant-BJKGIvVo.js +1 -0
  4. package/dist/interface/assets/{Assistant-CXx7EY1W.css → Assistant-BQ6Ld-bt.css} +1 -1
  5. package/dist/interface/assets/{Automation-BJgwUkUB.js → Automation-C95DzuZb.js} +3 -3
  6. package/dist/interface/assets/{AutomationImport-9GRAndAt.js → AutomationImport-C8VYjDzf.js} +2 -2
  7. package/dist/interface/assets/{AutomationStore-D_HR2Xby.js → AutomationStore-CE4PKRGd.js} +2 -2
  8. package/dist/interface/assets/{AutomationStoreDetail-B9MxV2py.js → AutomationStoreDetail-DavWfjLv.js} +2 -2
  9. package/dist/interface/assets/Automations-BOP_17Ri.js +2 -0
  10. package/dist/interface/assets/Camera-BW9ikKqh.css +1 -0
  11. package/dist/interface/assets/Camera-C5S7eI9a.js +2 -0
  12. package/dist/interface/assets/{CameraConsole-BKPTLSTO.js → CameraConsole-C4AmtcrM.js} +1 -1
  13. package/dist/interface/assets/{Cameras-DcrVCgLy.js → Cameras-DR577Bno.js} +2 -2
  14. package/dist/interface/assets/{Camview-DasO326h.css → Camview-Bri_T7Tq.css} +1 -1
  15. package/dist/interface/assets/Camview-CHxKB41T.js +1 -0
  16. package/dist/interface/assets/{Config-BmEL5EaW.js → Config-BrDDGWpr.js} +1 -1
  17. package/dist/interface/assets/{ConfigActionAssistant-DM4tIhoa.js → ConfigActionAssistant-YtCVI8LZ.js} +1 -1
  18. package/dist/interface/assets/{ConfigActionCameraControl-Deo0eDPS.js → ConfigActionCameraControl-Dg_1zOYt.js} +1 -1
  19. package/dist/interface/assets/{ConfigActionHttp-BxJmoshF.js → ConfigActionHttp-BzwLv2tn.js} +1 -1
  20. package/dist/interface/assets/{ConfigActionImageInput-KrzXFQDm.js → ConfigActionImageInput-CLdY2sV4.js} +1 -1
  21. package/dist/interface/assets/{ConfigActionMqtt-BoYBomRC.js → ConfigActionMqtt-lGqYshl3.js} +1 -1
  22. package/dist/interface/assets/{ConfigActionNotification-CSAOijDt.js → ConfigActionNotification-D5Dj3EoU.js} +1 -1
  23. package/dist/interface/assets/{ConfigActionNotificationControl-BOdyKiOs.js → ConfigActionNotificationControl-Dy5fKamr.js} +1 -1
  24. package/dist/interface/assets/{ConfigActionOutput-CwsPcnd_.js → ConfigActionOutput-DzsQ31L0.js} +1 -1
  25. package/dist/interface/assets/{ConfigActionPlugin-D3wyULpp.js → ConfigActionPlugin-BFrBcXvL.js} +1 -1
  26. package/dist/interface/assets/{ConfigActionSensor-BmeaIxYY.js → ConfigActionSensor-CX8ePlan.js} +1 -1
  27. package/dist/interface/assets/{ConfigActionSnapshot-DbyFKcYr.js → ConfigActionSnapshot-BATLRmh6.js} +1 -1
  28. package/dist/interface/assets/{ConfigActionVariable-cThGJ1Pc.js → ConfigActionVariable-Dgn5jvaR.js} +1 -1
  29. package/dist/interface/assets/{ConfigConditionIfElse-BugkJeXR.js → ConfigConditionIfElse-D5IIBjyk.js} +1 -1
  30. package/dist/interface/assets/{ConfigConditionSensorState-Bf-mMf4E.js → ConfigConditionSensorState-C0JxBWdG.js} +1 -1
  31. package/dist/interface/assets/{ConfigConditionSwitch-DcpFoYET.js → ConfigConditionSwitch-Brlgd0XP.js} +1 -1
  32. package/dist/interface/assets/{ConfigSensorValueInput-CgAI34__.js → ConfigSensorValueInput-CtuH8dCa.js} +1 -1
  33. package/dist/interface/assets/{ConfigTriggerDetection-BWK6gfwM.js → ConfigTriggerDetection-DsL7lLQl.js} +1 -1
  34. package/dist/interface/assets/{ConfigTriggerGeofence-Cm3CU7Tl.js → ConfigTriggerGeofence-CAGIk1_W.js} +1 -1
  35. package/dist/interface/assets/{ConfigTriggerMqtt-BMFjTAso.js → ConfigTriggerMqtt-B_iFalAQ.js} +1 -1
  36. package/dist/interface/assets/{ConfigTriggerSensor-DOdJkZRo.js → ConfigTriggerSensor-hYNbLXUu.js} +1 -1
  37. package/dist/interface/assets/{ConfigTriggerSystem-BFDIbZsE.js → ConfigTriggerSystem-DR1EFpE9.js} +1 -1
  38. package/dist/interface/assets/{ConfigTriggerWebhook-DDoUEVHb.js → ConfigTriggerWebhook-C-B5GGFH.js} +1 -1
  39. package/dist/interface/assets/{Console-BIj7cIqO.js → Console-cIr6lYux.js} +1 -1
  40. package/dist/interface/assets/CuiAssistantConversation-Bigl43Ph.js +5 -0
  41. package/dist/interface/assets/CuiAssistantConversation-BmshW6Vc.css +1 -0
  42. package/dist/interface/assets/{CuiAutomationRunsDialog-DMUfNcsf.js → CuiAutomationRunsDialog-Ci7SWAml.js} +1 -1
  43. package/dist/interface/assets/{CuiBottomSheet-FwsPnJ3n.js → CuiBottomSheet-C2sM2E3M.js} +1 -1
  44. package/dist/interface/assets/CuiBottomSheet-ViBOgklN.js +1 -0
  45. package/dist/interface/assets/CuiCameraPipCard-wdK7xir-.js +1 -0
  46. package/dist/interface/assets/{CuiCameraRecordings-BeciatDY.js → CuiCameraRecordings-BB7bF67B.js} +1 -1
  47. package/dist/interface/assets/{CuiCameraShares-CSFwIYsg.js → CuiCameraShares-B6jdUBVm.js} +1 -1
  48. package/dist/interface/assets/CuiCameraTable-CHnQFkce.js +1 -0
  49. package/dist/interface/assets/{CuiCameraTable-DBRfGX3I.js → CuiCameraTable-CpBo25Qc.js} +1 -1
  50. package/dist/interface/assets/{CuiChartTable-CtasoxMM.js → CuiChartTable-dIcxGtfl.js} +1 -1
  51. package/dist/interface/assets/{CuiConsole-DQbAafiz.js → CuiConsole-BGptpT6r.js} +1 -1
  52. package/dist/interface/assets/{CuiDataTable-JlD7Agky.js → CuiDataTable-CQmp5mAy.js} +1 -1
  53. package/dist/interface/assets/CuiLightControl-wbZi3fA1.js +1 -0
  54. package/dist/interface/assets/CuiPluginCard-BjIc7It9.js +2 -0
  55. package/dist/interface/assets/{CuiPluginCategoryChip-B2bR5LQa.js → CuiPluginCategoryChip-BtJ_6_gN.js} +1 -1
  56. package/dist/interface/assets/{CuiPluginOAuthButton-DfEjfcY-.js → CuiPluginOAuthButton-Duf35I8K.js} +2 -2
  57. package/dist/interface/assets/{CuiPluginTrustBadge-C6CW6Soh.js → CuiPluginTrustBadge-jxXeRTH2.js} +1 -1
  58. package/dist/interface/assets/{CuiQRCode-DGKBhDib.js → CuiQRCode-BNchrpoB.js} +1 -1
  59. package/dist/interface/assets/{CuiSchema-pAAVh28m.js → CuiSchema-DGTMkVSe.js} +1 -1
  60. package/dist/interface/assets/{CuiTopNavbarItem-ve-3Dsc3.js → CuiTopNavbarItem-CHtLvn53.js} +1 -1
  61. package/dist/interface/assets/Faces-p18jNfXl.js +1 -0
  62. package/dist/interface/assets/FirstSteps-HzaBMDbH.js +1 -0
  63. package/dist/interface/assets/Floorplan-DYyEx7WO.js +1 -0
  64. package/dist/interface/assets/Instances-Dl-6rL5O.js +1 -0
  65. package/dist/interface/assets/{Logs-BhRactvQ.js → Logs-DsJkuQFq.js} +2 -2
  66. package/dist/interface/assets/{Menu-DMCmUVDs.js → Menu-D_woMkjL.js} +1 -1
  67. package/dist/interface/assets/Metrics-l3UwykCM.js +12 -0
  68. package/dist/interface/assets/{OAuthDeviceFlow-BMEwVkIa.js → OAuthDeviceFlow-CXfILAE1.js} +1 -1
  69. package/dist/interface/assets/Plugin-Ldj3HygQ.js +1 -0
  70. package/dist/interface/assets/{PluginConsole-C4Ba_U_1.js → PluginConsole-C96m5zKy.js} +1 -1
  71. package/dist/interface/assets/{PluginDetail-13OWIzdd.js → PluginDetail-CnfaI1vh.js} +2 -2
  72. package/dist/interface/assets/{PluginSchema-DN0cSU8s.js → PluginSchema-u1bqXU29.js} +1 -1
  73. package/dist/interface/assets/{PluginSearch-sPkO8aH3.js → PluginSearch-BiXG3Xk2.js} +2 -2
  74. package/dist/interface/assets/PluginSearch-BuE7we1T.js +1 -0
  75. package/dist/interface/assets/{PluginUpdateProgress-CeWuRp3Z.js → PluginUpdateProgress-BT4lN9HT.js} +1 -1
  76. package/dist/interface/assets/{Plugins-C8yjhxnQ.js → Plugins-Csx6AXaW.js} +1 -1
  77. package/dist/interface/assets/Recordings-BEKAn6QK.css +1 -0
  78. package/dist/interface/assets/Recordings-D0KTY5cI.js +1 -0
  79. package/dist/interface/assets/{SensorEdit-C-yJdJuP.js → SensorEdit-zs-f_o1N.js} +1 -1
  80. package/dist/interface/assets/{SensorHistory-ClAcOgHj.js → SensorHistory-Cet35_RO.js} +1 -1
  81. package/dist/interface/assets/Sensors-BLAoalEt.js +2 -0
  82. package/dist/interface/assets/Settings-C-LCDIbK.js +1 -0
  83. package/dist/interface/assets/SettingsAccount-BsN7jGmo.js +1 -0
  84. package/dist/interface/assets/SettingsAccount-DuVyCSE-.js +1 -0
  85. package/dist/interface/assets/{SettingsAppearance-CJt4xJEW.js → SettingsAppearance-BS4EQNjH.js} +1 -1
  86. package/dist/interface/assets/SettingsAppearance-DQcGbYbV.js +1 -0
  87. package/dist/interface/assets/SettingsAssistant-B0PF3Rdg.css +1 -0
  88. package/dist/interface/assets/SettingsAssistant-DViJklFd.js +1 -0
  89. package/dist/interface/assets/{SettingsBackup-DIJmci05.js → SettingsBackup-DBlV1gej.js} +1 -1
  90. package/dist/interface/assets/{SettingsList-Cb_dLy5T.js → SettingsList-D8eSwbBY.js} +1 -1
  91. package/dist/interface/assets/{SettingsMqtt-LIuCRPT5.js → SettingsMqtt-JoszJJgV.js} +1 -1
  92. package/dist/interface/assets/{SettingsNotifications-CZxqqH_8.js → SettingsNotifications-3veSrxa_.js} +1 -1
  93. package/dist/interface/assets/{SettingsRecordings-BEpwMh-y.js → SettingsRecordings-CLz9Zp47.js} +1 -1
  94. package/dist/interface/assets/{SettingsRemote-DRt-N_yA.js → SettingsRemote-DUyl8k7I.js} +2 -2
  95. package/dist/interface/assets/{SettingsSystem-Cncdpx8T.js → SettingsSystem-txTFGomQ.js} +2 -2
  96. package/dist/interface/assets/{SettingsUsers-DZkz8WlI.js → SettingsUsers-CUp6vQPc.js} +1 -1
  97. package/dist/interface/assets/{Terminal-U4yfJN3O.js → Terminal-hln2UuSR.js} +2 -2
  98. package/dist/interface/assets/Training-D6lhvUf-.js +1 -0
  99. package/dist/interface/assets/Updates-BwSWt9w7.js +2 -0
  100. package/dist/interface/assets/{VariableInput-PVsqGYW0.js → VariableInput-183LygmK.js} +1 -1
  101. package/dist/interface/assets/{VersionsHandler-Df7dhddp.js → VersionsHandler-DkbkcypK.js} +1 -1
  102. package/dist/interface/assets/{VirtualSensorCreate-FTKANjd-.js → VirtualSensorCreate-Bn4tgdxA.js} +1 -1
  103. package/dist/interface/assets/Workers-B6b15izn.js +2 -0
  104. package/dist/interface/assets/api-C9mnOxie.js +4 -0
  105. package/dist/interface/assets/api-Cj9a6qPu.css +2 -0
  106. package/dist/interface/assets/{api-DpqXhwcx.js → api-h4HRB3ef.js} +1 -1
  107. package/dist/interface/assets/{assistant-Lz3mFLDo.js → assistant-4hYyIu6D.js} +1 -1
  108. package/dist/interface/assets/{auth-L7_5vsJs.js → auth-DFesRtwI.js} +1 -1
  109. package/dist/interface/assets/{automations-D1XFFSrm.js → automations-D2bnX8uw.js} +1 -1
  110. package/dist/interface/assets/{cameraSources-DEGJDtmK.js → cameraSources-DmVZWs4-.js} +1 -1
  111. package/dist/interface/assets/cloudHandoff-Ba98bzeq.js +1 -0
  112. package/dist/interface/assets/{config-CVqy37fG.js → config-DDaCrMSU.js} +1 -1
  113. package/dist/interface/assets/esm-Bn9gXwX4.js +1 -0
  114. package/dist/interface/assets/esm-BzM6y2-F.js +1 -0
  115. package/dist/interface/assets/esm-CP3JWrtj.js +1 -0
  116. package/dist/interface/assets/esm-CjAXkqCf.js +1 -0
  117. package/dist/interface/assets/esm-Cqxk-j1S.js +1 -0
  118. package/dist/interface/assets/esm-DFHd3JNU.js +1 -0
  119. package/dist/interface/assets/esm-DfMLJtug.js +1 -0
  120. package/dist/interface/assets/esm-DhDrpq7a.js +1 -0
  121. package/dist/interface/assets/esm-DvhM-SOd.js +1 -0
  122. package/dist/interface/assets/esm-G63bqygQ.js +1 -0
  123. package/dist/interface/assets/esm-Gn-Y59hU.js +1 -0
  124. package/dist/interface/assets/esm-KJSOz2vj.js +1 -0
  125. package/dist/interface/assets/esm-Ryfc94Tm.js +1 -0
  126. package/dist/interface/assets/esm-rSfI5Poy.js +1 -0
  127. package/dist/interface/assets/{flowSchema-CppNBDy1.js → flowSchema-YJtAu9gB.js} +1 -1
  128. package/dist/interface/assets/main-C796FmqQ.js +3 -0
  129. package/dist/interface/assets/{main-Bo0Lb1y2.css → main-DVa5U7UB.css} +1 -1
  130. package/dist/interface/assets/{mqtt-BENV9Fx4.js → mqtt-DGBPptzB.js} +1 -1
  131. package/dist/interface/assets/native-CZJE8bTs.js +1 -0
  132. package/dist/interface/assets/native-DKZwialB.js +1 -0
  133. package/dist/interface/assets/{notifications-By40oPng.js → notifications-5yeK345h.js} +1 -1
  134. package/dist/interface/assets/plugin-DSEMkqaK.js +1 -0
  135. package/dist/interface/assets/{plugins-09rEDbMz.js → plugins-BTOdE_zv.js} +1 -1
  136. package/dist/interface/assets/{rooms-LBxn-Uuu.js → rooms-BCdm6IAx.js} +1 -1
  137. package/dist/interface/assets/{sensorIcons-Csu5s0uk.js → sensorIcons-5Ynqwo3e.js} +1 -1
  138. package/dist/interface/assets/{sensorSlots-CtbKmsGG.js → sensorSlots-BF70tpV7.js} +1 -1
  139. package/dist/interface/assets/{sensors-CbzNs18A.js → sensors-CeFEEz8r.js} +1 -1
  140. package/dist/interface/assets/{server-Btp5KILd.js → server-bhW2Mw4D.js} +1 -1
  141. package/dist/interface/assets/{theme-GhzGwpqd.js → theme-DF_XA58O.js} +1 -1
  142. package/dist/interface/assets/{types-D8QWPhe-.js → types-ArGM5-5O.js} +1 -1
  143. package/dist/interface/assets/{types-BAwhu9iv.js → types-BcAxmlqC.js} +1 -1
  144. package/dist/interface/assets/{ungrouped-BMk56E3L.js → ungrouped-CkIlDUwl.js} +1 -1
  145. package/dist/interface/assets/{updates-CGo0T4sn.js → updates-D3x_kPMM.js} +1 -1
  146. package/dist/interface/assets/{useAppVersion-CJlexqyz.js → useAppVersion-Dcvu95bZ.js} +1 -1
  147. package/dist/interface/assets/{useBackupRestore-_s8vS5WF.js → useBackupRestore-xp5KhKVn.js} +1 -1
  148. package/dist/interface/assets/{useCameraOptions-CFISVNgk.js → useCameraOptions-8I4MTDgj.js} +1 -1
  149. package/dist/interface/assets/useKeyboardInset-C0Lp0UcX.js +1 -0
  150. package/dist/interface/assets/{useLogsSocket-D-ndWAg0.js → useLogsSocket-bpOiLgWT.js} +1 -1
  151. package/dist/interface/assets/{useNavLayout-CG0X_3kt.js → useNavLayout-Cjf6Da2u.js} +1 -1
  152. package/dist/interface/assets/{usePluginUpdates-nW_dt66E.js → usePluginUpdates-bOMj-IvL.js} +1 -1
  153. package/dist/interface/assets/{usePushRegistration-DCqOAxR4.js → usePushRegistration-HOvLuUVP.js} +2 -2
  154. package/dist/interface/assets/{useServerRestart-CxJGxAcU.js → useServerRestart-CQN4cdHJ.js} +1 -1
  155. package/dist/interface/assets/{useStreamStatus-CXb1HbAq.js → useStreamStatus-Da7c2Wme.js} +1 -1
  156. package/dist/interface/assets/{useTabSwipe-DHb8__wU.js → useTabSwipe-fFuyJJBQ.js} +1 -1
  157. package/dist/interface/assets/{useUpdateChannel-BR4PMh1R.js → useUpdateChannel-Ca1RX32u.js} +1 -1
  158. package/dist/interface/assets/{useUpdatesSocket-DKDRZhvc.js → useUpdatesSocket-DHZNpLQX.js} +1 -1
  159. package/dist/interface/assets/{useUserOptions-lyc4WJ4L.js → useUserOptions-BQdOB-Dp.js} +1 -1
  160. package/dist/interface/assets/{vendor-capacitor-f9ShAzys.js → vendor-capacitor-Bs_WzL0Q.js} +2 -2
  161. package/dist/interface/assets/web-BDNQnMmA.js +1 -0
  162. package/dist/interface/assets/web-BhJykCtq.js +1 -0
  163. package/dist/interface/assets/web-BjKL51lK-wWFeZlLg.js +1 -0
  164. package/dist/interface/assets/web-C7nJwIOa.js +1 -0
  165. package/dist/interface/assets/web-CGJsJQDb.js +1 -0
  166. package/dist/interface/assets/web-CJwASxrl.js +1 -0
  167. package/dist/interface/assets/web-CLe0L31Y.js +1 -0
  168. package/dist/interface/assets/web-DEv1hAn1.js +1 -0
  169. package/dist/interface/assets/web-DaeQvsXT.js +1 -0
  170. package/dist/interface/assets/web-H3-wNunW.js +1 -0
  171. package/dist/interface/assets/web-LCdyqJq1.js +1 -0
  172. package/dist/interface/assets/web-XZWYTK65.js +1 -0
  173. package/dist/interface/assets/web-rU5hlxxW.js +1 -0
  174. package/dist/interface/ha/{404-B2T8Gktj.js → 404-C0mWQGWl.js} +1 -1
  175. package/dist/interface/ha/{About-CrTKzU9_.js → About-ByE7XErJ.js} +3 -3
  176. package/dist/interface/ha/{Assistant-BDHJmYx_.js → Assistant-Z3FTR868.js} +2264 -2133
  177. package/dist/interface/ha/{Automation-Czo5EsAg.js → Automation-COQqTFNw.js} +170 -170
  178. package/dist/interface/ha/{AutomationImport-CuFAQbiX.js → AutomationImport-ueWqMBX9.js} +6 -6
  179. package/dist/interface/ha/{AutomationStore-D-6x0JIt.js → AutomationStore-DBO4aZqy.js} +73 -73
  180. package/dist/interface/ha/{AutomationStoreDetail-Dad4q1MN.js → AutomationStoreDetail-DMnYu7hf.js} +6 -6
  181. package/dist/interface/ha/{Automations-C-oGM5SR.js → Automations-CMdbidc0.js} +70 -70
  182. package/dist/interface/ha/Camera-C28q_3pu.js +657 -0
  183. package/dist/interface/ha/{CameraConsole-hRGwbjsD.js → CameraConsole-oMNZfKE6.js} +3 -3
  184. package/dist/interface/ha/{Cameras-Bk5TFXA8.js → Cameras-CsqrLx97.js} +182 -182
  185. package/dist/interface/ha/{Camview-CsKKqxxY.js → Camview-Br0LUakz.js} +542 -542
  186. package/dist/interface/ha/{Config-Vl4-K3A_.js → Config-Y5eUNSW7.js} +110 -110
  187. package/dist/interface/ha/{ConfigActionAssistant-OWUX8glZ.js → ConfigActionAssistant-hl-6ZACj.js} +4 -4
  188. package/dist/interface/ha/{ConfigActionCameraControl-DEaOot8w.js → ConfigActionCameraControl-DnXlVFWD.js} +3 -3
  189. package/dist/interface/ha/{ConfigActionHttp-CSr2BpKL.js → ConfigActionHttp-BkpkMmRd.js} +2 -2
  190. package/dist/interface/ha/{ConfigActionImageInput--O8Tyca-.js → ConfigActionImageInput-Dp78_QS_.js} +1 -1
  191. package/dist/interface/ha/{ConfigActionMqtt-DQJ4-gs2.js → ConfigActionMqtt-DA_UWb5j.js} +4 -4
  192. package/dist/interface/ha/{ConfigActionNotification-wR8CCA_T.js → ConfigActionNotification-CQ4Ses3a.js} +3 -3
  193. package/dist/interface/ha/{ConfigActionNotificationControl-DNMrHwPz.js → ConfigActionNotificationControl-Cb5PNGz-.js} +2 -2
  194. package/dist/interface/ha/{ConfigActionOutput-C-LVFxFP.js → ConfigActionOutput-DLuNHwRb.js} +1 -1
  195. package/dist/interface/ha/{ConfigActionPlugin-BCREAkNo.js → ConfigActionPlugin-ChKFCNaj.js} +4 -4
  196. package/dist/interface/ha/{ConfigActionSensor-D48CQ6qR.js → ConfigActionSensor-DOutFalW.js} +5 -5
  197. package/dist/interface/ha/{ConfigActionSnapshot-DpDy88Mg.js → ConfigActionSnapshot-GWgY6YIN.js} +2 -2
  198. package/dist/interface/ha/{ConfigActionVariable-D9BxmwvB.js → ConfigActionVariable-bu-9VYTG.js} +1 -1
  199. package/dist/interface/ha/{ConfigConditionIfElse-CW42tQFY.js → ConfigConditionIfElse-iNp8tlZV.js} +3 -3
  200. package/dist/interface/ha/{ConfigConditionSensorState-BZpij7kB.js → ConfigConditionSensorState-Dn7kcHpJ.js} +4 -4
  201. package/dist/interface/ha/{ConfigConditionSwitch-DlTuJ9Sf.js → ConfigConditionSwitch-DaUlDgo0.js} +4 -4
  202. package/dist/interface/ha/{ConfigSensorValueInput-2QLHESlE.js → ConfigSensorValueInput-D6m6suqJ.js} +7 -7
  203. package/dist/interface/ha/{ConfigTriggerDetection-DPmUkmUJ.js → ConfigTriggerDetection-C5B_DC_L.js} +11 -11
  204. package/dist/interface/ha/{ConfigTriggerGeofence--T9OXhGl.js → ConfigTriggerGeofence-B4WVNcK5.js} +5 -5
  205. package/dist/interface/ha/{ConfigTriggerMqtt-fZn_X6yY.js → ConfigTriggerMqtt-wnMfk_Un.js} +1 -1
  206. package/dist/interface/ha/{ConfigTriggerSensor-_3O6iBFX.js → ConfigTriggerSensor-xFpI5KPu.js} +1 -1
  207. package/dist/interface/ha/{ConfigTriggerSystem-CC9lqi8Q.js → ConfigTriggerSystem-YI9WYYVM.js} +2 -2
  208. package/dist/interface/ha/{ConfigTriggerWebhook-BuBcgXqf.js → ConfigTriggerWebhook-58c2KgUe.js} +2 -2
  209. package/dist/interface/ha/{Console-DNc49UEt.js → Console-Coiqh32K.js} +4 -4
  210. package/dist/interface/ha/{CuiAutomationRunsDialog-Dj_iiZht.js → CuiAutomationRunsDialog-CJ2MGfEY.js} +2 -2
  211. package/dist/interface/ha/{CuiBottomSheet-DG7wOV7m.js → CuiBottomSheet-BlG9Pl9j.js} +1 -1
  212. package/dist/interface/ha/{CuiCameraRecordings-BlOZTfQ4.js → CuiCameraRecordings-DLXEB4Q7.js} +12 -12
  213. package/dist/interface/ha/{CuiCameraShares-BOn-mobi.js → CuiCameraShares-BCIeaM6u.js} +6 -6
  214. package/dist/interface/ha/{CuiCameraTable-D50FLiK8.js → CuiCameraTable-PYYC7sOu.js} +2 -2
  215. package/dist/interface/ha/{CuiChartTable-CfcVRvdZ.js → CuiChartTable-FQ2iR5Hd.js} +4 -4
  216. package/dist/interface/ha/{CuiConsole-UpN0Wihm.js → CuiConsole-C77k5q_-.js} +1 -1
  217. package/dist/interface/ha/{CuiDataTable-CpADXKNF.js → CuiDataTable-CIKQLseG.js} +2 -2
  218. package/dist/interface/ha/{CuiPluginCard-CT6ZfL9o.js → CuiPluginCard-DZNXKP_P.js} +42 -42
  219. package/dist/interface/ha/{CuiPluginOAuthButton-BJVKd6Ac.js → CuiPluginOAuthButton-DVf52_Zc.js} +2 -2
  220. package/dist/interface/ha/{CuiPluginTrustBadge-gb9GI24w.js → CuiPluginTrustBadge-CPljYiM8.js} +1 -1
  221. package/dist/interface/ha/{CuiQRCode-DqKDx9zR.js → CuiQRCode-oe8PLnLj.js} +2 -2
  222. package/dist/interface/ha/{CuiSchema-CHeJkx0k.js → CuiSchema-CQy94ZTs.js} +152 -152
  223. package/dist/interface/ha/{CuiTopNavbarItem-CFeI6ZYU.js → CuiTopNavbarItem-D6OHZLQY.js} +1 -1
  224. package/dist/interface/ha/{Faces-CTfvhhCj.js → Faces-DxAPvemO.js} +15 -15
  225. package/dist/interface/ha/{FirstSteps-C-WXJ8IL.js → FirstSteps-ZINTSaeL.js} +30 -30
  226. package/dist/interface/ha/{Floorplan-CDKTYN7B.js → Floorplan-DkbL8ppT.js} +155 -155
  227. package/dist/interface/ha/{Instances-n23yvN3L.js → Instances-totWtqd7.js} +13 -13
  228. package/dist/interface/ha/{Logs-Dfm0BWOQ.js → Logs-CzabIFja.js} +12 -12
  229. package/dist/interface/ha/{Menu-76kvdAEF.js → Menu-DcVBOQfw.js} +15 -15
  230. package/dist/interface/ha/{Metrics-lnivlTWm.js → Metrics-B_SN5hbp.js} +407 -407
  231. package/dist/interface/ha/{OAuthDeviceFlow-4ChaymHu.js → OAuthDeviceFlow-B28TPsTQ.js} +2 -2
  232. package/dist/interface/ha/{Plugin-BV8YA8aN.js → Plugin-B2PbbB8d.js} +208 -208
  233. package/dist/interface/ha/{PluginConsole-csf1Km7f.js → PluginConsole-_KeG4FvO.js} +4 -4
  234. package/dist/interface/ha/{PluginDetail-DTff6cbA.js → PluginDetail-GK_Fx14e.js} +7 -7
  235. package/dist/interface/ha/{PluginSearch-CdjxmFPN.js → PluginSearch-qSy4aqAW.js} +96 -96
  236. package/dist/interface/ha/{PluginUpdateProgress-ClyF4pbA.js → PluginUpdateProgress-C4Q2j6VO.js} +3 -3
  237. package/dist/interface/ha/{Plugins-_xOrqP36.js → Plugins-D0tvZHie.js} +54 -54
  238. package/dist/interface/ha/{Recordings-dTZv0pkp.js → Recordings-CpxJYaAa.js} +303 -307
  239. package/dist/interface/ha/{SensorEdit-DDRkZjmm.js → SensorEdit-8KtqLXEu.js} +377 -377
  240. package/dist/interface/ha/{SensorHistory-DSGlRITr.js → SensorHistory-CPTTsdjM.js} +2 -2
  241. package/dist/interface/ha/{Sensors-DjhGRUzM.js → Sensors-DJt_Hnn2.js} +102 -102
  242. package/dist/interface/ha/{Settings-DYuvz4de.js → Settings-B-OdG5pG.js} +10 -10
  243. package/dist/interface/ha/{SettingsAccount-DQAo8SnK.js → SettingsAccount-Ba2-2Lbi.js} +233 -233
  244. package/dist/interface/ha/{SettingsAppearance-_tbhpUA0.js → SettingsAppearance-D56HjSuQ.js} +7 -7
  245. package/dist/interface/ha/{SettingsAssistant-DSf-dYuD.js → SettingsAssistant-DglU0auc.js} +666 -621
  246. package/dist/interface/ha/{SettingsBackup-wLOa7xtw.js → SettingsBackup-DZx4McDz.js} +8 -8
  247. package/dist/interface/ha/{SettingsList-CYujivw5.js → SettingsList-D9nIGkbE.js} +4 -4
  248. package/dist/interface/ha/{SettingsMqtt-DbxJ-h3J.js → SettingsMqtt-BOszh--k.js} +180 -180
  249. package/dist/interface/ha/{SettingsNotifications-DO2-KJvq.js → SettingsNotifications-DBVpZfp0.js} +3 -3
  250. package/dist/interface/ha/{SettingsRecordings-C47i1UhI.js → SettingsRecordings-D3oJnizu.js} +3 -3
  251. package/dist/interface/ha/{SettingsRemote-BPvb-KLI.js → SettingsRemote-BOotvcOT.js} +54 -54
  252. package/dist/interface/ha/{SettingsSystem-BJPrv9JE.js → SettingsSystem-Bg11qoQX.js} +9 -9
  253. package/dist/interface/ha/{SettingsUsers-CcpCz6Y1.js → SettingsUsers-KpLs9Jnh.js} +25 -25
  254. package/dist/interface/ha/{Terminal-DT7-WNH1.js → Terminal-D6opTHYI.js} +168 -173
  255. package/dist/interface/ha/{Training-CqGBf8k1.js → Training-OB2KOQ7L.js} +537 -537
  256. package/dist/interface/ha/{Updates-CgdrqX6R.js → Updates-C_OvXJjd.js} +14 -14
  257. package/dist/interface/ha/{VariableInput-DOzSFgxT.js → VariableInput-CfaDp67S.js} +1 -1
  258. package/dist/interface/ha/{VersionsHandler-ItklhE2t.js → VersionsHandler-D1FVeYUZ.js} +10 -10
  259. package/dist/interface/ha/{VirtualSensorCreate-DbS3VqHC.js → VirtualSensorCreate-DJIgMVrt.js} +7 -7
  260. package/dist/interface/ha/{Workers-6PU7yUv1.js → Workers-cJMI4mYX.js} +26 -26
  261. package/dist/interface/ha/{api-anWolhVj.js → api-CDawdL4p.js} +1 -1
  262. package/dist/interface/ha/{api-Dv3Lk_g5.js → api-D2VzV4is.js} +9257 -9084
  263. package/dist/interface/ha/{assistant-B3m0Kgev.js → assistant-BmDAfChm.js} +1 -1
  264. package/dist/interface/ha/{auth-CAkpM_7A.js → auth-CvLz9C4w.js} +1 -1
  265. package/dist/interface/ha/{automationBlueprint-DwVvbKbw.js → automationBlueprint-BhNaeOZ1.js} +2 -2
  266. package/dist/interface/ha/{base-C-TYDHjS.js → base-XgWmQghV.js} +14 -3
  267. package/dist/interface/ha/cameraui-cards.js +1 -1
  268. package/dist/interface/ha/{cards-B0qagpBw.js → cards-MQrnU0T8.js} +1334 -1334
  269. package/dist/interface/ha/{config-C20itAPE.js → config-t_oAKFkJ.js} +1 -1
  270. package/dist/interface/ha/{esm-i8Tigknm.js → esm-C9XVFkXu.js} +4 -4
  271. package/dist/interface/ha/{mqtt-C6JvkA5E.js → mqtt-C20h1uze.js} +1 -1
  272. package/dist/interface/ha/{native-DBH9ocSq.js → native-BVUxNLM1.js} +4 -4
  273. package/dist/interface/ha/{notifications-gLmNZxwZ.js → notifications-Cy9DKiEn.js} +1 -1
  274. package/dist/interface/ha/{pinia-Du8AM917.js → pinia-BokSpDzj.js} +1 -0
  275. package/dist/interface/ha/{plugins-6x0kBuQb.js → plugins-jozYyBhV.js} +1 -1
  276. package/dist/interface/ha/{rooms-C-mLT6mX.js → rooms-DyfT3cXp.js} +1 -1
  277. package/dist/interface/ha/{server-DuikIt69.js → server-hCCjQjZE.js} +1 -1
  278. package/dist/interface/ha/{types-C0NcQ4Cz.js → types-RG0SckNR.js} +1 -1
  279. package/dist/interface/ha/{ungrouped-ooCH0Izh.js → ungrouped-BbyfoCQp.js} +19 -19
  280. package/dist/interface/ha/{updates-H8MlOQLC.js → updates-hUgVDgoD.js} +6 -6
  281. package/dist/interface/ha/{useAppVersion-DAUCV_cn.js → useAppVersion-wNhZDuvR.js} +1 -1
  282. package/dist/interface/ha/useKeyboardInset-Cmbvb_W3.js +27 -0
  283. package/dist/interface/ha/{useLogsSocket-BOLAXPuD.js → useLogsSocket-y9Aex3tJ.js} +1 -1
  284. package/dist/interface/ha/{useNavLayout-B7VoHzM1.js → useNavLayout-Ehb0t34k.js} +2 -2
  285. package/dist/interface/ha/{useServerRestart-qSH0bqwY.js → useServerRestart-CRSVcz3z.js} +1 -1
  286. package/dist/interface/ha/{useTabSwipe-DYzG_gVG.js → useTabSwipe-B_bseZkI.js} +1 -1
  287. package/dist/interface/ha/{useUpdateChannel-CK7JiWbG.js → useUpdateChannel-C_GU6lj6.js} +2 -2
  288. package/dist/interface/ha/{useUpdatesSocket-DrqkGMuR.js → useUpdatesSocket-CYgHb7UX.js} +1 -1
  289. package/dist/interface/ha/{useUserOptions-BteVUdaT.js → useUserOptions-pVYr-s3O.js} +1 -1
  290. package/dist/interface/ha/{web-D_q41D0i.js → web-CLbVbnCW.js} +5 -5
  291. package/dist/interface/index.html +28 -28
  292. package/dist/interface/sw.js +1 -1
  293. package/dist/server/package.json +3 -3
  294. package/dist/server/requirements.txt +1 -1
  295. package/dist/server/src/api/controllers/rooms.controller.js +3 -1
  296. package/dist/server/src/api/controllers/rooms.controller.js.map +1 -1
  297. package/dist/server/src/api/database/types.d.ts +1 -0
  298. package/dist/server/src/api/schemas/assistant.schema.d.ts +2 -0
  299. package/dist/server/src/api/schemas/assistant.schema.js +1 -0
  300. package/dist/server/src/api/schemas/assistant.schema.js.map +1 -1
  301. package/dist/server/src/api/services/cameras.service.d.ts +1 -0
  302. package/dist/server/src/api/services/cameras.service.js +8 -0
  303. package/dist/server/src/api/services/cameras.service.js.map +1 -1
  304. package/dist/server/src/assistant/manager.d.ts +1 -0
  305. package/dist/server/src/assistant/manager.js +1 -1
  306. package/dist/server/src/assistant/manager.js.map +1 -1
  307. package/dist/server/src/assistant/scheduler.js +8 -1
  308. package/dist/server/src/assistant/scheduler.js.map +1 -1
  309. package/dist/server/src/plugins/index.js +5 -4
  310. package/dist/server/src/plugins/index.js.map +1 -1
  311. package/npm-shrinkwrap.json +6 -6
  312. package/package.json +3 -3
  313. package/dist/interface/assets/Assistant-B1xdMAkA.js +0 -1
  314. package/dist/interface/assets/Automations-Bpw8olkc.js +0 -2
  315. package/dist/interface/assets/Camera-B4ojNnKb.css +0 -1
  316. package/dist/interface/assets/Camera-BpFfZDaS.js +0 -2
  317. package/dist/interface/assets/Camview-C16pyCZk.js +0 -1
  318. package/dist/interface/assets/CuiAssistantConversation-CRNCKRHz.js +0 -5
  319. package/dist/interface/assets/CuiAssistantConversation-DQ0wOJvV.css +0 -1
  320. package/dist/interface/assets/CuiBottomSheet-CYi5c3fP.js +0 -1
  321. package/dist/interface/assets/CuiCameraPipCard-Cb_Qbly6.js +0 -1
  322. package/dist/interface/assets/CuiCameraTable-BgL5FZso.js +0 -1
  323. package/dist/interface/assets/CuiLightControl-CLYl5pfN.js +0 -1
  324. package/dist/interface/assets/CuiPluginCard-CC1oXY16.js +0 -2
  325. package/dist/interface/assets/Faces-1xd5yGuO.js +0 -1
  326. package/dist/interface/assets/FirstSteps-E9cMqa0a.js +0 -1
  327. package/dist/interface/assets/Floorplan-BovV_ATh.js +0 -1
  328. package/dist/interface/assets/Instances-BbxyB7vR.js +0 -1
  329. package/dist/interface/assets/Metrics-BgXrNl38.js +0 -12
  330. package/dist/interface/assets/Plugin-CDNywaVE.js +0 -1
  331. package/dist/interface/assets/PluginSearch-xNIlfXk4.js +0 -1
  332. package/dist/interface/assets/Recordings-BHT8Vvv_.js +0 -1
  333. package/dist/interface/assets/Recordings-DwuojaAw.css +0 -1
  334. package/dist/interface/assets/Sensors-Cza4Et2c.js +0 -2
  335. package/dist/interface/assets/Settings-Cj0leoGd.js +0 -1
  336. package/dist/interface/assets/SettingsAccount-COkcBBSz.js +0 -1
  337. package/dist/interface/assets/SettingsAccount-DjrJdssy.js +0 -1
  338. package/dist/interface/assets/SettingsAppearance-D20YW7Vq.js +0 -1
  339. package/dist/interface/assets/SettingsAssistant-CDdbbG-c.css +0 -1
  340. package/dist/interface/assets/SettingsAssistant-DKWDp1AI.js +0 -1
  341. package/dist/interface/assets/Training-DfgE_dA8.js +0 -1
  342. package/dist/interface/assets/Updates-cCvbFq3w.js +0 -2
  343. package/dist/interface/assets/Workers-Ba37_3cY.js +0 -2
  344. package/dist/interface/assets/api-C1mraOYr.js +0 -4
  345. package/dist/interface/assets/api-z8ZVnoOl.css +0 -2
  346. package/dist/interface/assets/cloudHandoff-DkUx4m3P.js +0 -1
  347. package/dist/interface/assets/esm-0kxqa_1s.js +0 -1
  348. package/dist/interface/assets/esm-4p_M5mFV.js +0 -1
  349. package/dist/interface/assets/esm-8G-vO1KQ.js +0 -1
  350. package/dist/interface/assets/esm-8cB56ICb.js +0 -1
  351. package/dist/interface/assets/esm-B92csSEb.js +0 -1
  352. package/dist/interface/assets/esm-BHiNTIiN.js +0 -1
  353. package/dist/interface/assets/esm-Bu9PMLmw.js +0 -1
  354. package/dist/interface/assets/esm-CS6Ra46d.js +0 -1
  355. package/dist/interface/assets/esm-CWvQWALL.js +0 -1
  356. package/dist/interface/assets/esm-D2UDrwmt.js +0 -1
  357. package/dist/interface/assets/esm-D8OHF2X1.js +0 -1
  358. package/dist/interface/assets/esm-DrXkS8eG.js +0 -1
  359. package/dist/interface/assets/esm-pfoHiO1a.js +0 -1
  360. package/dist/interface/assets/esm-tJSCF7Vh.js +0 -1
  361. package/dist/interface/assets/main-BK3kmiG2.js +0 -3
  362. package/dist/interface/assets/native-BEkWOGyD.js +0 -1
  363. package/dist/interface/assets/native-ugMg173F.js +0 -1
  364. package/dist/interface/assets/plugin-eafNQWg2.js +0 -1
  365. package/dist/interface/assets/useKeyboardInset-DkUn62i7.js +0 -1
  366. package/dist/interface/assets/web-3OOGlctS.js +0 -1
  367. package/dist/interface/assets/web-5NFVd9gs.js +0 -1
  368. package/dist/interface/assets/web-A4yovlXr.js +0 -1
  369. package/dist/interface/assets/web-BBC3YoWX.js +0 -1
  370. package/dist/interface/assets/web-BjKL51lK-DUIsII0n.js +0 -1
  371. package/dist/interface/assets/web-C2-YAfsx.js +0 -1
  372. package/dist/interface/assets/web-CUL_MhvM.js +0 -1
  373. package/dist/interface/assets/web-CZVCXYLV.js +0 -1
  374. package/dist/interface/assets/web-DJ-LUxlV.js +0 -1
  375. package/dist/interface/assets/web-DNsEGLGS.js +0 -1
  376. package/dist/interface/assets/web-DZsU0QT_.js +0 -1
  377. package/dist/interface/assets/web-MoyOTbiU.js +0 -1
  378. package/dist/interface/assets/web-avRH_3t7.js +0 -1
  379. 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 c, Y as l, _t as u, d, f, ft as p, gt as m, kt as h, l as g, lt as _, ot as ee, p as v, qt as y, r as b, rt as x, u as S, ut as te, v as C, wt as w, x as T, xt as E, y as D, yt as O } from "./runtime-core.esm-bundler-_TfE0DWz.js";
3
- import { t as ne } from "./tooltip-BDrlgLof.js";
4
- import { t as re } from "./chevron-down-BNj8w2js.js";
5
- import { t as ie } from "./tag-mchuCAPR.js";
6
- import { $i as k, $r as ae, Ar as oe, At as se, B as ce, Bi as le, Ci as A, Dr as j, Er as ue, J as de, On as fe, Or as pe, Ot as me, R as he, Si as ge, Tr as _e, V as M, W as ve, Yt as N, _t as ye, bi as P, c as be, ct as F, d as xe, dr as I, fi as L, gn as Se, kt as R, m as Ce, tt as z, ua as we, ur as Te, z as Ee } from "./api-Dv3Lk_g5.js";
7
- import { C as De, M as B, S as Oe, _ as ke, b as Ae, i as je, w as Me } from "./intercomService-B7HkLs6z.js";
8
- import { n as Ne } from "./vue-i18n-D5EAy78K.js";
9
- import { t as Pe } from "./button-BouAFgf5.js";
10
- import { n as Fe, t as V } from "./inputicon-1w06U-Jl.js";
11
- import { t as Ie } from "./inputtext-C_ygnPrC.js";
12
- import { t as Le } from "./checkbox-CAKzZcqk.js";
13
- import { t as H } from "./close-CxFbonhd.js";
14
- import { t as Re } from "./progressbar-CaUaM8Bt.js";
15
- import { t as ze } from "./information-outline-DSSRyysT.js";
16
- import { t as Be } from "./search-BViwEHdF.js";
17
- import { n as Ve, t as He } from "./cloud-check-aaxn1VZr.js";
18
- import { u as Ue } from "./cards-B0qagpBw.js";
19
- import { t as We } from "./trash-can-outline-CBwv40Ck.js";
20
- import { t as Ge } from "./back-filled-CaxrZv0Q.js";
21
- import { t as Ke } from "./help-circle-outline-BniRuJRv.js";
22
- import { t as qe } from "./settings-lWJfHaif.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 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 Je = {
24
+ var Ye = {
25
25
  viewBox: "0 0 24 24",
26
26
  width: "1.2em",
27
27
  height: "1.2em"
28
28
  };
29
- function Ye(e, t) {
30
- return r(), v("svg", Je, [...t[0] ||= [S("path", {
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 Xe = u({
35
+ var Ze = l({
36
36
  name: "mdi-cloud-check-outline",
37
- render: Ye
38
- }), U = {
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 W(e, t) {
44
- return r(), v("svg", U, [...t[0] ||= [S("path", {
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 Ze = u({
49
+ var Qe = l({
50
50
  name: "mdi-filter-variant",
51
- render: W
52
- }), Qe = {
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 $e(e, t) {
58
- return r(), v("svg", Qe, [...t[0] ||= [S("path", {
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 et = u({
63
+ var tt = l({
64
64
  name: "mdi-cloud-upload-outline",
65
- render: $e
66
- }), tt = 200;
67
- async function nt(e = {}, { signal: t } = {}) {
68
- return (await k.get("/training/candidates", {
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 rt(e, t) {
74
- return (await k.patch(`/training/candidates/${e}`, t)).data;
73
+ async function it(e, t) {
74
+ return (await O.patch(`/training/candidates/${e}`, t)).data;
75
75
  }
76
- async function G(e) {
77
- await k.delete(`/training/candidates/${e}`);
76
+ async function W(e) {
77
+ await O.delete(`/training/candidates/${e}`);
78
78
  }
79
- async function K(e) {
79
+ async function G(e) {
80
80
  let t = 0;
81
- for (let n = 0; n < e.length; n += tt) {
82
- let r = await k.post("/training/candidates/submit", { ids: e.slice(n, n + tt) });
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 it({ cursor: e, signal: t } = {}) {
88
- return (await k.get("/training/submissions", {
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 at(e) {
94
- await k.delete(`/training/submissions/${e}`);
93
+ async function K(e) {
94
+ await O.delete(`/training/submissions/${e}`);
95
95
  }
96
96
  async function q({ signal: e } = {}) {
97
- return (await k.get("/training/settings", { signal: e })).data;
97
+ return (await O.get("/training/settings", { signal: e })).data;
98
98
  }
99
99
  async function ot(e) {
100
- return (await k.patch("/training/settings", e)).data;
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 P({
105
+ return M({
106
106
  queryKey: ["training-candidates"],
107
- queryFn: ({ signal: e }) => nt({}, { signal: e }),
107
+ queryFn: ({ signal: e }) => rt({}, { signal: e }),
108
108
  staleTime: 5e3
109
109
  });
110
110
  }
111
111
  getSettingsQuery() {
112
- return P({
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 A({
120
- mutationFn: ({ id: e, patch: t }) => rt(e, 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 A({
131
- mutationFn: G,
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 A({ mutationFn: at });
141
+ return k({ mutationFn: K });
142
142
  }
143
143
  submitCandidatesMutation() {
144
- return A({
145
- mutationFn: K,
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 A({
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(), v("svg", ct, [...t[0] ||= [S("path", {
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 = u({
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 = O({ progress: null }), dt = null, ft = null, Z = /* @__PURE__ */ new Set(), Q = /* @__PURE__ */ new Set();
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 = p(!0), dt.run(() => {
206
- let e = L("/training");
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: g(() => X.progress),
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__*/ ue(/* @__PURE__ */ T({
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(u, { expose: p }) {
308
- let T = u, re = t("dialogRef"), { t: k, te: ae } = Ne(), oe = ge(), ce = _t(), le = [
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
- ], A = /* @__PURE__ */ new Map(), j = O(/* @__PURE__ */ new Set()), ue = O(/* @__PURE__ */ new Set()), de = o(/* @__PURE__ */ new Map()), pe = 0, me = Math.max(0, T.candidates.findIndex((e) => e.id === T.startId)), he = Ce(), _e = x("rootRef"), M = x("labelMenuRef"), ve = x("stageRef"), N = x("frameRef"), ye = x("svgRef"), P = E(T.candidates[me]?.boxes.map((e) => ({ ...e })) ?? []), xe = E({
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
- }), L = E(null), R = E(null), z = E(-1), we = E(!1), Ee = E(!1), De = Me("(any-pointer: fine)"), B = E(null), Oe = null, je = E(-1), Fe = E("person"), V = E(me), Le = w([]), H = E(!1), { zoom: Re, pan: ze, constraining: Be, minimapStyle: Ve, minimapBoxStyle: He, onZoomPan: Ge, onDoubleClick: qe, onTouchStart: Je, onTouchEnd: Ye, reset: Xe } = F(ve, N), { height: U } = ke(N), W = g(() => T.candidates[V.value]), Ze = g(() => T.candidates.slice(0, V.value + 1).filter((e) => !j.has(e.id)).length), Qe = g(() => T.candidates.filter((e) => !j.has(e.id)).length), $e = g(() => T.candidates.slice(0, V.value).some((e) => !j.has(e.id))), et = g(() => T.candidates.slice(V.value + 1).some((e) => !j.has(e.id))), tt = g(() => ue.has(W.value.id) ? "verified" : W.value.status), nt = g(() => P.value.map((e, t) => ({
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))), rt = g(() => new Map(nt.value.map(({ i: e }, t) => [e, t + 1]))), G = g(() => P.value[z.value]), K = g(() => {
320
- let e = P.value[z.value];
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
- }), it = g(() => H.value ? Le.value.filter((e) => !P.value.some((t) => Z(t, e) >= sn)) : []), at = g(() => [...ut.map((e) => ({
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: P.value[je.value]?.label === e,
327
+ active: N.value[Me.value]?.label === e,
328
328
  onClick: () => Sn(e)
329
329
  })), {
330
330
  key: "remove",
331
- label: k("components.training_editor.remove_box"),
332
- icon: We,
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(je.value)
336
- }]), q = g(() => (e) => {
337
- let t = U.value || 360;
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 = g(() => (e) => e.x > .7);
339
+ }), ot = h(() => (e) => e.x > .7);
340
340
  function st({ box: e, i: t }) {
341
- return t === z.value ? 2 ** 53 - 1 : de.get(s(e)) ?? 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 ae(t) ? k(t) : e;
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
- P.value.push({
379
+ N.value.push({
380
380
  ...e,
381
381
  confidence: 1
382
- }), z.value = P.value.length - 1;
382
+ }), R.value = N.value.length - 1;
383
383
  }
384
384
  function mt() {
385
- for (let e of it.value) P.value.push({
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 = ye.value?.getBoundingClientRect();
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
- L.value = {
408
+ P.value = {
409
409
  ...t,
410
410
  moved: !1
411
- }, ye.value?.setPointerCapture(e.pointerId);
411
+ }, M.value?.setPointerCapture(e.pointerId);
412
412
  }
413
413
  function ln(e) {
414
- if (M.value?.hide(), Re.value > 1 || !e.isPrimary) return;
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: Fe.value,
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
- z.value = e, cn(t, {
434
+ R.value = e, cn(t, {
435
435
  mode: "move",
436
436
  index: e,
437
437
  startX: n,
438
438
  startY: r,
439
- origin: { ...P.value[e] }
439
+ origin: { ...N.value[e] }
440
440
  });
441
441
  }
442
442
  function dn(e, t, n) {
443
443
  if (!n.isPrimary) return;
444
- M.value?.hide();
444
+ j.value?.hide();
445
445
  let { x: r, y: i } = gt(n);
446
- z.value = e, cn(n, {
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: { ...P.value[e] }
452
+ origin: { ...N.value[e] }
453
453
  });
454
454
  }
455
455
  function fn(e) {
456
- e.touches.length > 1 && L.value && (L.value = null, R.value = null, B.value = null), Je(e);
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 = L.value;
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) : B.value = null), t.mode === "draw") {
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
- R.value = e.width >= Xt && e.height >= Xt ? {
466
- label: Fe.value,
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 = P.value[t.index];
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(P.value[t.index], bn(i, a, n, r));
480
+ Object.assign(N.value[t.index], bn(i, a, n, r));
481
481
  }
482
482
  function mn(e) {
483
- let t = L.value;
484
- if (L.value = null, B.value = null, t) {
483
+ let t = P.value;
484
+ if (P.value = null, z.value = null, t) {
485
485
  if (t.mode === "draw") {
486
- R.value && R.value.width >= Xt && R.value.height >= Xt ? (P.value.push({ ...R.value }), z.value = P.value.length - 1) : t.moved || (z.value = -1), R.value = null;
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 = ye.value?.getBoundingClientRect();
493
+ let t = M.value?.getBoundingClientRect();
494
494
  if (!t || t.width === 0) return !1;
495
- let n = e.mode === "draw" ? R.value : P.value[e.index];
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 = N.value?.getBoundingClientRect(), n = ve.value?.getBoundingClientRect();
499
+ let t = ye.value?.getBoundingClientRect(), n = ve.value?.getBoundingClientRect();
500
500
  if (!t || !n || t.width === 0 || t.height === 0) {
501
- B.value = null;
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), B.value = {
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 = _e.value?.closest(".p-dialog-content")?.lastElementChild;
518
- return !(n && n !== _e.value && n.contains(t));
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 (Oe = null, e.touches.length !== 1 || !_n(e.target)) return;
521
+ if (ke = null, e.touches.length !== 1 || !_n(e.target)) return;
522
522
  let t = e.touches[0];
523
- Oe = {
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 = Oe;
531
- if (Oe = null, !t || e.changedTouches.length !== 1) return;
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
- je.value = e;
545
- let n = N.value?.querySelector(`[data-box-label="${e}"]`), r = { currentTarget: N.value ?? t.currentTarget };
546
- M.value?.toggleMenu(r, n ?? void 0);
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 = P.value[je.value];
550
- t && (t.label = e, t.confidence = 1, Fe.value = e);
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 = P.value[z.value];
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 >= P.value.length || (P.value.splice(e, 1), z.value = -1, je.value = -1, M.value?.hide());
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 >= T.candidates.length || (t && A.set(W.value.id, P.value.map((e) => ({ ...e }))), Le.value = P.value.map((e) => ({ ...e })), V.value = e, P.value = (A.get(W.value.id) ?? W.value.boxes).map((e) => ({ ...e })), R.value = null, L.value = null, B.value = null, z.value = -1, je.value = -1, de.clear(), M.value?.hide(), Xe());
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 T.onSave(W.value.id, P.value.map((e) => ({ ...e })), e), A.set(W.value.id, P.value.map((e) => ({ ...e }))), e === "verified" && ue.add(W.value.id), $(1, !1) ? null : void 0;
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 = V.value + e;
567
- for (; n >= 0 && n < T.candidates.length && j.has(T.candidates[n].id);) n += e;
568
- return n < 0 || n >= T.candidates.length ? !1 : (Tn(n, t), !0);
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 = W.value.id;
572
- j.add(e);
571
+ let e = U.value.id;
572
+ A.add(e);
573
573
  try {
574
- await T.onDelete(e);
574
+ await w.onDelete(e);
575
575
  } catch (t) {
576
- throw j.delete(e), t;
576
+ throw A.delete(e), t;
577
577
  }
578
- return A.delete(e), $(1, !1) || $(-1, !1) ? null : void 0;
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) !j.has(n) && T.candidates.some((e) => e.id === n) && (j.add(n), A.delete(n), n === W.value.id && (t = !0));
583
- t && (oe.add({
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: k("components.training_editor.removed_meanwhile"),
585
+ detail: O("components.training_editor.removed_meanwhile"),
586
586
  life: 4e3
587
- }), !$(1, !1) && !$(-1, !1) && re.value.close({ status: "cancel" }));
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 = V.value + e;
592
- for (; t >= 0 && t < T.candidates.length && j.has(T.candidates[t].id);) t += e;
593
- let n = T.candidates[t];
594
- n && (new Image().src = T.imageUrl(n.id));
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
- P.value.length && (z.value = (z.value + e + P.value.length) % P.value.length);
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 = P.value[z.value];
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, Fe.value = r;
604
+ t.label = r, t.confidence = 1, Ie.value = r;
605
605
  }
606
606
  function Mn(e, t, n) {
607
- let r = P.value[z.value];
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 (!Ee.value) {
612
- Ee.value = !0;
611
+ if (!De.value) {
612
+ De.value = !0;
613
613
  try {
614
614
  let e = await En("verified");
615
- e !== null && re.value.close({
615
+ e !== null && ie.value.close({
616
616
  status: "confirm",
617
617
  data: e
618
618
  });
619
619
  } finally {
620
- Ee.value = !1;
620
+ De.value = !1;
621
621
  }
622
622
  }
623
623
  }
624
- ee(V, kn, { immediate: !0 }), ee(G, (e, t) => {
625
- t && t !== e && P.value.includes(t) && de.set(s(t), --pe);
626
- }), Ae(window, "keydown", (e) => {
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 (z.value >= 0) {
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" ? (z.value = -1, M.value?.hide()) : (e.key === "Delete" || e.key === "Backspace") && z.value >= 0 ? wn(z.value) : e.key === "v" || e.key === "V" ? e.shiftKey ? mt() : Le.value.length > 0 && (H.value = !H.value) : e.key === "s" || e.key === "S" ? jn(e.shiftKey ? -1 : 1) : e.key === " " && !M.value?.isOpen && (e.preventDefault(), Nn()));
643
- }), Ae(() => _e.value?.closest(".p-dialog-content") ?? void 0, "touchstart", vn, { passive: !0 }), Ae(() => _e.value?.closest(".p-dialog-content") ?? void 0, "touchend", yn, { passive: !0 }), ce.connect();
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
- }), p({
650
- isLoading: Ee,
649
+ }), f({
650
+ isLoading: De,
651
651
  onConfirm: () => En("verified"),
652
652
  onCancel: () => Dn()
653
653
  }), (t, i) => {
654
- let o = ie, s = lt, p = Pe, g = Ue, ee = Te, x = I, w = Ie, T = Ke, E = ne;
655
- return r(), v("div", {
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: _e,
657
+ ref: ge,
658
658
  class: "flex flex-col gap-3 h-full min-h-0"
659
659
  }, [
660
- S("div", vt, [S("div", yt, [
661
- D(o, {
662
- severity: h(tt) === "verified" ? "success" : "info",
663
- value: t.$t(`views.training.status_${h(tt)}`),
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
- S("span", bt, a(u.cameraName(h(W).cameraId)), 1),
667
- S("span", xt, a(h(be)(h(W).createdAt)), 1)
668
- ]), S("div", St, [h(Le).length > 0 ? te((r(), d(p, {
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: h(H) ? "primary" : "secondary",
670
+ severity: m(V) ? "primary" : "secondary",
671
671
  text: "",
672
672
  rounded: "",
673
673
  class: "cui-icon-sm",
674
- onClick: i[0] ||= (e) => H.value = !h(H)
674
+ onClick: i[0] ||= (e) => V.value = !m(V)
675
675
  }, {
676
- icon: _(() => [D(s, { class: "w-4 h-4" })]),
676
+ icon: g(() => [E(s, { class: "w-4 h-4" })]),
677
677
  _: 1
678
678
  }, 8, ["severity"])), [[
679
- E,
679
+ T,
680
680
  t.$t("components.training_editor.ghosts_toggle"),
681
681
  void 0,
682
682
  { bottom: !0 }
683
- ]]) : f("", !0), S("span", Ct, a(h(Ze)) + " / " + a(h(Qe)), 1)])]),
684
- S("div", {
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
- D(h(se), {
690
- pan: h(ze),
691
- "onUpdate:pan": i[10] ||= (e) => m(ze) ? ze.value = e : null,
692
- zoom: h(Re),
693
- "onUpdate:zoom": i[11] ||= (e) => m(Re) ? Re.value = e : null,
694
- "pan-enabled": h(Re) > 1 && !h(L),
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": h(5),
699
- selector: `[data-stage-zoom='${h(he)}']`,
698
+ "max-zoom": m(5),
699
+ selector: `[data-stage-zoom='${m(he)}']`,
700
700
  "zoom-origin": "pointer",
701
- class: c(["absolute inset-0 flex items-center justify-center", { "zoom-constraining": h(Be) }]),
702
- onPanned: h(Ge),
703
- onZoom: h(Ge),
704
- onDblclick: h(qe),
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: h(Ye)
706
+ onTouchend: m(Xe)
707
707
  }, {
708
- default: _(() => [S("div", {
708
+ default: g(() => [x("div", {
709
709
  ref_key: "frameRef",
710
- ref: N,
711
- "data-stage-zoom": h(he),
710
+ ref: ye,
711
+ "data-stage-zoom": m(he),
712
712
  class: "frame relative",
713
- style: y({
714
- "--ar-w": h(xe).w,
715
- "--ar-h": h(xe).h
713
+ style: v({
714
+ "--ar-w": m(xe).w,
715
+ "--ar-h": m(xe).h
716
716
  })
717
717
  }, [
718
- S("img", {
719
- src: u.imageUrl(h(W).id),
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(), v("svg", {
724
+ (r(), _("svg", {
725
725
  ref_key: "svgRef",
726
- ref: ye,
727
- class: c(["absolute inset-0 w-full h-full touch-none", h(Re) > 1 ? "cursor-grab" : "cursor-crosshair"]),
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), v(b, null, n(h(nt), ({ box: t, i: a }) => (r(), v("g", { key: a }, [S("rect", {
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 === h(z) ? .22 : .12,
741
- "stroke-width": a === h(z) ? 3.5 : 2,
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(), v(b, null, n(le, (n) => S("g", {
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
- }, [S("circle", {
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), S("circle", {
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), v(b, null, n(h(it), (e, t) => (r(), v("rect", {
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
- h(R) ? (r(), v("rect", {
778
+ m(F) ? (r(), _("rect", {
779
779
  key: 0,
780
- x: Y(h(R).x),
781
- y: Y(h(R).y),
782
- width: Y(h(R).width),
783
- height: Y(h(R).height),
784
- stroke: J(h(R).label).color,
785
- fill: J(h(R).label).color,
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)) : f("", !0)
790
+ }, null, 8, jt)) : d("", !0)
791
791
  ], 34)),
792
- (r(!0), v(b, null, n(h(it), (n, a) => te((r(), v("button", {
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: y(Q(n)),
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
- }, [D(g, { class: "w-3.5 h-3.5 shrink-0" }), (r(), d(l(J(n.label).icon), { class: "bbox-label-icon" }))], 44, Mt)), [[
802
- E,
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), v(b, null, n(h(P), (t, n) => (r(), v("div", {
807
+ (r(!0), _(y, null, n(m(N), (t, n) => (r(), _("div", {
808
808
  key: `label-${n}`,
809
- class: c(["bbox-label cursor-move", {
810
- "label-bottom": h(q)(t) === "below",
811
- "label-inside": h(q)(t) === "inside",
812
- "label-right": h(ot)(t)
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: y([ft(t), { zIndex: h(rt).get(n) }])
818
+ style: v([ft(t), { zIndex: m(it).get(n) }])
819
819
  }, [
820
- (r(), d(l(J(t.label).icon), { class: "bbox-label-icon" })),
821
- S("span", Pt, a(ct(t.label)), 1),
822
- t.text ? (r(), v("span", Ft, a(t.text), 1)) : t.confidence < 1 ? (r(), v("span", It, a(Math.round(t.confidence * 100)) + "%", 1)) : f("", !0)
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
- h(Ve) ? (r(), v("div", {
838
+ m(He) ? (r(), _("div", {
839
839
  key: 0,
840
840
  class: "zoom-minimap",
841
- style: y(h(He) ?? void 0)
842
- }, [S("div", {
841
+ style: v(m(Ue) ?? void 0)
842
+ }, [x("div", {
843
843
  class: "zoom-minimap-viewport",
844
- style: y(h(Ve))
845
- }, null, 4)], 4)) : f("", !0),
846
- h(B) ? (r(), v("div", {
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: y({
850
- left: `${h(B).x}px`,
851
- top: `${h(B).y}px`
849
+ style: v({
850
+ left: `${m(z).x}px`,
851
+ top: `${m(z).y}px`
852
852
  })
853
- }, [S("div", {
853
+ }, [x("div", {
854
854
  class: "loupe-content",
855
- style: y({
856
- width: `${h(B).frameW}px`,
857
- height: `${h(B).frameH}px`,
858
- transform: `translate(${h(B).tx}px, ${h(B).ty}px) scale(${nn})`
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
- }, [S("img", {
861
- src: u.imageUrl(h(W).id),
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(), v("svg", Rt, [(r(!0), v(b, null, n(h(P), (e, t) => (r(), v("rect", {
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)), h(R) ? (r(), v("rect", {
874
+ }, null, 8, zt))), 128)), m(F) ? (r(), _("rect", {
875
875
  key: 0,
876
- x: Y(h(R).x),
877
- y: Y(h(R).y),
878
- width: Y(h(R).width),
879
- height: Y(h(R).height),
880
- stroke: J(h(R).label).color,
881
- fill: J(h(R).label).color,
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)) : f("", !0)]))], 4), i[15] ||= S("div", { class: "loupe-crosshair" }, null, -1)], 4)) : f("", !0),
886
- h($e) ? (r(), v("div", Vt, [D(p, {
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: _(() => [D(ee, {
892
+ icon: g(() => [E(te, {
893
893
  width: "100%",
894
894
  height: "100%"
895
895
  })]),
896
896
  _: 1
897
- })])) : f("", !0),
898
- h(et) ? (r(), v("div", Ht, [D(p, {
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: _(() => [D(x, {
904
+ icon: g(() => [E(b, {
905
905
  width: "100%",
906
906
  height: "100%"
907
907
  })]),
908
908
  _: 1
909
- })])) : f("", !0)
909
+ })])) : d("", !0)
910
910
  ], 512),
911
- h(K) ? (r(), v("div", Ut, [S("label", Wt, a(t.$t("components.training_editor.plate_text")), 1), D(w, {
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": h(K).text ?? "",
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"])])) : f("", !0),
920
- S("div", Gt, [S("div", Kt, [S("span", qt, a(t.$t("components.training_editor.hint")), 1), h(De) ? (r(), d(p, {
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) => we.value = !h(we)
926
+ onClick: i[14] ||= (e) => Te.value = !m(Te)
927
927
  }, {
928
- icon: _(() => [D(T, { class: "w-4 h-4" })]),
928
+ icon: g(() => [E(w, { class: "w-4 h-4" })]),
929
929
  _: 1
930
- })) : f("", !0)]), S("span", Jt, a(t.$t("components.training_editor.hint_wrong")), 1)]),
931
- h(De) && h(we) ? (r(), v("div", Yt, [
932
- i[16] ||= S("span", null, [S("kbd", null, "Tab")], -1),
933
- S("span", null, a(t.$t("components.training_editor.sc_select")), 1),
934
- i[17] ||= C(),
935
- i[18] ||= S("span", null, [S("kbd", null, "←↑→↓")], -1),
936
- S("span", null, a(t.$t("components.training_editor.sc_move")), 1),
937
- i[19] ||= C(),
938
- i[20] ||= S("span", null, [
939
- S("kbd", null, "Shift"),
940
- C(" + "),
941
- S("kbd", null, "←↑→↓")
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
- S("span", null, a(t.$t("components.training_editor.sc_resize")), 1),
944
- i[21] ||= C(),
945
- i[22] ||= S("span", null, [S("kbd", null, "S")], -1),
946
- S("span", null, a(t.$t("components.training_editor.sc_label")), 1),
947
- i[23] ||= C(),
948
- i[24] ||= S("span", null, [S("kbd", null, "Del")], -1),
949
- S("span", null, a(t.$t("components.training_editor.sc_delete")), 1),
950
- i[25] ||= C(),
951
- i[26] ||= S("span", null, [S("kbd", null, "V")], -1),
952
- S("span", null, a(t.$t("components.training_editor.sc_ghosts")), 1),
953
- i[27] ||= C(),
954
- i[28] ||= S("span", null, [
955
- S("kbd", null, "Shift"),
956
- C(" + "),
957
- S("kbd", null, "V")
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
- S("span", null, a(t.$t("components.training_editor.sc_ghosts_all")), 1),
960
- i[29] ||= C(),
961
- i[30] ||= S("span", null, [S("kbd", null, "Esc")], -1),
962
- S("span", null, a(t.$t("components.training_editor.sc_deselect")), 1),
963
- i[31] ||= C(),
964
- i[32] ||= S("span", null, [S("kbd", null, "Space")], -1),
965
- S("span", null, a(t.$t("components.training_editor.sc_verify")), 1),
966
- i[33] ||= C(),
967
- i[34] ||= S("span", null, [
968
- S("kbd", null, "←"),
969
- C(" / "),
970
- S("kbd", null, "→")
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
- S("span", null, a(t.$t("components.training_editor.sc_nav")), 1)
973
- ])) : f("", !0),
974
- D(fe, {
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: M,
977
- items: h(at),
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__ */ T({
995
+ }, xn = /* @__PURE__ */ w({
996
996
  __name: "TrainingSubmissions",
997
997
  setup(e) {
998
- let t = new st(), { t: o, te: s } = Ne(), c = ge(), l = _t(), u = t.deleteSubmissionMutation(), p = E(""), m = E([]), g = E(0), C = E(), w = E(!0), T = E(!1), O = E(!1), re = x("loadMoreRef");
999
- function k(e) {
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 ae(e) {
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 oe() {
1009
- w.value = m.value.length === 0;
1008
+ async function se() {
1009
+ C.value = p.value.length === 0;
1010
1010
  try {
1011
- let e = await it();
1012
- m.value = e.items, g.value = e.total ?? e.items.length, C.value = e.nextCursor, O.value = !1;
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
- O.value = !0;
1014
+ D.value = !0;
1015
1015
  } finally {
1016
- w.value = !1;
1016
+ C.value = !1;
1017
1017
  }
1018
1018
  }
1019
- async function se() {
1020
- let e = C.value;
1021
- if (e && !T.value) {
1022
- T.value = !0;
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 it({ cursor: e }), n = new Set(m.value.map((e) => e.id));
1025
- m.value.push(...t.items.filter((e) => !n.has(e.id))), C.value = t.nextCursor;
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
- c.add({
1027
+ ee.add({
1028
1028
  severity: "error",
1029
1029
  detail: e?.message ?? String(e),
1030
1030
  life: 5e3
1031
1031
  });
1032
1032
  } finally {
1033
- T.value = !1;
1033
+ w.value = !1;
1034
1034
  }
1035
1035
  }
1036
1036
  }
1037
- async function ce(e) {
1038
- p.value = e;
1037
+ async function le(e) {
1038
+ f.value = e;
1039
1039
  try {
1040
- await u.mutateAsync(e), m.value = m.value.filter((t) => t.id !== e), g.value = Math.max(0, g.value - 1);
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
- c.add({
1042
+ ee.add({
1043
1043
  severity: "error",
1044
1044
  detail: e?.message ?? String(e),
1045
1045
  life: 5e3
1046
1046
  });
1047
1047
  } finally {
1048
- p.value = "";
1048
+ f.value = "";
1049
1049
  }
1050
1050
  }
1051
- Oe(re, ([e]) => {
1052
- e?.isIntersecting && se();
1053
- }), ee(() => l.submitProgress.value?.active, (e, t) => {
1054
- t && !e && oe();
1051
+ ke(ie, ([e]) => {
1052
+ e?.isIntersecting && ce();
1053
+ }), te(() => c.submitProgress.value?.active, (e, t) => {
1054
+ t && !e && se();
1055
1055
  });
1056
- let le = l.onResync(() => {
1057
- oe();
1056
+ let k = c.onResync(() => {
1057
+ se();
1058
1058
  });
1059
1059
  return i(() => {
1060
- le();
1061
- }), oe(), (e, t) => {
1062
- let i = we, o = Ve, s = he, c = _e, l = ie, ee = We, x = Pe, E = z, oe = ne;
1063
- return r(), v("div", ln, [h(w) ? (r(), v("div", un, [(r(), v(b, null, n(4, (e) => D(i, {
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))])) : h(O) ? (r(), v("div", dn, [D(o, { class: "w-10 h-10 text-muted" }), S("span", fn, a(e.$t("components.training_submissions.load_failed")), 1)])) : h(m).length ? (r(), v(b, { key: 3 }, [
1068
- S("span", hn, a(e.$t("components.training_submissions.count", h(g))), 1),
1069
- (r(!0), v(b, null, n(h(m), (t) => (r(), v("div", {
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
- S("div", gn, [D(c, {
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
- S("div", _n, [S("div", vn, [(r(!0), v(b, null, n(k(t), (e, t) => (r(), v("span", {
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: y({ backgroundColor: h(Se)(String(t)).color })
1082
- }, a(ae(String(t))) + " ×" + a(e), 5))), 128))]), S("div", yn, a(h(be)(new Date(t.createdAt).getTime())), 1)]),
1083
- D(l, {
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
- te((r(), d(x, {
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: h(u).isPending.value && h(p) === t.id,
1094
- onClick: (e) => ce(t.id)
1093
+ loading: m(l).isPending.value && m(f) === t.id,
1094
+ onClick: (e) => le(t.id)
1095
1095
  }, {
1096
- icon: _(() => [D(ee, {
1096
+ icon: g(() => [E(te, {
1097
1097
  width: "100%",
1098
1098
  height: "100%"
1099
1099
  })]),
1100
1100
  _: 1
1101
1101
  }, 8, ["loading", "onClick"])), [[
1102
- oe,
1102
+ se,
1103
1103
  e.$t("components.training_submissions.delete"),
1104
1104
  void 0,
1105
1105
  { left: !0 }
1106
1106
  ]])
1107
1107
  ]))), 128)),
1108
- h(T) ? (r(), v("div", bn, [D(E, { class: "w-5 h-5 text-primary" })])) : h(C) ? (r(), v("div", {
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: re,
1111
+ ref: ie,
1112
1112
  class: "h-px"
1113
- }, null, 512)) : f("", !0)
1114
- ], 64)) : (r(), v("div", pn, [D(s, { class: "w-10 h-10 text-muted" }), S("span", mn, a(e.$t("components.training_submissions.empty")), 1)]))]);
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__*/ ue(/* @__PURE__ */ T({
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 N(), s = new st(), { t: l, te: u } = Ne(), p = ye(), w = ge(), { smBreakpoint: T } = oe(), O = s.getCandidatesQuery(), k = s.getSettingsQuery(), se = s.patchCandidateMutation(), le = s.deleteCandidateMutation(), A = s.patchSettingsMutation(), ue = s.submitCandidatesMutation(), he = _t(), { data: P } = o.getCamerasQuery({
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
- }), F = E(""), I = De("cui-training-status-filter", "all"), L = E(Wn), Ce = x("statusMenuRef"), Te = x("cameraMenuRef"), ke = x("settingsMenuRef"), Ae = x("loadMoreRef"), Me = x("scrollRef"), { y: Ue } = B(Me), Ke = g(() => ({ gridTemplateColumns: `repeat(auto-fill, minmax(${T.value ? "220px" : "260px"}, 1fr))` })), Je = g(() => {
1145
- let e = [...new Set((O.data.value ?? []).map((e) => Q(e.cameraId)))].sort((e, t) => e.localeCompare(t));
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: l("views.training.all_cameras"),
1149
- active: F.value === "",
1148
+ label: c("views.training.all_cameras"),
1149
+ active: I.value === "",
1150
1150
  onClick: () => {
1151
- F.value = "";
1151
+ I.value = "";
1152
1152
  }
1153
1153
  }, ...e.map((e) => ({
1154
1154
  key: e,
1155
1155
  label: e,
1156
- active: F.value === e,
1156
+ active: I.value === e,
1157
1157
  onClick: () => {
1158
- F.value = e;
1158
+ I.value = e;
1159
1159
  }
1160
1160
  }))];
1161
- }), Ye = g(() => [{
1161
+ }), Xe = h(() => [{
1162
1162
  key: "collect",
1163
- label: l("views.training.collection_enabled"),
1164
- description: l("views.training.collection_hint"),
1163
+ label: c("views.training.collection_enabled"),
1164
+ description: c("views.training.collection_hint"),
1165
1165
  toggle: !0,
1166
- toggleState: k.data.value?.enabled ?? !0,
1166
+ toggleState: O.data.value?.enabled ?? !0,
1167
1167
  onClick: () => {
1168
- Tt(!(k.data.value?.enabled ?? !0));
1168
+ Tt(!(O.data.value?.enabled ?? !0));
1169
1169
  }
1170
- }]), U = g(() => {
1171
- let e = F.value.trim().toLowerCase();
1172
- return e ? (O.data.value ?? []).filter((t) => Q(t.cameraId).toLowerCase().includes(e)) : O.data.value ?? [];
1173
- }), W = g(() => I.value === "all" ? U.value : U.value.filter((e) => e.status === I.value)), Qe = g(() => {
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: U.value.length,
1175
+ all: H.value.length,
1176
1176
  new: 0,
1177
1177
  verified: 0
1178
1178
  };
1179
- for (let t of U.value) e[t.status]++;
1179
+ for (let t of H.value) e[t.status]++;
1180
1180
  return e;
1181
- }), $e = g(() => [
1181
+ }), et = h(() => [
1182
1182
  "all",
1183
1183
  "new",
1184
1184
  "verified"
1185
1185
  ].map((e) => ({
1186
1186
  key: e,
1187
- label: l(`views.training.status_${e}`),
1188
- badge: String(Qe.value[e]),
1189
- active: I.value === e,
1187
+ label: c(`views.training.status_${e}`),
1188
+ badge: String($e.value[e]),
1189
+ active: L.value === e,
1190
1190
  onClick: () => {
1191
- I.value = e;
1191
+ L.value = e;
1192
1192
  }
1193
- }))), tt = g(() => I.value !== "all" || F.value.trim() !== ""), nt = g(() => W.value.slice(0, L.value)), rt = g(() => W.value.length > nt.value.length), G = g(() => (O.data.value ?? []).filter((e) => at(e)).length), K = g(() => he.submitProgress.value ? he.submitProgress.value : G.value > 0 ? {
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: G.value,
1195
+ total: W.value,
1196
1196
  done: 0,
1197
1197
  failed: 0
1198
- } : null), it = g(() => W.value.filter((e) => !at(e)));
1199
- function at(e) {
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 } = Ee(it, (e) => e.id), ft = g(() => [...ot.value].filter((e) => O.data.value?.find((t) => t.id === e)?.status === "verified")), Z = g(() => U.value.filter((e) => e.status === "verified" && !at(e)).map((e) => e.id));
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 xe(`/api/training/candidates/${e}/image`) ?? "";
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 u(t) ? l(t) : e;
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
- L.value += Wn;
1222
+ Ce.value += Wn;
1223
1223
  }
1224
1224
  function yt(e) {
1225
- if (!at(e)) {
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
- p.openComponentDialog(cn, {
1234
+ f.openComponentDialog(cn, {
1235
1235
  data: {
1236
- title: l("views.training.title"),
1237
- cancelText: l("components.form.button.remove"),
1238
- confirmText: l("components.training_editor.verify"),
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: W.value.map((e) => ({ ...e })),
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 se.mutateAsync({
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 le.mutateAsync(e);
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
- p.openComponentDialog(xn, {
1263
+ f.openComponentDialog(xn, {
1264
1264
  data: {
1265
- title: l("views.training.submissions"),
1265
+ title: c("views.training.submissions"),
1266
1266
  hideConfirmButton: !0,
1267
- cancelText: l("components.form.button.close"),
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 && !ue.isPending.value && p.openTextDialog({
1274
+ e.length && !me.isPending.value && f.openTextDialog({
1275
1275
  data: {
1276
- title: l("components.dialog.title.confirm"),
1277
- contentText: l("views.training.submit_confirm", { count: e.length }),
1278
- confirmText: l("views.training.submit")
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 ue.mutateAsync(e), ut();
1282
+ await me.mutateAsync(e), ut();
1283
1283
  } catch (e) {
1284
- w.add({
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 && p.openTextDialog({
1295
+ e.length && !J.value && f.openTextDialog({
1296
1296
  data: {
1297
- title: l("components.dialog.title.confirm"),
1298
- contentText: l("views.training.delete_selected_confirm", { count: e.length }),
1299
- confirmText: l("components.form.button.remove"),
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 le.mutateAsync(t);
1306
- ut(), w.add({
1305
+ for (let t of e) await k.mutateAsync(t);
1306
+ ut(), C.add({
1307
1307
  severity: "success",
1308
- detail: l("views.training.delete_selected_done", { count: e.length }),
1308
+ detail: c("views.training.delete_selected_done", { count: e.length }),
1309
1309
  life: 5e3
1310
1310
  });
1311
1311
  } catch (e) {
1312
- w.add({
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 le.mutateAsync(e.id);
1324
+ await k.mutateAsync(e.id);
1325
1325
  }
1326
1326
  async function Tt(e) {
1327
- await A.mutateAsync({ enabled: e });
1327
+ await fe.mutateAsync({ enabled: e });
1328
1328
  }
1329
- ee([F, I], () => {
1330
- L.value = Wn;
1331
- }), Oe(Ae, ([e]) => {
1329
+ te([I, L], () => {
1330
+ Ce.value = Wn;
1331
+ }), ke(je, ([e]) => {
1332
1332
  e?.isIntersecting && vt();
1333
- }), he.connect();
1334
- let Et = he.onCandidatesChanged(() => {
1335
- O.refetch();
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 = Ge, s = Pe, u = de, p = Be, g = V, ee = Ie, x = Fe, w = Ze, E = me, k = re, oe = R, se = Xe, le = qe, A = z, ge = Re, N = Ve, ye = He, P = H, xe = ze, L = we, Ee = ae, De = _e, B = ie, Oe = We, Ne = Le, Qe = je, G = j, it = pe, st = ne;
1341
- return r(), v("div", Cn, [
1342
- h(T) ? f("", !0) : (r(), v("h1", wn, a(t.$t("views.training.title")), 1)),
1343
- D(u, { position: "left" }, {
1344
- default: _(() => [D(s, {
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: _(() => [D(o, { class: "w-6 h-6" })]),
1350
+ icon: g(() => [E(o, { class: "w-6 h-6" })]),
1351
1351
  _: 1
1352
1352
  })]),
1353
1353
  _: 1
1354
1354
  }),
1355
- D(u, { position: "center" }, {
1356
- default: _(() => [S("span", Tn, a(t.$t("views.training.title")), 1)]),
1355
+ E(l, { position: "center" }, {
1356
+ default: g(() => [x("span", Tn, a(t.$t("views.training.title")), 1)]),
1357
1357
  _: 1
1358
1358
  }),
1359
- S("div", En, [
1360
- D(oe, { class: "flex-1" }, {
1361
- default: _(() => [
1362
- D(x, { class: "flex-1" }, {
1363
- default: _(() => [D(g, null, {
1364
- default: _(() => [D(p, { class: "w-4 h-4" })]),
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
- }), D(ee, {
1367
- modelValue: h(F),
1368
- "onUpdate:modelValue": i[1] ||= (e) => m(F) ? F.value = e : null,
1369
- placeholder: h(l)("views.training.search"),
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
- D(E, null, {
1375
- default: _(() => [D(s, {
1374
+ E(T, null, {
1375
+ default: g(() => [E(s, {
1376
1376
  severity: "secondary",
1377
1377
  text: "",
1378
- class: c(h(I) === "all" ? "text-color" : "text-primary"),
1379
- onClick: i[2] ||= (e) => h(Ce)?.toggleMenu(e)
1378
+ class: ee(m(L) === "all" ? "text-color" : "text-primary"),
1379
+ onClick: i[2] ||= (e) => m(we)?.toggleMenu(e)
1380
1380
  }, {
1381
- icon: _(() => [D(w, { class: "w-4 h-4" })]),
1381
+ icon: g(() => [E(C, { class: "w-4 h-4" })]),
1382
1382
  _: 1
1383
1383
  }, 8, ["class"])]),
1384
1384
  _: 1
1385
1385
  }),
1386
- D(E, null, {
1387
- default: _(() => [D(s, {
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) => h(Te)?.toggleMenu(e)
1391
+ onClick: i[3] ||= (e) => m(Ee)?.toggleMenu(e)
1392
1392
  }, {
1393
- icon: _(() => [D(k, { class: c(["w-4 h-4 transform transition-transform duration-300", { "rotate-180": h(Te)?.isOpen }]) }, null, 8, ["class"])]),
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
- te((r(), d(s, {
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: _(() => [D(se, { class: "w-4.5 h-4.5" })]),
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
- te((r(), d(s, {
1415
+ ne((r(), u(s, {
1416
1416
  severity: "secondary",
1417
1417
  outlined: "",
1418
1418
  class: "cui-button shrink-0",
1419
- onClick: i[4] ||= (e) => h(ke)?.toggleMenu(e)
1419
+ onClick: i[4] ||= (e) => m(Ae)?.toggleMenu(e)
1420
1420
  }, {
1421
- icon: _(() => [D(le, { class: "w-4.5 h-4.5" })]),
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
- h(K) ? (r(), v("div", $, [h(K).active ? (r(), v(b, { key: 0 }, [D(A, { class: "w-4 h-4 text-primary shrink-0" }), S("div", Dn, [S("div", On, a(t.$t("views.training.upload_progress", {
1431
- done: h(K).done + h(K).failed,
1432
- total: h(K).total
1433
- })), 1), D(ge, {
1434
- value: h(K).total ? Math.round((h(K).done + h(K).failed) / h(K).total * 100) : 0,
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(), v(b, { key: 1 }, [
1439
- h(K).failed ? (r(), d(N, {
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(), d(ye, {
1442
+ })) : (r(), u(_e, {
1443
1443
  key: 1,
1444
1444
  class: "w-5 h-5 text-green-500 shrink-0"
1445
1445
  })),
1446
- S("span", kn, [C(a(t.$t("views.training.submit_done", h(K).done)), 1), h(K).failed ? (r(), v(b, { key: 0 }, [C(" · " + a(t.$t("views.training.upload_failed_summary", { count: h(K).failed })), 1)], 64)) : f("", !0)]),
1447
- D(s, {
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) => h(he).dismissProgress()
1452
+ onClick: i[5] ||= (e) => m(M).dismissProgress()
1453
1453
  }, {
1454
- icon: _(() => [D(P, { class: "w-4 h-4" })]),
1454
+ icon: g(() => [E(N, { class: "w-4 h-4" })]),
1455
1455
  _: 1
1456
1456
  })
1457
- ], 64))])) : h(U).length && !h(Z).length ? (r(), v("div", An, [D(xe, { class: "w-5 h-5 text-primary shrink-0" }), S("span", jn, a(t.$t("views.training.verify_hint")), 1)])) : f("", !0),
1458
- S("div", {
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: Me,
1460
+ ref: Ne,
1461
1461
  class: "flex-1 min-h-0 overflow-y-auto overscroll-contain"
1462
- }, [h(O).isLoading.value && !h(O).data.value ? (r(), v("div", {
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: y(h(Ke))
1466
- }, [(r(), v(b, null, n(8, (e) => S("div", {
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
- }, [D(L, {
1469
+ }, [E(F, {
1470
1470
  class: "aspect-video",
1471
1471
  width: "100%",
1472
1472
  height: "100%"
1473
- }), S("div", Mn, [D(L, {
1473
+ }), x("div", Mn, [E(F, {
1474
1474
  height: "14px",
1475
1475
  width: "70%",
1476
1476
  class: "mb-1"
1477
- }), D(L, {
1477
+ }), E(F, {
1478
1478
  height: "12px",
1479
1479
  width: "40%"
1480
- })])])), 64))], 4)) : h(W).length === 0 ? (r(), v("div", Nn, [D(Ee, { class: "w-12 h-12 text-muted" }), S("span", Pn, a(t.$t(h(tt) ? "views.training.no_matches" : "views.training.no_candidates")), 1)])) : (r(), v(b, { key: 2 }, [S("div", {
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: y(h(Ke))
1483
- }, [(r(!0), v(b, null, n(h(nt), (o) => (r(), d(Qe, {
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: _(() => [S("div", Fn, [
1496
- D(De, {
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
- S("div", In, [(r(!0), v(b, null, n(ht(o), (e, t) => (r(), v("span", {
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: y({ backgroundColor: h(Se)(String(t)).color })
1506
+ style: v({ backgroundColor: m(Se)(String(t)).color })
1507
1507
  }, a(mt(String(t))) + " ×" + a(e), 5))), 128))]),
1508
- o.upload ? (r(), v("div", Ln, [o.upload === "failed" ? te((r(), d(B, {
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(), d(B, {
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(), d(B, {
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"]))])) : f("", !0),
1526
- !h(q) && !at(o) ? (r(), v("div", Rn, [te((r(), d(s, {
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: _(() => [D(Oe, {
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
- ]])])) : f("", !0)
1543
+ ]])])) : d("", !0)
1544
1544
  ])]),
1545
- content: _(() => [S("div", zn, [S("div", Bn, [h(q) && !at(o) ? (r(), d(Ne, {
1545
+ content: g(() => [x("div", zn, [x("div", Bn, [m(q) && !K(o) ? (r(), u(Pe, {
1546
1546
  key: 0,
1547
- "model-value": h(ot).has(o.id),
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) => h(dt)(o.id)
1552
- }, null, 8, ["model-value", "onUpdate:modelValue"])) : f("", !0), S("div", Vn, [S("div", Hn, a(Q(o.cameraId)), 1), S("div", Un, a(h(be)(o.createdAt)), 1)])]), D(B, {
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), h(rt) ? (r(), v("div", {
1557
+ }, 1032, ["onClick"]))), 128))], 4), m(it) ? (r(), _("div", {
1558
1558
  key: 0,
1559
1559
  ref_key: "loadMoreRef",
1560
- ref: Ae,
1560
+ ref: je,
1561
1561
  class: "h-px"
1562
- }, null, 512)) : f("", !0)], 64))], 512),
1563
- h(W).length || h(q) ? (r(), d(it, {
1562
+ }, null, 512)) : d("", !0)], 64))], 512),
1563
+ m(U).length || m(q) ? (r(), u(at, {
1564
1564
  key: 3,
1565
- "force-visible": h(q),
1566
- "scroll-y": h(Ue)
1565
+ "force-visible": m(q),
1566
+ "scroll-y": m(We)
1567
1567
  }, {
1568
- default: _(() => [h(q) ? (r(), v(b, { key: 1 }, [
1569
- D(G, {
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: h(H),
1573
+ icon: m(V),
1574
1574
  "icon-props": {
1575
1575
  width: "100%",
1576
1576
  height: "100%"
1577
1577
  },
1578
- onClick: h(ut)
1578
+ onClick: m(ut)
1579
1579
  }, null, 8, [
1580
1580
  "tooltip-props",
1581
1581
  "icon",
1582
1582
  "onClick"
1583
1583
  ]),
1584
- D(G, {
1584
+ E(W, {
1585
1585
  grouped: "",
1586
- "tooltip-props": { value: h(ct) ? t.$t("views.training.deselect_all") : t.$t("views.training.select_all") },
1587
- "button-props": { severity: h(ct) ? "primary" : "secondary" },
1588
- icon: h(ve),
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: h(X)
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
- D(G, {
1600
+ E(W, {
1601
1601
  grouped: "",
1602
1602
  "tooltip-props": { value: t.$t("views.training.submit_selected") },
1603
- "button-props": { disabled: !h(ft).length || h(ue).isPending.value },
1604
- icon: h(et),
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(h(ft))
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
- D(G, {
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: !h(ot).size || h(J)
1620
+ disabled: !m(ot).size || m(J)
1621
1621
  },
1622
- icon: h(M),
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(), v(b, { key: 0 }, [D(G, {
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: h(ce),
1637
+ icon: m(De),
1638
1638
  "icon-props": {
1639
1639
  width: "100%",
1640
1640
  height: "100%"
1641
1641
  },
1642
- onClick: h(lt)
1642
+ onClick: m(lt)
1643
1643
  }, null, 8, [
1644
1644
  "tooltip-props",
1645
1645
  "icon",
1646
1646
  "onClick"
1647
- ]), D(G, {
1647
+ ]), E(W, {
1648
1648
  grouped: "",
1649
- "tooltip-props": { value: h(Z).length ? t.$t("views.training.submit_ready", h(Z).length) : t.$t("views.training.submit_disabled") },
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: !h(Z).length || h(ue).isPending.value
1652
+ disabled: !m(Z).length || m(me).isPending.value
1653
1653
  },
1654
- icon: h(et),
1654
+ icon: m(tt),
1655
1655
  "icon-props": {
1656
1656
  width: "26px",
1657
1657
  height: "26px"
1658
1658
  },
1659
- onClick: i[7] ||= (e) => St(h(Z))
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"])) : f("", !0),
1667
- D(fe, {
1666
+ }, 8, ["force-visible", "scroll-y"])) : d("", !0),
1667
+ E(ue, {
1668
1668
  ref_key: "statusMenuRef",
1669
- ref: Ce,
1670
- items: h($e),
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
- D(fe, {
1673
+ E(ue, {
1674
1674
  ref_key: "cameraMenuRef",
1675
- ref: Te,
1676
- items: h(Je),
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
- D(fe, {
1679
+ E(ue, {
1680
1680
  ref_key: "settingsMenuRef",
1681
- ref: ke,
1682
- items: h(Ye),
1681
+ ref: Ae,
1682
+ items: m(Xe),
1683
1683
  "auto-hide": !1,
1684
1684
  popover: { pt: {
1685
1685
  root: { class: "w-[22rem]" },