@camera.ui/server 2.2.5-beta.4 → 2.2.5

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 (643) hide show
  1. package/dist/interface/assets/{404-YZOLos9r.js → 404-CiOxoqnT.js} +1 -1
  2. package/dist/interface/assets/{About-HtxMc8JZ.js → About-DWOlfWEm.js} +1 -1
  3. package/dist/interface/assets/Assistant-B1xdMAkA.js +1 -0
  4. package/dist/interface/assets/{Assistant-BMscGKnc.css → Assistant-CXx7EY1W.css} +1 -1
  5. package/dist/interface/assets/{Automation-D3DcUyui.js → Automation-BJgwUkUB.js} +3 -3
  6. package/dist/interface/assets/{AutomationImport-Dp_hT6hQ.js → AutomationImport-9GRAndAt.js} +2 -2
  7. package/dist/interface/assets/{AutomationStore-BKR7GXMk.js → AutomationStore-D_HR2Xby.js} +2 -2
  8. package/dist/interface/assets/{AutomationStoreDetail-B9yh51WQ.js → AutomationStoreDetail-B9MxV2py.js} +2 -2
  9. package/dist/interface/assets/Automations-Bpw8olkc.js +2 -0
  10. package/dist/interface/assets/Camera-BpFfZDaS.js +2 -0
  11. package/dist/interface/assets/{CameraConsole-BI93OaRt.js → CameraConsole-BKPTLSTO.js} +1 -1
  12. package/dist/interface/assets/{Cameras-Ctub8sVt.js → Cameras-DcrVCgLy.js} +2 -2
  13. package/dist/interface/assets/Camview-C16pyCZk.js +1 -0
  14. package/dist/interface/assets/{Camview-CZct5cnP.css → Camview-DasO326h.css} +1 -1
  15. package/dist/interface/assets/{CertificateUpload-xW55NA1Q.js → CertificateUpload-BYFKZCP9.js} +1 -1
  16. package/dist/interface/assets/Config-BmEL5EaW.js +2 -0
  17. package/dist/interface/assets/{ConfigActionAssistant-B488rOp5.js → ConfigActionAssistant-DM4tIhoa.js} +1 -1
  18. package/dist/interface/assets/{ConfigActionCameraControl-ZMUuBxOs.js → ConfigActionCameraControl-Deo0eDPS.js} +1 -1
  19. package/dist/interface/assets/{ConfigActionDelay-BJ11xvOW.js → ConfigActionDelay-_EqbfWgo.js} +1 -1
  20. package/dist/interface/assets/{ConfigActionHttp-DOUo69OR.js → ConfigActionHttp-BxJmoshF.js} +1 -1
  21. package/dist/interface/assets/{ConfigActionImageInput-BMzuVZW9.js → ConfigActionImageInput-KrzXFQDm.js} +1 -1
  22. package/dist/interface/assets/{ConfigActionMqtt-Co_uksca.js → ConfigActionMqtt-BoYBomRC.js} +1 -1
  23. package/dist/interface/assets/{ConfigActionNotification-CcZkstYx.js → ConfigActionNotification-CSAOijDt.js} +1 -1
  24. package/dist/interface/assets/{ConfigActionNotificationControl--VeucoTw.js → ConfigActionNotificationControl-BOdyKiOs.js} +1 -1
  25. package/dist/interface/assets/{ConfigActionOutput-CyDa1LGA.js → ConfigActionOutput-CwsPcnd_.js} +1 -1
  26. package/dist/interface/assets/{ConfigActionPlugin-Kfg3ZEQF.js → ConfigActionPlugin-D3wyULpp.js} +1 -1
  27. package/dist/interface/assets/{ConfigActionSensor-DhAF0HPw.js → ConfigActionSensor-BmeaIxYY.js} +1 -1
  28. package/dist/interface/assets/{ConfigActionSnapshot-zMe3SPvW.js → ConfigActionSnapshot-DbyFKcYr.js} +1 -1
  29. package/dist/interface/assets/{ConfigActionVariable-BE5q3NwY.js → ConfigActionVariable-cThGJ1Pc.js} +1 -1
  30. package/dist/interface/assets/{ConfigConditionIfElse-BNIRtSVD.js → ConfigConditionIfElse-BugkJeXR.js} +1 -1
  31. package/dist/interface/assets/{ConfigConditionSensorState-DTNd-SzI.js → ConfigConditionSensorState-Bf-mMf4E.js} +1 -1
  32. package/dist/interface/assets/{ConfigConditionSwitch-BU5wWMU1.js → ConfigConditionSwitch-DcpFoYET.js} +1 -1
  33. package/dist/interface/assets/{ConfigConditionTime-KXTCIVIV.js → ConfigConditionTime-CM4bSMyU.js} +1 -1
  34. package/dist/interface/assets/{ConfigSensorValueInput-BC1FpMm-.js → ConfigSensorValueInput-CgAI34__.js} +1 -1
  35. package/dist/interface/assets/{ConfigTriggerDetection-hIN1hi53.js → ConfigTriggerDetection-BWK6gfwM.js} +1 -1
  36. package/dist/interface/assets/ConfigTriggerGeofence-Cm3CU7Tl.js +1 -0
  37. package/dist/interface/assets/{ConfigTriggerManual-C5vwxS-e.js → ConfigTriggerManual-DgkR-GWy.js} +1 -1
  38. package/dist/interface/assets/{ConfigTriggerMqtt-B4PtWC3E.js → ConfigTriggerMqtt-BMFjTAso.js} +1 -1
  39. package/dist/interface/assets/{ConfigTriggerSchedule-BZzUdGBa.js → ConfigTriggerSchedule-E_QWfNKy.js} +1 -1
  40. package/dist/interface/assets/{ConfigTriggerSensor-D18nwMsj.js → ConfigTriggerSensor-DOdJkZRo.js} +1 -1
  41. package/dist/interface/assets/{ConfigTriggerSystem-BhygWLB4.js → ConfigTriggerSystem-BFDIbZsE.js} +1 -1
  42. package/dist/interface/assets/{ConfigTriggerWebhook-yyuBuhLD.js → ConfigTriggerWebhook-DDoUEVHb.js} +1 -1
  43. package/dist/interface/assets/Console-BIj7cIqO.js +1 -0
  44. package/dist/interface/assets/CuiAssistantConversation-CRNCKRHz.js +5 -0
  45. package/dist/interface/assets/{CuiAssistantConversation-lkpZg3ML.css → CuiAssistantConversation-DQ0wOJvV.css} +1 -1
  46. package/dist/interface/assets/CuiAutomationRunsDialog-DMUfNcsf.js +1 -0
  47. package/dist/interface/assets/CuiBottomSheet-CYi5c3fP.js +1 -0
  48. package/dist/interface/assets/{CuiBottomSheet-DWefGWK2.js → CuiBottomSheet-FwsPnJ3n.js} +1 -1
  49. package/dist/interface/assets/{CuiCameraPipCard-C2qaGJlH.js → CuiCameraPipCard-Cb_Qbly6.js} +1 -1
  50. package/dist/interface/assets/CuiCameraRecordings-BeciatDY.js +1 -0
  51. package/dist/interface/assets/{CuiCameraShares-DcqOcePX.js → CuiCameraShares-CSFwIYsg.js} +1 -1
  52. package/dist/interface/assets/CuiCameraTable-BgL5FZso.js +1 -0
  53. package/dist/interface/assets/{CuiCameraTable-BOkfp_5M.js → CuiCameraTable-DBRfGX3I.js} +2 -2
  54. package/dist/interface/assets/{CuiChartTable-DP38uBwK.js → CuiChartTable-CtasoxMM.js} +1 -1
  55. package/dist/interface/assets/{CuiConsole-C7xE_nQg.js → CuiConsole-DQbAafiz.js} +2 -2
  56. package/dist/interface/assets/CuiDataTable-JlD7Agky.js +1 -0
  57. package/dist/interface/assets/{CuiLightControl-ChGYpQAK.js → CuiLightControl-CLYl5pfN.js} +1 -1
  58. package/dist/interface/assets/{CuiList-DJp0__mV.js → CuiList-Dsu5m0TA.js} +1 -1
  59. package/dist/interface/assets/{CuiMarkdownContent-BUYtK_wD.js → CuiMarkdownContent-BYBQX_aF.js} +1 -1
  60. package/dist/interface/assets/CuiMarkdownContent-DTAm-EDR.js +1 -0
  61. package/dist/interface/assets/{CuiPluginCard-CWImTZ6l.js → CuiPluginCard-CC1oXY16.js} +2 -2
  62. package/dist/interface/assets/{CuiPluginCategoryChip-Ch_upS6Y.js → CuiPluginCategoryChip-B2bR5LQa.js} +1 -1
  63. package/dist/interface/assets/{CuiPluginOAuthButton-DEQ9xILN.js → CuiPluginOAuthButton-DfEjfcY-.js} +2 -2
  64. package/dist/interface/assets/{CuiPluginTrustBadge-sVWdvHcM.js → CuiPluginTrustBadge-C6CW6Soh.js} +1 -1
  65. package/dist/interface/assets/{CuiQRCode-DqSF4SkD.js → CuiQRCode-DGKBhDib.js} +1 -1
  66. package/dist/interface/assets/CuiSchema-pAAVh28m.js +1 -0
  67. package/dist/interface/assets/{CuiTopNavbarItem-B_KWykgq.js → CuiTopNavbarItem-ve-3Dsc3.js} +1 -1
  68. package/dist/interface/assets/Faces-1xd5yGuO.js +1 -0
  69. package/dist/interface/assets/{FirstSteps-QNYTkEJo.js → FirstSteps-E9cMqa0a.js} +1 -1
  70. package/dist/interface/assets/Floorplan-BovV_ATh.js +1 -0
  71. package/dist/interface/assets/Instances-BbxyB7vR.js +1 -0
  72. package/dist/interface/assets/{Logs-BSPT80vP.js → Logs-BhRactvQ.js} +2 -2
  73. package/dist/interface/assets/{Menu-HHtuhIS2.js → Menu-DMCmUVDs.js} +1 -1
  74. package/dist/interface/assets/Metrics-BgXrNl38.js +12 -0
  75. package/dist/interface/assets/Metrics-ChVnC6f6.css +1 -0
  76. package/dist/interface/assets/{OAuthDeviceFlow-Bn1nlWNa.js → OAuthDeviceFlow-BMEwVkIa.js} +1 -1
  77. package/dist/interface/assets/Plugin-CDNywaVE.js +1 -0
  78. package/dist/interface/assets/Plugin-Qr_Q_Qfi.css +1 -0
  79. package/dist/interface/assets/{PluginConsole-Cv-uhnPY.js → PluginConsole-C4Ba_U_1.js} +1 -1
  80. package/dist/interface/assets/{PluginDetail-cpOz7FkA.js → PluginDetail-13OWIzdd.js} +2 -2
  81. package/dist/interface/assets/{PluginSchema-DW3TGeTM.js → PluginSchema-DN0cSU8s.js} +1 -1
  82. package/dist/interface/assets/PluginSearch-sPkO8aH3.js +2 -0
  83. package/dist/interface/assets/PluginSearch-xNIlfXk4.js +1 -0
  84. package/dist/interface/assets/{PluginUpdateProgress-n6q6vzyd.js → PluginUpdateProgress-CeWuRp3Z.js} +1 -1
  85. package/dist/interface/assets/Plugins-C8yjhxnQ.js +1 -0
  86. package/dist/interface/assets/{RecentEventsFilter-CTR5JK_P.js → RecentEventsFilter-Kp_lTOuG.js} +1 -1
  87. package/dist/interface/assets/Recordings-BHT8Vvv_.js +1 -0
  88. package/dist/interface/assets/Recordings-DwuojaAw.css +1 -0
  89. package/dist/interface/assets/SensorEdit-C-yJdJuP.js +1 -0
  90. package/dist/interface/assets/{SensorHistory-9CdOpCPs.js → SensorHistory-ClAcOgHj.js} +1 -1
  91. package/dist/interface/assets/Sensors-Cza4Et2c.js +2 -0
  92. package/dist/interface/assets/Settings-Cj0leoGd.js +1 -0
  93. package/dist/interface/assets/SettingsAccount-COkcBBSz.js +1 -0
  94. package/dist/interface/assets/SettingsAccount-DjrJdssy.js +1 -0
  95. package/dist/interface/assets/{SettingsAppearance-BY1xQMx4.js → SettingsAppearance-CJt4xJEW.js} +1 -1
  96. package/dist/interface/assets/SettingsAppearance-D20YW7Vq.js +1 -0
  97. package/dist/interface/assets/SettingsAssistant-CDdbbG-c.css +1 -0
  98. package/dist/interface/assets/SettingsAssistant-DKWDp1AI.js +1 -0
  99. package/dist/interface/assets/{SettingsBackup-D_weokqu.js → SettingsBackup-DIJmci05.js} +1 -1
  100. package/dist/interface/assets/{SettingsList-Bq24WTDU.js → SettingsList-Cb_dLy5T.js} +1 -1
  101. package/dist/interface/assets/SettingsMqtt-LIuCRPT5.js +1 -0
  102. package/dist/interface/assets/{SettingsNotifications-8TZOUxg2.js → SettingsNotifications-CZxqqH_8.js} +1 -1
  103. package/dist/interface/assets/{SettingsPermissions-M8u_jrN0.js → SettingsPermissions-CJiz0Z7B.js} +1 -1
  104. package/dist/interface/assets/{SettingsRecordings-C1Kp5xW_.js → SettingsRecordings-BEpwMh-y.js} +1 -1
  105. package/dist/interface/assets/SettingsRemote-DRt-N_yA.js +2 -0
  106. package/dist/interface/assets/{SettingsSystem-Cetu2faJ.js → SettingsSystem-Cncdpx8T.js} +2 -2
  107. package/dist/interface/assets/{SettingsUsers-CDwtQLdV.js → SettingsUsers-DZkz8WlI.js} +1 -1
  108. package/dist/interface/assets/Terminal-U4yfJN3O.js +4 -0
  109. package/dist/interface/assets/Training-Bkn52mPJ.css +1 -0
  110. package/dist/interface/assets/Training-DfgE_dA8.js +1 -0
  111. package/dist/interface/assets/Updates-cCvbFq3w.js +2 -0
  112. package/dist/interface/assets/{VariableInput-BxPj5wo6.js → VariableInput-PVsqGYW0.js} +1 -1
  113. package/dist/interface/assets/{VariableSuggestions-CbizvAkz.js → VariableSuggestions-DwLtlzVz.js} +1 -1
  114. package/dist/interface/assets/{VersionsHandler-CePyEUVO.js → VersionsHandler-Df7dhddp.js} +2 -2
  115. package/dist/interface/assets/{VirtualSensorCreate-D_GVoeL7.js → VirtualSensorCreate-FTKANjd-.js} +1 -1
  116. package/dist/interface/assets/Workers-Ba37_3cY.js +2 -0
  117. package/dist/interface/assets/{account-Bu30He0P.js → account-DwW7pBOb.js} +1 -1
  118. package/dist/interface/assets/{alert-circle-D2fAQwTX.js → alert-circle-BdUVAt1B.js} +1 -1
  119. package/dist/interface/assets/{alert-outline-D7zaSJH_.js → alert-outline-IRxYbw0j.js} +1 -1
  120. package/dist/interface/assets/api-C1mraOYr.js +4 -0
  121. package/dist/interface/assets/{api-DW2niHRN.js → api-DpqXhwcx.js} +1 -1
  122. package/dist/interface/assets/api-z8ZVnoOl.css +2 -0
  123. package/dist/interface/assets/{arrow-left-BGLyEqqa.js → arrow-left-Bk-ZrOVr.js} +1 -1
  124. package/dist/interface/assets/assistant-Lz3mFLDo.js +1 -0
  125. package/dist/interface/assets/{assistantModels-D0soYqq7.js → assistantModels-BsSgRsws.js} +1 -1
  126. package/dist/interface/assets/{auth-Dc8bUpc-.js → auth-L7_5vsJs.js} +1 -1
  127. package/dist/interface/assets/{automations-DXrjbArj.js → automations-D1XFFSrm.js} +1 -1
  128. package/dist/interface/assets/{back-filled-BPBVnQjx.js → back-filled-D-X19YMO.js} +1 -1
  129. package/dist/interface/assets/{bell-ring-CyCFPUL_.js → bell-ring-DreEHgoT.js} +1 -1
  130. package/dist/interface/assets/{brain-CIJB1ree.js → brain-DuDAg544.js} +1 -1
  131. package/dist/interface/assets/{cameraSources-QJfUDOQJ.js → cameraSources-DEGJDtmK.js} +1 -1
  132. package/dist/interface/assets/{cctv-D6kxZ-lp.js → cctv-DM-C_8_6.js} +1 -1
  133. package/dist/interface/assets/{check-circle-DHAAn6A6.js → check-circle-Bevuw8-0.js} +1 -1
  134. package/dist/interface/assets/{check-circle-outline-BbqeKfIK.js → check-circle-outline-aMxkvksr.js} +1 -1
  135. package/dist/interface/assets/{chevron-down-ZYTrU871.js → chevron-down-CCFn9Z56.js} +1 -1
  136. package/dist/interface/assets/{chevron-up-LQXNz9CE.js → chevron-up-CSImUM3_.js} +1 -1
  137. package/dist/interface/assets/{clock-outline-CKTiLKoR.js → clock-outline-DH3WIEJt.js} +1 -1
  138. package/dist/interface/assets/{close-BbEPZQqa.js → close-CMxyM4v9.js} +1 -1
  139. package/dist/interface/assets/{close-circle-BSUSUs4K.js → close-circle-CfgJCZ9A.js} +1 -1
  140. package/dist/interface/assets/{cloud-check-BTGbrAQ_.js → cloud-check-CbdFLIdR.js} +1 -1
  141. package/dist/interface/assets/cloudHandoff-DkUx4m3P.js +1 -0
  142. package/dist/interface/assets/{config-CiQDwB4t.js → config-CVqy37fG.js} +1 -1
  143. package/dist/interface/assets/{content-copy-V0DW9ZbH.js → content-copy-Bz49QPOI.js} +1 -1
  144. package/dist/interface/assets/{copy-DsmMEtSH.js → copy-DA6QQHRt.js} +1 -1
  145. package/dist/interface/assets/{cube-scan-DGhUFV1x.js → cube-scan-IiH8zwm2.js} +1 -1
  146. package/dist/interface/assets/database-refresh-outline-CIUDpcuq.js +1 -0
  147. package/dist/interface/assets/{delete-CY8fsIW6.js → delete-Btu-UVx9.js} +1 -1
  148. package/dist/interface/assets/{dist-DNyx_J8o.js → dist-D_qWDAKp.js} +1 -1
  149. package/dist/interface/assets/{dots-vertical-pP1vP0Qa.js → dots-vertical-D496SIss.js} +1 -1
  150. package/dist/interface/assets/{download-CyjJ7yJW.js → download-BSC7lwq_.js} +1 -1
  151. package/dist/interface/assets/esm-0kxqa_1s.js +1 -0
  152. package/dist/interface/assets/esm-4p_M5mFV.js +1 -0
  153. package/dist/interface/assets/esm-8G-vO1KQ.js +1 -0
  154. package/dist/interface/assets/esm-8cB56ICb.js +1 -0
  155. package/dist/interface/assets/esm-B92csSEb.js +1 -0
  156. package/dist/interface/assets/esm-BHiNTIiN.js +1 -0
  157. package/dist/interface/assets/esm-Bu9PMLmw.js +1 -0
  158. package/dist/interface/assets/esm-CS6Ra46d.js +1 -0
  159. package/dist/interface/assets/esm-CWvQWALL.js +1 -0
  160. package/dist/interface/assets/esm-D2UDrwmt.js +1 -0
  161. package/dist/interface/assets/esm-D8OHF2X1.js +1 -0
  162. package/dist/interface/assets/esm-DrXkS8eG.js +1 -0
  163. package/dist/interface/assets/esm-pfoHiO1a.js +1 -0
  164. package/dist/interface/assets/esm-tJSCF7Vh.js +1 -0
  165. package/dist/interface/assets/{eventIcons-cdzqQc0W.js → eventIcons-UQutPG3p.js} +1 -1
  166. package/dist/interface/assets/{eye-off-JCu1iUer.js → eye-off-CSU0U8g7.js} +1 -1
  167. package/dist/interface/assets/{eye-off-outline-GErp76H2.js → eye-off-outline-DCxLRGo_.js} +1 -1
  168. package/dist/interface/assets/{flowSchema-BRTZHQ1w.js → flowSchema-CppNBDy1.js} +1 -1
  169. package/dist/interface/assets/{help-circle-outline-G43EJuch.js → help-circle-outline-Cr_yNhPi.js} +1 -1
  170. package/dist/interface/assets/{history-CNJREqJG.js → history-anuCbp1T.js} +1 -1
  171. package/dist/interface/assets/{home-B-_OQpZ6.js → home-N3bDR1vX.js} +1 -1
  172. package/dist/interface/assets/{information-outline-Blt4EtWJ.js → information-outline-CMWIvLNB.js} +1 -1
  173. package/dist/interface/assets/{intercomService-BnA-FQ0Q.js → intercomService-CjoJaOZ7.js} +1 -1
  174. package/dist/interface/assets/{lan-C3jliANx.js → lan-CYXjdk7L.js} +1 -1
  175. package/dist/interface/assets/main-BK3kmiG2.js +3 -0
  176. package/dist/interface/assets/{main-BoGhBedC.css → main-Bo0Lb1y2.css} +1 -1
  177. package/dist/interface/assets/{microphone-B6xc9JQ2.js → microphone-BB2pATI_.js} +1 -1
  178. package/dist/interface/assets/{minus-BI5qXFwJ.js → minus-BCp3ZNKO.js} +1 -1
  179. package/dist/interface/assets/{mqtt-iD9XHYO_.js → mqtt-BENV9Fx4.js} +1 -1
  180. package/dist/interface/assets/native-BEkWOGyD.js +1 -0
  181. package/dist/interface/assets/native-ugMg173F.js +1 -0
  182. package/dist/interface/assets/{nodeDefinitions-Dop49tx8.js → nodeDefinitions-ByrqsENY.js} +1 -1
  183. package/dist/interface/assets/{notifications-CbAJX7RF.js → notifications-By40oPng.js} +1 -1
  184. package/dist/interface/assets/{pause-DKzvPG2b.js → pause-BQlxwAW2.js} +1 -1
  185. package/dist/interface/assets/{pencil-DKbi9SsG.js → pencil-CDsNnEXi.js} +1 -1
  186. package/dist/interface/assets/{pencil-outline-CD3Xv98d.js → pencil-outline-CIQL5Kui.js} +1 -1
  187. package/dist/interface/assets/plugin-eafNQWg2.js +1 -0
  188. package/dist/interface/assets/{plugins-eIUrXNeM.js → plugins-09rEDbMz.js} +1 -1
  189. package/dist/interface/assets/{plus-CHPYoMO_.js → plus-Bp4q9G7S.js} +1 -1
  190. package/dist/interface/assets/{plus--kDl8ben.js → plus-CySoovdr.js} +1 -1
  191. package/dist/interface/assets/{power-C9wmNlFS.js → power-WmBLDR0-.js} +1 -1
  192. package/dist/interface/assets/{radar-B3ra28GD.js → radar-CyYAmume.js} +1 -1
  193. package/dist/interface/assets/{refresh-DfqyhMOh.js → refresh-CHTA3jVN.js} +1 -1
  194. package/dist/interface/assets/{restore-FMacmqd_.js → restore-C8RNM5yX.js} +1 -1
  195. package/dist/interface/assets/{rooms-BqPyo8jc.js → rooms-LBxn-Uuu.js} +1 -1
  196. package/dist/interface/assets/{round-alt-arrow-left-bold-56eF9Bol.js → round-alt-arrow-left-bold-Gh5mi_yR.js} +1 -1
  197. package/dist/interface/assets/{search-BXbDWhLk.js → search-BajCVmOI.js} +1 -1
  198. package/dist/interface/assets/sensorIcons-Csu5s0uk.js +1 -0
  199. package/dist/interface/assets/{sensorSlots-BZCXtnb6.js → sensorSlots-CtbKmsGG.js} +1 -1
  200. package/dist/interface/assets/{sensors-DttBNEEt.js → sensors-CbzNs18A.js} +1 -1
  201. package/dist/interface/assets/{server-DUFhf2c_.js → server-Btp5KILd.js} +1 -1
  202. package/dist/interface/assets/{settings-Cw63SIJl.js → settings-DnksaK7m.js} +1 -1
  203. package/dist/interface/assets/{source-branch-oyzrlfCD.js → source-branch-CzqIPffP.js} +1 -1
  204. package/dist/interface/assets/{theme-BMmjtQ4w.js → theme-GhzGwpqd.js} +1 -1
  205. package/dist/interface/assets/{trash-2-BQc04l9M.js → trash-2-DJeEhHf4.js} +1 -1
  206. package/dist/interface/assets/{trash-can-outline-Bk5eENNM.js → trash-can-outline-DrT6iw7I.js} +1 -1
  207. package/dist/interface/assets/{trash-fill-CXk8BmtF.js → trash-fill-Bb_-UicM.js} +1 -1
  208. package/dist/interface/assets/{trash2-2rUvghml.js → trash2-Dsl8gfxq.js} +1 -1
  209. package/dist/interface/assets/types-BAwhu9iv.js +1 -0
  210. package/dist/interface/assets/{types-DWTSNJ79.js → types-CklFkUXk.js} +1 -1
  211. package/dist/interface/assets/{types-CXw7CEzu.js → types-D8QWPhe-.js} +1 -1
  212. package/dist/interface/assets/{undo-Dcf7vcsv.js → undo-DoqJW-k7.js} +1 -1
  213. package/dist/interface/assets/ungrouped-BMk56E3L.js +1 -0
  214. package/dist/interface/assets/{ungrouped-DHMJ9Rg1.css → ungrouped-BnQIcSQd.css} +1 -1
  215. package/dist/interface/assets/{updates-TIPWXKzL.js → updates-CGo0T4sn.js} +1 -1
  216. package/dist/interface/assets/{upload-nnbfDypK.js → upload-C3w1XH-o.js} +1 -1
  217. package/dist/interface/assets/{upload-B-ZYPekV.js → upload-DtIcwiNC.js} +1 -1
  218. package/dist/interface/assets/{useAppVersion-BIz44Bg4.js → useAppVersion-CJlexqyz.js} +1 -1
  219. package/dist/interface/assets/{useAssistantActions-CLkkw9kB.js → useAssistantActions-Cc_O6M9_.js} +1 -1
  220. package/dist/interface/assets/useBackupRestore-_s8vS5WF.js +1 -0
  221. package/dist/interface/assets/{useCameraOptions-A97teAIr.js → useCameraOptions-CFISVNgk.js} +1 -1
  222. package/dist/interface/assets/{useKeyboardInset-DXVi1dLG.js → useKeyboardInset-DkUn62i7.js} +1 -1
  223. package/dist/interface/assets/{useLogsSocket-BlFxVXjF.js → useLogsSocket-D-ndWAg0.js} +1 -1
  224. package/dist/interface/assets/{useNavLayout-C5obaCNv.js → useNavLayout-CG0X_3kt.js} +1 -1
  225. package/dist/interface/assets/{usePermissions-C8hB_pG1.js → usePermissions-BXTw4tII.js} +1 -1
  226. package/dist/interface/assets/{usePluginUpdates-DO0-Gk4Q.js → usePluginUpdates-nW_dt66E.js} +1 -1
  227. package/dist/interface/assets/{usePushRegistration-BUttCraQ.js → usePushRegistration-DCqOAxR4.js} +2 -2
  228. package/dist/interface/assets/{useServerRestart-Cz9eVHUE.js → useServerRestart-CxJGxAcU.js} +1 -1
  229. package/dist/interface/assets/{useStreamStatus-BhS_MCCB.js → useStreamStatus-CXb1HbAq.js} +1 -1
  230. package/dist/interface/assets/{useTabSwipe-D4k8lm1M.js → useTabSwipe-DHb8__wU.js} +1 -1
  231. package/dist/interface/assets/{useUpdateChannel-D9lhfW0y.js → useUpdateChannel-BR4PMh1R.js} +1 -1
  232. package/dist/interface/assets/{useUpdatesSocket-DnH9sON5.js → useUpdatesSocket-DKDRZhvc.js} +1 -1
  233. package/dist/interface/assets/useUserOptions-lyc4WJ4L.js +1 -0
  234. package/dist/interface/assets/{variable-CcE0ZwTr.js → variable-ywTlRfo5.js} +1 -1
  235. package/dist/interface/assets/{vendor-cameraui-QXD8jkcj.js → vendor-cameraui-CK4yHsJi.js} +45 -45
  236. package/dist/interface/assets/{vendor-capacitor-COL6Kz75.js → vendor-capacitor-f9ShAzys.js} +2 -2
  237. package/dist/interface/assets/{vendor-chart-80wrH3md.js → vendor-chart-DBK083Hu.js} +1 -1
  238. package/dist/interface/assets/{vendor-core-CnhnyKDl.js → vendor-core-B-Q4es-f.js} +1 -1
  239. package/dist/interface/assets/{vendor-dnd-CEJS9JKU.js → vendor-dnd-DGQLvX6Y.js} +1 -1
  240. package/dist/interface/assets/{vendor-draggabilly-BY7O1F_Z.js → vendor-draggabilly-D8CK6M-y.js} +1 -1
  241. package/dist/interface/assets/{vendor-DGke_6M4.js → vendor-gFkr2qsZ.js} +1 -1
  242. package/dist/interface/assets/vendor-gridstack-DtDG3os6.js +3 -0
  243. package/dist/interface/assets/{vendor-markdown-DD4teg2u.js → vendor-markdown-qHIinIUE.js} +1 -1
  244. package/dist/interface/assets/{vendor-primevue-CCUqY55W.js → vendor-primevue-Cmp3VjIC.js} +72 -72
  245. package/dist/interface/assets/{vendor-vueflow-Bmwd2les.js → vendor-vueflow-bSwRZ9X8.js} +1 -1
  246. package/dist/interface/assets/web-3OOGlctS.js +1 -0
  247. package/dist/interface/assets/web-5NFVd9gs.js +1 -0
  248. package/dist/interface/assets/web-A4yovlXr.js +1 -0
  249. package/dist/interface/assets/web-BBC3YoWX.js +1 -0
  250. package/dist/interface/assets/web-B_9Qyt8E.js +1 -0
  251. package/dist/interface/assets/web-BjKL51lK-DUIsII0n.js +1 -0
  252. package/dist/interface/assets/web-C2-YAfsx.js +1 -0
  253. package/dist/interface/assets/web-CUL_MhvM.js +1 -0
  254. package/dist/interface/assets/web-CZVCXYLV.js +1 -0
  255. package/dist/interface/assets/web-DJ-LUxlV.js +1 -0
  256. package/dist/interface/assets/web-DNsEGLGS.js +1 -0
  257. package/dist/interface/assets/web-DZsU0QT_.js +1 -0
  258. package/dist/interface/assets/web-MoyOTbiU.js +1 -0
  259. package/dist/interface/assets/web-avRH_3t7.js +1 -0
  260. package/dist/interface/assets/{webhook-oVbP79Yk.js → webhook-CWKf2Qxu.js} +1 -1
  261. package/dist/interface/assets/workbox-window.prod.es5-BEYAF-e-.js +1 -0
  262. package/dist/interface/assets/{zoom-in-GKNy8xA7.js → zoom-in-CHkXAWHy.js} +1 -1
  263. package/dist/interface/ha/{404-DLhJqxRl.js → 404-B2T8Gktj.js} +1 -1
  264. package/dist/interface/ha/{About-DC0i1iE4.js → About-CrTKzU9_.js} +6 -6
  265. package/dist/interface/ha/{Assistant-BmazMPIg.js → Assistant-BDHJmYx_.js} +823 -820
  266. package/dist/interface/ha/{Automation-gabF9YzQ.js → Automation-Czo5EsAg.js} +337 -337
  267. package/dist/interface/ha/{AutomationImport-DaqZNs9s.js → AutomationImport-CuFAQbiX.js} +6 -6
  268. package/dist/interface/ha/{AutomationStore-DzM4huo5.js → AutomationStore-D-6x0JIt.js} +16 -16
  269. package/dist/interface/ha/{AutomationStoreDetail-CpzQMt_D.js → AutomationStoreDetail-Dad4q1MN.js} +19 -19
  270. package/dist/interface/ha/{Automations-Dcm4Us50.js → Automations-C-oGM5SR.js} +71 -71
  271. package/dist/interface/ha/{Camera-CNK3QR7l.js → Camera-CerkQGbZ.js} +214 -214
  272. package/dist/interface/ha/{CameraConsole-CpcF0411.js → CameraConsole-hRGwbjsD.js} +3 -3
  273. package/dist/interface/ha/{Cameras-Cf9rwRyf.js → Cameras-Bk5TFXA8.js} +92 -92
  274. package/dist/interface/ha/{Camview-BFKR2t6C.js → Camview-CsKKqxxY.js} +382 -382
  275. package/dist/interface/ha/{Config-1XH3zfr2.js → Config-Vl4-K3A_.js} +11 -11
  276. package/dist/interface/ha/{ConfigActionAssistant-C0-NFoTB.js → ConfigActionAssistant-OWUX8glZ.js} +4 -4
  277. package/dist/interface/ha/{ConfigActionCameraControl-DNSKZPSZ.js → ConfigActionCameraControl-DEaOot8w.js} +3 -3
  278. package/dist/interface/ha/{ConfigActionHttp-DVJAcGkl.js → ConfigActionHttp-CSr2BpKL.js} +2 -2
  279. package/dist/interface/ha/{ConfigActionImageInput-VVbHHHZs.js → ConfigActionImageInput--O8Tyca-.js} +1 -1
  280. package/dist/interface/ha/{ConfigActionMqtt-N5OUJDzM.js → ConfigActionMqtt-DQJ4-gs2.js} +4 -4
  281. package/dist/interface/ha/{ConfigActionNotification-s142tQoU.js → ConfigActionNotification-wR8CCA_T.js} +3 -3
  282. package/dist/interface/ha/{ConfigActionNotificationControl-Dh7kaKVP.js → ConfigActionNotificationControl-DNMrHwPz.js} +2 -2
  283. package/dist/interface/ha/{ConfigActionOutput-B4HHTg5C.js → ConfigActionOutput-C-LVFxFP.js} +1 -1
  284. package/dist/interface/ha/{ConfigActionPlugin-D20G2Dqf.js → ConfigActionPlugin-BCREAkNo.js} +5 -5
  285. package/dist/interface/ha/{ConfigActionSensor-BS3jrFaG.js → ConfigActionSensor-D48CQ6qR.js} +5 -5
  286. package/dist/interface/ha/{ConfigActionSnapshot-CInLAcwK.js → ConfigActionSnapshot-DpDy88Mg.js} +2 -2
  287. package/dist/interface/ha/{ConfigActionVariable-C5vADGNF.js → ConfigActionVariable-D9BxmwvB.js} +1 -1
  288. package/dist/interface/ha/{ConfigConditionIfElse-CPeWDD31.js → ConfigConditionIfElse-CW42tQFY.js} +3 -3
  289. package/dist/interface/ha/{ConfigConditionSensorState-BM5GmpN6.js → ConfigConditionSensorState-BZpij7kB.js} +4 -4
  290. package/dist/interface/ha/{ConfigConditionSwitch-Dmz9FduJ.js → ConfigConditionSwitch-DlTuJ9Sf.js} +5 -5
  291. package/dist/interface/ha/{ConfigSensorValueInput-Ch5njvtv.js → ConfigSensorValueInput-2QLHESlE.js} +5 -5
  292. package/dist/interface/ha/{ConfigTriggerDetection-BR2QWNyO.js → ConfigTriggerDetection-DPmUkmUJ.js} +3 -3
  293. package/dist/interface/ha/{ConfigTriggerGeofence-CaImOjyW.js → ConfigTriggerGeofence--T9OXhGl.js} +2 -2
  294. package/dist/interface/ha/{ConfigTriggerMqtt-DWz1XwZQ.js → ConfigTriggerMqtt-fZn_X6yY.js} +1 -1
  295. package/dist/interface/ha/{ConfigTriggerSensor-lfnhz0im.js → ConfigTriggerSensor-_3O6iBFX.js} +1 -1
  296. package/dist/interface/ha/{ConfigTriggerSystem-CwUhyFAj.js → ConfigTriggerSystem-CC9lqi8Q.js} +2 -2
  297. package/dist/interface/ha/{ConfigTriggerWebhook-J6Xts7GQ.js → ConfigTriggerWebhook-BuBcgXqf.js} +1 -1
  298. package/dist/interface/ha/{Console-BSdKFm6Y.js → Console-DNc49UEt.js} +13 -13
  299. package/dist/interface/ha/{CuiAutomationRunsDialog-BU8sympp.js → CuiAutomationRunsDialog-Dj_iiZht.js} +2 -2
  300. package/dist/interface/ha/{CuiBottomSheet-Bnp7ta7V.js → CuiBottomSheet-DG7wOV7m.js} +1 -1
  301. package/dist/interface/ha/{CuiCameraRecordings-E-mMqKSs.js → CuiCameraRecordings-BlOZTfQ4.js} +12 -12
  302. package/dist/interface/ha/{CuiCameraShares-DcNwd2OC.js → CuiCameraShares-BOn-mobi.js} +2 -2
  303. package/dist/interface/ha/{CuiCameraTable-DNW9Vm_A.js → CuiCameraTable-D50FLiK8.js} +9 -9
  304. package/dist/interface/ha/{CuiChartTable-muC7jL2H.js → CuiChartTable-CfcVRvdZ.js} +42 -42
  305. package/dist/interface/ha/{CuiConsole-ND8bcuTg.js → CuiConsole-UpN0Wihm.js} +6 -6
  306. package/dist/interface/ha/{CuiDataTable-CN4T8DgP.js → CuiDataTable-CpADXKNF.js} +6 -6
  307. package/dist/interface/ha/{CuiPluginCard-nIQiyQvH.js → CuiPluginCard-CT6ZfL9o.js} +52 -52
  308. package/dist/interface/ha/{CuiPluginOAuthButton-FJ49NfUh.js → CuiPluginOAuthButton-BJVKd6Ac.js} +6 -6
  309. package/dist/interface/ha/{CuiPluginTrustBadge-D6eanMyI.js → CuiPluginTrustBadge-gb9GI24w.js} +3 -3
  310. package/dist/interface/ha/{CuiQRCode-BdJzeeoE.js → CuiQRCode-DqKDx9zR.js} +7 -7
  311. package/dist/interface/ha/{CuiSchema-DY0V-8xP.js → CuiSchema-CHeJkx0k.js} +129 -129
  312. package/dist/interface/ha/{CuiTopNavbarItem-DT5pAKHp.js → CuiTopNavbarItem-CFeI6ZYU.js} +5 -5
  313. package/dist/interface/ha/Faces-CTfvhhCj.js +1441 -0
  314. package/dist/interface/ha/{FirstSteps-yS2M2cor.js → FirstSteps-C-WXJ8IL.js} +80 -80
  315. package/dist/interface/ha/{Floorplan-DSOeScjI.js → Floorplan-CDKTYN7B.js} +307 -307
  316. package/dist/interface/ha/{Instances-B4h5EKpF.js → Instances-n23yvN3L.js} +62 -62
  317. package/dist/interface/ha/{Logs-BH0Lxvs6.js → Logs-Dfm0BWOQ.js} +10 -10
  318. package/dist/interface/ha/{Menu-COH7QXuE.js → Menu-76kvdAEF.js} +15 -15
  319. package/dist/interface/ha/{Metrics-BtnRqL_I.js → Metrics-lnivlTWm.js} +101 -100
  320. package/dist/interface/ha/{OAuthDeviceFlow-D2QJ9MnP.js → OAuthDeviceFlow-4ChaymHu.js} +7 -7
  321. package/dist/interface/ha/{Plugin-EfUSqwyh.js → Plugin-BV8YA8aN.js} +486 -347
  322. package/dist/interface/ha/{PluginConsole-hh_o15f7.js → PluginConsole-csf1Km7f.js} +4 -4
  323. package/dist/interface/ha/{PluginDetail-DFiXGkrY.js → PluginDetail-DTff6cbA.js} +185 -185
  324. package/dist/interface/ha/{PluginSearch-Cdrfubrj.js → PluginSearch-CdjxmFPN.js} +116 -116
  325. package/dist/interface/ha/{PluginUpdateProgress-BD2g2kVj.js → PluginUpdateProgress-ClyF4pbA.js} +3 -3
  326. package/dist/interface/ha/{Plugins-qFiHW-Nk.js → Plugins-_xOrqP36.js} +34 -34
  327. package/dist/interface/ha/{RecentEventsFilter-UWrXnvfq.js → RecentEventsFilter-9ZkDHD1g.js} +1 -1
  328. package/dist/interface/ha/{Recordings-BzeC6tOz.js → Recordings-dTZv0pkp.js} +483 -458
  329. package/dist/interface/ha/{SensorEdit-BSgy7lkZ.js → SensorEdit-DDRkZjmm.js} +40 -40
  330. package/dist/interface/ha/{SensorHistory-IDvP8LKH.js → SensorHistory-DSGlRITr.js} +2 -2
  331. package/dist/interface/ha/{Sensors-Diqp4oZ0.js → Sensors-DjhGRUzM.js} +477 -462
  332. package/dist/interface/ha/{Settings-BgDsxAlx.js → Settings-DYuvz4de.js} +17 -17
  333. package/dist/interface/ha/{SettingsAccount-DBXMQPYk.js → SettingsAccount-DQAo8SnK.js} +146 -146
  334. package/dist/interface/ha/{SettingsAppearance-VmbjnT3o.js → SettingsAppearance-_tbhpUA0.js} +8 -8
  335. package/dist/interface/ha/{SettingsAssistant-C2R4ZetE.js → SettingsAssistant-DSf-dYuD.js} +656 -533
  336. package/dist/interface/ha/{SettingsBackup-BqY9TwYn.js → SettingsBackup-wLOa7xtw.js} +40 -40
  337. package/dist/interface/ha/{SettingsList-CzHcfo2N.js → SettingsList-CYujivw5.js} +4 -4
  338. package/dist/interface/ha/{SettingsMqtt-DqV3h3Ow.js → SettingsMqtt-DbxJ-h3J.js} +115 -115
  339. package/dist/interface/ha/{SettingsNotifications-yn5fIR_7.js → SettingsNotifications-DO2-KJvq.js} +118 -118
  340. package/dist/interface/ha/{SettingsRecordings-DDs1lyfY.js → SettingsRecordings-C47i1UhI.js} +9 -9
  341. package/dist/interface/ha/{SettingsRemote-jBw3l5E0.js → SettingsRemote-BPvb-KLI.js} +335 -335
  342. package/dist/interface/ha/{SettingsSystem-BOv9hNlk.js → SettingsSystem-BJPrv9JE.js} +9 -9
  343. package/dist/interface/ha/{SettingsUsers-Biv-2F4C.js → SettingsUsers-CcpCz6Y1.js} +89 -89
  344. package/dist/interface/ha/{Terminal-CmcrGEV0.js → Terminal-DT7-WNH1.js} +16 -16
  345. package/dist/interface/ha/Training-CqGBf8k1.js +1694 -0
  346. package/dist/interface/ha/{Updates-DJAcmDQJ.js → Updates-CgdrqX6R.js} +13 -13
  347. package/dist/interface/ha/{VariableInput-DlYg7t0m.js → VariableInput-DOzSFgxT.js} +1 -1
  348. package/dist/interface/ha/{VersionsHandler-UnrAWn-b.js → VersionsHandler-ItklhE2t.js} +10 -10
  349. package/dist/interface/ha/{VirtualSensorCreate-CssxeaCC.js → VirtualSensorCreate-DbS3VqHC.js} +2 -2
  350. package/dist/interface/ha/{Workers-CLpqLugC.js → Workers-6PU7yUv1.js} +36 -36
  351. package/dist/interface/ha/{api-BP7mlzjP.js → api-Dv3Lk_g5.js} +8832 -8608
  352. package/dist/interface/ha/{api-B_tDa73J.js → api-anWolhVj.js} +3 -3
  353. package/dist/interface/ha/{assistant-Cb6ACguQ.js → assistant-B3m0Kgev.js} +101 -97
  354. package/dist/interface/ha/{auth-DOYDRgFm.js → auth-CAkpM_7A.js} +33 -33
  355. package/dist/interface/ha/{automationBlueprint-CbbG_ku4.js → automationBlueprint-DwVvbKbw.js} +4 -4
  356. package/dist/interface/ha/cameraui-cards.js +1 -1
  357. package/dist/interface/ha/{cards-BpBP1zVW.js → cards-B0qagpBw.js} +743 -667
  358. package/dist/interface/ha/{config-DroY1HBs.js → config-C20itAPE.js} +14 -14
  359. package/dist/interface/ha/database-refresh-outline-PiqlCkA7.js +19 -0
  360. package/dist/interface/ha/{dist-BTp4AyuI.js → dist-BIngHzHx.js} +5 -5
  361. package/dist/interface/ha/{dist-C6MBHJhs.js → dist-oFWkn6pD.js} +5 -8
  362. package/dist/interface/ha/{mqtt-NJTVdd53.js → mqtt-C6JvkA5E.js} +14 -14
  363. package/dist/interface/ha/{notifications-BPTvvgvv.js → notifications-gLmNZxwZ.js} +19 -19
  364. package/dist/interface/ha/{pinia-C6gt7A_Q.js → pinia-Du8AM917.js} +639 -625
  365. package/dist/interface/ha/{plugins-B29K3nQP.js → plugins-6x0kBuQb.js} +53 -53
  366. package/dist/interface/ha/{rooms-DLw0WUy_.js → rooms-C-mLT6mX.js} +11 -11
  367. package/dist/interface/ha/{server-B4b5_Ecu.js → server-DuikIt69.js} +28 -28
  368. package/dist/interface/ha/{types-DJHHL7nn.js → types-C0NcQ4Cz.js} +49 -38
  369. package/dist/interface/ha/{types-XqA3YJPD.js → types-wLECk3Ml.js} +3 -1
  370. package/dist/interface/ha/{ungrouped-xyK1QrsM.js → ungrouped-ooCH0Izh.js} +120 -120
  371. package/dist/interface/ha/{updates-XFSu9Tfm.js → updates-H8MlOQLC.js} +36 -36
  372. package/dist/interface/ha/{useAppVersion-BH3rU1zz.js → useAppVersion-DAUCV_cn.js} +1 -1
  373. package/dist/interface/ha/{useLogsSocket-CaTRzvgU.js → useLogsSocket-BOLAXPuD.js} +1 -1
  374. package/dist/interface/ha/{useNavLayout-DV0_OQx0.js → useNavLayout-B7VoHzM1.js} +2 -2
  375. package/dist/interface/ha/{useServerRestart-C8tynLUf.js → useServerRestart-qSH0bqwY.js} +1 -1
  376. package/dist/interface/ha/{useTabSwipe-CFoLDp3j.js → useTabSwipe-DYzG_gVG.js} +1 -1
  377. package/dist/interface/ha/{useUpdateChannel-DSG2RTPe.js → useUpdateChannel-CK7JiWbG.js} +2 -2
  378. package/dist/interface/ha/{useUpdatesSocket-CSQ0g7-6.js → useUpdatesSocket-DrqkGMuR.js} +1 -1
  379. package/dist/interface/ha/{useUserOptions-CFaCy6L1.js → useUserOptions-BteVUdaT.js} +1 -1
  380. package/dist/interface/index.html +70 -70
  381. package/dist/interface/sw.js +1 -1
  382. package/dist/server/package.json +28 -28
  383. package/dist/server/requirements.txt +2 -2
  384. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/__init__.py +44 -0
  385. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/config.py +2 -0
  386. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/camera/detection.py +7 -2
  387. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/__init__.py +42 -0
  388. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/assistant_models.py +300 -0
  389. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/contract.py +9 -0
  390. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/helper.py +21 -0
  391. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/plugin/interfaces.py +80 -4
  392. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/__init__.py +6 -0
  393. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/base.py +2 -0
  394. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/face.py +3 -7
  395. package/dist/server/src/_camera_ui_tools/camera_ui_sdk/sensor/face_embedder.py +69 -0
  396. package/dist/server/src/api/controllers/assistant.controller.js +1 -1
  397. package/dist/server/src/api/controllers/assistant.controller.js.map +1 -1
  398. package/dist/server/src/api/database/index.d.ts +1 -1
  399. package/dist/server/src/api/database/index.js +1 -1
  400. package/dist/server/src/api/database/migrations/v2-2-5.d.ts +3 -0
  401. package/dist/server/src/api/database/migrations/v2-2-5.js +19 -0
  402. package/dist/server/src/api/database/migrations/v2-2-5.js.map +1 -0
  403. package/dist/server/src/api/database/record-schemas.d.ts +4 -2
  404. package/dist/server/src/api/database/record-schemas.js +4 -1
  405. package/dist/server/src/api/database/record-schemas.js.map +1 -1
  406. package/dist/server/src/api/database/types.d.ts +5 -1
  407. package/dist/server/src/api/schemas/assistant.schema.d.ts +21 -7
  408. package/dist/server/src/api/schemas/assistant.schema.js +4 -1
  409. package/dist/server/src/api/schemas/assistant.schema.js.map +1 -1
  410. package/dist/server/src/api/schemas/cameras.schema.d.ts +56 -8
  411. package/dist/server/src/api/schemas/cameras.schema.js +4 -3
  412. package/dist/server/src/api/schemas/cameras.schema.js.map +1 -1
  413. package/dist/server/src/api/services/assistant.service.d.ts +1 -1
  414. package/dist/server/src/api/services/assistant.service.js +4 -1
  415. package/dist/server/src/api/services/assistant.service.js.map +1 -1
  416. package/dist/server/src/api/services/cameras.service.js +2 -2
  417. package/dist/server/src/api/services/cameras.service.js.map +1 -1
  418. package/dist/server/src/api/websocket/nsp/worker-perf.js +13 -0
  419. package/dist/server/src/api/websocket/nsp/worker-perf.js.map +1 -1
  420. package/dist/server/src/api/websocket/types.d.ts +12 -0
  421. package/dist/server/src/assistant/budget.d.ts +27 -0
  422. package/dist/server/src/assistant/budget.js +118 -0
  423. package/dist/server/src/assistant/budget.js.map +1 -0
  424. package/dist/server/src/assistant/compaction.d.ts +10 -0
  425. package/dist/server/src/assistant/compaction.js +83 -0
  426. package/dist/server/src/assistant/compaction.js.map +1 -0
  427. package/dist/server/src/assistant/docs.js +4 -3
  428. package/dist/server/src/assistant/docs.js.map +1 -1
  429. package/dist/server/src/assistant/history.d.ts +1 -0
  430. package/dist/server/src/assistant/history.js +28 -0
  431. package/dist/server/src/assistant/history.js.map +1 -1
  432. package/dist/server/src/assistant/manager.d.ts +10 -0
  433. package/dist/server/src/assistant/manager.js +261 -62
  434. package/dist/server/src/assistant/manager.js.map +1 -1
  435. package/dist/server/src/assistant/plugin-models.d.ts +34 -0
  436. package/dist/server/src/assistant/plugin-models.js +266 -0
  437. package/dist/server/src/assistant/plugin-models.js.map +1 -0
  438. package/dist/server/src/assistant/prompt.d.ts +7 -1
  439. package/dist/server/src/assistant/prompt.js +75 -11
  440. package/dist/server/src/assistant/prompt.js.map +1 -1
  441. package/dist/server/src/assistant/providers.js +7 -3
  442. package/dist/server/src/assistant/providers.js.map +1 -1
  443. package/dist/server/src/assistant/recap.d.ts +3 -0
  444. package/dist/server/src/assistant/recap.js +65 -0
  445. package/dist/server/src/assistant/recap.js.map +1 -0
  446. package/dist/server/src/assistant/registry.d.ts +16 -1
  447. package/dist/server/src/assistant/registry.js +49 -1
  448. package/dist/server/src/assistant/registry.js.map +1 -1
  449. package/dist/server/src/assistant/retry.js +38 -24
  450. package/dist/server/src/assistant/retry.js.map +1 -1
  451. package/dist/server/src/assistant/router.d.ts +7 -0
  452. package/dist/server/src/assistant/router.js +67 -0
  453. package/dist/server/src/assistant/router.js.map +1 -0
  454. package/dist/server/src/assistant/skills.d.ts +8 -0
  455. package/dist/server/src/assistant/skills.js +59 -1
  456. package/dist/server/src/assistant/skills.js.map +1 -1
  457. package/dist/server/src/assistant/threads.d.ts +1 -0
  458. package/dist/server/src/assistant/threads.js +7 -1
  459. package/dist/server/src/assistant/threads.js.map +1 -1
  460. package/dist/server/src/assistant/tool-names.js +9 -1
  461. package/dist/server/src/assistant/tool-names.js.map +1 -1
  462. package/dist/server/src/assistant/tool-rank.d.ts +2 -0
  463. package/dist/server/src/assistant/tool-rank.js +48 -0
  464. package/dist/server/src/assistant/tool-rank.js.map +1 -0
  465. package/dist/server/src/assistant/tool-schema.d.ts +3 -0
  466. package/dist/server/src/assistant/tool-schema.js +65 -0
  467. package/dist/server/src/assistant/tool-schema.js.map +1 -0
  468. package/dist/server/src/assistant/tools/api.js +7 -9
  469. package/dist/server/src/assistant/tools/api.js.map +1 -1
  470. package/dist/server/src/assistant/tools/ask.js +1 -2
  471. package/dist/server/src/assistant/tools/ask.js.map +1 -1
  472. package/dist/server/src/assistant/tools/automations.js +3 -5
  473. package/dist/server/src/assistant/tools/automations.js.map +1 -1
  474. package/dist/server/src/assistant/tools/cameras.js +3 -4
  475. package/dist/server/src/assistant/tools/cameras.js.map +1 -1
  476. package/dist/server/src/assistant/tools/docs.js +5 -6
  477. package/dist/server/src/assistant/tools/docs.js.map +1 -1
  478. package/dist/server/src/assistant/tools/instance.js +19 -19
  479. package/dist/server/src/assistant/tools/instance.js.map +1 -1
  480. package/dist/server/src/assistant/tools/memory.js +3 -4
  481. package/dist/server/src/assistant/tools/memory.js.map +1 -1
  482. package/dist/server/src/assistant/tools/metrics.js +1 -2
  483. package/dist/server/src/assistant/tools/metrics.js.map +1 -1
  484. package/dist/server/src/assistant/tools/notifications.js +4 -11
  485. package/dist/server/src/assistant/tools/notifications.js.map +1 -1
  486. package/dist/server/src/assistant/tools/plugins.js +12 -14
  487. package/dist/server/src/assistant/tools/plugins.js.map +1 -1
  488. package/dist/server/src/assistant/tools/report.js +17 -12
  489. package/dist/server/src/assistant/tools/report.js.map +1 -1
  490. package/dist/server/src/assistant/tools/schedules.js +6 -11
  491. package/dist/server/src/assistant/tools/schedules.js.map +1 -1
  492. package/dist/server/src/assistant/tools/sensors.js +63 -4
  493. package/dist/server/src/assistant/tools/sensors.js.map +1 -1
  494. package/dist/server/src/assistant/tools/settings.js +2 -3
  495. package/dist/server/src/assistant/tools/settings.js.map +1 -1
  496. package/dist/server/src/assistant/tools/system.js +3 -5
  497. package/dist/server/src/assistant/tools/system.js.map +1 -1
  498. package/dist/server/src/assistant/tools/terminal.js +4 -5
  499. package/dist/server/src/assistant/tools/terminal.js.map +1 -1
  500. package/dist/server/src/assistant/types.d.ts +10 -1
  501. package/dist/server/src/assistant/uploads.d.ts +2 -1
  502. package/dist/server/src/assistant/uploads.js +25 -3
  503. package/dist/server/src/assistant/uploads.js.map +1 -1
  504. package/dist/server/src/camera/decoder/detection-coordinator.d.ts +5 -0
  505. package/dist/server/src/camera/decoder/detection-coordinator.js +45 -14
  506. package/dist/server/src/camera/decoder/detection-coordinator.js.map +1 -1
  507. package/dist/server/src/camera/decoder/detection-pipeline.js +2 -1
  508. package/dist/server/src/camera/decoder/detection-pipeline.js.map +1 -1
  509. package/dist/server/src/camera/decoder/event-manager.d.ts +27 -4
  510. package/dist/server/src/camera/decoder/event-manager.js +175 -48
  511. package/dist/server/src/camera/decoder/event-manager.js.map +1 -1
  512. package/dist/server/src/camera/decoder/nvr-sink.d.ts +4 -1
  513. package/dist/server/src/camera/decoder/nvr-sink.js +1 -1
  514. package/dist/server/src/camera/decoder/nvr-sink.js.map +1 -1
  515. package/dist/server/src/camera/decoder/perf-tracker.d.ts +10 -0
  516. package/dist/server/src/camera/decoder/perf-tracker.js +20 -0
  517. package/dist/server/src/camera/decoder/perf-tracker.js.map +1 -1
  518. package/dist/server/src/camera/decoder/secondary-stage.d.ts +21 -1
  519. package/dist/server/src/camera/decoder/secondary-stage.js +301 -59
  520. package/dist/server/src/camera/decoder/secondary-stage.js.map +1 -1
  521. package/dist/server/src/camera/decoder/side-queue.d.ts +13 -0
  522. package/dist/server/src/camera/decoder/side-queue.js +53 -0
  523. package/dist/server/src/camera/decoder/side-queue.js.map +1 -0
  524. package/dist/server/src/camera/decoder/sources/buffered-source.d.ts +2 -0
  525. package/dist/server/src/camera/decoder/sources/buffered-source.js +7 -1
  526. package/dist/server/src/camera/decoder/sources/buffered-source.js.map +1 -1
  527. package/dist/server/src/camera/decoder/types.d.ts +11 -1
  528. package/dist/server/src/camera/decoder/types.js +9 -1
  529. package/dist/server/src/camera/decoder/types.js.map +1 -1
  530. package/dist/server/src/camera/sensors/controller.d.ts +1 -0
  531. package/dist/server/src/camera/sensors/controller.js +28 -4
  532. package/dist/server/src/camera/sensors/controller.js.map +1 -1
  533. package/dist/server/src/main.js +11 -2
  534. package/dist/server/src/main.js.map +1 -1
  535. package/dist/server/src/plugins/runtime/python/proxy/camera_device.py +1 -14
  536. package/dist/server/src/plugins/runtime/python/proxy/sensor.py +14 -1
  537. package/dist/server/src/plugins/runtime/python/proxy/sensor_manager.py +1 -13
  538. package/dist/server/src/rpc/interfaces/detection.d.ts +14 -2
  539. package/dist/server/src/rpc/server.js +1 -0
  540. package/dist/server/src/rpc/server.js.map +1 -1
  541. package/dist/server/src/services/config/index.d.ts +1 -0
  542. package/dist/server/src/services/config/index.js +6 -11
  543. package/dist/server/src/services/config/index.js.map +1 -1
  544. package/dist/server/src/utils/camera.js +8 -5
  545. package/dist/server/src/utils/camera.js.map +1 -1
  546. package/dist/server/src/utils/instance-lock.d.ts +1 -0
  547. package/dist/server/src/utils/instance-lock.js +57 -0
  548. package/dist/server/src/utils/instance-lock.js.map +1 -0
  549. package/dist/server/src/workers/agent.d.ts +2 -0
  550. package/dist/server/src/workers/agent.js +11 -1
  551. package/dist/server/src/workers/agent.js.map +1 -1
  552. package/dist/server/src/workers/manager.js +9 -2
  553. package/dist/server/src/workers/manager.js.map +1 -1
  554. package/dist/server/src/workers/types.d.ts +1 -0
  555. package/npm-shrinkwrap.json +209 -209
  556. package/package.json +28 -28
  557. package/dist/interface/assets/Assistant-bB8RBo-m.js +0 -1
  558. package/dist/interface/assets/Automations-BdZZW2eN.js +0 -2
  559. package/dist/interface/assets/Camera-Ct7ndOxr.js +0 -2
  560. package/dist/interface/assets/Camview-BjQdTHNh.js +0 -1
  561. package/dist/interface/assets/Config-CBTbYd5v.js +0 -2
  562. package/dist/interface/assets/ConfigTriggerGeofence-Bl2ZacbY.js +0 -1
  563. package/dist/interface/assets/Console-Cfk9MA9m.js +0 -1
  564. package/dist/interface/assets/CuiAssistantConversation-BHK_i56I.js +0 -5
  565. package/dist/interface/assets/CuiAutomationRunsDialog-B0ohEHw0.js +0 -1
  566. package/dist/interface/assets/CuiBottomSheet-NgX7VFao.js +0 -1
  567. package/dist/interface/assets/CuiCameraRecordings-BTD-CQAg.js +0 -1
  568. package/dist/interface/assets/CuiCameraTable-KPk46Xcl.js +0 -1
  569. package/dist/interface/assets/CuiDataTable-CsqH-RB1.js +0 -1
  570. package/dist/interface/assets/CuiMarkdownContent-DSArmS0V.js +0 -1
  571. package/dist/interface/assets/CuiSchema-ytExUVhI.js +0 -1
  572. package/dist/interface/assets/Faces-Cb6XMxDC.js +0 -1
  573. package/dist/interface/assets/Floorplan-DbqADtN1.js +0 -1
  574. package/dist/interface/assets/Instances-DrMzPD65.js +0 -1
  575. package/dist/interface/assets/Metrics-BUP_-7o7.css +0 -1
  576. package/dist/interface/assets/Metrics-CqhUnVRA.js +0 -12
  577. package/dist/interface/assets/Plugin-BDqNeTCT.css +0 -1
  578. package/dist/interface/assets/Plugin-DyOg_fbg.js +0 -1
  579. package/dist/interface/assets/PluginSearch-BgecD9Ob.js +0 -2
  580. package/dist/interface/assets/PluginSearch-C8xHKikH.js +0 -1
  581. package/dist/interface/assets/Plugins-CuujWEtM.js +0 -1
  582. package/dist/interface/assets/Recordings-9FJqCfdM.css +0 -1
  583. package/dist/interface/assets/Recordings-ths9khZr.js +0 -1
  584. package/dist/interface/assets/SensorEdit-BzoIH7QC.js +0 -1
  585. package/dist/interface/assets/Sensors-CK5uExfU.js +0 -2
  586. package/dist/interface/assets/Settings-DN5hFtw_.js +0 -1
  587. package/dist/interface/assets/SettingsAccount-BCrmon5O.js +0 -1
  588. package/dist/interface/assets/SettingsAccount-CSy1BAIH.js +0 -1
  589. package/dist/interface/assets/SettingsAppearance-h_XPZfQl.js +0 -1
  590. package/dist/interface/assets/SettingsAssistant-BESab92C.css +0 -1
  591. package/dist/interface/assets/SettingsAssistant-D8FmVbUL.js +0 -1
  592. package/dist/interface/assets/SettingsMqtt-DCkLIYpF.js +0 -1
  593. package/dist/interface/assets/SettingsRemote-DXlQKwlT.js +0 -2
  594. package/dist/interface/assets/Terminal-Dl-aAZME.js +0 -4
  595. package/dist/interface/assets/Training-B1oQjAr8.css +0 -1
  596. package/dist/interface/assets/Training-DdZjXgt1.js +0 -1
  597. package/dist/interface/assets/Updates-CkB1lXuo.js +0 -2
  598. package/dist/interface/assets/Workers-7yiebNkl.js +0 -2
  599. package/dist/interface/assets/api-DK2Bav9D.js +0 -4
  600. package/dist/interface/assets/api-DTCqDA-h.css +0 -2
  601. package/dist/interface/assets/assistant-BJ6xKcw_.js +0 -1
  602. package/dist/interface/assets/cloudHandoff-DtlquYGZ.js +0 -1
  603. package/dist/interface/assets/esm-4Hzzm93H.js +0 -1
  604. package/dist/interface/assets/esm-BrFPi5_4.js +0 -1
  605. package/dist/interface/assets/esm-C7pcdfXf.js +0 -1
  606. package/dist/interface/assets/esm-C8bsO829.js +0 -1
  607. package/dist/interface/assets/esm-CXzdnAMk.js +0 -1
  608. package/dist/interface/assets/esm-CZNGZkPu.js +0 -1
  609. package/dist/interface/assets/esm-D0iI7OVb.js +0 -1
  610. package/dist/interface/assets/esm-DKolm6KU.js +0 -1
  611. package/dist/interface/assets/esm-DTywI9gs.js +0 -1
  612. package/dist/interface/assets/esm-DifXcK9i.js +0 -1
  613. package/dist/interface/assets/esm-Dq5o-Xb4.js +0 -1
  614. package/dist/interface/assets/esm-IbQuUZ5l.js +0 -1
  615. package/dist/interface/assets/esm-Xre_AP5i.js +0 -1
  616. package/dist/interface/assets/esm-zYnXHhpH.js +0 -1
  617. package/dist/interface/assets/main-D74mRIxc.js +0 -3
  618. package/dist/interface/assets/native-CAujTO6L.js +0 -1
  619. package/dist/interface/assets/native-sQ88qazf.js +0 -1
  620. package/dist/interface/assets/plugin-D7K50k_y.js +0 -1
  621. package/dist/interface/assets/sensorIcons-DQVgryYP.js +0 -1
  622. package/dist/interface/assets/types-5rE8Tz0_.js +0 -1
  623. package/dist/interface/assets/ungrouped-D56FGIrg.js +0 -1
  624. package/dist/interface/assets/useBackupRestore-Crfd592q.js +0 -1
  625. package/dist/interface/assets/useUserOptions-BTRBUuE2.js +0 -1
  626. package/dist/interface/assets/vendor-gridstack-anPyIu9V.js +0 -3
  627. package/dist/interface/assets/web-3M-ddn4G.js +0 -1
  628. package/dist/interface/assets/web-BY80VGyU.js +0 -1
  629. package/dist/interface/assets/web-B_tUYyM0.js +0 -1
  630. package/dist/interface/assets/web-BjKL51lK-Bb5NYhpJ.js +0 -1
  631. package/dist/interface/assets/web-Bv-4PJGI.js +0 -1
  632. package/dist/interface/assets/web-C3Pk8qeB.js +0 -1
  633. package/dist/interface/assets/web-CLcvGPH6.js +0 -1
  634. package/dist/interface/assets/web-DO8gTOVJ.js +0 -1
  635. package/dist/interface/assets/web-DR5q_DmI.js +0 -1
  636. package/dist/interface/assets/web-DRHbG4Te.js +0 -1
  637. package/dist/interface/assets/web-DaQ8d8yk.js +0 -1
  638. package/dist/interface/assets/web-EVRW5whF.js +0 -1
  639. package/dist/interface/assets/web-S6Dk3UWN.js +0 -1
  640. package/dist/interface/assets/web-pWIp0wf0.js +0 -1
  641. package/dist/interface/assets/workbox-window.prod.es5-Dz5rcO1z.js +0 -1
  642. package/dist/interface/ha/Faces-C_svyTrr.js +0 -1282
  643. package/dist/interface/ha/Training-BEzPiXZg.js +0 -1512
@@ -1 +0,0 @@
1
- import{W as e}from"./vendor-capacitor-COL6Kz75.js";export{e as BiometricAuthNative};
@@ -1 +0,0 @@
1
- import{R as e}from"./vendor-capacitor-COL6Kz75.js";export{e as SecureStorageNative};
@@ -1 +0,0 @@
1
- import{k as e}from"./vendor-capacitor-COL6Kz75.js";export{e as FileTransfer};
@@ -1 +0,0 @@
1
- import{Lr as e}from"./vendor-cameraui-QXD8jkcj.js";import{Qt as t}from"./api-DK2Bav9D.js";import{In as n,cn as r,dn as i,sr as a}from"./vendor-DGke_6M4.js";import{n as o}from"./alert-outline-D7zaSJH_.js";import{a as s,c as ee,d as c,f as l,h as u,i as d,l as f,o as p,p as m,r as h,s as g,u as _}from"./eventIcons-cdzqQc0W.js";import{n as v,t as y}from"./cube-scan-DGhUFV1x.js";var b={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function x(e,t){return n(),i(`svg`,b,[...t[0]||=[r(`path`,{fill:`currentColor`,d:`m22 12l-2 1l-1 1l-1-1l-1 3l-1-3l-1 8l-1-8l-1 2l-1-2l-1 4l-1-4l-1 9l-1-9l-1 6l-1-6l-1 1l-1-1l-2-1l2-1l1-1l1 1l1-6l1 6l1-9l1 9l1-4l1 4l1-2l1 2l1-8l1 8l1-3l1 3l1-1l1 1z`},null,-1)]])}var S=a({name:`mdi-waveform`,render:x}),C={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function w(e,t){return n(),i(`svg`,C,[...t[0]||=[r(`path`,{fill:`currentColor`,d:`M16 10H8V6h8m.67-2H15V2H9v2H7.33A1.33 1.33 0 0 0 6 5.33v15.34C6 21.4 6.6 22 7.33 22h9.34A1.33 1.33 0 0 0 18 20.67V5.33C18 4.6 17.4 4 16.67 4`},null,-1)]])}var T=a({name:`mdi-battery-70`,render:w}),E={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function D(e,t){return n(),i(`svg`,E,[...t[0]||=[r(`path`,{fill:`currentColor`,d:`M12 18a6 6 0 0 1-6-6a6 6 0 0 1 6-6a6 6 0 0 1 6 6a6 6 0 0 1-6 6m8-2.69L23.31 12L20 8.69V4h-4.69L12 .69L8.69 4H4v4.69L.69 12L4 15.31V20h4.69L12 23.31L15.31 20H20z`},null,-1)]])}var O=a({name:`mdi-brightness-5`,render:D}),k={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function A(e,t){return n(),i(`svg`,k,[...t[0]||=[r(`path`,{fill:`currentColor`,d:`M5 7a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h3v-2H5V9h3V7zm6 0a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2zm0 2h2v6h-2zm5 1.5V12h3v1.5h-1.5A1.5 1.5 0 0 0 16 15v3h4.5v-1.5h-3V15H19a1.5 1.5 0 0 0 1.5-1.5V12a1.5 1.5 0 0 0-1.5-1.5z`},null,-1)]])}var j=a({name:`mdi-molecule-co2`,render:A}),M={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function N(e,t){return n(),i(`svg`,M,[...t[0]||=[r(`path`,{fill:`currentColor`,d:`M4 18h9l-2 2H4c-.5 0-1.03-.21-1.41-.59S2 18.5 2 18V8h2zM17.63 4.84C17.27 4.33 16.67 4 16 4H8c-1.1 0-2 .9-2 2v8c0 1.1.9 2 2 2h8c.67 0 1.27-.34 1.63-.85L22 10zM16 14H8V6h8l3.55 4Z`},null,-1)]])}var P=a({name:`mdi-label-multiple-outline`,render:N}),F={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function I(e,t){return n(),i(`svg`,F,[...t[0]||=[r(`path`,{fill:`currentColor`,d:`M15.5 9c.7 0 1.29-.24 1.77-.73c.49-.48.73-1.07.73-1.77c0-.67-.24-1.27-.73-1.77c-.48-.5-1.07-.73-1.77-.73c-.67 0-1.27.23-1.77.73S13 5.83 13 6.5c0 .7.23 1.29.73 1.77c.5.49 1.1.73 1.77.73m3.81-.09l3.1 3.09L21 13.41l-3.14-3.1c-.78.47-1.58.69-2.39.69c-1.25 0-2.31-.42-3.17-1.3c-.85-.87-1.3-1.93-1.3-3.2c0-1.23.45-2.3 1.33-3.17C13.2 2.45 14.27 2 15.5 2c1.27 0 2.33.45 3.2 1.33c.88.87 1.3 1.94 1.3 3.17c0 .83-.22 1.63-.69 2.41M16.5 18h-11l2.75-3.5l1.97 2.33l2.72-3.52zm1.5-5l2 2v5c0 .55-.19 1-.59 1.4c-.41.39-.88.6-1.41.6H4c-.55 0-1-.21-1.4-.6c-.39-.4-.6-.85-.6-1.4V6c0-.53.21-1 .6-1.41C3 4.19 3.45 4 4 4h5.5c-.3.64-.47 1.31-.5 2H4v14h14z`},null,-1)]])}var L=a({name:`mdi-image-search-outline`,render:I}),R={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function z(e,t){return n(),i(`svg`,R,[...t[0]||=[r(`path`,{fill:`currentColor`,d:`M8 3c-1.11 0-2 .89-2 2v16h12V5c0-1.11-.89-2-2-2zm0 2h8v14H8zm5 6v2h2v-2z`},null,-1)]])}var B=a({name:`mdi-door`,render:z}),V={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function H(e,t){return n(),i(`svg`,V,[...t[0]||=[r(`path`,{fill:`currentColor`,d:`M12 3.25S6 10 6 14c0 3.32 2.69 6 6 6a6 6 0 0 0 6-6c0-4-6-10.75-6-10.75m2.47 6.72l1.06 1.06l-6 6l-1.06-1.06M9.75 10A1.25 1.25 0 0 1 11 11.25a1.25 1.25 0 0 1-1.25 1.25a1.25 1.25 0 0 1-1.25-1.25A1.25 1.25 0 0 1 9.75 10m4.5 4.5a1.25 1.25 0 0 1 1.25 1.25A1.25 1.25 0 0 1 14.25 17A1.25 1.25 0 0 1 13 15.75a1.25 1.25 0 0 1 1.25-1.25`},null,-1)]])}var U=a({name:`mdi-water-percent`,render:H}),te={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function W(e,t){return n(),i(`svg`,te,[...t[0]||=[r(`path`,{fill:`currentColor`,d:`M9.61 16.11c0-2.08.98-3.92 2.49-5.11H5l1.5-4.5h11l1.22 3.66c.84.37 1.58.91 2.19 1.58L18.92 6c-.2-.58-.76-1-1.42-1h-11c-.66 0-1.22.42-1.42 1L3 12v8c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-1h4.29c-.43-.87-.68-1.85-.68-2.89M6.5 16c-.83 0-1.5-.67-1.5-1.5S5.67 13 6.5 13s1.5.67 1.5 1.5S7.33 16 6.5 16m14.21 4.7l-.01.01zm-4.6-9.09c2.5 0 4.5 2 4.5 4.5c0 .89-.25 1.71-.69 2.39L23 21.61L21.61 23l-3.11-3.07c-.7.43-1.5.68-2.39.68c-2.5 0-4.5-2-4.5-4.5s2-4.5 4.5-4.5m0 2a2.5 2.5 0 1 0 2.5 2.5c0-1.39-1.11-2.5-2.5-2.5`},null,-1)]])}var G=a({name:`mdi-car-search`,render:W}),K={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function q(e,t){return n(),i(`svg`,K,[...t[0]||=[r(`path`,{fill:`currentColor`,d:`M12 17a2 2 0 0 1-2-2c0-1.11.89-2 2-2a2 2 0 0 1 2 2a2 2 0 0 1-2 2m6 3V10H6v10zm0-12a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V10c0-1.11.89-2 2-2h1V6a5 5 0 0 1 5-5a5 5 0 0 1 5 5v2zm-6-5a3 3 0 0 0-3 3v2h6V6a3 3 0 0 0-3-3`},null,-1)]])}var J=a({name:`mdi-lock-outline`,render:q}),Y={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function X(e,t){return n(),i(`svg`,Y,[...t[0]||=[r(`path`,{fill:`currentColor`,d:`M21 16.5c0 .38-.21.71-.53.88l-7.9 4.44c-.16.12-.36.18-.57.18s-.41-.06-.57-.18l-7.9-4.44A.99.99 0 0 1 3 16.5v-9c0-.38.21-.71.53-.88l7.9-4.44c.16-.12.36-.18.57-.18s.41.06.57.18l7.9 4.44c.32.17.53.5.53.88zM12 4.15L6.04 7.5L12 10.85l5.96-3.35zM5 15.91l6 3.38v-6.71L5 9.21zm14 0v-6.7l-6 3.37v6.71z`},null,-1)]])}var Z=a({name:`mdi-cube-outline`,render:X}),Q={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function ne(e,t){return n(),i(`svg`,Q,[...t[0]||=[r(`path`,{fill:`currentColor`,d:`M12 3L2 12h3v8h14v-8h3zm0 5.75A2.25 2.25 0 0 1 14.25 11A2.25 2.25 0 0 1 12 13.25A2.25 2.25 0 0 1 9.75 11A2.25 2.25 0 0 1 12 8.75M12 15c1.5 0 4.5.75 4.5 2.25V18h-9v-.75c0-1.5 3-2.25 4.5-2.25`},null,-1)]])}var re=a({name:`mdi-home-account`,render:ne}),ie={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function ae(e,t){return n(),i(`svg`,ie,[...t[0]||=[r(`path`,{fill:`currentColor`,d:`M16 7V3h-2v4h-4V3H8v4C7 7 6 8 6 9v5.5L9.5 18v3h5v-3l3.5-3.5V9c0-1-1-2-2-2m0 6.67l-2.91 2.92l-.42.41h-1.34l-.41-.41L8 13.67V9.09c0-.03.06-.09.09-.09h7.83c.03 0 .08.06.08.09z`},null,-1)]])}var oe=a({name:`mdi-power-plug-outline`,render:ae}),se={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function ce(e,t){return n(),i(`svg`,se,[...t[0]||=[r(`path`,{fill:`currentColor`,d:`M8 14.25L4.75 11H7c.25-5.61 2.39-10 5-10c2 0 3.77 2.64 4.55 6.45C20.36 8.23 23 10 23 12c0 1.83-2.17 3.43-5.4 4.3l.29-2.03C19.8 13.72 21 12.91 21 12c0-1.06-1.65-2-4.13-2.5c.08.79.13 1.63.13 2.5c0 6.08-2.24 11-5 11c-1.83 0-3.43-2.17-4.3-5.4l2.03.29C10.28 19.8 11.09 21 12 21c1.66 0 3-4.03 3-9q0-1.5-.15-2.85Q13.5 9 12 9l-1.86.06l.29-2.01L12 7c.87 0 1.71.05 2.5.13C14 4.65 13.06 3 12 3c-1.54 0-2.82 3.5-3 8h2.25zM14.25 16L11 19.25V17c-5.61-.25-10-2.39-10-5c0-1.83 2.17-3.43 5.4-4.3l-.29 2.03C4.2 10.28 3 11.09 3 12c0 1.54 3.5 2.82 8 3v-2.25z`},null,-1)]])}var le=a({name:`mdi-rotate-orbit`,render:ce}),ue={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function de(e,t){return n(),i(`svg`,ue,[...t[0]||=[r(`path`,{fill:`currentColor`,d:`M21 11c0 5.55-3.84 10.74-9 12c-5.16-1.26-9-6.45-9-12V5l9-4l9 4zm-9 10c3.75-1 7-5.46 7-9.78V6.3l-7-3.12L5 6.3v4.92C5 15.54 8.25 20 12 21m-1-7h2v3h3v-5h2l-6-5l-6 5h2v5h3z`},null,-1)]])}var fe=a({name:`mdi-shield-home-outline`,render:de}),pe={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function $(e,t){return n(),i(`svg`,pe,[...t[0]||=[r(`path`,{fill:`currentColor`,d:`M17 6H7c-3.31 0-6 2.69-6 6s2.69 6 6 6h10c3.31 0 6-2.69 6-6s-2.69-6-6-6m0 10H7c-2.21 0-4-1.79-4-4s1.79-4 4-4h10c2.21 0 4 1.79 4 4s-1.79 4-4 4m0-7c-1.66 0-3 1.34-3 3s1.34 3 3 3s3-1.34 3-3s-1.34-3-3-3`},null,-1)]])}var me=a({name:`mdi-toggle-switch-outline`,render:$}),he={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function ge(e,t){return n(),i(`svg`,he,[...t[0]||=[r(`path`,{fill:`currentColor`,d:`M15 13V5a3 3 0 0 0-6 0v8a5 5 0 1 0 6 0m-3-9a1 1 0 0 1 1 1v3h-2V5a1 1 0 0 1 1-1`},null,-1)]])}var _e=a({name:`mdi-thermometer`,render:ge}),ve={[e.Motion]:l,[e.Object]:y,[e.Audio]:S,[e.Face]:u,[e.LicensePlate]:G,[e.Classifier]:P,[e.Clip]:L,[e.ObjectAssist]:Z,[e.Contact]:B,[e.Temperature]:_e,[e.Humidity]:U,[e.Occupancy]:re,[e.Smoke]:p,[e.Leak]:h,[e.Gas]:_,[e.CarbonMonoxide]:f,[e.CarbonDioxide]:j,[e.Heat]:c,[e.Cold]:s,[e.Vibration]:d,[e.Tamper]:g,[e.Problem]:m,[e.Power]:oe,[e.Illuminance]:O,[e.Light]:o,[e.Siren]:v,[e.Switch]:me,[e.Lock]:J,[e.PTZ]:le,[e.SecuritySystem]:fe,[e.Garage]:ee,[e.Doorbell]:t,[e.Battery]:T};function ye(e){return ve[e]??l}export{J as n,ye as t};
@@ -1 +0,0 @@
1
- import{Gr as e,Hr as t,Ur as n,Wr as r}from"./vendor-cameraui-QXD8jkcj.js";import{Vt as i}from"./vendor-DGke_6M4.js";import{C as a,S as ee,T as o,_ as s,a as c,b as l,c as u,d,f,g as p,h as te,l as m,m as ne,o as h,p as re,s as g,u as _,v,w as ie,x as y,y as ae}from"./vendor-zod-CBbC1rE7.js";function oe(e){return e.mimetype!==void 0}function se(e){return oe(e)?Buffer.byteLength(e._buf):e.size}function ce(e){return oe(e)?e.mimetype:e.type}function b(e,t,n,r){return f().refine(t=>se(t)<=e,n).refine(e=>t.includes(ce(e)),r)}function le(e){return{privacyFallback:e?.privacyFallback??`send`,motion:e?.motion??[],object:e?.object??[],privacy:e?.privacy??[],alert:e?.alert??[],lines:e?.lines??[]}}function ue(e){let t=[`kasa://`,`nest:`,`ring:`,`tapo://`];return e.some(e=>t.some(t=>e.startsWith(t)))}var x=v({enabled:d().default(!0),mode:u([`continuous`,`event`,`adhoc`]).default(`continuous`),preBuffer:s().min(0).max(60).default(10),sources:_(u([`high`,`mid`,`low`])).default([`high`,`mid`,`low`])}).strict(),de={enabled:!0,mode:`continuous`,preBuffer:10,sources:[`high`,`mid`,`low`]},fe=v({enabled:d().default(!0),video:d().default(!1),audio:y().trim().min(1).array().default([]),sensors:y().trim().min(1).array().default([]),cooldown:s().min(0).max(600).default(30),speed:u([`immediate`,`balanced`,`best`]).default(`balanced`)}).strict(),pe={enabled:!0,video:!1,audio:[`glass_break`,`scream`,`gunshot`,`alarm`,`siren`,`smoke_alarm`],sensors:[`doorbell`,`contact`,`siren`,`security_system`,`smoke`,`gas`,`carbonMonoxide`,`heat`,`leak`,`cold`,`vibration`,`tamper`,`problem`],cooldown:30,speed:`balanced`},me=y().trim().min(1,`Detection label is required`),he=y().trim().min(1,`Zone label is required`),S=ee([s(),s()]),ge=y().trim().regex(/^#([0-9A-Fa-f]{3}){1,2}$/,`Must be a valid hex color (e.g. #FF0000 or #F00)`).default(`#df2a4c`),_e=v({name:y().trim().min(1,`Zone Name is required`),points:S.array().min(3,`At least 3 points are required`),color:ge}).array(),ve=v({name:y().trim().min(1,`Zone Name is required`),points:S.array().min(3,`At least 3 points are required`),type:a([p(`intersect`),p(`contain`)]).default(`intersect`),labels:he.array(),color:ge}).array(),ye=v({name:y().trim().min(1,`Zone Name is required`),points:S.array().min(3,`At least 3 points are required`),dropDetections:d().default(!0)}).array(),be=v({name:y().trim().min(1,`Zone Name is required`),points:S.array().min(3,`At least 3 points are required`),labels:me.array(),faces:y().trim().min(1).array().optional(),plates:y().trim().min(1).array().optional(),match:a([p(`anchor`),p(`intersect`),p(`contain`)]).default(`contain`),color:y().trim().regex(/^#([0-9A-Fa-f]{3}){1,2}$/,`Must be a valid hex color (e.g. #FF0000 or #F00)`).default(`#df2a4c`)}).array(),xe=v({name:y().trim().min(1,`Line Name is required`),points:ee([S,S]),direction:a([p(`both`),p(`a-to-b`),p(`b-to-a`)]),labels:me.array(),color:y().trim().regex(/^#([0-9A-Fa-f]{3}){1,2}$/,`Must be a valid hex color (e.g. #FF0000 or #F00)`).default(`#df2a4c`)}).array(),Se=v({privacyFallback:a([p(`send`),p(`drop`)]).default(`send`),motion:_e.default([]),object:ve.default([]),privacy:ye.default([]),alert:be.default([]),lines:xe.default([])}).strict(),Ce=v({motion:v({resolution:a([p(`low`),p(`medium`),p(`high`)]),timeout:s().min(10,`Minimum 10 seconds`)}),object:v({confidences:v({person:s().min(.3,`Minimum 0.3`).max(1,`Maximum 1`).default(.5),vehicle:s().min(.3,`Minimum 0.3`).max(1,`Maximum 1`).default(.5),animal:s().min(.3,`Minimum 0.3`).max(1,`Maximum 1`).default(.5)}).default({person:.5,vehicle:.5,animal:.5}),suppressStatic:d().default(!0),timeout:s().min(10,`Minimum 10 seconds`).default(15)}),audio:v({minDecibels:s().min(-100,`Minimum -100 dBFS`).max(0,`Maximum 0 dBFS`),timeout:s().min(10,`Minimum 10 seconds`),confidence:s().min(0,`Minimum 0`).max(1,`Maximum 1`).default(.7)}),face:v({confidence:s().min(0,`Minimum 0`).max(1,`Maximum 1`).default(.5),matchThreshold:s().min(.3,`Minimum 0.3`).max(.95,`Maximum 0.95`).default(.55)}).default({confidence:.5,matchThreshold:.55}),licensePlate:v({confidence:s().min(0,`Minimum 0`).max(1,`Maximum 1`).default(.3),ocrConfidence:s().min(0,`Minimum 0`).max(1,`Maximum 1`).default(.9),minLength:s().int().min(1,`Minimum 1`).max(10,`Maximum 10`).default(4)}).default({confidence:.3,ocrConfidence:.9,minLength:4}),sensor:v({timeout:s().min(10,`Minimum 10 seconds`),triggers:_(y().trim().min(1,`Sensor id is required`)).default([])}),cascadeDetection:d().default(!0),cascadeTimeout:s().min(1,`Minimum 1 second`).max(300,`Maximum 300 seconds`).default(10),snooze:d().default(!1)}),we=v({from:y().regex(/^\d{1,2}:\d{2}$/,`Use HH:mm`),to:y().regex(/^\d{1,2}:\d{2}$/,`Use HH:mm`),timezone:y().trim().min(1,`Timezone is required`)}),Te={enabled:!1,targetLabels:[`person`],minConfidence:.5,triggerDeadZone:.05,trackingSpeed:2,leadMs:1800,panRate:.85,returnToHome:!1,homeWaitMs:1e4,minTargetSize:0,maxTargetSize:0},Ee=v({enabled:d().default(!1),targetLabels:y().trim().min(1,`Target label is required`).array().default([`person`]),minConfidence:s().min(.3,`Minimum 0.3`).max(1,`Maximum 1`).default(.5),triggerDeadZone:s().min(0,`Minimum 0`).max(.3,`Maximum 0.3`).default(.05),trackingSpeed:s().min(1,`Minimum 1`).max(5,`Maximum 5`).default(2),leadMs:s().min(0,`Minimum 0`).max(4e3,`Maximum 4000 ms`).default(1800),panRate:s().min(.1,`Minimum 0.1`).max(3,`Maximum 3`).default(.85),returnToHome:d().default(!1),homeWaitMs:s().min(1e3,`Minimum 1000 ms`).max(6e4,`Maximum 60000 ms`).default(1e4),minTargetSize:s().min(0,`Minimum 0`).max(.5,`Maximum 0.5`).default(0),maxTargetSize:s().min(0,`Minimum 0`).max(1,`Maximum 1`).default(0),activeHours:we.optional()}),C=a([p(`high-resolution`),p(`mid-resolution`),p(`low-resolution`),p(`snapshot`)]),De=a([p(`high-resolution`),p(`mid-resolution`),p(`low-resolution`)]),Oe=a([p(`bubble://`),p(`cui://`),p(`doorbird://`),p(`dvrip://`),p(`eseecloud://`),p(`ffmpeg:`),p(`flussonic://`),p(`gopro://`),p(`hass:`),p(`homekit://`),p(`http://`),p(`https://`),p(`httpx://`),p(`isapi://`),p(`ivideon:`),p(`kasa://`),p(`nest:`),p(`onvif://`),p(`ring:`),p(`roborock://`),p(`rtmp://`),p(`rtsp://`),p(`rtspx://`),p(`tapo://`),p(`tcp://`),p(`tuya://`),p(`xiaomi://`),p(`yandex:`),p(`webrtc:`),p(`webtorrent:`),p(`wyze://`)]).options.map(e=>e.value),ke=RegExp(`^(${Oe.join(`|`)})`),Ae=y().refine(e=>{if(!ke.test(e))return!1;try{return new URL(e),!0}catch{return!1}},{message:`Invalid URL format or unsupported protocol`});function w(e,t){let n=new Set;e.forEach((e,r)=>{let i=e.name.replace(/ /g,`_`).toLowerCase();n.has(i)&&t.addIssue({code:`custom`,message:`Source name is already used by another source`,path:[r,`name`]}),n.add(i)})}var je=v({_id:y().default(n()).transform(()=>n()),name:y().trim().min(1,`Camera Source Name is required`).transform(e=>e.replace(/ /g,`_`).toLowerCase()),role:C,useForSnapshot:d().default(!1),hotMode:d().default(!0),preload:d().default(!0),muted:d().default(!1),backchannelDisabled:d().default(!1),timeout:s().int().min(5).max(120).optional(),handshakeTimeout:s().int().min(1).max(60).optional(),urls:Ae.array().min(1,`At least one valid URL is required`),childSourceId:y().trim().min(1,`Child Source ID is required`).nullish().transform(e=>e??void 0).optional()}).strict().transform(e=>e.role===`snapshot`?{...e,useForSnapshot:!1,hotMode:!1,preload:!1}:e),Me=v({_id:y().default(n()).transform(()=>n()),name:y().trim().min(1,`Camera Source Name is required`).transform(e=>e.replace(/ /g,`_`).toLowerCase()),role:C,useForSnapshot:d().default(!1),hotMode:d().default(!0),preload:d().default(!0),muted:d().default(!1),backchannelDisabled:d().default(!1),timeout:s().int().min(5).max(120).optional(),handshakeTimeout:s().int().min(1).max(60).optional(),urls:Ae.array().min(1,`At least one valid URL is required`),childSourceId:y().trim().min(1,`Child Source ID is required`).nullish().transform(e=>e??void 0).optional()}).strict().transform(e=>e.role===`snapshot`?{...e,useForSnapshot:!1,hotMode:!1,preload:!1}:e),T=v({id:y(),name:y().trim()}),Ne=v({motion:T.optional(),object:T.optional(),objectAssist:T.optional(),audio:T.optional(),face:T.optional(),licensePlate:T.optional(),ptz:T.optional(),battery:T.optional(),cameraController:T.optional(),clip:T.optional(),classifier:T.array().optional(),light:T.array().optional(),siren:T.array().optional(),switch:T.array().optional(),securitySystem:T.array().optional(),contact:T.array().optional(),doorbell:T.array().optional(),lock:T.array().optional(),temperature:T.array().optional(),humidity:T.array().optional(),occupancy:T.array().optional(),smoke:T.array().optional(),leak:T.array().optional(),garage:T.array().optional(),gas:T.array().optional(),carbonMonoxide:T.array().optional(),carbonDioxide:T.array().optional(),heat:T.array().optional(),cold:T.array().optional(),vibration:T.array().optional(),tamper:T.array().optional(),problem:T.array().optional(),power:T.array().optional(),illuminance:T.array().optional(),hub:T.array().optional()}).strict(),Pe=a([p(`auto`),p(`mse`),p(`webrtc`),p(`webrtc/tcp`)]),Fe=y().regex(/^\d+(?:\.\d+)?:\d+(?:\.\d+)?$/,`Use a width:height ratio, e.g. 16:9`).refine(e=>{let[t,n]=e.split(`:`).map(Number);return Number.isFinite(t)&&Number.isFinite(n)&&t>0&&n>0},`Both sides must be greater than 0`).transform(e=>e),Ie=v({hardware:u([`auto`,`cpu`,`cuda`,`vaapi`,`qsv`,`videotoolbox`,`d3d11va`,`d3d12va`,`dxva2`,`vulkan`,`opencl`,`drm`,`rkmpp`]).default(`auto`),device:y().trim().max(128).optional()}).strict(),Le=v({mainStreamAnalysis:d().default(!1),decoder:Ie.optional(),workerDecoder:Ie.nullable().transform(e=>e??void 0).optional()}),E=a([p(`camera`),p(`doorbell`)]),Re=a([p(`auto`),p(`high`),p(`mid`),p(`low`)]),ze=a([p(`always-on`),p(`activity`),p(`standby`)]),D=v({streamingMode:Pe,streamingSource:De,playbackSource:Re.default(`auto`),activityMode:ze.default(`always-on`),aspectRatio:Fe}),O=v({model:y().trim().optional(),manufacturer:y().trim().optional(),hardware:y().trim().optional(),serialNumber:y().trim().optional(),firmwareVersion:y().trim().optional(),supportUrl:y().trim().optional()}),Be=v({id:y(),name:y().trim()}).strict(),k=v({mode:u([`interval`,`onView`,`onDemand`]).default(`interval`),interval:s().min(10,`Minimum 10 seconds`).max(3600,`Maximum 1 hour`).default(60),maxAge:s().min(10,`Minimum 10 seconds`).max(3600,`Maximum 1 hour`).default(60)}).strict(),A=v({_id:y().default(n()).transform(()=>n()),nativeId:y().trim().optional(),pluginInfo:Be.optional(),disabled:d().default(!1),name:y().trim().min(1,`Camera name is required`),room:y().trim().min(1,`Room is required`).default(`Default`),roomId:y().trim().min(1).nullable().default(null),type:E.default(`camera`),isCloud:d().default(!1),snapshotSettings:k.default({mode:`interval`,interval:60,maxAge:60}),info:O.default({model:`IP Camera`,manufacturer:`camera.ui`,hardware:`Camera`,serialNumber:`Unknown`,firmwareVersion:`Unknown`,supportUrl:`Unknown`}),sources:je.array().refine(e=>e.some(e=>e.role===`high-resolution`||e.role===`mid-resolution`||e.role===`low-resolution`),{path:[`sources[].role`],message:`One of the roles "high-resolution", "mid-resolution" or "low-resolution" is required`}).refine(e=>e.filter(e=>e.useForSnapshot).length<=1,{message:`Only one source can be used for snapshot`,path:[`sources`]}).refine(e=>{let t=e.map(e=>e.role).filter(Boolean);return new Set(t).size===t.length},{message:`Each source role can be assigned to only one source`,path:[`sources`]}).superRefine(w),plugins:T.array().default([]),assignments:Ne.default({}),interfaceSettings:D.default({streamingMode:`auto`,streamingSource:`high-resolution`,playbackSource:`auto`,activityMode:`always-on`,aspectRatio:`16:9`}),zones:Se.default(le()),detectionSettings:Ce.default({motion:{resolution:`low`,timeout:30},object:{confidences:{person:.5,vehicle:.5,animal:.5},suppressStatic:!0,timeout:15},audio:{minDecibels:-40,timeout:30,confidence:.7},face:{confidence:.5,matchThreshold:.55},licensePlate:{confidence:.3,ocrConfidence:.9,minLength:4},sensor:{timeout:30,triggers:[]},cascadeDetection:!0,cascadeTimeout:10,snooze:!1}),ptzAutotrack:Ee.default(Te),recordingSettings:x.default(de),notificationSettings:fe.default(pe),frameWorkerSettings:Le.default({mainStreamAnalysis:!1})}).strict();function Ve(){let{_id:e,name:t,sources:n,nativeId:r,pluginInfo:i,...a}=A.parse({name:`default`,sources:[{name:`default`,role:`high-resolution`,urls:[`rtsp://localhost`]}]});return a}A.transform(e=>{let t=e.sources.flatMap(e=>e.urls);return e.isCloud||ue(t)?{...e,isCloud:!0}:{...e}});var He=v({disabled:d().optional(),type:E.optional(),name:y().trim().min(1,`Camera name is required`).optional(),room:y().trim().min(1,`Room is required`).optional(),roomId:y().trim().min(1).nullable().optional(),isCloud:d().optional(),snapshotSettings:k.partial().optional(),info:O.partial().optional(),sources:Me.array().refine(e=>e.some(e=>e.role===`high-resolution`||e.role===`mid-resolution`||e.role===`low-resolution`),{path:[`sources[].role`],message:`One of the roles "high-resolution", "mid-resolution" or "low-resolution" is required`}).refine(e=>e.filter(e=>e.useForSnapshot).length<=1,{message:`Only one source can be used for snapshot`,path:[`sources`]}).refine(e=>{let t=e.map(e=>e.role).filter(Boolean);return new Set(t).size===t.length},{message:`Each source role can be assigned to only one source`,path:[`sources`]}).superRefine(w).optional(),plugins:T.array().optional(),assignments:Ne.partial().optional(),interfaceSettings:D.partial().optional(),zones:Se.optional(),detectionSettings:Ce.partial().optional(),ptzAutotrack:Ee.partial().optional(),recordingSettings:x.partial().optional(),notificationSettings:fe.partial().optional(),frameWorkerSettings:Le.partial().optional()}).strict().transform(e=>{if(e.sources){let t=e.sources.flatMap(e=>e.urls);if(e.isCloud===!0||ue(t))return{...e,isCloud:!0}}return e});v({url:y().trim().refine(e=>!/^\s*(exec|echo|expr):/i.test(e),`Command-execution stream sources are not allowed`)}).strict(),v({cameraname:y()}),v({cameraname:y(),sourcename:y()}),v({cameraid:y(),sourcename:y()}),v({cameraname:y(),pluginname:y()}),v({cameraname:y(),scope:y(),pluginname:y()}),v({cameraname:y(),pluginname:y(),sensorId:y()}),v({cameraname:y(),scope:y(),pluginname:y(),sensorId:y()}),v({type:y().optional()}),v({video:c().optional(),audio:c().optional(),microphone:c().optional(),refresh:c().optional()}),v({forceNew:c().optional()}),v({cameranames:_(y().min(1)).min(1).max(1e3),cameraData:v({disabled:d().optional(),detectionSettings:v({snooze:d()}).optional(),recordingSettings:v({enabled:d()}).optional()}).refine(e=>e.disabled!==void 0||e.detectionSettings!==void 0||e.recordingSettings!==void 0,{message:`Nothing to update`})}),v({cameranames:_(y().min(1)).min(1).max(1e3)});var j=`ar.bg.bn.ca.cs.da.de.el.en.es.et.fa.fi.fr.he.hi.hr.hu.id.it.ja.ko.lt.lv.ms.nb.nl.pl.pt.ro.ru.sk.sl.sr.sv.th.tr.uk.ur.vi.zh`.split(`.`),M=[`de`,`en`],Ue=[`image/jpeg`,`image/jpg`,`image/png`],N=5242880,P=v({index:s(),cameraId:y(),colSpan:s().optional(),rowSpan:s().optional(),x:s().optional(),y:s().optional()}),F=a([p(1),p(4),p(6),p(7),p(9),p(10),p(12),p(13),p(15),p(16),p(20),p(26)]),We=a([p(`dnd`),p(`view`)]),I=u([`aspect`,`contain`,`fill`,`cover`]),L=v({_id:y().default(n()).transform(()=>n()),name:y().trim().min(1,`Layout name is required`),viewSize:F,cameras:P.array(),type:We,cardFit:I.optional()});v({name:y().trim().min(1,`Layout name is required`),viewSize:F,cameras:P.array(),cardFit:I}).partial().optional();var Ge=v({views:L.array()}),Ke=r.filter(e=>e.shortcutable).map(e=>String(e.type)),R=u(Ke),qe=v({_id:y().default(n()).transform(()=>n()),type:p(`camera`),cameraId:y(),points:S}),Je=v({_id:y().default(n()).transform(()=>n()),type:p(`sensor`),sensorId:y(),sensorType:R,points:S}),Ye=re(`type`,[qe,Je]),Xe=v({type:p(`camera`),cameraId:y(),points:S}).partial(),Ze=v({type:p(`sensor`),sensorId:y(),sensorType:R,points:S}).partial();a([Xe,Ze]).optional();var Qe=v({shortcuts:Ye.array(),hiddenEventTypes:y().array().optional()});l(y().trim().min(1),y().trim().min(1).max(64).array().max(64));var $e=u([`auto`,...M]),et=v({ungrouped:d()}),tt=v({main:y().array(),manage:y().array(),system:y().array(),settings:y().array()}).partial(),nt=v({main:d(),manage:d(),system:d(),settings:d()}).partial(),rt=v({order:tt.optional(),collapsible:nt.optional(),settingsInNav:d().optional(),hidden:y().array().optional()}),it=v({language:$e.optional(),camview:Ge,cameras:l(y().trim(),Qe),recordings:et.optional(),navLayout:rt.nullable().optional()}),z=y().trim().min(10,`Password must be at least 10 characters long`).regex(/[A-Z]/,`Password must contain at least one uppercase letter`).regex(/[!@#$%^&*()_+\-=[\]{};':"\\|,.<>/?]/,`Password must contain at least one special character (!@#$%^&*()_+-=[]{};:'"\\|,.<>/?)`).max(32,`Password cannot be more than 32 characters`),at=v({_id:y().default(n()).transform(()=>n()),username:y().trim().min(1,`Username is required`),password:z,passwordConfirm:y().trim().min(1,`Please confirm your password`),role:a([p(`admin`),p(`user`)]),firstLogin:d().default(!0),preferences:it.default({language:`auto`,camview:{views:[]},cameras:{}})}).strict().refine(e=>e.password===e.passwordConfirm,{path:[`passwordConfirm`],message:`Passwords do not match`});v({username:y().trim().min(1,`Username is required`),password:y().trim().min(1,`Password is required`),kind:u([`native`,`web`,`tv`]),persistent:d().default(!1),device:v({id:y().min(1,`Device id is required`).max(128,`Device id cannot be more than 128 characters`),name:y().trim().min(1,`Device name is required`).max(100,`Device name cannot be more than 100 characters`)})}).strict();var ot=v({username:y().trim().min(1,`Username is required`).optional(),password:z.optional(),passwordConfirm:y().trim().optional(),role:a([p(`admin`),p(`user`)]).optional(),upload:ae(b(N,Ue,`Max file size is 5MB.`,`.jpg, .jpeg, .png files are accepted.`)),firstLogin:d().optional(),preferences:it.partial().optional()}).strict().refine(e=>e.password===e.passwordConfirm,{path:[`passwordConfirm`],message:`Passwords do not match`});v({username:y()}),v({username:y(),cameraname:y()}),v({username:y(),cameraname:y(),shortcutid:y()}),v({username:y(),viewid:y()}),v({username:y()});var st=u([`openai-compatible`,`ollama`,`openai`,`anthropic`,`gemini`,`openrouter`]),ct=v({id:y().trim().min(1).max(64).optional(),name:y().trim().max(40,`Name cannot be more than 40 characters`).optional(),provider:st,baseURL:y().trim().max(500,`Base URL cannot be more than 500 characters`).nullable().optional(),apiKey:y().max(1e3,`API key cannot be more than 1000 characters`).nullable().optional(),copyKeyFrom:y().trim().min(1).max(64).optional(),model:y().trim().max(200,`Model cannot be more than 200 characters`),sendImages:d().optional(),userAccess:d().optional(),retest:d().optional()}).strict();v({enabled:d().optional(),models:_(ct).max(20,`At most 20 models`).optional(),defaultModelId:y().trim().min(1).max(64).nullable().optional(),plugins:_(v({pluginId:y().trim().min(1).max(200),modelId:y().trim().min(1).max(64)}).strict()).max(50).optional(),language:u(j).nullable().optional(),maxIterations:s().int().min(1).max(30).optional(),maxToolCalls:s().int().min(1).max(100).optional(),contextTokens:s().int().min(8e3).max(4e5).optional(),historyThreads:s().int().min(5).max(500).optional(),historyImages:s().int().min(0).max(200).optional(),terminalEnabled:d().optional(),reasoning:u([`default`,`off`,`low`,`high`]).optional(),systemPromptExtra:y().max(4e3,`Additional instructions cannot be more than 4000 characters`).optional(),mcpEnabled:d().optional(),mcpWrites:d().optional(),mcpServers:_(v({id:y().trim().min(1).max(64).optional(),name:y().trim().min(1,`Name is required`).max(40,`Name cannot be more than 40 characters`),url:o(`Enter a valid URL`).max(500),token:y().max(4e3).nullable().optional(),enabled:d().default(!0),insecure:d().default(!1),toolApproval:l(y().max(200),d()).optional()}).strict()).max(10,`At most 10 external servers`).optional(),memoryEnabled:d().optional()}).strict(),v({runId:g().min(1).max(128).optional(),offset:g().max(300).optional(),threadId:g().min(1).max(128).optional()}),v({runId:y().min(1).max(128)}),v({text:y().trim().min(1).max(500),language:y().max(10).optional(),timezone:y().max(64).optional()}),v({factId:y().min(1).max(128)}),v({threadId:y().min(1).max(128)}),v({title:y().trim().min(1).max(60)}),v({messages:_(ie()).max(200)}).strict(),v({until:s().int().min(0).max(1e4)}).strict(),v({name:y().trim().min(1,`Name is required`).max(40,`Name cannot be more than 40 characters`),modelId:y().trim().max(64).default(``),disabledGroups:_(y().max(100)).max(50).default([]),instructions:y().max(2e3,`Instructions cannot be more than 2000 characters`).default(``)}).strict().partial().strict(),v({profileId:y().min(1).max(128)}),v({user:y().trim().min(1).max(100).optional()});var lt=u([`push`,`thread`,`both`]);v({title:y().trim().min(1,`Title is required`).max(80,`Title cannot be more than 80 characters`),prompt:y().trim().min(1,`Prompt is required`).max(2e3,`Prompt cannot be more than 2000 characters`),cron:y().trim().min(9,`Cron expression is required`).max(100),profileId:y().trim().max(64).nullable().optional(),timezone:y().trim().max(64).optional(),language:y().trim().min(2).max(10).optional(),deliver:lt.default(`push`),enabled:d().default(!0)}).strict().partial().strict(),v({scheduleId:y().min(1).max(128)});var ut=[`account`,`appearance`,`assistant`,`backup`,`mqtt`,`notifications`,`permissions`,`recordings`,`remote`,`system`,`users`],B={home:{path:`/home`,description:`Start page with the camera overview`},cameras:{path:`/cameras`,description:`Camera list, add and manage cameras`},sensors:{path:`/sensors`,description:`Sensors and accessories`},camview:{path:`/camview`,description:`Several cameras at once`},recordings:{path:`/recordings`,description:`Recordings, events and episodes`},floorplan:{path:`/floorplan`,description:`Floor plan with cameras and sensors`},faces:{path:`/faces`,description:`Known faces`},training:{path:`/training`,description:`Model training contributions`},plugins:{path:`/plugins`,description:`Installed plugins and the plugin store`},automations:{path:`/automations`,description:`Automations editor`},metrics:{path:`/metrics`,description:`System metrics`},updates:{path:`/updates`,description:`Updates for server, plugins and apps`},logs:{path:`/logs`,description:`Server log`},workers:{path:`/workers`,description:`Remote analysis workers`},instances:{path:`/instances`,description:`Other camera.ui servers`},assistant:{path:`/assistant`,description:`This assistant`}},dt=[{name:`open_page`,description:`Open a page of the app for the user. Only when the user asks to open, show or go to it.`,inputSchema:{type:`object`,properties:{page:{type:`string`,enum:Object.keys(B),description:Object.entries(B).map(([e,t])=>`${e}: ${t.description}`).join(`; `)}},required:[`page`]}},{name:`ui_actions`,description:`List what the page the user is looking at can do right now (for example jump the timeline of the open camera). Call it first when the user asks to do something on the current page, then call ui_action.`,inputSchema:{type:`object`,properties:{}}},{name:`ui_action`,description:`Run one of the actions ui_actions listed, with the arguments it describes.`,inputSchema:{type:`object`,properties:{name:{type:`string`,description:`Action name from ui_actions`},args:{type:`object`,description:`Arguments as described by ui_actions`}},required:[`name`]}},{name:`open_camera`,description:`Open the live view of a camera in the app for the user. Use the camera name from the camera list.`,inputSchema:{type:`object`,properties:{camera:{type:`string`,description:`Camera name`}},required:[`camera`]}},{name:`open_recording`,description:`Open the recording of a camera at a point in time in the app, for example the moment of an event. Time as ISO 8601 with offset.`,inputSchema:{type:`object`,properties:{camera:{type:`string`,description:`Camera name`},time:{type:`string`,description:`ISO 8601 timestamp`}},required:[`camera`,`time`]}},{name:`open_camview`,description:`Open the Camview page that shows several cameras at once.`,inputSchema:{type:`object`,properties:{}}},{name:`open_settings`,description:`Open a settings page in the app. Only when the user explicitly asks to open or go to it, not for questions about how a setting works.`,inputSchema:{type:`object`,properties:{page:{type:`string`,enum:[...ut],description:`Settings page`}},required:[`page`]}}],ft=i({id:`ask-user`,payloadSchema:v({toolCallId:y(),question:y(),kind:u([`choice`,`camera`,`time_range`,`text`]),options:_(y()).optional()}),responseSchema:v({answer:y()})});v({tempToken:y().trim().min(1,`Temporary token is required`),code:y().trim().min(1,`Code is required`)}).strict(),v({code:y().trim().length(6,`Code must be 6 digits`)}).strict(),v({code:y().trim().min(1,`Code is required`)}).strict(),v({code:y().trim().min(1,`Code is required`)}).strict(),v({grant_type:y().optional(),username:y().trim().min(1,`Username is required`),password:y().min(1,`Password is required`),scope:y().optional(),client_id:y().optional(),client_secret:y().optional()}),v({refresh_token:y().min(1,`Refresh token is required`)}),v({id:y()}),v({name:y().trim().min(1,`Name is required`).max(64,`Name is too long`)}).strict(),v({id:y()});var pt=v({id:y().trim().min(1),name:y().trim().min(1,`Level name is required`).max(64),order:s().int().min(0).default(0)}),mt=v({id:y().trim().min(1),roomId:y().trim().min(1),name:y().trim().min(1,`Room name is required`).max(64),levelId:y().trim().min(1),outdoor:d().default(!1),publicSpace:d().default(!1),note:y().trim().max(240).default(``),x:s(),y:s(),width:s().min(1),height:s().min(1)}),ht=v({id:y().trim().min(1),fromRoomId:y().trim().min(1),toRoomId:y().trim().min(1),fromShapeId:y().trim().min(1).nullable().default(null),toShapeId:y().trim().min(1).nullable().default(null),offset:s().nullable().default(null),width:s().min(10).max(2e3).default(90),note:y().trim().max(240).default(``),type:u([`door`,`opening`,`stairs`]).default(`door`)}),gt=v({cameraId:y().trim().min(1),roomId:y().trim().min(1),note:y().trim().max(240).default(``),x:s(),y:s(),rotation:s(),fov:s().min(1).max(360),range:s().min(1)}),_t=v({sensorId:y().trim().min(1),sensorType:y().trim().min(1),roomId:y().trim().min(1),connectionId:y().trim().min(1).nullable().default(null),note:y().trim().max(240).default(``),x:s(),y:s()});v({catalogVersion:s().int().min(0),north:s().nullable().default(null),levels:pt.array().max(20),rooms:mt.array().max(200),connections:ht.array().max(500),cameras:gt.array().max(500),sensors:_t.array().max(500)}).strict(),v({name:y().trim().min(1,`Name is required`).max(100,`Name cannot be more than 100 characters`),url:o(`Must be a valid URL`).trim(),credentials:v({username:y().trim().min(1,`Username is required`),password:y().min(1,`Password is required`)})}),v({name:y().trim().min(1,`Name is required`).max(100,`Name cannot be more than 100 characters`).optional(),url:o(`Must be a valid URL`).trim().optional(),credentials:v({username:y().trim().min(1,`Username is required`),password:y().min(1,`Password is required`)}).nullable().optional()}),v({id:y().min(1,`ID is required`)}),v({code:y().trim().min(1,`Code is required`).optional()}).optional(),v({ids:_(y().min(1)).min(1).max(1e3)});var vt=/^[\w-]+(\/[\w-]+)*$/,yt=v({enabled:d().optional(),mode:u([`external`,`embedded`]).optional(),broker:v({port:s().int().min(1).max(65535).optional(),username:y().trim().max(200,`Username cannot be more than 200 characters`).nullable().optional(),password:y().max(500,`Password cannot be more than 500 characters`).nullable().optional()}).strict().optional(),host:y().trim().min(1,`Host is required`).max(253,`Host cannot be more than 253 characters`).nullable().optional(),port:s().int().min(1).max(65535).optional(),protocol:u([`mqtt`,`mqtts`]).optional(),username:y().trim().max(200,`Username cannot be more than 200 characters`).nullable().optional(),password:y().max(500,`Password cannot be more than 500 characters`).nullable().optional(),clientId:y().trim().min(1,`Client ID is required`).max(128,`Client ID cannot be more than 128 characters`).optional(),topicPrefix:y().trim().min(1,`Topic prefix is required`).max(128,`Topic prefix cannot be more than 128 characters`).regex(vt,`Topic prefix may only contain letters, numbers, "_", "-" and "/" separators`).optional(),tls:v({rejectUnauthorized:d().optional(),ca:y().trim().nullable().optional(),cert:y().trim().nullable().optional(),key:y().trim().nullable().optional()}).strict().optional(),haDiscovery:v({enabled:d().optional(),prefix:y().trim().min(1,`Discovery prefix is required`).max(128,`Discovery prefix cannot be more than 128 characters`).regex(vt,`Discovery prefix may only contain letters, numbers, "_", "-" and "/" separators`).optional()}).strict().optional()}).strict(),bt=/^((@[\w-.]*)\/)?(camera-ui-[\w-]*)$/,xt=function(e){return e.READY=`ready`,e.STARTING=`starting`,e.STARTED=`started`,e.STOPPING=`stopping`,e.STOPPED=`stopped`,e.ERROR=`error`,e.UNKNOWN=`unknown`,e.DISABLED=`disabled`,e.INCOMPATIBLE=`incompatible`,e.UPDATE_REQUIRED=`update_required`,e.SERVER_UPDATE_REQUIRED=`server_update_required`,e}({}),St=v({start:h().optional(),page:h().optional(),pageSize:h().optional()}),Ct=[`image/jpeg`,`image/png`],wt=2097152,Tt=[`video/mp4`,`video/quicktime`],Et=10485760,Dt=[`audio/mpeg`,`audio/wav`,`audio/ogg`],Ot=2097152,V=()=>b(wt,Ct,`Max file size is 2 MB`,`.jpeg and .png files are accepted`),H=f().transform(e=>JSON.parse(e.value)),U=f().transform(e=>JSON.parse(e.value)),kt=f().transform(e=>JSON.parse(e.value)),At=v({pluginname:y().trim().refine(e=>bt.test(e),`Not a valid plugin name`),pluginversion:y().trim().refine(e=>/^[a-z][\w-]*$/i.test(e)||/^v?\d+\.\d+\.\d+(?:[-+][\w.-]+)?$/i.test(e),`Not a valid plugin version (expected a dist-tag or exact semver)`).optional().default(`latest`)}).strict();v({actionId:y(),payload:m()}).strict(),l(m(),m()),v({upload:V(),metadata:U,config:H}),v({upload:b(Ot,Dt,`Max file size is 2 MB`,`.mp3, .wav and .ogg files are accepted`),metadata:kt,config:H}),v({upload:b(Et,Tt,`Max file size is 5 MB`,`.mp4 files are accepted`),config:H}),v({upload:V(),metadata:U,config:H}),v({upload:V(),metadata:U,config:H}),v({upload:V(),metadata:U,config:H}),v({pluginname:y()}),v({scope:y(),pluginname:y()}),St.extend({pluginname:y().trim().optional(),refresh:c().optional()}),v({removeStorage:c().optional()}),v({pluginversion:y().trim().optional()}),v({pluginNames:_(y().trim().min(1)).min(1).max(1e3)}),v({plugins:_(At).min(1).max(1e3)});var jt=v({enabled:d().optional(),directEnabled:d().optional(),directMode:u([`cloudflare`,`customDomain`]).optional(),customDomain:v({url:o(`Must be a valid URL`).trim().nullable()}).strict().optional(),cloudflare:v({mode:u([`quick`,`token`,`managed`]).optional(),hostname:y().trim().min(1,`Hostname is required`).max(253,`Hostname cannot be more than 253 characters`).nullable().optional(),token:y().trim().min(1,`Token is required`).nullable().optional()}).strict().optional()}).strict().refine(e=>!(e.directMode===`customDomain`&&!e.customDomain?.url),{message:`Custom domain URL is required when directMode is "customDomain"`,path:[`customDomain`,`url`]}).refine(e=>!(e.cloudflare?.mode&&e.cloudflare.mode!==`quick`&&!e.cloudflare?.hostname),{message:`Hostname is required when cloudflare.mode is "token" or "managed"`,path:[`cloudflare`,`hostname`]});v({mode:u([`cloudflare`,`customDomain`])}).strict(),v({hostname:y().trim().min(1,`Hostname is required`).max(253,`Hostname cannot be more than 253 characters`).regex(/^[a-z0-9.-]+\.[a-z]{2,}$/i,`Invalid hostname`)}).strict(),v({name:y().trim().min(1,`Name is required`).max(100,`Name cannot be more than 100 characters`).optional()}).strict(),v({name:y().trim().min(1,`Name is required`).max(100,`Name cannot be more than 100 characters`).optional()}).strict(),v({name:y().trim().min(1,`Server name is required`).max(100,`Server name cannot be more than 100 characters`)}).strict(),v({name:y().trim().min(1,`Room name is required`).max(64),levelId:y().trim().min(1).nullable().default(null),outdoor:d().default(!1),publicSpace:d().default(!1),note:y().trim().max(240).default(``)}).strict(),v({roomid:y().trim().min(1)});var Mt={securitySystem:`security_system`};function Nt(e){return Mt[e]??e}function Pt(){let e={};for(let t of r)e[t.type]={category:t.category,assignmentKey:t.assignmentKey,multiProvider:t.multiProvider,isDetectionType:t.isDetectionType,cameraBound:t.cameraBound??!1,...t.cascadeTrigger?{cascadeTrigger:{...t.cascadeTrigger,triggerType:Nt(t.assignmentKey)}}:{}};return e}var W=Pt();Object.fromEntries(r.filter(e=>e.propertyCapabilities).map(e=>[e.type,e.propertyCapabilities]));function Ft(){return Object.entries(W).filter(([,e])=>e.multiProvider).map(([e])=>e)}function It(){return r.filter(e=>e.shortcutable).map(e=>e.type)}function Lt(){return Object.entries(W).filter(([,e])=>e.isDetectionType).map(([e])=>e)}function Rt(e){return W[e].assignmentKey}function zt(){return Object.entries(W).filter(([,t])=>t.category===e.Sensor&&!t.multiProvider).map(([e])=>e)}function Bt(){return Object.entries(W).filter(([,t])=>!t.multiProvider&&t.category!==e.Sensor).map(([e])=>e)}function Vt(){return Object.entries(W).filter(([,e])=>e.multiProvider).map(([e])=>e)}function Ht(e){return!W[e].multiProvider}Object.fromEntries(r.map(e=>[e.type,Object.keys(e.properties)]));var G=Object.fromEntries(r.map(e=>[e.type,e.properties]));function Ut(e,t){return G[e]?.[t]}function Wt(e){let t=G[e];return t?Object.entries(t).filter(([,e])=>!e.internal).map(([e])=>e):[]}function Gt(e){let t=G[e];return t?Object.entries(t).filter(([,e])=>e.writable).map(([e])=>e):[]}function Kt(t,n){let r=W[t];return r?r.category===e.Control||r.category===e.Trigger||n===`cameraui.virtual`&&!r.isDetectionType:!1}new Set(Ft());var qt=new Set(Lt()),Jt=`cameraui.virtual`,Yt=r.filter(e=>e.virtual).map(e=>e.type);Object.fromEntries(r.filter(e=>e.virtual).map(e=>[e.type,e.virtual?.properties??{}])),Object.fromEntries(r.filter(e=>e.virtual?.capabilities).map(e=>[e.type,e.virtual?.capabilities])),v({id:y().min(1,`Sensor ID is required`)});var Xt=v({cameraId:y().min(1).optional(),type:u(Yt),name:y().trim().min(1,`Name is required`).max(100,`Name cannot be more than 100 characters`)});v({displayName:y().trim().min(1,`Display name is required`).max(100,`Display name cannot be more than 100 characters`).optional(),assignedCameraIds:_(y().min(1)).optional(),exposed:d().optional()}).refine(e=>e.displayName!==void 0||e.assignedCameraIds!==void 0||e.exposed!==void 0,{message:`Nothing to update`}),v({property:y().trim().min(1,`Property is required`),value:ie()}),v({ids:_(y()).min(1).max(1e4)}),v({version:y().trim().optional().default(`latest`)}).strict();var Zt=v({serverAddresses:a([ne().trim(),te().trim()]).array().default([]),localUrl:a([p(``),o({protocol:/^https?$/})]).default(``).transform(e=>e.replace(/\/+$/,``))}).strict();v({version:y().trim()}).strict(),l(y(),m()),v({key:y()}).strict(),v({key:y(),payload:m()}).strict();var Qt=v({label:y().trim().min(1).max(64),confidence:s().min(0).max(1),x:s().min(0).max(1),y:s().min(0).max(1),width:s().min(0).max(1),height:s().min(0).max(1),text:y().trim().max(16).optional()}).strict();v({id:y().trim().min(1)}),v({id:y().trim().min(1)}),v({cursor:y().trim().min(1).optional()}),v({cameraId:y().trim().min(1).optional(),status:u([`new`,`verified`]).optional()}),v({boxes:Qt.array().max(128).optional(),status:u([`new`,`verified`]).optional()}).strict(),v({ids:y().trim().min(1).array().min(1).max(200)}).strict(),v({enabled:d().optional(),perCameraLimit:s().min(1).max(5e3).optional(),minIntervalSeconds:s().min(0).max(3600).optional(),retentionDays:s().min(1).max(365).optional()}).strict(),v({cameraId:y().min(1,`Camera ID is required`),agentId:y().min(1,`Agent ID is required`)}),v({cameraId:y().min(1,`Camera ID is required`)}),v({agentId:y().min(1,`Agent ID is required`)}),v({version:y().min(1).optional()}).optional(),v({code:y().min(1,`Pairing code is required`),agentId:y().min(1,`Agent ID is required`),name:y().min(1,`Worker name is required`)}),v({pluginName:y().min(1,`Plugin name is required`),agentId:y().min(1,`Agent ID is required`)}),v({pluginName:y().min(1,`Plugin name is required`)}),v({name:y().trim().min(1,`Name is required`).max(64,`Maximum 64 characters`)}),v({enabled:d().optional(),address:y().trim().optional(),port:s().min(1024,`Minimum 1024`).max(65535,`Maximum 65535`).optional()}).strict();function $t(e){return e.type===`string`&&!(`enum`in e)}function en(e){return e.type===`number`}function tn(e){return e.type===`boolean`}function K(e){return e.type===`string`&&`enum`in e}function nn(e){return e.type===`array`}function rn(e){return e.type===`object`}function q(e){return e.type===`button`}function J(e){return e.type===`submit`}function an(e){return $t(e)&&(!e.format||e.format!==`qrCode`&&e.format!==`image`)}var Y=(e,t)=>{let n=Q(t,e.key),r=e.value;switch(e.operator??`eq`){case`eq`:return n===r;case`neq`:return n==null||n===``?!1:n!==r;case`gt`:return typeof n==`number`&&typeof r==`number`&&n>r;case`lt`:return typeof n==`number`&&typeof r==`number`&&n<r;case`in`:return(Array.isArray(r)?r:[r]).includes(n);case`nin`:return n==null||n===``?!1:!(Array.isArray(r)?r:[r]).includes(n);default:return!0}};function X(e,t){return Array.isArray(e)?e.every(e=>Y(e,t)):Y(e,t)}function on(e,n){if(!e||Object.keys(e).length===0)return!0;let r=n.filter(e=>!q(e)&&!J(e));for(let n of r){let r=Q(e,n.key),i=Z(n);if(r!==void 0&&!t(r,i,!0))return!1}return!0}function Z(e){if(`defaultValue`in e&&e.defaultValue!==void 0)return e.defaultValue;switch(e.type){case`string`:return K(e)?e.multiple?[]:e.required?e.enum[0]:``:``;case`number`:return 0;case`boolean`:return!1;case`array`:return[];case`object`:{let t={};for(let n of e.properties??[])q(n)||J(n)||(t[n.key]=Z(n));return t}default:return}}function sn(e){let t={};for(let n of e)q(n)||J(n)||(t[n.key]=Z(n));return t}function cn(e){return e.split(`.`).reduce((e,t)=>{if(t.includes(`[`)){let[n,r]=t.split(`[`);e.push(n,r.slice(0,-1))}else e.push(t);return e},[])}function ln(e){return!isNaN(Number(e))}function Q(e={},t){if(!t.includes(`.`)&&!t.includes(`[`))return e[t];let n=e;for(let e of cn(t)){if(n==null)return;n=n[e]}return n}function un(e,t,n){if(!t.includes(`.`)&&!t.includes(`[`)){e[t]=n;return}let r=cn(t),i=r.pop();if(!i)return;let a=e;for(let e=0;e<r.length;e++){let t=r[e];(typeof a[t]!=`object`||a[t]===null)&&(a[t]=ln(r[e+1]??i)?[]:{}),a=a[t]}a[i]=n}function dn(e,t){let n={};for(let r of e)if(`store`in r&&r.store&&!q(r)&&!J(r)){let e=Q(t,r.key);e!==void 0&&(n[r.key]=e)}return n}function fn(e,t){return t?e.filter(e=>`group`in e&&e.group===t):e}function pn(e,t){let n=fn(e,t);return n.length>0&&n.every(e=>`readonly`in e&&e.readonly)}function mn(e,t){let n=fn(e,t);return n.length>0&&n.some(e=>`store`in e&&e.store)}function hn(e,t){if(!t)return!0;let n={"date-time":e=>/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(.\d+)?(Z|[+-]\d{2}:\d{2})?$/.test(e),date:e=>/^\d{4}-\d{2}-\d{2}$/.test(e),time:e=>/^([01]?[0-9]|2[0-3]):([0-5][0-9])(:([0-5][0-9]))?$/.test(e),email:e=>/^\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,7}\b$/.test(e),uuid:e=>/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$/.test(e),ipv4:e=>/^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$/.test(e),ipv6:e=>/^\s*([0-9a-fA-F]{1,4}:){7}([0-9a-fA-F]{1,4})\s*$/.test(e)};return t in n?n[t](e):!0}function $(e){if(q(e)||J(e))return m();switch(e.type){case`string`:if(K(e)){if(e.multiple){let t=_(y().trim().refine(t=>e.enum.includes(t),{error:`Invalid selection`}));return e.minItems===void 0?e.required&&(t=t.min(1,{error:`Required`})):t=t.min(e.minItems,{error:`Select at least ${e.minItems}`}),e.required?t:t.optional()}{let t=u(e.enum);return e.required?t:a([p(``),t]).optional()}}let t=y().trim();return e.required&&(t=t.nonempty(`Required`)),e.minLength!==void 0&&(t=t.min(e.minLength)),e.maxLength!==void 0&&(t=t.max(e.maxLength)),e.format&&(t=t.refine(t=>!t||t.trim()===``||hn(t,e.format),{message:`Invalid ${e.format} format`})),e.required?t:t.optional();case`number`:let n=s();return e.minimum!==void 0&&(n=n.min(e.minimum)),e.maximum!==void 0&&(n=n.max(e.maximum)),e.required&&(n=n.refine(e=>e!=null,{error:`Required`})),e.required?n:n.optional();case`boolean`:return e.required?d():d().optional();case`array`:{let t=e.items?$(e.items):m(),n=_(t);return e.minItems!==void 0&&(n=n.min(e.minItems,{error:`At least ${e.minItems} entries required`})),e.required?n:n.optional()}case`object`:{let t={};for(let n of e.properties??[])q(n)||J(n)||(t[n.key]=$(n));let n=v(t);return e.required?n:n.optional()}default:return e.required?m():m().optional()}}var gn=(e,t,n)=>t.filter(e=>`group`in e&&e.group===n).some(t=>{let n=e[t.key];return n!=null&&n!==``});function _n(e){let t={},n=new Set;e.forEach(e=>{`group`in e&&e.group&&n.add(e.group)}),e.forEach(e=>{if(!q(e)&&!J(e)){let n=`group`in e&&e.group,r=`condition`in e&&e.condition;(n||r)&&e.required?t[e.key]=$({...e,required:!1}):t[e.key]=$(e)}});let r=v(t),i=e.filter(e=>`condition`in e&&e.condition&&`required`in e&&e.required&&!q(e)&&!J(e));return(n.size>0||i.length>0)&&(r=r.superRefine((t,r)=>{for(let i of n)if(gn(t,e,i)){let n=e.filter(e=>`group`in e&&e.group===i);for(let e of n)if(`required`in e&&e.required){if(`condition`in e&&e.condition&&!X(e.condition,t))continue;let n=t[e.key];(n==null||n===``)&&r.addIssue({code:`custom`,message:`Required`,path:[e.key]})}}for(let e of i)if(!(`group`in e&&e.group)&&`condition`in e&&e.condition&&X(e.condition,t)){let n=t[e.key];(n==null||n===``)&&r.addIssue({code:`custom`,message:`Required`,path:[e.key]})}})),r}export{L as $,Wt as A,Ot as B,W as C,Rt as D,Vt as E,Kt as F,dt as G,xt as H,jt as I,N as J,B as K,Dt as L,It as M,Gt as N,Bt as O,Ht as P,ot as Q,Tt as R,qt as S,Yt as T,yt as U,Et as V,ft as W,at as X,M as Y,z as Z,pn as _,_n as a,ve as at,Zt as b,tn as c,K as d,Oe as et,en as f,an as g,J as h,dn as i,C as it,Ut as j,zt as k,q as l,$t as m,sn as n,Ve as nt,Q as o,He as ot,rn as p,j as q,Z as r,xe as rt,nn as s,w as st,X as t,A as tt,on as u,mn as v,Jt as w,Xt as x,un as y,Ct as z};
@@ -1 +0,0 @@
1
- import{$n as e,Gt as t,Kn as n,Mn as r,Mt as i,Pn as a,Ut as o,Vr as s,a as c,g as l,hi as u,i as d,l as f,m as p,ni as m,o as h,p as g,s as ee,u as te,z as _}from"./vendor-cameraui-QXD8jkcj.js";import{$ as ne,J as re,Mn as v,On as ie,Q as ae,Sn as oe,X as se,Y as ce,Z as le,bn as ue,ct as de,gn as fe,hn as pe,it as me,jn as he,kr as ge,q as _e,rt as ve,s as ye,wn as be,xn as xe}from"./api-DK2Bav9D.js";import{$n as Se,Bn as Ce,Cn as we,Cr as y,Dn as b,Hn as Te,In as x,Jn as S,On as Ee,Pn as De,Rn as C,Tn as Oe,Xn as ke,Zn as Ae,br as w,cn as T,dn as E,dr as D,en as je,er as Me,gn as O,ln as k,nn as Ne,or as A,rn as j,sn as M,sr as Pe,un as N,vn as P,yr as F,zn as I}from"./vendor-DGke_6M4.js";import{a as Fe}from"./intercomService-BnA-FQ0Q.js";import{i as Ie}from"./alert-outline-D7zaSJH_.js";import{t as Le}from"./eventIcons-cdzqQc0W.js";import{u as Re}from"./vendor-core-CnhnyKDl.js";import{M as ze,P as L}from"./vendor-primevue-CCUqY55W.js";var R={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Be(e,t){return x(),E(`svg`,R,[...t[0]||=[T(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,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`},null,-1)]])}var Ve=Pe({name:`tabler-user-edit`,render:Be}),z={class:`flex flex-col gap-4 w-full`},B={key:0,class:`flex justify-center`},V=[`src`,`alt`],H={class:`flex flex-col gap-2 w-full`},He={class:`cui-label`},U={class:`flex flex-col gap-2 w-full`},W={for:`reassignTarget`,class:`cui-label`},Ue=P({__name:`FaceReassign`,props:{cropUrl:{},oldName:{}},setup(e,{expose:t}){let n=e,{t:r}=s(),{plugin:a}=i(`@camera.ui/camera-ui-nvr`),o=D(null),c=D([]),l=D(!0),u=M(()=>n.oldName===`unknown`?r(`views.recordings.reassign_unknown_person`):n.oldName),d=M(()=>{let e=c.value.filter(e=>e!==n.oldName).map(e=>({label:e,value:e}));return n.oldName!==`unknown`&&e.push({label:r(`views.recordings.reassign_unknown`),value:``}),e});return De(async()=>{try{let e=await a.value?.listKnownFaces?.();c.value=(e??[]).map(e=>e.name)}catch{}finally{l.value=!1}}),t({onConfirm:async()=>o.value}),(e,t)=>{let r=_,i=ze;return x(),E(`div`,z,[n.cropUrl?(x(),E(`div`,B,[T(`img`,{src:n.cropUrl,alt:F(u),class:`w-36 h-36 rounded-xl object-cover bg-neutral-900`},null,8,V)])):N(``,!0),T(`div`,H,[T(`label`,He,y(e.$t(`views.recordings.reassign_current`)),1),O(r,{"model-value":F(u),class:`w-full`,fluid:``,disabled:``},null,8,[`model-value`])]),T(`div`,U,[T(`label`,W,y(e.$t(`views.recordings.reassign_new`)),1),O(i,{id:`reassignTarget`,modelValue:F(o),"onUpdate:modelValue":t[0]||=e=>A(o)?o.value=e:null,options:F(d),"option-label":`label`,"option-value":`value`,class:`w-full`,fluid:``,loading:F(l),disabled:F(l),placeholder:e.$t(`views.faces.enter_or_pick_name`)},null,8,[`modelValue`,`options`,`loading`,`disabled`,`placeholder`])])])}}}),We={key:0,class:`card-skeleton absolute inset-0 rounded-xl`},Ge={key:2,class:`w-full h-full flex items-center justify-center bg-neutral-800/80`},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={key:0,class:`text-[10px] font-semibold text-white/80 bg-black/60 px-1.5 py-0.5 rounded-md shrink-0`},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={key:0,class:`flex items-center gap-0.5 shrink-0 opacity-85 group-hover:opacity-100 transition-opacity duration-200`},at=[`onClick`],ot=[`src`,`alt`],st={key:0,class:`text-[10px] text-white/60 font-medium`},ct={key:6,class:`absolute inset-0 z-[4] flex items-center justify-center pointer-events-none`},lt={key:7,class:`absolute bottom-10 left-1/2 -translate-x-1/2 z-[4] pointer-events-none`},ut={class:`text-[10px] font-semibold text-white bg-black/60 px-1.5 py-0.5 rounded-md whitespace-nowrap`,style:{"font-variant-numeric":`tabular-nums`}},dt=24,ft=30,pt=22,mt=28,ht=8,gt=8,G=v(P({__name:`RecordingCard`,props:{event:{},cameraName:{},camera:{},loadThumbnails:{type:Function},semanticScore:{},segIndex:{},hideSegmentBadge:{type:Boolean},selectionMode:{type:Boolean},selected:{type:Boolean},siblingActive:{type:Boolean}},emits:[`scrollToEvent`,`select`,`openTrace`],setup(e,{emit:t}){let n=e,r=t,a=Fe(),o=ge(),{t:m}=s(),_=Re(),v=l(`@camera.ui/camera-ui-nvr`),{plugin:Se}=i(`@camera.ui/camera-ui-nvr`),Ce=de(),{icons:b}=Le(),Oe=v.getCachedThumbnails(n.event.id),Ae=Oe?c(Oe,n.event,`card`,n.segIndex).url?`loaded`:`empty`:`loading`,A=we(te,void 0),Pe=S(`rootRef`),P=S(`previewCanvasRef`),I=S(`footerRef`),ze=S(`cardMenuRef`),L=D(!1),R=D(!1),Be=le(Pe,()=>Gt(),()=>$()),z=D(!1),B=D(Oe??null),V=D(Ae),H=D(!1),He=D(0),U=D(null),W=D(!1),G=D(0),_t=M(()=>oe(void 0,`admin`)),K=M(()=>U.value??n.event.favorite??!1),vt=M(()=>{if(n.semanticScore==null)return;let e=Math.max(0,Math.min(1,n.semanticScore));return{pct:e,label:`${(e*100).toFixed(0)}%`,color:e>=.5?`bg-green-500/80`:e>=.25?`bg-yellow-500/80`:`bg-red-400/80`}}),q=M(()=>B.value?c(B.value,n.event,`card`,n.segIndex):null),J=M(()=>{let e=n.segIndex??q.value?.segIndex;return e===void 0?void 0:n.event.segments?.[e]}),yt=M(()=>q.value?.url),bt=M(()=>q.value?.label),xt=M(()=>q.value?.type??n.event.types[0]??`motion`),Y=M(()=>{if(n.hideSegmentBadge)return;let e=n.event.segments?.length??0;return n.segIndex!==void 0&&e>1?`${n.segIndex+1}/${e}`:void 0}),X=M(()=>{let e=B.value,t=q.value?.url;if(!e||!t)return[];let r=[{url:t,label:q.value?.label,type:xt.value,crop:!1}];for(let t of g(e,n.segIndex)){if(r.some(e=>e.url===t.url))continue;let e=t.key.split(`:`)[0];r.push({url:t.url,label:t.label,type:t.type,crop:!0,faceSeg:/^\d+$/.test(e)?Number(e):-1})}if(n.segIndex===void 0)for(let t of Object.keys(e.cards??e.strips??{}).sort((e,t)=>Number(e)-Number(t))){let i=f(e.cards?.[t]??e.strips?.[t]);if(!i||r.some(e=>e.url===i))continue;let a=ne(n.event,t);r.push({url:i,label:a,type:a,crop:!1})}return r.length>1?r:[]}),St=M(()=>X.value.length>1),Ct=M(()=>X.value.length?Math.min(He.value,X.value.length-1):0),Z=M(()=>St.value?X.value[Ct.value]:void 0),wt=M(()=>!!Z.value?.crop),Tt=M(()=>Z.value?.url??yt.value),Et=M(()=>Z.value?.label??bt.value),Q=M(()=>{let e=J.value;return(e?p(n.event,e):[...new Set(n.event.types)]).filter(e=>e!==`motion`&&e!==`audio`)}),Dt=M(()=>n.cameraName??n.event.cameraId),Ot=M(()=>X.value.map(e=>({url:e.url,type:e.type}))),kt=M(()=>Q.value.slice(0,At.value.icons)),At=M(()=>{let e=G.value;if(!e)return{icons:2,tiles:2};let t=e-ht;n.selectionMode&&(t-=mt);let r=Ot.value.length>0?52:0,i=Vt(Q.value.length,Math.max(0,t-r),dt),a=Q.value.length>0?Math.max(1,i):0,o=a*dt+(a<Q.value.length?pt:0);return{icons:a,tiles:Vt(Ot.value.length,Math.max(0,t-o),ft)}}),jt=M(()=>Q.value.slice(At.value.icons)),Mt=M(()=>Ot.value.slice(0,At.value.tiles)),Nt=M(()=>Ot.value.length-At.value.tiles),Pt=M(()=>{let e=new Date(J.value?.firstSeen??n.event.thumbnailAt??n.event.startTime),t=new Date,r=e.toDateString()===t.toDateString(),i=e.toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`});return r?i:`${e.toLocaleDateString([],{month:`short`,day:`numeric`})} ${i}`}),Ft=M(()=>!!(Se.value&&n.event.endTime&&n.event.hasRecording!==!1)),It=M(()=>A?R.value?m(`views.recordings.no_preview`):z.value?A.status.value===`unavailable`?m(`views.recordings.no_preview`):A.status.value===`playing`&&A.previewTimeMs.value?Wt(A.previewTimeMs.value):``:``:``),Lt=M(()=>{let e=Z.value;if(e&&e.type===`face`)return e.label?e.label:`unknown`}),Rt=M(()=>{let e=[];return _t.value&&Lt.value!==void 0&&e.push({key:`reassign`,label:m(`views.recordings.reassign_face`),icon:Ve,loading:W.value,onClick:()=>Zt()}),n.camera&&e.push({key:`trace`,label:m(`views.recordings.open_trace`),icon:ve,onClick:()=>r(`openTrace`,J.value?.firstSeen)}),e.push({key:`ask`,label:m(`views.recordings.ask_assistant`),icon:Ie,onClick:()=>Bt()}),Ft.value&&e.push({key:`download`,label:m(`views.recordings.download`),icon:me,loading:H.value,onClick:()=>en()}),e});function zt(){fe(ze.value?.hide)}function Bt(){let e=m(`views.recordings.ask_assistant_prompt`,{camera:n.cameraName??n.camera?.name??n.event.cameraId,time:new Date(n.event.startTime).toLocaleString(),id:n.event.id});_.push({path:`/assistant`,query:{prompt:e}})}function Vt(e,t,n){return e===0||t<n?0:e*n<=t?e:Math.max(0,Math.floor((t-pt)/n))}function Ht(e){let t=X.value.length;t&&($(),He.value=(Ct.value+e+t)%t)}function Ut(e,t){St.value&&(t.stopPropagation(),$(),He.value=e)}function $(){R.value=!1,A&&z.value&&(z.value=!1,A.onHoverEnd())}function Wt(e){let t=new Date(e);return`${String(t.getHours()).padStart(2,`0`)}:${String(t.getMinutes()).padStart(2,`0`)}:${String(t.getSeconds()).padStart(2,`0`)}`}function Gt(){if(!A||Ct.value>0)return;let e=P.value;if(!e)return;let t=d(n.event);if(n.event.hasRecording===!1||!t){R.value=!0;return}z.value=!0,A.onHoverStart(e,n.event.cameraId,n.event.id,n.event.startTime,t,n.camera?.zones?.privacy,ee(n.event))}function Kt(){Be.blocksMouseEnter()||Gt()}function qt(){R.value=!1,A&&(z.value=!1,A.onHoverEnd())}async function Jt(e=2){let t=await n.loadThumbnails(n.event.id,n.event.startTime);if(t){B.value=t;let e=c(t,n.event,`card`);V.value=e.url?`loaded`:`empty`}else if(e>0)return await new Promise(e=>setTimeout(e,500)),Jt(e-1);else V.value=n.event.state===`active`?`loading`:`empty`}function Yt(){if(!Be.consumesClick()){if(n.selectionMode){r(`select`);return}r(`scrollToEvent`,J.value?.firstSeen??ae(n.event))}}async function Xt(e){$(),L.value||(L.value=!0,await Ee()),ze.value?.toggleMenu(e)}function Zt(){let e=Lt.value;e!==void 0&&Ce.openComponentDialog(Ue,{data:{title:m(`views.recordings.reassign_face`),confirmText:m(`components.form.button.save`),contentProps:{cropUrl:Z.value?.url,oldName:e}},onConfirm:e=>Qt(e)})}async function Qt(e){let t=Lt.value;if(t===void 0||W.value)return;let r=Z.value?.faceSeg??-1,i=Se.value;if(i?.reassignEventFace){W.value=!0;try{await i.reassignEventFace(n.event.id,r,t,e)>0&&h(n.event.id),o.add({severity:`success`,detail:m(`views.recordings.reassign_done`),life:3e3})}catch(e){o.add({severity:`error`,detail:ye(e),life:5e3})}finally{W.value=!1}}}async function $t(){let e=!K.value;U.value=e;try{await v.setEventFavorite(n.event.id,e)}catch(e){U.value=null,o.add({severity:`error`,detail:ye(e),life:5e3})}}async function en(){if(H.value)return;let e=Se.value;if(e?.nvrExport&&n.event.endTime){H.value=!0;try{let t=await e.nvrExport(n.event.cameraId,n.event.startTime*1e3,n.event.endTime*1e3);await ie({url:t.url,filename:t.filename})}catch(e){a.error(`Download failed:`,e),o.add({severity:`error`,summary:m(`views.recordings.download_failed`),detail:ye(e),life:5e3})}finally{H.value=!1}}}return ke(()=>v.storeVersion.value,()=>{let e=v.getCachedThumbnails(n.event.id);if(!e){B.value&&Jt();return}B.value=e,c(e,n.event,`card`).url&&(V.value=`loaded`)}),u(I,e=>{let t=e[0]?.contentRect.width??0,n=Math.round(t/gt)*gt;n!==G.value&&(G.value=n)}),De(()=>{Ae===`loading`&&Jt()}),(t,n)=>{let r=he,i=_e,a=re,o=ce,s=se,c=ue,l=xe,u=be;return x(),E(`div`,{ref_key:`rootRef`,ref:Pe,class:`recording-card relative group cursor-pointer`,onClickCapture:zt,onClick:Yt,onMouseenter:Kt,onMouseleave:qt},[T(`div`,{class:w([`bg-neutral-900 w-full rounded-xl overflow-hidden relative transition-shadow duration-200`,{"ring-2 ring-inset ring-primary/70":e.siblingActive}]),style:{"aspect-ratio":`1/1`}},[F(V)===`loading`?(x(),E(`div`,We)):F(Tt)?(x(),k(r,{key:1,src:F(Tt),alt:F(Dt),class:`pointer-events-none w-full h-full transition-transform duration-300 group-hover:scale-105`,"image-style":{objectFit:F(wt)?`contain`:`cover`},"image-container-class":`w-full h-full`},null,8,[`src`,`alt`,`image-style`])):(x(),E(`div`,Ge,[(x(),k(Te(F(b)[F(xt)]??F(b).motion),{class:`w-10 h-10 text-white/20`}))])),F(A)?Me((x(),E(`canvas`,{key:3,ref_key:`previewCanvasRef`,ref:P,class:`absolute inset-0 w-full h-full object-cover pointer-events-none z-[1]`},null,512)),[[je,F(z)]]):N(``,!0),n[2]||=T(`div`,{class:`absolute inset-0 bg-transparent group-hover:bg-black/30 pointer-events-none transition-colors duration-200 z-[2]`},null,-1),T(`div`,Ke,[T(`div`,qe,[T(`p`,Je,y(F(Dt)),1),F(Y)?(x(),E(`span`,Ye,y(F(Y)),1)):N(``,!0),F(vt)?(x(),E(`span`,{key:1,class:w([`text-[10px] font-bold text-white px-1.5 py-0.5 rounded-md shrink-0`,F(vt).color])},y(F(vt).label),3)):N(``,!0),F(_t)&&!e.selectionMode?(x(),E(`button`,{key:2,title:F(K)?t.$t(`views.recordings.unfavorite`):t.$t(`views.recordings.favorite`),type:`button`,class:`card-icon-button w-5 h-5 shrink-0`,onClick:Ne($t,[`stop`]),onMouseenter:$},[F(K)?(x(),k(i,{key:0,class:`w-3 h-3 text-yellow-400`})):(x(),k(a,{key:1,class:`w-3 h-3 text-white`}))],40,Xe)):N(``,!0),F(Rt).length>0&&!e.selectionMode?(x(),E(`button`,{key:3,title:t.$t(`views.recordings.more_actions`),type:`button`,class:`card-icon-button w-5 h-5 shrink-0`,disabled:F(H)||F(W),onClick:Ne(Xt,[`stop`]),onMouseenter:$},[F(H)||F(W)?(x(),k(o,{key:0,class:`w-3 h-3 text-white`})):(x(),k(s,{key:1,class:`w-3 h-3 text-white`}))],40,Ze)):N(``,!0)]),T(`p`,Qe,y(F(Pt)),1)]),F(X).length>1?(x(),E(j,{key:4},[T(`button`,{type:`button`,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`,"aria-label":t.$t(`views.recordings.prev_image`),onClick:n[0]||=Ne(e=>Ht(-1),[`stop`]),onMouseenter:$},[O(c,{class:`w-5 h-5 text-white`})],40,$e),T(`button`,{type:`button`,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`,"aria-label":t.$t(`views.recordings.next_image`),onClick:n[1]||=Ne(e=>Ht(1),[`stop`]),onMouseenter:$},[O(l,{class:`w-5 h-5 text-white`})],40,et)],64)):N(``,!0),F(Et)?(x(),E(`div`,{key:5,class:w([`absolute left-1/2 -translate-x-1/2 z-[3] max-w-[85%] pointer-events-none transition-all duration-200`,F(It)?`bottom-16`:`bottom-10`])},[T(`span`,tt,y(F(Et)),1)],2)):N(``,!0),T(`div`,{ref_key:`footerRef`,ref:I,class:`absolute bottom-2 left-2 right-2 flex items-center justify-between gap-2 z-[3]`},[T(`div`,nt,[e.selectionMode?(x(),E(`div`,{key:0,class:w([`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`])},[e.selected?(x(),k(u,{key:0,class:`w-4 h-4 text-white`})):N(``,!0)],2)):N(``,!0),(x(!0),E(j,null,C(F(kt),e=>(x(),E(`div`,{key:e,class:`flex items-center justify-center w-5 h-5 rounded-md bg-black/60 shrink-0`},[(x(),k(Te(F(b)[e]??F(b).motion),{class:`w-3 h-3 text-white/80`}))]))),128)),F(jt).length>0?(x(),E(`span`,{key:1,title:F(jt).join(`, `),class:`text-[10px] text-white/60 font-medium shrink-0`},` +`+y(F(jt).length),9,rt)):N(``,!0)]),F(Mt).length>0||F(Nt)>0?(x(),E(`div`,it,[(x(!0),E(j,null,C(F(Mt),(e,t)=>(x(),E(`div`,{key:t,class:w([`w-7 h-7 rounded overflow-hidden border bg-neutral-800 cursor-pointer`,t===F(Ct)?`border-primary/80`:`border-white/20`]),onClick:e=>Ut(t,e)},[T(`img`,{src:e.url,alt:e.type,decoding:`async`,loading:`lazy`,class:`w-full h-full object-cover`},null,8,ot)],10,at))),128)),F(Nt)>0?(x(),E(`span`,st,`+`+y(F(Nt)),1)):N(``,!0)])):N(``,!0)],512),F(A)&&F(z)&&F(A).isLoading.value?(x(),E(`div`,ct,[O(o,{class:`w-7 h-7 text-white`})])):N(``,!0),F(It)?(x(),E(`div`,lt,[T(`span`,ut,y(F(It)),1)])):N(``,!0)],2),F(L)?(x(),k(pe,{key:0,ref_key:`cardMenuRef`,ref:ze,items:F(Rt),popover:{pt:{content:{class:`p-0! rounded-xl! overflow-hidden!`}}}},null,8,[`items`])):N(``,!0)],544)}}}),[[`__scopeId`,`data-v-22b538a5`]]),_t={name:`VirtualScroller`,components:{SpinnerIcon:o},extends:{name:`BaseVirtualScroller`,extends:t,provide(){return{$pcVirtualScroller:this,$parentInstance:this}},props:{id:{type:String,default:null},style:null,class:null,items:{type:Array,default:null},itemSize:{type:[Number,Array],default:0},scrollHeight:null,scrollWidth:null,orientation:{type:String,default:`vertical`},rtl:{type:Boolean,default:!1},numToleratedItems:{type:Number,default:null},delay:{type:Number,default:0},resizeDelay:{type:Number,default:10},lazy:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},loaderDisabled:{type:Boolean,default:!1},columns:{type:Array,default:null},loading:{type:Boolean,default:!1},showSpacer:{type:Boolean,default:!0},showLoader:{type:Boolean,default:!1},tabindex:{type:Number,default:0},inline:{type:Boolean,default:!1},step:{type:Number,default:0},appendOnly:{type:Boolean,default:!1},autoSize:{type:Boolean,default:!1},itemKey:{type:[String,Function],default:null}},style:L,beforeMount(){L.loadCSS({nonce:this.$primevueConfig?.csp?.nonce})}},inheritAttrs:!1,emits:[`update:numToleratedItems`,`scroll`,`scroll-index-change`,`lazy-load`],data(){let e=this.isBoth();return{first:e?{rows:0,cols:0}:0,last:e?{rows:0,cols:0}:0,page:e?{rows:0,cols:0}:0,numItemsInViewport:e?{rows:0,cols:0}:0,lastScrollPos:e?{top:0,left:0}:0,d_numToleratedItems:this.numToleratedItems,d_loading:this.loading,loaderArr:[],spacerStyle:{},contentStyle:{},observedWidth:0,observedHeight:0}},element:null,content:null,lastScrollPos:null,scrollTimeout:null,resizeTimeout:null,defaultWidth:0,defaultHeight:0,defaultContentWidth:0,defaultContentHeight:0,isRangeChanged:!1,lazyLoadState:{},resizeListener:null,initialized:!1,computed:{containerClass(){return[`p-virtualscroller`,this.class,{"p-virtualscroller-inline":this.inline,"p-virtualscroller-both p-both-scroll":this.isBoth(),"p-virtualscroller-horizontal p-horizontal-scroll":this.isHorizontal(),"p-virtualscroller-rtl":this.rtl&&this.isHorizontal()}]},contentClass(){return[`p-virtualscroller-content`,{"p-virtualscroller-loading":this.d_loading}]},loaderClass(){return[`p-virtualscroller-loader`,{"p-virtualscroller-loader-mask":!this.$slots.loader}]},loadedItems(){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):[]},loadedRows(){return this.d_loading?this.loaderDisabled?this.loaderArr:[]:this.loadedItems},loadedColumns(){if(this.columns){let e=this.isBoth(),t=this.isHorizontal();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)}return this.columns}},watch:{numToleratedItems(e){this.d_numToleratedItems=e},loading(e,t){this.lazy&&e!==t&&e!==this.d_loading&&(this.d_loading=e)},items(e,t){(!t||t.length!==(e||[]).length)&&this.scheduleInit()},itemSize(){this.scheduleInit()},orientation(){this.lastScrollPos=this.isBoth()?{top:0,left:0}:0},scrollHeight(){this.scheduleInit()},scrollWidth(){this.scheduleInit()}},mounted(){this.viewInit(),this.lastScrollPos=this.isBoth()?{top:0,left:0}:0,this.lazyLoadState=this.lazyLoadState||{}},updated(){!this.initialized&&this.viewInit()},unmounted(){this.unbindResizeListener(),this.unbindSizeObserver(),this.initialized=!1},methods:{resolveItemKey(e,t){let n=this.itemKey;return typeof n==`function`?n(e,t)??t:typeof n==`string`&&typeof e==`object`&&e?e[n]??t:t},viewInit(){n(this.element)&&(this.setContentEl(this.content),this.bindSizeObserver(),this.init(),this.calculateAutoSize(),this.bindResizeListener(),this.defaultWidth=r(this.element),this.defaultHeight=a(this.element),this.defaultContentWidth=r(this.content),this.defaultContentHeight=a(this.content),this.initialized=!0)},init(){this.disabled||(this.setSize(),this.calculateOptions(),this.setSpacerSize())},scheduleInit(){this._initScheduled||(this._initScheduled=!0,Promise.resolve().then(()=>{this._initScheduled=!1,this.init(),this.calculateAutoSize()}))},isVertical(){return this.orientation===`vertical`},isHorizontal(){return this.orientation===`horizontal`},isBoth(){return this.orientation===`both`},scrollTo(e){this.element&&this.element.scrollTo(e)},scrollToIndex(e,t=`auto`){let n=this.isBoth(),r=this.isHorizontal(),i=this.rtl&&r;if(n?e.every(e=>e>-1):e>-1){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)=>{i&&(e=this.element.scrollWidth-this.element.clientWidth-e),this.scrollTo({left:e,top:n,behavior:t})},m=n?{rows:0,cols:0}:0,h=!1,g=!1;n?(m={rows:d(e[0],c[0]),cols:d(e[1],c[1])},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)}},scrollInView(e,t,n=`auto`){if(t){let r=this.isBoth(),i=this.isHorizontal();if(r?e.every(e=>e>-1):e>-1){let{first:a,viewport:o}=this.getRenderedRange(),s=(e=0,t=0)=>this.scrollTo({left:e,top:t,behavior:n}),c=t===`to-start`,l=t===`to-end`;if(c){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]);else if(o.first-a>e){let e=(o.first-1)*this.itemSize;i?s(e,0):s(0,e)}}else if(l){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]);else if(o.last-a<=e+1){let e=(o.first+1)*this.itemSize;i?s(e,0):s(0,e)}}}}else this.scrollToIndex(e,n)},getRenderedRange(){let e=(e,t)=>Math.floor(e/(t||e)),t=this.first,n=0;if(this.element){let r=this.isBoth(),i=this.isHorizontal(),{scrollTop:a,scrollLeft:o}=this.element;r?(t={rows:e(a,this.itemSize[0]),cols:e(o,this.itemSize[1])},n={rows:t.rows+this.numItemsInViewport.rows,cols:t.cols+this.numItemsInViewport.cols}):(t=e(i?o:a,this.itemSize),n=t+this.numItemsInViewport)}return{first:this.first,last:this.last,viewport:{first:t,last:n}}},calculateNumItems(){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?{rows:c(s,n[0]),cols:c(o,n[1])}:c(t?o:s,n);return{numItemsInViewport:u,numToleratedItems:this.d_numToleratedItems||(e?[l(u.rows),l(u.cols)]:l(u))}},calculateOptions(){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?{rows:i(t.rows,n.rows,r[0]),cols:i(t.cols,n.cols,r[1],!0)}:i(t,n,r);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(()=>{this.lazyLoadState={first:this.step?e?{rows:0,cols:t.cols}:0:t,last:Math.min(this.step?this.step:a,this.items?.length-1||0)},this.$emit(`lazy-load`,this.lazyLoadState)})},calculateAutoSize(){this.autoSize&&!this.d_loading&&Promise.resolve().then(()=>{if(this.content){let e=this.isBoth(),t=this.isHorizontal(),n=this.isVertical();this.content.style.minHeight=this.content.style.minWidth=`auto`,this.content.style.position=`relative`,this.element.style.contain=`none`;let[i,o]=[r(this.element),a(this.element)];(e||t)&&(this.element.style.width=i<this.defaultWidth?i+`px`:this.scrollWidth||this.defaultWidth+`px`),(e||n)&&(this.element.style.height=o<this.defaultHeight?o+`px`:this.scrollHeight||this.defaultHeight+`px`),this.content.style.minHeight=this.content.style.minWidth=``,this.content.style.position=``,this.element.style.contain=``}})},getLast(e=0,t){return this.items?Math.min(t?(this.columns||this.items[0])?.length||0:this.items?.length||0,e):0},getContentPosition(){if(this.content){if(this.cachedContentPosition&&this.cachedContentElement===this.content)return this.cachedContentPosition;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);return this.cachedContentElement=this.content,this.cachedContentPosition={left:t,right:n,top:r,bottom:i,x:t+n,y:r+i},this.cachedContentPosition}return{left:0,right:0,top:0,bottom:0,x:0,y:0}},setSize(){if(this.element){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;e||t?(a(`height`,i),a(`width`,r)):a(`height`,i)}},setSpacerSize(){let e=this.items;if(e){let t=this.isBoth(),n=this.isHorizontal(),r=this.getContentPosition(),i=(e,t,n,r=0)=>this.spacerStyle={...this.spacerStyle,[`${e}`]:(t||[]).length*n+r+`px`};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)}},setContentPosition(e){if(this.content&&!this.appendOnly){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)=>{let n=r?-e:e;this.contentStyle={...this.contentStyle,transform:`translate3d(${n}px, ${t}px, 0)`}};if(t){let e=i.rows,t=i.cols,n=this.itemSize;o(a(t,n[1]),a(e,n[0]))}else{let e=i,t=this.itemSize,r=a(e,t);n?o(r,0):o(0,r)}}},onScrollPositionChange(e){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);i&&l<0&&(l=Math.abs(l));let u=n?{rows:0,cols:0}:0,d=this.last,f=!1,p=this.lastScrollPos;if(n){let e=this.lastScrollPos.top<=c,n=this.lastScrollPos.left<=l;if(!this.appendOnly||this.appendOnly&&(e||n)){let r={rows:s(c,this.itemSize[0]),cols:s(l,this.itemSize[1])},i={rows:this.calculateTriggerIndex(r.rows,this.first.rows,this.last.rows,this.numItemsInViewport.rows,this.d_numToleratedItems[0],e),cols:this.calculateTriggerIndex(r.cols,this.first.cols,this.last.cols,this.numItemsInViewport.cols,this.d_numToleratedItems[1],n)};u={rows:this.calculateFirst(r.rows,i.rows,this.first.rows,this.last.rows,this.numItemsInViewport.rows,this.d_numToleratedItems[0],e),cols:this.calculateFirst(r.cols,i.cols,this.first.cols,this.last.cols,this.numItemsInViewport.cols,this.d_numToleratedItems[1],n,!0)},d={rows:this.calculateLast(r.rows,u.rows,this.last.rows,this.numItemsInViewport.rows,this.d_numToleratedItems[0]),cols:this.calculateLast(r.cols,u.cols,this.last.cols,this.numItemsInViewport.cols,this.d_numToleratedItems[1],!0)},f=u.rows!==this.first.rows||d.rows!==this.last.rows||u.cols!==this.first.cols||d.cols!==this.last.cols||this.isRangeChanged,p={top:c,left:t.scrollLeft}}}else{let e=r?l:c,t=this.lastScrollPos<=e;if(!this.appendOnly||this.appendOnly&&t){let n=s(e,this.itemSize),r=this.calculateTriggerIndex(n,this.first,this.last,this.numItemsInViewport,this.d_numToleratedItems,t);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}}return{first:u,last:d,isRangeChanged:f,scrollPos:p}},calculateTriggerIndex(e,t,n,r,i,a){return e<=i?i:a?n-r-i:t+i-1},calculateFirst(e,t,n,r,i,a,o,s=!1){if(e<=a)return 0;let c=Math.max(0,o?e<t?n:e-a:e>t?n:e-2*a),l=this.getLast(c,s);return c>l?l-i:c},calculateLast(e,t,n,r,i,a=!1){let o=t+r+2*i;return e>=i&&(o+=i+1),this.getLast(o,a)},onScrollChange(e){let{first:t,last:n,isRangeChanged:r,scrollPos:i}=this.onScrollPositionChange(e);if(r){let e={first:t,last:n};if(this.setContentPosition(e),this.first=t,this.last=n,this.lastScrollPos=i,this.$emit(`scroll-index-change`,e),this.lazy&&this.isPageChanged(t)){let e={first:this.step?Math.min(this.getPageByFirst(t)*this.step,(this.items?.length||0)-this.step):t,last:Math.min(this.step?(this.getPageByFirst(t)+1)*this.step:n,this.items?.length-1||0)};(this.lazyLoadState.first!==e.first||this.lazyLoadState.last!==e.last)&&this.$emit(`lazy-load`,e),this.lazyLoadState=e}}},onScroll(e){if(this.$emit(`scroll`,e),this.delay){if(this.scrollTimeout&&clearTimeout(this.scrollTimeout),this.isPageChanged()){if(!this.d_loading&&this.showLoader){let{isRangeChanged:t}=this.onScrollPositionChange(e);(t||this.step&&this.isPageChanged())&&(this.d_loading=!0)}this.scrollTimeout=setTimeout(()=>{this.onScrollChange(e),this.d_loading&&this.showLoader&&(!this.lazy||this.loading===void 0)&&(this.d_loading=!1,this.page=this.getPageByFirst())},this.delay)}}else this.onScrollChange(e)},onResize(){this.resizeTimeout&&clearTimeout(this.resizeTimeout),this.resizeTimeout=setTimeout(()=>{if(n(this.element)){let e=this.isBoth(),t=this.isVertical(),n=this.isHorizontal(),[i,o]=[r(this.element),a(this.element)],[s,c]=[i!==this.defaultWidth,o!==this.defaultHeight];(e?s||c:n?s:t&&c)&&(this.d_numToleratedItems=this.numToleratedItems,this.defaultWidth=i,this.defaultHeight=o,this.defaultContentWidth=r(this.content),this.defaultContentHeight=a(this.content),this.init())}},this.resizeDelay)},bindResizeListener(){this.resizeListener||(this.resizeListener=this.onResize.bind(this),window.addEventListener(`resize`,this.resizeListener),window.addEventListener(`orientationchange`,this.resizeListener))},bindSizeObserver(){this.sizeObserver||!this.element||typeof ResizeObserver>`u`||(this.sizeObserver=new ResizeObserver(e=>{let t=e[0]?.borderBoxSize?.[0];this.observedWidth=t?t.inlineSize:e[0]?.contentRect.width??0,this.observedHeight=t?t.blockSize:e[0]?.contentRect.height??0}),this.sizeObserver.observe(this.element))},unbindSizeObserver(){this.sizeObserver&&=(this.sizeObserver.disconnect(),null)},unbindResizeListener(){this.resizeListener&&=(window.removeEventListener(`resize`,this.resizeListener),window.removeEventListener(`orientationchange`,this.resizeListener),null)},getOptions(e){let t=(this.items||[]).length,n=this.isBoth()?this.first.rows+e:this.first+e;return{index:n,count:t,first:n===0,last:n===t-1,even:n%2==0,odd:n%2!=0}},getLoaderOptions(e,t){let n=this.loaderArr.length;return{index:e,count:n,first:e===0,last:e===n-1,even:e%2==0,odd:e%2!=0,...t}},getPageByFirst(e){return Math.floor(((e??this.first)+this.d_numToleratedItems*4)/(this.step||1))},isPageChanged(e){return this.step&&!this.lazy?this.page!==this.getPageByFirst(e??this.first):!0},setContentEl(t){this.content=t||this.content||e(this.element,`[data-pc-section="content"]`)},elementRef(e){this.element=e},contentRef(e){this.content=e}}},K=[`tabindex`];function vt(e,t,n,r,i,a){let o=Ce(`SpinnerIcon`);return e.disabled?(x(),E(j,{key:1},[I(e.$slots,`default`),I(e.$slots,`content`,{items:e.items,rows:e.items,columns:a.loadedColumns})],64)):(x(),E(`div`,b({key:0,ref:a.elementRef,class:a.containerClass,tabindex:e.tabindex,style:e.style},e.ptmi(`root`),{onScroll:t[0]||=(...e)=>a.onScroll&&a.onScroll(...e)}),[I(e.$slots,`content`,{styleClass:a.contentClass,items:a.loadedItems,getItemOptions:a.getOptions,loading:i.d_loading,getLoaderOptions:a.getLoaderOptions,itemSize:e.itemSize,rows:a.loadedRows,columns:a.loadedColumns,contentRef:a.contentRef,spacerStyle:i.spacerStyle,contentStyle:i.contentStyle,vertical:a.isVertical(),horizontal:a.isHorizontal(),both:a.isBoth()},()=>[T(`div`,b({ref:a.contentRef,class:a.contentClass,style:i.contentStyle},e.ptm(`content`)),[(x(!0),E(j,null,C(a.loadedItems,(t,n)=>I(e.$slots,`item`,{item:t,options:a.getOptions(n)},void 0,void 0,a.resolveItemKey(t,n))),128))],16)]),e.showSpacer?(x(),E(`div`,b({key:0,class:`p-virtualscroller-spacer`,style:i.spacerStyle},e.ptm(`spacer`)),null,16)):N(``,!0),!e.loaderDisabled&&e.showLoader&&i.d_loading?(x(),E(`div`,b({key:1,class:a.loaderClass},e.ptm(`loader`)),[e.$slots&&e.$slots.loader?(x(!0),E(j,{key:0},C(i.loaderArr,(t,n)=>I(e.$slots,`loader`,{options:a.getLoaderOptions(n,a.isBoth()&&{numCols:e.d_numItemsInViewport.cols})},void 0,void 0,n)),128)):N(``,!0),I(e.$slots,`loadingicon`,{},()=>[O(o,b({spin:``,class:`p-virtualscroller-loading-icon`},e.ptm(`loadingIcon`)),null,16)])],16)):N(``,!0)],16,K))}var q=v(_t,[[`render`,vt]]),J={aspectRatio:1,gap:8,hasMore:!1,loadMore:void 0,itemKey:void 0},yt={class:`recordings-row`},bt={key:1,class:`pointer-events-none absolute bottom-2 left-1/2 -translate-x-1/2 z-10 rounded-full bg-black/60 p-1.5`},xt=v(P({__name:`CuiRecordingsGrid`,props:Oe({items:{},minItemWidth:{},aspectRatio:{},gap:{},hasMore:{type:Boolean},loadMore:{type:Function},itemKey:{type:Function}},J),setup(e,{expose:t}){let n=e,r=S(`containerRef`),{width:i,height:a}=m(r),o=D(0),s=D(!1),c=null,l=!1,u=M(()=>a.value>0?`${a.value}px`:void 0),d=M(()=>{let e=i.value;return e?Math.max(1,Math.floor((e+n.gap)/(n.minItemWidth+n.gap))):0}),f=M(()=>{let e=i.value,t=d.value;return!e||!t?0:Math.floor((e-(t-1)*n.gap)/t)}),p=M(()=>f.value?Math.floor(f.value/n.aspectRatio):0),h=M(()=>p.value?p.value+n.gap:0),g=M(()=>{let e=d.value;if(!e)return[];let t=[];for(let r=0;r<n.items.length;r+=e)t.push(n.items.slice(r,r+e));return t});function ee(e){if(n.itemKey)return n.itemKey(e);let t=e;return t.id??t.key??JSON.stringify(e)}function te(e){let t=e;if(t&&t.length!==0)return ee(t[0])}async function _(){if(s.value||!n.hasMore||!n.loadMore||c!==null&&n.items.length===c)return;s.value=!0;let e=n.items.length;try{await Promise.resolve(n.loadMore())}finally{s.value=!1,c=n.items.length===e?e:null}}function ne(e){let t=e.target;t&&(o.value=t.scrollTop,t.scrollTop+t.clientHeight>=t.scrollHeight-h.value*3&&_())}function re(){(r.value?.querySelector(`.recordings-scroll`))?.scrollTo({top:0,behavior:`smooth`})}return Ae(()=>{let e=r.value;e&&f.value&&(e.style.setProperty(`--cell-w`,`${f.value}px`),e.style.setProperty(`--cell-h`,`${p.value}px`),e.style.setProperty(`--cell-gap`,`${n.gap}px`))}),ke([()=>n.items.length,a,h,()=>n.hasMore],()=>{l||(l=!0,Ee(()=>{l=!1,n.hasMore&&h.value&&a.value&&g.value.length*h.value<a.value+h.value&&_()}))},{flush:`post`}),t({scrollToTop:re,scrollY:o}),(e,t)=>{let n=q,i=ce;return x(),E(`div`,{ref_key:`containerRef`,ref:r,class:`recordings-grid-root relative`},[F(g).length>0&&F(f)>0?(x(),k(n,{key:0,items:F(g),"item-size":F(h),"scroll-height":F(u),"num-tolerated-items":F(2),"item-key":te,orientation:`vertical`,class:`recordings-scroll`,onScroll:ne},{item:Se(({item:t})=>[T(`div`,yt,[(x(!0),E(j,null,C(t,t=>(x(),E(`div`,{key:ee(t),class:`recordings-cell`},[I(e.$slots,`item`,{item:t},void 0,!0)]))),128))])]),_:3},8,[`items`,`item-size`,`scroll-height`,`num-tolerated-items`])):N(``,!0),F(s)?(x(),E(`div`,bt,[O(i,{width:`18px`,height:`18px`,class:`text-white`})])):N(``,!0)],512)}}}),[[`__scopeId`,`data-v-1270305c`]]);function Y(e){if(e.episode)return e.episode.endTime;if(e.segIndex!==void 0){let t=e.event.segments?.[e.segIndex];if(t)return t.firstSeen}return e.event.thumbnailAt??e.event.startTime}function X(e){let t=[];for(let n of e){let e=n.segments??[];if(e.length<=1){t.push({event:n,key:n.id});continue}e.forEach((e,r)=>{e&&t.push({event:n,key:`${n.id}:seg:${r}`,segIndex:r})})}return t.sort((e,t)=>Y(t)-Y(e)),t}export{G as i,Y as n,xt as r,X as t};
@@ -1 +0,0 @@
1
- import{Rr as e,_ as t,kr as n,s as r}from"./api-DK2Bav9D.js";import{dr as i}from"./vendor-DGke_6M4.js";import{l as a}from"./server-DUFhf2c_.js";import{n as o}from"./useServerRestart-Cz9eVHUE.js";var s=3e5;async function c(t){return(await e.post(`/backup/download`,{localStorage:t},{responseType:`arraybuffer`,timeout:s})).data}async function l(t,n){return(await e.post(`/backup/restore`,t,{timeout:s,onUploadProgress:e=>{e.total&&n?.(Math.round(e.loaded/e.total*100))}})).data}async function u(){return(await e.get(`/backup/scheduler`)).data}async function d(t){return(await e.patch(`/backup/scheduler`,t)).data}async function f(){return(await e.post(`/backup/scheduler/run`)).data}async function p(t){return(await e.get(`/backup/scheduler/backups/${encodeURIComponent(t)}`,{responseType:`arraybuffer`,timeout:s})).data}async function m(t){await e.delete(`/backup/scheduler/backups/${encodeURIComponent(t)}`)}var h=i(!1),g=i(`idle`),_=i(0),v=i(``),y=h;function b(e){e.theme&&localStorage.setItem(`theme`,JSON.stringify(e.theme)),e.language&&localStorage.setItem(`language`,e.language),e.ui&&localStorage.setItem(`ui`,JSON.stringify(e.ui))}function x(){async function e(e){let i=n();h.value=!0,g.value=`uploading`,_.value=0,v.value=``;try{let t=new FormData;t.append(`upload`,e),b(await l(t,e=>{_.value=e,e>=100&&(g.value=`restoring`)}))}catch(e){return h.value=!1,g.value=`idle`,v.value=r(e),i.add({severity:`error`,detail:v.value,life:1e4}),!1}g.value=`restarting`;let{beginServerRestart:s}=o();return s(),await a().catch(()=>{}),await t().logout(),h.value=!1,g.value=`idle`,!0}return{active:h,phase:g,uploadPercent:_,lastError:v,restoreLocalStorage:b,run:e}}export{p as a,f as c,c as i,x as n,u as o,m as r,d as s,y as t};
@@ -1 +0,0 @@
1
- import{Er as e}from"./api-DK2Bav9D.js";import{sn as t}from"./vendor-DGke_6M4.js";function n(){let{data:n}=new e().getUsersQuery({page:1,pageSize:-1});return{userOptions:t(()=>(n.value?.result??[]).map(e=>({label:e.username,value:e.username})))}}export{n as t};
@@ -1,3 +0,0 @@
1
- var e=class e{static getElements(e,t=document){if(typeof e==`string`){let n=`getElementById`in t?t:void 0;if(n&&!isNaN(+e[0])){let t=n.getElementById(e);return t?[t]:[]}let r=t.querySelectorAll(e);if(!r.length&&e[0]!==`.`&&e[0]!==`#`&&(r=t.querySelectorAll(`.`+e),r.length||(r=t.querySelectorAll(`#`+e)),!r.length)){let n=t.querySelector(`[gs-id="${e}"]`);return n?[n]:[]}return Array.from(r)}return[e]}static getElement(e,t=document){if(typeof e==`string`){let n=`getElementById`in t?t:void 0;if(!e.length)return null;if(n&&e[0]===`#`)return n.getElementById(e.substring(1));if(e[0]===`#`||e[0]===`.`||e[0]===`[`)return t.querySelector(e);if(n&&!isNaN(+e[0]))return n.getElementById(e);let r=t.querySelector(e);return n&&!r&&(r=n.getElementById(e)),r||=t.querySelector(`.`+e),r}return e}static lazyLoad(e){return!!(e.lazyLoad||e.grid?.opts?.lazyLoad&&e.lazyLoad!==!1)}static createDiv(e,t){let n=document.createElement(`div`);return e.forEach(e=>{e&&n.classList.add(e)}),t?.appendChild(n),n}static shouldSizeToContent(e,t=!1){return!!(e?.grid&&(t?e.sizeToContent===!0||e.grid.opts.sizeToContent===!0&&e.sizeToContent===void 0:e.sizeToContent||e.grid.opts.sizeToContent&&e.sizeToContent!==!1))}static isIntercepted(e,t){return!(e.y>=t.y+t.h||e.y+e.h<=t.y||e.x+e.w<=t.x||e.x>=t.x+t.w)}static isTouching(t,n){return e.isIntercepted(t,{x:n.x-.5,y:n.y-.5,w:n.w+1,h:n.h+1})}static areaIntercept(e,t){let n=e.x>t.x?e.x:t.x,r=e.x+e.w<t.x+t.w?e.x+e.w:t.x+t.w;if(r<=n)return 0;let i=e.y>t.y?e.y:t.y,a=e.y+e.h<t.y+t.h?e.y+e.h:t.y+t.h;return a<=i?0:(r-n)*(a-i)}static area(e){return e.w*e.h}static sort(e,t=1){let n=2**53-1;return e.sort((e,r)=>{let i=t*((e.y??n)-(r.y??n));return i===0?t*((e.x??n)-(r.x??n)):i})}static find(e,t){return t?e.find(e=>e.id===t):void 0}static findInGrid(t,n,r){let i=t.engine.nodes.find(e=>String(e.id)===n);if(i||!r)return i;for(let r of t.engine.nodes)if(r.subGrid){let t=e.findInGrid(r.subGrid,n);if(t)return t}}static toBool(e){return typeof e==`boolean`?e:typeof e==`string`?(e=e.toLowerCase(),e!==``&&e!==`no`&&e!==`false`&&e!==`0`):!!e}static toNumber(e){return e===null||e.length===0?void 0:Number(e)}static parseHeight(e){let t,n=`px`;if(typeof e==`string`){if(e===`auto`||e===``)t=0;else{let r=e.match(/^(-[0-9]+\.[0-9]+|[0-9]*\.[0-9]+|-[0-9]+|[0-9]+)(px|em|rem|vh|vw|%|cm|mm)?$/);if(!r)throw Error(`Invalid height val = ${e}`);n=r[2]||`px`,t=parseFloat(r[1])}}else t=e;return{h:t,unit:n}}static defaults(t,...n){return n.forEach(n=>{for(let r in n){if(!Object.prototype.hasOwnProperty.call(n,r))return;t[r]===null||t[r]===void 0?t[r]=n[r]:typeof n[r]==`object`&&typeof t[r]==`object`&&e.defaults(t[r],n[r])}}),t}static same(e,t){if(typeof e!=`object`)return e==t;if(typeof e!=typeof t)return!1;let n=e,r=t;if(Object.keys(n).length!==Object.keys(r).length)return!1;for(let e in n)if(n[e]!==r[e])return!1;return!0}static copyPos(e,t,n=!1){return t.x!==void 0&&(e.x=t.x),t.y!==void 0&&(e.y=t.y),t.w!==void 0&&(e.w=t.w),t.h!==void 0&&(e.h=t.h),n&&(t.minW&&(e.minW=t.minW),t.minH&&(e.minH=t.minH),t.maxW&&(e.maxW=t.maxW),t.maxH&&(e.maxH=t.maxH)),e}static samePos(e,t){return e&&t&&e.x===t.x&&e.y===t.y&&(e.w||1)===(t.w||1)&&(e.h||1)===(t.h||1)}static sanitizeMinMax(e){e.minW||delete e.minW,e.minH||delete e.minH,e.maxW||delete e.maxW,e.maxH||delete e.maxH}static removeInternalAndSame(t,n){if(typeof t!=`object`||typeof n!=`object`||!t||!n||Array.isArray(t)||Array.isArray(n))return;let r=t,i=n;for(let t in r){let n=r[t],a=i[t];t[0]===`_`||n===a?delete r[t]:n&&typeof n==`object`&&a!==void 0&&(e.removeInternalAndSame(n,a),Object.keys(n).length||delete r[t])}}static removeInternalForSave(e,t=!0){let n=e;for(let e in n)(e[0]===`_`||n[e]===null||n[e]===void 0)&&delete n[e];delete e.grid,t&&delete e.el,e.autoPosition||delete e.autoPosition,e.noResize||delete e.noResize,e.noMove||delete e.noMove,e.locked||delete e.locked,(e.w===1||e.w===e.minW)&&delete e.w,(e.h===1||e.h===e.minH)&&delete e.h}static throttle(e,t){let n=!1;return(...r)=>{n||(n=!0,setTimeout(()=>{e(...r),n=!1},t))}}static removePositioningStyles(e){let t=e.style;t.position&&t.removeProperty(`position`),t.left&&t.removeProperty(`left`),t.top&&t.removeProperty(`top`),t.width&&t.removeProperty(`width`),t.height&&t.removeProperty(`height`)}static getScrollElement(t){if(!t)return document.scrollingElement||document.documentElement;let n=getComputedStyle(t).overflowY;return(n===`auto`||n===`scroll`)&&t.scrollHeight>t.clientHeight?t:e.getScrollElement(t.parentElement??void 0)}static updateScrollResize(t,n,r){let i=e.getScrollElement(n),a=i.clientHeight,o=i===e.getScrollElement()?0:i.getBoundingClientRect().top,s=t.clientY-o,c=s<r,l=s>a-r;c?i.scrollBy({behavior:`smooth`,top:s-r}):l&&i.scrollBy({behavior:`smooth`,top:r-(a-s)})}static pauseIframePointerEvents(e){document.querySelectorAll(`iframe`).forEach(t=>{t.style.pointerEvents=e?`none`:``})}static clone(e){return typeof e!=`object`||!e?e:e instanceof Array?[...e]:{...e}}static cloneDeep(t){let n=[`parentGrid`,`el`,`grid`,`subGrid`,`engine`],r=e.clone(t);for(let i in r)Object.prototype.hasOwnProperty.call(r,i)&&typeof r[i]==`object`&&i.substring(0,2)!==`__`&&!n.find(e=>e===i)&&(r[i]=e.cloneDeep(t[i]));return r}static cloneNode(e){let t=e.cloneNode(!0);return t.removeAttribute(`id`),t}static appendTo(t,n){let r;r=typeof n==`string`?e.getElement(n):n,r&&r.appendChild(t)}static addElStyles(e,t){if(t instanceof Object){let n=e.style;for(let e in t)Object.prototype.hasOwnProperty.call(t,e)&&(Array.isArray(t[e])?t[e].forEach(t=>{n[e]=t}):n[e]=t[e])}}static initEvent(e,t){let n={type:t.type},r={button:0,which:0,buttons:1,bubbles:!0,cancelable:!0,target:t.target?t.target:e.target},i=e;return[`altKey`,`ctrlKey`,`metaKey`,`shiftKey`].forEach(e=>n[e]=i[e]),[`pageX`,`pageY`,`clientX`,`clientY`,`screenX`,`screenY`].forEach(e=>n[e]=i[e]),{...n,...r}}static simulateMouseEvent(e,t,n){let r=e,i=new MouseEvent(t,{bubbles:!0,composed:!0,cancelable:!0,view:window,detail:1,screenX:e.screenX,screenY:e.screenY,clientX:e.clientX,clientY:e.clientY,ctrlKey:r.ctrlKey??!1,altKey:r.altKey??!1,shiftKey:r.shiftKey??!1,metaKey:r.metaKey??!1,button:0,relatedTarget:e.target});(n||e.target).dispatchEvent(i)}static getValuesFromTransformedElement(t){let n=document.createElement(`div`);e.addElStyles(n,{opacity:`0`,position:`fixed`,top:`0px`,left:`0px`,width:`1px`,height:`1px`,zIndex:`-999999`}),t.appendChild(n);let r=n.getBoundingClientRect();return t.removeChild(n),n.remove(),{xScale:1/r.width,yScale:1/r.height,xOffset:r.left,yOffset:r.top}}static swap(e,t,n){if(!e)return;let r=e,i=r[t];r[t]=r[n],r[n]=i}static canBeRotated(e){return!(!e||e.w===e.h||e.locked||e.noResize||e.grid?.opts.disableResize||e.minW&&e.minW===e.maxW||e.minH&&e.minH===e.maxH)}},t=class t{constructor(e={}){this.addedNodes=[],this.removedNodes=[],this.defaultColumn=12,this.column=e.column||this.defaultColumn,this.column>this.defaultColumn&&(this.defaultColumn=this.column),this.maxRow=e.maxRow??0,this._float=e.float??!1,this.nodes=e.nodes||[],this.onChange=e.onChange??(()=>{})}batchUpdate(e=!0,t=!0){return!!this.batchMode===e?this:(this.batchMode=e,e?(this._prevFloat=this._float,this._float=!0,this.cleanNodes(),this.nodes.some(e=>e._updating)||this.saveInitial()):(this._float=this._prevFloat??!1,delete this._prevFloat,t&&this._packNodes(),this._notify()),this)}_useEntireRowArea(e,t){return(!this.float||this.batchMode&&!this._prevFloat)&&!this._hasLocked&&(!e._moving||e._skipDown||t.y<=e.y)}_fixCollisions(t,n=t,r,i={}){if(this.sortNodes(-1),r||=this.collide(t,n),!r)return!1;if(t._moving&&!t._isExternal&&!i.nested&&!this.float&&this.swap(t,r))return!0;let a=n;!this._loading&&this._useEntireRowArea(t,n)&&(a={x:0,w:this.column,y:n.y,h:n.h},r=this.collide(t,a,i.skip));let o=!1,s={nested:!0,pack:!1},c=0;for(;r||=this.collide(t,a,i.skip);){if(c++>this.nodes.length*2)throw Error(`Infinite collide check`);let a;if(r.locked||this._loading||t._moving&&!t._skipDown&&n.y>t.y&&!this.float&&(!this.collide(r,{...r,y:t.y},t)||!this.collide(r,{...r,y:n.y-r.h},t))){t._skipDown=t._skipDown||n.y>t.y;let c={...n,y:r.y+r.h,...s};a=this._loading&&e.samePos(t,c)?!0:this.moveNode(t,c),(r.locked||this._loading)&&a?e.copyPos(n,t):!r.locked&&a&&i.pack&&(this._packNodes(),n.y=r.y+r.h,e.copyPos(t,n)),o||=a}else a=this.moveNode(r,{...r,y:n.y+n.h,skip:t,...s});if(!a)return o;r=void 0}return o}collide(t,n=t,r){let i=t._id,a=r?._id;return this.nodes.find(t=>t._id!==i&&t._id!==a&&e.isIntercepted(t,n))}collideAll(t,n=t,r){let i=t._id,a=r?._id;return this.nodes.filter(t=>t._id!==i&&t._id!==a&&e.isIntercepted(t,n))}directionCollideCoverage(e,t,n){if(!t.rect||!e._rect)return;let r=e._rect,i={...t.rect};i.y>r.y?(i.h=i.h+i.y-r.y,i.y=r.y):i.h=i.h+r.y-i.y,i.x>r.x?(i.w=i.w+i.x-r.x,i.x=r.x):i.w=i.w+r.x-i.x;let a,o=.5;for(let e of n){if(e.locked||!e._rect)continue;let t=e._rect,n=Number.MAX_VALUE,s=Number.MAX_VALUE;r.y<t.y?n=(i.y+i.h-t.y)/t.h:r.y+r.h>t.y+t.h&&(n=(t.y+t.h-i.y)/t.h),r.x<t.x?s=(i.x+i.w-t.x)/t.w:r.x+r.w>t.x+t.w&&(s=(t.x+t.w-i.x)/t.w);let c=Math.min(s,n);c>o&&(o=c,a=e)}return t.collide=a,a}cacheRects(e,t,n,r,i,a){return this.nodes.forEach(o=>o._rect={y:o.y*t+n,x:o.x*e+a,w:o.w*e-a-r,h:o.h*t-n-i}),this}swap(t,n){if(!n||n.locked||!t||t.locked)return!1;function r(){let e=n.x,r=n.y;return n.x=t.x,n.y=t.y,t.h==n.h?t.w==n.w?(t.x=e,t.y=r):(t.x=n.x+n.w,t.y=r):(t.x=e,t.y=n.y+n.h),t._dirty=n._dirty=!0,!0}let i;if(t.w===n.w&&t.h===n.h&&(t.x===n.x||t.y===n.y)&&(i=e.isTouching(t,n)))return r();if(i!==!1){if(t.w===n.w&&t.x===n.x&&(i||=e.isTouching(t,n))){if(n.y<t.y){let e=t;t=n,n=e}return r()}if(i!==!1){if(t.h===n.h&&t.y===n.y&&(i||=e.isTouching(t,n))){if(n.x<t.x){let e=t;t=n,n=e}return r()}return!1}}}isAreaEmpty(e,t,n,r){let i={x:e||0,y:t||0,w:n||1,h:r||1};return!this.collide(i)}compact(e=`compact`,t=!0){if(this.nodes.length===0)return this;t&&this.sortNodes();let n=this.batchMode;n||this.batchUpdate();let r=this._inColumnResize;r||(this._inColumnResize=!0);let i=this.nodes;return this.nodes=[],i.forEach((t,n,r)=>{let i;t.locked||(t.autoPosition=!0,e===`list`&&n&&(i=r[n-1])),this.addNode(t,!1,i)}),r||delete this._inColumnResize,n||this.batchUpdate(!1),this}set float(e){this._float!==e&&(this._float=e||!1,e||this._packNodes()._notify())}get float(){return this._float||!1}sortNodes(t=1){return this.nodes=e.sort(this.nodes,t),this}_packNodes(){return this.batchMode?this:(this.sortNodes(),this.float?this.nodes.forEach(e=>{if(e._updating||e._orig===void 0||e.y===e._orig.y)return;let t=e.y;for(;t>e._orig.y;)--t,this.collide(e,{x:e.x,y:t,w:e.w,h:e.h})||(e._dirty=!0,e.y=t)}):this.nodes.forEach((e,t)=>{if(!e.locked)for(;e.y>0;){let n=t===0?0:e.y-1;if(t!==0&&this.collide(e,{x:e.x,y:n,w:e.w,h:e.h}))break;e._dirty=e.y!==n,e.y=n}}),this)}prepareNode(n,r){n._id=n._id??t._idSeq++;let i=n.id;if(i){let e=1;for(;this.nodes.find(e=>e.id===n.id&&e!==n);)n.id=i+`_`+e++}(n.x===void 0||n.y===void 0||n.x===null||n.y===null)&&(n.autoPosition=!0);let a={x:0,y:0,w:1,h:1};return e.defaults(n,a),n.autoPosition||delete n.autoPosition,n.noResize||delete n.noResize,n.noMove||delete n.noMove,e.sanitizeMinMax(n),typeof n.x==`string`&&(n.x=Number(n.x)),typeof n.y==`string`&&(n.y=Number(n.y)),typeof n.w==`string`&&(n.w=Number(n.w)),typeof n.h==`string`&&(n.h=Number(n.h)),isNaN(n.x)&&(n.x=a.x,n.autoPosition=!0),isNaN(n.y)&&(n.y=a.y,n.autoPosition=!0),isNaN(n.w)&&(n.w=a.w),isNaN(n.h)&&(n.h=a.h),this.nodeBoundFix(n,r),n}nodeBoundFix(t,n){let r=t._orig||e.copyPos({},t);if(t.maxW&&(t.w=Math.min(t.w||1,t.maxW)),t.maxH&&(t.h=Math.min(t.h||1,t.maxH)),t.minW&&(t.w=Math.max(t.w||1,t.minW)),t.minH&&(t.h=Math.max(t.h||1,t.minH)),(t.x||0)+(t.w||1)>this.column&&this.column<this.defaultColumn&&!this._inColumnResize&&!this.skipCacheUpdate&&t._id!=null&&this.findCacheLayout(t,this.defaultColumn)===-1){let e={...t};e.autoPosition||e.x===void 0?(delete e.x,delete e.y):e.x=Math.min(this.defaultColumn-1,e.x),e.w=Math.min(this.defaultColumn,e.w||1),this.cacheOneLayout(e,this.defaultColumn)}return t.w>this.column?t.w=this.column:t.w<1&&(t.w=1),this.maxRow&&t.h>this.maxRow?t.h=this.maxRow:t.h<1&&(t.h=1),t.x<0&&(t.x=0),t.y<0&&(t.y=0),t.x+t.w>this.column&&(n?t.w=this.column-t.x:t.x=this.column-t.w),this.maxRow&&t.y+t.h>this.maxRow&&(n?t.h=this.maxRow-t.y:t.y=this.maxRow-t.h),e.samePos(t,r)||(t._dirty=!0),this}getDirtyNodes(t){return t?this.nodes.filter(t=>t._dirty&&t._orig&&!e.samePos(t,t._orig)):this.nodes.filter(e=>e._dirty)}_notify(e){if(this.batchMode||!this.onChange)return this;let t=(e||[]).concat(this.getDirtyNodes());return this.onChange(t),this}cleanNodes(){return this.batchMode||this.nodes.forEach(e=>{delete e._dirty,delete e._lastTried}),this}saveInitial(){return this.nodes.forEach(t=>{t._orig=e.copyPos({},t),delete t._dirty}),this._hasLocked=this.nodes.some(e=>e.locked),this}restoreInitial(){return this.nodes.forEach(t=>{t._orig&&!e.samePos(t,t._orig)&&(e.copyPos(t,t._orig),t._dirty=!0)}),this._notify(),this}findEmptyPosition(t,n=this.nodes,r=this.column,i){let a=i?i.y*r+(i.x+i.w):0,o=!1;for(let i=a;!o;++i){let a=i%r,s=Math.floor(i/r);if(a+t.w>r)continue;let c={x:a,y:s,w:t.w,h:t.h};n.find(t=>e.isIntercepted(c,t))||((t.x!==a||t.y!==s)&&(t._dirty=!0),t.x=a,t.y=s,delete t.autoPosition,o=!0)}return o}addNode(e,t=!1,n){let r=this.nodes.find(t=>t._id===e._id);if(r)return r;this._inColumnResize?this.nodeBoundFix(e):this.prepareNode(e),delete e._temporaryRemoved,delete e._removeDOM;let i=!1;return e.autoPosition&&this.findEmptyPosition(e,this.nodes,this.column,n)&&(delete e.autoPosition,i=!0),this.nodes.push(e),t&&this.addedNodes.push(e),i||this._fixCollisions(e),this.batchMode||this._packNodes()._notify(),e}removeNode(e,t=!0,n=!1){return this.nodes.find(t=>t._id===e._id)?(n&&this.removedNodes.push(e),t&&(e._removeDOM=!0),this.nodes=this.nodes.filter(t=>t._id!==e._id),e._isAboutToRemove||this._packNodes(),this._notify([e]),this):this}removeAll(e=!0,t=!0){if(delete this._layouts,!this.nodes.length)return this;e&&this.nodes.forEach(e=>e._removeDOM=!0);let n=this.nodes;return this.removedNodes=t?n:[],this.nodes=[],this._notify(n)}moveNodeCheck(n,r){if(!this.changedPosConstrain(n,r))return!1;if(r.pack=!0,!this.maxRow)return this.moveNode(n,r);let i,a=new t({column:this.column,float:this.float,nodes:this.nodes.map(e=>e._id===n._id?(i={...e},i):{...e})});if(!i)return!1;let o=a.moveNode(i,r)&&a.getRow()<=Math.max(this.getRow(),this.maxRow);if(!o&&!r.resizing&&r.collide&&!n._isExternal){let e=r.collide.el?.gridstackNode;if(e&&this.swap(n,e))return this._notify(),!0}return o?(a.nodes.filter(e=>e._dirty).forEach(t=>{let n=this.nodes.find(e=>e._id===t._id);n&&(e.copyPos(n,t),n._dirty=!0)}),this._notify(),!0):!1}willItFit(n){if(delete n._willFitPos,!this.maxRow)return!0;let r=new t({column:this.column,float:this.float,nodes:this.nodes.map(e=>({...e}))}),i={...n};return this.cleanupNode(i),delete i.el,delete i._id,delete i.content,delete i.grid,r.addNode(i),r.getRow()<=this.maxRow&&(n._willFitPos=e.copyPos({},i),!0)}changedPosConstrain(e,t){return t.w=t.w||e.w,t.h=t.h||e.h,e.x!==t.x||e.y!==t.y||(e.maxW&&(t.w=Math.min(t.w,e.maxW)),e.maxH&&(t.h=Math.min(t.h,e.maxH)),e.minW&&(t.w=Math.max(t.w,e.minW)),e.minH&&(t.h=Math.max(t.h,e.minH)),e.w!==t.w||e.h!==t.h)}moveNode(t,n){if(!t||!n)return!1;let r=!1;n.pack===void 0&&!this.batchMode&&(r=n.pack=!0),typeof n.x!=`number`&&(n.x=t.x),typeof n.y!=`number`&&(n.y=t.y),typeof n.w!=`number`&&(n.w=t.w),typeof n.h!=`number`&&(n.h=t.h);let i=t.w!==n.w||t.h!==n.h,a=e.copyPos({},t,!0);if(e.copyPos(a,n),this.nodeBoundFix(a,i),e.copyPos(n,a),!n.forceCollide&&e.samePos(t,n))return!1;let o=e.copyPos({},t),s=this.collideAll(t,a,n.skip),c=!0;if(s.length){let i=t._moving&&!n.nested,o=i?this.directionCollideCoverage(t,n,s):s[0];if(i&&o&&t.grid?.opts?.subGridDynamic&&!t.grid._isTemp){let r=e.areaIntercept(n.rect,o._rect),i=e.area(n.rect),a=e.area(o._rect);r/(i<a?i:a)>.8&&(o.grid.makeSubGrid(o.el,void 0,t),o=void 0)}o?c=!this._fixCollisions(t,a,o,n):(c=!1,r&&delete n.pack)}return c&&!e.samePos(t,a)&&(t._dirty=!0,e.copyPos(t,a)),n.pack&&this._packNodes()._notify(),!e.samePos(t,o)}getRow(){return this.nodes.reduce((e,t)=>Math.max(e,t.y+t.h),0)}beginUpdate(e){return e._updating||(e._updating=!0,delete e._skipDown,this.batchMode||this.saveInitial()),this}endUpdate(){let e=this.nodes.find(e=>e._updating);return e&&(delete e._updating,delete e._skipDown),this}save(t=!0,n,r){let i=this._layouts?.length||0,a;i&&(r?r!==this.column&&(a=this._layouts[r]):this.column!==i-1&&(a=this._layouts[i-1]));let o=[];return this.sortNodes(),this.nodes.forEach(r=>{let i=a?.find(e=>e._id===r._id),s={...r,...i||{}};e.removeInternalForSave(s,!t),n&&n(r,s),o.push(s)}),o}layoutsNodesChange(e){return!this._layouts||this._inColumnResize||this._layouts.forEach((t,n)=>{if(t&&n!==this.column){if(n<this.column)this._layouts[n]=void 0;else{let r=n/this.column;e.forEach(e=>{if(!e._orig)return;let n=t.find(t=>t._id===e._id);n&&(n.y>=0&&e.y!==e._orig.y&&(n.y+=e.y-e._orig.y,n.y<0&&(n.y=0)),e.x!==e._orig.x&&(n.x=Math.round(e.x*r),n.x<0&&(n.x=0)),e.w!==e._orig.w&&(n.w=Math.round(e.w*r),n.w<1&&(n.w=1)))})}}}),this}columnChanged(t,n,r=`moveScale`){if(!this.nodes.length||!n||t===n)return this;let i=r===`compact`||r===`list`;i&&this.sortNodes(1),n<t&&this.cacheLayout(this.nodes,t),this.batchUpdate();let a=[],o=i?this.nodes:e.sort(this.nodes,-1);if(n>t&&this._layouts){let e=this._layouts[n]||[],r=this._layouts.length-1;!e.length&&t!==r&&this._layouts[r]?.length&&(t=r,this._layouts[r].forEach(e=>{let t=o.find(t=>t._id===e._id);t&&(!i&&!e.autoPosition&&(t.x=e.x??t.x,t.y=e.y??t.y),t.w=e.w??t.w,(e.x==null||e.y===void 0)&&(t.autoPosition=!0))})),e.forEach(e=>{let t=o.findIndex(t=>t._id===e._id);if(t!==-1){let n=o[t];if(i){n.w=e.w;return}(e.autoPosition||isNaN(e.x)||isNaN(e.y))&&this.findEmptyPosition(e,a),e.autoPosition||(n.x=e.x??n.x,n.y=e.y??n.y,n.w=e.w??n.w,a.push(n)),o.splice(t,1)}})}if(i)this.compact(r,!1);else{if(o.length){if(typeof r==`function`)r(n,t,a,o);else{let e=i||r===`none`?1:n/t,s=r===`move`||r===`moveScale`,c=r===`scale`||r===`moveScale`;o.forEach(r=>{r.x=n===1?0:s?Math.round(r.x*e):Math.min(r.x,n-1),r.w=n===1||t===1?1:c?Math.round(r.w*e)||1:Math.min(r.w,n),a.push(r)}),o=[]}}a=e.sort(a,-1),this._inColumnResize=!0,this.nodes=[],a.forEach(e=>{this.addNode(e,!1),delete e._orig})}return this.nodes.forEach(e=>delete e._orig),this.batchUpdate(!1,!i),delete this._inColumnResize,this}cacheLayout(e,n,r=!1){let i=[];return e.forEach((e,n)=>{e._id===void 0&&(e._id=(e.id?this.nodes.find(t=>t.id===e.id):void 0)?._id??t._idSeq++),i[n]={x:e.x,y:e.y,w:e.w,_id:e._id}}),this._layouts=r?[]:this._layouts||[],this._layouts[n]=i,this}cacheOneLayout(e,n){e._id=e._id??t._idSeq++;let r={x:e.x,y:e.y,w:e.w,_id:e._id};(e.autoPosition||e.x===void 0)&&(delete r.x,delete r.y,e.autoPosition&&(r.autoPosition=!0)),this._layouts=this._layouts||[],this._layouts[n]=this._layouts[n]||[];let i=this.findCacheLayout(e,n);return i===-1?this._layouts[n].push(r):this._layouts[n][i]=r,this}findCacheLayout(e,t){return this._layouts?.[t]?.findIndex(t=>t._id===e._id)??-1}removeNodeFromLayoutCache(e){if(this._layouts)for(let t=0;t<this._layouts.length;t++){let n=this.findCacheLayout(e,t);n!==-1&&this._layouts[t].splice(n,1)}}cleanupNode(e){let t=e;for(let e in t)e[0]===`_`&&e!==`_id`&&delete t[e];return this}};t._idSeq=0;var n={alwaysShowResizeHandle:`mobile`,animate:!0,auto:!0,cellHeight:`auto`,cellHeightThrottle:100,cellHeightUnit:`px`,column:12,draggable:{handle:`.grid-stack-item-content`,appendTo:`body`,scroll:!0},handle:`.grid-stack-item-content`,itemClass:`grid-stack-item`,margin:10,marginUnit:`px`,maxRow:0,minRow:0,placeholderClass:`grid-stack-placeholder`,placeholderText:``,removableOptions:{accept:`grid-stack-item`,decline:`grid-stack-non-removable`},resizable:{handles:`se`},rtl:`auto`},r=class{},i=typeof window<`u`&&typeof document<`u`&&(`ontouchstart`in document||`ontouchstart`in window||window.DocumentTouch&&document instanceof window.DocumentTouch||navigator.maxTouchPoints>0&&window.matchMedia(`(any-pointer: coarse)`).matches||navigator.msMaxTouchPoints>0),a=300,o=10,s=class{};function c(e){e.preventDefault()}function l(){document.addEventListener(`contextmenu`,c,!0),document.addEventListener(`selectstart`,c,!0)}function u(){document.removeEventListener(`contextmenu`,c,!0),document.removeEventListener(`selectstart`,c,!0)}function d(e,t,n){e.removeEventListener(`touchmove`,t),e.removeEventListener(`touchend`,n),e.removeEventListener(`touchcancel`,n),f()}function f(){s.touchDelayTimer&&(window.clearTimeout(s.touchDelayTimer),delete s.touchDelayTimer),u()}function p(t,n){t.touches.length>1||(t.cancelable&&t.preventDefault(),e.simulateMouseEvent(t.changedTouches[0],n))}function m(t,n){t.cancelable&&t.preventDefault(),e.simulateMouseEvent(t,n)}function h(e){if(s.touchHandled)return;let t=e.currentTarget,n=e.touches[0].clientX,r=e.touches[0].clientY,i=()=>d(t,c,i),c=e=>{let t=e.touches[0];Math.abs(t.clientX-n)+Math.abs(t.clientY-r)>o&&i()};t.addEventListener(`touchmove`,c,{passive:!0}),t.addEventListener(`touchend`,i,{passive:!0}),t.addEventListener(`touchcancel`,i,{passive:!0}),s.touchDelayTimer=window.setTimeout(()=>{d(t,c,i),s.touchHandled=!0,s.wasDelayed=!0,l(),p(e,`mousedown`),delete s.wasDelayed},a)}function g(e){s.touchHandled&&p(e,`mousemove`)}function _(e){if(!s.touchHandled)return;u(),s.pointerLeaveTimeout&&(window.clearTimeout(s.pointerLeaveTimeout),delete s.pointerLeaveTimeout);let t=!!r.dragElement;p(e,`mouseup`),!t&&e.type!==`touchcancel`&&p(e,`click`),s.touchHandled=!1}function v(e){e.pointerType!==`mouse`&&e.target.releasePointerCapture(e.pointerId)}function y(e){r.dragElement&&e.pointerType!==`mouse`&&m(e,`mouseenter`)}function b(e){r.dragElement&&e.pointerType!==`mouse`&&(s.pointerLeaveTimeout=window.setTimeout(()=>{delete s.pointerLeaveTimeout,m(e,`mouseleave`)},10))}var x=class e{constructor(e,t,n){this.host=e,this.dir=t,this.option=n,this._mouseDown=this._mouseDown.bind(this),this._mouseMove=this._mouseMove.bind(this),this._mouseUp=this._mouseUp.bind(this),this._keyEvent=this._keyEvent.bind(this),this._init()}_init(){if(this.option.element)try{this.el=this.option.element instanceof HTMLElement?this.option.element:this.host.querySelector(this.option.element)}catch(e){this.option.element=void 0,console.error(`Query for resizeable handle failed, falling back`,e)}return this.el||(this.el=document.createElement(`div`),this.host.appendChild(this.el)),this.el.classList.add(`ui-resizable-handle`),this.el.classList.add(`${e.prefix}${this.dir}`),this.el.addEventListener(`mousedown`,this._mouseDown),i&&(this.el.addEventListener(`touchstart`,h),this.el.addEventListener(`pointerdown`,v)),this}destroy(){return this.mouseDownEvent&&this._mouseUp(this.mouseDownEvent),f(),this.el.removeEventListener(`mousedown`,this._mouseDown),i&&(this.el.removeEventListener(`touchstart`,h),this.el.removeEventListener(`pointerdown`,v)),this.option.element||this.host.removeChild(this.el),this}_mouseDown(e){this.mouseDownEvent=e,document.addEventListener(`mousemove`,this._mouseMove,{capture:!0,passive:!0}),document.addEventListener(`mouseup`,this._mouseUp,!0),i&&(this.el.addEventListener(`touchmove`,g),this.el.addEventListener(`touchend`,_),this.el.addEventListener(`touchcancel`,_)),s.wasDelayed&&this.el.classList.add(`ui-resizable-armed`),e.stopPropagation(),e.preventDefault()}_mouseMove(e){let t=this.mouseDownEvent;this.moving?this._triggerEvent(`move`,e):Math.abs(e.x-t.x)+Math.abs(e.y-t.y)>2&&(this.moving=!0,this.el.classList.remove(`ui-resizable-armed`),this._triggerEvent(`start`,this.mouseDownEvent),this._triggerEvent(`move`,e),document.addEventListener(`keydown`,this._keyEvent)),e.stopPropagation()}_mouseUp(e){this.moving&&(this._triggerEvent(`stop`,e),document.removeEventListener(`keydown`,this._keyEvent)),this.el.classList.remove(`ui-resizable-armed`),document.removeEventListener(`mousemove`,this._mouseMove,!0),document.removeEventListener(`mouseup`,this._mouseUp,!0),i&&(this.el.removeEventListener(`touchmove`,g),this.el.removeEventListener(`touchend`,_),this.el.removeEventListener(`touchcancel`,_)),delete this.moving,delete this.mouseDownEvent,e.stopPropagation(),e.preventDefault()}_keyEvent(e){e.key===`Escape`&&(this.host.gridstackNode?.grid?.engine.restoreInitial(),this._mouseUp(this.mouseDownEvent))}_triggerEvent(e,t){let n=this.option;return n[e]&&n[e](t),this}};x.prefix=`ui-resizable-`;var S=class{constructor(){this._eventRegister={}}get disabled(){return this._disabled}on(e,t){this._eventRegister[e]=t}off(e){delete this._eventRegister[e]}enable(){this._disabled=!1}disable(){this._disabled=!0}destroy(){this._eventRegister={}}triggerEvent(e,t){if(!this.disabled&&this._eventRegister[e])return this._eventRegister[e](t)}},C=class t extends S{constructor(e,t={}){super(),this.el=e,this.option=t,this.rectScale={x:1,y:1},this._ui=()=>{let e=this.el.parentElement.getBoundingClientRect(),t={width:this.originalRect.width,height:this.originalRect.height+this.scrolled,left:this.originalRect.left,right:this.originalRect.right,top:this.originalRect.top-this.scrolled},n=this.temporalRect||t;return{position:{left:this.option.rtl?(e.right-n.right)*this.rectScale.x:(n.left-e.left)*this.rectScale.x,top:(n.top-e.top)*this.rectScale.y},size:{width:n.width*this.rectScale.x,height:n.height*this.rectScale.y}}},this._mouseOver=this._mouseOver.bind(this),this._mouseOut=this._mouseOut.bind(this),this.enable(),this._setupAutoHide(!!this.option.autoHide),this._setupHandlers()}on(e,t){super.on(e,t)}off(e){super.off(e)}enable(){super.enable(),this.el.classList.remove(`ui-resizable-disabled`),this._setupAutoHide(!!this.option.autoHide)}disable(){super.disable(),this.el.classList.add(`ui-resizable-disabled`),this._setupAutoHide(!1)}destroy(){this._removeHandlers(),this._setupAutoHide(!1),delete this.el,super.destroy()}updateOption(e){let t=e.handles&&e.handles!==this.option.handles,n=e.autoHide&&e.autoHide!==this.option.autoHide;return Object.assign(this.option,e),t&&(this._removeHandlers(),this._setupHandlers()),n&&this._setupAutoHide(!!this.option.autoHide),this}_setupAutoHide(e){return e?(this.el.classList.add(`ui-resizable-autohide`),this.el.addEventListener(`mouseover`,this._mouseOver),this.el.addEventListener(`mouseout`,this._mouseOut)):(this.el.classList.remove(`ui-resizable-autohide`),this.el.removeEventListener(`mouseover`,this._mouseOver),this.el.removeEventListener(`mouseout`,this._mouseOut),r.overResizeElement===this&&delete r.overResizeElement),this}_mouseOver(e){r.overResizeElement||r.dragElement||(r.overResizeElement=this,this.el.classList.remove(`ui-resizable-autohide`))}_mouseOut(e){r.overResizeElement===this&&(delete r.overResizeElement,this.el.classList.add(`ui-resizable-autohide`))}_setupHandlers(){return this.handlers=(this.option.handles??`se`).split(`,`).map(e=>e.trim()).map(e=>new x(this.el,e,{element:this.option.element,start:e=>this._resizeStart(e),stop:e=>this._resizeStop(e),move:t=>this._resizing(t,e)})),this}_resizeStart(t){this.sizeToContent=e.shouldSizeToContent(this.el.gridstackNode,!0),this.originalRect=this.el.getBoundingClientRect(),this.scrollEl=e.getScrollElement(this.el),this.scrollY=this.scrollEl.scrollTop,this.scrolled=0,this.startEvent=t,e.pauseIframePointerEvents(!0),this._setupHelper(),this._applyChange();let n=e.initEvent(t,{type:`resizestart`,target:this.el});return this.option.start&&this.option.start(n,this._ui()),this.el.classList.add(`ui-resizable-resizing`),this.triggerEvent(`resizestart`,n),this}_resizing(t,n){this.scrolled=this.scrollEl.scrollTop-this.scrollY,this.temporalRect=this._getChange(t,n),this._applyChange();let r=e.initEvent(t,{type:`resize`,target:this.el});return r.resizeDir=n,r.hasMovedX=this.option.rtl?n.includes(`e`):n.includes(`w`),r.hasMovedY=n.includes(`n`),this.option.resize&&this.option.resize(r,this._ui()),this.triggerEvent(`resize`,r),this}_resizeStop(t){let n=e.initEvent(t,{type:`resizestop`,target:this.el});return e.pauseIframePointerEvents(!1),this._cleanHelper(),this.option.stop&&this.option.stop(n),this.el.classList.remove(`ui-resizable-resizing`),this.triggerEvent(`resizestop`,n),delete this.startEvent,delete this.originalRect,delete this.temporalRect,delete this.scrollY,delete this.scrolled,this}_setupHelper(){this.elOriginStyleVal=t._originStyleProp.map(e=>this.el.style[e]);let n=this.el.parentElement;this.parentOriginStylePosition=n.style.position;let r=e.getValuesFromTransformedElement(n);return this.rectScale={x:r.xScale,y:r.yScale},getComputedStyle(n).position.match(/static/)&&(n.style.position=`relative`),this.el.style.position=`absolute`,this.el.style.opacity=`0.8`,this}_cleanHelper(){return t._originStyleProp.forEach((e,t)=>{this.el.style[e]=this.elOriginStyleVal[t]||null}),this.el.parentElement.style.position=this.parentOriginStylePosition||null,this}_getChange(e,t){let n=this.startEvent,r={width:this.originalRect.width,height:this.originalRect.height+this.scrolled,left:this.originalRect.left,right:this.originalRect.right,top:this.originalRect.top-this.scrolled},i=e.clientX-n.clientX,a=this.sizeToContent?0:e.clientY-n.clientY,o=!1,s=!1,c=this.option.rtl;!c&&t.indexOf(`e`)>-1?r.width+=i:c&&t.indexOf(`w`)>-1?r.width-=i:!c&&t.indexOf(`w`)>-1?(r.width-=i,r.left+=i,o=!0):c&&t.indexOf(`e`)>-1&&(r.width+=i,r.right+=i,o=!0),t.indexOf(`s`)>-1?r.height+=a:t.indexOf(`n`)>-1&&(r.height-=a,r.top+=a,s=!0);let l=this._constrainSize(r.width,r.height,o,s);return Math.round(r.width)!==Math.round(l.width)&&(!c&&t.indexOf(`w`)>-1?r.left+=r.width-l.width:c&&t.indexOf(`e`)>-1&&(r.right-=r.width-l.width),r.width=l.width),Math.round(r.height)!==Math.round(l.height)&&(t.indexOf(`n`)>-1&&(r.top+=r.height-l.height),r.height=l.height),r}_constrainSize(e,t,n,r){let i=this.option,a=(n?i.maxWidthMoveLeft:i.maxWidth)||2**53-1,o=(i.minWidth??0)/this.rectScale.x||e,s=(r?i.maxHeightMoveUp:i.maxHeight)||2**53-1,c=(i.minHeight??0)/this.rectScale.y||t;return{width:Math.min(a,Math.max(o,e)),height:Math.min(s,Math.max(c,t))}}_applyChange(){let e={left:0,right:0,top:0,width:0,height:0};if(this.el.style.position===`absolute`){let{left:t,right:n,top:r}=this.el.parentElement.getBoundingClientRect();e={left:t,right:n,top:r,width:0,height:0}}if(!this.temporalRect)return this;let t=e;return Object.entries(this.temporalRect).forEach(([n,r])=>{if(this.option.rtl?n===`left`:n===`right`)return;let i=n===`width`||n===`left`||n===`right`?this.rectScale.x:n===`height`||n===`top`?this.rectScale.y:1,a;a=n===`right`?(e.right-r)*this.rectScale.x+`px`:(r-t[n])*i+`px`,this.el.style[n]=a}),this}_removeHandlers(){return this.handlers.forEach(e=>e.destroy()),delete this.handlers,this}};C._originStyleProp=[`width`,`height`,`position`,`left`,`right`,`top`,`opacity`,`zIndex`];var w=`input,textarea,button,select,option,[contenteditable="true"],.ui-resizable-handle`,T=class t extends S{constructor(e,t={}){super(),this.el=e,this.option=t,this.dragTransform={xScale:1,yScale:1,xOffset:0,yOffset:0},this._autoScrollTick=()=>{let e=this.helper,t=this._autoScrollContainer;if(!e||!t){this._stopScrolling();return}let n=this._getClipping(e,t);if(n===0){this._stopScrolling();return}if(!this._autoScrollMaxSpeed){let e=window.innerHeight||document.documentElement.clientHeight;this._autoScrollMaxSpeed=Math.max(e/150,4)}let r=Math.min(Math.abs(n)*.5,this._autoScrollMaxSpeed),i=n>0?r:-r,a=t.scrollTop;if(t.scrollTop+=i,t.scrollTop===a){this._stopScrolling();return}this.dragging&&this.lastDrag&&(this._dragFollow(this.lastDrag),this._callDrag(this.lastDrag)),this._autoScrollAnimId=requestAnimationFrame(this._autoScrollTick)};let n=t?.handle?.substring(1),r=e.gridstackNode;this.dragEls=!n||e.classList.contains(n)?[e]:r?.subGrid?[e.querySelector(t.handle)||e]:this.getAllHandles(),this.dragEls.length===0&&(this.dragEls=[e]),this._mouseDown=this._mouseDown.bind(this),this._mouseMove=this._mouseMove.bind(this),this._mouseUp=this._mouseUp.bind(this),this._keyEvent=this._keyEvent.bind(this),this.enable()}getAllHandles(){return Array.from(this.el.querySelectorAll(this.option.handle)).filter(e=>{if(!(e instanceof HTMLElement))return!1;let t=e.closest(`.grid-stack-item`);return t===this.el||!t})}on(e,t){super.on(e,t)}off(e){super.off(e)}enable(){this.disabled!==!1&&(super.enable(),this.dragEls.forEach(e=>{e.addEventListener(`mousedown`,this._mouseDown),i&&(e.addEventListener(`touchstart`,h),e.addEventListener(`pointerdown`,v))}),this.el.classList.remove(`ui-draggable-disabled`))}disable(e=!1){this.disabled!==!0&&(super.disable(),f(),this.dragEls.forEach(e=>{e.removeEventListener(`mousedown`,this._mouseDown),i&&(e.removeEventListener(`touchstart`,h),e.removeEventListener(`pointerdown`,v))}),e||this.el.classList.add(`ui-draggable-disabled`))}destroy(){this.dragTimeout&&window.clearTimeout(this.dragTimeout),delete this.dragTimeout,this.mouseDownEvent&&this._mouseUp(this.mouseDownEvent),this.disable(!0),delete this.el,delete this.option,super.destroy()}updateOption(e){return Object.assign(this.option,e),this}refreshHandles(){let e=this.disabled;e||this.disable(!0);let t=this.option?.handle?.substring(1),n=this.el.gridstackNode;this.dragEls=!t||this.el.classList.contains(t)?[this.el]:n?.subGrid?[this.el.querySelector(this.option.handle)||this.el]:this.getAllHandles(),this.dragEls.length===0&&(this.dragEls=[this.el]),e||this.enable()}_mouseDown(e){return e.isTrusted&&(s.touchHandled&&=!1,r.mouseHandled&&e.timeStamp!==r.mouseHandledTimeStamp&&delete r.mouseHandled),r.mouseHandled||e.button!==0||!this.dragEls.find(t=>t===e.target)&&e.target.closest(w)||this.option.cancel&&e.target.closest(this.option.cancel)?!0:(this.mouseDownEvent=e,delete this.dragging,delete r.dragElement,delete r.dropElement,delete this._autoScrollMaxSpeed,delete this._autoScrollContainer,document.addEventListener(`mousemove`,this._mouseMove,{capture:!0,passive:!0}),document.addEventListener(`mouseup`,this._mouseUp,!0),i&&e.currentTarget&&(e.currentTarget.addEventListener(`touchmove`,g),e.currentTarget.addEventListener(`touchend`,_),e.currentTarget.addEventListener(`touchcancel`,_)),s.wasDelayed&&this.el.classList.add(`ui-draggable-armed`),e.preventDefault(),document.activeElement&&document.activeElement.blur(),r.mouseHandled=!0,r.mouseHandledTimeStamp=e.timeStamp,!0)}_callDrag(t){if(!this.dragging)return;let n=e.initEvent(t,{target:this.el,type:`drag`});this.option.drag&&this.option.drag(n,this.ui()),this.triggerEvent(`drag`,n)}_mouseMove(t){let n=this.mouseDownEvent;if(this.lastDrag=t,this.dragging){if(this._dragFollow(t),r.pauseDrag){let e=Number.isInteger(r.pauseDrag)?r.pauseDrag:100;this.dragTimeout&&window.clearTimeout(this.dragTimeout),this.dragTimeout=window.setTimeout(()=>this._callDrag(t),e)}else this._callDrag(t)}else if(Math.abs(t.x-n.x)+Math.abs(t.y-n.y)>3){this.dragging=!0,e.pauseIframePointerEvents(!0),this.el.classList.remove(`ui-draggable-armed`),r.dragElement=this;let n=this.el.gridstackNode?.grid;n?r.dropElement=n.el.ddElement?.ddDroppable:delete r.dropElement,this.helper=this._createHelper(),this._setupHelperContainmentStyle(),this.dragTransform=e.getValuesFromTransformedElement(this.helperContainment),this.dragOffset=this._getDragOffset(t,this.el,this.helperContainment),this._setupHelperStyle(t);let i=e.initEvent(t,{target:this.el,type:`dragstart`});this.option.start&&this.option.start(i,this.ui()),this.triggerEvent(`dragstart`,i),document.addEventListener(`keydown`,this._keyEvent)}return!0}_mouseUp(t){if(this._stopScrolling(),this.el.classList.remove(`ui-draggable-armed`),document.removeEventListener(`mousemove`,this._mouseMove,!0),document.removeEventListener(`mouseup`,this._mouseUp,!0),i&&t.currentTarget&&(t.currentTarget.removeEventListener(`touchmove`,g,!0),t.currentTarget.removeEventListener(`touchend`,_,!0),t.currentTarget.removeEventListener(`touchcancel`,_,!0)),this.dragging){delete this.dragging,e.pauseIframePointerEvents(!1),delete this.el.gridstackNode?._origRotate,document.removeEventListener(`keydown`,this._keyEvent),r.dropElement?.el===this.el.parentElement&&delete r.dropElement,this.helperContainment.style.position=this.parentOriginStylePosition||null,this.helper&&this.helper!==this.el&&this.helper.remove(),this._removeHelperStyle();let n=e.initEvent(t,{target:this.el,type:`dragstop`});this.option.stop&&this.option.stop(n),this.triggerEvent(`dragstop`,n),r.dropElement&&r.dropElement.drop(t)}delete this.helper,delete this.mouseDownEvent,delete r.dragElement,delete r.dropElement,delete r.mouseHandled,delete r.mouseHandledTimeStamp,t.preventDefault()}_keyEvent(t){let n=this.el.gridstackNode,i=n?.grid||r.dropElement?.el?.gridstack;if(t.key===`Escape`)n&&n._origRotate&&(n._orig=n._origRotate,delete n._origRotate),i?.cancelDrag(),this._mouseUp(this.mouseDownEvent);else if(n&&i&&(t.key===`r`||t.key===`R`)){if(!e.canBeRotated(n))return;n._origRotate=n._origRotate||{...n._orig},delete n._moving,i.setAnimation(!1).rotate(n.el,{top:-this.dragOffset.offsetTop,left:-this.dragOffset.offsetX}).setAnimation(),n._moving=!0,this.dragOffset=this._getDragOffset(this.lastDrag,n.el,this.helperContainment),this.helper.style.width=this.dragOffset.width+`px`,this.helper.style.height=this.dragOffset.height+`px`,e.swap(n._orig,`w`,`h`),delete n._rect,this._mouseMove(this.lastDrag)}}_createHelper(){let n=this.el;return typeof this.option.helper==`function`?n=this.option.helper(this.el):this.option.helper===`clone`&&(n=e.cloneNode(this.el)),n.parentElement||e.appendTo(n,this.option.appendTo===`parent`?this.el.parentElement:this.option.appendTo??`body`),this.dragElementOriginStyle=t.originStyleProp.map(e=>this.el.style[e]),n}_setupHelperStyle(e){this.helper.classList.add(`ui-draggable-dragging`),this.el.gridstackNode?.grid?.el.classList.add(`grid-stack-dragging`);let t=this.helper.style;return t.pointerEvents=`none`,t.width=this.dragOffset.width+`px`,t.height=this.dragOffset.height+`px`,t.willChange=`left, right, top`,t.position=`fixed`,this._dragFollow(e),t.transition=`none`,setTimeout(()=>{this.helper&&(t.transition=null)},0),this}_removeHelperStyle(){if(this.helper.classList.remove(`ui-draggable-dragging`),(this.el._gridstackNodeOrig||this.el.gridstackNode)?.grid?.el.classList.remove(`grid-stack-dragging`),!this.helper?.gridstackNode?._isAboutToRemove&&this.dragElementOriginStyle){let e=this.helper,n=this.dragElementOriginStyle,r=t.originStyleProp.indexOf(`transition`),i=n[r]||null;e.style.transition=n[r]=`none`;let a=e.style;t.originStyleProp.forEach((e,t)=>a[e]=n[t]||null),setTimeout(()=>e.style.transition=i||``,50)}return delete this.dragElementOriginStyle,this}_dragFollow(e){let t=this.helper.style,n=this.dragOffset;this.option.rtl?(t.right=(window.innerWidth-e.clientX+n.offsetX)*this.dragTransform.xScale+`px`,t.left&&=``):(t.left=(e.clientX+n.offsetX)*this.dragTransform.xScale+`px`,t.right&&=``),t.top=(e.clientY+n.offsetTop)*this.dragTransform.yScale+`px`}_setupHelperContainmentStyle(){return this.helperContainment=this.helper.parentElement,this.helper.style.position!==`fixed`&&(this.parentOriginStylePosition=this.helperContainment.style.position,getComputedStyle(this.helperContainment).position.match(/static/)&&(this.helperContainment.style.position=`relative`)),this}_getDragOffset(e,t,n){let r=0,i=0;n&&(r=this.dragTransform.xOffset,i=this.dragTransform.yOffset);let a=t.getBoundingClientRect(),o=this.option.rtl?a.right:a.left,s=this.option.rtl?e.clientX-a.right+r:-e.clientX+a.left-r;return{x:o,top:a.top,offsetX:s,offsetTop:-e.clientY+a.top-i,width:a.width*this.dragTransform.xScale,height:a.height*this.dragTransform.yScale}}updateScrollPosition(t){this._autoScrollContainer=e.getScrollElement(t),this._getClipping(this.helper,this._autoScrollContainer)===0?this._stopScrolling():this._autoScrollAnimId||=requestAnimationFrame(this._autoScrollTick)}_getClipping(e,t){let n=e.getBoundingClientRect(),r=t.getBoundingClientRect(),i=window.innerHeight||document.documentElement.clientHeight;if(n.bottom<r.top||n.top>r.bottom)return 0;let a=n.bottom-Math.min(r.bottom,i),o=n.top-Math.max(r.top,0);return o<0?o:a>0?a:0}_stopScrolling(){this._autoScrollAnimId&&(cancelAnimationFrame(this._autoScrollAnimId),delete this._autoScrollAnimId)}ui(){let e=this.el.parentElement.getBoundingClientRect(),t=this.helper.getBoundingClientRect(),n=this.option.rtl?(e.right-t.right)*this.dragTransform.xScale:(t.left-e.left)*this.dragTransform.xScale;return{position:{top:(t.top-e.top)*this.dragTransform.yScale,left:n}}}};T.originStyleProp=[`width`,`height`,`transform`,`transform-origin`,`transition`,`pointerEvents`,`position`,`left`,`right`,`top`,`minWidth`,`willChange`];var E=class extends S{constructor(e,t={}){super(),this.el=e,this.option=t,this._mouseEnter=this._mouseEnter.bind(this),this._mouseLeave=this._mouseLeave.bind(this),this.eventEl=this.el.closest(`.grid-stack-item`)||this.el,this.enable(),this._setupAccept()}on(e,t){super.on(e,t)}off(e){super.off(e)}enable(){this.disabled!==!1&&(super.enable(),this.el.classList.add(`ui-droppable`),this.el.classList.remove(`ui-droppable-disabled`),this.eventEl.addEventListener(`mouseenter`,this._mouseEnter),this.eventEl.addEventListener(`mouseleave`,this._mouseLeave),i&&(this.eventEl.addEventListener(`pointerenter`,y),this.eventEl.addEventListener(`pointerleave`,b)))}disable(e=!1){this.disabled!==!0&&(super.disable(),this.el.classList.remove(`ui-droppable`),e||this.el.classList.add(`ui-droppable-disabled`),this.eventEl.removeEventListener(`mouseenter`,this._mouseEnter),this.eventEl.removeEventListener(`mouseleave`,this._mouseLeave),i&&(this.eventEl.removeEventListener(`pointerenter`,y),this.eventEl.removeEventListener(`pointerleave`,b)))}destroy(){this.disable(!0),this.el.classList.remove(`ui-droppable`),this.el.classList.remove(`ui-droppable-disabled`),super.destroy()}updateOption(e){return Object.assign(this.option,e),this._setupAccept(),this}_mouseEnter(t){if(!r.dragElement||s.touchHandled&&t.isTrusted||!this._canDrop(r.dragElement.el))return;t.preventDefault(),t.stopPropagation(),r.dragElement._stopScrolling(),r.dropElement&&r.dropElement!==this&&r.dropElement._mouseLeave(t,!0),r.dropElement=this;let n=e.initEvent(t,{target:this.el,type:`dropover`});this.option.over&&this.option.over(n,this._ui(r.dragElement)),this.triggerEvent(`dropover`,n),this.el.classList.add(`ui-droppable-over`)}_mouseLeave(t,n=!1){if(!r.dragElement||r.dropElement!==this)return;t.preventDefault(),t.stopPropagation(),n&&r.dragElement._stopScrolling();let i=e.initEvent(t,{target:this.el,type:`dropout`});if(this.option.out&&this.option.out(i,this._ui(r.dragElement)),this.triggerEvent(`dropout`,i),r.dropElement===this&&(delete r.dropElement,!n)){let e,n=this.el.parentElement;for(;!e&&n;)e=n.ddElement?.ddDroppable,n=n.parentElement;e&&e._mouseEnter(t)}}drop(t){t.preventDefault();let n=e.initEvent(t,{target:this.el,type:`drop`});this.option.drop&&this.option.drop(n,this._ui(r.dragElement)),this.triggerEvent(`drop`,n)}_canDrop(e){return e&&(!this.accept||this.accept(e))}_setupAccept(){return this.option.accept&&(this.accept=typeof this.option.accept==`string`?e=>e.classList.contains(this.option.accept)||e.matches(this.option.accept):this.option.accept),this}_ui(e){return{draggable:e.el,...e.ui()}}},D=class e{static init(t){return t.ddElement||=new e(t),t.ddElement}constructor(e){this.el=e}on(e,t){return this.ddDraggable&&[`drag`,`dragstart`,`dragstop`].indexOf(e)>-1?this.ddDraggable.on(e,t):this.ddDroppable&&[`drop`,`dropover`,`dropout`].indexOf(e)>-1?this.ddDroppable.on(e,t):this.ddResizable&&[`resizestart`,`resize`,`resizestop`].indexOf(e)>-1&&this.ddResizable.on(e,t),this}off(e){return this.ddDraggable&&[`drag`,`dragstart`,`dragstop`].indexOf(e)>-1?this.ddDraggable.off(e):this.ddDroppable&&[`drop`,`dropover`,`dropout`].indexOf(e)>-1?this.ddDroppable.off(e):this.ddResizable&&[`resizestart`,`resize`,`resizestop`].indexOf(e)>-1&&this.ddResizable.off(e),this}setupDraggable(e){return this.ddDraggable?this.ddDraggable.updateOption(e):this.ddDraggable=new T(this.el,e),this}cleanDraggable(){return this.ddDraggable&&(this.ddDraggable.destroy(),delete this.ddDraggable),this}setupResizable(e){return this.ddResizable?this.ddResizable.updateOption(e):this.ddResizable=new C(this.el,e),this}cleanResizable(){return this.ddResizable&&(this.ddResizable.destroy(),delete this.ddResizable),this}setupDroppable(e){return this.ddDroppable?this.ddDroppable.updateOption(e):this.ddDroppable=new E(this.el,e),this}cleanDroppable(){return this.ddDroppable&&(this.ddDroppable.destroy(),delete this.ddDroppable),this}},O=new class{resizable(e,t,n,r){return this._getDDElements(e,typeof t==`string`?t:void 0).forEach(e=>{if(t===`disable`||t===`enable`)e.ddResizable&&e.ddResizable[t]();else if(t===`destroy`)e.ddResizable&&e.cleanResizable();else if(t===`option`)e.setupResizable({[n]:r});else{let n=e.el.gridstackNode.grid,r=e.el.getAttribute(`gs-resize-handles`)||n.opts.resizable.handles||`e,s,se`;r===`all`&&(r=`n,e,s,w,se,sw,ne,nw`);let i=!n.opts.alwaysShowResizeHandle,a=t;e.setupResizable({...n.opts.resizable,handles:r,autoHide:i,start:a.start,stop:a.stop,resize:a.resize,rtl:a.rtl})}}),this}draggable(e,t,n,r){return this._getDDElements(e,typeof t==`string`?t:void 0).forEach(e=>{if(t===`disable`||t===`enable`)e.ddDraggable&&e.ddDraggable[t]();else if(t===`destroy`)e.ddDraggable&&e.cleanDraggable();else if(t===`option`)e.setupDraggable({[n]:r});else{let n=e.el.gridstackNode.grid,r=t;e.setupDraggable({...n.opts.draggable,start:r.start,stop:r.stop,drag:r.drag,rtl:r.rtl})}}),this}dragIn(e,t){return this._getDDElements(e).forEach(e=>e.setupDraggable(t)),this}droppable(e,t,n,r){if(typeof t!=`string`){let e=t;typeof e.accept==`function`&&!e._accept&&(e._accept=e.accept,e.accept=t=>e._accept(t))}let i=typeof t==`string`?t:void 0;return this._getDDElements(e,i).forEach(e=>{t===`disable`||t===`enable`?e.ddDroppable&&e.ddDroppable[t]():t===`destroy`?e.ddDroppable&&e.cleanDroppable():t===`option`?e.setupDroppable({[n]:r}):e.setupDroppable(t)}),this}isDroppable(e){return!(!e?.ddElement?.ddDroppable||e.ddElement.ddDroppable.disabled)}isDraggable(e){return!(!e?.ddElement?.ddDraggable||e.ddElement.ddDraggable.disabled)}isResizable(e){return!(!e?.ddElement?.ddResizable||e.ddElement.ddResizable.disabled)}on(e,t,n){return this._getDDElements(e).forEach(e=>e.on(t,e=>{n(e,r.dragElement?r.dragElement.el:e.target,r.dragElement?r.dragElement.helper:void 0)})),this}off(e,t){return this._getDDElements(e).forEach(e=>e.off(t)),this}_getDDElements(t,n){let r=t.gridstack||n!==`destroy`&&n!==`disable`,i=e.getElements(t);return i.length?i.map(e=>e.ddElement||(r?D.init(e):null)).filter(e=>!!e):[]}},k=class a{static init(t={},n=`.grid-stack`){if(typeof document>`u`)return null;let r=a.getGridElement(n);return r?(r.gridstack||=new a(r,e.cloneDeep(t)),r.gridstack):(console.error(typeof n==`string`?`GridStack.initAll() no grid was found with selector "`+n+`" - element missing or wrong selector ?
2
- Note: ".grid-stack" is required for proper CSS styling and drag/drop, and is the default selector.`:`GridStack.init() no grid element was passed.`),null)}static initAll(t={},n=`.grid-stack`){let r=[];return typeof document>`u`?r:(a.getGridElements(n).forEach(n=>{n.gridstack||=new a(n,e.cloneDeep(t)),r.push(n.gridstack)}),r.length===0&&console.error(`GridStack.initAll() no grid was found with selector "`+n+`" - element missing or wrong selector ?
3
- Note: ".grid-stack" is required for proper CSS styling and drag/drop, and is the default selector.`),r)}static addGrid(t,n={}){if(!t)return null;let r=t;if(r.gridstack){let e=r.gridstack;return n&&(e.opts={...e.opts,...n}),n.children!==void 0&&e.load(n.children),e}return(!t.classList.contains(`grid-stack`)||a.addRemoveCB)&&(r=a.addRemoveCB?a.addRemoveCB(t,n,!0,!0):e.createDiv([`grid-stack`,n.class],t)),a.init(n,r)}static registerEngine(e){a.engineClass=e}get placeholder(){if(!this._placeholder){this._placeholder=e.createDiv([this.opts.placeholderClass,n.itemClass,this.opts.itemClass]);let t=e.createDiv([`placeholder-content`],this._placeholder);this.opts.placeholderText&&(t.textContent=this.opts.placeholderText)}return this._placeholder}constructor(o,s={}){this.el=o,this.opts=s,this.animationDelay=310,this._gsEventHandler={},this._extraDragRow=0,this.dragTransform={xScale:1,yScale:1,xOffset:0,yOffset:0},o.gridstack=this,this.opts=s||={},o.classList.contains(`grid-stack`)||this.el.classList.add(`grid-stack`),s.row&&(s.minRow=s.maxRow=s.row,delete s.row);let c=e.toNumber(o.getAttribute(`gs-row`));s.column===`auto`&&delete s.column,s.alwaysShowResizeHandle!==void 0&&(s._alwaysShowResizeHandle=s.alwaysShowResizeHandle);let l=s.columnOpts;if(l){let e=l.breakpoints;!l.columnWidth&&!e?.length?delete s.columnOpts:e&&e.length>1?(e.sort((e,t)=>(t.w||0)-(e.w||0)),delete l.columnWidth):l.columnMax=l.columnMax||12}let u={...e.cloneDeep(n),column:e.toNumber(o.getAttribute(`gs-column`))||n.column,minRow:c||e.toNumber(o.getAttribute(`gs-min-row`))||n.minRow,maxRow:c||e.toNumber(o.getAttribute(`gs-max-row`))||n.maxRow,staticGrid:e.toBool(o.getAttribute(`gs-static`))||n.staticGrid,sizeToContent:e.toBool(o.getAttribute(`gs-size-to-content`))||void 0,draggable:{handle:(s.handleClass?`.`+s.handleClass:s.handle?s.handle:``)||n.draggable.handle},removableOptions:{accept:s.itemClass||n.removableOptions.accept,decline:n.removableOptions.decline}};o.getAttribute(`gs-animate`)&&(u.animate=e.toBool(o.getAttribute(`gs-animate`))),s=e.defaults(s,u),this._initMargin(),this.checkDynamicColumn(),this._updateColumnVar(s),s.rtl===`auto`&&(s.rtl=o.style.direction===`rtl`),s.rtl&&this.el.classList.add(`grid-stack-rtl`);let d=this.el.closest(`.`+n.itemClass)?.gridstackNode;if(d&&(d.subGrid=this,this.parentGridNode=d,this.el.classList.add(`grid-stack-nested`),d.el.classList.add(`grid-stack-sub-grid`)),this._isAutoCellHeight=s.cellHeight===`auto`,this._isAutoCellHeight||s.cellHeight===`initial`)this.cellHeight(void 0);else{typeof s.cellHeight==`number`&&s.cellHeightUnit&&s.cellHeightUnit!==n.cellHeightUnit&&(s.cellHeight+=s.cellHeightUnit,delete s.cellHeightUnit);let e=s.cellHeight;delete s.cellHeight,this.cellHeight(e)}s.alwaysShowResizeHandle===`mobile`&&(s.alwaysShowResizeHandle=i),this._setStaticClass();let f=s.engineClass||a.engineClass||t;if(this.engine=new f({column:this.getColumn(),float:s.float,maxRow:s.maxRow,onChange:e=>{e.forEach(e=>{let t=e.el;t&&(e._removeDOM?(t&&t.remove(),delete e._removeDOM):this._writePosAttr(t,e))}),this._updateContainerHeight()}}),s.auto&&(this.batchUpdate(),this.engine._loading=!0,this.getGridItems().forEach(e=>this._prepareElement(e)),delete this.engine._loading,this.batchUpdate(!1)),s.children){let e=s.children;delete s.children,e.length&&this.load(e)}this.setAnimation(),s.subGridDynamic&&!r.pauseDrag&&(r.pauseDrag=!0),s.draggable?.pause!==void 0&&(r.pauseDrag=s.draggable.pause),this._setupRemoveDrop(),this._setupAcceptWidget(),this._updateResizeEvent()}_updateColumnVar(e=this.opts){this.el.classList.add(`gs-`+e.column),typeof e.column==`number`&&(this.el.style.setProperty(`--gs-column-width`,`${100/e.column}%`),this.el.style.setProperty(`--gs-columns`,String(e.column)))}addWidget(t){if(!t)return;if(typeof t==`string`){console.error(`V11: GridStack.addWidget() does not support string anymore. see #2736`);return}if(t.ELEMENT_NODE)return console.error(`V11: GridStack.addWidget() does not support HTMLElement anymore. use makeWidget()`),this.makeWidget(t);let n,r=t;if(r.grid=this,n=r.el?r.el:a.addRemoveCB?a.addRemoveCB(this.el,t,!0,!1):this.createWidgetDivs(r),!n)return;if(r=n.gridstackNode,r&&n.parentElement===this.el&&this.engine.nodes.find(e=>e._id===r._id))return n;let i=this._readAttr(n);return e.defaults(t,i),this.engine.prepareNode(t),this.el.appendChild(n),this.makeWidget(n,t),n}createWidgetDivs(t){let n=e.createDiv([`grid-stack-item`,this.opts.itemClass]),r=e.createDiv([`grid-stack-item-content`],n);return e.lazyLoad(t)?t.visibleObservable||(t.visibleObservable=new IntersectionObserver(([e])=>{e.isIntersecting&&(t.visibleObservable?.disconnect(),delete t.visibleObservable,a.renderCB(r,t),t.grid?.prepareDragDrop(t.el))}),window.setTimeout(()=>t.visibleObservable?.observe(n))):a.renderCB(r,t),n}makeSubGrid(t,n,r,i=!0){let o=t.gridstackNode;if(o||=this.makeWidget(t).gridstackNode,o.subGrid?.el)return o.subGrid;let s,c=this;for(;c&&!s;)s=c.opts?.subGridOpts,c=c.parentGridNode?.grid;n=e.cloneDeep({...this.opts,id:void 0,children:void 0,column:`auto`,columnOpts:void 0,layout:`list`,subGridOpts:void 0,...s||{},...n||o.subGridOpts||{}}),o.subGridOpts=n;let l=!1;n.column===`auto`&&(l=!0,n.column=Math.max(o.w||1,r?.w||1),delete n.columnOpts);let u=o.el.querySelector(`.grid-stack-item-content`),d,f;if(i&&(this._removeDD(o.el),f={...o,x:0,y:0},e.removeInternalForSave(f),delete f.subGridOpts,o.content&&(f.content=o.content,delete o.content),a.addRemoveCB?d=a.addRemoveCB(this.el,f,!0,!1)||void 0:(d=e.createDiv([`grid-stack-item`]),d.appendChild(u),u=e.createDiv([`grid-stack-item-content`],o.el)),this.prepareDragDrop(o.el)),r){let e=l?n.column:o.w,t=o.h+r.h,i=o.el.style;i.transition=`none`,this.update(o.el,{w:e,h:t}),setTimeout(()=>i.transition=``)}let p=o.subGrid=a.addGrid(u,n)||void 0;return r?._moving&&(p._isTemp=!0),l&&(p._autoColumn=!0),i&&p.makeWidget(d,f),r&&(r._moving?window.setTimeout(()=>e.simulateMouseEvent(r._event,`mouseenter`,p.el),0):p.makeWidget(o.el,o)),this.resizeToContentCheck(!1,o),p}removeAsSubGrid(t){let n=this.parentGridNode?.grid;if(n&&(n.batchUpdate(),n.removeWidget(this.parentGridNode.el,!0,!0),this.engine.nodes.forEach(e=>{e.x=(e.x??0)+(this.parentGridNode.x??0),e.y=(e.y??0)+(this.parentGridNode.y??0),this._removeDD(e.el),e.el.remove(),delete e.el.gridstackNode,n.makeWidget(e.el,e)}),n.batchUpdate(!1),this.parentGridNode&&delete this.parentGridNode.subGrid,delete this.parentGridNode,t)){let i=t.el?.gridstackNode;i&&i!==t&&(i._temporaryRemoved=!0),window.setTimeout(()=>{let i=r.dragElement?.lastDrag||t._event;i&&e.simulateMouseEvent(i,`mouseenter`,n.el)},0)}}save(t=!0,r=!1,i=a.saveCB,o){let s=this.engine.save(t,i,o);if(s.forEach(e=>{if(t&&e.el&&!e.subGrid&&!i)e.content=e.el.querySelector(`.grid-stack-item-content`)?.innerHTML,e.content||delete e.content;else if(!t&&!i&&delete e.content,e.subGrid?.el){let n=e.w||e.subGrid.getColumn(),a=e.subGrid.save(t,r,i,n);e.subGridOpts=r?a:{children:a},delete e.subGrid}delete e.el}),r){let t=e.cloneDeep(this.opts);t.marginBottom===t.marginTop&&t.marginRight===t.marginLeft&&t.marginTop===t.marginRight&&(t.margin=t.marginTop,delete t.marginTop,delete t.marginRight,delete t.marginBottom,delete t.marginLeft),t.rtl===(this.el.style.direction===`rtl`)&&(t.rtl=`auto`),this._isAutoCellHeight&&(t.cellHeight=`auto`),this._autoColumn&&(t.column=`auto`);let r=t._alwaysShowResizeHandle;return delete t._alwaysShowResizeHandle,r===void 0?delete t.alwaysShowResizeHandle:t.alwaysShowResizeHandle=r,e.removeInternalAndSame(t,n),t.children=s,t}return s}load(t,n=a.addRemoveCB||!0){t.forEach(e=>{e.w=e.w||e.minW||1,e.h=e.h||e.minH||1}),t=e.sort(t),this.engine.skipCacheUpdate=this._ignoreLayoutsNodeChange=!0;let r=0;t.forEach(e=>{r=Math.max(r,(e.x||0)+e.w)}),r>this.engine.defaultColumn&&(this.engine.defaultColumn=r);let i=this.getColumn();r>i&&(this.engine.nodes.length===0&&this.responseLayout?(this.engine.nodes=t,this.engine.columnChanged(r,i,this.responseLayout),t=this.engine.nodes,this.engine.nodes=[],delete this.responseLayout):this.engine.cacheLayout(t,r,!0));let o=a.addRemoveCB;typeof n==`function`&&(a.addRemoveCB=n);let s=[];this.batchUpdate();let c=!this.engine.nodes.length,l=c&&this.opts.animate;l&&this.setAnimation(!1),!c&&n&&[...this.engine.nodes].forEach(n=>{n.id&&(e.find(t,n.id)||(a.addRemoveCB&&a.addRemoveCB(this.el,n,!1,!1),s.push(n),this.removeWidget(n.el,!0,!1)))}),this.engine._loading=!0;let u=[];return this.engine.nodes=this.engine.nodes.filter(n=>n.id&&e.find(t,n.id)?(u.push(n),!1):!0),t.forEach(t=>{let r=t.id?e.find(u,t.id):void 0;if(r){if(e.shouldSizeToContent(r)&&(t.h=r.h),this.engine.nodeBoundFix(t),(t.autoPosition||t.x===void 0||t.y===void 0)&&(t.w=t.w||r.w,t.h=t.h||r.h,this.engine.findEmptyPosition(t)),this.engine.nodes.push(r),e.samePos(r,t)&&this.engine.nodes.length>1&&(this.moveNode(r,{...t,forceCollide:!0}),e.copyPos(t,r)),this.update(r.el,t),t.subGridOpts?.children){let e=r.el.querySelector(`.grid-stack`);e&&e.gridstack&&e.gridstack.load(t.subGridOpts.children)}}else n&&this.addWidget(t)}),delete this.engine._loading,this.engine.removedNodes=s,this.batchUpdate(!1),delete this._ignoreLayoutsNodeChange,delete this.engine.skipCacheUpdate,o?a.addRemoveCB=o:delete a.addRemoveCB,l&&this.setAnimation(!0,!0),this}batchUpdate(e=!0){return this.engine.batchUpdate(e),e||(this._updateContainerHeight(),this._triggerRemoveEvent(),this._triggerAddEvent(),this._triggerChangeEvent()),this}getCellHeight(t=!1){if(this.opts.cellHeight&&this.opts.cellHeight!==`auto`&&(!t||!this.opts.cellHeightUnit||this.opts.cellHeightUnit===`px`))return this.opts.cellHeight;if(this.opts.cellHeightUnit===`rem`)return this.opts.cellHeight*parseFloat(getComputedStyle(document.documentElement).fontSize);if(this.opts.cellHeightUnit===`em`)return this.opts.cellHeight*parseFloat(getComputedStyle(this.el).fontSize);if(this.opts.cellHeightUnit===`cm`)return this.opts.cellHeight*(96/2.54);if(this.opts.cellHeightUnit===`mm`)return this.opts.cellHeight*(96/2.54)/10;let n=this.el.querySelector(`.`+this.opts.itemClass);if(n){let t=e.toNumber(n.getAttribute(`gs-h`))||1;return Math.round(n.offsetHeight/t)}let r=parseInt(this.el.getAttribute(`gs-current-row`)||`0`);return r?Math.round(this.el.getBoundingClientRect().height/r):this.opts.cellHeight}cellHeight(t){if(t!==void 0&&this._isAutoCellHeight!==(t===`auto`)&&(this._isAutoCellHeight=t===`auto`,this._updateResizeEvent()),(t===`initial`||t===`auto`)&&(t=void 0),t===void 0){let e=-this.opts.marginRight-this.opts.marginLeft+this.opts.marginTop+this.opts.marginBottom;t=this.cellWidth()+e}let n=e.parseHeight(t);return this.opts.cellHeightUnit===n.unit&&this.opts.cellHeight===n.h?this:(this.opts.cellHeightUnit=n.unit,this.opts.cellHeight=n.h,this.el.style.setProperty(`--gs-cell-height`,`${this.opts.cellHeight}${this.opts.cellHeightUnit}`),this._updateContainerHeight(),this.resizeToContentCheck(),this)}cellWidth(){return this._widthOrContainer()/this.getColumn()}_widthOrContainer(e=!1){return e&&this.opts.columnOpts?.breakpointForWindow?window.innerWidth:this.el.clientWidth||this.el.parentElement.clientWidth||window.innerWidth}checkDynamicColumn(){let e=this.opts.columnOpts;if(!e||!e.columnWidth&&!e.breakpoints?.length)return!1;let t=this.getColumn(),n=t,r=this._widthOrContainer(!0);if(e.columnWidth)n=Math.min(Math.round(r/e.columnWidth)||1,e.columnMax);else{n=e.columnMax;let i=0;for(;i<e.breakpoints.length&&r<=e.breakpoints[i].w;)n=e.breakpoints[i++].c||t}if(n!==t){let t=e.breakpoints?.find(e=>e.c===n);return this.column(n,t?.layout||e.layout),!0}return!1}compact(e=`compact`,t=!0){return this.engine.compact(e,t),this._triggerChangeEvent(),this}column(e,t=`moveScale`){if(!e||e<1||this.opts.column===e)return this;let n=this.getColumn();return this.opts.column=e,this.engine?(this.engine.column=e,this.el.classList.remove(`gs-`+n),this._updateColumnVar(),this.engine.columnChanged(n,e,t),this._isAutoCellHeight&&this.cellHeight(),this.resizeToContentCheck(!0),this._ignoreLayoutsNodeChange=!0,this._triggerChangeEvent(),delete this._ignoreLayoutsNodeChange,this):(this.responseLayout=t,this)}getColumn(){return this.opts.column}getGridItems(){return Array.from(this.el.children).filter(e=>e.matches(`.`+this.opts.itemClass)&&!e.matches(`.`+this.opts.placeholderClass))}isIgnoreChangeCB(){return!!this._ignoreLayoutsNodeChange}destroy(e=!0){return this.el?(this.offAll(),this._updateResizeEvent(!0),this.setStatic(!0,!1),this.setAnimation(!1),e?this.el.parentNode.removeChild(this.el):(this.removeAll(e),this.el.removeAttribute(`gs-current-row`)),this.parentGridNode&&delete this.parentGridNode.subGrid,delete this.parentGridNode,delete this.opts,delete this._placeholder?.gridstackNode,delete this._placeholder,delete this.engine,delete this.el.gridstack,delete this.el,this):this}float(e){return this.opts.float!==e&&(this.opts.float=this.engine.float=e,this._triggerChangeEvent()),this}getFloat(){return this.engine.float}getCellFromPixel(e,t=!1){let n=this.el.getBoundingClientRect(),r;r=t?{top:n.top+document.documentElement.scrollTop,left:n.left}:{top:this.el.offsetTop,left:this.el.offsetLeft};let i=e.left-r.left,a=e.top-r.top,o=n.width/this.getColumn(),s=n.height/parseInt(this.el.getAttribute(`gs-current-row`)||`0`);return{x:Math.floor(i/o),y:Math.floor(a/s)}}getRow(){return Math.max(this.engine.getRow(),this.opts.minRow||0)}isAreaEmpty(e,t,n,r){return this.engine.isAreaEmpty(e,t,n,r)}makeWidget(e,t){let n=a.getElement(e);if(!n||n.gridstackNode)return n;n.parentElement||this.el.appendChild(n),this._prepareElement(n,!0,t);let r=n.gridstackNode;this._updateContainerHeight(),r.subGridOpts&&this.makeSubGrid(n,r.subGridOpts,void 0,!1);let i=!1;return this.opts.column===1&&!this._ignoreLayoutsNodeChange&&(i=this._ignoreLayoutsNodeChange=!0),this._triggerAddEvent(),this._triggerChangeEvent(),i&&delete this._ignoreLayoutsNodeChange,n}on(e,t){return e.indexOf(` `)===-1?(e===`change`||e===`added`||e===`removed`||e===`enable`||e===`disable`?(e===`enable`||e===`disable`?this._gsEventHandler[e]=e=>t(e):this._gsEventHandler[e]=(e=>{e.detail&&t(e,e.detail)}),this.el.addEventListener(e,this._gsEventHandler[e])):e===`drag`||e===`dragstart`||e===`dragstop`||e===`resizestart`||e===`resize`||e===`resizestop`||e===`dropped`||e===`resizecontent`?this._gsEventHandler[e]=t:console.error(`GridStack.on(`+e+`) event not supported`),this):(e.split(` `).forEach(e=>this.on(e,t)),this)}off(e){return e.indexOf(` `)===-1?((e===`change`||e===`added`||e===`removed`||e===`enable`||e===`disable`)&&this._gsEventHandler[e]&&this.el.removeEventListener(e,this._gsEventHandler[e]),delete this._gsEventHandler[e],this):(e.split(` `).forEach(e=>this.off(e)),this)}offAll(){return Object.keys(this._gsEventHandler).forEach(e=>this.off(e)),this}removeWidget(e,t=!0,n=!0){return e?(a.getElements(e).forEach(e=>{if(e.parentElement&&e.parentElement!==this.el)return;let r=e.gridstackNode;r||=this.engine.nodes.find(t=>e===t.el),r&&(t&&a.addRemoveCB&&a.addRemoveCB(this.el,r,!1,!1),delete e.gridstackNode,this._removeDD(e),this.engine.removeNode(r,t,n),t&&e.parentElement&&e.remove())}),n&&(this._triggerRemoveEvent(),this._triggerChangeEvent()),this):(console.error(`Error: GridStack.removeWidget(undefined) called`),this)}removeAll(e=!0,t=!0){return this.engine.nodes.forEach(t=>{e&&a.addRemoveCB&&a.addRemoveCB(this.el,t,!1,!1),delete t.el.gridstackNode,this.opts.staticGrid||this._removeDD(t.el)}),this.engine.removeAll(e,t),t&&this._triggerRemoveEvent(),this}setAnimation(e=this.opts.animate,t){return t?setTimeout(()=>{this.opts&&this.setAnimation(e)}):e?this.el.classList.add(`grid-stack-animate`):this.el.classList.remove(`grid-stack-animate`),this.opts.animate=e,this}hasAnimationCSS(){return this.el.classList.contains(`grid-stack-animate`)}setStatic(e,t=!0,n=!0){return!!this.opts.staticGrid===e?this:(e?this.opts.staticGrid=!0:delete this.opts.staticGrid,this._setupRemoveDrop(),this._setupAcceptWidget(),this.engine.nodes.forEach(r=>{this.prepareDragDrop(r.el),r.subGrid&&n&&r.subGrid.setStatic(e,t,n)}),t&&this._setStaticClass(),this)}updateOptions(e){let t=this.opts;if(e===t)return this;if(e.acceptWidgets!==void 0&&(t.acceptWidgets=e.acceptWidgets,this._setupAcceptWidget()),e.animate!==void 0&&this.setAnimation(e.animate),e.cellHeight&&this.cellHeight(e.cellHeight),e.class!==void 0&&e.class!==t.class&&(t.class&&this.el.classList.remove(t.class),e.class&&this.el.classList.add(e.class)),e.columnOpts){let t=!!this.opts.columnOpts;this.opts.columnOpts=e.columnOpts,t!==!!this.opts.columnOpts&&this._updateResizeEvent(),this.checkDynamicColumn()}else e.columnOpts===null&&this.opts.columnOpts?(delete this.opts.columnOpts,this._updateResizeEvent()):typeof e.column==`number`&&this.column(e.column);return e.margin!==void 0&&this.margin(e.margin),e.staticGrid!==void 0&&this.setStatic(e.staticGrid),e.disableDrag!==void 0&&!e.staticGrid&&this.enableMove(!e.disableDrag),e.disableResize!==void 0&&!e.staticGrid&&this.enableResize(!e.disableResize),e.float!==void 0&&this.float(e.float),e.row===void 0?(e.minRow!==void 0&&(t.minRow=e.minRow,this._updateContainerHeight()),e.maxRow!==void 0&&(t.maxRow=this.engine.maxRow=e.maxRow,this.engine.getRow()>e.maxRow&&this.compact())):(t.minRow=t.maxRow=this.engine.maxRow=t.row=e.row,this._updateContainerHeight(),this.engine.getRow()>e.row&&this.compact()),e.lazyLoad!==void 0&&(t.lazyLoad=e.lazyLoad),e.children?.length&&this.load(e.children),this}update(t,n){return a.getElements(t).forEach(t=>{let r=t?.gridstackNode;if(!r)return;let i={...e.copyPos({},r),...e.cloneDeep(n)};this.engine.nodeBoundFix(i),delete i.autoPosition;let o=[`x`,`y`,`w`,`h`],s,c=i,l=r;if(o.some(e=>c[e]!==void 0&&c[e]!==l[e])){s={};let e=s;o.forEach(t=>{e[t]=c[t]===void 0?l[t]:c[t],delete c[t]})}if(!s&&(i.minW||i.minH||i.maxW||i.maxH)&&(s={}),i.content!==void 0){let e=t.querySelector(`.grid-stack-item-content`);e&&e.textContent!==i.content&&(r.content=i.content,a.renderCB(e,i),r.subGrid?.el&&(e.appendChild(r.subGrid.el),r.subGrid._updateContainerHeight())),delete i.content}let u=!1,d=!1;for(let e in c)e[0]!==`_`&&l[e]!==c[e]&&(l[e]=c[e],u=!0,d||=!this.opts.staticGrid&&(e===`noResize`||e===`noMove`||e===`locked`));if(e.sanitizeMinMax(r),s){let e=s.w!==void 0&&s.w!==r.w;this.moveNode(r,s),e&&r.subGrid?r.subGrid.onResize(this.hasAnimationCSS()?r.w:void 0):this.resizeToContentCheck(e,r),delete r._orig}(s||u)&&this._writeAttr(t,r),d&&this.prepareDragDrop(r.el),a.updateCB&&a.updateCB(r)}),this}moveNode(e,t){let n=e._updating;n||this.engine.cleanNodes().beginUpdate(e),this.engine.moveNode(e,t),this._updateContainerHeight(),n||(this._triggerChangeEvent(),this.engine.endUpdate())}resizeToContent(e){if(!e||(e.classList.remove(`size-to-content-max`),!e.clientHeight))return;let t=e.gridstackNode;if(!t)return;let n=t.grid;if(!n||e.parentElement!==n.el)return;let r=n.getCellHeight(!0);if(!r)return;let i=t.h?t.h*r:e.clientHeight,o=null;if(t.resizeToContentParent&&(o=e.querySelector(t.resizeToContentParent)),o||=e.querySelector(a.resizeToContentParent),!o)return;let s=e.clientHeight-o.clientHeight,c=t.h?t.h*r-s:o.clientHeight,l;if(t.subGrid){l=t.subGrid.getRow()*t.subGrid.getCellHeight(!0);let n=t.subGrid.el.getBoundingClientRect(),r=e.getBoundingClientRect();l+=n.top-r.top}else if(t.subGridOpts?.children?.length)return;else{let e=o.firstElementChild;if(!e){console.error(`Error: GridStack.resizeToContent() widget id:${t.id} '${a.resizeToContentParent}'.firstElementChild is null, make sure to have a div like container. Skipping sizing.`);return}l=e.getBoundingClientRect().height||c}if(c===l)return;i+=l-c;let u=Math.ceil(i/r),d=Number.isInteger(t.sizeToContent)?t.sizeToContent:0;d&&u>d&&(u=d,e.classList.add(`size-to-content-max`)),t.minH&&u<t.minH?u=t.minH:t.maxH&&u>t.maxH&&(u=t.maxH),u!==t.h&&(n._ignoreLayoutsNodeChange=!0,n.moveNode(t,{h:u}),delete n._ignoreLayoutsNodeChange)}resizeToContentCBCheck(e){a.resizeToContentCB?a.resizeToContentCB(e):this.resizeToContent(e)}rotate(t,n){return a.getElements(t).forEach(t=>{let r=t.gridstackNode;if(!r||!e.canBeRotated(r))return;let i={w:r.h,h:r.w,minH:r.minW,minW:r.minH,maxH:r.maxW,maxW:r.maxH};if(n){let e=n.left>0?Math.floor(n.left/this.cellWidth()):0,t=n.top>0?Math.floor(n.top/this.opts.cellHeight):0;i.x=r.x+e-(r.h-(t+1)),i.y=r.y+t-e}let a=i;Object.keys(a).forEach(e=>{a[e]===void 0&&delete a[e]});let o=r._orig;this.update(t,i),r._orig=o}),this}margin(t){if(!(typeof t==`string`&&t.split(` `).length>1)){let n=e.parseHeight(t);if(this.opts.marginUnit===n.unit&&this.opts.margin===n.h)return this}return this.opts.margin=t,this.opts.marginTop=this.opts.marginBottom=this.opts.marginLeft=this.opts.marginRight=void 0,this._initMargin(),this}getMargin(){return this.opts.margin}willItFit(e){return this.engine.willItFit(e)}_triggerChangeEvent(){if(this.engine.batchMode)return this;let e=this.engine.getDirtyNodes(!0);return e&&e.length&&(this._ignoreLayoutsNodeChange||this.engine.layoutsNodesChange(e),this._triggerEvent(`change`,e)),this.engine.saveInitial(),this._sortDom(),this}_sortDom(){let e=this.engine.nodes;if(e.forEach(e=>{e.subGrid&&e.subGrid._sortDom()}),e.length<2)return this;this.engine.sortNodes(),e=this.engine.nodes;let t=this.el.children;if(e.some((e,n)=>e.el!==t[n])){let t=this.el.moveBefore?.bind(this.el);e.forEach(e=>{e.el&&e.el.parentElement===this.el&&(t?t(e.el,null):this.el.appendChild(e.el))})}return this}_triggerAddEvent(){if(this.engine.batchMode)return this;if(this.engine.addedNodes?.length){this._ignoreLayoutsNodeChange||this.engine.layoutsNodesChange(this.engine.addedNodes),this.engine.addedNodes.forEach(e=>{delete e._dirty});let e=[...this.engine.addedNodes];this.engine.addedNodes=[],this._triggerEvent(`added`,e)}return this}_triggerRemoveEvent(){if(this.engine.batchMode)return this;if(this.engine.removedNodes?.length){let e=[...this.engine.removedNodes];this.engine.removedNodes=[],this._triggerEvent(`removed`,e)}return this}_triggerEvent(e,t){let n=t?new CustomEvent(e,{bubbles:!1,detail:t}):new Event(e),r=this;for(;r.parentGridNode;)r=r.parentGridNode.grid;return r.el.dispatchEvent(n),this}_updateContainerHeight(){if(!this.engine||this.engine.batchMode)return this;let t=this.parentGridNode,n=this.getRow()+this._extraDragRow,r=this.opts.cellHeight,i=this.opts.cellHeightUnit;if(!r)return this;if(!t&&!this.opts.minRow){let t=e.parseHeight(getComputedStyle(this.el).minHeight);if(t.h>0&&t.unit===i){let e=Math.floor(t.h/r);n<e&&(n=e)}}return this.el.setAttribute(`gs-current-row`,String(n)),this.el.style.removeProperty(`min-height`),this.el.style.removeProperty(`height`),n&&(this.el.style[t?`minHeight`:`height`]=n*r+i),t&&e.shouldSizeToContent(t)&&t.grid.resizeToContentCBCheck(t.el),this}_prepareElement(t,r=!1,i){i||=this._readAttr(t),t.gridstackNode=i,i.el=t,i.grid=this,i=this.engine.addNode(i,r),this._writeAttr(t,i),t.classList.add(n.itemClass,this.opts.itemClass);let a=e.shouldSizeToContent(i);return a?t.classList.add(`size-to-content`):t.classList.remove(`size-to-content`),a&&this.resizeToContentCheck(!1,i),(!e.lazyLoad(i)||!i.visibleObservable)&&this.prepareDragDrop(i.el),this}_writePosAttr(e,t){if(!t._moving&&!t._resizing||this._placeholder===e){let n=this.opts.rtl?`right`:`left`,r=e.style;r.top=t.y?t.y===1?`var(--gs-cell-height)`:`calc(${t.y} * var(--gs-cell-height))`:null,r[n]=t.x?t.x===1?`var(--gs-column-width)`:`calc(${t.x} * var(--gs-column-width))`:null,r.width=t.w>1?`calc(${t.w} * var(--gs-column-width))`:null,r.height=t.h>1?`calc(${t.h} * var(--gs-cell-height))`:null}return e.style.setProperty(`--gs-x`,String(t.x||0)),e.style.setProperty(`--gs-y`,String(t.y||0)),e.style.setProperty(`--gs-w`,String(t.w||1)),e.style.setProperty(`--gs-h`,String(t.h||1)),e.setAttribute(`gs-x`,String(t.x??0)),e.setAttribute(`gs-y`,String(t.y??0)),t.w>1?e.setAttribute(`gs-w`,String(t.w)):e.removeAttribute(`gs-w`),t.h>1?e.setAttribute(`gs-h`,String(t.h)):e.removeAttribute(`gs-h`),this}_writeAttr(e,t){if(!t)return this;this._writePosAttr(e,t);let n={noResize:`gs-no-resize`,noMove:`gs-no-move`,locked:`gs-locked`,id:`gs-id`,sizeToContent:`gs-size-to-content`},r=t,i=n;for(let t in i)r[t]!==void 0&&r[t]!==null&&r[t]!==!1?e.setAttribute(i[t],String(r[t])):e.removeAttribute(i[t]);let a=t.print;return a?(a.pageBreak?e.setAttribute(`gs-page-break`,String(a.pageBreak)):e.removeAttribute(`gs-page-break`),a.hide?e.classList.add(`gs-print-hide`):e.classList.remove(`gs-print-hide`),a.orientation?e.setAttribute(`gs-print-orientation`,String(a.orientation)):e.removeAttribute(`gs-print-orientation`),a.breakInside?e.setAttribute(`gs-break-inside`,String(a.breakInside)):e.removeAttribute(`gs-break-inside`)):(e.removeAttribute(`gs-page-break`),e.classList.remove(`gs-print-hide`),e.removeAttribute(`gs-print-orientation`),e.removeAttribute(`gs-break-inside`)),this}_readAttr(t,n=!0){let r={};r.x=e.toNumber(t.getAttribute(`gs-x`)),r.y=e.toNumber(t.getAttribute(`gs-y`)),r.w=e.toNumber(t.getAttribute(`gs-w`)),r.h=e.toNumber(t.getAttribute(`gs-h`)),r.autoPosition=e.toBool(t.getAttribute(`gs-auto-position`)),r.noResize=e.toBool(t.getAttribute(`gs-no-resize`)),r.noMove=e.toBool(t.getAttribute(`gs-no-move`)),r.locked=e.toBool(t.getAttribute(`gs-locked`));let i=t.getAttribute(`gs-page-break`),a=t.classList.contains(`gs-print-hide`),o=t.getAttribute(`gs-print-orientation`),s=t.getAttribute(`gs-break-inside`);(i||a||o||s)&&(r.print={},i&&(r.print.pageBreak=e.toBool(i)),a&&(r.print.hide=!0),o&&(r.print.orientation=o),s&&(r.print.breakInside=e.toBool(s)));let c=t.getAttribute(`gs-size-to-content`);c&&(r.sizeToContent=c===`true`||c===`false`?e.toBool(c):parseInt(c,10)),r.id=t.getAttribute(`gs-id`)??void 0,r.maxW=e.toNumber(t.getAttribute(`gs-max-w`)),r.minW=e.toNumber(t.getAttribute(`gs-min-w`)),r.maxH=e.toNumber(t.getAttribute(`gs-max-h`)),r.minH=e.toNumber(t.getAttribute(`gs-min-h`)),n&&(r.w===1&&t.removeAttribute(`gs-w`),r.h===1&&t.removeAttribute(`gs-h`),r.maxW&&t.removeAttribute(`gs-max-w`),r.minW&&t.removeAttribute(`gs-min-w`),r.maxH&&t.removeAttribute(`gs-max-h`),r.minH&&t.removeAttribute(`gs-min-h`));let l=r;for(let e in l)r.hasOwnProperty(e)&&!l[e]&&l[e]!==0&&e!==`sizeToContent`&&delete l[e];return r}_setStaticClass(){let e=[`grid-stack-static`];return this.opts.staticGrid?(this.el.classList.add(...e),this.el.setAttribute(`gs-static`,`true`)):(this.el.classList.remove(...e),this.el.removeAttribute(`gs-static`)),this}onResize(e=this.el?.clientWidth){if(!e||this.prevWidth===e)return this;this.prevWidth=e,this.batchUpdate();let t=!1;return this._autoColumn&&this.parentGridNode?this.opts.column!==this.parentGridNode.w&&(this.column(this.parentGridNode.w,this.opts.layout||`list`),t=!0):t=this.checkDynamicColumn(),this._isAutoCellHeight&&this.cellHeight(),this.engine.nodes.forEach(e=>{e.subGrid&&e.subGrid.onResize()}),this._skipInitialResize||this.resizeToContentCheck(t),delete this._skipInitialResize,this.batchUpdate(!1),this}resizeToContentCheck(t=!1,n){if(!this.engine)return;if(t&&this.hasAnimationCSS()){setTimeout(()=>this.resizeToContentCheck(!1,n),this.animationDelay);return}if(n)e.shouldSizeToContent(n)&&this.resizeToContentCBCheck(n.el);else if(this.engine.nodes.some(t=>e.shouldSizeToContent(t))){let t=[...this.engine.nodes];this.batchUpdate(),t.forEach(t=>{e.shouldSizeToContent(t)&&this.resizeToContentCBCheck(t.el)}),this._ignoreLayoutsNodeChange=!0,this.batchUpdate(!1),this._ignoreLayoutsNodeChange=!1}let r=this._gsEventHandler.resizecontent;r&&r(new Event(`resizecontent`),n?[n]:this.engine.nodes)}_updateResizeEvent(t=!1){let n=!this.parentGridNode&&(this._isAutoCellHeight||this.opts.sizeToContent||this.opts.columnOpts||this.engine.nodes.find(e=>e.sizeToContent));return!t&&n&&!this.resizeObserver?(this._sizeThrottle=e.throttle(()=>this.onResize(),this.opts.cellHeightThrottle),this.resizeObserver=new ResizeObserver(()=>this._sizeThrottle()),this.resizeObserver.observe(this.el),this._skipInitialResize=!0):(t||!n)&&this.resizeObserver&&(this.resizeObserver.disconnect(),delete this.resizeObserver,delete this._sizeThrottle),this}static getElement(t=`.grid-stack-item`){return e.getElement(t)}static getElements(t=`.grid-stack-item`){return e.getElements(t)}static getGridElement(e){return a.getElement(e)}static getGridElements(t){return e.getElements(t)}_initMargin(){let t={h:0,unit:`px`},n=0,r=[];typeof this.opts.margin==`string`&&(r=this.opts.margin.split(` `)),r.length===2?(this.opts.marginTop=this.opts.marginBottom=r[0],this.opts.marginLeft=this.opts.marginRight=r[1]):r.length===4?(this.opts.marginTop=r[0],this.opts.marginRight=r[1],this.opts.marginBottom=r[2],this.opts.marginLeft=r[3]):(t=e.parseHeight(this.opts.margin),this.opts.marginUnit=t.unit,n=this.opts.margin=t.h);let i=[`marginTop`,`marginRight`,`marginBottom`,`marginLeft`],a=this.opts;i.forEach(r=>{a[r]===void 0?a[r]=n:(t=e.parseHeight(a[r]),a[r]=t.h,delete this.opts.margin)}),this.opts.marginUnit=t.unit,this.opts.marginTop===this.opts.marginBottom&&this.opts.marginLeft===this.opts.marginRight&&this.opts.marginTop===this.opts.marginRight&&(this.opts.margin=this.opts.marginTop);let o=this.el.style;return o.setProperty(`--gs-item-margin-top`,`${this.opts.marginTop}${this.opts.marginUnit}`),o.setProperty(`--gs-item-margin-bottom`,`${this.opts.marginBottom}${this.opts.marginUnit}`),o.setProperty(`--gs-item-margin-right`,`${this.opts.marginRight}${this.opts.marginUnit}`),o.setProperty(`--gs-item-margin-left`,`${this.opts.marginLeft}${this.opts.marginUnit}`),this}static getDD(){return O}static setupDragIn(t,n,i,a=document){n?.pause!==void 0&&(r.pauseDrag=n.pause),n={appendTo:`body`,helper:`clone`,...n||{}},(typeof t==`string`?e.getElements(t,a):t).forEach((e,t)=>{O.isDraggable(e)||O.dragIn(e,n),i?.[t]&&(e.gridstackNode=i[t])})}movable(e,t){return this.opts.staticGrid||a.getElements(e).forEach(e=>{let n=e.gridstackNode;n&&(t?delete n.noMove:n.noMove=!0,this.prepareDragDrop(n.el))}),this}resizable(e,t){return this.opts.staticGrid||a.getElements(e).forEach(e=>{let n=e.gridstackNode;n&&(t?delete n.noResize:n.noResize=!0,this.prepareDragDrop(n.el))}),this}disable(e=!0){return this.opts.staticGrid?this:(this.enableMove(!1,e),this.enableResize(!1,e),this._triggerEvent(`disable`),this)}enable(e=!0){return this.opts.staticGrid?this:(this.enableMove(!0,e),this.enableResize(!0,e),this._triggerEvent(`enable`),this)}enableMove(e,t=!0){return this.opts.staticGrid?this:(e?delete this.opts.disableDrag:this.opts.disableDrag=!0,this.engine.nodes.forEach(n=>{this.prepareDragDrop(n.el),n.subGrid&&t&&n.subGrid.enableMove(e,t)}),this)}enableResize(e,t=!0){return this.opts.staticGrid?this:(e?delete this.opts.disableResize:this.opts.disableResize=!0,this.engine.nodes.forEach(n=>{this.prepareDragDrop(n.el),n.subGrid&&t&&n.subGrid.enableResize(e,t)}),this)}cancelDrag(){let e=r.dragElement?.el;if(e?._gridstackNodeOrig){let t=e._gridstackNodeOrig,n=t.grid,i=this._placeholder?.gridstackNode;i&&(i._isAboutToRemove=!0,this.engine.removeNode(i)),this.engine.restoreInitial(),e.gridstackNode=t,delete e._gridstackNodeOrig,delete r.dropElement,n&&(n.engine.addNode(t,!1),n.engine.restoreInitial());return}let t=this._placeholder?.gridstackNode;t&&(t._isExternal?(t._isAboutToRemove=!0,this.engine.removeNode(t)):t._isAboutToRemove&&a._itemRemoving(t.el,!1),this.engine.restoreInitial())}_removeDD(e){return O.draggable(e,`destroy`).resizable(e,`destroy`),e.gridstackNode&&delete e.gridstackNode._initDD,delete e.ddElement,this}_setupAcceptWidget(){if(this.opts.staticGrid||!this.opts.acceptWidgets&&!this.opts.removable)return O.droppable(this.el,`destroy`),this;let t,n,r=(r,i,a)=>{a||=i;let o=a.gridstackNode;if(!o)return;if(!o.grid?.el){a.style.transform=`scale(${1/this.dragTransform.xScale},${1/this.dragTransform.yScale})`;let e=a.getBoundingClientRect();a.style.left=e.x+(this.dragTransform.xScale-1)*(r.clientX-e.x)/this.dragTransform.xScale+`px`,a.style.top=e.y+(this.dragTransform.yScale-1)*(r.clientY-e.y)/this.dragTransform.yScale+`px`,a.style.transformOrigin=`0px 0px`}let{top:s,left:c}=a.getBoundingClientRect(),l=this.el.getBoundingClientRect();c-=l.left,s-=l.top;let u={position:{top:s*this.dragTransform.xScale,left:c*this.dragTransform.yScale}};if(o._temporaryRemoved){if(o.x=Math.max(0,Math.round(c/n)),o.y=Math.max(0,Math.round(s/t)),delete o.autoPosition,this.engine.nodeBoundFix(o),!this.engine.willItFit(o)){if(o.autoPosition=!0,!this.engine.willItFit(o)){O.off(i,`drag`);return}o._willFitPos&&(e.copyPos(o,o._willFitPos),delete o._willFitPos)}this._onStartMoving(a,r,u,o,n,t)}else this._dragOrResize(a,r,u,o,n,t)};return O.droppable(this.el,{accept:e=>{let t=e.gridstackNode||this._readAttr(e,!1);if(t?.grid===this)return!0;if(!this.opts.acceptWidgets)return!1;let n=!0;if(typeof this.opts.acceptWidgets==`function`)n=this.opts.acceptWidgets(e);else{let t=this.opts.acceptWidgets===!0?`.grid-stack-item`:this.opts.acceptWidgets;n=e.matches(t)}if(n&&t&&this.opts.maxRow){let e={w:t.w,h:t.h,minW:t.minW,minH:t.minH};n=this.engine.willItFit(e)}return n}}).on(this.el,`dropover`,(e,i,o)=>{let s=o?.gridstackNode||i.gridstackNode;if(s?.grid===this&&!s._temporaryRemoved)return!1;if(s?._sidebarOrig&&(s.w=s._sidebarOrig.w,s.h=s._sidebarOrig.h),s?.grid&&s.grid!==this&&!s._temporaryRemoved&&s.grid._leave(i,o),o||=i,n=this.cellWidth(),t=this.getCellHeight(!0),!s){let e=o.getAttribute(`data-gs-widget`)||o.getAttribute(`gridstacknode`);if(e){try{s=JSON.parse(e)}catch{console.error(`Gridstack dropover: Bad JSON format: `,e)}o.removeAttribute(`data-gs-widget`),o.removeAttribute(`gridstacknode`)}s||=this._readAttr(o),s._sidebarOrig={w:s.w,h:s.h}}s.grid||(s.el||(s={...s}),s._isExternal=!0,o.gridstackNode=s);let c=s.w||Math.round(o.offsetWidth/n)||1,l=s.h||Math.round(o.offsetHeight/t)||1;return s.grid&&s.grid!==this?(i._gridstackNodeOrig||=s,i.gridstackNode=s={...s,w:c,h:l,grid:this},delete s.x,delete s.y,this.engine.cleanupNode(s).nodeBoundFix(s),s._initDD=s._isExternal=s._temporaryRemoved=!0):(s.w=c,s.h=l,s._temporaryRemoved=!0),a._itemRemoving(s.el,!1),O.on(i,`drag`,r),r(e,i,o),!1}).on(this.el,`dropout`,(e,t,n)=>{let r=n?.gridstackNode||t.gridstackNode;return r&&(!r.grid||r.grid===this)&&(this._leave(t,n),this._isTemp&&this.removeAsSubGrid(r)),!1}).on(this.el,`drop`,(t,n,r)=>{let i=r?.gridstackNode||n.gridstackNode;if(i?.grid===this&&!i._isExternal)return!1;let o=!!this.placeholder.parentElement,s=n!==r;this.placeholder.remove(),delete this.placeholder.gridstackNode,o&&this.opts.animate&&(this.setAnimation(!1),this.setAnimation(!0,!0));let c=n._gridstackNodeOrig;if(delete n._gridstackNodeOrig,o&&c?.grid&&c.grid!==this){let e=c.grid;e.engine.removeNodeFromLayoutCache(c),e.engine.removedNodes.push(c),e._triggerRemoveEvent()._triggerChangeEvent(),e.parentGridNode&&!e.engine.nodes.length&&e.opts.subGridDynamic&&e.removeAsSubGrid()}if(!i||(o&&(this.engine.cleanupNode(i),i.grid=this),delete i.grid?._isTemp,O.off(n,`drag`),r&&r!==n?(r.remove(),n=r):n.remove(),this._removeDD(n),!o))return!1;let l=i.subGrid?.el?.gridstack;return e.copyPos(i,this._readAttr(this.placeholder)),e.removePositioningStyles(n),s&&(i.content||i.subGridOpts||a.addRemoveCB)?(delete i.el,n=this.addWidget(i)||n):(this._prepareElement(n,!0,i),this.el.appendChild(n),this.resizeToContentCheck(!1,i),l&&(l.parentGridNode=i),this._updateContainerHeight()),this.engine.addedNodes.push(i),this._triggerAddEvent(),this._triggerChangeEvent(),this.engine.endUpdate(),this._gsEventHandler.dropped&&this._gsEventHandler.dropped({...t,type:`dropped`},c&&c.grid?c:void 0,i),!1}),this}static _itemRemoving(e,t){if(!e)return;let n=e?e.gridstackNode:void 0;n?.grid&&!e.classList.contains(n.grid.opts.removableOptions.decline)&&(t?n._isAboutToRemove=!0:delete n._isAboutToRemove,t?e.classList.add(`grid-stack-item-removing`):e.classList.remove(`grid-stack-item-removing`))}_setupRemoveDrop(){if(typeof this.opts.removable!=`string`)return this;let e=document.querySelector(this.opts.removable);return e&&!this.opts.staticGrid&&!O.isDroppable(e)&&O.droppable(e,this.opts.removableOptions).on(e,`dropover`,(e,t)=>a._itemRemoving(t,!0)).on(e,`dropout`,(e,t)=>a._itemRemoving(t,!1)),this}refreshDragHandles(e){return a.getElements(e).forEach(e=>{e.ddElement?.ddDraggable?.refreshHandles()}),this}prepareDragDrop(t,n=!1){let r=t?.gridstackNode;if(!r)return this;let i=r.noMove||this.opts.disableDrag,a=r.noResize||this.opts.disableResize,o=this.opts.staticGrid||i&&a;if((n||o)&&(r._initDD&&(this._removeDD(t),delete r._initDD),o))return t.classList.add(`ui-draggable-disabled`,`ui-resizable-disabled`),this;if(!r._initDD){let n,i,a=(e,a)=>{this.triggerEvent(e,e.target),n=this.cellWidth(),i=this.getCellHeight(!0),this._onStartMoving(t,e,a,r,n,i)},o=(e,a)=>{this._dragOrResize(t,e,a,r,n,i)},s=n=>{this.placeholder.remove(),delete this.placeholder.gridstackNode,delete r._moving,delete r._resizing,delete r._event,delete r._lastTried;let i=r.w!==r._orig.w,a=n.target;if(a.gridstackNode&&a.gridstackNode.grid===this){if(r.el=a,r._isAboutToRemove){let e=t.gridstackNode.grid;e._gsEventHandler[n.type]&&e._gsEventHandler[n.type](n,a),e.engine.nodes.push(r),e.removeWidget(t,!0,!0)}else e.removePositioningStyles(a),r._temporaryRemoved?(this._writePosAttr(a,r),this.engine.addNode(r)):this._writePosAttr(a,r),this.triggerEvent(n,a);this._extraDragRow=0,this._updateContainerHeight(),this._triggerChangeEvent(),this.engine.endUpdate(),n.type===`resizestop`&&(Number.isInteger(r.sizeToContent)&&(r.sizeToContent=r.h),this.resizeToContentCheck(i,r))}};O.draggable(t,{start:a,stop:s,drag:o,rtl:this.opts.rtl===`auto`?void 0:this.opts.rtl}).resizable(t,{start:a,stop:s,resize:o,rtl:this.opts.rtl===`auto`?void 0:this.opts.rtl}),r._initDD=!0}return O.draggable(t,i?`disable`:`enable`).resizable(t,a?`disable`:`enable`),this}_onStartMoving(t,n,r,i,a,o){if(this.engine.cleanNodes().beginUpdate(i),this._writePosAttr(this.placeholder,i),this.el.appendChild(this.placeholder),this.placeholder.gridstackNode=i,i.grid?.el)this.dragTransform=e.getValuesFromTransformedElement(t);else if(this.placeholder&&this.placeholder.closest(`.grid-stack`)){let t=this.placeholder.closest(`.grid-stack`);this.dragTransform=e.getValuesFromTransformedElement(t)}else this.dragTransform={xScale:1,xOffset:0,yScale:1,yOffset:0};if(i.el=this.placeholder,i._lastUiPosition=r.position,i._prevYPix=r.position.top,i._moving=n.type===`dragstart`,i._resizing=n.type===`resizestart`,delete i._lastTried,n.type===`dropover`&&i._temporaryRemoved&&(this.engine.addNode(i),i._moving=!0),this.engine.cacheRects(a,o,this.opts.marginTop,this.opts.marginRight,this.opts.marginBottom,this.opts.marginLeft),n.type===`resizestart`){let e=this.getColumn()-i.x,n=(this.opts.maxRow||2**53-1)-i.y;O.resizable(t,`option`,`minWidth`,a*Math.min(i.minW||1,e)).resizable(t,`option`,`minHeight`,o*Math.min(i.minH||1,n)).resizable(t,`option`,`maxWidth`,a*Math.min(i.maxW||2**53-1,e)).resizable(t,`option`,`maxWidthMoveLeft`,a*Math.min(i.maxW||2**53-1,i.x+i.w)).resizable(t,`option`,`maxHeight`,o*Math.min(i.maxH||2**53-1,n)).resizable(t,`option`,`maxHeightMoveUp`,o*Math.min(i.maxH||2**53-1,i.y+i.h))}}_dragOrResize(t,n,i,a,o,s){let c={...a._orig},l=!1,u=this.opts.marginLeft,d=this.opts.marginRight,f=this.opts.marginTop,p=this.opts.marginBottom,m=Math.round(s*.1),h=Math.round(o*.1);if(u=Math.min(u,h),d=Math.min(d,h),f=Math.min(f,m),p=Math.min(p,m),n.type===`drag`){if(a._temporaryRemoved)return;a._prevYPix=i.position.top,this.opts.draggable.scroll!==!1&&r.dragElement?.updateScrollPosition(this.el);let e=i.position.left+(i.position.left>a._lastUiPosition.left?-d:u),t=i.position.top+(i.position.top>a._lastUiPosition.top?-p:f);c.x=Math.round(e/o),c.y=Math.round(t/s);let n=this._extraDragRow;if(this.engine.collide(a,c)){let e=this.getRow(),t=Math.max(0,c.y+a.h-e);this.opts.maxRow&&e+t>this.opts.maxRow&&(t=Math.max(0,this.opts.maxRow-e)),this._extraDragRow=t}else this._extraDragRow=0;if(this._extraDragRow!==n&&this._updateContainerHeight(),a.x===c.x&&a.y===c.y)return}else if(n.type===`resize`){if((c.x??0)<0||(e.updateScrollResize(n,t,s),c.w=Math.round((i.size.width-u)/o),c.h=Math.round((i.size.height-f)/s),a.w===c.w&&a.h===c.h)||a._lastTried&&a._lastTried.w===c.w&&a._lastTried.h===c.h)return;if(n.hasMovedX){let e=a.x-(c.w-a.w);c.x=e<0?0:e}if(n.hasMovedY){let e=a.y-(c.h-a.h);c.y=e<0?0:e}l=!0}a._event=n,a._lastTried=c;let g={x:i.position.left+u,y:i.position.top+f,w:(i.size?i.size.width:a.w*o)-u-d,h:(i.size?i.size.height:a.h*s)-f-p};if(this.engine.moveNodeCheck(a,{...c,cellWidth:o,cellHeight:s,rect:g,resizing:l})){a._lastUiPosition=i.position,this.engine.cacheRects(o,s,f,d,p,u),delete a._skipDown,l&&a.subGrid&&a.subGrid.onResize(),this._extraDragRow=0,this._updateContainerHeight();let e=n.target;a._sidebarOrig||this._writePosAttr(e,a),this.triggerEvent(n,e)}}triggerEvent(e,t){let n=this;for(;n.parentGridNode;)n=n.parentGridNode.grid;n._gsEventHandler[e.type]&&n._gsEventHandler[e.type](e,t)}_leave(e,t){t||=e;let n=t.gridstackNode;if(!n||(t.style.transform=t.style.transformOrigin=``,O.off(e,`drag`),n._temporaryRemoved))return;n._temporaryRemoved=!0,this.engine.removeNode(n),n.el=n._isExternal&&t?t:e;let r=n._sidebarOrig;n._isExternal&&this.engine.cleanupNode(n),n._sidebarOrig=r,this.opts.removable===!0&&a._itemRemoving(e,!0),e._gridstackNodeOrig?(e.gridstackNode=e._gridstackNodeOrig,delete e._gridstackNodeOrig):n._isExternal&&this.engine.restoreInitial()}};k.renderCB=(e,t)=>{e&&t?.content&&(e.textContent=t.content)},k.resizeToContentParent=`.grid-stack-item-content`,k.Utils=e,k.Engine=t,k.GDRev=`13.3.0`;export{k as t};
@@ -1 +0,0 @@
1
- import{b as e}from"./vendor-capacitor-COL6Kz75.js";export{e as GeolocationWeb};
@@ -1 +0,0 @@
1
- import{d as e}from"./vendor-capacitor-COL6Kz75.js";export{e as ShareWeb};
@@ -1 +0,0 @@
1
- import{p as e}from"./vendor-capacitor-COL6Kz75.js";export{e as PreferencesWeb};
@@ -1 +0,0 @@
1
- import{O as e}from"./vendor-capacitor-COL6Kz75.js";export{e as FileTransferWeb};
@@ -1 +0,0 @@
1
- import{h as e}from"./vendor-capacitor-COL6Kz75.js";export{e as NetworkWeb};
@@ -1 +0,0 @@
1
- import{l as e}from"./vendor-capacitor-COL6Kz75.js";export{e as SplashScreenWeb};
@@ -1 +0,0 @@
1
- import{U as e}from"./vendor-capacitor-COL6Kz75.js";export{e as BiometricAuthWeb};
@@ -1 +0,0 @@
1
- import{a as e}from"./vendor-DGke_6M4.js";export{e as BadgeWeb};
@@ -1 +0,0 @@
1
- import{M as e}from"./vendor-capacitor-COL6Kz75.js";export{e as AppWeb};
@@ -1 +0,0 @@
1
- import{S as e}from"./vendor-capacitor-COL6Kz75.js";export{e as FilesystemWeb};
@@ -1 +0,0 @@
1
- import{L as e}from"./vendor-capacitor-COL6Kz75.js";export{e as SecureStorageWeb};
@@ -1 +0,0 @@
1
- import{A as e}from"./vendor-capacitor-COL6Kz75.js";export{e as DeviceWeb};
@@ -1 +0,0 @@
1
- import{N as e}from"./vendor-capacitor-COL6Kz75.js";export{e as FirebaseMessagingWeb};
@@ -1 +0,0 @@
1
- import{t as e}from"./vendor-capacitor-COL6Kz75.js";export{e as CapacitorUpdaterWeb};
@@ -1 +0,0 @@
1
- import{r as e}from"./vendor-DGke_6M4.js";export{e as Workbox};