@camera.ui/server 2.2.1 → 2.2.2

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 (410) hide show
  1. package/dist/interface/assets/{404-Ci4V-7l9.js → 404-bSMSPWcp.js} +1 -1
  2. package/dist/interface/assets/{About-BSGYUvI7.js → About-DqMxC4AO.js} +1 -1
  3. package/dist/interface/assets/Assistant-CIHF-bHs.js +1 -0
  4. package/dist/interface/assets/Automation-CUDypjZw.js +3 -0
  5. package/dist/interface/assets/AutomationImport-Cr14tF-Q.js +2 -0
  6. package/dist/interface/assets/AutomationStore-BnZgfI9i.js +2 -0
  7. package/dist/interface/assets/AutomationStoreDetail-btcIglkw.js +2 -0
  8. package/dist/interface/assets/Automations-CKpwXTyc.js +2 -0
  9. package/dist/interface/assets/Camera-BEP_HAQm.js +2 -0
  10. package/dist/interface/assets/{CameraConsole-DbmJ9PNU.js → CameraConsole-BK8TqHgA.js} +1 -1
  11. package/dist/interface/assets/{Cameras-DnLbeJFs.js → Cameras-DJreIgtW.js} +2 -2
  12. package/dist/interface/assets/Camview-D4VNMv_l.js +1 -0
  13. package/dist/interface/assets/{CertificateUpload-_VQx5fjA.js → CertificateUpload-PfgVZa4M.js} +1 -1
  14. package/dist/interface/assets/{Config-BuuQmMOC.js → Config-DapgreIX.js} +1 -1
  15. package/dist/interface/assets/{ConfigActionAssistant-DforDPLT.js → ConfigActionAssistant-v0w4E-mE.js} +1 -1
  16. package/dist/interface/assets/{ConfigActionCameraControl-LwL8BSZX.js → ConfigActionCameraControl-fdrsnRyE.js} +1 -1
  17. package/dist/interface/assets/{ConfigActionDelay-C6u-CHFE.js → ConfigActionDelay-C_dq3ozL.js} +1 -1
  18. package/dist/interface/assets/{ConfigActionHttp-CxbJVkf2.js → ConfigActionHttp-1hDI-38w.js} +1 -1
  19. package/dist/interface/assets/{ConfigActionImageInput-BpDXjbnf.js → ConfigActionImageInput-DCF8qeg9.js} +1 -1
  20. package/dist/interface/assets/{ConfigActionMqtt-BkbAAepo.js → ConfigActionMqtt-XpVD7lFg.js} +1 -1
  21. package/dist/interface/assets/{ConfigActionNotification-B2Dtkf2b.js → ConfigActionNotification-CB1ymMRz.js} +1 -1
  22. package/dist/interface/assets/{ConfigActionNotificationControl-DMW2_Vez.js → ConfigActionNotificationControl-BfDtLS5h.js} +1 -1
  23. package/dist/interface/assets/{ConfigActionOutput-WVe74xXz.js → ConfigActionOutput-CMfXI1b3.js} +1 -1
  24. package/dist/interface/assets/{ConfigActionPlugin-C3iZfPRv.js → ConfigActionPlugin-CZo6SudQ.js} +1 -1
  25. package/dist/interface/assets/{ConfigActionSensor-DSW92VVP.js → ConfigActionSensor-CetFuASa.js} +1 -1
  26. package/dist/interface/assets/{ConfigActionSnapshot-Cl3NLmyn.js → ConfigActionSnapshot-BpPhHpIk.js} +1 -1
  27. package/dist/interface/assets/{ConfigActionVariable-Due14Kwt.js → ConfigActionVariable-SJomTISn.js} +1 -1
  28. package/dist/interface/assets/{ConfigConditionIfElse-mIXw954j.js → ConfigConditionIfElse-ClTxvZJz.js} +1 -1
  29. package/dist/interface/assets/{ConfigConditionSensorState-C_FpJLnM.js → ConfigConditionSensorState-FbLmmHyP.js} +1 -1
  30. package/dist/interface/assets/{ConfigConditionSwitch-CYRUg-Uo.js → ConfigConditionSwitch--qAHkOdE.js} +1 -1
  31. package/dist/interface/assets/{ConfigConditionTime-WkevpYaO.js → ConfigConditionTime-BqjDUPVR.js} +1 -1
  32. package/dist/interface/assets/{ConfigSensorValueInput-BDz5olLY.js → ConfigSensorValueInput-B1dLcmSO.js} +1 -1
  33. package/dist/interface/assets/{ConfigTriggerDetection-Cb_BObEL.js → ConfigTriggerDetection-CMZyEWui.js} +1 -1
  34. package/dist/interface/assets/{ConfigTriggerGeofence-B7Iugx3i.js → ConfigTriggerGeofence-B9JPVvhP.js} +1 -1
  35. package/dist/interface/assets/{ConfigTriggerManual-D7w6C58j.js → ConfigTriggerManual-CSdF69jM.js} +1 -1
  36. package/dist/interface/assets/{ConfigTriggerMqtt-D_ozlopI.js → ConfigTriggerMqtt-BzN7_xVm.js} +1 -1
  37. package/dist/interface/assets/{ConfigTriggerSchedule-1UcaRD5S.js → ConfigTriggerSchedule-BK_Ogvxn.js} +1 -1
  38. package/dist/interface/assets/{ConfigTriggerSensor-D9_lg6yH.js → ConfigTriggerSensor-BaQklhHP.js} +1 -1
  39. package/dist/interface/assets/{ConfigTriggerSystem-COPR6t7r.js → ConfigTriggerSystem-DIX95l0X.js} +1 -1
  40. package/dist/interface/assets/{ConfigTriggerWebhook-C0v6uR67.js → ConfigTriggerWebhook-_EOJAgNk.js} +1 -1
  41. package/dist/interface/assets/Console-Y1IutnkC.js +1 -0
  42. package/dist/interface/assets/CuiAssistantConversation-C4RYcMAM.js +5 -0
  43. package/dist/interface/assets/{CuiAssistantConversation-BkWDr6uX.css → CuiAssistantConversation-CWCLLi3b.css} +1 -1
  44. package/dist/interface/assets/{CuiAutomationRunsDialog-CGBqZXR4.js → CuiAutomationRunsDialog-DpskKeEe.js} +1 -1
  45. package/dist/interface/assets/{CuiBottomSheet-DomRjKV8.js → CuiBottomSheet-Bg_AIuGY.js} +1 -1
  46. package/dist/interface/assets/CuiBottomSheet-S8bM23jj.js +1 -0
  47. package/dist/interface/assets/{CuiCameraPipCard-BXCRph8M.js → CuiCameraPipCard-HTjvF3yG.js} +1 -1
  48. package/dist/interface/assets/CuiCameraRecordings-Cx6FYz3Y.js +1 -0
  49. package/dist/interface/assets/CuiCameraShares-J728G9wF.js +1 -0
  50. package/dist/interface/assets/CuiCameraTable-CKur0qLE.js +1 -0
  51. package/dist/interface/assets/{CuiCameraTable-B1F2UjZk.js → CuiCameraTable-CyAYYPvd.js} +2 -2
  52. package/dist/interface/assets/{CuiChartTable-CcovDii1.js → CuiChartTable-BklHSjRr.js} +1 -1
  53. package/dist/interface/assets/{CuiConsole-BzJJnQTd.js → CuiConsole-4rDfDj0a.js} +1 -1
  54. package/dist/interface/assets/{CuiDataTable-CNFiiz_X.js → CuiDataTable-BLyeEEAp.js} +1 -1
  55. package/dist/interface/assets/CuiLightControl-C1YSJSWd.js +1 -0
  56. package/dist/interface/assets/{CuiList-Dfklll0h.js → CuiList-BafzuN0H.js} +1 -1
  57. package/dist/interface/assets/CuiPluginCard-enc00hbc.js +2 -0
  58. package/dist/interface/assets/CuiPluginCategoryChip-B4w2DH_j.js +1 -0
  59. package/dist/interface/assets/CuiPluginOAuthButton-C_jxPrPQ.js +2 -0
  60. package/dist/interface/assets/{CuiPluginTrustBadge-CILKiExH.js → CuiPluginTrustBadge-pLnF2Ggn.js} +1 -1
  61. package/dist/interface/assets/{CuiQRCode-DHUwFLQz.js → CuiQRCode-8Q6cFdfs.js} +1 -1
  62. package/dist/interface/assets/CuiSchema-CRHUMY0B.js +1 -0
  63. package/dist/interface/assets/{CuiTopNavbarItem-DBsbHvkJ.js → CuiTopNavbarItem-BZXzuV42.js} +1 -1
  64. package/dist/interface/assets/Faces-fMMd6-PY.js +1 -0
  65. package/dist/interface/assets/FirstSteps-BNcAFp2c.js +1 -0
  66. package/dist/interface/assets/Floorplan-BQbOWCCf.js +1 -0
  67. package/dist/interface/assets/{Instances-cgw_Xzu0.js → Instances-DUWWy-El.js} +1 -1
  68. package/dist/interface/assets/{Logs-BrTGt33Q.js → Logs-7CxXc2Re.js} +2 -2
  69. package/dist/interface/assets/{Menu-6FMKvbpH.js → Menu-B3VA0LMx.js} +1 -1
  70. package/dist/interface/assets/Metrics-C0q2BdKH.js +9 -0
  71. package/dist/interface/assets/OAuthDeviceFlow-ZiCl4400.js +1 -0
  72. package/dist/interface/assets/Plugin-C0CPlt4f.js +1 -0
  73. package/dist/interface/assets/{PluginConsole-C6xky2l3.js → PluginConsole-BOaU7Ey0.js} +1 -1
  74. package/dist/interface/assets/PluginDetail-DDh6PfMd.js +2 -0
  75. package/dist/interface/assets/{PluginSchema-D5dmitq0.js → PluginSchema-BWlRMPo6.js} +1 -1
  76. package/dist/interface/assets/PluginSearch-BR_ei8Pa.js +1 -0
  77. package/dist/interface/assets/PluginSearch-C2AXz2KG.js +2 -0
  78. package/dist/interface/assets/{PluginUpdateProgress-Cj4Ilm8M.js → PluginUpdateProgress-DFg14vV8.js} +1 -1
  79. package/dist/interface/assets/Plugins-CN1YIfNk.js +1 -0
  80. package/dist/interface/assets/RecentEventsFilter-B6Ph-pxb.js +1 -0
  81. package/dist/interface/assets/Recordings-jhxwdrQY.js +1 -0
  82. package/dist/interface/assets/{SensorEdit-BBTdSbok.js → SensorEdit-DEenjJ8S.js} +1 -1
  83. package/dist/interface/assets/{SensorHistory-BmGYTFWx.js → SensorHistory-CU1Uwf5f.js} +1 -1
  84. package/dist/interface/assets/Sensors-LnVLPDWf.js +2 -0
  85. package/dist/interface/assets/{Settings-B-lq2Bls.js → Settings-uk3RVXCS.js} +1 -1
  86. package/dist/interface/assets/SettingsAccount-CJ_fPrT-.js +1 -0
  87. package/dist/interface/assets/SettingsAccount-CYn81m0Z.js +1 -0
  88. package/dist/interface/assets/{SettingsAppearance-DMhqHxXU.js → SettingsAppearance-CRYcal9v.js} +1 -1
  89. package/dist/interface/assets/SettingsAppearance-DFe8JsT5.js +1 -0
  90. package/dist/interface/assets/SettingsAssistant-CDyI6fee.css +1 -0
  91. package/dist/interface/assets/SettingsAssistant-Dm4oINqB.js +1 -0
  92. package/dist/interface/assets/{SettingsBackup-C9clJ_2F.js → SettingsBackup-CSvGqsru.js} +1 -1
  93. package/dist/interface/assets/{SettingsList-Ba5TjVzD.js → SettingsList-BQR6jnP-.js} +1 -1
  94. package/dist/interface/assets/SettingsMqtt-ByQYIRkm.js +1 -0
  95. package/dist/interface/assets/SettingsNotifications-8sSoP-8S.js +1 -0
  96. package/dist/interface/assets/{SettingsPermissions-B6vNyFvJ.js → SettingsPermissions-D7kYdjfw.js} +1 -1
  97. package/dist/interface/assets/SettingsRecordings-DjLYqbKo.js +1 -0
  98. package/dist/interface/assets/SettingsRemote-7iDccnV9.js +2 -0
  99. package/dist/interface/assets/SettingsSystem-BxQNJc8n.js +2 -0
  100. package/dist/interface/assets/SettingsUsers-yYobKcPv.js +1 -0
  101. package/dist/interface/assets/{Terminal-BoMq8civ.js → Terminal-Bsnvs8gs.js} +2 -2
  102. package/dist/interface/assets/Training-BUhrkDzA.css +1 -0
  103. package/dist/interface/assets/Training-SOWa6Ay1.js +1 -0
  104. package/dist/interface/assets/{Updates-Cceza_vs.js → Updates-Dsn_fJ-N.js} +1 -1
  105. package/dist/interface/assets/{VariableInput-Ds5NaShw.js → VariableInput-DCWiIgaZ.js} +1 -1
  106. package/dist/interface/assets/{VariableSuggestions-B0Y5QsCw.js → VariableSuggestions-BhIlXJ6r.js} +1 -1
  107. package/dist/interface/assets/{VersionsHandler-D3ugTFh9.js → VersionsHandler-DM_Jf4EA.js} +1 -1
  108. package/dist/interface/assets/VirtualSensorCreate-Q4kd0dfE.js +1 -0
  109. package/dist/interface/assets/Workers-D7mXpfvC.js +2 -0
  110. package/dist/interface/assets/api-BKiE8A_V.css +2 -0
  111. package/dist/interface/assets/api-Cl7JjXOQ.js +4 -0
  112. package/dist/interface/assets/{api-C4b9FQa5.js → api-LjAY3aa3.js} +1 -1
  113. package/dist/interface/assets/{assistant-DfBoMwZZ.js → assistant-BFc44oq-.js} +1 -1
  114. package/dist/interface/assets/{auth-jXwc9evv.js → auth-CUPvHARA.js} +1 -1
  115. package/dist/interface/assets/automations-Dw4L5sT0.js +1 -0
  116. package/dist/interface/assets/cameraSources-CzENFiZx.js +1 -0
  117. package/dist/interface/assets/cloudHandoff-CGMLCwMb.js +1 -0
  118. package/dist/interface/assets/{config-4L2n-1_z.js → config-EBcNBZkb.js} +1 -1
  119. package/dist/interface/assets/dots-vertical-C4DlXZyp.js +1 -0
  120. package/dist/interface/assets/eventIcons-BPQ-zSnz.js +1 -0
  121. package/dist/interface/assets/{flowSchema-ZMBzlKJI.js → flowSchema-CdzBw69a.js} +1 -1
  122. package/dist/interface/assets/{intercomService-DQ4LZJfW.js → intercomService-DIfdcsXc.js} +1 -1
  123. package/dist/interface/assets/main-W8WcKa2g.js +3 -0
  124. package/dist/interface/assets/mqtt-D_wH18eJ.js +1 -0
  125. package/dist/interface/assets/{notifications-mJrKtTFp.js → notifications-wLsrlI9N.js} +1 -1
  126. package/dist/interface/assets/plugins-DwmkpOPJ.js +1 -0
  127. package/dist/interface/assets/rooms-D_7As09p.js +1 -0
  128. package/dist/interface/assets/sensorIcons-BY853M0u.js +1 -0
  129. package/dist/interface/assets/{sensorSlots-CUWphRrL.js → sensorSlots-DnRJdaTG.js} +1 -1
  130. package/dist/interface/assets/{sensors-DG-GPuvr.js → sensors-B9etOqBI.js} +1 -1
  131. package/dist/interface/assets/{server-CFtdMCM4.js → server-BTKgKMye.js} +1 -1
  132. package/dist/interface/assets/{theme-C8wlVvxI.js → theme-CbtGvohq.js} +1 -1
  133. package/dist/interface/assets/types-BEy4uGJ0.js +1 -0
  134. package/dist/interface/assets/{types-BxQYBZ2c.js → types-CEhVWRYD.js} +1 -1
  135. package/dist/interface/assets/types-COlvVtDn.js +1 -0
  136. package/dist/interface/assets/ungrouped-BJyBDv5e.js +1 -0
  137. package/dist/interface/assets/{updates-DqHYjhVs.js → updates-BQ6Ugcup.js} +1 -1
  138. package/dist/interface/assets/{useAppVersion-iJHv6EYQ.js → useAppVersion-BO-3jbup.js} +1 -1
  139. package/dist/interface/assets/{useAssistantActions-BeXqj2-6.js → useAssistantActions-CRVHZw4o.js} +1 -1
  140. package/dist/interface/assets/{useBackupRestore-5E-Y8DMu.js → useBackupRestore-D305pYHT.js} +1 -1
  141. package/dist/interface/assets/{useCameraOptions-DVcUIXzh.js → useCameraOptions-C7tgceJ1.js} +1 -1
  142. package/dist/interface/assets/{useKeyboardInset-DpxykA20.js → useKeyboardInset-yu3BVnj7.js} +1 -1
  143. package/dist/interface/assets/{useLogsSocket-D2gJ0e00.js → useLogsSocket-B4wTnSno.js} +1 -1
  144. package/dist/interface/assets/{useNavLayout-D-KmCM3U.js → useNavLayout-Z61-OsIG.js} +1 -1
  145. package/dist/interface/assets/{usePermissions-CsWQ7pWp.js → usePermissions-Bjx4t0x3.js} +1 -1
  146. package/dist/interface/assets/{usePluginUpdates-D0bz8TeJ.js → usePluginUpdates-Dv3_XJTK.js} +1 -1
  147. package/dist/interface/assets/{usePushRegistration-B9vouC4k.js → usePushRegistration-CHNMZ94f.js} +1 -1
  148. package/dist/interface/assets/{useServerRestart-CaYRL38s.js → useServerRestart-C-AsOdJP.js} +1 -1
  149. package/dist/interface/assets/{useStreamStatus-BSl9TJlX.js → useStreamStatus-BJoJF68x.js} +1 -1
  150. package/dist/interface/assets/{useTabSwipe-B6GIPOrZ.js → useTabSwipe-b_K3BIkW.js} +1 -1
  151. package/dist/interface/assets/{useUpdateChannel-BuIKUKQ9.js → useUpdateChannel-Cc4IrrDy.js} +1 -1
  152. package/dist/interface/assets/{useUpdatesSocket-B8F-9tUI.js → useUpdatesSocket-Cz9lN4Bc.js} +1 -1
  153. package/dist/interface/assets/{useUserOptions-9Lcq7htw.js → useUserOptions-DrNB17kY.js} +1 -1
  154. package/dist/interface/assets/{vendor-cameraui-zaB6gIk1.js → vendor-cameraui-CqKq4Yeo.js} +1 -1
  155. package/dist/interface/assets/{vendor-core-CfoDuMvj.js → vendor-core-BTkC8NzR.js} +1 -1
  156. package/dist/interface/assets/{vendor-primevue-5HrOunkM.js → vendor-primevue-DQz5Qnqu.js} +1 -1
  157. package/dist/interface/assets/vendor-zod-BigRv4ty.js +109 -0
  158. package/dist/interface/ha/{404-BA6DAi0I.js → 404-Bg2Vlt5S.js} +1 -1
  159. package/dist/interface/ha/{About-D3tEPbYC.js → About-C6u2wgUi.js} +6 -6
  160. package/dist/interface/ha/{Assistant-BSlIm7T1.js → Assistant-BCyiVnwD.js} +1010 -1009
  161. package/dist/interface/ha/{Automation-B7ZCtbpe.js → Automation-DU_qv5xD.js} +176 -176
  162. package/dist/interface/ha/{AutomationImport-CVEGBlET.js → AutomationImport-BpDyhabF.js} +7 -7
  163. package/dist/interface/ha/{AutomationStore-hW-ReFbV.js → AutomationStore-DPQsunpH.js} +52 -51
  164. package/dist/interface/ha/{AutomationStoreDetail-R-1XPudW.js → AutomationStoreDetail-CASMQ-mD.js} +23 -23
  165. package/dist/interface/ha/{Automations-9CLEXB1U.js → Automations-DSHVzwX4.js} +90 -90
  166. package/dist/interface/ha/{Camera-CQK1LgJe.js → Camera-ESmteicm.js} +42 -42
  167. package/dist/interface/ha/{CameraConsole-C6CZ3tzc.js → CameraConsole-BE_jl4Co.js} +5 -5
  168. package/dist/interface/ha/{Cameras-Bw_Co8e9.js → Cameras-otaj2xZO.js} +279 -279
  169. package/dist/interface/ha/{Camview-fb7D6KvD.js → Camview-BU1027if.js} +464 -463
  170. package/dist/interface/ha/{Config-Cf0XlhJ-.js → Config-BlEvHYVP.js} +11 -11
  171. package/dist/interface/ha/{ConfigActionAssistant-BtnJwaka.js → ConfigActionAssistant-uDf5fgoJ.js} +4 -4
  172. package/dist/interface/ha/{ConfigActionCameraControl-B1NtlCI4.js → ConfigActionCameraControl-BAQsXVLz.js} +5 -5
  173. package/dist/interface/ha/{ConfigActionHttp-BpI7XQC3.js → ConfigActionHttp-Dy2MZHSm.js} +2 -2
  174. package/dist/interface/ha/{ConfigActionImageInput-tLzrOm0l.js → ConfigActionImageInput-B5kyV3Un.js} +1 -1
  175. package/dist/interface/ha/{ConfigActionMqtt-DIuCKfQL.js → ConfigActionMqtt-DHCgh1xx.js} +4 -4
  176. package/dist/interface/ha/{ConfigActionNotification-CotMZbgF.js → ConfigActionNotification-mbA5PfcJ.js} +4 -4
  177. package/dist/interface/ha/{ConfigActionNotificationControl-ClnOPBa2.js → ConfigActionNotificationControl-TLaL7tYm.js} +2 -2
  178. package/dist/interface/ha/{ConfigActionOutput-DFRh3xK2.js → ConfigActionOutput-CJ40Fniw.js} +1 -1
  179. package/dist/interface/ha/{ConfigActionPlugin-BSUdCGwz.js → ConfigActionPlugin-BwTd-mdQ.js} +5 -5
  180. package/dist/interface/ha/{ConfigActionSensor-B-PHlt11.js → ConfigActionSensor-BI438ihg.js} +6 -6
  181. package/dist/interface/ha/{ConfigActionSnapshot-DomyiKiQ.js → ConfigActionSnapshot-DJ4zI2a0.js} +2 -2
  182. package/dist/interface/ha/{ConfigActionVariable-D4QZ0GSg.js → ConfigActionVariable-Bhy5jf_w.js} +1 -1
  183. package/dist/interface/ha/{ConfigConditionIfElse-Din_LVbb.js → ConfigConditionIfElse-I7Qq8nfN.js} +3 -3
  184. package/dist/interface/ha/{ConfigConditionSensorState-cnMbVYSj.js → ConfigConditionSensorState-CTLP3ppx.js} +4 -4
  185. package/dist/interface/ha/{ConfigConditionSwitch-nLCPZ02V.js → ConfigConditionSwitch-UUupXf1b.js} +10 -10
  186. package/dist/interface/ha/{ConfigConditionTime-CcZFjBil.js → ConfigConditionTime-CRn4k6uE.js} +2 -2
  187. package/dist/interface/ha/{ConfigSensorValueInput-CrZoNX72.js → ConfigSensorValueInput-CoHheDT0.js} +5 -4
  188. package/dist/interface/ha/{ConfigTriggerDetection-MsrbiErr.js → ConfigTriggerDetection-Cg_jKNed.js} +4 -4
  189. package/dist/interface/ha/{ConfigTriggerGeofence-BxQ0n4-f.js → ConfigTriggerGeofence-WlJbu3sC.js} +6 -6
  190. package/dist/interface/ha/{ConfigTriggerMqtt-ti8xd7vF.js → ConfigTriggerMqtt-BeRJoceK.js} +1 -1
  191. package/dist/interface/ha/{ConfigTriggerSensor-CNlsV9yo.js → ConfigTriggerSensor-k58gVKdG.js} +2 -2
  192. package/dist/interface/ha/{ConfigTriggerSystem-CsULDPX-.js → ConfigTriggerSystem-Ckm5yoUm.js} +2 -2
  193. package/dist/interface/ha/{ConfigTriggerWebhook-BnUer9x_.js → ConfigTriggerWebhook-D425z-p1.js} +6 -6
  194. package/dist/interface/ha/{Console-B1Y6mBPP.js → Console-C1Ub4Rji.js} +100 -100
  195. package/dist/interface/ha/{CuiAutomationRunsDialog-BHJIQ0Tj.js → CuiAutomationRunsDialog-opy5qXwE.js} +2 -2
  196. package/dist/interface/ha/{CuiBottomSheet-DyCegs0G.js → CuiBottomSheet-DbCwVXl1.js} +1 -1
  197. package/dist/interface/ha/{CuiCameraRecordings-Cfzu3-OA.js → CuiCameraRecordings-CifJLj7G.js} +20 -19
  198. package/dist/interface/ha/{CuiCameraShares-CE2Z9Osp.js → CuiCameraShares-Xty8LRcn.js} +7 -7
  199. package/dist/interface/ha/{CuiCameraTable-DCm-DNjq.js → CuiCameraTable-CqfxX0Yn.js} +9 -9
  200. package/dist/interface/ha/{CuiChartTable-BYkhLvXA.js → CuiChartTable-ABHnLdR0.js} +36 -36
  201. package/dist/interface/ha/{CuiConsole-DTDUpQ_E.js → CuiConsole-3JwbeUYD.js} +5 -5
  202. package/dist/interface/ha/{CuiDataTable-Cxk-gD0O.js → CuiDataTable-BwE7D2h5.js} +7 -6
  203. package/dist/interface/ha/{CuiPluginCard-CaJWPBXm.js → CuiPluginCard-bzxiy1yb.js} +53 -53
  204. package/dist/interface/ha/{CuiPluginOAuthButton--RbsaIiq.js → CuiPluginOAuthButton-DSxrzDmg.js} +6 -6
  205. package/dist/interface/ha/{CuiPluginTrustBadge-G79t87hq.js → CuiPluginTrustBadge-g0XkvDt8.js} +3 -3
  206. package/dist/interface/ha/{CuiQRCode-C0o0cS3C.js → CuiQRCode-uyRFbzd6.js} +6 -6
  207. package/dist/interface/ha/{CuiSchema-BmfjaboJ.js → CuiSchema-DZIrlY8R.js} +148 -148
  208. package/dist/interface/ha/{CuiTopNavbarItem-KlOpTPMA.js → CuiTopNavbarItem-C3a5NA7u.js} +1 -1
  209. package/dist/interface/ha/{Faces-CG1S8jsV.js → Faces-D2eca8MN.js} +109 -108
  210. package/dist/interface/ha/{FirstSteps-B4cODn_E.js → FirstSteps-CdTE1cvw.js} +64 -64
  211. package/dist/interface/ha/{Floorplan-CM5cL4_h.js → Floorplan-BrEC2Au5.js} +379 -378
  212. package/dist/interface/ha/{Instances-B1KAGADd.js → Instances-ClOsPOi8.js} +20 -20
  213. package/dist/interface/ha/{Logs-CNVJvujx.js → Logs-DnY1gTnb.js} +12 -12
  214. package/dist/interface/ha/{Menu-hlaVYE5G.js → Menu-cLDE76XZ.js} +16 -16
  215. package/dist/interface/ha/{Metrics-CUllrnJc.js → Metrics-pMQX_0m1.js} +97 -96
  216. package/dist/interface/ha/{OAuthDeviceFlow-kYPoT4p2.js → OAuthDeviceFlow-D1PGQ8r9.js} +9 -9
  217. package/dist/interface/ha/{Plugin-QvBE-VHD.js → Plugin-DiC23P97.js} +83 -82
  218. package/dist/interface/ha/{PluginConsole-Cpd8sx5a.js → PluginConsole-B-lX5KJu.js} +6 -6
  219. package/dist/interface/ha/{PluginDetail-CqSaIeH-.js → PluginDetail-B_tVJf6y.js} +10 -10
  220. package/dist/interface/ha/{PluginSearch-C-3nAbyu.js → PluginSearch-n8nfjx9q.js} +35 -34
  221. package/dist/interface/ha/{PluginUpdateProgress-Izcgxa6-.js → PluginUpdateProgress-BjsYyrRk.js} +3 -3
  222. package/dist/interface/ha/{Plugins-BkvUlAHi.js → Plugins-CFhOUaqq.js} +178 -191
  223. package/dist/interface/ha/RecentEventsFilter-C1deXNIS.js +79 -0
  224. package/dist/interface/ha/{Recordings-BSR6AGq2.js → Recordings-B07eUJwH.js} +332 -361
  225. package/dist/interface/ha/{SensorEdit-KLS5N1YP.js → SensorEdit-DFPiBXQD.js} +362 -360
  226. package/dist/interface/ha/{SensorHistory-nHGwqzDW.js → SensorHistory-B2FOK4Qa.js} +2 -2
  227. package/dist/interface/ha/{Sensors-VAy09hDh.js → Sensors-DtzmTc-L.js} +525 -523
  228. package/dist/interface/ha/{Settings-DINmP-PB.js → Settings-ClqSoFjT.js} +25 -25
  229. package/dist/interface/ha/{SettingsAccount-B-3XO53P.js → SettingsAccount-Bh8FfH7J.js} +263 -262
  230. package/dist/interface/ha/{SettingsAppearance-B7ONsdV3.js → SettingsAppearance--FJgY8cj.js} +20 -20
  231. package/dist/interface/ha/{SettingsAssistant-VQkALMWq.js → SettingsAssistant-ClDfxd_d.js} +664 -613
  232. package/dist/interface/ha/{SettingsBackup-CRzyW7Ce.js → SettingsBackup-BYM55pQ7.js} +39 -39
  233. package/dist/interface/ha/{SettingsList-GWb7HKeq.js → SettingsList-CMSEKVCD.js} +2 -2
  234. package/dist/interface/ha/{SettingsMqtt-Db8CUtzi.js → SettingsMqtt-CFpgJ-E5.js} +149 -149
  235. package/dist/interface/ha/{SettingsNotifications-lNH9mh9I.js → SettingsNotifications-CzgsBNtW.js} +5 -5
  236. package/dist/interface/ha/{SettingsRecordings-s52rT7TX.js → SettingsRecordings-Bz686yU7.js} +10 -9
  237. package/dist/interface/ha/{SettingsRemote-DYUJdmKW.js → SettingsRemote-DT4ZMjJO.js} +358 -358
  238. package/dist/interface/ha/{SettingsSystem-Bkfc5Tky.js → SettingsSystem-CHctt06D.js} +9 -9
  239. package/dist/interface/ha/{SettingsUsers-BHLsFMG9.js → SettingsUsers-C_hvntON.js} +39 -39
  240. package/dist/interface/ha/{Terminal-CDZjjg7e.js → Terminal-B5FXq4-Z.js} +41 -41
  241. package/dist/interface/ha/{Training-BbRm4L9a.js → Training-BgvpsKPM.js} +469 -469
  242. package/dist/interface/ha/{Updates-DM5YITjv.js → Updates-D0osNjqS.js} +13 -13
  243. package/dist/interface/ha/{VariableInput-DOiVQbEb.js → VariableInput-BK0qqMc7.js} +1 -1
  244. package/dist/interface/ha/{VersionsHandler-CjzF5jII.js → VersionsHandler-B-vpKHJN.js} +9 -9
  245. package/dist/interface/ha/{VirtualSensorCreate-q7b13gfi.js → VirtualSensorCreate-Bp2201iM.js} +3 -3
  246. package/dist/interface/ha/{Workers-Vf16lK9P.js → Workers-BQ_luGWk.js} +86 -86
  247. package/dist/interface/ha/{accordion-DdpJ2jcK.js → accordion-X9Wa7KVq.js} +1 -1
  248. package/dist/interface/ha/{api-Bnk0paIs.js → api-BufZW7-A.js} +3 -3
  249. package/dist/interface/ha/{api-C0pVlzsW.js → api-JPS8NpNG.js} +9129 -9618
  250. package/dist/interface/ha/{assistant-DJPdidEd.js → assistant-BXVGCw2q.js} +54 -54
  251. package/dist/interface/ha/{auth-CmCJIpis.js → auth-CJC9G9BA.js} +38 -38
  252. package/dist/interface/ha/{automationBlueprint-CtX7AOzy.js → automationBlueprint-DWuBiu_Q.js} +4 -3
  253. package/dist/interface/ha/cameraui-cards.js +1 -1
  254. package/dist/interface/ha/{cards-Cn0baEOx.js → cards-CGP6dWjy.js} +558 -557
  255. package/dist/interface/ha/checkbox-D012nd17.js +279 -0
  256. package/dist/interface/ha/{config-DxaLI3Wy.js → config-BVURO_DZ.js} +15 -15
  257. package/dist/interface/ha/{datepicker-DpDmhDeD.js → datepicker-44Ub2Hx0.js} +329 -604
  258. package/dist/interface/ha/dist-BTp4AyuI.js +287 -0
  259. package/dist/interface/ha/{dist-aGnBxAoZ.js → dist-Ca4K4HIm.js} +763 -1048
  260. package/dist/interface/ha/dots-vertical-BEPlUtxU.js +19 -0
  261. package/dist/interface/ha/eventIcons-DrjNuTS2.js +676 -0
  262. package/dist/interface/ha/{mqtt-BSUalkMz.js → mqtt-DY6EvMC9.js} +11 -11
  263. package/dist/interface/ha/{multiselect-Cedfen4P.js → multiselect-B0fAnW75.js} +1 -1
  264. package/dist/interface/ha/{notifications-DuVSTES6.js → notifications-BdIqgnrC.js} +21 -21
  265. package/dist/interface/ha/{pinia-Dk3LfWcE.js → pinia-CqffEnzx.js} +2283 -2268
  266. package/dist/interface/ha/{plugins-XTsvVLj3.js → plugins-Bnq2Iw00.js} +67 -67
  267. package/dist/interface/ha/pwa/favicon-16.ico +0 -0
  268. package/dist/interface/ha/pwa/favicon-32.ico +0 -0
  269. package/dist/interface/ha/pwa/favicon-48.ico +0 -0
  270. package/dist/interface/ha/pwa/pwa-120x120.png +0 -0
  271. package/dist/interface/ha/pwa/pwa-24x24.png +0 -0
  272. package/dist/interface/ha/pwa/pwa-36x36.png +0 -0
  273. package/dist/interface/ha/pwa/pwa-48x48.png +0 -0
  274. package/dist/interface/ha/pwa/pwa-50x50.png +0 -0
  275. package/dist/interface/ha/pwa/pwa-64x64.png +0 -0
  276. package/dist/interface/ha/pwa/pwa-72x72.png +0 -0
  277. package/dist/interface/ha/pwa/pwa-88x88.png +0 -0
  278. package/dist/interface/ha/pwa/pwa-96x96.png +0 -0
  279. package/dist/interface/ha/{rooms-Ch5UrfPN.js → rooms-AiJ5Tfir.js} +8 -8
  280. package/dist/interface/ha/{server-h-kQ6sSS.js → server-BHhFn2RZ.js} +30 -30
  281. package/dist/interface/ha/{types-DjunpV_X.js → types-7oMK8VO-.js} +26 -26
  282. package/dist/interface/ha/{ungrouped-DkDSBlpG.js → ungrouped-hib17Nvu.js} +29 -28
  283. package/dist/interface/ha/{updates-D0cNiMIr.js → updates-DvnEEUsx.js} +36 -36
  284. package/dist/interface/ha/{useAppVersion-Cpv2npEz.js → useAppVersion-BmWXr96y.js} +1 -1
  285. package/dist/interface/ha/{useLogsSocket-Du83S3Wz.js → useLogsSocket-BKlJKGCB.js} +1 -1
  286. package/dist/interface/ha/{useNavLayout-XBJRTK3F.js → useNavLayout-Dt0NH-G5.js} +11 -11
  287. package/dist/interface/ha/{useServerRestart-CWhJrEyy.js → useServerRestart-DWs2dqQc.js} +1 -1
  288. package/dist/interface/ha/{useTabSwipe-BSlykGzV.js → useTabSwipe-vX79p6V_.js} +1 -1
  289. package/dist/interface/ha/{useUpdateChannel-DZttbpyK.js → useUpdateChannel-CHlRp8uj.js} +2 -2
  290. package/dist/interface/ha/{useUpdatesSocket-DI15Udke.js → useUpdatesSocket-B40Cx-2L.js} +1 -1
  291. package/dist/interface/ha/{useUserOptions-CQL8tMr4.js → useUserOptions-hXz79rIV.js} +1 -1
  292. package/dist/interface/index.html +34 -33
  293. package/dist/interface/pwa/favicon-16.ico +0 -0
  294. package/dist/interface/pwa/favicon-32.ico +0 -0
  295. package/dist/interface/pwa/favicon-48.ico +0 -0
  296. package/dist/interface/pwa/pwa-120x120.png +0 -0
  297. package/dist/interface/pwa/pwa-24x24.png +0 -0
  298. package/dist/interface/pwa/pwa-36x36.png +0 -0
  299. package/dist/interface/pwa/pwa-48x48.png +0 -0
  300. package/dist/interface/pwa/pwa-50x50.png +0 -0
  301. package/dist/interface/pwa/pwa-64x64.png +0 -0
  302. package/dist/interface/pwa/pwa-72x72.png +0 -0
  303. package/dist/interface/pwa/pwa-88x88.png +0 -0
  304. package/dist/interface/pwa/pwa-96x96.png +0 -0
  305. package/dist/interface/sw.js +1 -1
  306. package/dist/server/package.json +4 -4
  307. package/dist/server/src/api/controllers/users.controller.d.ts +3 -1
  308. package/dist/server/src/api/controllers/users.controller.js +38 -0
  309. package/dist/server/src/api/controllers/users.controller.js.map +1 -1
  310. package/dist/server/src/api/database/record-schemas.d.ts +44 -1
  311. package/dist/server/src/api/database/record-schemas.js +3 -3
  312. package/dist/server/src/api/database/record-schemas.js.map +1 -1
  313. package/dist/server/src/api/database/types.d.ts +4 -2
  314. package/dist/server/src/api/routes/users.routes.js +24 -1
  315. package/dist/server/src/api/routes/users.routes.js.map +1 -1
  316. package/dist/server/src/api/schemas/assistant.schema.d.ts +43 -1
  317. package/dist/server/src/api/schemas/assistant.schema.js +2 -1
  318. package/dist/server/src/api/schemas/assistant.schema.js.map +1 -1
  319. package/dist/server/src/api/schemas/users.schema.d.ts +8 -0
  320. package/dist/server/src/api/schemas/users.schema.js +45 -0
  321. package/dist/server/src/api/schemas/users.schema.js.map +1 -1
  322. package/dist/server/src/api/services/users.service.d.ts +3 -1
  323. package/dist/server/src/api/services/users.service.js +33 -0
  324. package/dist/server/src/api/services/users.service.js.map +1 -1
  325. package/dist/server/src/api/types/index.d.ts +4 -1
  326. package/dist/server/src/api/types/index.js.map +1 -1
  327. package/dist/server/src/assistant/prompt.d.ts +1 -0
  328. package/dist/server/src/assistant/prompt.js +10 -1
  329. package/dist/server/src/assistant/prompt.js.map +1 -1
  330. package/dist/server/src/assistant/search.js +4 -2
  331. package/dist/server/src/assistant/search.js.map +1 -1
  332. package/dist/server/src/assistant/skills.js +3 -2
  333. package/dist/server/src/assistant/skills.js.map +1 -1
  334. package/dist/server/src/assistant/tools/index.js +2 -2
  335. package/dist/server/src/assistant/tools/index.js.map +1 -1
  336. package/dist/server/src/assistant/tools/notifications.d.ts +2 -1
  337. package/dist/server/src/assistant/tools/notifications.js +69 -35
  338. package/dist/server/src/assistant/tools/notifications.js.map +1 -1
  339. package/dist/server/src/assistant/tools/plugins.d.ts +7 -1
  340. package/dist/server/src/assistant/tools/plugins.js +13 -9
  341. package/dist/server/src/assistant/tools/plugins.js.map +1 -1
  342. package/dist/server/src/assistant/uploads.js +8 -1
  343. package/dist/server/src/assistant/uploads.js.map +1 -1
  344. package/dist/server/src/manager/downloadManager.d.ts +1 -0
  345. package/dist/server/src/manager/downloadManager.js +3 -0
  346. package/dist/server/src/manager/downloadManager.js.map +1 -1
  347. package/dist/server/src/manager/notificationManager.d.ts +1 -0
  348. package/dist/server/src/manager/notificationManager.js +13 -2
  349. package/dist/server/src/manager/notificationManager.js.map +1 -1
  350. package/package.json +4 -4
  351. package/dist/interface/assets/Assistant-CblA57eC.js +0 -1
  352. package/dist/interface/assets/Automation-WFaHCnEO.js +0 -3
  353. package/dist/interface/assets/AutomationImport-HRMq3VvF.js +0 -2
  354. package/dist/interface/assets/AutomationStore-BaaFYySv.js +0 -2
  355. package/dist/interface/assets/AutomationStoreDetail-IiLAbn4L.js +0 -2
  356. package/dist/interface/assets/Automations-DRTUxje4.js +0 -2
  357. package/dist/interface/assets/Camera-CaNYoR20.js +0 -2
  358. package/dist/interface/assets/Camview-uZ50ebLh.js +0 -1
  359. package/dist/interface/assets/Console-CHdFH_Ip.js +0 -1
  360. package/dist/interface/assets/CuiAssistantConversation-B_eSNMuO.js +0 -5
  361. package/dist/interface/assets/CuiBottomSheet-B7hreGA-.js +0 -1
  362. package/dist/interface/assets/CuiCameraRecordings-CztUs6YM.js +0 -1
  363. package/dist/interface/assets/CuiCameraShares-CVbWZZ_i.js +0 -1
  364. package/dist/interface/assets/CuiCameraTable-BmsSlihU.js +0 -1
  365. package/dist/interface/assets/CuiLightControl-u_yM0oyh.js +0 -1
  366. package/dist/interface/assets/CuiPluginCard-Bib3KXMs.js +0 -2
  367. package/dist/interface/assets/CuiPluginCategoryChip-CKSV5COz.js +0 -1
  368. package/dist/interface/assets/CuiPluginOAuthButton-Cug_uTVq.js +0 -2
  369. package/dist/interface/assets/CuiSchema-ycZ4rNC_.js +0 -1
  370. package/dist/interface/assets/Faces-D6pm4dxq.js +0 -1
  371. package/dist/interface/assets/FirstSteps-DotR0zU_.js +0 -1
  372. package/dist/interface/assets/Floorplan-xxlvYsYV.js +0 -1
  373. package/dist/interface/assets/Metrics-SQdgeJrD.js +0 -9
  374. package/dist/interface/assets/OAuthDeviceFlow-Bx6YBLUX.js +0 -1
  375. package/dist/interface/assets/Plugin-CsT7_OZp.js +0 -1
  376. package/dist/interface/assets/PluginDetail-Bz65OQlN.js +0 -2
  377. package/dist/interface/assets/PluginSearch-CrzD6rwo.js +0 -1
  378. package/dist/interface/assets/PluginSearch-DKSrC539.js +0 -2
  379. package/dist/interface/assets/Plugins-BvuGEkhs.js +0 -1
  380. package/dist/interface/assets/Recordings-6MHDmY05.js +0 -1
  381. package/dist/interface/assets/Sensors-XQLst9D2.js +0 -2
  382. package/dist/interface/assets/SettingsAccount-BwC-JLu1.js +0 -1
  383. package/dist/interface/assets/SettingsAccount-D8txIS7w.js +0 -1
  384. package/dist/interface/assets/SettingsAppearance-D1PEIzvU.js +0 -1
  385. package/dist/interface/assets/SettingsAssistant-BpTwRGXe.css +0 -1
  386. package/dist/interface/assets/SettingsAssistant-C_9kjVnu.js +0 -1
  387. package/dist/interface/assets/SettingsMqtt-4tFIdfzL.js +0 -1
  388. package/dist/interface/assets/SettingsNotifications-DhXKEfw0.js +0 -1
  389. package/dist/interface/assets/SettingsRecordings-BqRtaATr.js +0 -1
  390. package/dist/interface/assets/SettingsRemote-9YXNd_d3.js +0 -2
  391. package/dist/interface/assets/SettingsSystem-CwlTgN12.js +0 -2
  392. package/dist/interface/assets/SettingsUsers-DOUvMVjf.js +0 -1
  393. package/dist/interface/assets/Training-DMNjB3uX.css +0 -1
  394. package/dist/interface/assets/Training-DQP1EUdI.js +0 -1
  395. package/dist/interface/assets/VirtualSensorCreate-VIHqPQuq.js +0 -1
  396. package/dist/interface/assets/Workers-CJXGSHP0.js +0 -2
  397. package/dist/interface/assets/api-0KzHya6g.js +0 -4
  398. package/dist/interface/assets/api-C85p0Dk3.css +0 -2
  399. package/dist/interface/assets/automations-Bx7_-5ll.js +0 -1
  400. package/dist/interface/assets/cameraSources-B5dOcB7w.js +0 -1
  401. package/dist/interface/assets/cloudHandoff-DzrB62Ot.js +0 -1
  402. package/dist/interface/assets/main-BREBoPYq.js +0 -3
  403. package/dist/interface/assets/mqtt-DEt78fr7.js +0 -1
  404. package/dist/interface/assets/plugins-IMJg5aI8.js +0 -1
  405. package/dist/interface/assets/rooms-Dt3X1UEj.js +0 -1
  406. package/dist/interface/assets/sensorIcons-Dwg45YYo.js +0 -1
  407. package/dist/interface/assets/types-B5ZroTch.js +0 -1
  408. package/dist/interface/assets/types-BZz-3rol.js +0 -1
  409. package/dist/interface/assets/ungrouped-CH2Ug0hy.js +0 -1
  410. package/dist/interface/assets/vendor-zod-BMOt_yT8.js +0 -109
@@ -3,106 +3,106 @@ import { G as t, H as n, I as r, Jt as i, Wt as a, Y as o, _t as s, d as c, f as
3
3
  import { t as ne } from "./tooltip-X5MY9FoG.js";
4
4
  import { t as T } from "./chevron-down-CN3LNAsG.js";
5
5
  import { t as re } from "./tag-Bko2QYOK.js";
6
- import { Ai as E, B as D, Di as O, Dr as ie, Fn as ae, Fr as k, Ft as oe, H as A, K as se, Lr as j, Nt as ce, Or as M, Pr as le, Pt as N, R as P, Sn as ue, V as F, _a as de, bi as fe, c as pe, d as I, en as me, ft as L, hr as he, it as ge, ki as R, m as _e, mr as ve, oa as z, qi as B, si as ye, z as be } from "./api-C0pVlzsW.js";
7
- import { S as V, _ as xe, b as Se, i as Ce, w as we } from "./intercomService-Dwd0bhSN.js";
8
- import { n as Te } from "./vue-i18n-BBObX4QY.js";
9
- import { t as Ee } from "./button-DJDZxmKj.js";
10
- import { n as De, t as Oe } from "./inputicon-BPVltPdr.js";
11
- import { t as ke } from "./inputtext-vdcrNX6K.js";
12
- import { a as Ae } from "./datepicker-DpDmhDeD.js";
13
- import { t as je } from "./close-C_ajB9j7.js";
14
- import { t as Me } from "./progressbar-C2663Zd7.js";
15
- import { t as Ne } from "./ring-resize-11TaovpK.js";
16
- import { t as H } from "./search-DMJuYUDF.js";
17
- import { n as Pe, t as Fe } from "./cloud-check-gKe6M70h.js";
18
- import { t as Ie } from "./trash-can-outline-XdMf3dMc.js";
19
- import { t as Le } from "./back-filled-B-jI6Dqb.js";
20
- import { t as Re } from "./help-circle-outline-Du1jH6xY.js";
21
- import { t as ze } from "./settings-DkoB1zyf.js";
6
+ import { B as E, Dr as D, Dt as O, Et as ie, Ii as k, J as A, Kt as j, R as M, Tn as ae, Tr as N, Tt as oe, V as P, W as se, Xr as F, Yi as I, _r as L, ar as ce, c as le, d as ue, gi as de, ir as fe, li as R, m as pe, mt as me, oa as z, ot as he, pn as ge, vi as B, vr as V, wr as _e, yi as H, z as ve } from "./api-JPS8NpNG.js";
7
+ import { S as U, _ as ye, b as be, i as xe, w as Se } from "./intercomService-Dwd0bhSN.js";
8
+ import { n as Ce } from "./vue-i18n-BBObX4QY.js";
9
+ import { t as we } from "./button-DJDZxmKj.js";
10
+ import { n as Te, t as Ee } from "./inputicon-BPVltPdr.js";
11
+ import { t as De } from "./inputtext-vdcrNX6K.js";
12
+ import { t as Oe } from "./checkbox-D012nd17.js";
13
+ import { t as ke } from "./close-C_ajB9j7.js";
14
+ import { t as Ae } from "./progressbar-C2663Zd7.js";
15
+ import { t as je } from "./ring-resize-11TaovpK.js";
16
+ import { t as W } from "./search-DMJuYUDF.js";
17
+ import { n as Me, t as Ne } from "./cloud-check-gKe6M70h.js";
18
+ import { t as Pe } from "./trash-can-outline-XdMf3dMc.js";
19
+ import { t as Fe } from "./back-filled-B-jI6Dqb.js";
20
+ import { t as Ie } from "./help-circle-outline-Du1jH6xY.js";
21
+ import { t as Le } from "./settings-DkoB1zyf.js";
22
22
  //#region ~icons/mdi/cloud-check-outline
23
- var Be = {
23
+ var Re = {
24
24
  viewBox: "0 0 24 24",
25
25
  width: "1.2em",
26
26
  height: "1.2em"
27
27
  };
28
- function Ve(e, t) {
29
- return n(), m("svg", Be, [...t[0] ||= [v("path", {
28
+ function ze(e, t) {
29
+ return n(), m("svg", Re, [...t[0] ||= [v("path", {
30
30
  fill: "currentColor",
31
31
  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"
32
32
  }, null, -1)]]);
33
33
  }
34
- var He = s({
34
+ var Be = s({
35
35
  name: "mdi-cloud-check-outline",
36
- render: Ve
37
- }), Ue = {
36
+ render: ze
37
+ }), Ve = {
38
38
  viewBox: "0 0 24 24",
39
39
  width: "1.2em",
40
40
  height: "1.2em"
41
41
  };
42
- function U(e, t) {
43
- return n(), m("svg", Ue, [...t[0] ||= [v("path", {
42
+ function G(e, t) {
43
+ return n(), m("svg", Ve, [...t[0] ||= [v("path", {
44
44
  fill: "currentColor",
45
45
  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"
46
46
  }, null, -1)]]);
47
47
  }
48
- var We = s({
48
+ var He = s({
49
49
  name: "mdi-cloud-upload-outline",
50
- render: U
51
- }), W = 200;
52
- async function G(e = {}, { signal: t } = {}) {
53
- return (await z.get("/training/candidates", {
50
+ render: G
51
+ }), K = 200;
52
+ async function q(e = {}, { signal: t } = {}) {
53
+ return (await I.get("/training/candidates", {
54
54
  params: e,
55
55
  signal: t
56
56
  })).data;
57
57
  }
58
- async function Ge(e, t) {
59
- return (await z.patch(`/training/candidates/${e}`, t)).data;
58
+ async function Ue(e, t) {
59
+ return (await I.patch(`/training/candidates/${e}`, t)).data;
60
60
  }
61
- async function K(e) {
62
- await z.delete(`/training/candidates/${e}`);
61
+ async function J(e) {
62
+ await I.delete(`/training/candidates/${e}`);
63
63
  }
64
- async function q(e) {
64
+ async function Y(e) {
65
65
  let t = 0;
66
- for (let n = 0; n < e.length; n += W) {
67
- let r = await z.post("/training/candidates/submit", { ids: e.slice(n, n + W) });
66
+ for (let n = 0; n < e.length; n += K) {
67
+ let r = await I.post("/training/candidates/submit", { ids: e.slice(n, n + K) });
68
68
  t += r.data.queued;
69
69
  }
70
70
  return { queued: t };
71
71
  }
72
- async function J({ cursor: e, signal: t } = {}) {
73
- return (await z.get("/training/submissions", {
72
+ async function X({ cursor: e, signal: t } = {}) {
73
+ return (await I.get("/training/submissions", {
74
74
  params: e ? { cursor: e } : void 0,
75
75
  signal: t
76
76
  })).data;
77
77
  }
78
- async function Y(e) {
79
- await z.delete(`/training/submissions/${e}`);
78
+ async function Z(e) {
79
+ await I.delete(`/training/submissions/${e}`);
80
80
  }
81
- async function X({ signal: e } = {}) {
82
- return (await z.get("/training/settings", { signal: e })).data;
81
+ async function Q({ signal: e } = {}) {
82
+ return (await I.get("/training/settings", { signal: e })).data;
83
83
  }
84
- async function Ke(e) {
85
- return (await z.patch("/training/settings", e)).data;
84
+ async function We(e) {
85
+ return (await I.patch("/training/settings", e)).data;
86
86
  }
87
- var qe = class {
88
- queryClient = B();
87
+ var Ge = class {
88
+ queryClient = k();
89
89
  getCandidatesQuery() {
90
- return O({
90
+ return de({
91
91
  queryKey: ["training-candidates"],
92
- queryFn: ({ signal: e }) => G({}, { signal: e }),
92
+ queryFn: ({ signal: e }) => q({}, { signal: e }),
93
93
  staleTime: 5e3
94
94
  });
95
95
  }
96
96
  getSettingsQuery() {
97
- return O({
97
+ return de({
98
98
  queryKey: ["training-settings"],
99
- queryFn: ({ signal: e }) => X({ signal: e }),
99
+ queryFn: ({ signal: e }) => Q({ signal: e }),
100
100
  staleTime: 3e4
101
101
  });
102
102
  }
103
103
  patchCandidateMutation() {
104
- return E({
105
- mutationFn: ({ id: e, patch: t }) => Ge(e, t),
104
+ return H({
105
+ mutationFn: ({ id: e, patch: t }) => Ue(e, t),
106
106
  onSuccess: async () => {
107
107
  await this.queryClient.refetchQueries({
108
108
  queryKey: ["training-candidates"],
@@ -112,8 +112,8 @@ var qe = class {
112
112
  });
113
113
  }
114
114
  deleteCandidateMutation() {
115
- return E({
116
- mutationFn: K,
115
+ return H({
116
+ mutationFn: J,
117
117
  onSuccess: async () => {
118
118
  await this.queryClient.refetchQueries({
119
119
  queryKey: ["training-candidates"],
@@ -123,11 +123,11 @@ var qe = class {
123
123
  });
124
124
  }
125
125
  deleteSubmissionMutation() {
126
- return E({ mutationFn: Y });
126
+ return H({ mutationFn: Z });
127
127
  }
128
128
  submitCandidatesMutation() {
129
- return E({
130
- mutationFn: q,
129
+ return H({
130
+ mutationFn: Y,
131
131
  onSuccess: async () => {
132
132
  await this.queryClient.refetchQueries({
133
133
  queryKey: ["training-candidates"],
@@ -137,8 +137,8 @@ var qe = class {
137
137
  });
138
138
  }
139
139
  patchSettingsMutation() {
140
- return E({
141
- mutationFn: Ke,
140
+ return H({
141
+ mutationFn: We,
142
142
  onSuccess: async () => {
143
143
  await this.queryClient.refetchQueries({
144
144
  queryKey: ["training-settings"],
@@ -147,17 +147,17 @@ var qe = class {
147
147
  }
148
148
  });
149
149
  }
150
- }, Je = [
150
+ }, Ke = [
151
151
  "person",
152
152
  "vehicle",
153
153
  "animal",
154
154
  "package",
155
155
  "face",
156
156
  "license_plate"
157
- ], Ye = { desktop: {
157
+ ], qe = { desktop: {
158
158
  maxWidth: "1280px",
159
159
  width: "85vw"
160
- } }, Xe = { class: "flex items-center justify-between gap-2 text-sm" }, Ze = { class: "min-w-0 flex items-center gap-2" }, Qe = { class: "font-medium truncate" }, $e = { class: "text-muted shrink-0" }, et = { class: "text-muted tabular-nums shrink-0" }, Z = ["data-stage-zoom"], tt = ["src"], nt = [
160
+ } }, Je = { class: "flex items-center justify-between gap-2 text-sm" }, Ye = { class: "min-w-0 flex items-center gap-2" }, Xe = { class: "font-medium truncate" }, Ze = { class: "text-muted shrink-0" }, Qe = { class: "text-muted tabular-nums shrink-0" }, $e = ["data-stage-zoom"], et = ["src"], tt = [
161
161
  "x",
162
162
  "y",
163
163
  "width",
@@ -167,53 +167,53 @@ var qe = class {
167
167
  "fill-opacity",
168
168
  "stroke-width",
169
169
  "onPointerdown"
170
- ], rt = ["onPointerdown"], it = ["cx", "cy"], at = [
170
+ ], nt = ["onPointerdown"], rt = ["cx", "cy"], it = [
171
171
  "cx",
172
172
  "cy",
173
173
  "fill"
174
- ], ot = [
174
+ ], at = [
175
175
  "x",
176
176
  "y",
177
177
  "width",
178
178
  "height",
179
179
  "stroke",
180
180
  "fill"
181
- ], st = ["data-box-label", "onClick"], ct = { class: "bbox-label-text" }, lt = {
181
+ ], ot = ["data-box-label", "onPointerdown"], st = { class: "bbox-label-text" }, ct = {
182
182
  key: 0,
183
183
  class: "bbox-label-confidence"
184
- }, ut = {
184
+ }, lt = {
185
185
  key: 1,
186
186
  class: "bbox-label-confidence"
187
- }, dt = ["src"], ft = { class: "absolute inset-0 w-full h-full" }, pt = [
187
+ }, ut = ["src"], dt = { class: "absolute inset-0 w-full h-full" }, ft = [
188
188
  "x",
189
189
  "y",
190
190
  "width",
191
191
  "height",
192
192
  "stroke",
193
193
  "fill"
194
- ], mt = [
194
+ ], pt = [
195
195
  "x",
196
196
  "y",
197
197
  "width",
198
198
  "height",
199
199
  "stroke",
200
200
  "fill"
201
- ], ht = {
201
+ ], mt = {
202
202
  key: 2,
203
203
  class: "absolute left-2 top-1/2 -translate-y-1/2 z-[5] dark-mode"
204
- }, gt = {
204
+ }, ht = {
205
205
  key: 3,
206
206
  class: "absolute right-2 top-1/2 -translate-y-1/2 z-[5] dark-mode"
207
- }, _t = {
207
+ }, gt = {
208
208
  key: 0,
209
209
  class: "flex items-center justify-center gap-2"
210
- }, vt = {
210
+ }, _t = {
211
211
  class: "text-muted text-sm",
212
212
  for: "plate-text"
213
- }, yt = { class: "flex items-center justify-center gap-1.5" }, bt = { class: "text-muted text-sm text-center" }, xt = {
213
+ }, vt = { class: "flex items-center justify-center gap-1.5" }, yt = { class: "text-muted text-sm text-center" }, bt = {
214
214
  key: 1,
215
215
  class: "grid grid-cols-[auto_1fr] gap-x-3 gap-y-1 justify-center mx-auto text-sm text-muted"
216
- }, St = .01, Ct = .006, wt = 26, Tt = 60, Et = 400, Dt = 110, Ot = 2, kt = 80, At = 50, jt = .003, Mt = /*#__PURE__*/ M(/* @__PURE__ */ x({
216
+ }, xt = .01, St = .006, Ct = 26, wt = 60, Tt = 400, Et = 110, Dt = 2, Ot = 80, kt = 50, At = .003, jt = /*#__PURE__*/ V(/* @__PURE__ */ x({
217
217
  __name: "TrainingBoxEditor",
218
218
  props: {
219
219
  candidates: {},
@@ -224,66 +224,66 @@ var qe = class {
224
224
  onDelete: { type: Function }
225
225
  },
226
226
  setup(r, { expose: s }) {
227
- let u = r, { t: y, te: x } = Te(), ne = [
227
+ let u = r, { t: y, te: x } = Ce(), ne = [
228
228
  "nw",
229
229
  "ne",
230
230
  "sw",
231
231
  "se"
232
- ], T = /* @__PURE__ */ new Map(), E = w(/* @__PURE__ */ new Set()), D = w(/* @__PURE__ */ new Set()), O = Math.max(0, u.candidates.findIndex((e) => e.id === u.startId)), ie = _e(), k = _("rootRef"), A = _("labelMenuRef"), se = _("stageRef"), j = _("frameRef"), ce = _("svgRef"), M = S(u.candidates[O]?.boxes.map((e) => ({ ...e })) ?? []), le = S({
232
+ ], T = /* @__PURE__ */ new Map(), E = w(/* @__PURE__ */ new Set()), D = w(/* @__PURE__ */ new Set()), ie = Math.max(0, u.candidates.findIndex((e) => e.id === u.startId)), k = pe(), A = _("rootRef"), j = _("labelMenuRef"), M = _("stageRef"), N = _("frameRef"), oe = _("svgRef"), P = S(u.candidates[ie]?.boxes.map((e) => ({ ...e })) ?? []), se = S({
233
233
  w: 16,
234
234
  h: 9
235
- }), N = S(null), P = S(null), F = S(-1), de = S(!1), fe = we("(any-pointer: fine)"), I = S(null), me = null, L = S(-1), R = S("person"), z = S(O), { zoom: B, pan: ye, constraining: be, minimapStyle: V, minimapBoxStyle: Ce, onZoomPan: De, onDoubleClick: Oe, onTouchStart: Ae, onTouchEnd: je, reset: Me } = ge(se, j), { height: Ne } = xe(j), H = f(() => u.candidates[z.value]), Pe = f(() => u.candidates.slice(0, z.value + 1).filter((e) => !E.has(e.id)).length), Fe = f(() => u.candidates.filter((e) => !E.has(e.id)).length), Le = f(() => u.candidates.slice(0, z.value).some((e) => !E.has(e.id))), ze = f(() => u.candidates.slice(z.value + 1).some((e) => !E.has(e.id))), Be = f(() => D.has(H.value.id) ? "verified" : H.value.status), Ve = f(() => {
236
- let e = M.value[F.value];
235
+ }), F = S(null), I = S(null), L = S(-1), ue = S(!1), de = Se("(any-pointer: fine)"), R = S(null), me = null, z = S(-1), B = S("person"), V = S(ie), { zoom: _e, pan: H, constraining: ve, minimapStyle: U, minimapBoxStyle: xe, onZoomPan: Te, onDoubleClick: Ee, onTouchStart: Oe, onTouchEnd: ke, reset: Ae } = he(M, N), { height: je } = ye(N), W = f(() => u.candidates[V.value]), Me = f(() => u.candidates.slice(0, V.value + 1).filter((e) => !E.has(e.id)).length), Ne = f(() => u.candidates.filter((e) => !E.has(e.id)).length), Fe = f(() => u.candidates.slice(0, V.value).some((e) => !E.has(e.id))), Le = f(() => u.candidates.slice(V.value + 1).some((e) => !E.has(e.id))), Re = f(() => D.has(W.value.id) ? "verified" : W.value.status), ze = f(() => {
236
+ let e = P.value[L.value];
237
237
  return e?.label === "license_plate" ? e : null;
238
- }), He = f(() => [...Je.map((e) => ({
238
+ }), Be = f(() => [...Ke.map((e) => ({
239
239
  key: e,
240
- label: We(e),
241
- icon: ue(e).icon,
242
- iconProps: { style: { color: ue(e).color } },
243
- active: M.value[L.value]?.label === e,
240
+ label: He(e),
241
+ icon: ge(e).icon,
242
+ iconProps: { style: { color: ge(e).color } },
243
+ active: P.value[z.value]?.label === e,
244
244
  onClick: () => Vt(e)
245
245
  })), {
246
246
  key: "remove",
247
247
  label: y("components.training_editor.remove_box"),
248
- icon: Ie,
248
+ icon: Pe,
249
249
  iconProps: { class: "text-red-500" },
250
250
  labelProps: { class: "text-red-500" },
251
- onClick: () => Ut(L.value)
252
- }]), Ue = f(() => (e) => {
253
- let t = Ne.value || 360;
254
- return e.y * t >= wt ? "above" : t - (e.y + e.height) * t >= wt ? "below" : "inside";
255
- }), U = f(() => (e) => e.x > .7);
256
- function We(e) {
251
+ onClick: () => Ut(z.value)
252
+ }]), Ve = f(() => (e) => {
253
+ let t = je.value || 360;
254
+ return e.y * t >= Ct ? "above" : t - (e.y + e.height) * t >= Ct ? "below" : "inside";
255
+ }), G = f(() => (e) => e.x > .7);
256
+ function He(e) {
257
257
  let t = `components.training_editor.labels.${e}`;
258
258
  return x(t) ? y(t) : e;
259
259
  }
260
- function W(e) {
261
- return ue(e);
260
+ function K(e) {
261
+ return ge(e);
262
262
  }
263
- function G(e) {
263
+ function q(e) {
264
264
  return `${e * 100}%`;
265
265
  }
266
- function Ge(e, t) {
267
- return G(t === "nw" || t === "sw" ? e.x : e.x + e.width);
266
+ function Ue(e, t) {
267
+ return q(t === "nw" || t === "sw" ? e.x : e.x + e.width);
268
268
  }
269
- function K(e, t) {
270
- return G(t === "nw" || t === "ne" ? e.y : e.y + e.height);
269
+ function J(e, t) {
270
+ return q(t === "nw" || t === "ne" ? e.y : e.y + e.height);
271
271
  }
272
- function q(e) {
273
- let t = { backgroundColor: W(e.label).color };
274
- U.value(e) ? t.right = G(1 - e.x - e.width) : t.left = G(e.x);
275
- let n = Ue.value(e);
276
- return t.top = n === "above" ? G(e.y) : n === "below" ? G(e.y + e.height) : `calc(${G(e.y)} + 2px)`, t;
272
+ function Y(e) {
273
+ let t = { backgroundColor: K(e.label).color };
274
+ G.value(e) ? t.right = q(1 - e.x - e.width) : t.left = q(e.x);
275
+ let n = Ve.value(e);
276
+ return t.top = n === "above" ? q(e.y) : n === "below" ? q(e.y + e.height) : `calc(${q(e.y)} + 2px)`, t;
277
277
  }
278
- function J(e) {
278
+ function X(e) {
279
279
  let t = e.target;
280
- t.naturalWidth && t.naturalHeight && (le.value = {
280
+ t.naturalWidth && t.naturalHeight && (se.value = {
281
281
  w: t.naturalWidth,
282
282
  h: t.naturalHeight
283
283
  });
284
284
  }
285
- function Y(e) {
286
- let t = ce.value?.getBoundingClientRect();
285
+ function Z(e) {
286
+ let t = oe.value?.getBoundingClientRect();
287
287
  return !t || t.width === 0 || t.height === 0 ? {
288
288
  x: 0,
289
289
  y: 0
@@ -292,22 +292,22 @@ var qe = class {
292
292
  y: Math.min(1, Math.max(0, (e.clientY - t.top) / t.height))
293
293
  };
294
294
  }
295
- function X(e, t) {
296
- N.value = {
295
+ function Q(e, t) {
296
+ F.value = {
297
297
  ...t,
298
298
  moved: !1
299
- }, ce.value?.setPointerCapture(e.pointerId);
299
+ }, oe.value?.setPointerCapture(e.pointerId);
300
300
  }
301
- function Ke(e) {
302
- if (B.value > 1 || !e.isPrimary) return;
303
- let { x: t, y: n } = Y(e);
304
- X(e, {
301
+ function We(e) {
302
+ if (j.value?.hide(), _e.value > 1 || !e.isPrimary) return;
303
+ let { x: t, y: n } = Z(e);
304
+ Q(e, {
305
305
  mode: "draw",
306
306
  index: -1,
307
307
  startX: t,
308
308
  startY: n,
309
309
  origin: {
310
- label: R.value,
310
+ label: B.value,
311
311
  confidence: 1,
312
312
  x: t,
313
313
  y: n,
@@ -316,41 +316,42 @@ var qe = class {
316
316
  }
317
317
  });
318
318
  }
319
- function qe(e, t) {
319
+ function Ge(e, t) {
320
320
  if (!t.isPrimary) return;
321
- let { x: n, y: r } = Y(t);
322
- F.value = e, X(t, {
321
+ let { x: n, y: r } = Z(t);
322
+ L.value = e, Q(t, {
323
323
  mode: "move",
324
324
  index: e,
325
325
  startX: n,
326
326
  startY: r,
327
- origin: { ...M.value[e] }
327
+ origin: { ...P.value[e] }
328
328
  });
329
329
  }
330
- function Ye(e, t, n) {
330
+ function qe(e, t, n) {
331
331
  if (!n.isPrimary) return;
332
- let { x: r, y: i } = Y(n);
333
- F.value = e, X(n, {
332
+ j.value?.hide();
333
+ let { x: r, y: i } = Z(n);
334
+ L.value = e, Q(n, {
334
335
  mode: "resize",
335
336
  index: e,
336
337
  corner: t,
337
338
  startX: r,
338
339
  startY: i,
339
- origin: { ...M.value[e] }
340
+ origin: { ...P.value[e] }
340
341
  });
341
342
  }
342
- function Mt(e) {
343
- e.touches.length > 1 && N.value && (N.value = null, P.value = null, I.value = null), Ae(e);
343
+ function jt(e) {
344
+ e.touches.length > 1 && F.value && (F.value = null, I.value = null, R.value = null), Oe(e);
344
345
  }
345
- function Q(e) {
346
- let t = N.value;
346
+ function Mt(e) {
347
+ let t = F.value;
347
348
  if (!t) return;
348
- let { x: n, y: r } = Y(e);
349
- if (Math.hypot(n - t.startX, r - t.startY) > Ct && (t.moved = !0), e.pointerType === "touch" && t.moved && (Pt(t) ? Ft(e) : I.value = null), t.mode === "draw") {
349
+ let { x: n, y: r } = Z(e);
350
+ if (Math.hypot(n - t.startX, r - t.startY) > St && (t.moved = !0), e.pointerType === "touch" && t.moved && (Pt(t) ? Ft(e) : R.value = null), t.mode === "draw") {
350
351
  if (t.moved) {
351
352
  let e = zt(t.startX, t.startY, n, r);
352
- P.value = e.width >= St && e.height >= St ? {
353
- label: R.value,
353
+ I.value = e.width >= xt && e.height >= xt ? {
354
+ label: B.value,
354
355
  confidence: 1,
355
356
  ...e
356
357
  } : null;
@@ -359,50 +360,50 @@ var qe = class {
359
360
  }
360
361
  if (t.mode === "move") {
361
362
  if (!t.moved) return;
362
- let e = M.value[t.index];
363
+ let e = P.value[t.index];
363
364
  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)));
364
365
  return;
365
366
  }
366
367
  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;
367
- Object.assign(M.value[t.index], zt(i, a, n, r));
368
+ Object.assign(P.value[t.index], zt(i, a, n, r));
368
369
  }
369
370
  function Nt(e) {
370
- let t = N.value;
371
- if (N.value = null, I.value = null, t) {
371
+ let t = F.value;
372
+ if (F.value = null, R.value = null, t) {
372
373
  if (t.mode === "draw") {
373
- P.value && P.value.width >= St && P.value.height >= St ? (M.value.push({ ...P.value }), F.value = M.value.length - 1) : t.moved || (F.value = -1), P.value = null;
374
+ I.value && I.value.width >= xt && I.value.height >= xt ? (P.value.push({ ...I.value }), L.value = P.value.length - 1) : t.moved || (L.value = -1), I.value = null;
374
375
  return;
375
376
  }
376
377
  t.mode === "move" && !t.moved && Bt(t.index, e);
377
378
  }
378
379
  }
379
380
  function Pt(e) {
380
- let t = ce.value?.getBoundingClientRect();
381
+ let t = oe.value?.getBoundingClientRect();
381
382
  if (!t || t.width === 0) return !1;
382
- let n = e.mode === "draw" ? P.value : M.value[e.index];
383
- return !n || Math.max(n.width * t.width, n.height * t.height) <= At;
383
+ let n = e.mode === "draw" ? I.value : P.value[e.index];
384
+ return !n || Math.max(n.width * t.width, n.height * t.height) <= kt;
384
385
  }
385
386
  function Ft(e) {
386
- let t = j.value?.getBoundingClientRect(), n = se.value?.getBoundingClientRect();
387
+ let t = N.value?.getBoundingClientRect(), n = M.value?.getBoundingClientRect();
387
388
  if (!t || !n || t.width === 0 || t.height === 0) {
388
- I.value = null;
389
+ R.value = null;
389
390
  return;
390
391
  }
391
- let r = Dt / 2, i = Math.min(Math.max(e.clientX - n.left, 59), n.width - r - 4), a = e.clientY - n.top - kt;
392
- a - r < 4 && (a = e.clientY - n.top + kt), I.value = {
392
+ let r = Et / 2, i = Math.min(Math.max(e.clientX - n.left, 59), n.width - r - 4), a = e.clientY - n.top - Ot;
393
+ a - r < 4 && (a = e.clientY - n.top + Ot), R.value = {
393
394
  x: i,
394
395
  y: a,
395
396
  frameW: t.width,
396
397
  frameH: t.height,
397
- tx: r - (e.clientX - t.left) * Ot,
398
- ty: r - (e.clientY - t.top) * Ot
398
+ tx: r - (e.clientX - t.left) * Dt,
399
+ ty: r - (e.clientY - t.top) * Dt
399
400
  };
400
401
  }
401
402
  function It(e) {
402
403
  let t = e instanceof HTMLElement || e instanceof SVGElement ? e : null;
403
- if (!t || se.value?.contains(t) || t.closest(".p-dialog-header") || t.closest("button")) return !1;
404
- let n = k.value?.closest(".p-dialog-content")?.lastElementChild;
405
- return !(n && n !== k.value && n.contains(t));
404
+ if (!t || M.value?.contains(t) || t.closest(".p-dialog-header") || t.closest("button")) return !1;
405
+ let n = A.value?.closest(".p-dialog-content")?.lastElementChild;
406
+ return !(n && n !== A.value && n.contains(t));
406
407
  }
407
408
  function Lt(e) {
408
409
  if (me = null, e.touches.length !== 1 || !It(e.target)) return;
@@ -417,7 +418,7 @@ var qe = class {
417
418
  let t = me;
418
419
  if (me = null, !t || e.changedTouches.length !== 1) return;
419
420
  let n = e.changedTouches[0], r = n.clientX - t.x, i = n.clientY - t.y;
420
- Date.now() - t.at <= Et && Math.abs(r) >= Tt && Math.abs(r) > 2 * Math.abs(i) && $(r < 0 ? 1 : -1);
421
+ Date.now() - t.at <= Tt && Math.abs(r) >= wt && Math.abs(r) > 2 * Math.abs(i) && $(r < 0 ? 1 : -1);
421
422
  }
422
423
  function zt(e, t, n, r) {
423
424
  return {
@@ -428,203 +429,202 @@ var qe = class {
428
429
  };
429
430
  }
430
431
  function Bt(e, t) {
431
- L.value = e;
432
- let n = j.value?.querySelector(`[data-box-label="${e}"]`);
433
- A.value?.toggleMenu(t, n ?? void 0);
432
+ z.value = e;
433
+ let n = N.value?.querySelector(`[data-box-label="${e}"]`);
434
+ j.value?.toggleMenu(t, n ?? void 0);
434
435
  }
435
436
  function Vt(e) {
436
- let t = M.value[L.value];
437
- t && (t.label = e, t.confidence = 1, R.value = e);
437
+ let t = P.value[z.value];
438
+ t && (t.label = e, t.confidence = 1, B.value = e);
438
439
  }
439
440
  function Ht(e) {
440
- let t = M.value[F.value];
441
+ let t = P.value[L.value];
441
442
  t && (t.text = (e ?? "").toUpperCase().replace(/[^A-Z0-9ÄÖÜ\- ]/g, "") || void 0);
442
443
  }
443
444
  function Ut(e) {
444
- e < 0 || e >= M.value.length || (M.value.splice(e, 1), F.value = -1);
445
+ e < 0 || e >= P.value.length || (P.value.splice(e, 1), L.value = -1);
445
446
  }
446
447
  function Wt(e, t = !0) {
447
- e < 0 || e >= u.candidates.length || (t && T.set(H.value.id, M.value.map((e) => ({ ...e }))), z.value = e, M.value = (T.get(H.value.id) ?? H.value.boxes).map((e) => ({ ...e })), P.value = null, N.value = null, I.value = null, F.value = -1, L.value = -1, A.value?.hide(), Me());
448
+ e < 0 || e >= u.candidates.length || (t && T.set(W.value.id, P.value.map((e) => ({ ...e }))), V.value = e, P.value = (T.get(W.value.id) ?? W.value.boxes).map((e) => ({ ...e })), I.value = null, F.value = null, R.value = null, L.value = -1, z.value = -1, j.value?.hide(), Ae());
448
449
  }
449
450
  async function Gt(e) {
450
- return await u.onSave(H.value.id, M.value.map((e) => ({ ...e })), e), T.set(H.value.id, M.value.map((e) => ({ ...e }))), e === "verified" && D.add(H.value.id), $(1, !1) ? null : void 0;
451
+ return await u.onSave(W.value.id, P.value.map((e) => ({ ...e })), e), T.set(W.value.id, P.value.map((e) => ({ ...e }))), e === "verified" && D.add(W.value.id), $(1, !1) ? null : void 0;
451
452
  }
452
453
  function $(e, t = !0) {
453
- let n = z.value + e;
454
+ let n = V.value + e;
454
455
  for (; n >= 0 && n < u.candidates.length && E.has(u.candidates[n].id);) n += e;
455
456
  return n < 0 || n >= u.candidates.length ? !1 : (Wt(n, t), !0);
456
457
  }
457
458
  async function Kt() {
458
- let e = H.value.id;
459
+ let e = W.value.id;
459
460
  return await u.onDelete(e), T.delete(e), E.add(e), $(1, !1) || $(-1, !1) ? null : void 0;
460
461
  }
461
462
  function qt() {
462
463
  for (let e of [1, -1]) {
463
- let t = z.value + e;
464
+ let t = V.value + e;
464
465
  for (; t >= 0 && t < u.candidates.length && E.has(u.candidates[t].id);) t += e;
465
466
  let n = u.candidates[t];
466
467
  n && (new Image().src = u.imageUrl(n.id));
467
468
  }
468
469
  }
469
470
  function Jt(e) {
470
- M.value.length && (F.value = (F.value + e + M.value.length) % M.value.length);
471
+ P.value.length && (L.value = (L.value + e + P.value.length) % P.value.length);
471
472
  }
472
473
  function Yt(e) {
473
- let t = M.value[F.value];
474
+ let t = P.value[L.value];
474
475
  if (!t) return;
475
- let n = Je, r = n[(n.indexOf(t.label) + e + n.length) % n.length];
476
- t.label = r, t.confidence = 1, R.value = r;
476
+ let n = Ke, r = n[(n.indexOf(t.label) + e + n.length) % n.length];
477
+ t.label = r, t.confidence = 1, B.value = r;
477
478
  }
478
479
  function Xt(e, t, n) {
479
- let r = M.value[F.value];
480
- r && (n ? (r.width = Math.min(1 - r.x, Math.max(St, r.width + e)), r.height = Math.min(1 - r.y, Math.max(St, 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))));
480
+ let r = P.value[L.value];
481
+ 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))));
481
482
  }
482
- return te(z, qt, { immediate: !0 }), Se(window, "keydown", (e) => {
483
+ return te(V, qt, { immediate: !0 }), be(window, "keydown", (e) => {
483
484
  if (e.target?.closest?.("input, textarea")) return;
484
485
  let t = {
485
486
  ArrowLeft: [-.003, 0],
486
- ArrowRight: [jt, 0],
487
+ ArrowRight: [At, 0],
487
488
  ArrowUp: [0, -.003],
488
- ArrowDown: [0, jt]
489
+ ArrowDown: [0, At]
489
490
  };
490
491
  if (t[e.key]) {
491
- if (F.value >= 0) {
492
+ if (L.value >= 0) {
492
493
  e.preventDefault();
493
494
  let [n, r] = t[e.key];
494
495
  Xt(n, r, e.shiftKey);
495
496
  } else !e.repeat && e.key === "ArrowLeft" ? $(-1) : !e.repeat && e.key === "ArrowRight" && $(1);
496
497
  return;
497
498
  }
498
- e.repeat || (e.key === "Tab" ? (e.preventDefault(), Jt(e.shiftKey ? -1 : 1)) : e.key === "Escape" ? (F.value = -1, A.value?.hide()) : (e.key === "Delete" || e.key === "Backspace") && F.value >= 0 ? Ut(F.value) : e.key === "s" || e.key === "S" ? Yt(e.shiftKey ? -1 : 1) : e.key === " " && !A.value?.isOpen && (e.preventDefault(), Gt("verified")));
499
- }), Se(() => k.value?.closest(".p-dialog-content") ?? void 0, "touchstart", Lt, { passive: !0 }), Se(() => k.value?.closest(".p-dialog-content") ?? void 0, "touchend", Rt, { passive: !0 }), s({
499
+ e.repeat || (e.key === "Tab" ? (e.preventDefault(), Jt(e.shiftKey ? -1 : 1)) : e.key === "Escape" ? (L.value = -1, j.value?.hide()) : (e.key === "Delete" || e.key === "Backspace") && L.value >= 0 ? Ut(L.value) : e.key === "s" || e.key === "S" ? Yt(e.shiftKey ? -1 : 1) : e.key === " " && !j.value?.isOpen && (e.preventDefault(), Gt("verified")));
500
+ }), be(() => A.value?.closest(".p-dialog-content") ?? void 0, "touchstart", Lt, { passive: !0 }), be(() => A.value?.closest(".p-dialog-content") ?? void 0, "touchend", Rt, { passive: !0 }), s({
500
501
  onConfirm: () => Gt("verified"),
501
502
  onCancel: () => Kt()
502
503
  }), (s, u) => {
503
- let f = re, te = ve, _ = Ee, y = he, x = ke, S = Re;
504
+ let f = re, te = fe, _ = we, y = ce, x = De, S = Ie;
504
505
  return n(), m("div", {
505
506
  ref_key: "rootRef",
506
- ref: k,
507
+ ref: A,
507
508
  class: "flex flex-col gap-3 h-full min-h-0"
508
509
  }, [
509
- v("div", Xe, [v("div", Ze, [
510
+ v("div", Je, [v("div", Ye, [
510
511
  C(f, {
511
- severity: d(Be) === "verified" ? "success" : "info",
512
- value: s.$t(`views.training.status_${d(Be)}`),
512
+ severity: d(Re) === "verified" ? "success" : "info",
513
+ value: s.$t(`views.training.status_${d(Re)}`),
513
514
  class: "shrink-0"
514
515
  }, null, 8, ["severity", "value"]),
515
- v("span", Qe, i(r.cameraName(d(H).cameraId)), 1),
516
- v("span", $e, i(d(pe)(d(H).createdAt)), 1)
517
- ]), v("span", et, i(d(Pe)) + " / " + i(d(Fe)), 1)]),
516
+ v("span", Xe, i(r.cameraName(d(W).cameraId)), 1),
517
+ v("span", Ze, i(d(le)(d(W).createdAt)), 1)
518
+ ]), v("span", Qe, i(d(Me)) + " / " + i(d(Ne)), 1)]),
518
519
  v("div", {
519
520
  ref_key: "stageRef",
520
- ref: se,
521
+ ref: M,
521
522
  class: "stage relative w-full bg-black rounded-lg shrink-0 overflow-hidden select-none"
522
523
  }, [
523
- C(d(oe), {
524
- pan: d(ye),
525
- "onUpdate:pan": u[7] ||= (e) => ee(ye) ? ye.value = e : null,
526
- zoom: d(B),
527
- "onUpdate:zoom": u[8] ||= (e) => ee(B) ? B.value = e : null,
528
- "pan-enabled": d(B) > 1 && !d(N),
524
+ C(d(O), {
525
+ pan: d(H),
526
+ "onUpdate:pan": u[6] ||= (e) => ee(H) ? H.value = e : null,
527
+ zoom: d(_e),
528
+ "onUpdate:zoom": u[7] ||= (e) => ee(_e) ? _e.value = e : null,
529
+ "pan-enabled": d(_e) > 1 && !d(F),
529
530
  "enable-control-button": !1,
530
531
  "dbl-click-enabled": !1,
531
532
  "min-zoom": 1,
532
533
  "max-zoom": d(5),
533
- selector: `[data-stage-zoom='${d(ie)}']`,
534
+ selector: `[data-stage-zoom='${d(k)}']`,
534
535
  "zoom-origin": "pointer",
535
- class: a(["absolute inset-0 flex items-center justify-center", { "zoom-constraining": d(be) }]),
536
- onPanned: d(De),
537
- onZoom: d(De),
538
- onDblclick: d(Oe),
539
- onTouchstart: Mt,
540
- onTouchend: d(je)
536
+ class: a(["absolute inset-0 flex items-center justify-center", { "zoom-constraining": d(ve) }]),
537
+ onPanned: d(Te),
538
+ onZoom: d(Te),
539
+ onDblclick: d(Ee),
540
+ onTouchstart: jt,
541
+ onTouchend: d(ke)
541
542
  }, {
542
543
  default: p(() => [v("div", {
543
544
  ref_key: "frameRef",
544
- ref: j,
545
- "data-stage-zoom": d(ie),
545
+ ref: N,
546
+ "data-stage-zoom": d(k),
546
547
  class: "frame relative",
547
548
  style: h({
548
- "--ar-w": d(le).w,
549
- "--ar-h": d(le).h
549
+ "--ar-w": d(se).w,
550
+ "--ar-h": d(se).h
550
551
  })
551
552
  }, [
552
553
  v("img", {
553
- src: r.imageUrl(d(H).id),
554
+ src: r.imageUrl(d(W).id),
554
555
  class: "absolute inset-0 w-full h-full",
555
556
  draggable: "false",
556
- onLoad: J
557
- }, null, 40, tt),
557
+ onLoad: X
558
+ }, null, 40, et),
558
559
  (n(), m("svg", {
559
560
  ref_key: "svgRef",
560
- ref: ce,
561
- class: a(["absolute inset-0 w-full h-full touch-none", d(B) > 1 ? "cursor-grab" : "cursor-crosshair"]),
562
- onPointerdown: Ke,
563
- onPointermove: Q,
561
+ ref: oe,
562
+ class: a(["absolute inset-0 w-full h-full touch-none", d(_e) > 1 ? "cursor-grab" : "cursor-crosshair"]),
563
+ onPointerdown: We,
564
+ onPointermove: Mt,
564
565
  onPointerup: Nt,
565
566
  onPointercancel: Nt
566
- }, [(n(!0), m(g, null, t(d(M), (r, i) => (n(), m("g", { key: i }, [v("rect", {
567
- x: G(r.x),
568
- y: G(r.y),
569
- width: G(r.width),
570
- height: G(r.height),
571
- stroke: W(r.label).color,
572
- fill: W(r.label).color,
573
- "fill-opacity": i === d(F) ? .22 : .12,
574
- "stroke-width": i === d(F) ? 3.5 : 2,
567
+ }, [(n(!0), m(g, null, t(d(P), (r, i) => (n(), m("g", { key: i }, [v("rect", {
568
+ x: q(r.x),
569
+ y: q(r.y),
570
+ width: q(r.width),
571
+ height: q(r.height),
572
+ stroke: K(r.label).color,
573
+ fill: K(r.label).color,
574
+ "fill-opacity": i === d(L) ? .22 : .12,
575
+ "stroke-width": i === d(L) ? 3.5 : 2,
575
576
  "vector-effect": "non-scaling-stroke",
576
577
  class: "cursor-move",
577
- onPointerdown: e((e) => qe(i, e), ["stop"]),
578
+ onPointerdown: e((e) => Ge(i, e), ["stop"]),
578
579
  onTouchstart: u[0] ||= e(() => {}, ["stop"]),
579
580
  onMousedown: u[1] ||= e(() => {}, ["stop"])
580
- }, null, 40, nt), (n(), m(g, null, t(ne, (t) => v("g", {
581
+ }, null, 40, tt), (n(), m(g, null, t(ne, (t) => v("g", {
581
582
  key: t,
582
583
  class: "cursor-nwse-resize",
583
- onPointerdown: e((e) => Ye(i, t, e), ["stop"]),
584
+ onPointerdown: e((e) => qe(i, t, e), ["stop"]),
584
585
  onTouchstart: u[2] ||= e(() => {}, ["stop"]),
585
586
  onMousedown: u[3] ||= e(() => {}, ["stop"])
586
587
  }, [v("circle", {
587
- cx: Ge(r, t),
588
- cy: K(r, t),
588
+ cx: Ue(r, t),
589
+ cy: J(r, t),
589
590
  r: "14",
590
591
  fill: "transparent"
591
- }, null, 8, it), v("circle", {
592
- cx: Ge(r, t),
593
- cy: K(r, t),
592
+ }, null, 8, rt), v("circle", {
593
+ cx: Ue(r, t),
594
+ cy: J(r, t),
594
595
  r: "4.5",
595
- fill: W(r.label).color
596
- }, null, 8, at)], 40, rt)), 64))]))), 128)), d(P) ? (n(), m("rect", {
596
+ fill: K(r.label).color
597
+ }, null, 8, it)], 40, nt)), 64))]))), 128)), d(I) ? (n(), m("rect", {
597
598
  key: 0,
598
- x: G(d(P).x),
599
- y: G(d(P).y),
600
- width: G(d(P).width),
601
- height: G(d(P).height),
602
- stroke: W(d(P).label).color,
603
- fill: W(d(P).label).color,
599
+ x: q(d(I).x),
600
+ y: q(d(I).y),
601
+ width: q(d(I).width),
602
+ height: q(d(I).height),
603
+ stroke: K(d(I).label).color,
604
+ fill: K(d(I).label).color,
604
605
  "fill-opacity": "0.1",
605
606
  "stroke-dasharray": "6 4",
606
607
  "stroke-width": "2",
607
608
  "vector-effect": "non-scaling-stroke"
608
- }, null, 8, ot)) : l("", !0)], 34)),
609
- (n(!0), m(g, null, t(d(M), (t, r) => (n(), m("div", {
609
+ }, null, 8, at)) : l("", !0)], 34)),
610
+ (n(!0), m(g, null, t(d(P), (t, r) => (n(), m("div", {
610
611
  key: `label-${r}`,
611
- class: a(["bbox-label cursor-pointer", {
612
- "label-bottom": d(Ue)(t) === "below",
613
- "label-inside": d(Ue)(t) === "inside",
614
- "label-right": d(U)(t)
612
+ class: a(["bbox-label cursor-move", {
613
+ "label-bottom": d(Ve)(t) === "below",
614
+ "label-inside": d(Ve)(t) === "inside",
615
+ "label-right": d(G)(t)
615
616
  }]),
616
617
  "data-box-label": r,
617
- onPointerdown: u[4] ||= e(() => {}, ["stop"]),
618
- onTouchstart: u[5] ||= e(() => {}, ["stop"]),
619
- onMousedown: u[6] ||= e(() => {}, ["stop"]),
620
- onClick: e((e) => Bt(r, e), ["stop"]),
621
- style: h(q(t))
618
+ onPointerdown: e((e) => Ge(r, e), ["stop"]),
619
+ onTouchstart: u[4] ||= e(() => {}, ["stop"]),
620
+ onMousedown: u[5] ||= e(() => {}, ["stop"]),
621
+ style: h(Y(t))
622
622
  }, [
623
- (n(), c(o(W(t.label).icon), { class: "bbox-label-icon" })),
624
- v("span", ct, i(We(t.label)), 1),
625
- t.text ? (n(), m("span", lt, i(t.text), 1)) : t.confidence < 1 ? (n(), m("span", ut, i(Math.round(t.confidence * 100)) + "%", 1)) : l("", !0)
626
- ], 46, st))), 128))
627
- ], 12, Z)]),
623
+ (n(), c(o(K(t.label).icon), { class: "bbox-label-icon" })),
624
+ v("span", st, i(He(t.label)), 1),
625
+ t.text ? (n(), m("span", ct, i(t.text), 1)) : t.confidence < 1 ? (n(), m("span", lt, i(Math.round(t.confidence * 100)) + "%", 1)) : l("", !0)
626
+ ], 46, ot))), 128))
627
+ ], 12, $e)]),
628
628
  _: 1
629
629
  }, 8, [
630
630
  "pan",
@@ -638,59 +638,59 @@ var qe = class {
638
638
  "onDblclick",
639
639
  "onTouchend"
640
640
  ]),
641
- d(V) ? (n(), m("div", {
641
+ d(U) ? (n(), m("div", {
642
642
  key: 0,
643
643
  class: "zoom-minimap",
644
- style: h(d(Ce) ?? void 0)
644
+ style: h(d(xe) ?? void 0)
645
645
  }, [v("div", {
646
646
  class: "zoom-minimap-viewport",
647
- style: h(d(V))
647
+ style: h(d(U))
648
648
  }, null, 4)], 4)) : l("", !0),
649
- d(I) ? (n(), m("div", {
649
+ d(R) ? (n(), m("div", {
650
650
  key: 1,
651
651
  class: "loupe",
652
652
  style: h({
653
- left: `${d(I).x}px`,
654
- top: `${d(I).y}px`
653
+ left: `${d(R).x}px`,
654
+ top: `${d(R).y}px`
655
655
  })
656
656
  }, [v("div", {
657
657
  class: "loupe-content",
658
658
  style: h({
659
- width: `${d(I).frameW}px`,
660
- height: `${d(I).frameH}px`,
661
- transform: `translate(${d(I).tx}px, ${d(I).ty}px) scale(${Ot})`
659
+ width: `${d(R).frameW}px`,
660
+ height: `${d(R).frameH}px`,
661
+ transform: `translate(${d(R).tx}px, ${d(R).ty}px) scale(${Dt})`
662
662
  })
663
663
  }, [v("img", {
664
- src: r.imageUrl(d(H).id),
664
+ src: r.imageUrl(d(W).id),
665
665
  class: "absolute inset-0 w-full h-full",
666
666
  draggable: "false"
667
- }, null, 8, dt), (n(), m("svg", ft, [(n(!0), m(g, null, t(d(M), (e, t) => (n(), m("rect", {
667
+ }, null, 8, ut), (n(), m("svg", dt, [(n(!0), m(g, null, t(d(P), (e, t) => (n(), m("rect", {
668
668
  key: t,
669
- x: G(e.x),
670
- y: G(e.y),
671
- width: G(e.width),
672
- height: G(e.height),
673
- stroke: W(e.label).color,
674
- fill: W(e.label).color,
669
+ x: q(e.x),
670
+ y: q(e.y),
671
+ width: q(e.width),
672
+ height: q(e.height),
673
+ stroke: K(e.label).color,
674
+ fill: K(e.label).color,
675
675
  "fill-opacity": "0.1",
676
676
  "stroke-width": "1.5"
677
- }, null, 8, pt))), 128)), d(P) ? (n(), m("rect", {
677
+ }, null, 8, ft))), 128)), d(I) ? (n(), m("rect", {
678
678
  key: 0,
679
- x: G(d(P).x),
680
- y: G(d(P).y),
681
- width: G(d(P).width),
682
- height: G(d(P).height),
683
- stroke: W(d(P).label).color,
684
- fill: W(d(P).label).color,
679
+ x: q(d(I).x),
680
+ y: q(d(I).y),
681
+ width: q(d(I).width),
682
+ height: q(d(I).height),
683
+ stroke: K(d(I).label).color,
684
+ fill: K(d(I).label).color,
685
685
  "fill-opacity": "0.1",
686
686
  "stroke-dasharray": "4 3",
687
687
  "stroke-width": "1.5"
688
- }, null, 8, mt)) : l("", !0)]))], 4), u[12] ||= v("div", { class: "loupe-crosshair" }, null, -1)], 4)) : l("", !0),
689
- d(Le) ? (n(), m("div", ht, [C(_, {
688
+ }, null, 8, pt)) : l("", !0)]))], 4), u[11] ||= v("div", { class: "loupe-crosshair" }, null, -1)], 4)) : l("", !0),
689
+ d(Fe) ? (n(), m("div", mt, [C(_, {
690
690
  severity: "secondary",
691
691
  rounded: "",
692
692
  class: "cui-icon-md opacity-60 hover:opacity-100",
693
- onClick: u[9] ||= e((e) => $(-1), ["stop"])
693
+ onClick: u[8] ||= e((e) => $(-1), ["stop"])
694
694
  }, {
695
695
  icon: p(() => [C(te, {
696
696
  width: "100%",
@@ -698,11 +698,11 @@ var qe = class {
698
698
  })]),
699
699
  _: 1
700
700
  })])) : l("", !0),
701
- d(ze) ? (n(), m("div", gt, [C(_, {
701
+ d(Le) ? (n(), m("div", ht, [C(_, {
702
702
  severity: "secondary",
703
703
  rounded: "",
704
704
  class: "cui-icon-md opacity-60 hover:opacity-100",
705
- onClick: u[10] ||= e((e) => $(1), ["stop"])
705
+ onClick: u[9] ||= e((e) => $(1), ["stop"])
706
706
  }, {
707
707
  icon: p(() => [C(y, {
708
708
  width: "100%",
@@ -711,53 +711,53 @@ var qe = class {
711
711
  _: 1
712
712
  })])) : l("", !0)
713
713
  ], 512),
714
- d(Ve) ? (n(), m("div", _t, [v("label", vt, i(s.$t("components.training_editor.plate_text")), 1), C(x, {
714
+ d(ze) ? (n(), m("div", gt, [v("label", _t, i(s.$t("components.training_editor.plate_text")), 1), C(x, {
715
715
  id: "plate-text",
716
- "model-value": d(Ve).text ?? "",
716
+ "model-value": d(ze).text ?? "",
717
717
  size: "small",
718
718
  maxlength: "12",
719
719
  class: "w-40 uppercase",
720
720
  placeholder: "ABC 1234",
721
721
  "onUpdate:modelValue": Ht
722
722
  }, null, 8, ["model-value"])])) : l("", !0),
723
- v("div", yt, [v("span", bt, i(s.$t("components.training_editor.hint")), 1), d(fe) ? (n(), c(_, {
723
+ v("div", vt, [v("span", yt, i(s.$t("components.training_editor.hint")), 1), d(de) ? (n(), c(_, {
724
724
  key: 0,
725
725
  severity: "secondary",
726
726
  text: "",
727
727
  rounded: "",
728
728
  class: "cui-icon-sm shrink-0",
729
- onClick: u[11] ||= (e) => de.value = !d(de)
729
+ onClick: u[10] ||= (e) => ue.value = !d(ue)
730
730
  }, {
731
731
  icon: p(() => [C(S, { class: "w-4 h-4" })]),
732
732
  _: 1
733
733
  })) : l("", !0)]),
734
- d(fe) && d(de) ? (n(), m("div", xt, [
735
- u[13] ||= v("span", null, [v("kbd", null, "Tab")], -1),
734
+ d(de) && d(ue) ? (n(), m("div", bt, [
735
+ u[12] ||= v("span", null, [v("kbd", null, "Tab")], -1),
736
736
  v("span", null, i(s.$t("components.training_editor.sc_select")), 1),
737
- u[14] ||= b(),
738
- u[15] ||= v("span", null, [v("kbd", null, "←↑→↓")], -1),
737
+ u[13] ||= b(),
738
+ u[14] ||= v("span", null, [v("kbd", null, "←↑→↓")], -1),
739
739
  v("span", null, i(s.$t("components.training_editor.sc_move")), 1),
740
- u[16] ||= b(),
741
- u[17] ||= v("span", null, [
740
+ u[15] ||= b(),
741
+ u[16] ||= v("span", null, [
742
742
  v("kbd", null, "Shift"),
743
743
  b(" + "),
744
744
  v("kbd", null, "←↑→↓")
745
745
  ], -1),
746
746
  v("span", null, i(s.$t("components.training_editor.sc_resize")), 1),
747
- u[18] ||= b(),
748
- u[19] ||= v("span", null, [v("kbd", null, "S")], -1),
747
+ u[17] ||= b(),
748
+ u[18] ||= v("span", null, [v("kbd", null, "S")], -1),
749
749
  v("span", null, i(s.$t("components.training_editor.sc_label")), 1),
750
- u[20] ||= b(),
751
- u[21] ||= v("span", null, [v("kbd", null, "Del")], -1),
750
+ u[19] ||= b(),
751
+ u[20] ||= v("span", null, [v("kbd", null, "Del")], -1),
752
752
  v("span", null, i(s.$t("components.training_editor.sc_delete")), 1),
753
- u[22] ||= b(),
754
- u[23] ||= v("span", null, [v("kbd", null, "Esc")], -1),
753
+ u[21] ||= b(),
754
+ u[22] ||= v("span", null, [v("kbd", null, "Esc")], -1),
755
755
  v("span", null, i(s.$t("components.training_editor.sc_deselect")), 1),
756
- u[24] ||= b(),
757
- u[25] ||= v("span", null, [v("kbd", null, "Space")], -1),
756
+ u[23] ||= b(),
757
+ u[24] ||= v("span", null, [v("kbd", null, "Space")], -1),
758
758
  v("span", null, i(s.$t("components.training_editor.sc_verify")), 1),
759
- u[26] ||= b(),
760
- u[27] ||= v("span", null, [
759
+ u[25] ||= b(),
760
+ u[26] ||= v("span", null, [
761
761
  v("kbd", null, "←"),
762
762
  b(" / "),
763
763
  v("kbd", null, "→")
@@ -766,14 +766,14 @@ var qe = class {
766
766
  ])) : l("", !0),
767
767
  C(ae, {
768
768
  ref_key: "labelMenuRef",
769
- ref: A,
770
- items: d(He),
769
+ ref: j,
770
+ items: d(Be),
771
771
  popover: { pt: { content: { class: "p-0! rounded-xl! overflow-hidden!" } } }
772
772
  }, null, 8, ["items"])
773
773
  ], 512);
774
774
  };
775
775
  }
776
- }), [["__scopeId", "data-v-41ae024e"]]), Q = w({ progress: null }), Nt = null, Pt = null, Ft = /* @__PURE__ */ new Set(), It = /* @__PURE__ */ new Set();
776
+ }), [["__scopeId", "data-v-f21c606f"]]), Mt = w({ progress: null }), Nt = null, Pt = null, Ft = /* @__PURE__ */ new Set(), It = /* @__PURE__ */ new Set();
777
777
  function Lt(e) {
778
778
  for (let t of e) try {
779
779
  t();
@@ -782,7 +782,7 @@ function Lt(e) {
782
782
  async function Rt() {
783
783
  if (Pt?.ready.value) try {
784
784
  let e = await Pt.request("get-submit-progress");
785
- e.active ? Q.progress = e : Q.progress?.active && (Q.progress = null);
785
+ e.active ? Mt.progress = e : Mt.progress?.active && (Mt.progress = null);
786
786
  } catch {}
787
787
  }
788
788
  function zt() {
@@ -790,9 +790,9 @@ function zt() {
790
790
  }
791
791
  function Bt() {
792
792
  return Pt || (Nt = u(!0), Nt.run(() => {
793
- let e = fe("/training");
793
+ let e = R("/training");
794
794
  Pt = e, e.on("candidates-changed", () => Lt(Ft)), e.on("submit-progress", (e) => {
795
- Q.progress = e, Lt(Ft);
795
+ Mt.progress = e, Lt(Ft);
796
796
  }), e.onReady(zt);
797
797
  }), Pt);
798
798
  }
@@ -807,10 +807,10 @@ function Vt() {
807
807
  return It.add(e), () => It.delete(e);
808
808
  }
809
809
  function r() {
810
- Q.progress = null;
810
+ Mt.progress = null;
811
811
  }
812
812
  return {
813
- submitProgress: f(() => Q.progress),
813
+ submitProgress: f(() => Mt.progress),
814
814
  connect: e,
815
815
  onCandidatesChanged: t,
816
816
  onResync: n,
@@ -834,20 +834,20 @@ var Ht = { class: "flex flex-col gap-3" }, Ut = {
834
834
  }, $t = /* @__PURE__ */ x({
835
835
  __name: "TrainingSubmissions",
836
836
  setup(e) {
837
- let a = new qe(), { t: o, te: s } = Te(), u = R(), ee = Vt(), f = a.deleteSubmissionMutation(), b = S(""), x = S([]), w = S(0), T = S(), E = S(!0), D = S(!1), O = S(!1), ae = _("loadMoreRef");
837
+ let a = new Ge(), { t: o, te: s } = Ce(), u = B(), ee = Vt(), f = a.deleteSubmissionMutation(), b = S(""), x = S([]), w = S(0), T = S(), E = S(!0), D = S(!1), O = S(!1), ie = _("loadMoreRef");
838
838
  function k(e) {
839
839
  let t = {};
840
840
  for (let n of e.labels) t[n.label] = (t[n.label] ?? 0) + 1;
841
841
  return t;
842
842
  }
843
- function oe(e) {
843
+ function A(e) {
844
844
  let t = `components.training_editor.labels.${e}`;
845
845
  return s(t) ? o(t) : e;
846
846
  }
847
- async function A() {
847
+ async function j() {
848
848
  E.value = x.value.length === 0;
849
849
  try {
850
- let e = await J();
850
+ let e = await X();
851
851
  x.value = e.items, w.value = e.total ?? e.items.length, T.value = e.nextCursor, O.value = !1;
852
852
  } catch {
853
853
  O.value = !0;
@@ -855,12 +855,12 @@ var Ht = { class: "flex flex-col gap-3" }, Ut = {
855
855
  E.value = !1;
856
856
  }
857
857
  }
858
- async function se() {
858
+ async function ae() {
859
859
  let e = T.value;
860
860
  if (e && !D.value) {
861
861
  D.value = !0;
862
862
  try {
863
- let t = await J({ cursor: e }), n = new Set(x.value.map((e) => e.id));
863
+ let t = await X({ cursor: e }), n = new Set(x.value.map((e) => e.id));
864
864
  x.value.push(...t.items.filter((e) => !n.has(e.id))), T.value = t.nextCursor;
865
865
  } catch (e) {
866
866
  u.add({
@@ -873,7 +873,7 @@ var Ht = { class: "flex flex-col gap-3" }, Ut = {
873
873
  }
874
874
  }
875
875
  }
876
- async function j(e) {
876
+ async function N(e) {
877
877
  b.value = e;
878
878
  try {
879
879
  await f.mutateAsync(e), x.value = x.value.filter((t) => t.id !== e), w.value = Math.max(0, w.value - 1);
@@ -887,18 +887,18 @@ var Ht = { class: "flex flex-col gap-3" }, Ut = {
887
887
  b.value = "";
888
888
  }
889
889
  }
890
- V(ae, ([e]) => {
891
- e?.isIntersecting && se();
890
+ U(ie, ([e]) => {
891
+ e?.isIntersecting && ae();
892
892
  }), te(() => ee.submitProgress.value?.active, (e, t) => {
893
- t && !e && A();
893
+ t && !e && j();
894
894
  });
895
- let ce = ee.onResync(() => {
896
- A();
895
+ let oe = ee.onResync(() => {
896
+ j();
897
897
  });
898
898
  return r(() => {
899
- ce();
900
- }), A(), (e, r) => {
901
- let a = de, o = Pe, s = P, u = ie, ee = re, te = Ie, _ = Ee, S = Ne, A = ne;
899
+ oe();
900
+ }), j(), (e, r) => {
901
+ let a = z, o = Me, s = M, u = L, ee = re, te = Pe, _ = we, S = je, j = ne;
902
902
  return n(), m("div", Ht, [d(E) ? (n(), m("div", Ut, [(n(), m(g, null, t(4, (e) => C(a, {
903
903
  key: e,
904
904
  height: "72px",
@@ -917,8 +917,8 @@ var Ht = { class: "flex flex-col gap-3" }, Ut = {
917
917
  v("div", Yt, [v("div", Xt, [(n(!0), m(g, null, t(k(r), (e, t) => (n(), m("span", {
918
918
  key: t,
919
919
  class: "px-1.5 py-0.5 rounded text-xs font-medium text-white",
920
- style: h({ backgroundColor: d(ue)(String(t)).color })
921
- }, i(oe(String(t))) + " ×" + i(e), 5))), 128))]), v("div", Zt, i(d(pe)(new Date(r.createdAt).getTime())), 1)]),
920
+ style: h({ backgroundColor: d(ge)(String(t)).color })
921
+ }, i(A(String(t))) + " ×" + i(e), 5))), 128))]), v("div", Zt, i(d(le)(new Date(r.createdAt).getTime())), 1)]),
922
922
  C(ee, {
923
923
  severity: r.usedInWave ? "success" : "info",
924
924
  value: r.usedInWave ? e.$t("components.training_submissions.status_trained") : e.$t("components.training_submissions.status_pool"),
@@ -930,7 +930,7 @@ var Ht = { class: "flex flex-col gap-3" }, Ut = {
930
930
  rounded: "",
931
931
  class: "cui-icon-sm shrink-0",
932
932
  loading: d(f).isPending.value && d(b) === r.id,
933
- onClick: (e) => j(r.id)
933
+ onClick: (e) => N(r.id)
934
934
  }, {
935
935
  icon: p(() => [C(te, {
936
936
  width: "100%",
@@ -938,7 +938,7 @@ var Ht = { class: "flex flex-col gap-3" }, Ut = {
938
938
  })]),
939
939
  _: 1
940
940
  }, 8, ["loading", "onClick"])), [[
941
- A,
941
+ j,
942
942
  e.$t("components.training_submissions.delete"),
943
943
  void 0,
944
944
  { left: !0 }
@@ -947,7 +947,7 @@ var Ht = { class: "flex flex-col gap-3" }, Ut = {
947
947
  d(D) ? (n(), m("div", Qt, [C(S, { class: "w-5 h-5 text-primary" })])) : d(T) ? (n(), m("div", {
948
948
  key: 1,
949
949
  ref_key: "loadMoreRef",
950
- ref: ae,
950
+ ref: ie,
951
951
  class: "h-px"
952
952
  }, null, 512)) : l("", !0)
953
953
  ], 64)) : (n(), m("div", $, [C(s, { class: "w-10 h-10 text-muted" }), v("span", Kt, i(e.$t("components.training_submissions.empty")), 1)]))]);
@@ -974,92 +974,92 @@ var Ht = { class: "flex flex-col gap-3" }, Ut = {
974
974
  }, _n = { class: "flex items-center justify-between gap-2" }, vn = { class: "flex items-center gap-2 min-w-0" }, yn = { class: "min-w-0" }, bn = { class: "font-medium truncate" }, xn = { class: "text-xs text-muted" }, Sn = 40, Cn = /* @__PURE__ */ x({
975
975
  __name: "Training",
976
976
  setup(o) {
977
- let s = new me(), u = new qe(), { t: x, te: w } = Te(), E = L(), O = R(), { smBreakpoint: oe } = j(), M = u.getCandidatesQuery(), P = u.getSettingsQuery(), fe = u.patchCandidateMutation(), he = u.deleteCandidateMutation(), ge = u.patchSettingsMutation(), _e = u.submitCandidatesMutation(), ve = Vt(), { data: z } = s.getCamerasQuery({
977
+ let s = new j(), u = new Ge(), { t: x, te: w } = Ce(), O = me(), k = B(), { smBreakpoint: M } = D(), I = u.getCandidatesQuery(), ce = u.getSettingsQuery(), de = u.patchCandidateMutation(), fe = u.deleteCandidateMutation(), R = u.patchSettingsMutation(), pe = u.submitCandidatesMutation(), he = Vt(), { data: V } = s.getCamerasQuery({
978
978
  page: 1,
979
979
  pageSize: -1
980
- }), B = S(""), xe = S(Sn), Se = _("cameraMenuRef"), we = _("settingsMenuRef"), Re = _("loadMoreRef"), Be = f(() => ({ gridTemplateColumns: `repeat(auto-fill, minmax(${oe.value ? "220px" : "260px"}, 1fr))` })), Ve = f(() => {
981
- let e = [...new Set((M.data.value ?? []).map((e) => Z(e.cameraId)))].sort((e, t) => e.localeCompare(t));
980
+ }), H = S(""), ye = S(Sn), be = _("cameraMenuRef"), Se = _("settingsMenuRef"), Ie = _("loadMoreRef"), Re = f(() => ({ gridTemplateColumns: `repeat(auto-fill, minmax(${M.value ? "220px" : "260px"}, 1fr))` })), ze = f(() => {
981
+ let e = [...new Set((I.data.value ?? []).map((e) => $e(e.cameraId)))].sort((e, t) => e.localeCompare(t));
982
982
  return [{
983
983
  key: "all",
984
984
  label: x("views.training.all_cameras"),
985
- active: B.value === "",
985
+ active: H.value === "",
986
986
  onClick: () => {
987
- B.value = "";
987
+ H.value = "";
988
988
  }
989
989
  }, ...e.map((e) => ({
990
990
  key: e,
991
991
  label: e,
992
- active: B.value === e,
992
+ active: H.value === e,
993
993
  onClick: () => {
994
- B.value = e;
994
+ H.value = e;
995
995
  }
996
996
  }))];
997
- }), Ue = f(() => [{
997
+ }), Ve = f(() => [{
998
998
  key: "collect",
999
999
  label: x("views.training.collection_enabled"),
1000
1000
  description: x("views.training.collection_hint"),
1001
1001
  toggle: !0,
1002
- toggleState: P.data.value?.enabled ?? !0,
1002
+ toggleState: ce.data.value?.enabled ?? !0,
1003
1003
  onClick: () => {
1004
- ft(!(P.data.value?.enabled ?? !0));
1004
+ dt(!(ce.data.value?.enabled ?? !0));
1005
1005
  }
1006
- }]), U = f(() => {
1007
- let e = B.value.trim().toLowerCase();
1008
- return e ? (M.data.value ?? []).filter((t) => Z(t.cameraId).toLowerCase().includes(e)) : M.data.value ?? [];
1009
- }), W = f(() => U.value.slice(0, xe.value)), G = f(() => U.value.length > W.value.length), Ge = f(() => (M.data.value ?? []).filter((e) => J(e)).length), K = f(() => ve.submitProgress.value ? ve.submitProgress.value : Ge.value > 0 ? {
1006
+ }]), G = f(() => {
1007
+ let e = H.value.trim().toLowerCase();
1008
+ return e ? (I.data.value ?? []).filter((t) => $e(t.cameraId).toLowerCase().includes(e)) : I.data.value ?? [];
1009
+ }), K = f(() => G.value.slice(0, ye.value)), q = f(() => G.value.length > K.value.length), Ue = f(() => (I.data.value ?? []).filter((e) => X(e)).length), J = f(() => he.submitProgress.value ? he.submitProgress.value : Ue.value > 0 ? {
1010
1010
  active: !0,
1011
- total: Ge.value,
1011
+ total: Ue.value,
1012
1012
  done: 0,
1013
1013
  failed: 0
1014
- } : null), q = f(() => U.value.filter((e) => !J(e)));
1015
- function J(e) {
1014
+ } : null), Y = f(() => G.value.filter((e) => !X(e)));
1015
+ function X(e) {
1016
1016
  return e.upload === "queued" || e.upload === "uploading";
1017
1017
  }
1018
- let { selectionMode: Y, selectedIds: X, allSelected: Ke, bulkBusy: Je, enterSelectionMode: Xe, exitSelectionMode: Ze, toggleSelectAll: Qe, toggleSelection: $e } = be(q, (e) => e.id), et = f(() => [...X.value].filter((e) => M.data.value?.find((t) => t.id === e)?.status === "verified"));
1019
- function Z(e) {
1020
- return z.value?.result?.find((t) => t._id === e)?.name ?? e;
1018
+ let { selectionMode: Z, selectedIds: Q, allSelected: We, bulkBusy: Ke, enterSelectionMode: Je, exitSelectionMode: Ye, toggleSelectAll: Xe, toggleSelection: Ze } = ve(Y, (e) => e.id), Qe = f(() => [...Q.value].filter((e) => I.data.value?.find((t) => t.id === e)?.status === "verified"));
1019
+ function $e(e) {
1020
+ return V.value?.result?.find((t) => t._id === e)?.name ?? e;
1021
1021
  }
1022
- function tt(e) {
1023
- return I(`/api/training/candidates/${e}/image`) ?? "";
1022
+ function et(e) {
1023
+ return ue(`/api/training/candidates/${e}/image`) ?? "";
1024
1024
  }
1025
- function nt(e) {
1025
+ function tt(e) {
1026
1026
  let t = `components.training_editor.labels.${e}`;
1027
1027
  return w(t) ? x(t) : e;
1028
1028
  }
1029
- function rt(e) {
1029
+ function nt(e) {
1030
1030
  let t = {};
1031
1031
  for (let n of e.boxes) t[n.label] = (t[n.label] ?? 0) + 1;
1032
1032
  return t;
1033
1033
  }
1034
- function it(e) {
1034
+ function rt(e) {
1035
1035
  return e === "verified" ? "success" : "info";
1036
1036
  }
1037
- function at() {
1038
- xe.value += Sn;
1037
+ function it() {
1038
+ ye.value += Sn;
1039
1039
  }
1040
- function ot(e) {
1041
- if (!J(e)) {
1042
- if (Y.value) {
1043
- $e(e.id);
1040
+ function at(e) {
1041
+ if (!X(e)) {
1042
+ if (Z.value) {
1043
+ Ze(e.id);
1044
1044
  return;
1045
1045
  }
1046
- st(e);
1046
+ ot(e);
1047
1047
  }
1048
1048
  }
1049
- function st(e) {
1050
- E.openComponentDialog(Mt, {
1049
+ function ot(e) {
1050
+ O.openComponentDialog(jt, {
1051
1051
  data: {
1052
1052
  title: x("views.training.title"),
1053
1053
  cancelText: x("components.form.button.remove"),
1054
1054
  confirmText: x("components.training_editor.verify"),
1055
1055
  cancelButtonProps: { severity: "danger" },
1056
1056
  contentProps: {
1057
- candidates: U.value.map((e) => ({ ...e })),
1057
+ candidates: G.value.map((e) => ({ ...e })),
1058
1058
  startId: e.id,
1059
- cameraName: Z,
1060
- imageUrl: tt,
1059
+ cameraName: $e,
1060
+ imageUrl: et,
1061
1061
  onSave: async (e, t, n) => {
1062
- await fe.mutateAsync({
1062
+ await de.mutateAsync({
1063
1063
  id: e,
1064
1064
  patch: {
1065
1065
  boxes: t,
@@ -1068,15 +1068,15 @@ var Ht = { class: "flex flex-col gap-3" }, Ut = {
1068
1068
  });
1069
1069
  },
1070
1070
  onDelete: async (e) => {
1071
- await he.mutateAsync(e);
1071
+ await fe.mutateAsync(e);
1072
1072
  }
1073
1073
  }
1074
1074
  },
1075
- dialogSize: Ye
1075
+ dialogSize: qe
1076
1076
  });
1077
1077
  }
1078
- function ct() {
1079
- E.openComponentDialog($t, {
1078
+ function st() {
1079
+ O.openComponentDialog($t, {
1080
1080
  data: {
1081
1081
  title: x("views.training.submissions"),
1082
1082
  hideConfirmButton: !0,
@@ -1086,9 +1086,9 @@ var Ht = { class: "flex flex-col gap-3" }, Ut = {
1086
1086
  dialogSize: en
1087
1087
  });
1088
1088
  }
1089
- function lt() {
1090
- let e = et.value;
1091
- e.length && !_e.isPending.value && E.openTextDialog({
1089
+ function ct() {
1090
+ let e = Qe.value;
1091
+ e.length && !pe.isPending.value && O.openTextDialog({
1092
1092
  data: {
1093
1093
  title: x("components.dialog.title.confirm"),
1094
1094
  contentText: x("views.training.submit_confirm", { count: e.length }),
@@ -1096,9 +1096,9 @@ var Ht = { class: "flex flex-col gap-3" }, Ut = {
1096
1096
  },
1097
1097
  onConfirm: async () => {
1098
1098
  try {
1099
- await _e.mutateAsync(e), Ze();
1099
+ await pe.mutateAsync(e), Ye();
1100
1100
  } catch (e) {
1101
- O.add({
1101
+ k.add({
1102
1102
  severity: "error",
1103
1103
  detail: e?.message ?? String(e),
1104
1104
  life: 8e3
@@ -1107,9 +1107,9 @@ var Ht = { class: "flex flex-col gap-3" }, Ut = {
1107
1107
  }
1108
1108
  });
1109
1109
  }
1110
- function ut() {
1111
- let e = [...X.value];
1112
- e.length && !Je.value && E.openTextDialog({
1110
+ function lt() {
1111
+ let e = [...Q.value];
1112
+ e.length && !Ke.value && O.openTextDialog({
1113
1113
  data: {
1114
1114
  title: x("components.dialog.title.confirm"),
1115
1115
  contentText: x("views.training.delete_selected_confirm", { count: e.length }),
@@ -1117,46 +1117,46 @@ var Ht = { class: "flex flex-col gap-3" }, Ut = {
1117
1117
  confirmButtonProps: { severity: "danger" }
1118
1118
  },
1119
1119
  onConfirm: async () => {
1120
- Je.value = !0;
1120
+ Ke.value = !0;
1121
1121
  try {
1122
- for (let t of e) await he.mutateAsync(t);
1123
- Ze(), O.add({
1122
+ for (let t of e) await fe.mutateAsync(t);
1123
+ Ye(), k.add({
1124
1124
  severity: "success",
1125
1125
  detail: x("views.training.delete_selected_done", { count: e.length }),
1126
1126
  life: 5e3
1127
1127
  });
1128
1128
  } catch (e) {
1129
- O.add({
1129
+ k.add({
1130
1130
  severity: "error",
1131
1131
  detail: e?.message ?? String(e),
1132
1132
  life: 5e3
1133
1133
  });
1134
1134
  } finally {
1135
- Je.value = !1;
1135
+ Ke.value = !1;
1136
1136
  }
1137
1137
  }
1138
1138
  });
1139
1139
  }
1140
- async function dt(e) {
1141
- await he.mutateAsync(e.id);
1140
+ async function ut(e) {
1141
+ await fe.mutateAsync(e.id);
1142
1142
  }
1143
- async function ft(e) {
1144
- await ge.mutateAsync({ enabled: e });
1143
+ async function dt(e) {
1144
+ await R.mutateAsync({ enabled: e });
1145
1145
  }
1146
- te(B, () => {
1147
- xe.value = Sn;
1148
- }), V(Re, ([e]) => {
1149
- e?.isIntersecting && at();
1150
- }), ve.connect();
1151
- let pt = ve.onCandidatesChanged(() => {
1152
- M.refetch();
1146
+ te(H, () => {
1147
+ ye.value = Sn;
1148
+ }), U(Ie, ([e]) => {
1149
+ e?.isIntersecting && it();
1150
+ }), he.connect();
1151
+ let ft = he.onCandidatesChanged(() => {
1152
+ I.refetch();
1153
1153
  });
1154
1154
  return r(() => {
1155
- pt();
1155
+ ft();
1156
1156
  }), (r, o) => {
1157
- let s = Le, u = Ee, f = se, te = H, _ = Oe, S = ke, w = De, E = T, O = ce, j = N, P = He, fe = ze, I = Ne, me = Me, L = Pe, he = Fe, ge = je, R = de, z = ye, be = ie, V = re, xe = Ie, Te = Ae, Ge = Ce, q = le, qe = k, Ye = ne;
1157
+ let s = Fe, u = we, f = A, te = W, _ = Ee, S = De, w = Te, D = T, O = oe, k = ie, j = Be, ce = Le, ue = je, de = Ae, fe = Me, R = Ne, me = ke, B = z, V = F, ve = L, U = re, ye = Pe, Ce = Oe, Ue = xe, Y = _e, Ge = N, qe = ne;
1158
1158
  return n(), m("div", tn, [
1159
- d(oe) ? l("", !0) : (n(), m("h1", nn, i(r.$t("views.training.title")), 1)),
1159
+ d(M) ? l("", !0) : (n(), m("h1", nn, i(r.$t("views.training.title")), 1)),
1160
1160
  C(f, { position: "left" }, {
1161
1161
  default: p(() => [C(u, {
1162
1162
  severity: "secondary",
@@ -1174,14 +1174,14 @@ var Ht = { class: "flex flex-col gap-3" }, Ut = {
1174
1174
  _: 1
1175
1175
  }),
1176
1176
  v("div", an, [
1177
- C(j, { class: "flex-1" }, {
1177
+ C(k, { class: "flex-1" }, {
1178
1178
  default: p(() => [C(w, { class: "flex-1" }, {
1179
1179
  default: p(() => [C(_, null, {
1180
1180
  default: p(() => [C(te, { class: "w-4 h-4" })]),
1181
1181
  _: 1
1182
1182
  }), C(S, {
1183
- modelValue: d(B),
1184
- "onUpdate:modelValue": o[1] ||= (e) => ee(B) ? B.value = e : null,
1183
+ modelValue: d(H),
1184
+ "onUpdate:modelValue": o[1] ||= (e) => ee(H) ? H.value = e : null,
1185
1185
  placeholder: d(x)("views.training.search"),
1186
1186
  class: "w-full"
1187
1187
  }, null, 8, ["modelValue", "placeholder"])]),
@@ -1191,9 +1191,9 @@ var Ht = { class: "flex flex-col gap-3" }, Ut = {
1191
1191
  severity: "secondary",
1192
1192
  text: "",
1193
1193
  class: "text-color",
1194
- onClick: o[2] ||= (e) => d(Se)?.toggleMenu(e)
1194
+ onClick: o[2] ||= (e) => d(be)?.toggleMenu(e)
1195
1195
  }, {
1196
- icon: p(() => [C(E, { class: a(["w-4 h-4 transform transition-transform duration-300", { "rotate-180": d(Se)?.isOpen }]) }, null, 8, ["class"])]),
1196
+ icon: p(() => [C(D, { class: a(["w-4 h-4 transform transition-transform duration-300", { "rotate-180": d(be)?.isOpen }]) }, null, 8, ["class"])]),
1197
1197
  _: 1
1198
1198
  })]),
1199
1199
  _: 1
@@ -1204,12 +1204,12 @@ var Ht = { class: "flex flex-col gap-3" }, Ut = {
1204
1204
  severity: "secondary",
1205
1205
  outlined: "",
1206
1206
  class: "cui-button shrink-0",
1207
- onClick: ct
1207
+ onClick: st
1208
1208
  }, {
1209
- icon: p(() => [C(P, { class: "w-4.5 h-4.5" })]),
1209
+ icon: p(() => [C(j, { class: "w-4.5 h-4.5" })]),
1210
1210
  _: 1
1211
1211
  })), [[
1212
- Ye,
1212
+ qe,
1213
1213
  { value: r.$t("views.training.submissions") },
1214
1214
  void 0,
1215
1215
  { left: !0 }
@@ -1218,67 +1218,67 @@ var Ht = { class: "flex flex-col gap-3" }, Ut = {
1218
1218
  severity: "secondary",
1219
1219
  outlined: "",
1220
1220
  class: "cui-button shrink-0",
1221
- onClick: o[3] ||= (e) => d(we)?.toggleMenu(e)
1221
+ onClick: o[3] ||= (e) => d(Se)?.toggleMenu(e)
1222
1222
  }, {
1223
- icon: p(() => [C(fe, { class: "w-4.5 h-4.5" })]),
1223
+ icon: p(() => [C(ce, { class: "w-4.5 h-4.5" })]),
1224
1224
  _: 1
1225
1225
  })), [[
1226
- Ye,
1226
+ qe,
1227
1227
  { value: r.$t("views.training.collection") },
1228
1228
  void 0,
1229
1229
  { left: !0 }
1230
1230
  ]])
1231
1231
  ]),
1232
- d(K) ? (n(), m("div", on, [d(K).active ? (n(), m(g, { key: 0 }, [C(I, { class: "w-4 h-4 text-primary shrink-0" }), v("div", sn, [v("div", cn, i(r.$t("views.training.upload_progress", {
1233
- done: d(K).done + d(K).failed,
1234
- total: d(K).total
1235
- })), 1), C(me, {
1236
- value: d(K).total ? Math.round((d(K).done + d(K).failed) / d(K).total * 100) : 0,
1232
+ d(J) ? (n(), m("div", on, [d(J).active ? (n(), m(g, { key: 0 }, [C(ue, { class: "w-4 h-4 text-primary shrink-0" }), v("div", sn, [v("div", cn, i(r.$t("views.training.upload_progress", {
1233
+ done: d(J).done + d(J).failed,
1234
+ total: d(J).total
1235
+ })), 1), C(de, {
1236
+ value: d(J).total ? Math.round((d(J).done + d(J).failed) / d(J).total * 100) : 0,
1237
1237
  "show-value": !1,
1238
1238
  style: { height: "6px" },
1239
1239
  class: "mt-1.5"
1240
1240
  }, null, 8, ["value"])])], 64)) : (n(), m(g, { key: 1 }, [
1241
- d(K).failed ? (n(), c(L, {
1241
+ d(J).failed ? (n(), c(fe, {
1242
1242
  key: 0,
1243
1243
  class: "w-5 h-5 text-red-500 shrink-0"
1244
- })) : (n(), c(he, {
1244
+ })) : (n(), c(R, {
1245
1245
  key: 1,
1246
1246
  class: "w-5 h-5 text-green-500 shrink-0"
1247
1247
  })),
1248
- v("span", ln, [b(i(r.$t("views.training.submit_done", d(K).done)), 1), d(K).failed ? (n(), m(g, { key: 0 }, [b(" · " + i(r.$t("views.training.upload_failed_summary", { count: d(K).failed })), 1)], 64)) : l("", !0)]),
1248
+ v("span", ln, [b(i(r.$t("views.training.submit_done", d(J).done)), 1), d(J).failed ? (n(), m(g, { key: 0 }, [b(" · " + i(r.$t("views.training.upload_failed_summary", { count: d(J).failed })), 1)], 64)) : l("", !0)]),
1249
1249
  C(u, {
1250
1250
  severity: "secondary",
1251
1251
  text: "",
1252
1252
  rounded: "",
1253
1253
  class: "cui-icon-sm shrink-0",
1254
- onClick: o[4] ||= (e) => d(ve).dismissProgress()
1254
+ onClick: o[4] ||= (e) => d(he).dismissProgress()
1255
1255
  }, {
1256
- icon: p(() => [C(ge, { class: "w-4 h-4" })]),
1256
+ icon: p(() => [C(me, { class: "w-4 h-4" })]),
1257
1257
  _: 1
1258
1258
  })
1259
1259
  ], 64))])) : l("", !0),
1260
- d(M).isLoading.value && !d(M).data.value ? (n(), m("div", {
1260
+ d(I).isLoading.value && !d(I).data.value ? (n(), m("div", {
1261
1261
  key: 2,
1262
1262
  class: "grid w-full gap-3 p-px",
1263
- style: h(d(Be))
1263
+ style: h(d(Re))
1264
1264
  }, [(n(), m(g, null, t(8, (e) => v("div", {
1265
1265
  key: e,
1266
1266
  class: "cui-card overflow-hidden"
1267
- }, [C(R, {
1267
+ }, [C(B, {
1268
1268
  class: "aspect-video",
1269
1269
  width: "100%",
1270
1270
  height: "100%"
1271
- }), v("div", un, [C(R, {
1271
+ }), v("div", un, [C(B, {
1272
1272
  height: "14px",
1273
1273
  width: "70%",
1274
1274
  class: "mb-1"
1275
- }), C(R, {
1275
+ }), C(B, {
1276
1276
  height: "12px",
1277
1277
  width: "40%"
1278
- })])])), 64))], 4)) : d(U).length === 0 ? (n(), m("div", dn, [C(z, { class: "w-12 h-12 text-muted" }), v("span", fn, i(r.$t("views.training.no_candidates")), 1)])) : (n(), m(g, { key: 4 }, [v("div", {
1278
+ })])])), 64))], 4)) : d(G).length === 0 ? (n(), m("div", dn, [C(V, { class: "w-12 h-12 text-muted" }), v("span", fn, i(r.$t("views.training.no_candidates")), 1)])) : (n(), m(g, { key: 4 }, [v("div", {
1279
1279
  class: "grid w-full gap-3 p-px",
1280
- style: h(d(Be))
1281
- }, [(n(!0), m(g, null, t(d(W), (a) => (n(), c(Ge, {
1280
+ style: h(d(Re))
1281
+ }, [(n(!0), m(g, null, t(d(K), (a) => (n(), c(Ue, {
1282
1282
  key: a.id,
1283
1283
  class: "cui-card overflow-hidden transition-shadow cursor-pointer hover:shadow-md aspect-[1.17] flex flex-col",
1284
1284
  pt: {
@@ -1288,156 +1288,156 @@ var Ht = { class: "flex flex-col gap-3" }, Ut = {
1288
1288
  style: "height: auto"
1289
1289
  }
1290
1290
  },
1291
- onClick: (e) => ot(a)
1291
+ onClick: (e) => at(a)
1292
1292
  }, {
1293
1293
  header: p(() => [v("div", pn, [
1294
- C(be, {
1294
+ C(ve, {
1295
1295
  class: "absolute inset-0",
1296
- src: tt(a.id),
1297
- alt: Z(a.cameraId),
1296
+ src: et(a.id),
1297
+ alt: $e(a.cameraId),
1298
1298
  "image-container-class": "w-full h-full",
1299
1299
  "image-style": { objectFit: "cover" }
1300
1300
  }, null, 8, ["src", "alt"]),
1301
- v("div", mn, [(n(!0), m(g, null, t(rt(a), (e, t) => (n(), m("span", {
1301
+ v("div", mn, [(n(!0), m(g, null, t(nt(a), (e, t) => (n(), m("span", {
1302
1302
  key: t,
1303
1303
  class: "px-1.5 py-0.5 rounded text-xs font-medium text-white",
1304
- style: h({ backgroundColor: d(ue)(String(t)).color })
1305
- }, i(nt(String(t))) + " ×" + i(e), 5))), 128))]),
1306
- a.upload ? (n(), m("div", hn, [a.upload === "failed" ? y((n(), c(V, {
1304
+ style: h({ backgroundColor: d(ge)(String(t)).color })
1305
+ }, i(tt(String(t))) + " ×" + i(e), 5))), 128))]),
1306
+ a.upload ? (n(), m("div", hn, [a.upload === "failed" ? y((n(), c(U, {
1307
1307
  key: 0,
1308
1308
  severity: "danger",
1309
1309
  value: r.$t("views.training.upload_failed")
1310
1310
  }, null, 8, ["value"])), [[
1311
- Ye,
1311
+ qe,
1312
1312
  a.uploadError,
1313
1313
  void 0,
1314
1314
  { top: !0 }
1315
- ]]) : a.upload === "uploading" ? (n(), c(V, {
1315
+ ]]) : a.upload === "uploading" ? (n(), c(U, {
1316
1316
  key: 1,
1317
1317
  severity: "info",
1318
1318
  value: r.$t("views.training.upload_uploading")
1319
- }, null, 8, ["value"])) : (n(), c(V, {
1319
+ }, null, 8, ["value"])) : (n(), c(U, {
1320
1320
  key: 2,
1321
1321
  severity: "secondary",
1322
1322
  value: r.$t("views.training.upload_queued")
1323
1323
  }, null, 8, ["value"]))])) : l("", !0),
1324
- !d(Y) && !J(a) ? (n(), m("div", gn, [y((n(), c(u, {
1324
+ !d(Z) && !X(a) ? (n(), m("div", gn, [y((n(), c(u, {
1325
1325
  severity: "secondary",
1326
1326
  rounded: "",
1327
1327
  size: "small",
1328
1328
  class: "cui-icon-sm text-white",
1329
- onClick: e((e) => dt(a), ["stop"])
1329
+ onClick: e((e) => ut(a), ["stop"])
1330
1330
  }, {
1331
- icon: p(() => [C(xe, {
1331
+ icon: p(() => [C(ye, {
1332
1332
  width: "100%",
1333
1333
  height: "100%"
1334
1334
  })]),
1335
1335
  _: 1
1336
1336
  }, 8, ["onClick"])), [[
1337
- Ye,
1337
+ qe,
1338
1338
  r.$t("views.training.delete_candidate"),
1339
1339
  void 0,
1340
1340
  { top: !0 }
1341
1341
  ]])])) : l("", !0)
1342
1342
  ])]),
1343
- content: p(() => [v("div", _n, [v("div", vn, [d(Y) && !J(a) ? (n(), c(Te, {
1343
+ content: p(() => [v("div", _n, [v("div", vn, [d(Z) && !X(a) ? (n(), c(Ce, {
1344
1344
  key: 0,
1345
- "model-value": d(X).has(a.id),
1345
+ "model-value": d(Q).has(a.id),
1346
1346
  binary: "",
1347
1347
  size: "small",
1348
1348
  onClick: o[5] ||= e(() => {}, ["stop"]),
1349
- "onUpdate:modelValue": (e) => d($e)(a.id)
1350
- }, null, 8, ["model-value", "onUpdate:modelValue"])) : l("", !0), v("div", yn, [v("div", bn, i(Z(a.cameraId)), 1), v("div", xn, i(d(pe)(a.createdAt)), 1)])]), C(V, {
1351
- severity: it(a.status),
1349
+ "onUpdate:modelValue": (e) => d(Ze)(a.id)
1350
+ }, null, 8, ["model-value", "onUpdate:modelValue"])) : l("", !0), v("div", yn, [v("div", bn, i($e(a.cameraId)), 1), v("div", xn, i(d(le)(a.createdAt)), 1)])]), C(U, {
1351
+ severity: rt(a.status),
1352
1352
  value: r.$t(`views.training.status_${a.status}`)
1353
1353
  }, null, 8, ["severity", "value"])])]),
1354
1354
  _: 2
1355
- }, 1032, ["onClick"]))), 128))], 4), d(G) ? (n(), m("div", {
1355
+ }, 1032, ["onClick"]))), 128))], 4), d(q) ? (n(), m("div", {
1356
1356
  key: 0,
1357
1357
  ref_key: "loadMoreRef",
1358
- ref: Re,
1358
+ ref: Ie,
1359
1359
  class: "h-px"
1360
1360
  }, null, 512)) : l("", !0)], 64)),
1361
- d(U).length || d(Y) ? (n(), c(qe, {
1361
+ d(G).length || d(Z) ? (n(), c(Ge, {
1362
1362
  key: 5,
1363
- "force-visible": d(Y)
1363
+ "force-visible": d(Z)
1364
1364
  }, {
1365
- default: p(() => [d(Y) ? (n(), m(g, { key: 1 }, [
1366
- C(q, {
1365
+ default: p(() => [d(Z) ? (n(), m(g, { key: 1 }, [
1366
+ C(Y, {
1367
1367
  grouped: "",
1368
1368
  "tooltip-props": { value: r.$t("components.form.tooltip.cancel_selection") },
1369
1369
  "button-props": { severity: "secondary" },
1370
- icon: d(je),
1370
+ icon: d(ke),
1371
1371
  "icon-props": {
1372
1372
  width: "100%",
1373
1373
  height: "100%"
1374
1374
  },
1375
- onClick: d(Ze)
1375
+ onClick: d(Ye)
1376
1376
  }, null, 8, [
1377
1377
  "tooltip-props",
1378
1378
  "icon",
1379
1379
  "onClick"
1380
1380
  ]),
1381
- C(q, {
1381
+ C(Y, {
1382
1382
  grouped: "",
1383
- "tooltip-props": { value: d(Ke) ? r.$t("views.training.deselect_all") : r.$t("views.training.select_all") },
1384
- "button-props": { severity: d(Ke) ? "primary" : "secondary" },
1385
- icon: d(A),
1383
+ "tooltip-props": { value: d(We) ? r.$t("views.training.deselect_all") : r.$t("views.training.select_all") },
1384
+ "button-props": { severity: d(We) ? "primary" : "secondary" },
1385
+ icon: d(se),
1386
1386
  "icon-props": {
1387
1387
  width: "100%",
1388
1388
  height: "100%"
1389
1389
  },
1390
- onClick: d(Qe)
1390
+ onClick: d(Xe)
1391
1391
  }, null, 8, [
1392
1392
  "tooltip-props",
1393
1393
  "button-props",
1394
1394
  "icon",
1395
1395
  "onClick"
1396
1396
  ]),
1397
- C(q, {
1397
+ C(Y, {
1398
1398
  grouped: "",
1399
1399
  "tooltip-props": { value: r.$t("views.training.submit_selected") },
1400
- "button-props": { disabled: !d(et).length || d(_e).isPending.value },
1401
- icon: d(We),
1400
+ "button-props": { disabled: !d(Qe).length || d(pe).isPending.value },
1401
+ icon: d(He),
1402
1402
  "icon-props": {
1403
1403
  width: "100%",
1404
1404
  height: "100%"
1405
1405
  },
1406
- onClick: lt
1406
+ onClick: ct
1407
1407
  }, null, 8, [
1408
1408
  "tooltip-props",
1409
1409
  "button-props",
1410
1410
  "icon"
1411
1411
  ]),
1412
- C(q, {
1412
+ C(Y, {
1413
1413
  grouped: "",
1414
1414
  "tooltip-props": { value: r.$t("views.training.delete_selected") },
1415
1415
  "button-props": {
1416
1416
  severity: "danger",
1417
- disabled: !d(X).size || d(Je)
1417
+ disabled: !d(Q).size || d(Ke)
1418
1418
  },
1419
- icon: d(F),
1419
+ icon: d(P),
1420
1420
  "icon-props": {
1421
1421
  width: "100%",
1422
1422
  height: "100%"
1423
1423
  },
1424
- onClick: ut
1424
+ onClick: lt
1425
1425
  }, null, 8, [
1426
1426
  "tooltip-props",
1427
1427
  "button-props",
1428
1428
  "icon"
1429
1429
  ])
1430
- ], 64)) : (n(), c(q, {
1430
+ ], 64)) : (n(), c(Y, {
1431
1431
  key: 0,
1432
1432
  grouped: "",
1433
1433
  "tooltip-props": { value: r.$t("views.training.select") },
1434
1434
  "button-props": { severity: "secondary" },
1435
- icon: d(D),
1435
+ icon: d(E),
1436
1436
  "icon-props": {
1437
1437
  width: "100%",
1438
1438
  height: "100%"
1439
1439
  },
1440
- onClick: d(Xe)
1440
+ onClick: d(Je)
1441
1441
  }, null, 8, [
1442
1442
  "tooltip-props",
1443
1443
  "icon",
@@ -1447,14 +1447,14 @@ var Ht = { class: "flex flex-col gap-3" }, Ut = {
1447
1447
  }, 8, ["force-visible"])) : l("", !0),
1448
1448
  C(ae, {
1449
1449
  ref_key: "cameraMenuRef",
1450
- ref: Se,
1451
- items: d(Ve),
1450
+ ref: be,
1451
+ items: d(ze),
1452
1452
  popover: { pt: { content: { class: "p-0! rounded-xl! overflow-hidden!" } } }
1453
1453
  }, null, 8, ["items"]),
1454
1454
  C(ae, {
1455
1455
  ref_key: "settingsMenuRef",
1456
- ref: we,
1457
- items: d(Ue),
1456
+ ref: Se,
1457
+ items: d(Ve),
1458
1458
  "auto-hide": !1,
1459
1459
  popover: { pt: {
1460
1460
  root: { class: "w-[22rem]" },