@camera.ui/server 2.2.8 → 2.3.0

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 (493) hide show
  1. package/LICENSE.md +8 -1
  2. package/dist/interface/assets/{404-BYV0u5qE.js → 404-C0X5UBF4.js} +1 -1
  3. package/dist/interface/assets/About-Ctp_u5qK.js +1 -0
  4. package/dist/interface/assets/Assistant-Bj2bAUHD.css +1 -0
  5. package/dist/interface/assets/Assistant-CDrBV_mg.js +1 -0
  6. package/dist/interface/assets/Automation-Dp6V80Iz.js +3 -0
  7. package/dist/interface/assets/{Automation-BSicfOGF.css → Automation-R5o9sXYY.css} +1 -1
  8. package/dist/interface/assets/{AutomationImport-Iu-K82Os.js → AutomationImport-DKgg7atE.js} +2 -2
  9. package/dist/interface/assets/AutomationStore-CU-m5VC8.js +2 -0
  10. package/dist/interface/assets/{AutomationStoreDetail-BbvLRJ5u.js → AutomationStoreDetail-CiyIs8Iu.js} +2 -2
  11. package/dist/interface/assets/Automations-Dljh-sWu.js +2 -0
  12. package/dist/interface/assets/Camera-0p0P_mbp.css +1 -0
  13. package/dist/interface/assets/Camera-Bvovab-8.js +2 -0
  14. package/dist/interface/assets/{CameraConsole-JBD3ZmJ6.js → CameraConsole-D_Fv-MAi.js} +1 -1
  15. package/dist/interface/assets/{Cameras-R5mJGMK9.js → Cameras-Cq7Gw-fk.js} +2 -2
  16. package/dist/interface/assets/{Camview-DH6_8CxH.css → Camview-Bs2VvmUS.css} +1 -1
  17. package/dist/interface/assets/Camview-CP6PA20C.js +1 -0
  18. package/dist/interface/assets/{CertificateUpload-B9S4EOQs.js → CertificateUpload-DjzNMFc3.js} +1 -1
  19. package/dist/interface/assets/{Config-CbFl5Wcp.js → Config-Dl2TlyFe.js} +1 -1
  20. package/dist/interface/assets/{ConfigActionAssistant-DIOh6-np.js → ConfigActionAssistant-DCkJ_Iqq.js} +1 -1
  21. package/dist/interface/assets/ConfigActionCameraControl-2pzl59gR.js +1 -0
  22. package/dist/interface/assets/{ConfigActionDelay-B9i4YZjy.js → ConfigActionDelay-BAp1dr0N.js} +1 -1
  23. package/dist/interface/assets/{ConfigActionHttp-DFtxAa3U.js → ConfigActionHttp-_kqgEuun.js} +1 -1
  24. package/dist/interface/assets/{ConfigActionImageInput-CuTH4Nw2.js → ConfigActionImageInput-BgtACnCm.js} +1 -1
  25. package/dist/interface/assets/{ConfigActionMqtt-B9SfWP-G.js → ConfigActionMqtt-z7UzccW5.js} +1 -1
  26. package/dist/interface/assets/{ConfigActionNotification-BGMIByJT.js → ConfigActionNotification-bhbb5AqU.js} +1 -1
  27. package/dist/interface/assets/{ConfigActionNotificationControl-Cz72szMd.js → ConfigActionNotificationControl-BbvX8MFu.js} +1 -1
  28. package/dist/interface/assets/{ConfigActionOutput-BG6DoIRe.js → ConfigActionOutput-DdgSg3FU.js} +1 -1
  29. package/dist/interface/assets/{ConfigActionPlugin-B5oRSE9n.js → ConfigActionPlugin-DGjZd1L0.js} +1 -1
  30. package/dist/interface/assets/ConfigActionSensor-DmImWFAo.js +1 -0
  31. package/dist/interface/assets/{ConfigActionSnapshot-Di-uxMrg.js → ConfigActionSnapshot-hVHSfdtS.js} +1 -1
  32. package/dist/interface/assets/{ConfigActionVariable-BBpUti5A.js → ConfigActionVariable-BIpruwsx.js} +1 -1
  33. package/dist/interface/assets/{ConfigConditionIfElse-DjOKPXQw.js → ConfigConditionIfElse-DRSpsoR4.js} +1 -1
  34. package/dist/interface/assets/{ConfigConditionSensorState-BzvvZvD0.js → ConfigConditionSensorState-C2SNARH7.js} +1 -1
  35. package/dist/interface/assets/{ConfigConditionSwitch-DQvdfUxR.js → ConfigConditionSwitch-4SbQcU7N.js} +1 -1
  36. package/dist/interface/assets/{ConfigConditionTime-BqOElX5C.js → ConfigConditionTime-ESX3shbg.js} +1 -1
  37. package/dist/interface/assets/{ConfigSensorValueInput-BT-0LhSH.js → ConfigSensorValueInput-CTUdAA-R.js} +1 -1
  38. package/dist/interface/assets/{ConfigTriggerDetection-1OkudUah.js → ConfigTriggerDetection-BRr6ixxQ.js} +1 -1
  39. package/dist/interface/assets/{ConfigTriggerGeofence-HGatk3C5.js → ConfigTriggerGeofence-D-xRMGrT.js} +1 -1
  40. package/dist/interface/assets/{ConfigTriggerManual-DpRr_vVq.js → ConfigTriggerManual-aXD6k1qa.js} +1 -1
  41. package/dist/interface/assets/{ConfigTriggerMqtt-C_MId3BY.js → ConfigTriggerMqtt-pjHW4yOL.js} +1 -1
  42. package/dist/interface/assets/{ConfigTriggerSchedule-BmwDqd6N.js → ConfigTriggerSchedule-CYOt57qg.js} +1 -1
  43. package/dist/interface/assets/{ConfigTriggerSensor-Rgx8q4g8.js → ConfigTriggerSensor-BwJ_cAqd.js} +1 -1
  44. package/dist/interface/assets/{ConfigTriggerSystem-4VsHPmbn.js → ConfigTriggerSystem-DBXIrjzU.js} +1 -1
  45. package/dist/interface/assets/{ConfigTriggerWebhook-Bs7zEfY0.js → ConfigTriggerWebhook-CccBmMCb.js} +1 -1
  46. package/dist/interface/assets/Console-DWAaz1C6.js +1 -0
  47. package/dist/interface/assets/CuiAssistantConversation-B3xEiNNt.js +5 -0
  48. package/dist/interface/assets/{CuiAssistantConversation-BmBhwrNh.css → CuiAssistantConversation-C5ca1lgX.css} +1 -1
  49. package/dist/interface/assets/CuiAutomationRunsDialog-CfylVPLI.js +1 -0
  50. package/dist/interface/assets/CuiBottomSheet-ACN23VLS.js +1 -0
  51. package/dist/interface/assets/{CuiBottomSheet-Dd3uOtnC.js → CuiBottomSheet-DEVNeDqa.js} +1 -1
  52. package/dist/interface/assets/CuiCameraPipCard-rR_FW9zq.js +1 -0
  53. package/dist/interface/assets/CuiCameraRecordings-CnorhPhf.js +1 -0
  54. package/dist/interface/assets/CuiCameraShares-BxUgedC_.js +1 -0
  55. package/dist/interface/assets/{CuiCameraTable-C7WLZ2pA.js → CuiCameraTable-C3GB4Q2y.js} +2 -2
  56. package/dist/interface/assets/CuiCameraTable-MHfnZSyK.js +1 -0
  57. package/dist/interface/assets/CuiChartTable-TAzZgetO.js +1 -0
  58. package/dist/interface/assets/{CuiConsole-CkZML0iY.js → CuiConsole-Cf5lOCE1.js} +2 -2
  59. package/dist/interface/assets/{CuiDataTable-BFIhx1D3.js → CuiDataTable-DfjXa0C1.js} +1 -1
  60. package/dist/interface/assets/CuiLightControl-ChK-SvJp.js +1 -0
  61. package/dist/interface/assets/CuiList-C4fxd9lD.js +1 -0
  62. package/dist/interface/assets/CuiPluginCard-DMpANIQj.js +2 -0
  63. package/dist/interface/assets/CuiPluginCategoryChip-BKxJMid7.js +1 -0
  64. package/dist/interface/assets/{CuiPluginOAuthButton-BQZkTcgo.js → CuiPluginOAuthButton-DnQ838JJ.js} +2 -2
  65. package/dist/interface/assets/{CuiPluginTrustBadge-DbqdfdaL.js → CuiPluginTrustBadge-DyYDUWV6.js} +1 -1
  66. package/dist/interface/assets/{CuiQRCode-2WsWJQFi.js → CuiQRCode-S9fPi0_l.js} +1 -1
  67. package/dist/interface/assets/CuiSchema-DScmDQsh.js +1 -0
  68. package/dist/interface/assets/CuiTopNavbarItem-CT10aAlO.js +1 -0
  69. package/dist/interface/assets/Faces-Coy-tUVM.js +1 -0
  70. package/dist/interface/assets/FirstSteps-CrMJC049.js +1 -0
  71. package/dist/interface/assets/Floorplan-Bj_mVrxp.js +1 -0
  72. package/dist/interface/assets/{Floorplan-Ci63Zd8W.css → Floorplan-CT5TrMSD.css} +1 -1
  73. package/dist/interface/assets/Instances-B_mpKAng.js +1 -0
  74. package/dist/interface/assets/{Logs-DMehPk0t.js → Logs-fY1dpQk4.js} +2 -2
  75. package/dist/interface/assets/Menu-Bgi-NLdg.js +1 -0
  76. package/dist/interface/assets/Metrics-DnMeIrkf.css +1 -0
  77. package/dist/interface/assets/Metrics-k9KACiwh.js +12 -0
  78. package/dist/interface/assets/OAuthDeviceFlow-xTh83xmc.js +1 -0
  79. package/dist/interface/assets/Plugin-BB7x7UHw.css +1 -0
  80. package/dist/interface/assets/Plugin-VWq7sONB.js +1 -0
  81. package/dist/interface/assets/{PluginConsole-D1BRQCO9.js → PluginConsole-LnnDOVBL.js} +2 -2
  82. package/dist/interface/assets/PluginDetail-CKD9sbDx.js +2 -0
  83. package/dist/interface/assets/{PluginSchema-B9VsBHOU.js → PluginSchema-BnB0_6Sk.js} +1 -1
  84. package/dist/interface/assets/PluginSearch-BoBZLLbr.js +1 -0
  85. package/dist/interface/assets/PluginSearch-kGhweU1J.js +2 -0
  86. package/dist/interface/assets/{PluginUpdateProgress-uj0XPV-_.js → PluginUpdateProgress-DMx0QlgE.js} +1 -1
  87. package/dist/interface/assets/{Plugins-CPx9Hszm.js → Plugins-Ekmr6aVa.js} +1 -1
  88. package/dist/interface/assets/RecentEventsFilter-StLJNuks.js +1 -0
  89. package/dist/interface/assets/Recordings-8PqxJOI3.css +1 -0
  90. package/dist/interface/assets/Recordings-Bvkuk_TV.js +1 -0
  91. package/dist/interface/assets/SensorEdit-CAf9Nb01.js +1 -0
  92. package/dist/interface/assets/SensorHistory-il8bDErX.js +1 -0
  93. package/dist/interface/assets/Sensors-sxQ6HLKo.js +2 -0
  94. package/dist/interface/assets/Settings-Bu0G7Ebx.js +1 -0
  95. package/dist/interface/assets/{Settings-D7495zbV.css → Settings-DtCSaLPb.css} +1 -1
  96. package/dist/interface/assets/SettingsAccount-8OZJLQi-.js +1 -0
  97. package/dist/interface/assets/SettingsAccount-bSfFi9YH.js +1 -0
  98. package/dist/interface/assets/SettingsAppearance-CnvN_Tzr.js +1 -0
  99. package/dist/interface/assets/SettingsAppearance-EvPWgF4c.js +1 -0
  100. package/dist/interface/assets/SettingsAssistant-B6s6pHCx.js +1 -0
  101. package/dist/interface/assets/SettingsBackup-Dd2FaUcN.js +1 -0
  102. package/dist/interface/assets/SettingsList-SvCO_gfG.js +1 -0
  103. package/dist/interface/assets/SettingsMqtt-BXBzHX84.js +1 -0
  104. package/dist/interface/assets/SettingsNotifications-CV-jJwFV.js +1 -0
  105. package/dist/interface/assets/SettingsPermissions-GchFaWjz.js +1 -0
  106. package/dist/interface/assets/SettingsRecordings-C4Ch_jmV.js +1 -0
  107. package/dist/interface/assets/SettingsRemote-OZHDJKSq.js +2 -0
  108. package/dist/interface/assets/SettingsSystem-BJlHXwVs.js +2 -0
  109. package/dist/interface/assets/SettingsUsers-RGOkOzx0.js +1 -0
  110. package/dist/interface/assets/Terminal-DX-ECC91.js +4 -0
  111. package/dist/interface/assets/Training-B8my7vka.js +1 -0
  112. package/dist/interface/assets/Training-D1DDjCCD.css +1 -0
  113. package/dist/interface/assets/Updates-DmavyhAn.js +2 -0
  114. package/dist/interface/assets/{VariableInput-CcILik4M.js → VariableInput-DQJle67Y.js} +1 -1
  115. package/dist/interface/assets/{VariableSuggestions-Bj0HdrYW.js → VariableSuggestions-D8V739dF.js} +1 -1
  116. package/dist/interface/assets/{VersionsHandler-BA8Lcysg.js → VersionsHandler-B41TJhgY.js} +1 -1
  117. package/dist/interface/assets/{VirtualSensorCreate-DvHyw7I2.js → VirtualSensorCreate-MfLh-LpH.js} +1 -1
  118. package/dist/interface/assets/Workers-CafDeRhH.js +2 -0
  119. package/dist/interface/assets/api-By0v6EeA.css +2 -0
  120. package/dist/interface/assets/api-D1iULsSy.js +4 -0
  121. package/dist/interface/assets/{api-CKbL5jC7.js → api-DbUdfXO_.js} +1 -1
  122. package/dist/interface/assets/{assistant-CwmHp5bB.js → assistant-7hqP6OpA.js} +1 -1
  123. package/dist/interface/assets/{auth-AfZrkJ2f.js → auth-CDxrn7fe.js} +1 -1
  124. package/dist/interface/assets/{automations-DOCG0q8-.js → automations-CTTQlGCW.js} +1 -1
  125. package/dist/interface/assets/{cameraSources-mHEz9ROa.js → cameraSources-MOiE_1-W.js} +1 -1
  126. package/dist/interface/assets/cloudHandoff-CJzFH7CW.js +1 -0
  127. package/dist/interface/assets/{config-AG0SnOiY.js → config-6EiGxiYm.js} +1 -1
  128. package/dist/interface/assets/eventLabels-idFWh3Y_.js +1 -0
  129. package/dist/interface/assets/{flowSchema-B0d3VjU7.js → flowSchema-Dp_-p9WA.js} +1 -1
  130. package/dist/interface/assets/{intercomService-DG3EeZ6s.js → intercomService-BQYzjnAi.js} +1 -1
  131. package/dist/interface/assets/main-0oXl_8v7.js +3 -0
  132. package/dist/interface/assets/main-CdvAniEp.css +1 -0
  133. package/dist/interface/assets/mqtt-ChvXxMhR.js +1 -0
  134. package/dist/interface/assets/{notifications-8FH4ApEz.js → notifications-CbL-1oMs.js} +1 -1
  135. package/dist/interface/assets/{plugins-2JLUEMYc.js → plugins-lsoAntRQ.js} +1 -1
  136. package/dist/interface/assets/{rooms-DoAfzA8W.js → rooms-P8WrRIco.js} +1 -1
  137. package/dist/interface/assets/sensorIcons-BRTtoaHX.js +1 -0
  138. package/dist/interface/assets/{sensorSlots-biaL-O8E.js → sensorSlots-BTj-IM7z.js} +1 -1
  139. package/dist/interface/assets/{sensors-DyAMdS-H.js → sensors-Dxc7HgjZ.js} +1 -1
  140. package/dist/interface/assets/{server-BDRUGj61.js → server-DlK8gUoE.js} +1 -1
  141. package/dist/interface/assets/{theme-CLxrnR60.js → theme-BOppzzar.js} +1 -1
  142. package/dist/interface/assets/types-CeruGCb8.js +1 -0
  143. package/dist/interface/assets/{types-8JXzkoC8.js → types-J1Drrxo1.js} +1 -1
  144. package/dist/interface/assets/types-U4AuTNLR.js +1 -0
  145. package/dist/interface/assets/ungrouped-ING_JAuK.js +1 -0
  146. package/dist/interface/assets/{updates-F-veEP1I.js → updates-DtVp84Y0.js} +1 -1
  147. package/dist/interface/assets/{useAppVersion-BjUQmB7M.js → useAppVersion-BGgCk5GD.js} +1 -1
  148. package/dist/interface/assets/{useAssistantActions-CNEJol4o.js → useAssistantActions-C13O5EHU.js} +1 -1
  149. package/dist/interface/assets/useBackupRestore-vrhmc9i-.js +1 -0
  150. package/dist/interface/assets/{useCameraOptions-D_oduve2.js → useCameraOptions-CI1baRmm.js} +1 -1
  151. package/dist/interface/assets/{useKeyboardInset-CPWSVYlA.js → useKeyboardInset-CvgJp091.js} +1 -1
  152. package/dist/interface/assets/{useLogsSocket-B_jXUqv8.js → useLogsSocket-Bf0BI8ET.js} +1 -1
  153. package/dist/interface/assets/{useNavLayout-DEngIIeU.js → useNavLayout-6zM1Y-7B.js} +1 -1
  154. package/dist/interface/assets/{usePermissions-DAO92InI.js → usePermissions-DZitFsBQ.js} +1 -1
  155. package/dist/interface/assets/{usePluginUpdates-CJi8Y_wl.js → usePluginUpdates-VZdpJ_Ax.js} +1 -1
  156. package/dist/interface/assets/{usePushRegistration-j9WCeFbv.js → usePushRegistration-vcbMrTxZ.js} +1 -1
  157. package/dist/interface/assets/{useServerRestart-BVks5tuC.js → useServerRestart-DrpuNbIu.js} +1 -1
  158. package/dist/interface/assets/{useStreamStatus-DQ0NSyU8.js → useStreamStatus-l3Pfk1H4.js} +1 -1
  159. package/dist/interface/assets/{useTabSwipe-CVq7EcIY.js → useTabSwipe-BSpi25WV.js} +1 -1
  160. package/dist/interface/assets/{useUpdateChannel-C0fjDvNP.js → useUpdateChannel-kAl-5UNY.js} +1 -1
  161. package/dist/interface/assets/{useUpdatesSocket-DXKF9hzc.js → useUpdatesSocket-CaFz_fEb.js} +1 -1
  162. package/dist/interface/assets/{useUserOptions-UjMeAL5n.js → useUserOptions-BKteXnmU.js} +1 -1
  163. package/dist/interface/assets/vendor-cameraui-K1Nw4PvF.js +2326 -0
  164. package/dist/interface/assets/vendor-core-CJdfpB0I.js +1 -0
  165. package/dist/interface/assets/{vendor-primevue-Zx6t06A4.js → vendor-primevue-DoA2Rwcb.js} +871 -871
  166. package/dist/interface/assets/walk-B8FNhXuj.js +1 -0
  167. package/dist/interface/ha/{404-D5gfy0Cd.js → 404-RtgPpD9N.js} +1 -1
  168. package/dist/interface/ha/{About-JzlpCzBN.js → About-0PRv9bU0.js} +4 -4
  169. package/dist/interface/ha/{Assistant-DgOfGesf.js → Assistant-DbwxVfpl.js} +1021 -1021
  170. package/dist/interface/ha/{Automation-BDaWYiBu.js → Automation-D3HomdH7.js} +159 -155
  171. package/dist/interface/ha/{AutomationImport-BNB_PJ9R.js → AutomationImport-nQUUvZcv.js} +6 -6
  172. package/dist/interface/ha/{AutomationStore-_TeOt1wz.js → AutomationStore-BXDD92wZ.js} +8 -8
  173. package/dist/interface/ha/{AutomationStoreDetail-jjIEZoRi.js → AutomationStoreDetail-BYeq7FID.js} +19 -19
  174. package/dist/interface/ha/{Automations-DM6FEVOw.js → Automations-CJlGqmSP.js} +74 -74
  175. package/dist/interface/ha/Camera-Ai4BxVh_.js +747 -0
  176. package/dist/interface/ha/{CameraConsole-BoVql05l.js → CameraConsole-UMNOX3dE.js} +4 -4
  177. package/dist/interface/ha/{Cameras-cQBGvXq7.js → Cameras-BW-AEXYi.js} +266 -266
  178. package/dist/interface/ha/{Camview-mkG5FXZM.js → Camview-jikpVEE0.js} +195 -194
  179. package/dist/interface/ha/{Config-BNPDzo_h.js → Config-BOxwBH2D.js} +111 -111
  180. package/dist/interface/ha/{ConfigActionAssistant-C-8P3DYz.js → ConfigActionAssistant--3iWk9sq.js} +4 -4
  181. package/dist/interface/ha/{ConfigActionCameraControl-x1ksGL7m.js → ConfigActionCameraControl-DbVXWTeA.js} +3 -3
  182. package/dist/interface/ha/{ConfigActionHttp-DzCJp85z.js → ConfigActionHttp-Du3n2Yj0.js} +2 -2
  183. package/dist/interface/ha/{ConfigActionImageInput-C5C5U_2z.js → ConfigActionImageInput-BrJrTZTY.js} +4 -4
  184. package/dist/interface/ha/{ConfigActionMqtt-T29xb75r.js → ConfigActionMqtt-DZd1BNUt.js} +4 -4
  185. package/dist/interface/ha/{ConfigActionNotification-BcnyilF9.js → ConfigActionNotification-CJWW10gt.js} +3 -3
  186. package/dist/interface/ha/{ConfigActionNotificationControl-D3wIVKuU.js → ConfigActionNotificationControl-Bl41AVv1.js} +2 -2
  187. package/dist/interface/ha/{ConfigActionOutput-hD-yVczw.js → ConfigActionOutput-OTj7Lwgq.js} +1 -1
  188. package/dist/interface/ha/{ConfigActionPlugin-Bz1O-O4Q.js → ConfigActionPlugin-B790PEk0.js} +8 -8
  189. package/dist/interface/ha/{ConfigActionSensor-FOz-PYl_.js → ConfigActionSensor-BG3jZxge.js} +5 -5
  190. package/dist/interface/ha/{ConfigActionSnapshot-CmxEOuK1.js → ConfigActionSnapshot-fGmLl6jb.js} +2 -2
  191. package/dist/interface/ha/{ConfigActionVariable-BCvkrdCh.js → ConfigActionVariable-CK3vYDsr.js} +1 -1
  192. package/dist/interface/ha/{ConfigConditionIfElse-icfTG9OA.js → ConfigConditionIfElse-DyFLGg3y.js} +3 -3
  193. package/dist/interface/ha/{ConfigConditionSensorState-ClUAsm0d.js → ConfigConditionSensorState-BUTfeFO2.js} +7 -7
  194. package/dist/interface/ha/{ConfigConditionSwitch-C8AMCkn6.js → ConfigConditionSwitch-iDG_ubif.js} +5 -5
  195. package/dist/interface/ha/{ConfigSensorValueInput-ChvDQzGd.js → ConfigSensorValueInput-BmRIGUKB.js} +5 -5
  196. package/dist/interface/ha/{ConfigTriggerDetection-aUSyaClu.js → ConfigTriggerDetection-DyPQGt9M.js} +24 -24
  197. package/dist/interface/ha/{ConfigTriggerGeofence-DsJeJWP4.js → ConfigTriggerGeofence-CGE-bH_t.js} +6 -6
  198. package/dist/interface/ha/{ConfigTriggerMqtt-CsAxA7QZ.js → ConfigTriggerMqtt-CM3KZqBc.js} +1 -1
  199. package/dist/interface/ha/{ConfigTriggerSensor-CTxr9cfU.js → ConfigTriggerSensor-DoHMcwP4.js} +1 -1
  200. package/dist/interface/ha/{ConfigTriggerSystem-C8UEfpfs.js → ConfigTriggerSystem-BYKbW4Zr.js} +2 -2
  201. package/dist/interface/ha/{ConfigTriggerWebhook-frEE-SCB.js → ConfigTriggerWebhook-5PBAadG8.js} +2 -2
  202. package/dist/interface/ha/{Console-A3VtbsLg.js → Console-BEXzl4p1.js} +7 -7
  203. package/dist/interface/ha/{CuiAutomationRunsDialog-BlJvhBiX.js → CuiAutomationRunsDialog-DkK_ar5G.js} +3 -3
  204. package/dist/interface/ha/{CuiBottomSheet-Cu-t3H0Z.js → CuiBottomSheet-CYNvQV4T.js} +2 -2
  205. package/dist/interface/ha/{CuiCameraRecordings-R5ArEmqJ.js → CuiCameraRecordings-DYjecmE_.js} +30 -48
  206. package/dist/interface/ha/{CuiCameraShares-B9pfRkM4.js → CuiCameraShares-C0H60nZS.js} +7 -7
  207. package/dist/interface/ha/{CuiCameraTable-CKjGKaMC.js → CuiCameraTable-CQNMyBaq.js} +5 -5
  208. package/dist/interface/ha/{CuiChartTable-BxWjRe-k.js → CuiChartTable-Bhv1p9zj.js} +1161 -1161
  209. package/dist/interface/ha/{CuiConsole-C5fzsR7t.js → CuiConsole-DtXorGF5.js} +20 -20
  210. package/dist/interface/ha/{CuiDataTable-BOdQDY8J.js → CuiDataTable-Cy8EjCk9.js} +7 -7
  211. package/dist/interface/ha/{CuiList-CU2NJ1K6.js → CuiList-DnW6Q5m2.js} +1 -1
  212. package/dist/interface/ha/{CuiPluginCard-BT71RRAD.js → CuiPluginCard-B4SCUblV.js} +125 -125
  213. package/dist/interface/ha/{CuiPluginOAuthButton-moh9uS7G.js → CuiPluginOAuthButton-BKg9SftQ.js} +5 -5
  214. package/dist/interface/ha/{CuiPluginTrustBadge-F_pVWkPJ.js → CuiPluginTrustBadge-CEtUJhCJ.js} +1 -1
  215. package/dist/interface/ha/{CuiQRCode-BNuj-nJ4.js → CuiQRCode-gp-9hqyk.js} +7 -7
  216. package/dist/interface/ha/{CuiSchema-Cb_8Ks-I.js → CuiSchema-CYpr_dD7.js} +161 -161
  217. package/dist/interface/ha/{CuiTopNavbarItem-BGzrrTls.js → CuiTopNavbarItem-CM-1oPxf.js} +1 -1
  218. package/dist/interface/ha/Faces-pa60ySng.js +1575 -0
  219. package/dist/interface/ha/{FirstSteps-BFX0-EEi.js → FirstSteps-D42yZm7R.js} +68 -68
  220. package/dist/interface/ha/{Floorplan-D6MGqSJT.js → Floorplan-BvE546pE.js} +512 -511
  221. package/dist/interface/ha/{Instances-CHzIUyyA.js → Instances-CAGCyfbB.js} +64 -64
  222. package/dist/interface/ha/{Logs-DZKM3dWv.js → Logs-RB3Ba8WM.js} +12 -12
  223. package/dist/interface/ha/{Menu-BQz4dfQi.js → Menu-hAnHu_jq.js} +17 -17
  224. package/dist/interface/ha/{Metrics-CdpWJ1mm.js → Metrics-ChYTebkX.js} +94 -93
  225. package/dist/interface/ha/{OAuthDeviceFlow-DUELtx3X.js → OAuthDeviceFlow-C05pH-9o.js} +3 -3
  226. package/dist/interface/ha/{Plugin-5bbTF0Rv.js → Plugin-D7XwcXkW.js} +647 -439
  227. package/dist/interface/ha/{PluginConsole-C__0lzsS.js → PluginConsole-DphEIOlL.js} +4 -4
  228. package/dist/interface/ha/{PluginDetail-Blrktk9W.js → PluginDetail-DfMl-yCl.js} +9 -9
  229. package/dist/interface/ha/{PluginSearch-BKbdwHQ1.js → PluginSearch-BPN4Opg5.js} +34 -34
  230. package/dist/interface/ha/{PluginUpdateProgress-IsNiecu3.js → PluginUpdateProgress-ByJ0R5sW.js} +3 -3
  231. package/dist/interface/ha/{Plugins-CC2Dwlx5.js → Plugins-BhKmjjNn.js} +59 -59
  232. package/dist/interface/ha/{RecentEventsFilter-9ZkDHD1g.js → RecentEventsFilter-BkLMlGVJ.js} +5 -6
  233. package/dist/interface/ha/Recordings-BaU7M1OW.js +1836 -0
  234. package/dist/interface/ha/{SensorEdit-Bi2Yx_ji.js → SensorEdit-DWxcCJ0F.js} +88 -88
  235. package/dist/interface/ha/{SensorHistory-sqG_6eav.js → SensorHistory-DuA9E9wT.js} +2 -2
  236. package/dist/interface/ha/{Sensors-DLtOh1p4.js → Sensors-CVpIHcgG.js} +438 -435
  237. package/dist/interface/ha/{Settings-DI3_zenm.js → Settings-BO2eBGEn.js} +61 -61
  238. package/dist/interface/ha/{SettingsAccount-pS86Qyr-.js → SettingsAccount-BQZZfoSM.js} +255 -255
  239. package/dist/interface/ha/{SettingsAppearance-tS3bubKQ.js → SettingsAppearance-B_yGl89u.js} +16 -16
  240. package/dist/interface/ha/{SettingsAssistant-LejCRXsF.js → SettingsAssistant-kMOixl9g.js} +501 -501
  241. package/dist/interface/ha/{SettingsBackup-CkhD1Kze.js → SettingsBackup-BpG-W4j-.js} +24 -24
  242. package/dist/interface/ha/{SettingsList-bibwvPSM.js → SettingsList-Btnkzu94.js} +6 -6
  243. package/dist/interface/ha/{SettingsMqtt-DSt0B4Qg.js → SettingsMqtt-C4DX9cNC.js} +23 -23
  244. package/dist/interface/ha/{SettingsNotifications-BF7ajNwE.js → SettingsNotifications-DI6ImggH.js} +6 -6
  245. package/dist/interface/ha/{SettingsPermissions-Jh0FuIF7.js → SettingsPermissions-BCDyCFcb.js} +2 -2
  246. package/dist/interface/ha/{SettingsRecordings-BTIdncxg.js → SettingsRecordings-Bq5NkJhd.js} +10 -10
  247. package/dist/interface/ha/{SettingsRemote-Cba4P1-O.js → SettingsRemote-CtncaPIA.js} +308 -308
  248. package/dist/interface/ha/{SettingsSystem-_Nnh2ZF5.js → SettingsSystem-BJXuA7xA.js} +11 -11
  249. package/dist/interface/ha/{SettingsUsers-BfHFoxJi.js → SettingsUsers-BF0rDluv.js} +91 -91
  250. package/dist/interface/ha/{Terminal-Dv_7oWmS.js → Terminal-kTCe2jP3.js} +11 -11
  251. package/dist/interface/ha/Training-BM2Xb8Ef.js +1754 -0
  252. package/dist/interface/ha/{Updates-BHl5H7zE.js → Updates-Cv1EY_T0.js} +6 -6
  253. package/dist/interface/ha/{VariableInput-DtLo7-Nw.js → VariableInput-BO2zZu4N.js} +1 -1
  254. package/dist/interface/ha/{VersionsHandler-CF0DSeol.js → VersionsHandler-CRnT9-K7.js} +10 -10
  255. package/dist/interface/ha/{VirtualSensorCreate-C907EgIz.js → VirtualSensorCreate-6dVRxPjw.js} +8 -8
  256. package/dist/interface/ha/{Workers-Dz1d9gEQ.js → Workers-MHia86lu.js} +97 -97
  257. package/dist/interface/ha/{api-DUqpDJ2N.js → api-CH_Y8Hee.js} +17459 -14633
  258. package/dist/interface/ha/{api-gId1nlMj.js → api-DylRa66V.js} +3 -3
  259. package/dist/interface/ha/{assistant-BaR65gIY.js → assistant-smRQYA6p.js} +53 -53
  260. package/dist/interface/ha/{auth-Btsz_KxO.js → auth-BXj5Fm6s.js} +38 -38
  261. package/dist/interface/ha/{automationBlueprint-CuO3iOiM.js → automationBlueprint-DGjftXFC.js} +4 -4
  262. package/dist/interface/ha/cameraui-cards.js +1 -1
  263. package/dist/interface/ha/{cards-DWhezIPP.js → cards-E0zw1UVg.js} +114 -113
  264. package/dist/interface/ha/{config-BKStpoEQ.js → config-dG_DA6XL.js} +16 -16
  265. package/dist/interface/ha/{dist-CM7R4_Gj.js → dist-BQf9ANPx.js} +77 -77
  266. package/dist/interface/ha/{dist-BIngHzHx.js → dist-euRmladF.js} +4 -4
  267. package/dist/interface/ha/{eventIcons-BFNUgeGr.js → eventLabels-B5GrM5jO.js} +291 -233
  268. package/dist/interface/ha/{intercomService-B7HkLs6z.js → intercomService-BtJ_zUNd.js} +250 -264
  269. package/dist/interface/ha/{mqtt-ajcSmTB-.js → mqtt-CP3vVkRJ.js} +12 -12
  270. package/dist/interface/ha/{notifications-Cf9dXHEO.js → notifications-CZNwSXTg.js} +22 -22
  271. package/dist/interface/ha/{pinia-DIKO5lnE.js → pinia-CVnHHb-s.js} +533 -501
  272. package/dist/interface/ha/{plugins-ml823dJV.js → plugins--eatOIaI.js} +66 -66
  273. package/dist/interface/ha/{protocol-BB4jdtUC-DW3jl2tV.js → protocol-BB4jdtUC-BhEwymva.js} +129 -48
  274. package/dist/interface/ha/{rooms-C5gUErBi.js → rooms-D5E6K75d.js} +8 -8
  275. package/dist/interface/ha/{server-dArenpJI.js → server-D1BqEY7i.js} +31 -31
  276. package/dist/interface/ha/{types-DYymuACA.js → types-CWogEoya.js} +36 -36
  277. package/dist/interface/ha/ungrouped-Ch4UX4dy.js +58 -0
  278. package/dist/interface/ha/{updates-D5sFzGtC.js → updates-B48Owi1w.js} +28 -28
  279. package/dist/interface/ha/{useAppVersion-C5x3Ap4_.js → useAppVersion-D95sKTJR.js} +2 -2
  280. package/dist/interface/ha/{useAssistantActions-S1FrNe9b.js → useAssistantActions-kDwiO-u5.js} +1 -1
  281. package/dist/interface/ha/{useKeyboardInset-Cj0T2AFX.js → useKeyboardInset-C2R51vsC.js} +1 -1
  282. package/dist/interface/ha/{useLogsSocket-DtvfQlPh.js → useLogsSocket-BzNWa2y2.js} +1 -1
  283. package/dist/interface/ha/{useNavLayout-HSFBA4JV.js → useNavLayout-228cwwqA.js} +19 -19
  284. package/dist/interface/ha/{usePermissions-DaE_wFch.js → usePermissions-CfA5x7Df.js} +1 -1
  285. package/dist/interface/ha/{useServerRestart-Ci0SppGW.js → useServerRestart-B0c40zs5.js} +1 -1
  286. package/dist/interface/ha/{useTabSwipe-CPKkRmaH.js → useTabSwipe-CfZg5hWj.js} +2 -2
  287. package/dist/interface/ha/{useUpdateChannel-CXHHovK3.js → useUpdateChannel-DQxI7FrD.js} +2 -2
  288. package/dist/interface/ha/{useUpdatesSocket-DVST2YXV.js → useUpdatesSocket-B8LqBBd3.js} +1 -1
  289. package/dist/interface/ha/{useUserOptions-BYcYI6QA.js → useUserOptions-dZf6ejlz.js} +1 -1
  290. package/dist/interface/ha/walk-CsSXaeJw.js +33 -0
  291. package/dist/interface/index.html +35 -36
  292. package/dist/interface/sw.js +1 -1
  293. package/dist/interface/workbox-5f52ac45.js +1 -0
  294. package/dist/server/package.json +11 -11
  295. package/dist/server/requirements.txt +2 -2
  296. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/__init__.py +22 -0
  297. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/config.py +4 -0
  298. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/__init__.py +10 -0
  299. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/contract.py +6 -0
  300. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/interfaces.py +92 -4
  301. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/__init__.py +16 -0
  302. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/base.py +4 -0
  303. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/face_embedder.py +1 -1
  304. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/object.py +3 -3
  305. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/person_embedder.py +65 -0
  306. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/segmenter.py +81 -0
  307. package/dist/server/src/api/database/index.d.ts +2 -1
  308. package/dist/server/src/api/database/index.js +31 -7
  309. package/dist/server/src/api/database/index.js.map +1 -1
  310. package/dist/server/src/api/database/migrations/v2-2-9.d.ts +3 -0
  311. package/dist/server/src/api/database/migrations/v2-2-9.js +28 -0
  312. package/dist/server/src/api/database/migrations/v2-2-9.js.map +1 -0
  313. package/dist/server/src/api/database/record-schemas.d.ts +1 -1
  314. package/dist/server/src/api/database/types.d.ts +17 -1
  315. package/dist/server/src/api/schemas/assistant.schema.d.ts +1 -1
  316. package/dist/server/src/api/schemas/cameras.schema.d.ts +140 -76
  317. package/dist/server/src/api/schemas/cameras.schema.js +4 -2
  318. package/dist/server/src/api/schemas/cameras.schema.js.map +1 -1
  319. package/dist/server/src/api/schemas/training.schema.d.ts +15 -3
  320. package/dist/server/src/api/schemas/training.schema.js +4 -1
  321. package/dist/server/src/api/schemas/training.schema.js.map +1 -1
  322. package/dist/server/src/api/websocket/nsp/worker-perf.js +2 -0
  323. package/dist/server/src/api/websocket/nsp/worker-perf.js.map +1 -1
  324. package/dist/server/src/api/websocket/types.d.ts +1 -0
  325. package/dist/server/src/assistant/search.d.ts +17 -0
  326. package/dist/server/src/assistant/search.js +10 -2
  327. package/dist/server/src/assistant/search.js.map +1 -1
  328. package/dist/server/src/assistant/tools/plugins.js +7 -3
  329. package/dist/server/src/assistant/tools/plugins.js.map +1 -1
  330. package/dist/server/src/assistant/types.d.ts +2 -0
  331. package/dist/server/src/automations/actions/plugin.js +5 -9
  332. package/dist/server/src/automations/actions/plugin.js.map +1 -1
  333. package/dist/server/src/automations/pluginMethodRegistry.d.ts +6 -0
  334. package/dist/server/src/automations/pluginMethodRegistry.js +39 -0
  335. package/dist/server/src/automations/pluginMethodRegistry.js.map +1 -1
  336. package/dist/server/src/automations/segment-picture.d.ts +16 -0
  337. package/dist/server/src/automations/segment-picture.js +152 -0
  338. package/dist/server/src/automations/segment-picture.js.map +1 -0
  339. package/dist/server/src/camera/decoder/detection-coordinator.d.ts +5 -2
  340. package/dist/server/src/camera/decoder/detection-coordinator.js +45 -22
  341. package/dist/server/src/camera/decoder/detection-coordinator.js.map +1 -1
  342. package/dist/server/src/camera/decoder/detection-pipeline.d.ts +30 -2
  343. package/dist/server/src/camera/decoder/detection-pipeline.js +81 -21
  344. package/dist/server/src/camera/decoder/detection-pipeline.js.map +1 -1
  345. package/dist/server/src/camera/decoder/event-manager.d.ts +12 -2
  346. package/dist/server/src/camera/decoder/event-manager.js +77 -75
  347. package/dist/server/src/camera/decoder/event-manager.js.map +1 -1
  348. package/dist/server/src/camera/decoder/event-trace.d.ts +41 -1
  349. package/dist/server/src/camera/decoder/event-trace.js +63 -8
  350. package/dist/server/src/camera/decoder/event-trace.js.map +1 -1
  351. package/dist/server/src/camera/decoder/face-tracks.d.ts +26 -0
  352. package/dist/server/src/camera/decoder/face-tracks.js +199 -0
  353. package/dist/server/src/camera/decoder/face-tracks.js.map +1 -0
  354. package/dist/server/src/camera/decoder/frame-scaler.d.ts +3 -1
  355. package/dist/server/src/camera/decoder/frame-scaler.js +36 -8
  356. package/dist/server/src/camera/decoder/frame-scaler.js.map +1 -1
  357. package/dist/server/src/camera/decoder/nvr-sink.d.ts +6 -0
  358. package/dist/server/src/camera/decoder/nvr-sink.js +1 -1
  359. package/dist/server/src/camera/decoder/nvr-sink.js.map +1 -1
  360. package/dist/server/src/camera/decoder/perf-tracker.d.ts +2 -0
  361. package/dist/server/src/camera/decoder/perf-tracker.js +4 -0
  362. package/dist/server/src/camera/decoder/perf-tracker.js.map +1 -1
  363. package/dist/server/src/camera/decoder/ptz/autotracker.d.ts +6 -1
  364. package/dist/server/src/camera/decoder/ptz/autotracker.js +107 -25
  365. package/dist/server/src/camera/decoder/ptz/autotracker.js.map +1 -1
  366. package/dist/server/src/camera/decoder/secondary-stage.d.ts +10 -8
  367. package/dist/server/src/camera/decoder/secondary-stage.js +145 -125
  368. package/dist/server/src/camera/decoder/secondary-stage.js.map +1 -1
  369. package/dist/server/src/camera/decoder/training-sink.d.ts +5 -2
  370. package/dist/server/src/camera/decoder/training-sink.js +30 -6
  371. package/dist/server/src/camera/decoder/training-sink.js.map +1 -1
  372. package/dist/server/src/camera/decoder/types.d.ts +6 -2
  373. package/dist/server/src/camera/decoder/types.js +4 -2
  374. package/dist/server/src/camera/decoder/types.js.map +1 -1
  375. package/dist/server/src/manager/trainingCandidateManager.d.ts +2 -1
  376. package/dist/server/src/manager/trainingCandidateManager.js +25 -3
  377. package/dist/server/src/manager/trainingCandidateManager.js.map +1 -1
  378. package/dist/server/src/manager/trainingSubmission.d.ts +5 -0
  379. package/dist/server/src/manager/trainingSubmission.js +73 -0
  380. package/dist/server/src/manager/trainingSubmission.js.map +1 -0
  381. package/dist/server/src/manager/types.d.ts +8 -2
  382. package/dist/server/src/manager/types.js.map +1 -1
  383. package/dist/server/src/plugins/runtime/python/proxy/sensor.py +2 -0
  384. package/dist/server/src/remote/api/routes/train.d.ts +44 -3
  385. package/dist/server/src/remote/api/routes/train.js +2 -2
  386. package/dist/server/src/remote/api/routes/train.js.map +1 -1
  387. package/dist/server/src/rpc/interfaces/core.d.ts +6 -2
  388. package/dist/server/src/rpc/interfaces/detection.d.ts +20 -3
  389. package/dist/server/src/rpc/server.d.ts +2 -0
  390. package/dist/server/src/rpc/server.js +8 -5
  391. package/dist/server/src/rpc/server.js.map +1 -1
  392. package/dist/server/src/sensors/registry.d.ts +1 -0
  393. package/dist/server/src/sensors/registry.js +20 -11
  394. package/dist/server/src/sensors/registry.js.map +1 -1
  395. package/dist/server/src/sensors/types.d.ts +1 -0
  396. package/dist/server/src/sensors/types.js +3 -0
  397. package/dist/server/src/sensors/types.js.map +1 -1
  398. package/dist/server/src/services/config/index.d.ts +1 -0
  399. package/dist/server/src/services/config/index.js +2 -0
  400. package/dist/server/src/services/config/index.js.map +1 -1
  401. package/dist/server/src/utils/image.d.ts +6 -0
  402. package/dist/server/src/utils/image.js +58 -22
  403. package/dist/server/src/utils/image.js.map +1 -1
  404. package/npm-shrinkwrap.json +115 -74
  405. package/package.json +11 -11
  406. package/dist/interface/assets/About-DBOS1rfw.js +0 -1
  407. package/dist/interface/assets/Assistant-BQ6Ld-bt.css +0 -1
  408. package/dist/interface/assets/Assistant-BRcHj8hq.js +0 -1
  409. package/dist/interface/assets/Automation-C0Emde7z.js +0 -3
  410. package/dist/interface/assets/AutomationStore-C2G0Bk8c.js +0 -2
  411. package/dist/interface/assets/Automations-D-vfqRnZ.js +0 -2
  412. package/dist/interface/assets/Camera-BpurrgAr.js +0 -2
  413. package/dist/interface/assets/Camera-D0B7yyVD.css +0 -1
  414. package/dist/interface/assets/Camview-IbOVRx20.js +0 -1
  415. package/dist/interface/assets/ConfigActionCameraControl-Bw_egtpP.js +0 -1
  416. package/dist/interface/assets/ConfigActionSensor-BErRRYfl.js +0 -1
  417. package/dist/interface/assets/Console-oCuuVKET.js +0 -1
  418. package/dist/interface/assets/CuiAssistantConversation-Bsyxau9v.js +0 -5
  419. package/dist/interface/assets/CuiAutomationRunsDialog-sRh_K6JI.js +0 -1
  420. package/dist/interface/assets/CuiBottomSheet-DWoSHzC7.js +0 -1
  421. package/dist/interface/assets/CuiCameraPipCard-D6REm8uT.js +0 -1
  422. package/dist/interface/assets/CuiCameraRecordings-C2tvrbbw.js +0 -1
  423. package/dist/interface/assets/CuiCameraShares-jrrUEHoZ.js +0 -1
  424. package/dist/interface/assets/CuiCameraTable-BOzTWLwd.js +0 -1
  425. package/dist/interface/assets/CuiChartTable-BYrIX7LV.js +0 -1
  426. package/dist/interface/assets/CuiLightControl-DitIWqUr.js +0 -1
  427. package/dist/interface/assets/CuiList-BewTNr2X.js +0 -1
  428. package/dist/interface/assets/CuiPluginCard-Bd2HFduI.js +0 -2
  429. package/dist/interface/assets/CuiPluginCategoryChip-DlzOwRgc.js +0 -1
  430. package/dist/interface/assets/CuiSchema-BL0QZmP2.js +0 -1
  431. package/dist/interface/assets/CuiTopNavbarItem-Ti2TueU1.js +0 -1
  432. package/dist/interface/assets/Faces-DARrGLXf.js +0 -1
  433. package/dist/interface/assets/FirstSteps-DBYPBvGr.js +0 -1
  434. package/dist/interface/assets/Floorplan-BaZvzoyv.js +0 -1
  435. package/dist/interface/assets/Instances-r0xReURi.js +0 -1
  436. package/dist/interface/assets/Menu-C34RRyLd.js +0 -1
  437. package/dist/interface/assets/Metrics-BjoC71_O.js +0 -12
  438. package/dist/interface/assets/Metrics-DsHBab6t.css +0 -1
  439. package/dist/interface/assets/OAuthDeviceFlow-CdZxelf2.js +0 -1
  440. package/dist/interface/assets/Plugin-Qr_Q_Qfi.css +0 -1
  441. package/dist/interface/assets/Plugin-npx7CnwV.js +0 -1
  442. package/dist/interface/assets/PluginDetail-nwTrJmO6.js +0 -2
  443. package/dist/interface/assets/PluginSearch-CP2kQWKf.js +0 -1
  444. package/dist/interface/assets/PluginSearch-WEvbKMRs.js +0 -2
  445. package/dist/interface/assets/RecentEventsFilter-D5VSH2K1.js +0 -1
  446. package/dist/interface/assets/Recordings-BEKAn6QK.css +0 -1
  447. package/dist/interface/assets/Recordings-De6Zcv0M.js +0 -1
  448. package/dist/interface/assets/SensorEdit-SD_oHBRo.js +0 -1
  449. package/dist/interface/assets/SensorHistory-SxiLOloa.js +0 -1
  450. package/dist/interface/assets/Sensors-Djl64M-W.js +0 -2
  451. package/dist/interface/assets/Settings-CAf2reGs.js +0 -1
  452. package/dist/interface/assets/SettingsAccount-BGj5Ni91.js +0 -1
  453. package/dist/interface/assets/SettingsAccount-Dy6WC8ql.js +0 -1
  454. package/dist/interface/assets/SettingsAppearance-BGFhMlRk.js +0 -1
  455. package/dist/interface/assets/SettingsAppearance-DQzQmVzE.js +0 -1
  456. package/dist/interface/assets/SettingsAssistant-BwYVyuN3.js +0 -1
  457. package/dist/interface/assets/SettingsBackup-CVExGnOo.js +0 -1
  458. package/dist/interface/assets/SettingsList-vo7sz_MY.js +0 -1
  459. package/dist/interface/assets/SettingsMqtt-B1CuOcML.js +0 -1
  460. package/dist/interface/assets/SettingsNotifications-CCQ6eiq8.js +0 -1
  461. package/dist/interface/assets/SettingsPermissions-BlOf6HEy.js +0 -1
  462. package/dist/interface/assets/SettingsRecordings-7tTBg6m1.js +0 -1
  463. package/dist/interface/assets/SettingsRemote-DBgKmIdv.js +0 -2
  464. package/dist/interface/assets/SettingsSystem-DaFMsZpN.js +0 -2
  465. package/dist/interface/assets/SettingsUsers-DXACwVPi.js +0 -1
  466. package/dist/interface/assets/Terminal-DtGqlHbk.js +0 -4
  467. package/dist/interface/assets/Training-C-ToeAl4.css +0 -1
  468. package/dist/interface/assets/Training-Ca11D1Vj.js +0 -1
  469. package/dist/interface/assets/Updates-yenwuqnD.js +0 -2
  470. package/dist/interface/assets/Workers-Dyo44zxe.js +0 -2
  471. package/dist/interface/assets/api-CHQlxVtZ.css +0 -2
  472. package/dist/interface/assets/api-CLazgL-g.js +0 -4
  473. package/dist/interface/assets/cloudHandoff-zJCrDmwk.js +0 -1
  474. package/dist/interface/assets/eventIcons-C3JWChgS.js +0 -1
  475. package/dist/interface/assets/eventLabels-BsPoPWS9.js +0 -1
  476. package/dist/interface/assets/main-CGY9cVyi.css +0 -1
  477. package/dist/interface/assets/main-DkHV6YgB.js +0 -3
  478. package/dist/interface/assets/mqtt-DE2VbNdt.js +0 -1
  479. package/dist/interface/assets/sensorIcons-BntiOPX7.js +0 -1
  480. package/dist/interface/assets/types-B4LLKzDW.js +0 -1
  481. package/dist/interface/assets/types-a7Nw-P-m.js +0 -1
  482. package/dist/interface/assets/ungrouped-BoAbb9w3.js +0 -1
  483. package/dist/interface/assets/ungrouped-ChmBvcXp.css +0 -1
  484. package/dist/interface/assets/useBackupRestore-Biqn_lhh.js +0 -1
  485. package/dist/interface/assets/vendor-cameraui-GmMRyJ2R.js +0 -2326
  486. package/dist/interface/assets/vendor-core-BeAannbA.js +0 -1
  487. package/dist/interface/ha/Camera-sH9fRv18.js +0 -670
  488. package/dist/interface/ha/Faces-CsM5VO8Q.js +0 -1441
  489. package/dist/interface/ha/Recordings-B1XsJrzs.js +0 -1539
  490. package/dist/interface/ha/Training-CaSFA5oH.js +0 -1699
  491. package/dist/interface/ha/eventLabels-B4C1_4vT.js +0 -42
  492. package/dist/interface/ha/ungrouped-BHLAySWP.js +0 -1312
  493. package/dist/interface/workbox-778a14ff.js +0 -1
@@ -1,1312 +0,0 @@
1
- import { Et as e, et as t, f as n, gt as r, i, m as a, rt as o } from "./ripple-ZDATPc2w.js";
2
- import { n as s } from "./virtualscroller-B-UQZDMJ.js";
3
- import { A as c, D as l, G as u, H as d, Jt as f, K as p, M as m, N as h, Wt as g, Y as _, _t as v, d as y, f as b, gt as x, kt as S, l as C, lt as w, ot as ee, p as T, q as E, r as D, rt as O, st as te, u as k, ut as ne, x as A, xt as j, y as M, z as re } from "./runtime-core.esm-bundler-_TfE0DWz.js";
4
- import { $ as ie, Bn as ae, Dn as oe, Dr as se, Hn as ce, On as le, Or as N, Pn as ue, Q as de, Sr as fe, Un as P, Vn as pe, Wr as me, _r as he, ct as ge, dr as _e, et as ve, gt as ye, ir as be, it as xe, lt as Se, nr as Ce, nt as we, o as Te, rr as Ee, rt as De, tt as Oe, ur as ke, wi as Ae, yr as je, zn as Me } from "./api-DUqpDJ2N.js";
5
- import { A as Ne, _ as Pe, o as Fe } from "./intercomService-B7HkLs6z.js";
6
- import { n as Ie } from "./vue-i18n-D5EAy78K.js";
7
- import { i as Le } from "./alert-outline-FcLLjoOK.js";
8
- import { t as Re } from "./eventIcons-BFNUgeGr.js";
9
- import { t as ze } from "./spinner-DIILjDT9.js";
10
- import { M as Be } from "./dist-CM7R4_Gj.js";
11
- import { t as F } from "./inputtext-C_ygnPrC.js";
12
- import { t as I } from "./select-DV7p2EDj.js";
13
- //#region ~icons/tabler/user-edit
14
- var L = {
15
- viewBox: "0 0 24 24",
16
- width: "1.2em",
17
- height: "1.2em"
18
- };
19
- function Ve(e, t) {
20
- return d(), T("svg", L, [...t[0] ||= [k("path", {
21
- fill: "none",
22
- stroke: "currentColor",
23
- "stroke-linecap": "round",
24
- "stroke-linejoin": "round",
25
- "stroke-width": "2",
26
- d: "M8 7a4 4 0 1 0 8 0a4 4 0 0 0-8 0M6 21v-2a4 4 0 0 1 4-4h3.5m4.92.61a2.1 2.1 0 0 1 2.97 2.97L18 22h-3v-3z"
27
- }, null, -1)]]);
28
- }
29
- var He = v({
30
- name: "tabler-user-edit",
31
- render: Ve
32
- }), R = { class: "flex flex-col gap-4 w-full" }, z = {
33
- key: 0,
34
- class: "flex justify-center"
35
- }, B = ["src", "alt"], V = { class: "flex flex-col gap-2 w-full" }, H = { class: "cui-label" }, U = { class: "flex flex-col gap-2 w-full" }, W = {
36
- for: "reassignTarget",
37
- class: "cui-label"
38
- }, Ue = /* @__PURE__ */ A({
39
- __name: "FaceReassign",
40
- props: {
41
- cropUrl: {},
42
- oldName: {}
43
- },
44
- setup(e, { expose: t }) {
45
- let n = e, { t: r } = Ie(), { plugin: i } = Be("@camera.ui/camera-ui-nvr"), a = j(null), o = j([]), s = j(!0), c = C(() => n.oldName === "unknown" ? r("views.recordings.reassign_unknown_person") : n.oldName), l = C(() => {
46
- let e = o.value.filter((e) => e !== n.oldName).map((e) => ({
47
- label: e,
48
- value: e
49
- }));
50
- return n.oldName !== "unknown" && e.push({
51
- label: r("views.recordings.reassign_unknown"),
52
- value: ""
53
- }), e;
54
- });
55
- return re(async () => {
56
- try {
57
- let e = await i.value?.listKnownFaces?.();
58
- o.value = (e ?? []).map((e) => e.name);
59
- } catch {} finally {
60
- s.value = !1;
61
- }
62
- }), t({ onConfirm: async () => a.value }), (e, t) => {
63
- let r = F, i = I;
64
- return d(), T("div", R, [
65
- n.cropUrl ? (d(), T("div", z, [k("img", {
66
- src: n.cropUrl,
67
- alt: S(c),
68
- class: "w-36 h-36 rounded-xl object-cover bg-neutral-900"
69
- }, null, 8, B)])) : b("", !0),
70
- k("div", V, [k("label", H, f(e.$t("views.recordings.reassign_current")), 1), M(r, {
71
- "model-value": S(c),
72
- class: "w-full",
73
- fluid: "",
74
- disabled: ""
75
- }, null, 8, ["model-value"])]),
76
- k("div", U, [k("label", W, f(e.$t("views.recordings.reassign_new")), 1), M(i, {
77
- id: "reassignTarget",
78
- modelValue: S(a),
79
- "onUpdate:modelValue": t[0] ||= (e) => x(a) ? a.value = e : null,
80
- options: S(l),
81
- "option-label": "label",
82
- "option-value": "value",
83
- class: "w-full",
84
- fluid: "",
85
- loading: S(s),
86
- disabled: S(s),
87
- placeholder: e.$t("views.faces.enter_or_pick_name")
88
- }, null, 8, [
89
- "modelValue",
90
- "options",
91
- "loading",
92
- "disabled",
93
- "placeholder"
94
- ])])
95
- ]);
96
- };
97
- }
98
- }), We = {
99
- key: 0,
100
- class: "card-skeleton absolute inset-0 rounded-xl"
101
- }, Ge = {
102
- key: 2,
103
- class: "w-full h-full flex items-center justify-center bg-neutral-800/80"
104
- }, Ke = { class: "absolute top-0 left-0 right-0 p-2 bg-gradient-to-b from-black/80 to-transparent z-[3]" }, qe = { class: "flex items-center gap-1.5" }, Je = { class: "text-xs font-semibold text-white truncate min-w-0 flex-1" }, Ye = {
105
- key: 0,
106
- class: "text-[10px] font-semibold text-white/80 bg-black/60 px-1.5 py-0.5 rounded-md shrink-0"
107
- }, Xe = ["title"], Ze = ["title", "disabled"], Qe = { class: "text-[10px] text-white/70" }, $e = ["aria-label"], et = ["aria-label"], tt = { class: "block text-[11px] text-white font-medium truncate bg-black/50 rounded-md px-2 py-0.5" }, nt = { class: "flex items-center gap-1 min-w-0" }, rt = ["title"], it = {
108
- key: 0,
109
- class: "flex items-center gap-0.5 shrink-0 opacity-85 group-hover:opacity-100 transition-opacity duration-200"
110
- }, at = ["onClick"], ot = ["src", "alt"], st = {
111
- key: 0,
112
- class: "text-[10px] text-white/60 font-medium"
113
- }, ct = {
114
- key: 6,
115
- class: "absolute inset-0 z-[4] flex items-center justify-center pointer-events-none"
116
- }, lt = {
117
- key: 7,
118
- class: "absolute bottom-10 left-1/2 -translate-x-1/2 z-[4] pointer-events-none"
119
- }, ut = {
120
- class: "text-[10px] font-semibold text-white bg-black/60 px-1.5 py-0.5 rounded-md whitespace-nowrap",
121
- style: { "font-variant-numeric": "tabular-nums" }
122
- }, dt = 24, ft = 30, pt = 22, mt = 28, ht = 8, gt = 8, G = /*#__PURE__*/ N(/* @__PURE__ */ A({
123
- __name: "RecordingCard",
124
- props: {
125
- event: {},
126
- cameraName: {},
127
- camera: {},
128
- loadThumbnails: { type: Function },
129
- semanticScore: {},
130
- segIndex: {},
131
- hideSegmentBadge: { type: Boolean },
132
- selectionMode: { type: Boolean },
133
- selected: { type: Boolean },
134
- siblingActive: { type: Boolean }
135
- },
136
- emits: [
137
- "scrollToEvent",
138
- "select",
139
- "openTrace"
140
- ],
141
- setup(e, { emit: t }) {
142
- let r = e, i = t, o = Fe(), s = Ae(), { t: c } = Ie(), p = me(), m = Ee("@camera.ui/camera-ui-nvr"), { plugin: v } = Be("@camera.ui/camera-ui-nvr"), x = ye(), { icons: w } = Re(), E = m.getCachedThumbnails(r.event.id), te = E ? P(E, r.event, "card", r.segIndex).url ? "loaded" : "empty" : "loading", A = l(Me, void 0), N = O("rootRef"), Pe = O("previewCanvasRef"), ze = O("footerRef"), F = O("cardMenuRef"), I = j(!1), L = j(!1), Ve = we(N, () => Kt(), () => $()), R = j(!1), z = j(E ?? null), B = j(te), V = j(!1), H = j(0), U = j(null), W = j(!1), G = j(), _t = j(0), vt = C(() => he(void 0, "admin")), yt = C(() => U.value ?? r.event.favorite ?? !1), bt = C(() => {
143
- if (r.semanticScore == null) return;
144
- let e = Math.max(0, Math.min(1, r.semanticScore));
145
- return {
146
- pct: e,
147
- label: `${(e * 100).toFixed(0)}%`,
148
- color: e >= .5 ? "bg-green-500/80" : e >= .25 ? "bg-yellow-500/80" : "bg-red-400/80"
149
- };
150
- }), K = C(() => z.value ? P(z.value, r.event, "card", r.segIndex) : null), q = C(() => {
151
- let e = r.segIndex ?? K.value?.segIndex;
152
- return e === void 0 ? void 0 : r.event.segments?.[e];
153
- }), xt = C(() => K.value?.url), St = C(() => K.value?.label), Ct = C(() => K.value?.type ?? r.event.types[0] ?? "motion"), J = C(() => {
154
- if (r.hideSegmentBadge) return;
155
- let e = r.event.segments?.length ?? 0;
156
- return r.segIndex !== void 0 && e > 1 ? `${r.segIndex + 1}/${e}` : void 0;
157
- }), Y = C(() => {
158
- let e = z.value, t = K.value?.url;
159
- if (!e || !t) return [];
160
- let n = [{
161
- url: t,
162
- label: K.value?.label,
163
- type: Ct.value,
164
- crop: !1
165
- }];
166
- for (let t of Ce(e, r.segIndex, r.event)) n.some((e) => e.url === t.url) || n.push({
167
- url: t.url,
168
- label: t.label,
169
- type: t.type,
170
- crop: !0,
171
- faceSeg: t.seg ?? -1,
172
- attrIndex: t.attrIndex
173
- });
174
- if (r.segIndex === void 0) for (let t of Object.keys(e.cards ?? e.strips ?? {}).sort((e, t) => Number(e) - Number(t))) {
175
- let i = ae(e.cards?.[t] ?? e.strips?.[t]);
176
- if (!i || n.some((e) => e.url === i)) continue;
177
- let a = xe(r.event, t);
178
- n.push({
179
- url: i,
180
- label: a,
181
- type: a,
182
- crop: !1
183
- });
184
- }
185
- return n.length > 1 ? n : [];
186
- }), wt = C(() => Y.value.length > 1), X = C(() => Y.value.length ? Math.min(H.value, Y.value.length - 1) : 0), Z = C(() => wt.value ? Y.value[X.value] : void 0), Tt = C(() => !!Z.value?.crop), Et = C(() => Z.value?.url ?? xt.value), Dt = C(() => Z.value?.label ?? St.value), Q = C(() => {
187
- let e = q.value;
188
- return (e ? pe(r.event, e) : [...new Set(r.event.types)]).filter((e) => e !== "motion" && e !== "audio");
189
- }), Ot = C(() => r.cameraName ?? r.event.cameraId), kt = C(() => Y.value.map((e) => ({
190
- url: e.url,
191
- type: e.type
192
- }))), At = C(() => Q.value.slice(0, jt.value.icons)), jt = C(() => {
193
- let e = _t.value;
194
- if (!e) return {
195
- icons: 2,
196
- tiles: 2
197
- };
198
- let t = e - ht;
199
- r.selectionMode && (t -= mt);
200
- let n = kt.value.length > 0 ? 52 : 0, i = Ht(Q.value.length, Math.max(0, t - n), dt), a = Q.value.length > 0 ? Math.max(1, i) : 0, o = a * dt + (a < Q.value.length ? pt : 0);
201
- return {
202
- icons: a,
203
- tiles: Ht(kt.value.length, Math.max(0, t - o), ft)
204
- };
205
- }), Mt = C(() => Q.value.slice(jt.value.icons)), Nt = C(() => kt.value.slice(0, jt.value.tiles)), Pt = C(() => kt.value.length - jt.value.tiles), Ft = C(() => {
206
- let e = new Date(q.value?.firstSeen ?? r.event.thumbnailAt ?? r.event.startTime), t = /* @__PURE__ */ new Date(), n = e.toDateString() === t.toDateString(), i = e.toLocaleTimeString([], {
207
- hour: "2-digit",
208
- minute: "2-digit"
209
- });
210
- return n ? i : `${e.toLocaleDateString([], {
211
- month: "short",
212
- day: "numeric"
213
- })} ${i}`;
214
- }), It = C(() => !!(v.value && r.event.endTime && r.event.hasRecording !== !1)), Lt = C(() => A ? L.value ? c("views.recordings.no_preview") : R.value ? A.status.value === "unavailable" ? c("views.recordings.no_preview") : A.status.value === "playing" && A.previewTimeMs.value ? Gt(A.previewTimeMs.value) : "" : "" : ""), Rt = C(() => {
215
- let e = Z.value;
216
- if (e?.crop) return e.type === "face" ? {
217
- seg: e.faceSeg ?? -1,
218
- label: e.label || "unknown",
219
- attrIndex: e.attrIndex
220
- } : void 0;
221
- let t = r.segIndex ?? K.value?.segIndex;
222
- if (X.value > 0 || t === void 0) return;
223
- let n = q.value?.attributes ?? [], i = n.flatMap((e, t) => e.type === "face" ? [t] : []);
224
- return i.length === 1 ? {
225
- seg: t,
226
- label: n[i[0]].label || "unknown",
227
- attrIndex: i[0]
228
- } : void 0;
229
- }), zt = C(() => {
230
- let e = [];
231
- return vt.value && Rt.value && e.push({
232
- key: "reassign",
233
- label: c("views.recordings.reassign_face"),
234
- icon: He,
235
- loading: W.value,
236
- onClick: () => Qt()
237
- }), r.camera && e.push({
238
- key: "trace",
239
- label: c("views.recordings.open_trace"),
240
- icon: ge,
241
- onClick: () => i("openTrace", q.value?.firstSeen)
242
- }), e.push({
243
- key: "ask",
244
- label: c("views.recordings.ask_assistant"),
245
- icon: Le,
246
- onClick: () => Vt()
247
- }), It.value && e.push({
248
- key: "download",
249
- label: c("views.recordings.download"),
250
- icon: Se,
251
- loading: V.value,
252
- onClick: () => tn()
253
- }), e;
254
- });
255
- function Bt() {
256
- le(F.value?.hide);
257
- }
258
- function Vt() {
259
- let e = c("views.recordings.ask_assistant_prompt", {
260
- camera: r.cameraName ?? r.camera?.name ?? r.event.cameraId,
261
- time: new Date(r.event.startTime).toLocaleString(),
262
- id: r.event.id
263
- });
264
- p.push({
265
- path: "/assistant",
266
- query: { prompt: e }
267
- });
268
- }
269
- function Ht(e, t, n) {
270
- return e === 0 || t < n ? 0 : e * n <= t ? e : Math.max(0, Math.floor((t - pt) / n));
271
- }
272
- function Ut(e) {
273
- let t = Y.value.length;
274
- t && ($(), G.value = void 0, H.value = (X.value + e + t) % t);
275
- }
276
- function Wt(e, t) {
277
- wt.value && (t.stopPropagation(), $(), G.value = void 0, H.value = e);
278
- }
279
- function $() {
280
- L.value = !1, A && R.value && (R.value = !1, A.onHoverEnd());
281
- }
282
- function Gt(e) {
283
- let t = new Date(e);
284
- return `${String(t.getHours()).padStart(2, "0")}:${String(t.getMinutes()).padStart(2, "0")}:${String(t.getSeconds()).padStart(2, "0")}`;
285
- }
286
- function Kt() {
287
- if (!A || X.value > 0) return;
288
- let e = Pe.value;
289
- if (!e) return;
290
- let t = be(r.event);
291
- if (r.event.hasRecording === !1 || !t) {
292
- L.value = !0;
293
- return;
294
- }
295
- R.value = !0, A.onHoverStart(e, r.event.cameraId, r.event.id, r.event.startTime, t, r.camera?.zones?.privacy, ue(r.event));
296
- }
297
- function qt() {
298
- Ve.blocksMouseEnter() || Kt();
299
- }
300
- function Jt() {
301
- L.value = !1, A && (R.value = !1, A.onHoverEnd());
302
- }
303
- async function Yt(e = 2) {
304
- let t = await r.loadThumbnails(r.event.id, r.event.startTime);
305
- if (t) {
306
- z.value = t;
307
- let e = P(t, r.event, "card");
308
- B.value = e.url ? "loaded" : "empty";
309
- } else if (e > 0) return await new Promise((e) => setTimeout(e, 500)), Yt(e - 1);
310
- else B.value = r.event.state === "active" ? "loading" : "empty";
311
- }
312
- function Xt() {
313
- if (!Ve.consumesClick()) {
314
- if (r.selectionMode) {
315
- i("select");
316
- return;
317
- }
318
- i("scrollToEvent", q.value?.firstSeen ?? De(r.event));
319
- }
320
- }
321
- async function Zt(e) {
322
- $(), I.value || (I.value = !0, await h()), F.value?.toggleMenu(e);
323
- }
324
- function Qt() {
325
- let e = Rt.value;
326
- if (!e) return;
327
- let t = !!Z.value?.crop;
328
- x.openComponentDialog(Ue, {
329
- data: {
330
- title: c("views.recordings.reassign_face"),
331
- confirmText: c("components.form.button.save"),
332
- contentProps: {
333
- cropUrl: Z.value?.url,
334
- oldName: e.label
335
- }
336
- },
337
- onConfirm: (n) => $t(e, n, t)
338
- });
339
- }
340
- async function $t(e, t, n) {
341
- if (W.value) return;
342
- let i = v.value;
343
- if (i?.reassignEventFace) {
344
- W.value = !0;
345
- try {
346
- let a = e.attrIndex === void 0 ? void 0 : { attrIndex: e.attrIndex };
347
- await i.reassignEventFace(r.event.id, e.seg, e.label, t, a) > 0 && (n && (G.value = {
348
- seg: e.seg,
349
- label: t || "unknown",
350
- attrIndex: e.attrIndex
351
- }), ce(r.event.id)), s.add({
352
- severity: "success",
353
- detail: c("views.recordings.reassign_done"),
354
- life: 3e3
355
- });
356
- } catch (e) {
357
- s.add({
358
- severity: "error",
359
- detail: Te(e),
360
- life: 5e3
361
- });
362
- } finally {
363
- W.value = !1;
364
- }
365
- }
366
- }
367
- async function en() {
368
- let e = !yt.value;
369
- U.value = e;
370
- try {
371
- await m.setEventFavorite(r.event.id, e);
372
- } catch (e) {
373
- U.value = null, s.add({
374
- severity: "error",
375
- detail: Te(e),
376
- life: 5e3
377
- });
378
- }
379
- }
380
- async function tn() {
381
- if (V.value) return;
382
- let e = v.value;
383
- if (e?.nvrExport && r.event.endTime) {
384
- V.value = !0;
385
- try {
386
- let t = await e.nvrExport(r.event.cameraId, r.event.startTime * 1e3, r.event.endTime * 1e3);
387
- await fe({
388
- url: t.url,
389
- filename: t.filename
390
- });
391
- } catch (e) {
392
- o.error("Download failed:", e), s.add({
393
- severity: "error",
394
- summary: c("views.recordings.download_failed"),
395
- detail: Te(e),
396
- life: 5e3
397
- });
398
- } finally {
399
- V.value = !1;
400
- }
401
- }
402
- }
403
- return ee(Y, (e) => {
404
- let t = G.value;
405
- if (!t) return;
406
- let n = e.findIndex((e) => e.crop && e.faceSeg === t.seg && (t.attrIndex === void 0 ? e.label === t.label : e.attrIndex === t.attrIndex));
407
- n < 0 || (H.value = n, G.value = void 0);
408
- }), ee(() => m.storeVersion.value, () => {
409
- let e = m.getCachedThumbnails(r.event.id);
410
- if (!e) {
411
- z.value && Yt();
412
- return;
413
- }
414
- z.value = e, P(e, r.event, "card").url && (B.value = "loaded");
415
- }), Ne(ze, (e) => {
416
- let t = e[0]?.contentRect.width ?? 0, n = Math.round(t / gt) * gt;
417
- n !== _t.value && (_t.value = n);
418
- }), re(() => {
419
- te === "loading" && Yt();
420
- }), (t, r) => {
421
- let i = se, o = de, s = ie, c = ve, l = Oe, p = ke, m = _e, h = je;
422
- return d(), T("div", {
423
- ref_key: "rootRef",
424
- ref: N,
425
- class: "recording-card relative group cursor-pointer",
426
- onClickCapture: Bt,
427
- onClick: Xt,
428
- onMouseenter: qt,
429
- onMouseleave: Jt
430
- }, [k("div", {
431
- class: g(["bg-neutral-900 w-full rounded-xl overflow-hidden relative transition-shadow duration-200", { "ring-2 ring-inset ring-primary/70": e.siblingActive }]),
432
- style: { "aspect-ratio": "1/1" }
433
- }, [
434
- S(B) === "loading" ? (d(), T("div", We)) : S(Et) ? (d(), y(i, {
435
- key: 1,
436
- src: S(Et),
437
- alt: S(Ot),
438
- class: "pointer-events-none w-full h-full transition-transform duration-300 group-hover:scale-105",
439
- "image-style": { objectFit: S(Tt) ? "contain" : "cover" },
440
- "image-container-class": "w-full h-full"
441
- }, null, 8, [
442
- "src",
443
- "alt",
444
- "image-style"
445
- ])) : (d(), T("div", Ge, [(d(), y(_(S(w)[S(Ct)] ?? S(w).motion), { class: "w-10 h-10 text-white/20" }))])),
446
- S(A) ? ne((d(), T("canvas", {
447
- key: 3,
448
- ref_key: "previewCanvasRef",
449
- ref: Pe,
450
- class: "absolute inset-0 w-full h-full object-cover pointer-events-none z-[1]"
451
- }, null, 512)), [[n, S(R)]]) : b("", !0),
452
- r[2] ||= k("div", { class: "absolute inset-0 bg-transparent group-hover:bg-black/30 pointer-events-none transition-colors duration-200 z-[2]" }, null, -1),
453
- k("div", Ke, [k("div", qe, [
454
- k("p", Je, f(S(Ot)), 1),
455
- S(J) ? (d(), T("span", Ye, f(S(J)), 1)) : b("", !0),
456
- S(bt) ? (d(), T("span", {
457
- key: 1,
458
- class: g(["text-[10px] font-bold text-white px-1.5 py-0.5 rounded-md shrink-0", S(bt).color])
459
- }, f(S(bt).label), 3)) : b("", !0),
460
- S(vt) && !e.selectionMode ? (d(), T("button", {
461
- key: 2,
462
- title: S(yt) ? t.$t("views.recordings.unfavorite") : t.$t("views.recordings.favorite"),
463
- type: "button",
464
- class: "card-icon-button w-5 h-5 shrink-0",
465
- onClick: a(en, ["stop"]),
466
- onMouseenter: $
467
- }, [S(yt) ? (d(), y(o, {
468
- key: 0,
469
- class: "w-3 h-3 text-yellow-400"
470
- })) : (d(), y(s, {
471
- key: 1,
472
- class: "w-3 h-3 text-white"
473
- }))], 40, Xe)) : b("", !0),
474
- S(zt).length > 0 && !e.selectionMode ? (d(), T("button", {
475
- key: 3,
476
- title: t.$t("views.recordings.more_actions"),
477
- type: "button",
478
- class: "card-icon-button w-5 h-5 shrink-0",
479
- disabled: S(V) || S(W),
480
- onClick: a(Zt, ["stop"]),
481
- onMouseenter: $
482
- }, [S(V) || S(W) ? (d(), y(c, {
483
- key: 0,
484
- class: "w-3 h-3 text-white"
485
- })) : (d(), y(l, {
486
- key: 1,
487
- class: "w-3 h-3 text-white"
488
- }))], 40, Ze)) : b("", !0)
489
- ]), k("p", Qe, f(S(Ft)), 1)]),
490
- S(Y).length > 1 ? (d(), T(D, { key: 4 }, [k("button", {
491
- type: "button",
492
- class: "card-icon-button carousel-nav absolute left-1 top-1/2 -translate-y-1/2 z-[3] w-7 h-7 transition-opacity duration-200",
493
- "aria-label": t.$t("views.recordings.prev_image"),
494
- onClick: r[0] ||= a((e) => Ut(-1), ["stop"]),
495
- onMouseenter: $
496
- }, [M(p, { class: "w-5 h-5 text-white" })], 40, $e), k("button", {
497
- type: "button",
498
- class: "card-icon-button carousel-nav absolute right-1 top-1/2 -translate-y-1/2 z-[3] w-7 h-7 transition-opacity duration-200",
499
- "aria-label": t.$t("views.recordings.next_image"),
500
- onClick: r[1] ||= a((e) => Ut(1), ["stop"]),
501
- onMouseenter: $
502
- }, [M(m, { class: "w-5 h-5 text-white" })], 40, et)], 64)) : b("", !0),
503
- S(Dt) ? (d(), T("div", {
504
- key: 5,
505
- class: g(["absolute left-1/2 -translate-x-1/2 z-[3] max-w-[85%] pointer-events-none transition-all duration-200", S(Lt) ? "bottom-16" : "bottom-10"])
506
- }, [k("span", tt, f(S(Dt)), 1)], 2)) : b("", !0),
507
- k("div", {
508
- ref_key: "footerRef",
509
- ref: ze,
510
- class: "absolute bottom-2 left-2 right-2 flex items-center justify-between gap-2 z-[3]"
511
- }, [k("div", nt, [
512
- e.selectionMode ? (d(), T("div", {
513
- key: 0,
514
- class: g(["w-6 h-6 rounded-full border-2 flex items-center justify-center transition-colors shrink-0", e.selected ? "bg-primary border-primary" : "bg-black/40 border-white/80"])
515
- }, [e.selected ? (d(), y(h, {
516
- key: 0,
517
- class: "w-4 h-4 text-white"
518
- })) : b("", !0)], 2)) : b("", !0),
519
- (d(!0), T(D, null, u(S(At), (e) => (d(), T("div", {
520
- key: e,
521
- class: "flex items-center justify-center w-5 h-5 rounded-md bg-black/60 shrink-0"
522
- }, [(d(), y(_(S(w)[e] ?? S(w).motion), { class: "w-3 h-3 text-white/80" }))]))), 128)),
523
- S(Mt).length > 0 ? (d(), T("span", {
524
- key: 1,
525
- title: S(Mt).join(", "),
526
- class: "text-[10px] text-white/60 font-medium shrink-0"
527
- }, " +" + f(S(Mt).length), 9, rt)) : b("", !0)
528
- ]), S(Nt).length > 0 || S(Pt) > 0 ? (d(), T("div", it, [(d(!0), T(D, null, u(S(Nt), (e, t) => (d(), T("div", {
529
- key: t,
530
- class: g(["w-7 h-7 rounded overflow-hidden border bg-neutral-800 cursor-pointer", t === S(X) ? "border-primary/80" : "border-white/20"]),
531
- onClick: (e) => Wt(t, e)
532
- }, [k("img", {
533
- src: e.url,
534
- alt: e.type,
535
- decoding: "async",
536
- loading: "lazy",
537
- class: "w-full h-full object-cover"
538
- }, null, 8, ot)], 10, at))), 128)), S(Pt) > 0 ? (d(), T("span", st, "+" + f(S(Pt)), 1)) : b("", !0)])) : b("", !0)], 512),
539
- S(A) && S(R) && S(A).isLoading.value ? (d(), T("div", ct, [M(c, { class: "w-7 h-7 text-white" })])) : b("", !0),
540
- S(Lt) ? (d(), T("div", lt, [k("span", ut, f(S(Lt)), 1)])) : b("", !0)
541
- ], 2), S(I) ? (d(), y(oe, {
542
- key: 0,
543
- ref_key: "cardMenuRef",
544
- ref: F,
545
- items: S(zt),
546
- popover: { pt: { content: { class: "p-0! rounded-xl! overflow-hidden!" } } }
547
- }, null, 8, ["items"])) : b("", !0)], 544);
548
- };
549
- }
550
- }), [["__scopeId", "data-v-3cd39ea4"]]), _t = {
551
- name: "VirtualScroller",
552
- components: { SpinnerIcon: ze },
553
- extends: {
554
- name: "BaseVirtualScroller",
555
- extends: i,
556
- provide() {
557
- return {
558
- $pcVirtualScroller: this,
559
- $parentInstance: this
560
- };
561
- },
562
- props: {
563
- id: {
564
- type: String,
565
- default: null
566
- },
567
- style: null,
568
- class: null,
569
- items: {
570
- type: Array,
571
- default: null
572
- },
573
- itemSize: {
574
- type: [Number, Array],
575
- default: 0
576
- },
577
- scrollHeight: null,
578
- scrollWidth: null,
579
- orientation: {
580
- type: String,
581
- default: "vertical"
582
- },
583
- rtl: {
584
- type: Boolean,
585
- default: !1
586
- },
587
- numToleratedItems: {
588
- type: Number,
589
- default: null
590
- },
591
- delay: {
592
- type: Number,
593
- default: 0
594
- },
595
- resizeDelay: {
596
- type: Number,
597
- default: 10
598
- },
599
- lazy: {
600
- type: Boolean,
601
- default: !1
602
- },
603
- disabled: {
604
- type: Boolean,
605
- default: !1
606
- },
607
- loaderDisabled: {
608
- type: Boolean,
609
- default: !1
610
- },
611
- columns: {
612
- type: Array,
613
- default: null
614
- },
615
- loading: {
616
- type: Boolean,
617
- default: !1
618
- },
619
- showSpacer: {
620
- type: Boolean,
621
- default: !0
622
- },
623
- showLoader: {
624
- type: Boolean,
625
- default: !1
626
- },
627
- tabindex: {
628
- type: Number,
629
- default: 0
630
- },
631
- inline: {
632
- type: Boolean,
633
- default: !1
634
- },
635
- step: {
636
- type: Number,
637
- default: 0
638
- },
639
- appendOnly: {
640
- type: Boolean,
641
- default: !1
642
- },
643
- autoSize: {
644
- type: Boolean,
645
- default: !1
646
- },
647
- itemKey: {
648
- type: [String, Function],
649
- default: null
650
- }
651
- },
652
- style: s,
653
- beforeMount() {
654
- s.loadCSS({ nonce: this.$primevueConfig?.csp?.nonce });
655
- }
656
- },
657
- inheritAttrs: !1,
658
- emits: [
659
- "update:numToleratedItems",
660
- "scroll",
661
- "scroll-index-change",
662
- "lazy-load"
663
- ],
664
- data() {
665
- let e = this.isBoth();
666
- return {
667
- first: e ? {
668
- rows: 0,
669
- cols: 0
670
- } : 0,
671
- last: e ? {
672
- rows: 0,
673
- cols: 0
674
- } : 0,
675
- page: e ? {
676
- rows: 0,
677
- cols: 0
678
- } : 0,
679
- numItemsInViewport: e ? {
680
- rows: 0,
681
- cols: 0
682
- } : 0,
683
- lastScrollPos: e ? {
684
- top: 0,
685
- left: 0
686
- } : 0,
687
- d_numToleratedItems: this.numToleratedItems,
688
- d_loading: this.loading,
689
- loaderArr: [],
690
- spacerStyle: {},
691
- contentStyle: {},
692
- observedWidth: 0,
693
- observedHeight: 0
694
- };
695
- },
696
- element: null,
697
- content: null,
698
- lastScrollPos: null,
699
- scrollTimeout: null,
700
- resizeTimeout: null,
701
- defaultWidth: 0,
702
- defaultHeight: 0,
703
- defaultContentWidth: 0,
704
- defaultContentHeight: 0,
705
- isRangeChanged: !1,
706
- lazyLoadState: {},
707
- resizeListener: null,
708
- initialized: !1,
709
- computed: {
710
- containerClass() {
711
- return [
712
- "p-virtualscroller",
713
- this.class,
714
- {
715
- "p-virtualscroller-inline": this.inline,
716
- "p-virtualscroller-both p-both-scroll": this.isBoth(),
717
- "p-virtualscroller-horizontal p-horizontal-scroll": this.isHorizontal(),
718
- "p-virtualscroller-rtl": this.rtl && this.isHorizontal()
719
- }
720
- ];
721
- },
722
- contentClass() {
723
- return ["p-virtualscroller-content", { "p-virtualscroller-loading": this.d_loading }];
724
- },
725
- loaderClass() {
726
- return ["p-virtualscroller-loader", { "p-virtualscroller-loader-mask": !this.$slots.loader }];
727
- },
728
- loadedItems() {
729
- return this.items && !this.d_loading ? this.isBoth() ? this.items.slice(this.appendOnly ? 0 : this.first.rows, this.last.rows).map((e) => this.columns ? e : e.slice(this.appendOnly ? 0 : this.first.cols, this.last.cols)) : this.isHorizontal() && this.columns ? this.items : this.items.slice(this.appendOnly ? 0 : this.first, this.last) : [];
730
- },
731
- loadedRows() {
732
- return this.d_loading ? this.loaderDisabled ? this.loaderArr : [] : this.loadedItems;
733
- },
734
- loadedColumns() {
735
- if (this.columns) {
736
- let e = this.isBoth(), t = this.isHorizontal();
737
- if (e || t) return this.d_loading && this.loaderDisabled ? e ? this.loaderArr[0] : this.loaderArr : this.columns.slice(e ? this.first.cols : this.first, e ? this.last.cols : this.last);
738
- }
739
- return this.columns;
740
- }
741
- },
742
- watch: {
743
- numToleratedItems(e) {
744
- this.d_numToleratedItems = e;
745
- },
746
- loading(e, t) {
747
- this.lazy && e !== t && e !== this.d_loading && (this.d_loading = e);
748
- },
749
- items(e, t) {
750
- (!t || t.length !== (e || []).length) && this.scheduleInit();
751
- },
752
- itemSize() {
753
- this.scheduleInit();
754
- },
755
- orientation() {
756
- this.lastScrollPos = this.isBoth() ? {
757
- top: 0,
758
- left: 0
759
- } : 0;
760
- },
761
- scrollHeight() {
762
- this.scheduleInit();
763
- },
764
- scrollWidth() {
765
- this.scheduleInit();
766
- }
767
- },
768
- mounted() {
769
- this.viewInit(), this.lastScrollPos = this.isBoth() ? {
770
- top: 0,
771
- left: 0
772
- } : 0, this.lazyLoadState = this.lazyLoadState || {};
773
- },
774
- updated() {
775
- !this.initialized && this.viewInit();
776
- },
777
- unmounted() {
778
- this.unbindResizeListener(), this.unbindSizeObserver(), this.initialized = !1;
779
- },
780
- methods: {
781
- resolveItemKey(e, t) {
782
- let n = this.itemKey;
783
- return typeof n == "function" ? n(e, t) ?? t : typeof n == "string" && typeof e == "object" && e ? e[n] ?? t : t;
784
- },
785
- viewInit() {
786
- r(this.element) && (this.setContentEl(this.content), this.bindSizeObserver(), this.init(), this.calculateAutoSize(), this.bindResizeListener(), this.defaultWidth = t(this.element), this.defaultHeight = o(this.element), this.defaultContentWidth = t(this.content), this.defaultContentHeight = o(this.content), this.initialized = !0);
787
- },
788
- init() {
789
- this.disabled || (this.setSize(), this.calculateOptions(), this.setSpacerSize());
790
- },
791
- scheduleInit() {
792
- this._initScheduled || (this._initScheduled = !0, Promise.resolve().then(() => {
793
- this._initScheduled = !1, this.init(), this.calculateAutoSize();
794
- }));
795
- },
796
- isVertical() {
797
- return this.orientation === "vertical";
798
- },
799
- isHorizontal() {
800
- return this.orientation === "horizontal";
801
- },
802
- isBoth() {
803
- return this.orientation === "both";
804
- },
805
- scrollTo(e) {
806
- this.element && this.element.scrollTo(e);
807
- },
808
- scrollToIndex(e, t = "auto") {
809
- let n = this.isBoth(), r = this.isHorizontal(), i = this.rtl && r;
810
- if (n ? e.every((e) => e > -1) : e > -1) {
811
- let a = this.first, { scrollTop: o = 0, scrollLeft: s = 0 } = this.element, { numToleratedItems: c } = this.calculateNumItems(), l = this.getContentPosition(), u = this.itemSize, d = (e = 0, t) => e <= t ? 0 : e, f = (e, t, n) => e * t + n, p = (e = 0, n = 0) => {
812
- i && (e = this.element.scrollWidth - this.element.clientWidth - e), this.scrollTo({
813
- left: e,
814
- top: n,
815
- behavior: t
816
- });
817
- }, m = n ? {
818
- rows: 0,
819
- cols: 0
820
- } : 0, h = !1, g = !1;
821
- n ? (m = {
822
- rows: d(e[0], c[0]),
823
- cols: d(e[1], c[1])
824
- }, p(f(m.cols, u[1], l.left), f(m.rows, u[0], l.top)), g = this.lastScrollPos.top !== o || this.lastScrollPos.left !== s, h = m.rows !== a.rows || m.cols !== a.cols) : (m = d(e, c), r ? p(f(m, u, l.left), o) : p(s, f(m, u, l.top)), g = this.lastScrollPos !== (r ? s : o), h = m !== a), this.isRangeChanged = h, g && (this.first = m);
825
- }
826
- },
827
- scrollInView(e, t, n = "auto") {
828
- if (t) {
829
- let r = this.isBoth(), i = this.isHorizontal();
830
- if (r ? e.every((e) => e > -1) : e > -1) {
831
- let { first: a, viewport: o } = this.getRenderedRange(), s = (e = 0, t = 0) => this.scrollTo({
832
- left: e,
833
- top: t,
834
- behavior: n
835
- }), c = t === "to-start", l = t === "to-end";
836
- if (c) {
837
- if (r) o.first.rows - a.rows > e[0] ? s(o.first.cols * this.itemSize[1], (o.first.rows - 1) * this.itemSize[0]) : o.first.cols - a.cols > e[1] && s((o.first.cols - 1) * this.itemSize[1], o.first.rows * this.itemSize[0]);
838
- else if (o.first - a > e) {
839
- let e = (o.first - 1) * this.itemSize;
840
- i ? s(e, 0) : s(0, e);
841
- }
842
- } else if (l) {
843
- if (r) o.last.rows - a.rows <= e[0] + 1 ? s(o.first.cols * this.itemSize[1], (o.first.rows + 1) * this.itemSize[0]) : o.last.cols - a.cols <= e[1] + 1 && s((o.first.cols + 1) * this.itemSize[1], o.first.rows * this.itemSize[0]);
844
- else if (o.last - a <= e + 1) {
845
- let e = (o.first + 1) * this.itemSize;
846
- i ? s(e, 0) : s(0, e);
847
- }
848
- }
849
- }
850
- } else this.scrollToIndex(e, n);
851
- },
852
- getRenderedRange() {
853
- let e = (e, t) => Math.floor(e / (t || e)), t = this.first, n = 0;
854
- if (this.element) {
855
- let r = this.isBoth(), i = this.isHorizontal(), { scrollTop: a, scrollLeft: o } = this.element;
856
- r ? (t = {
857
- rows: e(a, this.itemSize[0]),
858
- cols: e(o, this.itemSize[1])
859
- }, n = {
860
- rows: t.rows + this.numItemsInViewport.rows,
861
- cols: t.cols + this.numItemsInViewport.cols
862
- }) : (t = e(i ? o : a, this.itemSize), n = t + this.numItemsInViewport);
863
- }
864
- return {
865
- first: this.first,
866
- last: this.last,
867
- viewport: {
868
- first: t,
869
- last: n
870
- }
871
- };
872
- },
873
- calculateNumItems() {
874
- let e = this.isBoth(), t = this.isHorizontal(), n = this.itemSize, r = this.getContentPosition(), i = this.observedWidth || (this.element ? this.element.offsetWidth : 0), a = this.observedHeight || (this.element ? this.element.offsetHeight : 0), o = i ? i - r.left : 0, s = a ? a - r.top : 0, c = (e, t) => Math.ceil(e / (t || e)), l = (e) => Math.ceil(e / 2), u = e ? {
875
- rows: c(s, n[0]),
876
- cols: c(o, n[1])
877
- } : c(t ? o : s, n);
878
- return {
879
- numItemsInViewport: u,
880
- numToleratedItems: this.d_numToleratedItems || (e ? [l(u.rows), l(u.cols)] : l(u))
881
- };
882
- },
883
- calculateOptions() {
884
- let e = this.isBoth(), t = this.first, { numItemsInViewport: n, numToleratedItems: r } = this.calculateNumItems(), i = (e, t, n, r = !1) => this.getLast(e + t + (e < n ? 2 : 3) * n, r), a = e ? {
885
- rows: i(t.rows, n.rows, r[0]),
886
- cols: i(t.cols, n.cols, r[1], !0)
887
- } : i(t, n, r);
888
- this.last = a, this.numItemsInViewport = n, this.d_numToleratedItems = r, this.$emit("update:numToleratedItems", this.d_numToleratedItems), this.showLoader && (this.loaderArr = e ? Array.from({ length: n.rows }).map(() => Array.from({ length: n.cols })) : Array.from({ length: n })), this.lazy && Promise.resolve().then(() => {
889
- this.lazyLoadState = {
890
- first: this.step ? e ? {
891
- rows: 0,
892
- cols: t.cols
893
- } : 0 : t,
894
- last: Math.min(this.step ? this.step : a, this.items?.length - 1 || 0)
895
- }, this.$emit("lazy-load", this.lazyLoadState);
896
- });
897
- },
898
- calculateAutoSize() {
899
- this.autoSize && !this.d_loading && Promise.resolve().then(() => {
900
- if (this.content) {
901
- let e = this.isBoth(), n = this.isHorizontal(), r = this.isVertical();
902
- this.content.style.minHeight = this.content.style.minWidth = "auto", this.content.style.position = "relative", this.element.style.contain = "none";
903
- let [i, a] = [t(this.element), o(this.element)];
904
- (e || n) && (this.element.style.width = i < this.defaultWidth ? i + "px" : this.scrollWidth || this.defaultWidth + "px"), (e || r) && (this.element.style.height = a < this.defaultHeight ? a + "px" : this.scrollHeight || this.defaultHeight + "px"), this.content.style.minHeight = this.content.style.minWidth = "", this.content.style.position = "", this.element.style.contain = "";
905
- }
906
- });
907
- },
908
- getLast(e = 0, t) {
909
- return this.items ? Math.min(t ? (this.columns || this.items[0])?.length || 0 : this.items?.length || 0, e) : 0;
910
- },
911
- getContentPosition() {
912
- if (this.content) {
913
- if (this.cachedContentPosition && this.cachedContentElement === this.content) return this.cachedContentPosition;
914
- let e = getComputedStyle(this.content), t = parseFloat(e.paddingLeft) + Math.max(parseFloat(e.left) || 0, 0), n = parseFloat(e.paddingRight) + Math.max(parseFloat(e.right) || 0, 0), r = parseFloat(e.paddingTop) + Math.max(parseFloat(e.top) || 0, 0), i = parseFloat(e.paddingBottom) + Math.max(parseFloat(e.bottom) || 0, 0);
915
- return this.cachedContentElement = this.content, this.cachedContentPosition = {
916
- left: t,
917
- right: n,
918
- top: r,
919
- bottom: i,
920
- x: t + n,
921
- y: r + i
922
- }, this.cachedContentPosition;
923
- }
924
- return {
925
- left: 0,
926
- right: 0,
927
- top: 0,
928
- bottom: 0,
929
- x: 0,
930
- y: 0
931
- };
932
- },
933
- setSize() {
934
- if (this.element) {
935
- let e = this.isBoth(), t = this.isHorizontal(), n = this.element.parentElement, r = this.scrollWidth || `${this.element.offsetWidth || n.offsetWidth}px`, i = this.scrollHeight || `${this.element.offsetHeight || n.offsetHeight}px`, a = (e, t) => this.element.style[e] = t;
936
- e || t ? (a("height", i), a("width", r)) : a("height", i);
937
- }
938
- },
939
- setSpacerSize() {
940
- let e = this.items;
941
- if (e) {
942
- let t = this.isBoth(), n = this.isHorizontal(), r = this.getContentPosition(), i = (e, t, n, r = 0) => this.spacerStyle = {
943
- ...this.spacerStyle,
944
- [`${e}`]: (t || []).length * n + r + "px"
945
- };
946
- t ? (i("height", e, this.itemSize[0], r.y), i("width", this.columns || e[1], this.itemSize[1], r.x)) : n ? i("width", this.columns || e, this.itemSize, r.x) : i("height", e, this.itemSize, r.y);
947
- }
948
- },
949
- setContentPosition(e) {
950
- if (this.content && !this.appendOnly) {
951
- let t = this.isBoth(), n = this.isHorizontal(), r = this.rtl && n, i = e ? e.first : this.first, a = (e, t) => e * t, o = (e = 0, t = 0) => {
952
- let n = r ? -e : e;
953
- this.contentStyle = {
954
- ...this.contentStyle,
955
- transform: `translate3d(${n}px, ${t}px, 0)`
956
- };
957
- };
958
- if (t) {
959
- let e = i.rows, t = i.cols, n = this.itemSize;
960
- o(a(t, n[1]), a(e, n[0]));
961
- } else {
962
- let e = i, t = this.itemSize, r = a(e, t);
963
- n ? o(r, 0) : o(0, r);
964
- }
965
- }
966
- },
967
- onScrollPositionChange(e) {
968
- let t = e.target, n = this.isBoth(), r = this.isHorizontal(), i = this.rtl && r, a = this.getContentPosition(), o = (e, t) => e ? e > t ? e - t : e : 0, s = (e, t) => Math.floor(e / (t || e)), c = o(t.scrollTop, a.top), l = o(t.scrollLeft, a.left);
969
- i && l < 0 && (l = Math.abs(l));
970
- let u = n ? {
971
- rows: 0,
972
- cols: 0
973
- } : 0, d = this.last, f = !1, p = this.lastScrollPos;
974
- if (n) {
975
- let e = this.lastScrollPos.top <= c, n = this.lastScrollPos.left <= l;
976
- if (!this.appendOnly || this.appendOnly && (e || n)) {
977
- let r = {
978
- rows: s(c, this.itemSize[0]),
979
- cols: s(l, this.itemSize[1])
980
- }, i = {
981
- rows: this.calculateTriggerIndex(r.rows, this.first.rows, this.last.rows, this.numItemsInViewport.rows, this.d_numToleratedItems[0], e),
982
- cols: this.calculateTriggerIndex(r.cols, this.first.cols, this.last.cols, this.numItemsInViewport.cols, this.d_numToleratedItems[1], n)
983
- };
984
- u = {
985
- rows: this.calculateFirst(r.rows, i.rows, this.first.rows, this.last.rows, this.numItemsInViewport.rows, this.d_numToleratedItems[0], e),
986
- cols: this.calculateFirst(r.cols, i.cols, this.first.cols, this.last.cols, this.numItemsInViewport.cols, this.d_numToleratedItems[1], n, !0)
987
- }, d = {
988
- rows: this.calculateLast(r.rows, u.rows, this.last.rows, this.numItemsInViewport.rows, this.d_numToleratedItems[0]),
989
- cols: this.calculateLast(r.cols, u.cols, this.last.cols, this.numItemsInViewport.cols, this.d_numToleratedItems[1], !0)
990
- }, f = u.rows !== this.first.rows || d.rows !== this.last.rows || u.cols !== this.first.cols || d.cols !== this.last.cols || this.isRangeChanged, p = {
991
- top: c,
992
- left: t.scrollLeft
993
- };
994
- }
995
- } else {
996
- let e = r ? l : c, t = this.lastScrollPos <= e;
997
- if (!this.appendOnly || this.appendOnly && t) {
998
- let n = s(e, this.itemSize), r = this.calculateTriggerIndex(n, this.first, this.last, this.numItemsInViewport, this.d_numToleratedItems, t);
999
- u = this.calculateFirst(n, r, this.first, this.last, this.numItemsInViewport, this.d_numToleratedItems, t), d = this.calculateLast(n, u, this.last, this.numItemsInViewport, this.d_numToleratedItems), f = u !== this.first || d !== this.last || this.isRangeChanged, p = e;
1000
- }
1001
- }
1002
- return {
1003
- first: u,
1004
- last: d,
1005
- isRangeChanged: f,
1006
- scrollPos: p
1007
- };
1008
- },
1009
- calculateTriggerIndex(e, t, n, r, i, a) {
1010
- return e <= i ? i : a ? n - r - i : t + i - 1;
1011
- },
1012
- calculateFirst(e, t, n, r, i, a, o, s = !1) {
1013
- if (e <= a) return 0;
1014
- let c = Math.max(0, o ? e < t ? n : e - a : e > t ? n : e - 2 * a), l = this.getLast(c, s);
1015
- return c > l ? l - i : c;
1016
- },
1017
- calculateLast(e, t, n, r, i, a = !1) {
1018
- let o = t + r + 2 * i;
1019
- return e >= i && (o += i + 1), this.getLast(o, a);
1020
- },
1021
- onScrollChange(e) {
1022
- let { first: t, last: n, isRangeChanged: r, scrollPos: i } = this.onScrollPositionChange(e);
1023
- if (r) {
1024
- let e = {
1025
- first: t,
1026
- last: n
1027
- };
1028
- if (this.setContentPosition(e), this.first = t, this.last = n, this.lastScrollPos = i, this.$emit("scroll-index-change", e), this.lazy && this.isPageChanged(t)) {
1029
- let e = {
1030
- first: this.step ? Math.min(this.getPageByFirst(t) * this.step, (this.items?.length || 0) - this.step) : t,
1031
- last: Math.min(this.step ? (this.getPageByFirst(t) + 1) * this.step : n, this.items?.length - 1 || 0)
1032
- };
1033
- (this.lazyLoadState.first !== e.first || this.lazyLoadState.last !== e.last) && this.$emit("lazy-load", e), this.lazyLoadState = e;
1034
- }
1035
- }
1036
- },
1037
- onScroll(e) {
1038
- if (this.$emit("scroll", e), this.delay) {
1039
- if (this.scrollTimeout && clearTimeout(this.scrollTimeout), this.isPageChanged()) {
1040
- if (!this.d_loading && this.showLoader) {
1041
- let { isRangeChanged: t } = this.onScrollPositionChange(e);
1042
- (t || this.step && this.isPageChanged()) && (this.d_loading = !0);
1043
- }
1044
- this.scrollTimeout = setTimeout(() => {
1045
- this.onScrollChange(e), this.d_loading && this.showLoader && (!this.lazy || this.loading === void 0) && (this.d_loading = !1, this.page = this.getPageByFirst());
1046
- }, this.delay);
1047
- }
1048
- } else this.onScrollChange(e);
1049
- },
1050
- onResize() {
1051
- this.resizeTimeout && clearTimeout(this.resizeTimeout), this.resizeTimeout = setTimeout(() => {
1052
- if (r(this.element)) {
1053
- let e = this.isBoth(), n = this.isVertical(), r = this.isHorizontal(), [i, a] = [t(this.element), o(this.element)], [s, c] = [i !== this.defaultWidth, a !== this.defaultHeight];
1054
- (e ? s || c : r ? s : n && c) && (this.d_numToleratedItems = this.numToleratedItems, this.defaultWidth = i, this.defaultHeight = a, this.defaultContentWidth = t(this.content), this.defaultContentHeight = o(this.content), this.init());
1055
- }
1056
- }, this.resizeDelay);
1057
- },
1058
- bindResizeListener() {
1059
- this.resizeListener || (this.resizeListener = this.onResize.bind(this), window.addEventListener("resize", this.resizeListener), window.addEventListener("orientationchange", this.resizeListener));
1060
- },
1061
- bindSizeObserver() {
1062
- !this.sizeObserver && this.element && typeof ResizeObserver < "u" && (this.sizeObserver = new ResizeObserver((e) => {
1063
- let t = e[0]?.borderBoxSize?.[0];
1064
- this.observedWidth = t ? t.inlineSize : e[0]?.contentRect.width ?? 0, this.observedHeight = t ? t.blockSize : e[0]?.contentRect.height ?? 0;
1065
- }), this.sizeObserver.observe(this.element));
1066
- },
1067
- unbindSizeObserver() {
1068
- this.sizeObserver &&= (this.sizeObserver.disconnect(), null);
1069
- },
1070
- unbindResizeListener() {
1071
- this.resizeListener &&= (window.removeEventListener("resize", this.resizeListener), window.removeEventListener("orientationchange", this.resizeListener), null);
1072
- },
1073
- getOptions(e) {
1074
- let t = (this.items || []).length, n = this.isBoth() ? this.first.rows + e : this.first + e;
1075
- return {
1076
- index: n,
1077
- count: t,
1078
- first: n === 0,
1079
- last: n === t - 1,
1080
- even: n % 2 == 0,
1081
- odd: n % 2 != 0
1082
- };
1083
- },
1084
- getLoaderOptions(e, t) {
1085
- let n = this.loaderArr.length;
1086
- return {
1087
- index: e,
1088
- count: n,
1089
- first: e === 0,
1090
- last: e === n - 1,
1091
- even: e % 2 == 0,
1092
- odd: e % 2 != 0,
1093
- ...t
1094
- };
1095
- },
1096
- getPageByFirst(e) {
1097
- return Math.floor(((e ?? this.first) + this.d_numToleratedItems * 4) / (this.step || 1));
1098
- },
1099
- isPageChanged(e) {
1100
- return this.step && !this.lazy ? this.page !== this.getPageByFirst(e ?? this.first) : !0;
1101
- },
1102
- setContentEl(t) {
1103
- this.content = t || this.content || e(this.element, "[data-pc-section=\"content\"]");
1104
- },
1105
- elementRef(e) {
1106
- this.element = e;
1107
- },
1108
- contentRef(e) {
1109
- this.content = e;
1110
- }
1111
- }
1112
- }, vt = ["tabindex"];
1113
- function yt(e, t, n, r, i, a) {
1114
- let o = E("SpinnerIcon");
1115
- return e.disabled ? (d(), T(D, { key: 1 }, [p(e.$slots, "default"), p(e.$slots, "content", {
1116
- items: e.items,
1117
- rows: e.items,
1118
- columns: a.loadedColumns
1119
- })], 64)) : (d(), T("div", m({
1120
- key: 0,
1121
- ref: a.elementRef,
1122
- class: a.containerClass,
1123
- tabindex: e.tabindex,
1124
- style: e.style
1125
- }, e.ptmi("root"), { onScroll: t[0] ||= (...e) => a.onScroll && a.onScroll(...e) }), [
1126
- p(e.$slots, "content", {
1127
- styleClass: a.contentClass,
1128
- items: a.loadedItems,
1129
- getItemOptions: a.getOptions,
1130
- loading: i.d_loading,
1131
- getLoaderOptions: a.getLoaderOptions,
1132
- itemSize: e.itemSize,
1133
- rows: a.loadedRows,
1134
- columns: a.loadedColumns,
1135
- contentRef: a.contentRef,
1136
- spacerStyle: i.spacerStyle,
1137
- contentStyle: i.contentStyle,
1138
- vertical: a.isVertical(),
1139
- horizontal: a.isHorizontal(),
1140
- both: a.isBoth()
1141
- }, () => [k("div", m({
1142
- ref: a.contentRef,
1143
- class: a.contentClass,
1144
- style: i.contentStyle
1145
- }, e.ptm("content")), [(d(!0), T(D, null, u(a.loadedItems, (t, n) => p(e.$slots, "item", {
1146
- item: t,
1147
- options: a.getOptions(n)
1148
- }, void 0, void 0, a.resolveItemKey(t, n))), 128))], 16)]),
1149
- e.showSpacer ? (d(), T("div", m({
1150
- key: 0,
1151
- class: "p-virtualscroller-spacer",
1152
- style: i.spacerStyle
1153
- }, e.ptm("spacer")), null, 16)) : b("", !0),
1154
- !e.loaderDisabled && e.showLoader && i.d_loading ? (d(), T("div", m({
1155
- key: 1,
1156
- class: a.loaderClass
1157
- }, e.ptm("loader")), [e.$slots && e.$slots.loader ? (d(!0), T(D, { key: 0 }, u(i.loaderArr, (t, n) => p(e.$slots, "loader", { options: a.getLoaderOptions(n, a.isBoth() && { numCols: e.d_numItemsInViewport.cols }) }, void 0, void 0, n)), 128)) : b("", !0), p(e.$slots, "loadingicon", {}, () => [M(o, m({
1158
- spin: "",
1159
- class: "p-virtualscroller-loading-icon"
1160
- }, e.ptm("loadingIcon")), null, 16)])], 16)) : b("", !0)
1161
- ], 16, vt));
1162
- }
1163
- var bt = /*#__PURE__*/ N(_t, [["render", yt]]), K = {
1164
- aspectRatio: 1,
1165
- gap: 8,
1166
- hasMore: !1,
1167
- loadMore: void 0,
1168
- itemKey: void 0
1169
- }, q = { class: "recordings-row" }, xt = {
1170
- key: 1,
1171
- class: "pointer-events-none absolute bottom-2 left-1/2 -translate-x-1/2 z-10 rounded-full bg-black/60 p-1.5"
1172
- }, St = /*#__PURE__*/ N(/* @__PURE__ */ A({
1173
- __name: "CuiRecordingsGrid",
1174
- props: /*@__PURE__*/ c({
1175
- items: {},
1176
- minItemWidth: {},
1177
- aspectRatio: {},
1178
- gap: {},
1179
- hasMore: { type: Boolean },
1180
- loadMore: { type: Function },
1181
- itemKey: { type: Function }
1182
- }, K),
1183
- setup(e, { expose: t }) {
1184
- let n = e, r = O("containerRef"), { width: i, height: a } = Pe(r), o = j(0), s = j(!1), c = null, l = !1, f = C(() => a.value > 0 ? `${a.value}px` : void 0), m = C(() => {
1185
- let e = i.value;
1186
- return e ? Math.max(1, Math.floor((e + n.gap) / (n.minItemWidth + n.gap))) : 0;
1187
- }), g = C(() => {
1188
- let e = i.value, t = m.value;
1189
- return !e || !t ? 0 : Math.floor((e - (t - 1) * n.gap) / t);
1190
- }), _ = C(() => g.value ? Math.floor(g.value / n.aspectRatio) : 0), v = C(() => _.value ? _.value + n.gap : 0), x = C(() => {
1191
- let e = m.value;
1192
- if (!e) return [];
1193
- let t = [];
1194
- for (let r = 0; r < n.items.length; r += e) t.push(n.items.slice(r, r + e));
1195
- return t;
1196
- });
1197
- function E(e) {
1198
- if (n.itemKey) return n.itemKey(e);
1199
- let t = e;
1200
- return t.id ?? t.key ?? JSON.stringify(e);
1201
- }
1202
- function ne(e) {
1203
- let t = e;
1204
- if (t && t.length !== 0) return E(t[0]);
1205
- }
1206
- async function A() {
1207
- if (s.value || !n.hasMore || !n.loadMore || c !== null && n.items.length === c) return;
1208
- s.value = !0;
1209
- let e = n.items.length;
1210
- try {
1211
- await Promise.resolve(n.loadMore());
1212
- } finally {
1213
- s.value = !1, c = n.items.length === e ? e : null;
1214
- }
1215
- }
1216
- function re(e) {
1217
- let t = e.target;
1218
- t && (o.value = t.scrollTop, t.scrollTop + t.clientHeight >= t.scrollHeight - v.value * 3 && A());
1219
- }
1220
- function ie() {
1221
- (r.value?.querySelector(".recordings-scroll"))?.scrollTo({
1222
- top: 0,
1223
- behavior: "smooth"
1224
- });
1225
- }
1226
- return te(() => {
1227
- let e = r.value;
1228
- e && g.value && (e.style.setProperty("--cell-w", `${g.value}px`), e.style.setProperty("--cell-h", `${_.value}px`), e.style.setProperty("--cell-gap", `${n.gap}px`));
1229
- }), ee([
1230
- () => n.items.length,
1231
- a,
1232
- v,
1233
- () => n.hasMore
1234
- ], () => {
1235
- l || (l = !0, h(() => {
1236
- l = !1, n.hasMore && v.value && a.value && x.value.length * v.value < a.value + v.value && A();
1237
- }));
1238
- }, { flush: "post" }), t({
1239
- scrollToTop: ie,
1240
- scrollY: o
1241
- }), (e, t) => {
1242
- let n = bt, i = ve;
1243
- return d(), T("div", {
1244
- ref_key: "containerRef",
1245
- ref: r,
1246
- class: "recordings-grid-root relative"
1247
- }, [S(x).length > 0 && S(g) > 0 ? (d(), y(n, {
1248
- key: 0,
1249
- items: S(x),
1250
- "item-size": S(v),
1251
- "scroll-height": S(f),
1252
- "num-tolerated-items": S(2),
1253
- "item-key": ne,
1254
- orientation: "vertical",
1255
- class: "recordings-scroll",
1256
- onScroll: re
1257
- }, {
1258
- item: w(({ item: t }) => [k("div", q, [(d(!0), T(D, null, u(t, (t) => (d(), T("div", {
1259
- key: E(t),
1260
- class: "recordings-cell"
1261
- }, [p(e.$slots, "item", { item: t }, void 0, !0)]))), 128))])]),
1262
- _: 3
1263
- }, 8, [
1264
- "items",
1265
- "item-size",
1266
- "scroll-height",
1267
- "num-tolerated-items"
1268
- ])) : b("", !0), S(s) ? (d(), T("div", xt, [M(i, {
1269
- width: "18px",
1270
- height: "18px",
1271
- class: "text-white"
1272
- })])) : b("", !0)], 512);
1273
- };
1274
- }
1275
- }), [["__scopeId", "data-v-a672f3ff"]]);
1276
- //#endregion
1277
- //#region src/components/CuiRecordings/ungrouped.ts
1278
- function Ct(e) {
1279
- if (e.episode) return e.episode.endTime;
1280
- if (e.segIndex !== void 0) {
1281
- let t = e.event.segments?.[e.segIndex];
1282
- if (t) return t.firstSeen;
1283
- }
1284
- return e.event.thumbnailAt ?? e.event.startTime;
1285
- }
1286
- function J(e, t) {
1287
- return Ct(t) - Ct(e);
1288
- }
1289
- function Y(e, t = !1) {
1290
- let n = [];
1291
- for (let t of e) {
1292
- let e = t.segments ?? [];
1293
- if (e.length <= 1) {
1294
- n.push({
1295
- event: t,
1296
- key: t.id
1297
- });
1298
- continue;
1299
- }
1300
- let r = [];
1301
- e.forEach((e, n) => {
1302
- e && r.push({
1303
- event: t,
1304
- key: `${t.id}:seg:${n}`,
1305
- segIndex: n
1306
- });
1307
- }), n.push(...r.sort(J));
1308
- }
1309
- return t ? n : n.sort(J);
1310
- }
1311
- //#endregion
1312
- export { G as i, J as n, St as r, Y as t };