@camera.ui/server 0.0.102 → 0.0.103

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 (138) hide show
  1. package/dist/interface/assets/{404-DcjTOtsn.js → 404-C4HBXE9H.js} +1 -1
  2. package/dist/interface/assets/{About-Z0xjt2an.js → About-BB65Lzts.js} +1 -1
  3. package/dist/interface/assets/{Adminpanel-jJdM9Wyf.js → Adminpanel-DksrdOX6.js} +1 -1
  4. package/dist/interface/assets/{Automation-dKVxSYor.js → Automation-DSyCezSx.js} +2 -2
  5. package/dist/interface/assets/{Automations-D9YE4Mmq.js → Automations-BqHoiN9D.js} +1 -1
  6. package/dist/interface/assets/{Camera-DQgI8RWI.js → Camera-BUkNxSX8.js} +2 -2
  7. package/dist/interface/assets/{CameraConsole-S-0rZ7xg.js → CameraConsole-B5tlzPMf.js} +1 -1
  8. package/dist/interface/assets/{Cameras-ZoYp56rC.js → Cameras-DnMkOoQ-.js} +1 -1
  9. package/dist/interface/assets/{Camview-DEvTC5Ek.js → Camview-pqMzyAGd.js} +1 -1
  10. package/dist/interface/assets/{Config-CX4ETkCe.js → Config-BXraGGzy.js} +1 -1
  11. package/dist/interface/assets/{ConfigActionCameraControl-q5XPElmC.js → ConfigActionCameraControl-BW8EcAmD.js} +1 -1
  12. package/dist/interface/assets/{ConfigActionDelay-CmnGOzGO.js → ConfigActionDelay-Cv1Jc4Af.js} +1 -1
  13. package/dist/interface/assets/{ConfigActionHttp-BzMN1zFS.js → ConfigActionHttp-Exr4qXgr.js} +1 -1
  14. package/dist/interface/assets/{ConfigActionImageInput-C0Ix0ja1.js → ConfigActionImageInput-C_blNA7l.js} +1 -1
  15. package/dist/interface/assets/{ConfigActionNotification-C40X49rY.js → ConfigActionNotification-c82sNKGj.js} +1 -1
  16. package/dist/interface/assets/{ConfigActionOutput-qxLQ8kkv.js → ConfigActionOutput-BWWI1I05.js} +1 -1
  17. package/dist/interface/assets/{ConfigActionPlugin-D7aHqRD-.js → ConfigActionPlugin-C-ssa_L8.js} +1 -1
  18. package/dist/interface/assets/{ConfigActionSensor-DM3KQ7TG.js → ConfigActionSensor-D84c6MGM.js} +1 -1
  19. package/dist/interface/assets/{ConfigActionSnapshot-CIgxyJPp.js → ConfigActionSnapshot-gVinlxno.js} +1 -1
  20. package/dist/interface/assets/{ConfigActionVariable-JBtt43a-.js → ConfigActionVariable-BSQEmP0j.js} +1 -1
  21. package/dist/interface/assets/{ConfigConditionIfElse-Brr7stVC.js → ConfigConditionIfElse-C9741PPm.js} +1 -1
  22. package/dist/interface/assets/{ConfigConditionSensorState-oRHcSSxf.js → ConfigConditionSensorState-BaTq_Nw9.js} +1 -1
  23. package/dist/interface/assets/{ConfigConditionSwitch-CXtazUQ7.js → ConfigConditionSwitch-BlGjAB9K.js} +1 -1
  24. package/dist/interface/assets/{ConfigConditionTime-TXuc_jcO.js → ConfigConditionTime-Drt82ljn.js} +1 -1
  25. package/dist/interface/assets/{ConfigTriggerDetection-DPoXuR2T.js → ConfigTriggerDetection-CsMfvz0e.js} +1 -1
  26. package/dist/interface/assets/{ConfigTriggerGeofence-BvL4NSXf.js → ConfigTriggerGeofence-BDw4zW_P.js} +1 -1
  27. package/dist/interface/assets/{ConfigTriggerManual-C33HC8lS.js → ConfigTriggerManual-Bq8BSgf-.js} +1 -1
  28. package/dist/interface/assets/{ConfigTriggerSchedule-cNoINZGa.js → ConfigTriggerSchedule-BBH8-VaZ.js} +1 -1
  29. package/dist/interface/assets/{ConfigTriggerSensor-LK0fUaLN.js → ConfigTriggerSensor-DqT2GK2o.js} +1 -1
  30. package/dist/interface/assets/{ConfigTriggerSystem-DDfsEWhh.js → ConfigTriggerSystem-wbIuPI0Y.js} +1 -1
  31. package/dist/interface/assets/{ConfigTriggerWebhook-a5sLrKRg.js → ConfigTriggerWebhook-B-8yle9W.js} +1 -1
  32. package/dist/interface/assets/{Console-D5AmMyfF.js → Console-CI1H4Qzv.js} +1 -1
  33. package/dist/interface/assets/{CuiActionButton-Duxc-trM.js → CuiActionButton-DGHrQXSc.js} +1 -1
  34. package/dist/interface/assets/{CuiAvatar-gGQZX4H6.js → CuiAvatar-BNZbtuaI.js} +1 -1
  35. package/dist/interface/assets/{CuiBBoxPlayground-DMRP_V2x.js → CuiBBoxPlayground-_SGm4cz1.js} +1 -1
  36. package/dist/interface/assets/CuiBottomSheet-BcfVSQXw.js +1 -0
  37. package/dist/interface/assets/{CuiBottomSheet-GcX2wd-j.js → CuiBottomSheet-VX6AuCso.js} +1 -1
  38. package/dist/interface/assets/{CuiCameraCard-Byn8vdEF.js → CuiCameraCard-BEGdNbhj.js} +1 -1
  39. package/dist/interface/assets/{CuiCameraPipCard-CP7mDdEc.js → CuiCameraPipCard-DpAujrhA.js} +1 -1
  40. package/dist/interface/assets/{CuiCameraRecordings-8YcPmj62.js → CuiCameraRecordings-BRVbZCzz.js} +1 -1
  41. package/dist/interface/assets/{CuiCameraShares-Ds7Ydvga.js → CuiCameraShares-dY9bxWdp.js} +1 -1
  42. package/dist/interface/assets/{CuiCameraSnapshot-BYCOw5NR.js → CuiCameraSnapshot-DvIhxEdj.js} +1 -1
  43. package/dist/interface/assets/{CuiCameraTable-rfiEjzzY.js → CuiCameraTable-Ykb8p1Tt.js} +1 -1
  44. package/dist/interface/assets/{CuiDataTable-DjKY2rAJ.js → CuiDataTable-DyzBmfqA.js} +1 -1
  45. package/dist/interface/assets/{CuiFloatingButton-BaAiuemi.js → CuiFloatingButton-B4byvsOs.js} +1 -1
  46. package/dist/interface/assets/{CuiImage-Cy4cCbB9.js → CuiImage-C0GGnNA9.js} +1 -1
  47. package/dist/interface/assets/{CuiMenu-CMnBfV9C.js → CuiMenu-KizSc3du.js} +1 -1
  48. package/dist/interface/assets/{CuiPluginCard-Dp0o4UCK.js → CuiPluginCard-DpllCJXe.js} +2 -2
  49. package/dist/interface/assets/{CuiPluginOAuthButton-Dn1i7Rc3.js → CuiPluginOAuthButton--Jp3Q0A3.js} +2 -2
  50. package/dist/interface/assets/{CuiQRCode-DqdRNve_.js → CuiQRCode-D2hEZT9L.js} +1 -1
  51. package/dist/interface/assets/{CuiRecordingsGrid-SU4cdMt3.js → CuiRecordingsGrid-BdcRMu0G.js} +1 -1
  52. package/dist/interface/assets/{CuiSchema-DVgwhbCy.js → CuiSchema-CkgT_tmr.js} +1 -1
  53. package/dist/interface/assets/{CuiTopNavbarItem-CR5y7dIk.js → CuiTopNavbarItem-DdZ2xZLa.js} +1 -1
  54. package/dist/interface/assets/{CuiTopbarSlot-BhsSSnaB.js → CuiTopbarSlot-BlbZqDDn.js} +1 -1
  55. package/dist/interface/assets/{Faces-DbKr3KHJ.js → Faces-BkETqRJ6.js} +1 -1
  56. package/dist/interface/assets/{FirstSteps-D7VNyJkR.js → FirstSteps-BilLeQ5G.js} +1 -1
  57. package/dist/interface/assets/{Instances-WgUL_c_X.js → Instances-BdSaPTUA.js} +1 -1
  58. package/dist/interface/assets/{Logs-C_tUhDiu.js → Logs-Dgi4WIz_.js} +1 -1
  59. package/dist/interface/assets/{Menu-B35lIrxn.js → Menu-CaUSuqY2.js} +1 -1
  60. package/dist/interface/assets/{OAuthDeviceFlow-CuO4R9Tn.js → OAuthDeviceFlow-CX8VE9Op.js} +1 -1
  61. package/dist/interface/assets/{Plugin-Dt8qBsaL.js → Plugin-DiJY8ovk.js} +1 -1
  62. package/dist/interface/assets/{PluginConsole-C1Z3x7YJ.js → PluginConsole-B6YqeO05.js} +1 -1
  63. package/dist/interface/assets/{PluginSchema-BZgbOuMK.js → PluginSchema-g4Srx0FS.js} +1 -1
  64. package/dist/interface/assets/{Plugins-D5u8MyuS.js → Plugins-CMvoQGbI.js} +2 -2
  65. package/dist/interface/assets/{Recordings-27qcMkav.js → Recordings-CRZXMXeZ.js} +1 -1
  66. package/dist/interface/assets/{Settings-CfRWx2Bw.js → Settings-B5CPx04W.js} +1 -1
  67. package/dist/interface/assets/SettingsAccount-6i4VetmY.js +1 -0
  68. package/dist/interface/assets/{SettingsAccount-D0T_E5PY.js → SettingsAccount-BfZ8sdKS.js} +1 -1
  69. package/dist/interface/assets/{SettingsAppearance-TIxspygn.js → SettingsAppearance-CI7FpIXv.js} +1 -1
  70. package/dist/interface/assets/SettingsAppearance-wh2bqft_.js +1 -0
  71. package/dist/interface/assets/{SettingsBackup-DrU_jvQQ.js → SettingsBackup-BybcQ1Qu.js} +1 -1
  72. package/dist/interface/assets/{SettingsNotifications-t-7QlO5J.js → SettingsNotifications-wtu6QB4B.js} +1 -1
  73. package/dist/interface/assets/{SettingsRecordings-Dk4XuZZx.js → SettingsRecordings-CUAdt-gW.js} +1 -1
  74. package/dist/interface/assets/{SettingsRemote-DG-DoCw6.js → SettingsRemote-CfMbi4U2.js} +1 -1
  75. package/dist/interface/assets/{SettingsSystem-B1-BrqF3.js → SettingsSystem-uDcUCmqx.js} +2 -2
  76. package/dist/interface/assets/{SettingsUsers-C83HeCtY.js → SettingsUsers-DQD7uvLD.js} +1 -1
  77. package/dist/interface/assets/{Terminal-MSCRrILf.js → Terminal-BCqT206D.js} +1 -1
  78. package/dist/interface/assets/{VariableInput-Ccm5WyUF.js → VariableInput-B6XB9GPi.js} +1 -1
  79. package/dist/interface/assets/{VariableSuggestions-C2VQPcx4.js → VariableSuggestions-Bz3FsUVi.js} +1 -1
  80. package/dist/interface/assets/{VersionsHandler-B5D1agkJ.js → VersionsHandler-XIP-8qdF.js} +1 -1
  81. package/dist/interface/assets/{Workers-iOl-KSYM.js → Workers-n0R8LJrp.js} +1 -1
  82. package/dist/interface/assets/api-CLcqLYO9.js +2 -0
  83. package/dist/interface/assets/{api-Clb3q6BS.js → api-CPYyBUl4.js} +1 -1
  84. package/dist/interface/assets/{auth-Dz4uNiDV.js → auth-BQz6cI2B.js} +1 -1
  85. package/dist/interface/assets/{automations-Brf6t3Bl.js → automations-Cz8XYNjF.js} +1 -1
  86. package/dist/interface/assets/{automations-Bbg_E0fP.js → automations-DuP9VcsG.js} +1 -1
  87. package/dist/interface/assets/{backup-DGUIWswX.js → backup-CHJcbko5.js} +1 -1
  88. package/dist/interface/assets/{cameras-Dz5UZpc3.js → cameras-BOHWrQm2.js} +1 -1
  89. package/dist/interface/assets/{cameras.schema-reb8bxRi.js → cameras.schema-DGaqX6vz.js} +1 -1
  90. package/dist/interface/assets/cloudHandoff-9LBU5i-Q.js +1 -0
  91. package/dist/interface/assets/{deviceId-D99ZUAFS.js → deviceId-B9H0nPQf.js} +1 -1
  92. package/dist/interface/assets/{hasPermission-D44ci-iH.js → hasPermission-BHM3xbrG.js} +1 -1
  93. package/dist/interface/assets/{instances-Cb6K1-mb.js → instances-8zX84KmH.js} +1 -1
  94. package/dist/interface/assets/{locale-BncIew1V.js → locale-DXhDcKlE.js} +1 -1
  95. package/dist/interface/assets/{main-5UsNmqPQ.js → main-CZoUmEEu.js} +2 -2
  96. package/dist/interface/assets/{notifications-CMZQ-2Mu.js → notifications-DpmIWiCl.js} +1 -1
  97. package/dist/interface/assets/{plugins-B5zOpwk5.js → plugins-BWlFg8TN.js} +1 -1
  98. package/dist/interface/assets/{round-restart-alt-BnQ65jUB.js → round-restart-alt-CRc-4ova.js} +1 -1
  99. package/dist/interface/assets/router-CYuS11OS.js +2 -0
  100. package/dist/interface/assets/{routerState-B8-atCZl.js → routerState-BIdUnXLb.js} +1 -1
  101. package/dist/interface/assets/{server-D9bvACdr.js → server-B3_iwGek.js} +1 -1
  102. package/dist/interface/assets/{shares-KWDL38x0.js → shares-DgzHTM68.js} +1 -1
  103. package/dist/interface/assets/{theme-C5VbiFUN.js → theme-BDv_45d8.js} +1 -1
  104. package/dist/interface/assets/{types-BD1lhOds.js → types-DZNoDDGr.js} +1 -1
  105. package/dist/interface/assets/{ui-DhLpf0gJ.js → ui-DSOnsqS6.js} +1 -1
  106. package/dist/interface/assets/{useBiometricCredentials-DkHplqIW.js → useBiometricCredentials-CIfX40Td.js} +1 -1
  107. package/dist/interface/assets/{useCameraOptions-B7sUfzcj.js → useCameraOptions-C_h2n9yn.js} +1 -1
  108. package/dist/interface/assets/{useCuiCameraDrawer-Cm1CzGPT.js → useCuiCameraDrawer-Ca6U-GzM.js} +1 -1
  109. package/dist/interface/assets/{useCuiDialog-nDtDuLq-.js → useCuiDialog-C-2PMjxH.js} +1 -1
  110. package/dist/interface/assets/{useFileDownload-BGGtfpvc.js → useFileDownload-DntU1WW7.js} +1 -1
  111. package/dist/interface/assets/{useLogsSocket-D6H2UEA3.js → useLogsSocket-R2SaD_bg.js} +1 -1
  112. package/dist/interface/assets/{useSharedComposables-SA61SVjO.js → useSharedComposables-CzkF-tst.js} +1 -1
  113. package/dist/interface/assets/{useStreamStatus-BvExqanR.js → useStreamStatus-DFQPLtc1.js} +1 -1
  114. package/dist/interface/assets/{users.schema-DLRKvt0q.js → users.schema-Oy4QkALa.js} +1 -1
  115. package/dist/interface/assets/{vendor-cameraui-lEA-78Jn.js → vendor-cameraui-D-WYtlxb.js} +38 -38
  116. package/dist/interface/assets/{vendor-core-Dqc843Zs.js → vendor-core-CWeZebhd.js} +1 -1
  117. package/dist/interface/assets/{vendor-primevue-DST-0Ea0.js → vendor-primevue-01WhBsPb.js} +1 -1
  118. package/dist/interface/assets/{view-grid-CGwcQ9EA.js → view-grid-RH-li4l6.js} +1 -1
  119. package/dist/interface/index.html +40 -40
  120. package/dist/interface/sw.js +1 -1
  121. package/dist/server/package.json +4 -4
  122. package/dist/server/src/api/plugins/natsSubFirewall.d.ts +21 -0
  123. package/dist/server/src/api/plugins/natsSubFirewall.js +122 -0
  124. package/dist/server/src/api/plugins/natsSubFirewall.js.map +1 -0
  125. package/dist/server/src/api/plugins/proxy.plugin.js +68 -24
  126. package/dist/server/src/api/plugins/proxy.plugin.js.map +1 -1
  127. package/dist/server/src/api/schemas/cameras.schema.js +2 -2
  128. package/dist/server/src/api/schemas/cameras.schema.js.map +1 -1
  129. package/dist/server/src/camera/controller.js +1 -1
  130. package/dist/server/src/camera/controller.js.map +1 -1
  131. package/package.json +4 -4
  132. package/dist/interface/assets/CuiBottomSheet-BVnrlt1Q.js +0 -1
  133. package/dist/interface/assets/SettingsAccount-DTPk6AO-.js +0 -1
  134. package/dist/interface/assets/SettingsAppearance-B0g7xaoM.js +0 -1
  135. package/dist/interface/assets/api-DhzCRVL5.js +0 -2
  136. package/dist/interface/assets/cloudHandoff-Bc2179n6.js +0 -1
  137. package/dist/interface/assets/router-CliwduXG.js +0 -2
  138. /package/dist/interface/assets/{error-256-DLKVOU2S.png → logo-512-DLKVOU2S.png} +0 -0
@@ -1 +1 @@
1
- import{Hn as e,Kn as t}from"./vendor-cameraui-lEA-78Jn.js";import{$t as n,Gt as r,Hn as i,Kt as a,Ln as o,On as s,Qt as c,Tn as l,Xt as u,Zt as d,_n as f,an as p,cr as m,dr as h,en as g,fr as _,lr as v,or as y,sn as b,zn as x}from"./vendor-CUsAwmr-.js";import{t as S}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{t as C}from"./close-CEZvWyN1.js";import{t as w}from"./chevron-down-BFDmLtMX.js";import{t as T}from"./ring-resize-5EO1Mgq-.js";var E={class:`flex flex-row w-full h-full justify-between items-center gap-2`},D={class:`flex flex-row items-center gap-1 shrink-0`},O=S(b({__name:`CuiTopNavbar`,props:{scrollable:{type:Boolean,default:!1},leftOffset:{default:0},animate:{type:Boolean}},setup(e){let{scrollable:t,leftOffset:n,animate:r}=y(e);return(e,i)=>(l(),g(`div`,{class:v([`cui-topnavbar fixed h-[55px] w-full p-2 pr-safe-offset-2 z-2 left-0 right-0`,{"overflow-x-scroll":m(t)}]),style:h({paddingLeft:`calc(${m(n)}px + max(8px, env(safe-area-inset-left, 0px)))`,transition:m(r)?`padding-left 200ms`:void 0})},[d(`div`,E,[e.$slots.full?(l(),g(`div`,{key:0,class:v([`flex flex-row items-center gap-1 w-full`,{"overflow-x-auto hide-scrollbar":m(t)}])},[s(e.$slots,`full`,{},void 0,!0)],2)):(l(),g(a,{key:1},[d(`div`,{class:v([`flex flex-row items-center gap-1 min-w-0`,{"overflow-x-auto hide-scrollbar":m(t)}])},[s(e.$slots,`left`,{},void 0,!0)],2),i[0]||=d(`div`,{class:`flex-grow shrink`},null,-1),d(`div`,D,[s(e.$slots,`right`,{},void 0,!0)])],64))])],6))}}),[[`__scopeId`,`data-v-6e7cb26a`]]),k={key:0,class:`w-2 h-2 rounded-full bg-green-500 shrink-0`},A={key:2,class:`w-2 h-2 rounded-full bg-red-500 shrink-0`},j={key:1,class:`cui-topnavbar-item-label`},M=S(b({__name:`CuiTopNavbarItem`,props:{active:{type:Boolean,default:!1},closeable:{type:Boolean},menuOpen:{type:Boolean},primary:{type:Boolean},type:{default:`button`},status:{},label:{},disabled:{type:[Boolean,String],default:!1},badge:{},badgeSeverity:{default:`secondary`},loading:{type:Boolean}},emits:[`click`,`close`],setup(h,{emit:b}){let S=h,E=b,{type:D,label:O,active:M,disabled:N,badge:P,badgeSeverity:F,closeable:I,status:L,loading:R,menuOpen:z,primary:B}=y(S),V=o(`buttonRef`),H=u(()=>!O.value&&D.value===`button`),U=u(()=>[`shrink-0`,{"cui-topnavbar-item":!B.value,"cui-topnavbar-item-primary":B.value,"cui-topnavbar-item-active":M.value,"cui-topnavbar-item-tab":D.value===`tab`,"cui-topnavbar-item-dropdown":D.value===`dropdown`,"cui-icon-md":H.value,disabled:N.value}]);function W(e){N.value||E(`click`,e)}return x(M,e=>{e&&f(()=>{V.value?.$el?.scrollIntoView({behavior:`smooth`,block:`nearest`,inline:`nearest`})})},{immediate:!0}),(o,u)=>{let f=T,h=t,y=w,b=C,x=e;return l(),c(x,{ref_key:`buttonRef`,ref:V,class:v(m(U)),disabled:m(N),loading:m(R),text:``,size:`small`,rounded:m(H),onClick:W},{default:i(()=>[d(`div`,{class:v([`flex items-center gap-1.5`,{"cursor-not-allowed":m(N)}])},[m(L)?(l(),g(a,{key:0},[m(L)===`connected`?(l(),g(`span`,k)):m(L)===`connecting`?(l(),c(f,{key:1,class:`w-3 h-3 text-yellow-500 shrink-0`})):(l(),g(`span`,A))],64)):n(``,!0),s(o.$slots,`icon`,{},void 0,!0),m(O)?(l(),g(`span`,j,_(m(O)),1)):n(``,!0),m(P)?(l(),c(h,{key:2,value:m(P),severity:m(F),class:`ml-1`},null,8,[`value`,`severity`])):n(``,!0),m(D)===`dropdown`?(l(),c(y,{key:3,class:v([`w-4 h-4 transform transition-transform duration-300`,{"rotate-180":m(z)}])},null,8,[`class`])):n(``,!0),m(I)?(l(),c(x,{key:4,severity:`secondary`,text:``,rounded:``,class:`!p-0 !w-5 !h-5 ml-1`,onClick:u[0]||=r(e=>o.$emit(`close`),[`stop`])},{icon:i(()=>[p(b,{class:`w-3 h-3 opacity-60 hover:opacity-100`})]),_:1})):n(``,!0)],2)]),_:3},8,[`class`,`disabled`,`loading`,`rounded`])}}}),[[`__scopeId`,`data-v-5e6d8fe6`]]);export{O as n,M as t};
1
+ import{Hn as e,Kn as t}from"./vendor-cameraui-D-WYtlxb.js";import{$t as n,Gt as r,Hn as i,Kt as a,Ln as o,On as s,Qt as c,Tn as l,Xt as u,Zt as d,_n as f,an as p,cr as m,dr as h,en as g,fr as _,lr as v,or as y,sn as b,zn as x}from"./vendor-CUsAwmr-.js";import{t as S}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{t as C}from"./close-CEZvWyN1.js";import{t as w}from"./chevron-down-BFDmLtMX.js";import{t as T}from"./ring-resize-5EO1Mgq-.js";var E={class:`flex flex-row w-full h-full justify-between items-center gap-2`},D={class:`flex flex-row items-center gap-1 shrink-0`},O=S(b({__name:`CuiTopNavbar`,props:{scrollable:{type:Boolean,default:!1},leftOffset:{default:0},animate:{type:Boolean}},setup(e){let{scrollable:t,leftOffset:n,animate:r}=y(e);return(e,i)=>(l(),g(`div`,{class:v([`cui-topnavbar fixed h-[55px] w-full p-2 pr-safe-offset-2 z-2 left-0 right-0`,{"overflow-x-scroll":m(t)}]),style:h({paddingLeft:`calc(${m(n)}px + max(8px, env(safe-area-inset-left, 0px)))`,transition:m(r)?`padding-left 200ms`:void 0})},[d(`div`,E,[e.$slots.full?(l(),g(`div`,{key:0,class:v([`flex flex-row items-center gap-1 w-full`,{"overflow-x-auto hide-scrollbar":m(t)}])},[s(e.$slots,`full`,{},void 0,!0)],2)):(l(),g(a,{key:1},[d(`div`,{class:v([`flex flex-row items-center gap-1 min-w-0`,{"overflow-x-auto hide-scrollbar":m(t)}])},[s(e.$slots,`left`,{},void 0,!0)],2),i[0]||=d(`div`,{class:`flex-grow shrink`},null,-1),d(`div`,D,[s(e.$slots,`right`,{},void 0,!0)])],64))])],6))}}),[[`__scopeId`,`data-v-6e7cb26a`]]),k={key:0,class:`w-2 h-2 rounded-full bg-green-500 shrink-0`},A={key:2,class:`w-2 h-2 rounded-full bg-red-500 shrink-0`},j={key:1,class:`cui-topnavbar-item-label`},M=S(b({__name:`CuiTopNavbarItem`,props:{active:{type:Boolean,default:!1},closeable:{type:Boolean},menuOpen:{type:Boolean},primary:{type:Boolean},type:{default:`button`},status:{},label:{},disabled:{type:[Boolean,String],default:!1},badge:{},badgeSeverity:{default:`secondary`},loading:{type:Boolean}},emits:[`click`,`close`],setup(h,{emit:b}){let S=h,E=b,{type:D,label:O,active:M,disabled:N,badge:P,badgeSeverity:F,closeable:I,status:L,loading:R,menuOpen:z,primary:B}=y(S),V=o(`buttonRef`),H=u(()=>!O.value&&D.value===`button`),U=u(()=>[`shrink-0`,{"cui-topnavbar-item":!B.value,"cui-topnavbar-item-primary":B.value,"cui-topnavbar-item-active":M.value,"cui-topnavbar-item-tab":D.value===`tab`,"cui-topnavbar-item-dropdown":D.value===`dropdown`,"cui-icon-md":H.value,disabled:N.value}]);function W(e){N.value||E(`click`,e)}return x(M,e=>{e&&f(()=>{V.value?.$el?.scrollIntoView({behavior:`smooth`,block:`nearest`,inline:`nearest`})})},{immediate:!0}),(o,u)=>{let f=T,h=t,y=w,b=C,x=e;return l(),c(x,{ref_key:`buttonRef`,ref:V,class:v(m(U)),disabled:m(N),loading:m(R),text:``,size:`small`,rounded:m(H),onClick:W},{default:i(()=>[d(`div`,{class:v([`flex items-center gap-1.5`,{"cursor-not-allowed":m(N)}])},[m(L)?(l(),g(a,{key:0},[m(L)===`connected`?(l(),g(`span`,k)):m(L)===`connecting`?(l(),c(f,{key:1,class:`w-3 h-3 text-yellow-500 shrink-0`})):(l(),g(`span`,A))],64)):n(``,!0),s(o.$slots,`icon`,{},void 0,!0),m(O)?(l(),g(`span`,j,_(m(O)),1)):n(``,!0),m(P)?(l(),c(h,{key:2,value:m(P),severity:m(F),class:`ml-1`},null,8,[`value`,`severity`])):n(``,!0),m(D)===`dropdown`?(l(),c(y,{key:3,class:v([`w-4 h-4 transform transition-transform duration-300`,{"rotate-180":m(z)}])},null,8,[`class`])):n(``,!0),m(I)?(l(),c(x,{key:4,severity:`secondary`,text:``,rounded:``,class:`!p-0 !w-5 !h-5 ml-1`,onClick:u[0]||=r(e=>o.$emit(`close`),[`stop`])},{icon:i(()=>[p(b,{class:`w-3 h-3 opacity-60 hover:opacity-100`})]),_:1})):n(``,!0)],2)]),_:3},8,[`class`,`disabled`,`loading`,`rounded`])}}}),[[`__scopeId`,`data-v-5e6d8fe6`]]);export{O as n,M as t};
@@ -1 +1 @@
1
- import{$t as e,Jt as t,On as n,Qn as r,Qt as i,Tn as a,cr as o,rr as s,sn as c,wn as l}from"./vendor-CUsAwmr-.js";import{t as u}from"./useSharedComposables-SA61SVjO.js";var d=r(new Map),f=s();function p(){return{hasSlot:e=>(d.get(e)||0)>0,registerSlot:e=>{d.set(e,(d.get(e)||0)+1),l(()=>{let t=d.get(e)||0;t<=1?d.delete(e):d.set(e,t-1)})},registerScrollToTop:e=>{f.value=e,l(()=>{f.value===e&&(f.value=void 0)})},scrollToTop:()=>{f.value?f.value():window.scrollTo({top:0,behavior:`smooth`})}}}var m=c({__name:`CuiTopbarSlot`,props:{position:{}},setup(r){let s=r,{smBreakpoint:c}=u(),{registerSlot:l}=p();return l(s.position),(s,l)=>o(c)?(a(),i(t,{key:0,to:`#cui-topbar-${r.position}`,defer:``},[n(s.$slots,`default`)],8,[`to`])):e(``,!0)}});export{p as n,m as t};
1
+ import{$t as e,Jt as t,On as n,Qn as r,Qt as i,Tn as a,cr as o,rr as s,sn as c,wn as l}from"./vendor-CUsAwmr-.js";import{t as u}from"./useSharedComposables-CzkF-tst.js";var d=r(new Map),f=s();function p(){return{hasSlot:e=>(d.get(e)||0)>0,registerSlot:e=>{d.set(e,(d.get(e)||0)+1),l(()=>{let t=d.get(e)||0;t<=1?d.delete(e):d.set(e,t-1)})},registerScrollToTop:e=>{f.value=e,l(()=>{f.value===e&&(f.value=void 0)})},scrollToTop:()=>{f.value?f.value():window.scrollTo({top:0,behavior:`smooth`})}}}var m=c({__name:`CuiTopbarSlot`,props:{position:{}},setup(r){let s=r,{smBreakpoint:c}=u(),{registerSlot:l}=p();return l(s.position),(s,l)=>o(c)?(a(),i(t,{key:0,to:`#cui-topbar-${r.position}`,defer:``},[n(s.$slots,`default`)],8,[`to`])):e(``,!0)}});export{p as n,m as t};
@@ -1 +1 @@
1
- import{Hn as e,N as t,Nn as n,R as r,ct as i,fi as a,jn as o,lt as s,tt as c}from"./vendor-cameraui-lEA-78Jn.js";import{C as l,s as u}from"./api-DhzCRVL5.js";import{$t as d,Dn as f,Gt as p,Hn as m,Kt as h,Ln as g,Qt as _,Tn as v,Un as y,Xn as b,Xt as x,Yn as S,Zt as C,an as w,cr as T,dr as E,en as D,er as O,fr as k,lr as A,sn as j,zn as M}from"./vendor-CUsAwmr-.js";import{a as N,t as P}from"./useSharedComposables-SA61SVjO.js";import{t as F}from"./close-CEZvWyN1.js";import{D as ee,E as te,J as I,O as ne,j as L,k as re,w as ie}from"./vendor-primevue-DST-0Ea0.js";import{t as ae}from"./face-recognition-K0AJVYWA.js";import{t as oe}from"./CuiFloatingButton-BaAiuemi.js";import{t as R}from"./useCuiDialog-nDtDuLq-.js";import{t as se}from"./CuiTopbarSlot-BhsSSnaB.js";import{t as z}from"./plugins-B5zOpwk5.js";import{t as B}from"./delete-C4Qcsafo.js";import{t as ce}from"./back-filled-DVeRsKmt.js";import{t as le}from"./plus-CuWXW2I0.js";var V={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function H(e,t){return v(),D(`svg`,V,[...t[0]||=[C(`path`,{fill:`currentColor`,d:`M13 8a4 4 0 0 1-4 4a4 4 0 0 1-4-4a4 4 0 0 1 4-4a4 4 0 0 1 4 4m4 10v2H1v-2c0-2.21 3.58-4 8-4s8 1.79 8 4m3.5-3.5V16H19v-1.5zm-2-5H17V9a3 3 0 0 1 3-3a3 3 0 0 1 3 3c0 .97-.5 1.88-1.29 2.41l-.3.19c-.57.4-.91 1.01-.91 1.7v.2H19v-.2c0-1.19.6-2.3 1.59-2.95l.29-.19c.39-.26.62-.69.62-1.16A1.5 1.5 0 0 0 20 7.5A1.5 1.5 0 0 0 18.5 9z`},null,-1)]])}var ue=b({name:`mdi-account-question`,render:H}),U={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function W(e,t){return v(),D(`svg`,U,[...t[0]||=[C(`path`,{fill:`currentColor`,d:`M15 14c-2.67 0-8 1.33-8 4v2h16v-2c0-2.67-5.33-4-8-4m-9-4V7H4v3H1v2h3v3h2v-3h3v-2m6 2a4 4 0 0 0 4-4a4 4 0 0 0-4-4a4 4 0 0 0-4 4a4 4 0 0 0 4 4`},null,-1)]])}var G=b({name:`mdi-account-plus`,render:W}),K={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function q(e,t){return v(),D(`svg`,K,[...t[0]||=[C(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M5 12h14`},null,-1)]])}var J=b({name:`tabler-minus`,render:q}),Y={class:`aspect-square overflow-hidden flex items-center justify-center bg-black/5 dark:bg-black/30`},de=[`src`],fe=[`src`],pe={class:`font-medium truncate`},X={class:`text-xs text-muted`},Z={key:1,class:`relative cursor-default`},me={class:`bg-neutral-900 w-full rounded-xl overflow-hidden relative border-[1px] border-color shadow-lg`,style:{"aspect-ratio":`1 / 1`}},he=[`src`],ge={key:1,class:`w-full h-full flex items-center justify-center bg-neutral-800/80`},_e=[`src`],ve={class:`absolute top-0 left-0 right-0 p-2 bg-gradient-to-b from-black/60 to-transparent`},ye={class:`flex items-center justify-between`},be={class:`text-xs text-white/70`},xe={class:`absolute bottom-0 left-0 right-0 p-1.5 bg-gradient-to-t from-black/60 to-transparent flex items-center justify-center gap-1 dark-mode`},Se=j({__name:`CuiFaceCard`,props:{variant:{},thumbnail:{},name:{},imageCount:{},cameraName:{},timestamp:{},confidence:{},compact:{type:Boolean},showRemove:{type:Boolean},assignValue:{},assignOptions:{}},emits:[`click`,`assign`,`assign-prompt`,`skip`,`remove`],setup(t){let n=t,r=u(),a=x(()=>n.confidence?n.confidence>=.9?`text-green-400`:n.confidence>=.7?`text-yellow-400`:`text-red-400`:`text-white/50`),o=x(()=>n.timestamp?new Date(n.timestamp).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`}):``);return(n,s)=>{let c=i,l=J,u=e,f=G,h=B,g=I;return t.variant===`known`?(v(),_(c,{key:0,class:`cui-card transition-shadow cursor-pointer hover:shadow-md`,onClick:s[0]||=e=>n.$emit(`click`)},{header:m(()=>[C(`div`,Y,[t.thumbnail?(v(),D(`img`,{key:0,src:t.thumbnail,class:`w-full h-full object-cover`},null,8,de)):(v(),D(`img`,{key:1,src:T(r),class:`w-1/2 h-1/2 object-contain`},null,8,fe))])]),content:m(()=>[C(`div`,pe,k(t.name),1),C(`div`,X,k(t.imageCount)+` `+k(n.$t(`views.faces.images`)),1)]),_:1})):(v(),D(`div`,Z,[C(`div`,me,[t.thumbnail?(v(),D(`img`,{key:0,src:t.thumbnail,class:`w-full h-full object-cover`},null,8,he)):(v(),D(`div`,ge,[C(`img`,{src:T(r),class:`w-1/3 h-1/3 object-contain opacity-20`},null,8,_e)])),C(`div`,ve,[C(`div`,ye,[C(`span`,be,k(T(o)),1),t.confidence?(v(),D(`span`,{key:0,class:A([`text-xs font-medium`,T(a)])},k(Math.round(t.confidence*100))+`%`,3)):d(``,!0)])]),C(`div`,xe,[t.showRemove?y((v(),_(u,{key:0,severity:`secondary`,rounded:``,size:`small`,class:`cui-icon-sm text-white`,onClick:s[1]||=p(e=>n.$emit(`remove`),[`stop`])},{icon:m(()=>[w(l,{class:`w-4 h-4`})]),_:1})),[[g,n.$t(`views.faces.remove_from_cluster`),void 0,{top:!0}]]):y((v(),_(u,{key:1,severity:`secondary`,rounded:``,size:`small`,class:`cui-icon-sm text-white`,onClick:s[2]||=p(e=>n.$emit(`assign-prompt`),[`stop`])},{icon:m(()=>[w(f,{width:`100%`,height:`100%`})]),_:1})),[[g,n.$t(`views.faces.assign`),void 0,{top:!0}]]),y((v(),_(u,{severity:`danger`,rounded:``,size:`small`,class:`cui-icon-sm text-white`,onClick:s[3]||=p(e=>n.$emit(`skip`),[`stop`])},{icon:m(()=>[w(h,{width:`100%`,height:`100%`})]),_:1})),[[g,n.$t(`views.faces.discard`),void 0,{top:!0}]])])])]))}}}),Ce={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function we(e,t){return v(),D(`svg`,Ce,[...t[0]||=[C(`path`,{fill:`currentColor`,d:`M17.65 6.35A7.96 7.96 0 0 0 12 4a8 8 0 0 0-8 8a8 8 0 0 0 8 8c3.73 0 6.84-2.55 7.73-6h-2.08A5.99 5.99 0 0 1 12 18a6 6 0 0 1-6-6a6 6 0 0 1 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4z`},null,-1)]])}var Te=b({name:`mdi-refresh`,render:we}),Ee={key:0,class:`text-sm text-muted mb-4`},De={key:1,class:`grid grid-cols-3 gap-2`},Oe=[`src`],ke={key:2,class:`text-muted text-sm text-center py-8`},Ae=j({__name:`FaceDetail`,props:{face:{},onRemoveImage:{type:Function},onDeletePerson:{type:Function}},setup(t,{expose:n}){let r=t,i=x(()=>r.face);return n({onConfirm:async()=>(r.onDeletePerson(),!0)}),(n,r)=>{let a=F,o=e;return v(),D(`div`,null,[T(i).imageCount?(v(),D(`div`,Ee,k(T(i).imageCount)+` `+k(n.$t(`views.faces.training_images`)),1)):d(``,!0),T(i).images.length?(v(),D(`div`,De,[(v(!0),D(h,null,f(T(i).images,(e,n)=>(v(),D(`div`,{key:n,class:`relative aspect-square rounded-2xl overflow-hidden bg-surface-100 dark:bg-surface-800`},[C(`img`,{src:e.src,class:`w-full h-full object-cover`},null,8,Oe),e.confidence?(v(),D(`div`,{key:0,class:A([`absolute bottom-0.5 right-0.5 text-[10px] font-medium px-1 rounded bg-black/60`,e.confidence>=.9?`text-green-400`:e.confidence>=.7?`text-yellow-400`:`text-red-400`])},k(Math.round(e.confidence*100))+`% `,3)):d(``,!0),w(o,{severity:`danger`,rounded:``,class:`!absolute top-1 right-1 cui-icon-sm text-white`,onClick:e=>t.onRemoveImage(n)},{icon:m(()=>[w(a,{width:`100%`,height:`100%`})]),_:1},8,[`onClick`])]))),128))])):(v(),D(`div`,ke,k(n.$t(`views.faces.no_known_faces`)),1))])}}}),je={class:`flex flex-col gap-2 w-full`},Me={for:`personName`,class:`cui-label`},Q=j({__name:`FaceNewPerson`,props:{knownNames:{}},setup(e,{expose:t}){let n=e,r=O(``),i=O([]);function a(e){let t=e.query.toLowerCase();i.value=(n.knownNames??[]).filter(e=>e.toLowerCase().includes(t))}return t({onConfirm:async()=>r.value.trim()||null}),(e,t)=>{let n=ie;return v(),D(`div`,je,[C(`label`,Me,k(e.$t(`views.faces.name`)),1),w(n,{id:`personName`,modelValue:T(r),"onUpdate:modelValue":t[0]||=e=>S(r)?r.value=e:null,suggestions:T(i),class:`w-full`,fluid:``,placeholder:e.$t(`views.faces.enter_name`),autofocus:``,onComplete:a},null,8,[`modelValue`,`suggestions`,`placeholder`])])}}}),Ne={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Pe(e,t){return v(),D(`svg`,Ne,[...t[0]||=[C(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2M7 9l5-5l5 5m-5-5v12`},null,-1)]])}var Fe=b({name:`tabler-upload`,render:Pe}),$=[`image/jpeg`,`image/png`,`image/webp`],Ie={class:`flex flex-col gap-6`},Le={class:`cui-label`},Re={class:`cui-label`},ze={key:0},Be={class:`text-sm text-muted`},Ve={key:1},He=[`src`],Ue=[`accept`],We={key:0,class:`text-xs text-red-500 mt-1`},Ge={class:`flex items-center justify-center mt-2 text-xs text-muted`},Ke=j({__name:`FaceUpload`,props:{onEnroll:{type:Function}},setup(e,{expose:t}){let r=new z,i=e,{t:s}=a(),{data:l}=r.getPluginsExtensionsQuery({page:1,pageSize:-1}),u=O(``),f=O(``),m=O(``),h=O(null),g=O(``),_=O(),y=x(()=>(l.value?.result??[]).filter(e=>o(e.contract,n.FaceDetection)).map(e=>({label:e.displayName,value:e.pluginName})));function b(){_.value?.click()}function E(e){let t=e.target.files?.[0];t&&N(t)}function A(e){let t=e.dataTransfer?.files[0];t&&N(t)}function j(e){return $.includes(e.type)?e.size>10485760?s(`views.faces.file_too_large`,{maxSize:10}):null:s(`views.faces.invalid_format`)}function N(e){g.value=``;let t=j(e);if(t){g.value=t,h.value=null,m.value=``;return}let n=new FileReader;n.onload=()=>{h.value=new Uint8Array(n.result)},n.readAsArrayBuffer(e);let r=new FileReader;r.onload=()=>{m.value=r.result},r.readAsDataURL(e)}return M(y,e=>{!f.value&&e.length===1&&(f.value=e[0].value)},{immediate:!0}),t({onConfirm:async()=>!u.value||!f.value||!h.value?null:(await i.onEnroll(u.value,h.value,f.value),!0)}),(e,t)=>{let n=c,r=L,i=Fe;return v(),D(`div`,Ie,[C(`div`,null,[C(`label`,Le,k(e.$t(`views.faces.name`)),1),w(n,{modelValue:T(u),"onUpdate:modelValue":t[0]||=e=>S(u)?u.value=e:null,modelModifiers:{trim:!0},placeholder:e.$t(`views.faces.enter_name`),class:`w-full`,autofocus:``},null,8,[`modelValue`,`placeholder`])]),C(`div`,null,[C(`label`,Re,k(e.$t(`views.faces.face_plugin`)),1),w(r,{modelValue:T(f),"onUpdate:modelValue":t[1]||=e=>S(f)?f.value=e:null,options:T(y),"option-label":`label`,"option-value":`value`,placeholder:e.$t(`views.faces.select_plugin`),class:`w-full`},null,8,[`modelValue`,`options`,`placeholder`])]),C(`div`,null,[t[3]||=C(`label`,{class:`cui-label mb-1`},`Image`,-1),C(`div`,{class:`border-2 border-dashed border-surface-300 dark:border-surface-600 rounded-lg p-6 text-center cursor-pointer hover:border-primary transition-colors`,onClick:b,onDragover:t[2]||=p(()=>{},[`prevent`]),onDrop:p(A,[`prevent`])},[T(m)?(v(),D(`div`,Ve,[C(`img`,{src:T(m),class:`max-h-48 mx-auto rounded`},null,8,He)])):(v(),D(`div`,ze,[w(i,{class:`w-8 h-8 text-muted mx-auto mb-2`}),C(`div`,Be,k(e.$t(`views.faces.drop_image`)),1)]))],32),C(`input`,{ref_key:`fileInput`,ref:_,type:`file`,accept:T($).join(`,`),class:`hidden`,onChange:E},null,40,Ue),T(g)?(v(),D(`div`,We,k(T(g)),1)):d(``,!0),C(`div`,Ge,[C(`span`,null,`(`+k(T(10))+`MB, `+k(T($).join(`, `))+`)`,1)])])])}}}),qe={class:`flex flex-col`},Je={key:0,class:`page-title`},Ye={class:`p-3`},Xe={key:0,class:`flex flex-1 min-h-0 flex-col items-center justify-center w-full gap-4`},Ze={class:`text-muted text-sm`},Qe={class:`mb-6 p-px`},$e={class:`flex items-center justify-between mb-3`},et={class:`card-title m-0!`},tt={key:1,class:`text-muted text-sm`},nt={class:`mb-6 p-px`},rt={class:`flex items-center justify-between mb-3`},it={class:`card-title m-0!`},at={class:`flex items-center gap-3 w-full`},ot={class:`w-10 h-10 rounded-full overflow-hidden bg-surface-100 dark:bg-surface-800 shrink-0`},st=[`src`],ct={class:`font-medium`},lt={class:`flex items-center gap-3 w-full`},ut={class:`w-10 h-10 rounded-full overflow-hidden bg-surface-100 dark:bg-surface-800 shrink-0 flex items-center justify-center`},dt={class:`font-medium`},ft={key:1,class:`text-muted text-sm`},pt=j({__name:`Faces`,setup(n){let o=R(),c=l(),{t:u}=a(),{smBreakpoint:b}=P(),{width:S}=N(),j=r(),M=j.clusteredUnknowns,F=g(`knownSkeletonRef`),L=O(!1),ie=x(()=>{S.value;let e=b.value?140:160,t=F.value?.clientWidth??S.value;return Math.floor((t+12)/(e+12))||4});async function z(){L.value=!0;try{let e=await j.rescanFaces();e>0?c.add({severity:`success`,detail:u(`views.faces.rescan_complete`,{count:e}),life:3e3}):c.add({severity:`info`,detail:u(`views.faces.rescan_no_matches`),life:3e3})}catch(e){c.add({severity:`error`,detail:e,life:3e3})}finally{L.value=!1}}async function V(e){let n=O([]);try{n.value=(await j.getFaceImages(e.name)).map(e=>{let n=t(e.jpeg);return n?{src:n,confidence:e.confidence??0}:null}).filter(Boolean)}catch{}let r=o.openComponentDialog(Ae,{data:{title:e.name,contentProps:{face:x(()=>({...e,images:n.value,imageCount:n.value.length})),onRemoveImage:async t=>{try{await j.removeFaceImage(e.name,t),n.value.splice(t,1),c.add({severity:`success`,detail:u(`views.faces.image_removed`),life:3e3}),await j.refresh(!0)}catch(e){c.add({severity:`error`,detail:e,life:3e3})}},onDeletePerson:async()=>{try{await j.deleteFace(e.name),c.add({severity:`success`,detail:u(`views.faces.person_deleted`),life:3e3}),r.close(),await j.refresh(!0)}catch(e){c.add({severity:`error`,detail:e,life:3e3})}}},confirmText:u(`views.faces.delete_person`),confirmButtonProps:{severity:`danger`}}})}function H(){o.openComponentDialog(Ke,{data:{title:u(`views.faces.add_face`),confirmText:u(`views.faces.enroll`),contentProps:{onEnroll:async(e,t,n)=>{await j.enrollFace(e,t,n),c.add({severity:`success`,detail:u(`views.faces.face_enrolled`),life:3e3}),await j.refresh(!0)}}}})}async function U(e,t){let n=e.faces.map(e=>e.id);if(t===`__new__`){W(n);return}try{await j.enrollCluster(t,n),c.add({severity:`success`,detail:u(`views.faces.face_assigned`),life:3e3})}catch(e){c.add({severity:`error`,detail:e,life:3e3})}}function W(e){o.openComponentDialog(Q,{data:{title:u(`views.faces.enter_person_name`),confirmText:u(`views.faces.enroll`),contentProps:{knownNames:j.knownFaces.value.map(e=>e.name)}},onConfirm:async t=>{try{await j.enrollCluster(t,e),c.add({severity:`success`,detail:u(`views.faces.face_enrolled`),life:3e3})}catch(e){c.add({severity:`error`,detail:e,life:3e3})}}})}async function K(e){try{await j.deleteUnknownFacesByCluster(e.clusterId)}catch(e){c.add({severity:`error`,detail:e,life:3e3})}}async function q(e){try{await j.deleteUnknownFace(e.id)}catch(e){c.add({severity:`error`,detail:e,life:3e3})}}async function J(e){try{await j.removeFromCluster(e.id)}catch(e){c.add({severity:`error`,detail:e,life:3e3})}}function Y(e){o.openComponentDialog(Q,{data:{title:u(`views.faces.assign`),confirmText:u(`views.faces.enroll`),contentProps:{knownNames:j.knownFaces.value.map(e=>e.name)}},onConfirm:async t=>{try{await j.enrollFromEvent(t,e.id),c.add({severity:`success`,detail:u(`views.faces.face_assigned`),life:3e3}),await j.refresh(!0)}catch(e){c.add({severity:`error`,detail:e,life:3e3})}}})}async function de(){try{await j.deleteUngroupedUnknownFaces(),c.add({severity:`success`,detail:u(`views.faces.all_unknown_cleared`),life:3e3})}catch(e){c.add({severity:`error`,detail:e,life:3e3})}}return(n,r)=>{let a=ce,o=e,c=se,l=s,u=ae,g=Te,x=Se,S=G,O=B,N=ne,P=re,R=ee,W=ue,fe=te,pe=i,X=oe,Z=I;return v(),D(`div`,qe,[T(b)?d(``,!0):(v(),D(`h1`,Je,k(n.$t(`views.faces.title`)),1)),w(c,{position:`left`},{default:m(()=>[w(o,{severity:`secondary`,text:``,class:`cui-button p-2 text-color non-draggable-region`,onClick:r[0]||=e=>n.$router.push(`/menu`)},{icon:m(()=>[w(a,{class:`w-6 h-6`})]),_:1})]),_:1}),T(j).isLoading.value?(v(),D(`section`,{key:1,ref_key:`knownSkeletonRef`,ref:F,class:`mb-6 p-px`},[w(l,{height:`16px`,width:`140px`,class:`mb-3`}),C(`div`,{class:`grid w-full gap-3 p-px`,style:E({gridTemplateColumns:`repeat(auto-fill, minmax(${T(b)?`140px`:`160px`}, 1fr))`})},[(v(!0),D(h,null,f(T(ie),e=>(v(),D(`div`,{key:e,class:`cui-card overflow-hidden`},[w(l,{class:`aspect-square`,width:`100%`,height:`100%`}),C(`div`,Ye,[w(l,{height:`14px`,width:`70%`,class:`mb-1`}),w(l,{height:`12px`,width:`40%`})])]))),128))],4)],512)):(v(),D(h,{key:2},[!T(j).knownFaces.value.length&&!T(j).unknownFaces.value.length?(v(),D(`div`,Xe,[w(u,{class:`w-12 h-12 text-muted`}),C(`span`,Ze,k(n.$t(`views.faces.no_faces_yet`)),1)])):(v(),D(h,{key:1},[C(`section`,Qe,[C(`div`,$e,[C(`span`,et,k(n.$t(`views.faces.known_faces`))+` (`+k(T(j).knownFaces.value.length)+`)`,1),T(j).knownFaces.value.length?y((v(),_(o,{key:0,severity:`secondary`,text:``,rounded:``,class:`cui-icon-lg`,loading:T(L),onClick:z},{icon:m(()=>[w(g,{class:`w-4 h-4`})]),_:1},8,[`loading`])),[[Z,n.$t(`views.faces.rescan_events`),void 0,{top:!0}]]):d(``,!0)]),T(j).knownFaces.value.length?(v(),D(`div`,{key:0,class:`grid w-full gap-3 p-px`,style:E({gridTemplateColumns:`repeat(auto-fill, minmax(${T(b)?`140px`:`160px`}, 1fr))`})},[(v(!0),D(h,null,f(T(j).knownFaces.value,e=>(v(),_(x,{key:e.name,variant:`known`,thumbnail:T(t)(e.thumbnail),name:e.name,"image-count":e.imageCount,onClick:t=>V(e)},null,8,[`thumbnail`,`name`,`image-count`,`onClick`]))),128))],4)):(v(),D(`div`,tt,k(n.$t(`views.faces.no_known_faces`)),1))]),C(`section`,nt,[C(`div`,rt,[C(`span`,it,k(n.$t(`views.faces.unknown_faces`))+` (`+k(T(j).unknownFaces.value.length)+`)`,1)]),T(j).unknownFaces.value.length||T(M).ungrouped.length?(v(),_(pe,{key:0,class:`cui-card border-color-inner h-auto!`,pt:{body:{class:`pb-0`}}},{content:m(()=>[T(j).unknownFaces.value.length?(v(),_(fe,{key:0,multiple:``},{default:m(()=>[(v(!0),D(h,null,f(T(M).clusters,(e,i)=>(v(),_(R,{key:e.clusterId,value:e.clusterId,class:A({"border-b-0":T(M).ungrouped.length===0&&i===T(M).clusters.length-1})},{default:m(()=>[w(N,{class:A({"px-0 pt-0":i===0,"px-0":i!==0,"pb-5":T(M).ungrouped.length===0&&i===T(M).clusters.length-1})},{default:m(()=>[C(`span`,at,[C(`div`,ot,[e.bestThumbnail?(v(),D(`img`,{key:0,src:e.bestThumbnail,class:`w-full h-full object-cover`},null,8,st)):d(``,!0)]),C(`span`,ct,k(e.faces.length)+` `+k(n.$t(`views.faces.faces_in_cluster`)),1),C(`span`,{class:`ml-auto flex items-center gap-1 mr-2`,onClick:r[1]||=p(()=>{},[`stop`])},[y((v(),_(o,{severity:`secondary`,text:``,rounded:``,class:`cui-icon-lg`,onClick:t=>U(e,`__new__`)},{icon:m(()=>[w(S,{class:`w-4 h-4`})]),_:1},8,[`onClick`])),[[Z,n.$t(`views.faces.assign_cluster`),void 0,{top:!0}]]),y((v(),_(o,{severity:`danger`,text:``,rounded:``,class:`cui-icon-lg`,onClick:t=>K(e)},{icon:m(()=>[w(O,{width:`100%`,height:`100%`})]),_:1},8,[`onClick`])),[[Z,n.$t(`views.faces.discard`),void 0,{top:!0}]])])])]),_:2},1032,[`class`]),w(P,{pt:{content:{class:{"px-0":!0,"pb-5":T(M).ungrouped.length===0&&i===T(M).clusters.length-1}}}},{default:m(()=>[C(`div`,{class:`grid w-full gap-3`,style:E({gridTemplateColumns:`repeat(auto-fill, minmax(${T(b)?`120px`:`140px`}, 1fr))`})},[(v(!0),D(h,null,f(e.faces,e=>(v(),_(x,{key:e.id,variant:`unknown`,"show-remove":``,thumbnail:T(t)(e.thumbnail),timestamp:e.timestamp,confidence:e.confidence,onAssignPrompt:t=>Y(e),onRemove:t=>J(e),onSkip:t=>q(e)},null,8,[`thumbnail`,`timestamp`,`confidence`,`onAssignPrompt`,`onRemove`,`onSkip`]))),128))],4)]),_:2},1032,[`pt`])]),_:2},1032,[`value`,`class`]))),128)),T(M).ungrouped.length?(v(),_(R,{key:0,value:`__ungrouped__`,class:A({"border-b-0":!0})},{default:m(()=>[w(N,{class:A({"px-0 pt-0":T(M).clusters.length===0,"px-0":T(M).clusters.length!==0,"pb-5":!0})},{default:m(()=>[C(`span`,lt,[C(`div`,ut,[w(W,{class:`w-5 h-5 text-muted`})]),C(`span`,dt,k(T(M).ungrouped.length)+` `+k(n.$t(`views.faces.ungrouped`)),1),C(`span`,{class:`ml-auto flex items-center gap-1 mr-2`,onClick:r[2]||=p(()=>{},[`stop`])},[y((v(),_(o,{severity:`danger`,text:``,rounded:``,class:`cui-icon-lg`,onClick:de},{icon:m(()=>[w(O,{width:`100%`,height:`100%`})]),_:1})),[[Z,n.$t(`views.faces.discard`),void 0,{top:!0}]])])])]),_:1},8,[`class`]),w(P,{pt:{content:{class:{"px-0 pb-0":!0,"mb-5":!0}}}},{default:m(()=>[C(`div`,{class:`grid w-full gap-3`,style:E({gridTemplateColumns:`repeat(auto-fill, minmax(${T(b)?`120px`:`140px`}, 1fr))`})},[(v(!0),D(h,null,f(T(M).ungrouped,e=>(v(),_(x,{key:e.id,variant:`unknown`,thumbnail:T(t)(e.thumbnail),timestamp:e.timestamp,confidence:e.confidence,onAssignPrompt:t=>Y(e),onSkip:t=>q(e)},null,8,[`thumbnail`,`timestamp`,`confidence`,`onAssignPrompt`,`onSkip`]))),128))],4)]),_:1})]),_:1})):d(``,!0)]),_:1})):d(``,!0)]),_:1})):(v(),D(`div`,ft,k(n.$t(`views.faces.no_unknown_faces`)),1))])],64))],64)),w(X,{"tooltip-props":{value:n.$t(`views.faces.add_face`)},"button-props":{class:`text-white`},icon:T(le),"icon-props":{width:`30px`,height:`30px`},onClick:H},null,8,[`tooltip-props`,`icon`])])}}});export{pt as default};
1
+ import{Hn as e,N as t,Nn as n,R as r,ct as i,fi as a,jn as o,lt as s,tt as c}from"./vendor-cameraui-D-WYtlxb.js";import{C as l,s as u}from"./api-CLcqLYO9.js";import{$t as d,Dn as f,Gt as p,Hn as m,Kt as h,Ln as g,Qt as _,Tn as v,Un as y,Xn as b,Xt as x,Yn as S,Zt as C,an as w,cr as T,dr as E,en as D,er as O,fr as k,lr as A,sn as j,zn as M}from"./vendor-CUsAwmr-.js";import{a as N,t as P}from"./useSharedComposables-CzkF-tst.js";import{t as F}from"./close-CEZvWyN1.js";import{D as ee,E as te,J as I,O as ne,j as L,k as re,w as ie}from"./vendor-primevue-01WhBsPb.js";import{t as ae}from"./face-recognition-K0AJVYWA.js";import{t as oe}from"./CuiFloatingButton-B4byvsOs.js";import{t as R}from"./useCuiDialog-C-2PMjxH.js";import{t as se}from"./CuiTopbarSlot-BlbZqDDn.js";import{t as z}from"./plugins-BWlFg8TN.js";import{t as B}from"./delete-C4Qcsafo.js";import{t as ce}from"./back-filled-DVeRsKmt.js";import{t as le}from"./plus-CuWXW2I0.js";var V={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function H(e,t){return v(),D(`svg`,V,[...t[0]||=[C(`path`,{fill:`currentColor`,d:`M13 8a4 4 0 0 1-4 4a4 4 0 0 1-4-4a4 4 0 0 1 4-4a4 4 0 0 1 4 4m4 10v2H1v-2c0-2.21 3.58-4 8-4s8 1.79 8 4m3.5-3.5V16H19v-1.5zm-2-5H17V9a3 3 0 0 1 3-3a3 3 0 0 1 3 3c0 .97-.5 1.88-1.29 2.41l-.3.19c-.57.4-.91 1.01-.91 1.7v.2H19v-.2c0-1.19.6-2.3 1.59-2.95l.29-.19c.39-.26.62-.69.62-1.16A1.5 1.5 0 0 0 20 7.5A1.5 1.5 0 0 0 18.5 9z`},null,-1)]])}var ue=b({name:`mdi-account-question`,render:H}),U={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function W(e,t){return v(),D(`svg`,U,[...t[0]||=[C(`path`,{fill:`currentColor`,d:`M15 14c-2.67 0-8 1.33-8 4v2h16v-2c0-2.67-5.33-4-8-4m-9-4V7H4v3H1v2h3v3h2v-3h3v-2m6 2a4 4 0 0 0 4-4a4 4 0 0 0-4-4a4 4 0 0 0-4 4a4 4 0 0 0 4 4`},null,-1)]])}var G=b({name:`mdi-account-plus`,render:W}),K={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function q(e,t){return v(),D(`svg`,K,[...t[0]||=[C(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M5 12h14`},null,-1)]])}var J=b({name:`tabler-minus`,render:q}),Y={class:`aspect-square overflow-hidden flex items-center justify-center bg-black/5 dark:bg-black/30`},de=[`src`],fe=[`src`],pe={class:`font-medium truncate`},X={class:`text-xs text-muted`},Z={key:1,class:`relative cursor-default`},me={class:`bg-neutral-900 w-full rounded-xl overflow-hidden relative border-[1px] border-color shadow-lg`,style:{"aspect-ratio":`1 / 1`}},he=[`src`],ge={key:1,class:`w-full h-full flex items-center justify-center bg-neutral-800/80`},_e=[`src`],ve={class:`absolute top-0 left-0 right-0 p-2 bg-gradient-to-b from-black/60 to-transparent`},ye={class:`flex items-center justify-between`},be={class:`text-xs text-white/70`},xe={class:`absolute bottom-0 left-0 right-0 p-1.5 bg-gradient-to-t from-black/60 to-transparent flex items-center justify-center gap-1 dark-mode`},Se=j({__name:`CuiFaceCard`,props:{variant:{},thumbnail:{},name:{},imageCount:{},cameraName:{},timestamp:{},confidence:{},compact:{type:Boolean},showRemove:{type:Boolean},assignValue:{},assignOptions:{}},emits:[`click`,`assign`,`assign-prompt`,`skip`,`remove`],setup(t){let n=t,r=u(),a=x(()=>n.confidence?n.confidence>=.9?`text-green-400`:n.confidence>=.7?`text-yellow-400`:`text-red-400`:`text-white/50`),o=x(()=>n.timestamp?new Date(n.timestamp).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`}):``);return(n,s)=>{let c=i,l=J,u=e,f=G,h=B,g=I;return t.variant===`known`?(v(),_(c,{key:0,class:`cui-card transition-shadow cursor-pointer hover:shadow-md`,onClick:s[0]||=e=>n.$emit(`click`)},{header:m(()=>[C(`div`,Y,[t.thumbnail?(v(),D(`img`,{key:0,src:t.thumbnail,class:`w-full h-full object-cover`},null,8,de)):(v(),D(`img`,{key:1,src:T(r),class:`w-1/2 h-1/2 object-contain`},null,8,fe))])]),content:m(()=>[C(`div`,pe,k(t.name),1),C(`div`,X,k(t.imageCount)+` `+k(n.$t(`views.faces.images`)),1)]),_:1})):(v(),D(`div`,Z,[C(`div`,me,[t.thumbnail?(v(),D(`img`,{key:0,src:t.thumbnail,class:`w-full h-full object-cover`},null,8,he)):(v(),D(`div`,ge,[C(`img`,{src:T(r),class:`w-1/3 h-1/3 object-contain opacity-20`},null,8,_e)])),C(`div`,ve,[C(`div`,ye,[C(`span`,be,k(T(o)),1),t.confidence?(v(),D(`span`,{key:0,class:A([`text-xs font-medium`,T(a)])},k(Math.round(t.confidence*100))+`%`,3)):d(``,!0)])]),C(`div`,xe,[t.showRemove?y((v(),_(u,{key:0,severity:`secondary`,rounded:``,size:`small`,class:`cui-icon-sm text-white`,onClick:s[1]||=p(e=>n.$emit(`remove`),[`stop`])},{icon:m(()=>[w(l,{class:`w-4 h-4`})]),_:1})),[[g,n.$t(`views.faces.remove_from_cluster`),void 0,{top:!0}]]):y((v(),_(u,{key:1,severity:`secondary`,rounded:``,size:`small`,class:`cui-icon-sm text-white`,onClick:s[2]||=p(e=>n.$emit(`assign-prompt`),[`stop`])},{icon:m(()=>[w(f,{width:`100%`,height:`100%`})]),_:1})),[[g,n.$t(`views.faces.assign`),void 0,{top:!0}]]),y((v(),_(u,{severity:`danger`,rounded:``,size:`small`,class:`cui-icon-sm text-white`,onClick:s[3]||=p(e=>n.$emit(`skip`),[`stop`])},{icon:m(()=>[w(h,{width:`100%`,height:`100%`})]),_:1})),[[g,n.$t(`views.faces.discard`),void 0,{top:!0}]])])])]))}}}),Ce={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function we(e,t){return v(),D(`svg`,Ce,[...t[0]||=[C(`path`,{fill:`currentColor`,d:`M17.65 6.35A7.96 7.96 0 0 0 12 4a8 8 0 0 0-8 8a8 8 0 0 0 8 8c3.73 0 6.84-2.55 7.73-6h-2.08A5.99 5.99 0 0 1 12 18a6 6 0 0 1-6-6a6 6 0 0 1 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4z`},null,-1)]])}var Te=b({name:`mdi-refresh`,render:we}),Ee={key:0,class:`text-sm text-muted mb-4`},De={key:1,class:`grid grid-cols-3 gap-2`},Oe=[`src`],ke={key:2,class:`text-muted text-sm text-center py-8`},Ae=j({__name:`FaceDetail`,props:{face:{},onRemoveImage:{type:Function},onDeletePerson:{type:Function}},setup(t,{expose:n}){let r=t,i=x(()=>r.face);return n({onConfirm:async()=>(r.onDeletePerson(),!0)}),(n,r)=>{let a=F,o=e;return v(),D(`div`,null,[T(i).imageCount?(v(),D(`div`,Ee,k(T(i).imageCount)+` `+k(n.$t(`views.faces.training_images`)),1)):d(``,!0),T(i).images.length?(v(),D(`div`,De,[(v(!0),D(h,null,f(T(i).images,(e,n)=>(v(),D(`div`,{key:n,class:`relative aspect-square rounded-2xl overflow-hidden bg-surface-100 dark:bg-surface-800`},[C(`img`,{src:e.src,class:`w-full h-full object-cover`},null,8,Oe),e.confidence?(v(),D(`div`,{key:0,class:A([`absolute bottom-0.5 right-0.5 text-[10px] font-medium px-1 rounded bg-black/60`,e.confidence>=.9?`text-green-400`:e.confidence>=.7?`text-yellow-400`:`text-red-400`])},k(Math.round(e.confidence*100))+`% `,3)):d(``,!0),w(o,{severity:`danger`,rounded:``,class:`!absolute top-1 right-1 cui-icon-sm text-white`,onClick:e=>t.onRemoveImage(n)},{icon:m(()=>[w(a,{width:`100%`,height:`100%`})]),_:1},8,[`onClick`])]))),128))])):(v(),D(`div`,ke,k(n.$t(`views.faces.no_known_faces`)),1))])}}}),je={class:`flex flex-col gap-2 w-full`},Me={for:`personName`,class:`cui-label`},Q=j({__name:`FaceNewPerson`,props:{knownNames:{}},setup(e,{expose:t}){let n=e,r=O(``),i=O([]);function a(e){let t=e.query.toLowerCase();i.value=(n.knownNames??[]).filter(e=>e.toLowerCase().includes(t))}return t({onConfirm:async()=>r.value.trim()||null}),(e,t)=>{let n=ie;return v(),D(`div`,je,[C(`label`,Me,k(e.$t(`views.faces.name`)),1),w(n,{id:`personName`,modelValue:T(r),"onUpdate:modelValue":t[0]||=e=>S(r)?r.value=e:null,suggestions:T(i),class:`w-full`,fluid:``,placeholder:e.$t(`views.faces.enter_name`),autofocus:``,onComplete:a},null,8,[`modelValue`,`suggestions`,`placeholder`])])}}}),Ne={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Pe(e,t){return v(),D(`svg`,Ne,[...t[0]||=[C(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2M7 9l5-5l5 5m-5-5v12`},null,-1)]])}var Fe=b({name:`tabler-upload`,render:Pe}),$=[`image/jpeg`,`image/png`,`image/webp`],Ie={class:`flex flex-col gap-6`},Le={class:`cui-label`},Re={class:`cui-label`},ze={key:0},Be={class:`text-sm text-muted`},Ve={key:1},He=[`src`],Ue=[`accept`],We={key:0,class:`text-xs text-red-500 mt-1`},Ge={class:`flex items-center justify-center mt-2 text-xs text-muted`},Ke=j({__name:`FaceUpload`,props:{onEnroll:{type:Function}},setup(e,{expose:t}){let r=new z,i=e,{t:s}=a(),{data:l}=r.getPluginsExtensionsQuery({page:1,pageSize:-1}),u=O(``),f=O(``),m=O(``),h=O(null),g=O(``),_=O(),y=x(()=>(l.value?.result??[]).filter(e=>o(e.contract,n.FaceDetection)).map(e=>({label:e.displayName,value:e.pluginName})));function b(){_.value?.click()}function E(e){let t=e.target.files?.[0];t&&N(t)}function A(e){let t=e.dataTransfer?.files[0];t&&N(t)}function j(e){return $.includes(e.type)?e.size>10485760?s(`views.faces.file_too_large`,{maxSize:10}):null:s(`views.faces.invalid_format`)}function N(e){g.value=``;let t=j(e);if(t){g.value=t,h.value=null,m.value=``;return}let n=new FileReader;n.onload=()=>{h.value=new Uint8Array(n.result)},n.readAsArrayBuffer(e);let r=new FileReader;r.onload=()=>{m.value=r.result},r.readAsDataURL(e)}return M(y,e=>{!f.value&&e.length===1&&(f.value=e[0].value)},{immediate:!0}),t({onConfirm:async()=>!u.value||!f.value||!h.value?null:(await i.onEnroll(u.value,h.value,f.value),!0)}),(e,t)=>{let n=c,r=L,i=Fe;return v(),D(`div`,Ie,[C(`div`,null,[C(`label`,Le,k(e.$t(`views.faces.name`)),1),w(n,{modelValue:T(u),"onUpdate:modelValue":t[0]||=e=>S(u)?u.value=e:null,modelModifiers:{trim:!0},placeholder:e.$t(`views.faces.enter_name`),class:`w-full`,autofocus:``},null,8,[`modelValue`,`placeholder`])]),C(`div`,null,[C(`label`,Re,k(e.$t(`views.faces.face_plugin`)),1),w(r,{modelValue:T(f),"onUpdate:modelValue":t[1]||=e=>S(f)?f.value=e:null,options:T(y),"option-label":`label`,"option-value":`value`,placeholder:e.$t(`views.faces.select_plugin`),class:`w-full`},null,8,[`modelValue`,`options`,`placeholder`])]),C(`div`,null,[t[3]||=C(`label`,{class:`cui-label mb-1`},`Image`,-1),C(`div`,{class:`border-2 border-dashed border-surface-300 dark:border-surface-600 rounded-lg p-6 text-center cursor-pointer hover:border-primary transition-colors`,onClick:b,onDragover:t[2]||=p(()=>{},[`prevent`]),onDrop:p(A,[`prevent`])},[T(m)?(v(),D(`div`,Ve,[C(`img`,{src:T(m),class:`max-h-48 mx-auto rounded`},null,8,He)])):(v(),D(`div`,ze,[w(i,{class:`w-8 h-8 text-muted mx-auto mb-2`}),C(`div`,Be,k(e.$t(`views.faces.drop_image`)),1)]))],32),C(`input`,{ref_key:`fileInput`,ref:_,type:`file`,accept:T($).join(`,`),class:`hidden`,onChange:E},null,40,Ue),T(g)?(v(),D(`div`,We,k(T(g)),1)):d(``,!0),C(`div`,Ge,[C(`span`,null,`(`+k(T(10))+`MB, `+k(T($).join(`, `))+`)`,1)])])])}}}),qe={class:`flex flex-col`},Je={key:0,class:`page-title`},Ye={class:`p-3`},Xe={key:0,class:`flex flex-1 min-h-0 flex-col items-center justify-center w-full gap-4`},Ze={class:`text-muted text-sm`},Qe={class:`mb-6 p-px`},$e={class:`flex items-center justify-between mb-3`},et={class:`card-title m-0!`},tt={key:1,class:`text-muted text-sm`},nt={class:`mb-6 p-px`},rt={class:`flex items-center justify-between mb-3`},it={class:`card-title m-0!`},at={class:`flex items-center gap-3 w-full`},ot={class:`w-10 h-10 rounded-full overflow-hidden bg-surface-100 dark:bg-surface-800 shrink-0`},st=[`src`],ct={class:`font-medium`},lt={class:`flex items-center gap-3 w-full`},ut={class:`w-10 h-10 rounded-full overflow-hidden bg-surface-100 dark:bg-surface-800 shrink-0 flex items-center justify-center`},dt={class:`font-medium`},ft={key:1,class:`text-muted text-sm`},pt=j({__name:`Faces`,setup(n){let o=R(),c=l(),{t:u}=a(),{smBreakpoint:b}=P(),{width:S}=N(),j=r(),M=j.clusteredUnknowns,F=g(`knownSkeletonRef`),L=O(!1),ie=x(()=>{S.value;let e=b.value?140:160,t=F.value?.clientWidth??S.value;return Math.floor((t+12)/(e+12))||4});async function z(){L.value=!0;try{let e=await j.rescanFaces();e>0?c.add({severity:`success`,detail:u(`views.faces.rescan_complete`,{count:e}),life:3e3}):c.add({severity:`info`,detail:u(`views.faces.rescan_no_matches`),life:3e3})}catch(e){c.add({severity:`error`,detail:e,life:3e3})}finally{L.value=!1}}async function V(e){let n=O([]);try{n.value=(await j.getFaceImages(e.name)).map(e=>{let n=t(e.jpeg);return n?{src:n,confidence:e.confidence??0}:null}).filter(Boolean)}catch{}let r=o.openComponentDialog(Ae,{data:{title:e.name,contentProps:{face:x(()=>({...e,images:n.value,imageCount:n.value.length})),onRemoveImage:async t=>{try{await j.removeFaceImage(e.name,t),n.value.splice(t,1),c.add({severity:`success`,detail:u(`views.faces.image_removed`),life:3e3}),await j.refresh(!0)}catch(e){c.add({severity:`error`,detail:e,life:3e3})}},onDeletePerson:async()=>{try{await j.deleteFace(e.name),c.add({severity:`success`,detail:u(`views.faces.person_deleted`),life:3e3}),r.close(),await j.refresh(!0)}catch(e){c.add({severity:`error`,detail:e,life:3e3})}}},confirmText:u(`views.faces.delete_person`),confirmButtonProps:{severity:`danger`}}})}function H(){o.openComponentDialog(Ke,{data:{title:u(`views.faces.add_face`),confirmText:u(`views.faces.enroll`),contentProps:{onEnroll:async(e,t,n)=>{await j.enrollFace(e,t,n),c.add({severity:`success`,detail:u(`views.faces.face_enrolled`),life:3e3}),await j.refresh(!0)}}}})}async function U(e,t){let n=e.faces.map(e=>e.id);if(t===`__new__`){W(n);return}try{await j.enrollCluster(t,n),c.add({severity:`success`,detail:u(`views.faces.face_assigned`),life:3e3})}catch(e){c.add({severity:`error`,detail:e,life:3e3})}}function W(e){o.openComponentDialog(Q,{data:{title:u(`views.faces.enter_person_name`),confirmText:u(`views.faces.enroll`),contentProps:{knownNames:j.knownFaces.value.map(e=>e.name)}},onConfirm:async t=>{try{await j.enrollCluster(t,e),c.add({severity:`success`,detail:u(`views.faces.face_enrolled`),life:3e3})}catch(e){c.add({severity:`error`,detail:e,life:3e3})}}})}async function K(e){try{await j.deleteUnknownFacesByCluster(e.clusterId)}catch(e){c.add({severity:`error`,detail:e,life:3e3})}}async function q(e){try{await j.deleteUnknownFace(e.id)}catch(e){c.add({severity:`error`,detail:e,life:3e3})}}async function J(e){try{await j.removeFromCluster(e.id)}catch(e){c.add({severity:`error`,detail:e,life:3e3})}}function Y(e){o.openComponentDialog(Q,{data:{title:u(`views.faces.assign`),confirmText:u(`views.faces.enroll`),contentProps:{knownNames:j.knownFaces.value.map(e=>e.name)}},onConfirm:async t=>{try{await j.enrollFromEvent(t,e.id),c.add({severity:`success`,detail:u(`views.faces.face_assigned`),life:3e3}),await j.refresh(!0)}catch(e){c.add({severity:`error`,detail:e,life:3e3})}}})}async function de(){try{await j.deleteUngroupedUnknownFaces(),c.add({severity:`success`,detail:u(`views.faces.all_unknown_cleared`),life:3e3})}catch(e){c.add({severity:`error`,detail:e,life:3e3})}}return(n,r)=>{let a=ce,o=e,c=se,l=s,u=ae,g=Te,x=Se,S=G,O=B,N=ne,P=re,R=ee,W=ue,fe=te,pe=i,X=oe,Z=I;return v(),D(`div`,qe,[T(b)?d(``,!0):(v(),D(`h1`,Je,k(n.$t(`views.faces.title`)),1)),w(c,{position:`left`},{default:m(()=>[w(o,{severity:`secondary`,text:``,class:`cui-button p-2 text-color non-draggable-region`,onClick:r[0]||=e=>n.$router.push(`/menu`)},{icon:m(()=>[w(a,{class:`w-6 h-6`})]),_:1})]),_:1}),T(j).isLoading.value?(v(),D(`section`,{key:1,ref_key:`knownSkeletonRef`,ref:F,class:`mb-6 p-px`},[w(l,{height:`16px`,width:`140px`,class:`mb-3`}),C(`div`,{class:`grid w-full gap-3 p-px`,style:E({gridTemplateColumns:`repeat(auto-fill, minmax(${T(b)?`140px`:`160px`}, 1fr))`})},[(v(!0),D(h,null,f(T(ie),e=>(v(),D(`div`,{key:e,class:`cui-card overflow-hidden`},[w(l,{class:`aspect-square`,width:`100%`,height:`100%`}),C(`div`,Ye,[w(l,{height:`14px`,width:`70%`,class:`mb-1`}),w(l,{height:`12px`,width:`40%`})])]))),128))],4)],512)):(v(),D(h,{key:2},[!T(j).knownFaces.value.length&&!T(j).unknownFaces.value.length?(v(),D(`div`,Xe,[w(u,{class:`w-12 h-12 text-muted`}),C(`span`,Ze,k(n.$t(`views.faces.no_faces_yet`)),1)])):(v(),D(h,{key:1},[C(`section`,Qe,[C(`div`,$e,[C(`span`,et,k(n.$t(`views.faces.known_faces`))+` (`+k(T(j).knownFaces.value.length)+`)`,1),T(j).knownFaces.value.length?y((v(),_(o,{key:0,severity:`secondary`,text:``,rounded:``,class:`cui-icon-lg`,loading:T(L),onClick:z},{icon:m(()=>[w(g,{class:`w-4 h-4`})]),_:1},8,[`loading`])),[[Z,n.$t(`views.faces.rescan_events`),void 0,{top:!0}]]):d(``,!0)]),T(j).knownFaces.value.length?(v(),D(`div`,{key:0,class:`grid w-full gap-3 p-px`,style:E({gridTemplateColumns:`repeat(auto-fill, minmax(${T(b)?`140px`:`160px`}, 1fr))`})},[(v(!0),D(h,null,f(T(j).knownFaces.value,e=>(v(),_(x,{key:e.name,variant:`known`,thumbnail:T(t)(e.thumbnail),name:e.name,"image-count":e.imageCount,onClick:t=>V(e)},null,8,[`thumbnail`,`name`,`image-count`,`onClick`]))),128))],4)):(v(),D(`div`,tt,k(n.$t(`views.faces.no_known_faces`)),1))]),C(`section`,nt,[C(`div`,rt,[C(`span`,it,k(n.$t(`views.faces.unknown_faces`))+` (`+k(T(j).unknownFaces.value.length)+`)`,1)]),T(j).unknownFaces.value.length||T(M).ungrouped.length?(v(),_(pe,{key:0,class:`cui-card border-color-inner h-auto!`,pt:{body:{class:`pb-0`}}},{content:m(()=>[T(j).unknownFaces.value.length?(v(),_(fe,{key:0,multiple:``},{default:m(()=>[(v(!0),D(h,null,f(T(M).clusters,(e,i)=>(v(),_(R,{key:e.clusterId,value:e.clusterId,class:A({"border-b-0":T(M).ungrouped.length===0&&i===T(M).clusters.length-1})},{default:m(()=>[w(N,{class:A({"px-0 pt-0":i===0,"px-0":i!==0,"pb-5":T(M).ungrouped.length===0&&i===T(M).clusters.length-1})},{default:m(()=>[C(`span`,at,[C(`div`,ot,[e.bestThumbnail?(v(),D(`img`,{key:0,src:e.bestThumbnail,class:`w-full h-full object-cover`},null,8,st)):d(``,!0)]),C(`span`,ct,k(e.faces.length)+` `+k(n.$t(`views.faces.faces_in_cluster`)),1),C(`span`,{class:`ml-auto flex items-center gap-1 mr-2`,onClick:r[1]||=p(()=>{},[`stop`])},[y((v(),_(o,{severity:`secondary`,text:``,rounded:``,class:`cui-icon-lg`,onClick:t=>U(e,`__new__`)},{icon:m(()=>[w(S,{class:`w-4 h-4`})]),_:1},8,[`onClick`])),[[Z,n.$t(`views.faces.assign_cluster`),void 0,{top:!0}]]),y((v(),_(o,{severity:`danger`,text:``,rounded:``,class:`cui-icon-lg`,onClick:t=>K(e)},{icon:m(()=>[w(O,{width:`100%`,height:`100%`})]),_:1},8,[`onClick`])),[[Z,n.$t(`views.faces.discard`),void 0,{top:!0}]])])])]),_:2},1032,[`class`]),w(P,{pt:{content:{class:{"px-0":!0,"pb-5":T(M).ungrouped.length===0&&i===T(M).clusters.length-1}}}},{default:m(()=>[C(`div`,{class:`grid w-full gap-3`,style:E({gridTemplateColumns:`repeat(auto-fill, minmax(${T(b)?`120px`:`140px`}, 1fr))`})},[(v(!0),D(h,null,f(e.faces,e=>(v(),_(x,{key:e.id,variant:`unknown`,"show-remove":``,thumbnail:T(t)(e.thumbnail),timestamp:e.timestamp,confidence:e.confidence,onAssignPrompt:t=>Y(e),onRemove:t=>J(e),onSkip:t=>q(e)},null,8,[`thumbnail`,`timestamp`,`confidence`,`onAssignPrompt`,`onRemove`,`onSkip`]))),128))],4)]),_:2},1032,[`pt`])]),_:2},1032,[`value`,`class`]))),128)),T(M).ungrouped.length?(v(),_(R,{key:0,value:`__ungrouped__`,class:A({"border-b-0":!0})},{default:m(()=>[w(N,{class:A({"px-0 pt-0":T(M).clusters.length===0,"px-0":T(M).clusters.length!==0,"pb-5":!0})},{default:m(()=>[C(`span`,lt,[C(`div`,ut,[w(W,{class:`w-5 h-5 text-muted`})]),C(`span`,dt,k(T(M).ungrouped.length)+` `+k(n.$t(`views.faces.ungrouped`)),1),C(`span`,{class:`ml-auto flex items-center gap-1 mr-2`,onClick:r[2]||=p(()=>{},[`stop`])},[y((v(),_(o,{severity:`danger`,text:``,rounded:``,class:`cui-icon-lg`,onClick:de},{icon:m(()=>[w(O,{width:`100%`,height:`100%`})]),_:1})),[[Z,n.$t(`views.faces.discard`),void 0,{top:!0}]])])])]),_:1},8,[`class`]),w(P,{pt:{content:{class:{"px-0 pb-0":!0,"mb-5":!0}}}},{default:m(()=>[C(`div`,{class:`grid w-full gap-3`,style:E({gridTemplateColumns:`repeat(auto-fill, minmax(${T(b)?`120px`:`140px`}, 1fr))`})},[(v(!0),D(h,null,f(T(M).ungrouped,e=>(v(),_(x,{key:e.id,variant:`unknown`,thumbnail:T(t)(e.thumbnail),timestamp:e.timestamp,confidence:e.confidence,onAssignPrompt:t=>Y(e),onSkip:t=>q(e)},null,8,[`thumbnail`,`timestamp`,`confidence`,`onAssignPrompt`,`onSkip`]))),128))],4)]),_:1})]),_:1})):d(``,!0)]),_:1})):d(``,!0)]),_:1})):(v(),D(`div`,ft,k(n.$t(`views.faces.no_unknown_faces`)),1))])],64))],64)),w(X,{"tooltip-props":{value:n.$t(`views.faces.add_face`)},"button-props":{class:`text-white`},icon:T(le),"icon-props":{width:`30px`,height:`30px`},onClick:H},null,8,[`tooltip-props`,`icon`])])}}});export{pt as default};
@@ -1 +1 @@
1
- import{Hn as e,ct as t,fi as n}from"./vendor-cameraui-lEA-78Jn.js";import{C as r,O as i,a,f as o,s}from"./api-DhzCRVL5.js";import{$t as c,Bn as l,Dn as ee,Hn as u,Kt as d,Ln as f,P as p,Qt as m,Tn as h,Xn as g,Xt as _,Yn as te,Zt as v,an as y,cr as b,en as x,er as S,fr as C,lr as w,rr as T,sn as E}from"./vendor-CUsAwmr-.js";import{f as ne}from"./vendor-core-Dqc843Zs.js";import{G as re,H as ie,W as ae}from"./vendor-primevue-DST-0Ea0.js";import{t as oe}from"./hasPermission-D44ci-iH.js";import{t as se}from"./useCuiDialog-nDtDuLq-.js";import{r as ce}from"./server-D9bvACdr.js";import{t as le}from"./SettingsAccount-D0T_E5PY.js";import{t as ue}from"./SettingsAppearance-TIxspygn.js";import{n as de}from"./backup-DGUIWswX.js";var D={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function O(e,t){return h(),x(`svg`,D,[...t[0]||=[v(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`m5 12l5 5L20 7`},null,-1)]])}var fe=g({name:`tabler-check`,render:O}),pe={class:`h-full flex flex-col`},me={class:`border-color-bottom draggable-region`},k={class:`max-w-3xl mx-auto flex items-center justify-between px-4 py-3`},A={class:`flex items-center gap-2`},j={class:`flex-1 overflow-auto`},M={class:`max-w-3xl mx-auto px-4 py-6 flex flex-col gap-6`},N={class:`flex items-center w-full`},P={class:`flex flex-col items-center gap-2 flex-shrink-0`},F={key:1},I={class:`flex flex-col items-center gap-6 py-6`},L={class:`text-muted`},R={class:`flex flex-row items-center justify-center gap-2`},z={class:`max-w-[375px] text-center text-muted`},he={key:0,class:`flex flex-col items-center gap-3 w-full`},ge={class:`text-center text-muted max-w-[375px]`},_e={class:`flex flex-row items-center justify-center gap-2`},ve={class:`flex flex-col items-center gap-6 py-8`},ye={class:`text-center text-muted max-w-[375px]`},be={class:`flex items-center justify-between gap-2`},xe={key:1},B=E({__name:`FirstSteps`,setup(g){let E=i(),D=se(),O=r(),{t:B}=n(),V=o(),{loginLoading:Se}=ne(V),H=S([`welcome`,`appearance`,`account`,`finish`]),U=f(`accountFormRef`),W=f(`backupFileInputRef`),G=T(),K=T(),q=S(0),J=S(!1),Y=S(),X=_(()=>J.value||Se.value),Z=_(()=>oe(void 0,`master`)),Q=_(()=>U.value?.formRef);function Ce(e){return e<q.value?`bg-primary-500 text-white`:e===q.value?`bg-primary-500 text-white ring-4 ring-primary-500/20`:`border border-color text-muted`}async function $(){if(q.value<H.value.length-1)if(q.value===2){let e=Q.value?.getValues();if(e){if(!e.password||!e.passwordConfirm){Q.value?.setFieldError(`password`,`Required`),Q.value?.setFieldError(`passwordConfirm`,`Required`);return}if(!e.username){Q.value?.setFieldError(`username`,`Required`);return}}let t=await Q.value?.validate();t?.valid?(Y.value=a(e),q.value++):t?.valid||(E.error(`Validation failed`,t),O.add({severity:`error`,detail:B(`components.toast.validation_failed`),life:3e3}))}else q.value++}function we(){q.value>0&&q.value--}async function Te(){try{await V.logout()}catch(e){E.error(e.response?.data?.message??e.message??e)}}function Ee(){W.value?.click()}function De(e){let t=e.target;t.files&&t.files[0]&&(K.value=t.files[0],D.openTextDialog({data:{title:B(`components.dialog.title.confirm`),confirmText:B(`components.form.button.restore_and_restart`),contentText:B(`components.dialog.message.confirm_restore`),loading:X},onConfirm:Oe})),t.value=``}async function Oe(){if(J.value=!0,!K.value){J.value=!1;return}try{let e=new FormData;e.append(`upload`,K.value),ke(await de(e)),O.add({severity:`success`,detail:B(`components.toast.backup_restored`),life:3e3}),ce(),V.logout()}catch(e){O.add({severity:`error`,detail:e,life:3e3}),J.value=!1}}function ke(e){e.theme&&localStorage.setItem(`theme`,JSON.stringify(e.theme)),e.locale&&localStorage.setItem(`locale`,e.locale),e.ui&&localStorage.setItem(`ui`,JSON.stringify(e.ui))}async function Ae(){if(!Y.value){O.add({severity:`error`,detail:B(`components.toast.validation_failed`),life:3e3});return}let e,t=a(Y.value);t.firstLogin=!1,delete t.upload;try{G.value&&(e=new FormData,e.append(`upload`,G.value)),await V.updateUser(t,e),V.logout()}catch{}}return l(()=>{q.value===2&&(Y.value=void 0)}),(n,r)=>{let i=e,a=fe,o=t,l=ie,f=ae,g=re;return h(),x(`div`,pe,[v(`div`,me,[v(`div`,k,[v(`div`,A,[y(b(p),{src:b(s)(`logo_animated.svg`),width:`20px`,height:`22px`,title:`camera.ui`,"aria-label":`camera.ui`},null,8,[`src`]),r[1]||=v(`span`,{class:`font-semibold`},`camera.ui`,-1)]),y(i,{class:`cui-button-small non-draggable-region`,severity:`secondary`,variant:`text`,label:n.$t(`components.form.button.logout`),onClick:Te},null,8,[`label`])])]),v(`div`,j,[v(`div`,M,[v(`div`,N,[(h(!0),x(d,null,ee(b(H),(e,t)=>(h(),x(d,{key:e},[v(`div`,P,[v(`div`,{class:w([`w-9 h-9 rounded-full flex items-center justify-center text-sm font-semibold transition-all duration-200`,Ce(t)])},[t<b(q)?(h(),m(a,{key:0,class:`w-4 h-4`})):(h(),x(`span`,F,C(t+1),1))],2),v(`span`,{class:w([`text-xs font-medium hidden sm:block whitespace-nowrap`,t<=b(q)?`text-color`:`text-muted`])},C(n.$t(`views.firststeps.step_${e}`)),3)]),t<b(H).length-1?(h(),x(`div`,{key:0,class:w([`flex-1 h-px mx-2 sm:mx-3 transition-colors duration-200`,t<b(q)?`bg-primary-500`:`bg-[var(--border-color)]`])},null,2)):c(``,!0)],64))),128))]),y(g,{value:b(q),"onUpdate:value":r[0]||=e=>te(q)?q.value=e:null,lazy:``},{default:u(()=>[y(f,{class:`!p-0 !bg-transparent`},{default:u(()=>[y(l,{value:0},{default:u(()=>[y(o,{class:`cui-card`},{content:u(()=>[v(`div`,I,[v(`span`,L,C(n.$t(`views.firststeps.welcome_to`)),1),v(`div`,R,[y(b(p),{src:b(s)(`logo_animated.svg`),width:`26px`,height:`32px`,title:`camera.ui`,"aria-label":`camera.ui`},null,8,[`src`]),r[2]||=v(`span`,{class:`text-4xl`},`camera.ui`,-1)]),v(`p`,z,C(n.$t(`views.firststeps.slogan`)),1),b(Z)?(h(),x(`div`,he,[v(`p`,ge,C(n.$t(`views.firststeps.start_message`)),1),v(`div`,_e,[y(i,{class:`cui-button-medium`,loading:b(X),label:n.$t(`views.firststeps.new_installation`),onClick:$},null,8,[`loading`,`label`]),y(i,{class:`cui-button-medium`,severity:`secondary`,loading:b(X),label:n.$t(`views.firststeps.from_backup`),onClick:Ee},null,8,[`loading`,`label`])]),v(`input`,{ref_key:`backupFileInputRef`,ref:W,type:`file`,accept:`application/gzip, .tar, .tar.gz`,class:`hidden`,onChange:De},null,544)])):(h(),m(i,{key:1,class:`cui-button-medium`,loading:b(X),label:n.$t(`views.firststeps.start`),onClick:$},null,8,[`loading`,`label`]))])]),_:1})]),_:1}),y(l,{value:1},{default:u(()=>[y(ue)]),_:1}),y(l,{value:2},{default:u(()=>[y(le,{ref_key:`accountFormRef`,ref:U,firststeps:``},null,512)]),_:1}),y(l,{value:3},{default:u(()=>[y(o,{class:`cui-card`},{content:u(()=>[v(`div`,ve,[y(b(p),{src:b(s)(`logo_animated.svg`),width:`78px`,height:`84px`,title:`camera.ui`,"aria-label":`camera.ui`},null,8,[`src`]),v(`p`,ye,C(n.$t(`views.firststeps.finish_message`)),1)])]),_:1})]),_:1})]),_:1})]),_:1},8,[`value`]),v(`div`,be,[b(q)>0?(h(),m(i,{key:0,class:`cui-button-medium`,severity:`secondary`,label:n.$t(`components.form.button.previous`),onClick:we},null,8,[`label`])):(h(),x(`span`,xe)),b(q)>0&&b(q)<b(H).length-1?(h(),m(i,{key:2,class:`cui-button-medium`,label:n.$t(`components.form.button.next`),onClick:$},null,8,[`label`])):b(q)===b(H).length-1?(h(),m(i,{key:3,class:`cui-button-medium`,loading:b(X),label:n.$t(`views.firststeps.enjoy`),onClick:Ae},null,8,[`loading`,`label`])):c(``,!0)])])])])}}});export{B as default};
1
+ import{Hn as e,ct as t,fi as n}from"./vendor-cameraui-D-WYtlxb.js";import{C as r,O as i,a,f as o,s}from"./api-CLcqLYO9.js";import{$t as c,Bn as l,Dn as ee,Hn as u,Kt as d,Ln as f,P as p,Qt as m,Tn as h,Xn as g,Xt as _,Yn as te,Zt as v,an as y,cr as b,en as x,er as S,fr as C,lr as w,rr as T,sn as E}from"./vendor-CUsAwmr-.js";import{f as ne}from"./vendor-core-CWeZebhd.js";import{G as re,H as ie,W as ae}from"./vendor-primevue-01WhBsPb.js";import{t as oe}from"./hasPermission-BHM3xbrG.js";import{t as se}from"./useCuiDialog-C-2PMjxH.js";import{r as ce}from"./server-B3_iwGek.js";import{t as le}from"./SettingsAccount-BfZ8sdKS.js";import{t as ue}from"./SettingsAppearance-CI7FpIXv.js";import{n as de}from"./backup-CHJcbko5.js";var D={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function O(e,t){return h(),x(`svg`,D,[...t[0]||=[v(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`m5 12l5 5L20 7`},null,-1)]])}var fe=g({name:`tabler-check`,render:O}),pe={class:`h-full flex flex-col`},me={class:`border-color-bottom draggable-region`},k={class:`max-w-3xl mx-auto flex items-center justify-between px-4 py-3`},A={class:`flex items-center gap-2`},j={class:`flex-1 overflow-auto`},M={class:`max-w-3xl mx-auto px-4 py-6 flex flex-col gap-6`},N={class:`flex items-center w-full`},P={class:`flex flex-col items-center gap-2 flex-shrink-0`},F={key:1},I={class:`flex flex-col items-center gap-6 py-6`},L={class:`text-muted`},R={class:`flex flex-row items-center justify-center gap-2`},z={class:`max-w-[375px] text-center text-muted`},he={key:0,class:`flex flex-col items-center gap-3 w-full`},ge={class:`text-center text-muted max-w-[375px]`},_e={class:`flex flex-row items-center justify-center gap-2`},ve={class:`flex flex-col items-center gap-6 py-8`},ye={class:`text-center text-muted max-w-[375px]`},be={class:`flex items-center justify-between gap-2`},xe={key:1},B=E({__name:`FirstSteps`,setup(g){let E=i(),D=se(),O=r(),{t:B}=n(),V=o(),{loginLoading:Se}=ne(V),H=S([`welcome`,`appearance`,`account`,`finish`]),U=f(`accountFormRef`),W=f(`backupFileInputRef`),G=T(),K=T(),q=S(0),J=S(!1),Y=S(),X=_(()=>J.value||Se.value),Z=_(()=>oe(void 0,`master`)),Q=_(()=>U.value?.formRef);function Ce(e){return e<q.value?`bg-primary-500 text-white`:e===q.value?`bg-primary-500 text-white ring-4 ring-primary-500/20`:`border border-color text-muted`}async function $(){if(q.value<H.value.length-1)if(q.value===2){let e=Q.value?.getValues();if(e){if(!e.password||!e.passwordConfirm){Q.value?.setFieldError(`password`,`Required`),Q.value?.setFieldError(`passwordConfirm`,`Required`);return}if(!e.username){Q.value?.setFieldError(`username`,`Required`);return}}let t=await Q.value?.validate();t?.valid?(Y.value=a(e),q.value++):t?.valid||(E.error(`Validation failed`,t),O.add({severity:`error`,detail:B(`components.toast.validation_failed`),life:3e3}))}else q.value++}function we(){q.value>0&&q.value--}async function Te(){try{await V.logout()}catch(e){E.error(e.response?.data?.message??e.message??e)}}function Ee(){W.value?.click()}function De(e){let t=e.target;t.files&&t.files[0]&&(K.value=t.files[0],D.openTextDialog({data:{title:B(`components.dialog.title.confirm`),confirmText:B(`components.form.button.restore_and_restart`),contentText:B(`components.dialog.message.confirm_restore`),loading:X},onConfirm:Oe})),t.value=``}async function Oe(){if(J.value=!0,!K.value){J.value=!1;return}try{let e=new FormData;e.append(`upload`,K.value),ke(await de(e)),O.add({severity:`success`,detail:B(`components.toast.backup_restored`),life:3e3}),ce(),V.logout()}catch(e){O.add({severity:`error`,detail:e,life:3e3}),J.value=!1}}function ke(e){e.theme&&localStorage.setItem(`theme`,JSON.stringify(e.theme)),e.locale&&localStorage.setItem(`locale`,e.locale),e.ui&&localStorage.setItem(`ui`,JSON.stringify(e.ui))}async function Ae(){if(!Y.value){O.add({severity:`error`,detail:B(`components.toast.validation_failed`),life:3e3});return}let e,t=a(Y.value);t.firstLogin=!1,delete t.upload;try{G.value&&(e=new FormData,e.append(`upload`,G.value)),await V.updateUser(t,e),V.logout()}catch{}}return l(()=>{q.value===2&&(Y.value=void 0)}),(n,r)=>{let i=e,a=fe,o=t,l=ie,f=ae,g=re;return h(),x(`div`,pe,[v(`div`,me,[v(`div`,k,[v(`div`,A,[y(b(p),{src:b(s)(`logo_animated.svg`),width:`20px`,height:`22px`,title:`camera.ui`,"aria-label":`camera.ui`},null,8,[`src`]),r[1]||=v(`span`,{class:`font-semibold`},`camera.ui`,-1)]),y(i,{class:`cui-button-small non-draggable-region`,severity:`secondary`,variant:`text`,label:n.$t(`components.form.button.logout`),onClick:Te},null,8,[`label`])])]),v(`div`,j,[v(`div`,M,[v(`div`,N,[(h(!0),x(d,null,ee(b(H),(e,t)=>(h(),x(d,{key:e},[v(`div`,P,[v(`div`,{class:w([`w-9 h-9 rounded-full flex items-center justify-center text-sm font-semibold transition-all duration-200`,Ce(t)])},[t<b(q)?(h(),m(a,{key:0,class:`w-4 h-4`})):(h(),x(`span`,F,C(t+1),1))],2),v(`span`,{class:w([`text-xs font-medium hidden sm:block whitespace-nowrap`,t<=b(q)?`text-color`:`text-muted`])},C(n.$t(`views.firststeps.step_${e}`)),3)]),t<b(H).length-1?(h(),x(`div`,{key:0,class:w([`flex-1 h-px mx-2 sm:mx-3 transition-colors duration-200`,t<b(q)?`bg-primary-500`:`bg-[var(--border-color)]`])},null,2)):c(``,!0)],64))),128))]),y(g,{value:b(q),"onUpdate:value":r[0]||=e=>te(q)?q.value=e:null,lazy:``},{default:u(()=>[y(f,{class:`!p-0 !bg-transparent`},{default:u(()=>[y(l,{value:0},{default:u(()=>[y(o,{class:`cui-card`},{content:u(()=>[v(`div`,I,[v(`span`,L,C(n.$t(`views.firststeps.welcome_to`)),1),v(`div`,R,[y(b(p),{src:b(s)(`logo_animated.svg`),width:`26px`,height:`32px`,title:`camera.ui`,"aria-label":`camera.ui`},null,8,[`src`]),r[2]||=v(`span`,{class:`text-4xl`},`camera.ui`,-1)]),v(`p`,z,C(n.$t(`views.firststeps.slogan`)),1),b(Z)?(h(),x(`div`,he,[v(`p`,ge,C(n.$t(`views.firststeps.start_message`)),1),v(`div`,_e,[y(i,{class:`cui-button-medium`,loading:b(X),label:n.$t(`views.firststeps.new_installation`),onClick:$},null,8,[`loading`,`label`]),y(i,{class:`cui-button-medium`,severity:`secondary`,loading:b(X),label:n.$t(`views.firststeps.from_backup`),onClick:Ee},null,8,[`loading`,`label`])]),v(`input`,{ref_key:`backupFileInputRef`,ref:W,type:`file`,accept:`application/gzip, .tar, .tar.gz`,class:`hidden`,onChange:De},null,544)])):(h(),m(i,{key:1,class:`cui-button-medium`,loading:b(X),label:n.$t(`views.firststeps.start`),onClick:$},null,8,[`loading`,`label`]))])]),_:1})]),_:1}),y(l,{value:1},{default:u(()=>[y(ue)]),_:1}),y(l,{value:2},{default:u(()=>[y(le,{ref_key:`accountFormRef`,ref:U,firststeps:``},null,512)]),_:1}),y(l,{value:3},{default:u(()=>[y(o,{class:`cui-card`},{content:u(()=>[v(`div`,ve,[y(b(p),{src:b(s)(`logo_animated.svg`),width:`78px`,height:`84px`,title:`camera.ui`,"aria-label":`camera.ui`},null,8,[`src`]),v(`p`,ye,C(n.$t(`views.firststeps.finish_message`)),1)])]),_:1})]),_:1})]),_:1})]),_:1},8,[`value`]),v(`div`,be,[b(q)>0?(h(),m(i,{key:0,class:`cui-button-medium`,severity:`secondary`,label:n.$t(`components.form.button.previous`),onClick:we},null,8,[`label`])):(h(),x(`span`,xe)),b(q)>0&&b(q)<b(H).length-1?(h(),m(i,{key:2,class:`cui-button-medium`,label:n.$t(`components.form.button.next`),onClick:$},null,8,[`label`])):b(q)===b(H).length-1?(h(),m(i,{key:3,class:`cui-button-medium`,loading:b(X),label:n.$t(`views.firststeps.enjoy`),onClick:Ae},null,8,[`loading`,`label`])):c(``,!0)])])])])}}});export{B as default};
@@ -1 +1 @@
1
- import{Hn as e,Ji as t,Zt as n,ct as r,fi as i,lt as a,tt as o}from"./vendor-cameraui-lEA-78Jn.js";import{C as s}from"./api-DhzCRVL5.js";import{$t as c,Dn as l,Gt as u,Hn as d,Kt as f,Ln as p,Qn as m,Qt as h,Tn as g,Xn as _,Xt as v,Yn as y,Zt as b,an as x,bn as S,cr as C,dr as w,en as T,er as E,fr as D,lr as O,or as k,sn as A,zn as j,zt as ee}from"./vendor-CUsAwmr-.js";import{a as te,t as ne}from"./useSharedComposables-SA61SVjO.js";import{F as re,P as ie,a as M}from"./vendor-primevue-DST-0Ea0.js";import{i as N,n as ae,r as oe,t as se}from"./instances-Cb6K1-mb.js";import{t as ce}from"./CuiFloatingButton-BaAiuemi.js";import{t as le}from"./CuiMenu-CMnBfV9C.js";import{t as ue}from"./useCuiDialog-nDtDuLq-.js";import{t as de}from"./CuiTopbarSlot-BhsSSnaB.js";import{t as fe}from"./back-filled-DVeRsKmt.js";import{t as pe}from"./plus-CuWXW2I0.js";import{t as me}from"./search-Bl5hzTQq.js";import{t as he}from"./trash-fill-PLsykzhy.js";var P={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function F(e,t){return g(),T(`svg`,P,[...t[0]||=[b(`path`,{fill:`currentColor`,d:`M6 2h12a2 2 0 0 1 2 2v16a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2m6 2a6 6 0 0 0-6 6c0 3.31 2.69 6 6.1 6l-.88-2.23a1.01 1.01 0 0 1 .37-1.37l.86-.5a1.01 1.01 0 0 1 1.37.37l1.92 2.42A5.98 5.98 0 0 0 18 10a6 6 0 0 0-6-6m0 5a1 1 0 0 1 1 1a1 1 0 0 1-1 1a1 1 0 0 1-1-1a1 1 0 0 1 1-1m-5 9a1 1 0 0 0-1 1a1 1 0 0 0 1 1a1 1 0 0 0 1-1a1 1 0 0 0-1-1m5.09-4.73l2.49 6.31l2.59-1.5l-4.22-5.31z`},null,-1)]])}var I=_({name:`mdi-harddisk`,render:F}),L={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function R(e,t){return g(),T(`svg`,L,[...t[0]||=[b(`path`,{fill:`currentColor`,d:`M12 2A10 10 0 0 0 2 12a10 10 0 0 0 10 10a10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 2a8 8 0 0 1 8 8a8 8 0 0 1-8 8a8 8 0 0 1-8-8a8 8 0 0 1 8-8m0 5a3 3 0 0 0-3 3a3 3 0 0 0 3 3a3 3 0 0 0 3-3a3 3 0 0 0-3-3`},null,-1)]])}var z=_({name:`mdi-record-circle-outline`,render:R}),B={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function V(e,t){return g(),T(`svg`,B,[...t[0]||=[b(`path`,{fill:`currentColor`,d:`M9.153 5.408C10.42 3.136 11.053 2 12 2s1.58 1.136 2.847 3.408l.328.588c.36.646.54.969.82 1.182s.63.292 1.33.45l.636.144c2.46.557 3.689.835 3.982 1.776c.292.94-.546 1.921-2.223 3.882l-.434.507c-.476.557-.715.836-.822 1.18c-.107.345-.071.717.001 1.46l.066.677c.253 2.617.38 3.925-.386 4.506s-1.918.051-4.22-1.009l-.597-.274c-.654-.302-.981-.452-1.328-.452s-.674.15-1.328.452l-.596.274c-2.303 1.06-3.455 1.59-4.22 1.01c-.767-.582-.64-1.89-.387-4.507l.066-.676c.072-.744.108-1.116 0-1.46c-.106-.345-.345-.624-.821-1.18l-.434-.508c-1.677-1.96-2.515-2.941-2.223-3.882S3.58 8.328 6.04 7.772l.636-.144c.699-.158 1.048-.237 1.329-.45s.46-.536.82-1.182z`},null,-1)]])}var H=_({name:`solar-star-bold`,render:V}),U={class:`flex flex-col gap-2`},W={class:`flex items-center justify-between gap-2`},G={class:`flex items-center gap-1.5 min-w-0`},K={class:`text-xl font-semibold truncate`},q={class:`flex items-center gap-1 shrink-0`},J={class:`relative w-5 h-5`},Y={class:`flex items-center gap-2`},X={class:`text-sm text-muted-color truncate`},ge={key:0,class:`text-xs text-muted-color ml-auto shrink-0`},Z={key:0,class:`flex flex-col gap-2 mt-2`},_e={class:`cui-progress-track w-full h-2 rounded-full overflow-hidden`},ve={class:`flex items-center justify-between text-sm text-muted-color`},ye={key:1,class:`mt-1`},be={class:`text-sm text-orange-500`},xe={key:2,class:`mt-1`},Se={class:`text-sm text-muted-color`},Ce={class:`flex items-center text-muted-color`},we={key:0,class:`flex items-center gap-4`},Te={class:`flex items-center gap-1.5`},Ee={class:`text-sm text-color font-medium`},De={class:`flex items-center gap-1.5`},Oe={class:`text-sm text-color font-medium`},ke={key:1,class:`flex items-center gap-1.5 ml-auto`},Ae={class:`text-sm text-color font-medium`},je=A({__name:`CuiInstanceCard`,props:{instance:{},menuOpen:{type:Boolean}},emits:[`toggle-favorite`,`open-menu`],setup(t,{emit:n}){let i=t,a=n,{instance:o}=k(i),s=v(()=>o.value.lastUpdatedAt?m(o.value.lastUpdatedAt):``);function l(e){return e>=1024?`${(e/1024).toFixed(1)} GB`:`${e} MB`}function f(e){return e>=1e6?`${(e/1e6).toFixed(1)} TB`:e>=1e3?`${(e/1e3).toFixed(0)} GB`:`${e} MB`}function p(e){return e>=90?`bg-red-500`:e>=70?`bg-orange-400`:e>=50?`bg-yellow-400`:`bg-green-500`}function m(e){let t=Date.now()-(typeof e==`number`?e:new Date(e).getTime()),n=Math.floor(t/6e4);if(n<1)return`< 1m`;if(n<60)return`${n}m`;let r=Math.floor(n/60);return r<24?`${r}h`:`${Math.floor(r/24)}d`}return(n,i)=>{let m=H,_=e,v=M,y=N,S=z,E=I,k=r;return g(),h(k,{class:O([`cui-card transition-shadow h-[176px]`,{"ring-1 ring-primary":C(o).active,"cursor-pointer hover:shadow-md":C(o).status!==`offline`,"opacity-60":C(o).status===`offline`}])},{content:d(()=>[b(`div`,U,[b(`div`,W,[b(`div`,G,[x(_,{severity:`secondary`,text:``,rounded:``,class:`cui-icon-sm shrink-0 !ml-[calc(-0.25rem*2)]`,onClick:i[0]||=u(e=>a(`toggle-favorite`),[`stop`])},{icon:d(()=>[C(o).favorite?(g(),h(m,{key:0,class:`w-4 h-4 text-yellow-500`})):(g(),h(m,{key:1,class:`w-4 h-4`}))]),_:1}),b(`h3`,K,D(C(o).name),1)]),b(`div`,q,[C(o).status===`offline`?(g(),h(v,{key:0,severity:`danger`,value:n.$t(`views.instances.offline`),class:`text-xs`},null,8,[`value`])):c(``,!0),C(o).active?(g(),h(v,{key:1,severity:`success`,value:n.$t(`views.instances.active`)},null,8,[`value`])):c(``,!0),x(_,{severity:`secondary`,text:``,rounded:``,class:`cui-icon-sm`,onClick:i[1]||=u(e=>a(`open-menu`,e),[`stop`])},{icon:d(()=>[b(`div`,J,[b(`div`,{class:O([`absolute top-0.5 left-1/2 -translate-x-1/2 w-1 h-1 rounded-full transform transition-all duration-100 origin-center bg-current`,{"w-3.5 h-[2px] rotate-45 top-1/2 -translate-y-1/2 rounded-none":t.menuOpen}])},null,2),b(`div`,{class:O([`absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-1 h-1 rounded-full transition-all duration-100 bg-current`,{"opacity-0 scale-0":t.menuOpen}])},null,2),b(`div`,{class:O([`absolute bottom-0.5 left-1/2 -translate-x-1/2 w-1 h-1 rounded-full transform transition-all duration-100 origin-center bg-current`,{"w-3.5 h-[2px] -rotate-45 bottom-1/2 translate-y-1/2 rounded-none":t.menuOpen}])},null,2)])]),_:1})])]),b(`div`,Y,[b(`div`,{class:O([`w-2 h-2 rounded-full shrink-0`,{"bg-green-500":C(o).status===`online`,"bg-red-500":C(o).status===`offline`,"bg-gray-400":C(o).status===`unknown`}])},null,2),b(`span`,X,D(C(o).version?`v${C(o).version}`:C(o).url||``),1),C(s)?(g(),T(`span`,ge,D(C(s)),1)):c(``,!0)]),C(o).resources?(g(),T(`div`,Z,[b(`div`,_e,[b(`div`,{class:O([`h-full rounded-full transition-all duration-300`,p(C(o).resources.cpuUsage)]),style:w({width:`${C(o).resources.cpuUsage}%`})},null,6)]),b(`div`,ve,[b(`span`,null,`CPU `+D(C(o).resources.cpuUsage)+`%`,1),b(`span`,null,D(l(C(o).resources.memUsed))+` / `+D(l(C(o).resources.memTotal)),1)])])):C(o).hasCredentials?(g(),T(`div`,xe,[b(`span`,Se,D(C(o).status===`offline`?n.$t(`views.instances.server_offline`):n.$t(`views.instances.no_data`)),1)])):(g(),T(`div`,ye,[b(`span`,be,D(n.$t(`views.instances.credentials_required`)),1)]))])]),footer:d(()=>[b(`div`,Ce,[C(o).cameras?(g(),T(`div`,we,[b(`div`,Te,[x(y,{class:`w-4 h-4`}),b(`span`,Ee,D(C(o).cameras.online)+`/`+D(C(o).cameras.total),1)]),b(`div`,De,[x(S,{class:`w-4 h-4 text-red-500`}),b(`span`,Oe,D(C(o).cameras.recording),1)])])):c(``,!0),C(o).resources?(g(),T(`div`,ke,[x(E,{class:`w-4 h-4`}),b(`span`,Ae,D(f(C(o).resources.diskUsed))+` / `+D(f(C(o).resources.diskTotal)),1)])):c(``,!0)])]),_:1},8,[`class`])}}}),Me={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Ne(e,t){return g(),T(`svg`,Me,[...t[0]||=[b(`path`,{fill:`currentColor`,d:`m14.06 9l.94.94L5.92 19H5v-.92zm3.6-6c-.25 0-.51.1-.7.29l-1.83 1.83l3.75 3.75l1.83-1.83c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.2-.2-.45-.29-.71-.29m-3.6 3.19L3 17.25V21h3.75L17.81 9.94z`},null,-1)]])}var Pe=_({name:`mdi-pencil-outline`,render:Ne}),Fe={class:`flex flex-col gap-6 w-full`},Ie={class:`flex flex-col field-gap`},Le={for:`instanceName`,class:`cui-label`},Re={class:`flex flex-col field-gap`},ze={for:`instanceUrl`,class:`cui-label`},Be={class:`flex flex-col field-gap`},Ve={for:`credUsername`,class:`cui-label`},He={class:`flex flex-col field-gap`},Ue={for:`credPassword`,class:`cui-label`},Q=A({__name:`EditInstanceDialog`,props:{currentName:{},currentUrl:{},hasCredentials:{type:Boolean}},setup(e,{expose:t}){let n=e,{t:r}=i(),a=s(),c=E(n.currentName),l=E(n.currentUrl??``),u=E(``),d=E(``),f=v(()=>!n.currentName),p=v(()=>!!n.hasCredentials);return t({onConfirm:async()=>{let e=c.value.trim();if(!e)return null;if(f.value){let t=l.value.trim();if(!t)return null;let n=u.value.trim();return!n||!d.value?(a.add({severity:`warn`,detail:r(`views.settings.instances.credentials_required`),life:3e3}),null):{name:e,url:t,credentials:{username:n,password:d.value}}}return{name:e,credentials:u.value.trim()&&d.value?{username:u.value.trim(),password:d.value}:void 0}}}),(t,n)=>{let r=o;return g(),T(`div`,Fe,[b(`div`,Ie,[b(`label`,Le,D(t.$t(`views.settings.instances.name`)),1),x(r,{id:`instanceName`,modelValue:C(c),"onUpdate:modelValue":n[0]||=e=>y(c)?c.value=e:null,placeholder:t.$t(`views.settings.instances.name`),class:`w-full`,autofocus:``},null,8,[`modelValue`,`placeholder`])]),b(`div`,Re,[b(`label`,ze,D(t.$t(`views.settings.instances.url`)),1),C(f)?(g(),h(r,{key:0,id:`instanceUrl`,modelValue:C(l),"onUpdate:modelValue":n[1]||=e=>y(l)?l.value=e:null,placeholder:t.$t(`views.settings.instances.url_placeholder`),class:`w-full`},null,8,[`modelValue`,`placeholder`])):(g(),h(r,{key:1,id:`instanceUrl`,"model-value":e.currentUrl,class:`w-full`,readonly:``},null,8,[`model-value`]))]),b(`div`,Be,[b(`label`,Ve,D(t.$t(`views.settings.instances.credentials_username`)),1),x(r,{id:`credUsername`,modelValue:C(u),"onUpdate:modelValue":n[2]||=e=>y(u)?u.value=e:null,placeholder:C(p)?t.$t(`views.settings.instances.credentials_unchanged`):t.$t(`views.settings.instances.credentials_username`),class:`w-full`,autocomplete:`off`},null,8,[`modelValue`,`placeholder`])]),b(`div`,He,[b(`label`,Ue,D(t.$t(`views.settings.instances.credentials_password`)),1),x(r,{id:`credPassword`,modelValue:C(d),"onUpdate:modelValue":n[3]||=e=>y(d)?d.value=e:null,type:`password`,placeholder:C(p)?t.$t(`views.settings.instances.credentials_unchanged`):t.$t(`views.settings.instances.credentials_password`),class:`w-full`,autocomplete:`new-password`},null,8,[`modelValue`,`placeholder`])])])}}}),We={class:`flex flex-col`},Ge={key:0,class:`page-title`},Ke={class:`flex gap-2 mb-4`},qe={key:`empty`,class:`flex flex-1 min-h-0 flex-col items-center justify-center w-full gap-4`},Je={class:`text-muted text-sm`},Ye=176,$=280,Xe=15e3,Ze=A({__name:`Instances`,setup(r){let u=new ae,{t:_}=i(),{smBreakpoint:O}=ne(),{width:k,height:A}=te(),M=ue(),N=s(),P=se(),F=v(()=>P.serverInstances.filter(e=>!!e.credentials)),{data:I,isPending:L}=u.listQuery(),{mutateAsync:R}=u.createMutation(),{mutateAsync:z}=u.updateMutation(),{mutateAsync:B}=u.deleteMutation(),{mutateAsync:V}=u.toggleFavoriteMutation(),H=u.statusQueries(F),U,W=p(`menuRef`),G=E(!1),K=E(``),q=m({}),J=v(()=>(O.value?1:Math.max(1,Math.floor(k.value/$)))*Math.max(1,Math.ceil(A.value/184))),Y=v(()=>{let e=0;return P.serverInstances.map(t=>{let n=!!t.credentials;if(!n)return{id:t.id,name:t.name,url:t.url,status:`unknown`,active:t.id===P.activeId,favorite:P.isFavorite(t.id),hasCredentials:n};let r=H.value[e++],i=r?.data,a=q[t.id],o=`unknown`;return a===`online`?o=`online`:a===`offline`&&(o=`offline`),{id:t.id,name:t.name,url:t.url,status:o,active:t.id===P.activeId,favorite:P.isFavorite(t.id),hasCredentials:n,version:i?.version,lastUpdatedAt:r?.dataUpdatedAt,cameras:i?.cameras,resources:i?{cpuUsage:i.cpuUsage,memUsed:i.memUsed,memTotal:i.memTotal,diskUsed:i.diskUsed,diskTotal:i.diskTotal}:void 0}})}),X=v(()=>{let e=K.value.toLowerCase().trim();return e?Y.value.filter(t=>t.name.toLowerCase().includes(e)||t.url?.toLowerCase().includes(e)):Y.value}),ge=v(()=>[{label:_(`views.settings.edit`),icon:Pe,onClick:e=>{let t=_e(e);t&&be(t)}},{label:_(`views.settings.remove`),icon:he,iconProps:{class:`text-red-500`},labelProps:{class:`text-red-500`},buttonProps:{severity:`danger`},onClick:e=>{xe(e.id)}}]);function Z(){U?.abort(),U=new AbortController;let{signal:e}=U;for(let t of F.value)q[t.id]===void 0&&(q[t.id]=`checking`),P.probeInstance(t.id,e).then(n=>{e.aborted||(q[t.id]=n?`online`:`offline`)}).catch(()=>{e.aborted||(q[t.id]=`offline`)})}function _e(e){let t=P.serverInstances.find(t=>t.id===e.id);if(!t)return;let n=P.instanceTokens[t.id];return{id:t.id,name:t.name,url:t.url,hasCredentials:!!t.credentials,favorite:t.favorite??!0,userData:n?.userData??null,lastConnectedAt:n?.lastConnectedAt??null,isHome:!1}}function ve(e){e.active||e.status===`offline`||(e.id===`__home__`?P.switchInstance(null):P.switchInstance(e.id))}function ye(){M.openComponentDialog(Q,{data:{title:_(`views.instances.add`),confirmText:_(`components.form.button.add`),contentProps:{currentName:``,hasCredentials:!1}},onConfirm:async e=>{if(e)try{await R({name:e.name,url:e.url,credentials:e.credentials})}catch(e){N.add({severity:`error`,detail:e,life:3e3})}}})}function be(e){M.openComponentDialog(Q,{data:{title:_(`views.settings.instances.edit`),confirmText:_(`components.form.button.save`),contentProps:{currentName:e.name,currentUrl:e.url,hasCredentials:e.hasCredentials}},onConfirm:async t=>{if(t)try{await z({id:e.id,data:{name:t.name===e.name?void 0:t.name,credentials:t.credentials??void 0}})}catch(e){N.add({severity:`error`,detail:e,life:3e3})}}})}function xe(e){M.openTextDialog({data:{title:_(`components.dialog.title.confirm`),contentText:_(`views.settings.instances.confirm_remove`),confirmText:_(`views.settings.instances.remove`),loading:G},onConfirm:async()=>{G.value=!0;try{await B(e)}catch(e){N.add({severity:`error`,detail:e,life:3e3})}G.value=!1}})}return j(I,e=>{e&&(n(P.serverInstances,e.instances)||(P.serverInstances=e.instances),P.serverHomeId!==e.homeId&&(P.serverHomeId=e.homeId))},{immediate:!0}),j(F,Z,{immediate:!0,deep:!0}),t(Z,Xe),S(()=>{U?.abort()}),(t,n)=>{let r=fe,i=e,s=de,u=me,p=ie,m=o,v=re,S=a,E=je,k=oe,A=ce;return g(),T(`div`,We,[C(O)?c(``,!0):(g(),T(`h1`,Ge,D(t.$t(`views.instances.title`)),1)),x(s,{position:`left`},{default:d(()=>[x(i,{severity:`secondary`,text:``,class:`cui-button p-2 text-color non-draggable-region`,onClick:n[0]||=e=>t.$router.push(`/menu`)},{icon:d(()=>[x(r,{class:`w-6 h-6`})]),_:1})]),_:1}),b(`div`,Ke,[x(v,{class:`flex-1`},{default:d(()=>[x(p,null,{default:d(()=>[x(u,{class:`w-4 h-4`})]),_:1}),x(m,{modelValue:C(K),"onUpdate:modelValue":n[1]||=e=>y(K)?K.value=e:null,placeholder:C(_)(`views.instances.search`),class:`w-full`},null,8,[`modelValue`,`placeholder`])]),_:1})]),x(ee,{name:`fade-2`,mode:`out-in`},{default:d(()=>[C(L)?(g(),T(`div`,{key:`loading`,class:`grid w-full gap-2 p-px`,style:w({gridTemplateColumns:`repeat(auto-fill, minmax(${C(O)?`100%`:`${$}px`}, 1fr))`})},[(g(!0),T(f,null,l(C(J),e=>(g(),h(S,{key:e,height:`${Ye}px`,class:`cui-card`},null,8,[`height`]))),128))],4)):C(X).length?(g(),T(`div`,{key:`content`,class:`grid w-full gap-2 p-px`,style:w({gridTemplateColumns:`repeat(auto-fill, minmax(${C(O)?`100%`:`${$}px`}, 1fr))`})},[(g(!0),T(f,null,l(C(X),e=>(g(),h(E,{key:e.id,instance:e,"menu-open":C(W)?.isOpen&&C(W)?.data?.id===e.id,onClick:t=>ve(e),onToggleFavorite:t=>C(V)(e.id),onOpenMenu:t=>C(W)?.toggleMenu(t,void 0,e)},null,8,[`instance`,`menu-open`,`onClick`,`onToggleFavorite`,`onOpenMenu`]))),128))],4)):(g(),T(`div`,qe,[x(k,{class:`w-12 h-12 text-muted`}),b(`span`,Je,D(t.$t(`views.instances.no_instances`)),1)]))]),_:1}),x(A,{"tooltip-props":{value:t.$t(`views.instances.add`)},"button-props":{class:`text-white`},icon:C(pe),"icon-props":{width:`30px`,height:`30px`},onClick:ye},null,8,[`tooltip-props`,`icon`]),x(le,{ref_key:`menuRef`,ref:W,items:C(ge),popover:{pt:{content:{class:`p-0! rounded-xl! overflow-hidden!`}}}},null,8,[`items`])])}}});export{Ze as default};
1
+ import{Hn as e,Ji as t,Zt as n,ct as r,fi as i,lt as a,tt as o}from"./vendor-cameraui-D-WYtlxb.js";import{C as s}from"./api-CLcqLYO9.js";import{$t as c,Dn as l,Gt as u,Hn as d,Kt as f,Ln as p,Qn as m,Qt as h,Tn as g,Xn as _,Xt as v,Yn as y,Zt as b,an as x,bn as S,cr as C,dr as w,en as T,er as E,fr as D,lr as O,or as k,sn as A,zn as j,zt as ee}from"./vendor-CUsAwmr-.js";import{a as te,t as ne}from"./useSharedComposables-CzkF-tst.js";import{F as re,P as ie,a as M}from"./vendor-primevue-01WhBsPb.js";import{i as N,n as ae,r as oe,t as se}from"./instances-8zX84KmH.js";import{t as ce}from"./CuiFloatingButton-B4byvsOs.js";import{t as le}from"./CuiMenu-KizSc3du.js";import{t as ue}from"./useCuiDialog-C-2PMjxH.js";import{t as de}from"./CuiTopbarSlot-BlbZqDDn.js";import{t as fe}from"./back-filled-DVeRsKmt.js";import{t as pe}from"./plus-CuWXW2I0.js";import{t as me}from"./search-Bl5hzTQq.js";import{t as he}from"./trash-fill-PLsykzhy.js";var P={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function F(e,t){return g(),T(`svg`,P,[...t[0]||=[b(`path`,{fill:`currentColor`,d:`M6 2h12a2 2 0 0 1 2 2v16a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2m6 2a6 6 0 0 0-6 6c0 3.31 2.69 6 6.1 6l-.88-2.23a1.01 1.01 0 0 1 .37-1.37l.86-.5a1.01 1.01 0 0 1 1.37.37l1.92 2.42A5.98 5.98 0 0 0 18 10a6 6 0 0 0-6-6m0 5a1 1 0 0 1 1 1a1 1 0 0 1-1 1a1 1 0 0 1-1-1a1 1 0 0 1 1-1m-5 9a1 1 0 0 0-1 1a1 1 0 0 0 1 1a1 1 0 0 0 1-1a1 1 0 0 0-1-1m5.09-4.73l2.49 6.31l2.59-1.5l-4.22-5.31z`},null,-1)]])}var I=_({name:`mdi-harddisk`,render:F}),L={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function R(e,t){return g(),T(`svg`,L,[...t[0]||=[b(`path`,{fill:`currentColor`,d:`M12 2A10 10 0 0 0 2 12a10 10 0 0 0 10 10a10 10 0 0 0 10-10A10 10 0 0 0 12 2m0 2a8 8 0 0 1 8 8a8 8 0 0 1-8 8a8 8 0 0 1-8-8a8 8 0 0 1 8-8m0 5a3 3 0 0 0-3 3a3 3 0 0 0 3 3a3 3 0 0 0 3-3a3 3 0 0 0-3-3`},null,-1)]])}var z=_({name:`mdi-record-circle-outline`,render:R}),B={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function V(e,t){return g(),T(`svg`,B,[...t[0]||=[b(`path`,{fill:`currentColor`,d:`M9.153 5.408C10.42 3.136 11.053 2 12 2s1.58 1.136 2.847 3.408l.328.588c.36.646.54.969.82 1.182s.63.292 1.33.45l.636.144c2.46.557 3.689.835 3.982 1.776c.292.94-.546 1.921-2.223 3.882l-.434.507c-.476.557-.715.836-.822 1.18c-.107.345-.071.717.001 1.46l.066.677c.253 2.617.38 3.925-.386 4.506s-1.918.051-4.22-1.009l-.597-.274c-.654-.302-.981-.452-1.328-.452s-.674.15-1.328.452l-.596.274c-2.303 1.06-3.455 1.59-4.22 1.01c-.767-.582-.64-1.89-.387-4.507l.066-.676c.072-.744.108-1.116 0-1.46c-.106-.345-.345-.624-.821-1.18l-.434-.508c-1.677-1.96-2.515-2.941-2.223-3.882S3.58 8.328 6.04 7.772l.636-.144c.699-.158 1.048-.237 1.329-.45s.46-.536.82-1.182z`},null,-1)]])}var H=_({name:`solar-star-bold`,render:V}),U={class:`flex flex-col gap-2`},W={class:`flex items-center justify-between gap-2`},G={class:`flex items-center gap-1.5 min-w-0`},K={class:`text-xl font-semibold truncate`},q={class:`flex items-center gap-1 shrink-0`},J={class:`relative w-5 h-5`},Y={class:`flex items-center gap-2`},X={class:`text-sm text-muted-color truncate`},ge={key:0,class:`text-xs text-muted-color ml-auto shrink-0`},Z={key:0,class:`flex flex-col gap-2 mt-2`},_e={class:`cui-progress-track w-full h-2 rounded-full overflow-hidden`},ve={class:`flex items-center justify-between text-sm text-muted-color`},ye={key:1,class:`mt-1`},be={class:`text-sm text-orange-500`},xe={key:2,class:`mt-1`},Se={class:`text-sm text-muted-color`},Ce={class:`flex items-center text-muted-color`},we={key:0,class:`flex items-center gap-4`},Te={class:`flex items-center gap-1.5`},Ee={class:`text-sm text-color font-medium`},De={class:`flex items-center gap-1.5`},Oe={class:`text-sm text-color font-medium`},ke={key:1,class:`flex items-center gap-1.5 ml-auto`},Ae={class:`text-sm text-color font-medium`},je=A({__name:`CuiInstanceCard`,props:{instance:{},menuOpen:{type:Boolean}},emits:[`toggle-favorite`,`open-menu`],setup(t,{emit:n}){let i=t,a=n,{instance:o}=k(i),s=v(()=>o.value.lastUpdatedAt?m(o.value.lastUpdatedAt):``);function l(e){return e>=1024?`${(e/1024).toFixed(1)} GB`:`${e} MB`}function f(e){return e>=1e6?`${(e/1e6).toFixed(1)} TB`:e>=1e3?`${(e/1e3).toFixed(0)} GB`:`${e} MB`}function p(e){return e>=90?`bg-red-500`:e>=70?`bg-orange-400`:e>=50?`bg-yellow-400`:`bg-green-500`}function m(e){let t=Date.now()-(typeof e==`number`?e:new Date(e).getTime()),n=Math.floor(t/6e4);if(n<1)return`< 1m`;if(n<60)return`${n}m`;let r=Math.floor(n/60);return r<24?`${r}h`:`${Math.floor(r/24)}d`}return(n,i)=>{let m=H,_=e,v=M,y=N,S=z,E=I,k=r;return g(),h(k,{class:O([`cui-card transition-shadow h-[176px]`,{"ring-1 ring-primary":C(o).active,"cursor-pointer hover:shadow-md":C(o).status!==`offline`,"opacity-60":C(o).status===`offline`}])},{content:d(()=>[b(`div`,U,[b(`div`,W,[b(`div`,G,[x(_,{severity:`secondary`,text:``,rounded:``,class:`cui-icon-sm shrink-0 !ml-[calc(-0.25rem*2)]`,onClick:i[0]||=u(e=>a(`toggle-favorite`),[`stop`])},{icon:d(()=>[C(o).favorite?(g(),h(m,{key:0,class:`w-4 h-4 text-yellow-500`})):(g(),h(m,{key:1,class:`w-4 h-4`}))]),_:1}),b(`h3`,K,D(C(o).name),1)]),b(`div`,q,[C(o).status===`offline`?(g(),h(v,{key:0,severity:`danger`,value:n.$t(`views.instances.offline`),class:`text-xs`},null,8,[`value`])):c(``,!0),C(o).active?(g(),h(v,{key:1,severity:`success`,value:n.$t(`views.instances.active`)},null,8,[`value`])):c(``,!0),x(_,{severity:`secondary`,text:``,rounded:``,class:`cui-icon-sm`,onClick:i[1]||=u(e=>a(`open-menu`,e),[`stop`])},{icon:d(()=>[b(`div`,J,[b(`div`,{class:O([`absolute top-0.5 left-1/2 -translate-x-1/2 w-1 h-1 rounded-full transform transition-all duration-100 origin-center bg-current`,{"w-3.5 h-[2px] rotate-45 top-1/2 -translate-y-1/2 rounded-none":t.menuOpen}])},null,2),b(`div`,{class:O([`absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 w-1 h-1 rounded-full transition-all duration-100 bg-current`,{"opacity-0 scale-0":t.menuOpen}])},null,2),b(`div`,{class:O([`absolute bottom-0.5 left-1/2 -translate-x-1/2 w-1 h-1 rounded-full transform transition-all duration-100 origin-center bg-current`,{"w-3.5 h-[2px] -rotate-45 bottom-1/2 translate-y-1/2 rounded-none":t.menuOpen}])},null,2)])]),_:1})])]),b(`div`,Y,[b(`div`,{class:O([`w-2 h-2 rounded-full shrink-0`,{"bg-green-500":C(o).status===`online`,"bg-red-500":C(o).status===`offline`,"bg-gray-400":C(o).status===`unknown`}])},null,2),b(`span`,X,D(C(o).version?`v${C(o).version}`:C(o).url||``),1),C(s)?(g(),T(`span`,ge,D(C(s)),1)):c(``,!0)]),C(o).resources?(g(),T(`div`,Z,[b(`div`,_e,[b(`div`,{class:O([`h-full rounded-full transition-all duration-300`,p(C(o).resources.cpuUsage)]),style:w({width:`${C(o).resources.cpuUsage}%`})},null,6)]),b(`div`,ve,[b(`span`,null,`CPU `+D(C(o).resources.cpuUsage)+`%`,1),b(`span`,null,D(l(C(o).resources.memUsed))+` / `+D(l(C(o).resources.memTotal)),1)])])):C(o).hasCredentials?(g(),T(`div`,xe,[b(`span`,Se,D(C(o).status===`offline`?n.$t(`views.instances.server_offline`):n.$t(`views.instances.no_data`)),1)])):(g(),T(`div`,ye,[b(`span`,be,D(n.$t(`views.instances.credentials_required`)),1)]))])]),footer:d(()=>[b(`div`,Ce,[C(o).cameras?(g(),T(`div`,we,[b(`div`,Te,[x(y,{class:`w-4 h-4`}),b(`span`,Ee,D(C(o).cameras.online)+`/`+D(C(o).cameras.total),1)]),b(`div`,De,[x(S,{class:`w-4 h-4 text-red-500`}),b(`span`,Oe,D(C(o).cameras.recording),1)])])):c(``,!0),C(o).resources?(g(),T(`div`,ke,[x(E,{class:`w-4 h-4`}),b(`span`,Ae,D(f(C(o).resources.diskUsed))+` / `+D(f(C(o).resources.diskTotal)),1)])):c(``,!0)])]),_:1},8,[`class`])}}}),Me={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Ne(e,t){return g(),T(`svg`,Me,[...t[0]||=[b(`path`,{fill:`currentColor`,d:`m14.06 9l.94.94L5.92 19H5v-.92zm3.6-6c-.25 0-.51.1-.7.29l-1.83 1.83l3.75 3.75l1.83-1.83c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.2-.2-.45-.29-.71-.29m-3.6 3.19L3 17.25V21h3.75L17.81 9.94z`},null,-1)]])}var Pe=_({name:`mdi-pencil-outline`,render:Ne}),Fe={class:`flex flex-col gap-6 w-full`},Ie={class:`flex flex-col field-gap`},Le={for:`instanceName`,class:`cui-label`},Re={class:`flex flex-col field-gap`},ze={for:`instanceUrl`,class:`cui-label`},Be={class:`flex flex-col field-gap`},Ve={for:`credUsername`,class:`cui-label`},He={class:`flex flex-col field-gap`},Ue={for:`credPassword`,class:`cui-label`},Q=A({__name:`EditInstanceDialog`,props:{currentName:{},currentUrl:{},hasCredentials:{type:Boolean}},setup(e,{expose:t}){let n=e,{t:r}=i(),a=s(),c=E(n.currentName),l=E(n.currentUrl??``),u=E(``),d=E(``),f=v(()=>!n.currentName),p=v(()=>!!n.hasCredentials);return t({onConfirm:async()=>{let e=c.value.trim();if(!e)return null;if(f.value){let t=l.value.trim();if(!t)return null;let n=u.value.trim();return!n||!d.value?(a.add({severity:`warn`,detail:r(`views.settings.instances.credentials_required`),life:3e3}),null):{name:e,url:t,credentials:{username:n,password:d.value}}}return{name:e,credentials:u.value.trim()&&d.value?{username:u.value.trim(),password:d.value}:void 0}}}),(t,n)=>{let r=o;return g(),T(`div`,Fe,[b(`div`,Ie,[b(`label`,Le,D(t.$t(`views.settings.instances.name`)),1),x(r,{id:`instanceName`,modelValue:C(c),"onUpdate:modelValue":n[0]||=e=>y(c)?c.value=e:null,placeholder:t.$t(`views.settings.instances.name`),class:`w-full`,autofocus:``},null,8,[`modelValue`,`placeholder`])]),b(`div`,Re,[b(`label`,ze,D(t.$t(`views.settings.instances.url`)),1),C(f)?(g(),h(r,{key:0,id:`instanceUrl`,modelValue:C(l),"onUpdate:modelValue":n[1]||=e=>y(l)?l.value=e:null,placeholder:t.$t(`views.settings.instances.url_placeholder`),class:`w-full`},null,8,[`modelValue`,`placeholder`])):(g(),h(r,{key:1,id:`instanceUrl`,"model-value":e.currentUrl,class:`w-full`,readonly:``},null,8,[`model-value`]))]),b(`div`,Be,[b(`label`,Ve,D(t.$t(`views.settings.instances.credentials_username`)),1),x(r,{id:`credUsername`,modelValue:C(u),"onUpdate:modelValue":n[2]||=e=>y(u)?u.value=e:null,placeholder:C(p)?t.$t(`views.settings.instances.credentials_unchanged`):t.$t(`views.settings.instances.credentials_username`),class:`w-full`,autocomplete:`off`},null,8,[`modelValue`,`placeholder`])]),b(`div`,He,[b(`label`,Ue,D(t.$t(`views.settings.instances.credentials_password`)),1),x(r,{id:`credPassword`,modelValue:C(d),"onUpdate:modelValue":n[3]||=e=>y(d)?d.value=e:null,type:`password`,placeholder:C(p)?t.$t(`views.settings.instances.credentials_unchanged`):t.$t(`views.settings.instances.credentials_password`),class:`w-full`,autocomplete:`new-password`},null,8,[`modelValue`,`placeholder`])])])}}}),We={class:`flex flex-col`},Ge={key:0,class:`page-title`},Ke={class:`flex gap-2 mb-4`},qe={key:`empty`,class:`flex flex-1 min-h-0 flex-col items-center justify-center w-full gap-4`},Je={class:`text-muted text-sm`},Ye=176,$=280,Xe=15e3,Ze=A({__name:`Instances`,setup(r){let u=new ae,{t:_}=i(),{smBreakpoint:O}=ne(),{width:k,height:A}=te(),M=ue(),N=s(),P=se(),F=v(()=>P.serverInstances.filter(e=>!!e.credentials)),{data:I,isPending:L}=u.listQuery(),{mutateAsync:R}=u.createMutation(),{mutateAsync:z}=u.updateMutation(),{mutateAsync:B}=u.deleteMutation(),{mutateAsync:V}=u.toggleFavoriteMutation(),H=u.statusQueries(F),U,W=p(`menuRef`),G=E(!1),K=E(``),q=m({}),J=v(()=>(O.value?1:Math.max(1,Math.floor(k.value/$)))*Math.max(1,Math.ceil(A.value/184))),Y=v(()=>{let e=0;return P.serverInstances.map(t=>{let n=!!t.credentials;if(!n)return{id:t.id,name:t.name,url:t.url,status:`unknown`,active:t.id===P.activeId,favorite:P.isFavorite(t.id),hasCredentials:n};let r=H.value[e++],i=r?.data,a=q[t.id],o=`unknown`;return a===`online`?o=`online`:a===`offline`&&(o=`offline`),{id:t.id,name:t.name,url:t.url,status:o,active:t.id===P.activeId,favorite:P.isFavorite(t.id),hasCredentials:n,version:i?.version,lastUpdatedAt:r?.dataUpdatedAt,cameras:i?.cameras,resources:i?{cpuUsage:i.cpuUsage,memUsed:i.memUsed,memTotal:i.memTotal,diskUsed:i.diskUsed,diskTotal:i.diskTotal}:void 0}})}),X=v(()=>{let e=K.value.toLowerCase().trim();return e?Y.value.filter(t=>t.name.toLowerCase().includes(e)||t.url?.toLowerCase().includes(e)):Y.value}),ge=v(()=>[{label:_(`views.settings.edit`),icon:Pe,onClick:e=>{let t=_e(e);t&&be(t)}},{label:_(`views.settings.remove`),icon:he,iconProps:{class:`text-red-500`},labelProps:{class:`text-red-500`},buttonProps:{severity:`danger`},onClick:e=>{xe(e.id)}}]);function Z(){U?.abort(),U=new AbortController;let{signal:e}=U;for(let t of F.value)q[t.id]===void 0&&(q[t.id]=`checking`),P.probeInstance(t.id,e).then(n=>{e.aborted||(q[t.id]=n?`online`:`offline`)}).catch(()=>{e.aborted||(q[t.id]=`offline`)})}function _e(e){let t=P.serverInstances.find(t=>t.id===e.id);if(!t)return;let n=P.instanceTokens[t.id];return{id:t.id,name:t.name,url:t.url,hasCredentials:!!t.credentials,favorite:t.favorite??!0,userData:n?.userData??null,lastConnectedAt:n?.lastConnectedAt??null,isHome:!1}}function ve(e){e.active||e.status===`offline`||(e.id===`__home__`?P.switchInstance(null):P.switchInstance(e.id))}function ye(){M.openComponentDialog(Q,{data:{title:_(`views.instances.add`),confirmText:_(`components.form.button.add`),contentProps:{currentName:``,hasCredentials:!1}},onConfirm:async e=>{if(e)try{await R({name:e.name,url:e.url,credentials:e.credentials})}catch(e){N.add({severity:`error`,detail:e,life:3e3})}}})}function be(e){M.openComponentDialog(Q,{data:{title:_(`views.settings.instances.edit`),confirmText:_(`components.form.button.save`),contentProps:{currentName:e.name,currentUrl:e.url,hasCredentials:e.hasCredentials}},onConfirm:async t=>{if(t)try{await z({id:e.id,data:{name:t.name===e.name?void 0:t.name,credentials:t.credentials??void 0}})}catch(e){N.add({severity:`error`,detail:e,life:3e3})}}})}function xe(e){M.openTextDialog({data:{title:_(`components.dialog.title.confirm`),contentText:_(`views.settings.instances.confirm_remove`),confirmText:_(`views.settings.instances.remove`),loading:G},onConfirm:async()=>{G.value=!0;try{await B(e)}catch(e){N.add({severity:`error`,detail:e,life:3e3})}G.value=!1}})}return j(I,e=>{e&&(n(P.serverInstances,e.instances)||(P.serverInstances=e.instances),P.serverHomeId!==e.homeId&&(P.serverHomeId=e.homeId))},{immediate:!0}),j(F,Z,{immediate:!0,deep:!0}),t(Z,Xe),S(()=>{U?.abort()}),(t,n)=>{let r=fe,i=e,s=de,u=me,p=ie,m=o,v=re,S=a,E=je,k=oe,A=ce;return g(),T(`div`,We,[C(O)?c(``,!0):(g(),T(`h1`,Ge,D(t.$t(`views.instances.title`)),1)),x(s,{position:`left`},{default:d(()=>[x(i,{severity:`secondary`,text:``,class:`cui-button p-2 text-color non-draggable-region`,onClick:n[0]||=e=>t.$router.push(`/menu`)},{icon:d(()=>[x(r,{class:`w-6 h-6`})]),_:1})]),_:1}),b(`div`,Ke,[x(v,{class:`flex-1`},{default:d(()=>[x(p,null,{default:d(()=>[x(u,{class:`w-4 h-4`})]),_:1}),x(m,{modelValue:C(K),"onUpdate:modelValue":n[1]||=e=>y(K)?K.value=e:null,placeholder:C(_)(`views.instances.search`),class:`w-full`},null,8,[`modelValue`,`placeholder`])]),_:1})]),x(ee,{name:`fade-2`,mode:`out-in`},{default:d(()=>[C(L)?(g(),T(`div`,{key:`loading`,class:`grid w-full gap-2 p-px`,style:w({gridTemplateColumns:`repeat(auto-fill, minmax(${C(O)?`100%`:`${$}px`}, 1fr))`})},[(g(!0),T(f,null,l(C(J),e=>(g(),h(S,{key:e,height:`${Ye}px`,class:`cui-card`},null,8,[`height`]))),128))],4)):C(X).length?(g(),T(`div`,{key:`content`,class:`grid w-full gap-2 p-px`,style:w({gridTemplateColumns:`repeat(auto-fill, minmax(${C(O)?`100%`:`${$}px`}, 1fr))`})},[(g(!0),T(f,null,l(C(X),e=>(g(),h(E,{key:e.id,instance:e,"menu-open":C(W)?.isOpen&&C(W)?.data?.id===e.id,onClick:t=>ve(e),onToggleFavorite:t=>C(V)(e.id),onOpenMenu:t=>C(W)?.toggleMenu(t,void 0,e)},null,8,[`instance`,`menu-open`,`onClick`,`onToggleFavorite`,`onOpenMenu`]))),128))],4)):(g(),T(`div`,qe,[x(k,{class:`w-12 h-12 text-muted`}),b(`span`,Je,D(t.$t(`views.instances.no_instances`)),1)]))]),_:1}),x(A,{"tooltip-props":{value:t.$t(`views.instances.add`)},"button-props":{class:`text-white`},icon:C(pe),"icon-props":{width:`30px`,height:`30px`},onClick:ye},null,8,[`tooltip-props`,`icon`]),x(le,{ref_key:`menuRef`,ref:W,items:C(ge),popover:{pt:{content:{class:`p-0! rounded-xl! overflow-hidden!`}}}},null,8,[`items`])])}}});export{Ze as default};
@@ -1,4 +1,4 @@
1
- import{Hn as e,fi as t,qi as n,tt as ee}from"./vendor-cameraui-lEA-78Jn.js";import{Dn as r,Hn as i,Kt as a,Ln as o,Qt as s,Tn as c,Un as l,Xn as u,Xt as d,Yn as f,Zt as p,_n as m,an as h,cr as g,dr as _,en as v,er as y,gn as te,jn as ne,lr as b,nn as re,or as x,sn as S,wn as C,yn as w,zn as T}from"./vendor-CUsAwmr-.js";import{f as E}from"./vendor-core-Dqc843Zs.js";import{n as D}from"./ui-DhLpf0gJ.js";import{F as ie,J as ae,P as oe,o as se}from"./vendor-primevue-DST-0Ea0.js";import{t as O}from"./useFileDownload-BGGtfpvc.js";import{t as ce}from"./useCuiDialog-nDtDuLq-.js";import{t as le}from"./CuiTopbarSlot-BhsSSnaB.js";import{n as ue,t as de}from"./useLogsSocket-D6H2UEA3.js";import{t as fe}from"./server-D9bvACdr.js";import{t as pe}from"./back-filled-DVeRsKmt.js";import{t as k}from"./search-Bl5hzTQq.js";import{n as A,t as j}from"./zoom-in-fuKu2une.js";import{n as M,t as N}from"./CuiTopNavbarItem-CR5y7dIk.js";import{t as P}from"./arrow-left-CGyu-P3h.js";import{t as F}from"./trash-2-BAlrGkbt.js";var I={viewBox:`0 0 32 32`,width:`1.2em`,height:`1.2em`};function L(e,t){return c(),v(`svg`,I,[...t[0]||=[p(`path`,{fill:`currentColor`,d:`M16 18L6 8l1.4-1.4l8.6 8.6l8.6-8.6L26 8zM4 22h24v2H4z`},null,-1)]])}var R=u({name:`carbon-down-to-bottom`,render:L}),z={viewBox:`0 0 20 20`,width:`1.2em`,height:`1.2em`};function B(e,t){return c(),v(`svg`,z,[...t[0]||=[p(`path`,{fill:`currentColor`,"fill-rule":`evenodd`,d:`M3 17a1 1 0 0 1 1-1h12a1 1 0 1 1 0 2H4a1 1 0 0 1-1-1m3.293-7.707a1 1 0 0 1 1.414 0L9 10.586V3a1 1 0 1 1 2 0v7.586l1.293-1.293a1 1 0 1 1 1.414 1.414l-3 3a1 1 0 0 1-1.414 0l-3-3a1 1 0 0 1 0-1.414`,"clip-rule":`evenodd`},null,-1)]])}var me=u({name:`heroicons-solid-download`,render:B}),he={class:`h-full w-full dark-mode relative`},ge={class:`relative w-6 h-6`},_e=5e3,V=S({__name:`Logs`,props:{navbarWidth:{default:0},navbarLeft:{default:0}},setup(u){let S=new fe,I=u,{t:L}=t(),z=ce(),{uiSettings:B}=E(D());S.toggleQueryActivator(`downloadLogQuery`,!1);let{data:V,isBusy:ve,suspense:ye}=S.downloadLogQuery(),{mutate:be,isPending:xe}=S.clearLogQuery(),Se=/^\[[\d.,:\s]+\]\s*(?:\x1b\[[0-9;]*m)*\[([^\]]+)\]/,Ce=[{label:`All`,value:`all`},{label:`Server`,value:`server`},{label:`Go2RTC`,value:`go2rtc`},{label:`Other`,value:`other`}],{navbarWidth:we,navbarLeft:Te}=x(I),H=o(`consoleRef`),U=o(`mobileSearchInput`),Ee=y(!1),W=y(`all`),G=y(``),K=y([]),q=y(!1),De=d(()=>we.value+Te.value),J=d(()=>ve.value||xe.value),Oe=d(()=>({fontSize:B.value.console.zoom}));function ke(){q.value=!0,m(()=>{U.value?.$el?.focus()})}function Ae(){q.value=!1,G.value=``}function je(e){let t=e.match(Se);return t?t[1]:null}function Y(e,t){if(t===`all`)return!0;let n=je(e);if(!n)return t===`other`;switch(t){case`server`:return n===`camera.ui`;case`go2rtc`:return n===`Go2RTC`;case`other`:return n!==`camera.ui`&&n!==`Go2RTC`;default:return!0}}function X(e,t){return t.trim()?e.replace(/\x1b\[[0-9;]*m/g,``).toLowerCase().includes(t.toLowerCase()):!0}function Z(){if(!H.value)return;H.value.clearTerminal();let e=K.value.filter(e=>Y(e,W.value)&&X(e,G.value));for(let t of e)H.value.writeTerminal(t)}let Q=n(Z,300),$=de({onStdout:e=>{let t=e.split(/(?<=\r?\n)/);for(let e of t)e.trim()&&K.value.push(e);K.value.length>_e&&(K.value=K.value.slice(-5e3)),Y(e,W.value)&&X(e,G.value)&&H.value?.writeTerminal(e)},onDisconnect:()=>H.value?.writeTerminal(`\r
1
+ import{Hn as e,fi as t,qi as n,tt as ee}from"./vendor-cameraui-D-WYtlxb.js";import{Dn as r,Hn as i,Kt as a,Ln as o,Qt as s,Tn as c,Un as l,Xn as u,Xt as d,Yn as f,Zt as p,_n as m,an as h,cr as g,dr as _,en as v,er as y,gn as te,jn as ne,lr as b,nn as re,or as x,sn as S,wn as C,yn as w,zn as T}from"./vendor-CUsAwmr-.js";import{f as E}from"./vendor-core-CWeZebhd.js";import{n as D}from"./ui-DSOnsqS6.js";import{F as ie,J as ae,P as oe,o as se}from"./vendor-primevue-01WhBsPb.js";import{t as O}from"./useFileDownload-DntU1WW7.js";import{t as ce}from"./useCuiDialog-C-2PMjxH.js";import{t as le}from"./CuiTopbarSlot-BlbZqDDn.js";import{n as ue,t as de}from"./useLogsSocket-R2SaD_bg.js";import{t as fe}from"./server-B3_iwGek.js";import{t as pe}from"./back-filled-DVeRsKmt.js";import{t as k}from"./search-Bl5hzTQq.js";import{n as A,t as j}from"./zoom-in-fuKu2une.js";import{n as M,t as N}from"./CuiTopNavbarItem-DdZ2xZLa.js";import{t as P}from"./arrow-left-CGyu-P3h.js";import{t as F}from"./trash-2-BAlrGkbt.js";var I={viewBox:`0 0 32 32`,width:`1.2em`,height:`1.2em`};function L(e,t){return c(),v(`svg`,I,[...t[0]||=[p(`path`,{fill:`currentColor`,d:`M16 18L6 8l1.4-1.4l8.6 8.6l8.6-8.6L26 8zM4 22h24v2H4z`},null,-1)]])}var R=u({name:`carbon-down-to-bottom`,render:L}),z={viewBox:`0 0 20 20`,width:`1.2em`,height:`1.2em`};function B(e,t){return c(),v(`svg`,z,[...t[0]||=[p(`path`,{fill:`currentColor`,"fill-rule":`evenodd`,d:`M3 17a1 1 0 0 1 1-1h12a1 1 0 1 1 0 2H4a1 1 0 0 1-1-1m3.293-7.707a1 1 0 0 1 1.414 0L9 10.586V3a1 1 0 1 1 2 0v7.586l1.293-1.293a1 1 0 1 1 1.414 1.414l-3 3a1 1 0 0 1-1.414 0l-3-3a1 1 0 0 1 0-1.414`,"clip-rule":`evenodd`},null,-1)]])}var me=u({name:`heroicons-solid-download`,render:B}),he={class:`h-full w-full dark-mode relative`},ge={class:`relative w-6 h-6`},_e=5e3,V=S({__name:`Logs`,props:{navbarWidth:{default:0},navbarLeft:{default:0}},setup(u){let S=new fe,I=u,{t:L}=t(),z=ce(),{uiSettings:B}=E(D());S.toggleQueryActivator(`downloadLogQuery`,!1);let{data:V,isBusy:ve,suspense:ye}=S.downloadLogQuery(),{mutate:be,isPending:xe}=S.clearLogQuery(),Se=/^\[[\d.,:\s]+\]\s*(?:\x1b\[[0-9;]*m)*\[([^\]]+)\]/,Ce=[{label:`All`,value:`all`},{label:`Server`,value:`server`},{label:`Go2RTC`,value:`go2rtc`},{label:`Other`,value:`other`}],{navbarWidth:we,navbarLeft:Te}=x(I),H=o(`consoleRef`),U=o(`mobileSearchInput`),Ee=y(!1),W=y(`all`),G=y(``),K=y([]),q=y(!1),De=d(()=>we.value+Te.value),J=d(()=>ve.value||xe.value),Oe=d(()=>({fontSize:B.value.console.zoom}));function ke(){q.value=!0,m(()=>{U.value?.$el?.focus()})}function Ae(){q.value=!1,G.value=``}function je(e){let t=e.match(Se);return t?t[1]:null}function Y(e,t){if(t===`all`)return!0;let n=je(e);if(!n)return t===`other`;switch(t){case`server`:return n===`camera.ui`;case`go2rtc`:return n===`Go2RTC`;case`other`:return n!==`camera.ui`&&n!==`Go2RTC`;default:return!0}}function X(e,t){return t.trim()?e.replace(/\x1b\[[0-9;]*m/g,``).toLowerCase().includes(t.toLowerCase()):!0}function Z(){if(!H.value)return;H.value.clearTerminal();let e=K.value.filter(e=>Y(e,W.value)&&X(e,G.value));for(let t of e)H.value.writeTerminal(t)}let Q=n(Z,300),$=de({onStdout:e=>{let t=e.split(/(?<=\r?\n)/);for(let e of t)e.trim()&&K.value.push(e);K.value.length>_e&&(K.value=K.value.slice(-5e3)),Y(e,W.value)&&X(e,G.value)&&H.value?.writeTerminal(e)},onDisconnect:()=>H.value?.writeTerminal(`\r
2
2
  Websocket failed to connect! Is the server running?\r
3
3
  \r
4
4
  `),onClearLog:()=>{K.value=[],H.value?.clearTerminal()},onReconnected:()=>{K.value=[],H.value?.clearTerminal(),H.value?.writeTerminal(`--- Reconnected ---\r
@@ -1 +1 @@
1
- import{fi as e}from"./vendor-cameraui-lEA-78Jn.js";import{f as t,p as n}from"./api-DhzCRVL5.js";import{$t as r,Dn as i,Hn as a,Kt as o,Qt as s,Tn as c,Xn as l,Xt as u,Zt as d,an as f,cr as p,en as m,fr as h,in as g,jn as _,kn as v,rn as y,sn as b}from"./vendor-CUsAwmr-.js";import{f as x}from"./vendor-core-Dqc843Zs.js";import{n as S}from"./router-CliwduXG.js";import{t as C}from"./power-DvDhRSv2.js";import{t as w}from"./CuiAvatar-gGQZX4H6.js";import{t as T}from"./hasPermission-D44ci-iH.js";import{n as E,r as D}from"./CuiMenu-CMnBfV9C.js";import{t as O}from"./information-outline-C4BW3Gje.js";import{t as k}from"./chevron-right-C1Rdu1sM.js";var A={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function j(e,t){return c(),m(`svg`,A,[...t[0]||=[d(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`1.5`,d:`M17 20V4m0 0l3 3m-3-3l-3 3M7 4v16m0 0l3-3m-3 3l-3-3`},null,-1)]])}var M=l({name:`iconoir-data-transfer-both`,render:j}),N={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function P(e,t){return c(),m(`svg`,N,[...t[0]||=[y(`<g fill="none" stroke="currentColor" stroke-linecap="round" stroke-width="1.5"><path d="M11 21H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v7"></path><path stroke-linejoin="round" d="M2 7h20M5 5.01l.01-.011M8 5.01l.01-.011M11 5.01l.01-.011m10.657 11.668C21.047 15.097 19.635 14 17.99 14c-1.758 0-3.252 1.255-3.793 3"></path><path stroke-linejoin="round" d="M19.995 16.772H21.4a.6.6 0 0 0 .6-.6V14.55m-7.666 4.783C14.953 20.903 16.366 22 18.01 22c1.758 0 3.252-1.255 3.793-3"></path><path stroke-linejoin="round" d="M16.005 19.228H14.6a.6.6 0 0 0-.6.6v1.622"></path></g>`,1)]])}var F=l({name:`iconoir-reload-window`,render:P}),I={class:`flex flex-col items-center py-8`},L={class:`mt-3 text-lg font-semibold`},R={class:`text-sm text-muted`},z={class:`px-4 mb-4`},B={class:`card-title`},V={key:0,class:`px-4 mb-4`},H={class:`card-title`},U={class:`px-4 mb-4`},W={class:`card-title`},G={class:`text-primary`},K=b({__name:`Menu`,setup(l){let{t:y}=e(),b=t(),{user:A}=x(b),j=new Set([`Faces`,`Plugins`,`Settings`]),N=u(()=>S.filter(e=>e.meta?.menu&&e.meta.auth&&T(e))),P=u(()=>N.value.filter(e=>j.has(e.name)).map(e=>({to:e.path,label:y(`navigation.${e.name.toLowerCase()}`),icon:e.meta.menu.icon.default}))),K=u(()=>N.value.filter(e=>!j.has(e.name)).map(e=>({to:e.path,label:y(`navigation.${e.name.toLowerCase()}`),icon:e.meta.menu.icon.default})));function q(){window.location.reload()}async function J(){await n()}return(e,t)=>{let n=w,l=v(`RouterLink`),u=k,y=E,x=D,S=O,T=F,j=M,N=C;return c(),m(`div`,null,[d(`section`,I,[f(l,{to:`/settings/account`,class:`flex flex-col items-center justify-center`},{default:a(()=>[f(n,{src:`avatar`,size:80,style:{width:`80px`,height:`80px`}}),d(`div`,L,h(p(A)?.username??`Unknown`),1),d(`div`,R,h(p(A)?.role??`user`),1)]),_:1})]),d(`section`,z,[d(`span`,B,h(e.$t(`views.menu.section_app`)),1),f(x,{size:`large`,dividers:``},{default:a(()=>[(c(!0),m(o,null,i(p(P),e=>(c(),s(y,{key:e.to,to:e.to},{prepend:a(()=>[(c(),s(_(e.icon),{class:`w-5 h-5 text-muted`}))]),append:a(()=>[f(u,{class:`w-5 h-5 text-muted`})]),default:a(()=>[g(` `+h(e.label)+` `,1)]),_:2},1032,[`to`]))),128))]),_:1})]),p(K).length?(c(),m(`section`,V,[d(`span`,H,h(e.$t(`views.menu.section_system`)),1),f(x,{size:`large`,dividers:``},{default:a(()=>[(c(!0),m(o,null,i(p(K),e=>(c(),s(y,{key:e.to,to:e.to},{prepend:a(()=>[(c(),s(_(e.icon),{class:`w-5 h-5 text-muted`}))]),append:a(()=>[f(u,{class:`w-5 h-5 text-muted`})]),default:a(()=>[g(` `+h(e.label)+` `,1)]),_:2},1032,[`to`]))),128))]),_:1})])):r(``,!0),d(`section`,U,[d(`span`,W,h(e.$t(`views.menu.section_actions`)),1),f(x,{size:`large`,dividers:``},{default:a(()=>[f(y,{to:`/about`},{prepend:a(()=>[f(S,{class:`w-5 h-5 text-muted`})]),append:a(()=>[f(u,{class:`w-5 h-5 text-muted`})]),default:a(()=>[g(` `+h(e.$t(`navigation.about`))+` `,1)]),_:1}),f(y,{onClick:q},{prepend:a(()=>[f(T,{class:`w-5 h-5 text-muted`})]),default:a(()=>[g(` `+h(e.$t(`views.menu.reload`)),1)]),_:1}),p(!1)?(c(),s(y,{key:0,onClick:J},{prepend:a(()=>[f(j,{class:`w-5 h-5 text-muted`})]),default:a(()=>[g(` `+h(e.$t(`views.menu.switch_server`)),1)]),_:1})):r(``,!0),f(y,{onClick:t[0]||=()=>p(b).logout()},{prepend:a(()=>[f(N,{class:`w-5 h-5 text-primary`})]),default:a(()=>[d(`span`,G,h(e.$t(`views.menu.logout`)),1)]),_:1})]),_:1})])])}}});export{K as default};
1
+ import{fi as e}from"./vendor-cameraui-D-WYtlxb.js";import{f as t,p as n}from"./api-CLcqLYO9.js";import{$t as r,Dn as i,Hn as a,Kt as o,Qt as s,Tn as c,Xn as l,Xt as u,Zt as d,an as f,cr as p,en as m,fr as h,in as g,jn as _,kn as v,rn as y,sn as b}from"./vendor-CUsAwmr-.js";import{f as x}from"./vendor-core-CWeZebhd.js";import{n as S}from"./router-CYuS11OS.js";import{t as C}from"./power-DvDhRSv2.js";import{t as w}from"./CuiAvatar-BNZbtuaI.js";import{t as T}from"./hasPermission-BHM3xbrG.js";import{n as E,r as D}from"./CuiMenu-KizSc3du.js";import{t as O}from"./information-outline-C4BW3Gje.js";import{t as k}from"./chevron-right-C1Rdu1sM.js";var A={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function j(e,t){return c(),m(`svg`,A,[...t[0]||=[d(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`1.5`,d:`M17 20V4m0 0l3 3m-3-3l-3 3M7 4v16m0 0l3-3m-3 3l-3-3`},null,-1)]])}var M=l({name:`iconoir-data-transfer-both`,render:j}),N={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function P(e,t){return c(),m(`svg`,N,[...t[0]||=[y(`<g fill="none" stroke="currentColor" stroke-linecap="round" stroke-width="1.5"><path d="M11 21H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v7"></path><path stroke-linejoin="round" d="M2 7h20M5 5.01l.01-.011M8 5.01l.01-.011M11 5.01l.01-.011m10.657 11.668C21.047 15.097 19.635 14 17.99 14c-1.758 0-3.252 1.255-3.793 3"></path><path stroke-linejoin="round" d="M19.995 16.772H21.4a.6.6 0 0 0 .6-.6V14.55m-7.666 4.783C14.953 20.903 16.366 22 18.01 22c1.758 0 3.252-1.255 3.793-3"></path><path stroke-linejoin="round" d="M16.005 19.228H14.6a.6.6 0 0 0-.6.6v1.622"></path></g>`,1)]])}var F=l({name:`iconoir-reload-window`,render:P}),I={class:`flex flex-col items-center py-8`},L={class:`mt-3 text-lg font-semibold`},R={class:`text-sm text-muted`},z={class:`px-4 mb-4`},B={class:`card-title`},V={key:0,class:`px-4 mb-4`},H={class:`card-title`},U={class:`px-4 mb-4`},W={class:`card-title`},G={class:`text-primary`},K=b({__name:`Menu`,setup(l){let{t:y}=e(),b=t(),{user:A}=x(b),j=new Set([`Faces`,`Plugins`,`Settings`]),N=u(()=>S.filter(e=>e.meta?.menu&&e.meta.auth&&T(e))),P=u(()=>N.value.filter(e=>j.has(e.name)).map(e=>({to:e.path,label:y(`navigation.${e.name.toLowerCase()}`),icon:e.meta.menu.icon.default}))),K=u(()=>N.value.filter(e=>!j.has(e.name)).map(e=>({to:e.path,label:y(`navigation.${e.name.toLowerCase()}`),icon:e.meta.menu.icon.default})));function q(){window.location.reload()}async function J(){await n()}return(e,t)=>{let n=w,l=v(`RouterLink`),u=k,y=E,x=D,S=O,T=F,j=M,N=C;return c(),m(`div`,null,[d(`section`,I,[f(l,{to:`/settings/account`,class:`flex flex-col items-center justify-center`},{default:a(()=>[f(n,{src:`avatar`,size:80,style:{width:`80px`,height:`80px`}}),d(`div`,L,h(p(A)?.username??`Unknown`),1),d(`div`,R,h(p(A)?.role??`user`),1)]),_:1})]),d(`section`,z,[d(`span`,B,h(e.$t(`views.menu.section_app`)),1),f(x,{size:`large`,dividers:``},{default:a(()=>[(c(!0),m(o,null,i(p(P),e=>(c(),s(y,{key:e.to,to:e.to},{prepend:a(()=>[(c(),s(_(e.icon),{class:`w-5 h-5 text-muted`}))]),append:a(()=>[f(u,{class:`w-5 h-5 text-muted`})]),default:a(()=>[g(` `+h(e.label)+` `,1)]),_:2},1032,[`to`]))),128))]),_:1})]),p(K).length?(c(),m(`section`,V,[d(`span`,H,h(e.$t(`views.menu.section_system`)),1),f(x,{size:`large`,dividers:``},{default:a(()=>[(c(!0),m(o,null,i(p(K),e=>(c(),s(y,{key:e.to,to:e.to},{prepend:a(()=>[(c(),s(_(e.icon),{class:`w-5 h-5 text-muted`}))]),append:a(()=>[f(u,{class:`w-5 h-5 text-muted`})]),default:a(()=>[g(` `+h(e.label)+` `,1)]),_:2},1032,[`to`]))),128))]),_:1})])):r(``,!0),d(`section`,U,[d(`span`,W,h(e.$t(`views.menu.section_actions`)),1),f(x,{size:`large`,dividers:``},{default:a(()=>[f(y,{to:`/about`},{prepend:a(()=>[f(S,{class:`w-5 h-5 text-muted`})]),append:a(()=>[f(u,{class:`w-5 h-5 text-muted`})]),default:a(()=>[g(` `+h(e.$t(`navigation.about`))+` `,1)]),_:1}),f(y,{onClick:q},{prepend:a(()=>[f(T,{class:`w-5 h-5 text-muted`})]),default:a(()=>[g(` `+h(e.$t(`views.menu.reload`)),1)]),_:1}),p(!1)?(c(),s(y,{key:0,onClick:J},{prepend:a(()=>[f(j,{class:`w-5 h-5 text-muted`})]),default:a(()=>[g(` `+h(e.$t(`views.menu.switch_server`)),1)]),_:1})):r(``,!0),f(y,{onClick:t[0]||=()=>p(b).logout()},{prepend:a(()=>[f(N,{class:`w-5 h-5 text-primary`})]),default:a(()=>[d(`span`,G,h(e.$t(`views.menu.logout`)),1)]),_:1})]),_:1})])])}}});export{K as default};
@@ -1 +1 @@
1
- import{Bt as e,Vn as t,fi as n}from"./vendor-cameraui-lEA-78Jn.js";import{$t as r,Dn as i,Hn as a,Kt as o,Qt as s,Tn as c,Xt as l,Zt as u,an as d,cr as f,en as p,fr as m,in as h,sn as g,zt as _}from"./vendor-CUsAwmr-.js";import{z as v}from"./vendor-primevue-DST-0Ea0.js";import{n as y,t as b}from"./cloud-check-C0emdjhh.js";import{t as x}from"./CuiQRCode-DqdRNve_.js";var S={class:`flex flex-col`},C={key:`intro`,class:`flex flex-col gap-4`},w={key:0,class:`flex flex-col gap-1.5 list-disc pl-5 text-sm text-muted`},T={key:`awaiting`,class:`flex flex-col items-center gap-5 text-center`},E={class:`flex flex-col items-center gap-2`},D={class:`text-sm text-muted`},O=[`href`],k={class:`mt-1 card-background border border-color rounded-xl px-6 py-3`},A={class:`text-2xl font-mono font-semibold tracking-[0.25em]`},j={class:`flex items-center gap-2 text-muted`},M={class:`text-sm`},N={key:`connected`,class:`flex flex-col items-center gap-3 py-2 text-center`},P={class:`text-sm`},F={key:`error`,class:`flex flex-col items-center gap-3 py-2 text-center`},I={class:`text-sm`},L=g({__name:`OAuthDeviceFlow`,props:{pluginName:{}},setup(g,{expose:L}){let R=g,{t:z}=n(),{state:B,metadata:V,startDeviceFlow:H,disconnect:U,cancel:W}=e(R.pluginName),G=l(()=>Object.keys(V.value?.scopeDescriptions??{}));function K(e){switch(e){case`access_denied`:return z(`components.oauth.error_access_denied`);case`expired_token`:return z(`components.oauth.error_expired`);default:return z(`components.oauth.error_generic`)}}async function q(){return B.value.status===`disconnected`||B.value.status===`error`?await H(G.value):B.value.status===`connected`&&await U(),null}async function J(){(B.value.status===`awaiting_user`||B.value.status===`polling`)&&await W()}return L({onConfirm:q,onCancel:J}),(e,n)=>{let l=v,g=x,L=t,R=b,z=y;return c(),p(`div`,S,[d(_,{name:`fade`,mode:`out-in`},{default:a(()=>[f(B).status===`disconnected`?(c(),p(`div`,C,[d(l,{severity:`secondary`,variant:`simple`,size:`small`},{default:a(()=>[h(m(e.$t(`components.oauth.intro`,{idp:f(V)?.idpDisplayName??`cameraui.com`})),1)]),_:1}),f(G).length?(c(),p(`ul`,w,[(c(!0),p(o,null,i(f(G),e=>(c(),p(`li`,{key:e},m(f(V)?.scopeDescriptions[e]??e),1))),128))])):r(``,!0)])):f(B).status===`awaiting_user`||f(B).status===`polling`?(c(),p(`div`,T,[f(B).verificationUriComplete?(c(),s(g,{key:0,value:f(B).verificationUriComplete,size:184,"logo-size":36},null,8,[`value`])):r(``,!0),u(`div`,E,[u(`span`,D,m(e.$t(`components.oauth.enter_code_at`)),1),u(`a`,{href:f(B).verificationUriComplete||f(B).verificationUri,target:`_blank`,rel:`noopener`,class:`text-sm font-mono text-primary hover:underline break-all`},m(f(B).verificationUri),9,O),u(`div`,k,[u(`span`,A,m(f(B).userCode),1)])]),u(`div`,j,[d(L,{class:`w-4 h-4 m-0`,"stroke-width":`5`}),u(`span`,M,m(e.$t(`components.oauth.waiting`)),1)])])):f(B).status===`connected`?(c(),p(`div`,N,[d(R,{class:`text-green-500 w-10 h-10`}),u(`span`,P,m(e.$t(`components.oauth.connected_as`,{email:f(B).userEmail||`—`})),1)])):f(B).status===`error`?(c(),p(`div`,F,[d(z,{class:`text-red-500 w-10 h-10`}),u(`span`,I,m(f(B).errorMessage||K(f(B).errorCode)),1)])):r(``,!0)]),_:1})])}}});export{L as default};
1
+ import{Bt as e,Vn as t,fi as n}from"./vendor-cameraui-D-WYtlxb.js";import{$t as r,Dn as i,Hn as a,Kt as o,Qt as s,Tn as c,Xt as l,Zt as u,an as d,cr as f,en as p,fr as m,in as h,sn as g,zt as _}from"./vendor-CUsAwmr-.js";import{z as v}from"./vendor-primevue-01WhBsPb.js";import{n as y,t as b}from"./cloud-check-C0emdjhh.js";import{t as x}from"./CuiQRCode-D2hEZT9L.js";var S={class:`flex flex-col`},C={key:`intro`,class:`flex flex-col gap-4`},w={key:0,class:`flex flex-col gap-1.5 list-disc pl-5 text-sm text-muted`},T={key:`awaiting`,class:`flex flex-col items-center gap-5 text-center`},E={class:`flex flex-col items-center gap-2`},D={class:`text-sm text-muted`},O=[`href`],k={class:`mt-1 card-background border border-color rounded-xl px-6 py-3`},A={class:`text-2xl font-mono font-semibold tracking-[0.25em]`},j={class:`flex items-center gap-2 text-muted`},M={class:`text-sm`},N={key:`connected`,class:`flex flex-col items-center gap-3 py-2 text-center`},P={class:`text-sm`},F={key:`error`,class:`flex flex-col items-center gap-3 py-2 text-center`},I={class:`text-sm`},L=g({__name:`OAuthDeviceFlow`,props:{pluginName:{}},setup(g,{expose:L}){let R=g,{t:z}=n(),{state:B,metadata:V,startDeviceFlow:H,disconnect:U,cancel:W}=e(R.pluginName),G=l(()=>Object.keys(V.value?.scopeDescriptions??{}));function K(e){switch(e){case`access_denied`:return z(`components.oauth.error_access_denied`);case`expired_token`:return z(`components.oauth.error_expired`);default:return z(`components.oauth.error_generic`)}}async function q(){return B.value.status===`disconnected`||B.value.status===`error`?await H(G.value):B.value.status===`connected`&&await U(),null}async function J(){(B.value.status===`awaiting_user`||B.value.status===`polling`)&&await W()}return L({onConfirm:q,onCancel:J}),(e,n)=>{let l=v,g=x,L=t,R=b,z=y;return c(),p(`div`,S,[d(_,{name:`fade`,mode:`out-in`},{default:a(()=>[f(B).status===`disconnected`?(c(),p(`div`,C,[d(l,{severity:`secondary`,variant:`simple`,size:`small`},{default:a(()=>[h(m(e.$t(`components.oauth.intro`,{idp:f(V)?.idpDisplayName??`cameraui.com`})),1)]),_:1}),f(G).length?(c(),p(`ul`,w,[(c(!0),p(o,null,i(f(G),e=>(c(),p(`li`,{key:e},m(f(V)?.scopeDescriptions[e]??e),1))),128))])):r(``,!0)])):f(B).status===`awaiting_user`||f(B).status===`polling`?(c(),p(`div`,T,[f(B).verificationUriComplete?(c(),s(g,{key:0,value:f(B).verificationUriComplete,size:184,"logo-size":36},null,8,[`value`])):r(``,!0),u(`div`,E,[u(`span`,D,m(e.$t(`components.oauth.enter_code_at`)),1),u(`a`,{href:f(B).verificationUriComplete||f(B).verificationUri,target:`_blank`,rel:`noopener`,class:`text-sm font-mono text-primary hover:underline break-all`},m(f(B).verificationUri),9,O),u(`div`,k,[u(`span`,A,m(f(B).userCode),1)])]),u(`div`,j,[d(L,{class:`w-4 h-4 m-0`,"stroke-width":`5`}),u(`span`,M,m(e.$t(`components.oauth.waiting`)),1)])])):f(B).status===`connected`?(c(),p(`div`,N,[d(R,{class:`text-green-500 w-10 h-10`}),u(`span`,P,m(e.$t(`components.oauth.connected_as`,{email:f(B).userEmail||`—`})),1)])):f(B).status===`error`?(c(),p(`div`,F,[d(z,{class:`text-red-500 w-10 h-10`}),u(`span`,I,m(f(B).errorMessage||K(f(B).errorCode)),1)])):r(``,!0)]),_:1})])}}});export{L as default};
@@ -1 +1 @@
1
- import{Hn as e,Mn as t,Nn as n,On as r,Ut as i,Vn as a,Wt as o,ct as s,fi as c,jn as l,tt as u}from"./vendor-cameraui-lEA-78Jn.js";import{C as ee,O as te,f as d,l as ne}from"./api-DhzCRVL5.js";import{$t as f,Cn as p,Dn as re,Gt as m,Hn as h,Kt as g,Ln as _,Qn as v,Qt as y,Tn as b,Un as x,Wt as S,Xn as C,Xt as w,Yn as T,Zt as E,_n as D,an as O,cr as k,en as A,er as j,fr as M,gn as N,in as P,jn as F,kn as I,lr as L,nn as R,or as z,rr as B,sn as V,zn as H}from"./vendor-CUsAwmr-.js";import{c as ie,f as U}from"./vendor-core-Dqc843Zs.js";import{t as W}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{t as ae}from"./useSharedComposables-SA61SVjO.js";import{B as G,G as K,H as q,J as oe,K as se,V as ce,W as le,a as J,i as ue,j as de,u as fe}from"./vendor-primevue-DST-0Ea0.js";import{t as pe}from"./cctv-C9H_8mDb.js";import{t as me}from"./bell-D6XTudrP.js";import{t as he}from"./cog-OzsdLKVr.js";import{t as ge}from"./hasPermission-D44ci-iH.js";import{n as _e}from"./CuiMenu-CMnBfV9C.js";import{t as ve}from"./CuiBBoxPlayground-DMRP_V2x.js";import{t as ye}from"./cameras-Dz5UZpc3.js";import{n as be}from"./useCuiCameraDrawer-Cm1CzGPT.js";import{t as xe}from"./useCuiDialog-nDtDuLq-.js";import{t as Se}from"./CuiTopbarSlot-BhsSSnaB.js";import{F as Ce,G as Y,H as X,K as we,U as Te,W as Ee,a as De}from"./types-BD1lhOds.js";import{t as Oe}from"./CuiSchema-DVgwhbCy.js";import{t as ke}from"./plugins-B5zOpwk5.js";import{t as Ae}from"./PluginSchema-BZgbOuMK.js";import{t as je}from"./plus-iXo1T1is.js";import{a as Me,i as Ne,n as Pe,o as Fe,r as Ie,t as Le}from"./vendor-markdown-e7bfD1d7.js";import{t as Re}from"./close-circle-BtZFk77i.js";import{t as ze}from"./back-filled-DVeRsKmt.js";import{t as Be}from"./CuiPluginCard-Dp0o4UCK.js";var Z={class:`text-base font-semibold border-b-[1px] border-color mb-3 pb-3`},Q={class:`flex flex-col gap-4`},$={class:`flex flex-col field-gap`},Ve={class:`cui-label`},He={key:0,class:`text-red-500 text-sm`},Ue={class:`flex flex-col field-gap`},We={class:`cui-label`},Ge={class:`flex flex-col field-gap`},Ke={class:`cui-label`},qe={class:`flex flex-col field-gap`},Je={class:`cui-label`},Ye={class:`flex flex-col field-gap`},Xe={class:`cui-label`},Ze={class:`flex flex-col field-gap`},Qe={class:`cui-label`},$e={class:`flex flex-col field-gap`},et={class:`cui-label`},tt={class:`flex flex-col field-gap`},nt={class:`cui-label`},rt={class:`mt-8`},it={class:`text-base font-semibold border-b-[1px] border-color mb-3 pb-3`},at={key:0,class:`flex items-center justify-center w-full py-4`},ot={key:1,class:`flex items-center justify-center text-sm text-muted py-4 text-center`},st={key:2,class:`flex flex-col field-gap`},ct={class:`text-xs text-muted`},lt={key:0,class:`mt-8`},ut={class:`text-base font-semibold border-b-[1px] border-color mb-3 pb-3`},dt=V({__name:`CuiNotificationInterface`,props:{pluginName:{}},setup(t){let n=t,o=te(),{t:s}=c(),l=ee(),{user:ne}=U(d()),{pluginName:p}=z(n),{plugin:m}=i(p),_=w(()=>Object.values(r).map(e=>({label:s(`components.notification_interface.severity_${e}`),value:e}))),y=v({title:`Test notification`,subtitle:``,body:`This is a test notification from camera.ui`,severity:r.Info,tag:``,imageUrl:``,deepLink:``}),x=j([]),S=j(!1),C=j(!1),D=B([]),N=j(!1),P=j([]),F=B(),I=j(!1),L=w(()=>D.value.map(e=>({id:e.id,label:e.name})));async function R(){if(!(!m.value||!ne.value?._id)){N.value=!0;try{let e=ge(void 0,`admin`)?[]:[ne.value._id];D.value=await m.value.getDevices?.(e)??[]}catch(e){o.error(`Failed to load notifier devices:`,e),D.value=[]}finally{N.value=!1}}}async function V(){if(m.value){I.value=!0;try{F.value=await m.value.notificationSettings?.()}catch(e){o.error(`Failed to load notification settings schema:`,e),F.value=void 0}finally{I.value=!1}}}function ie(){x.value.push({key:``,value:``})}function W(e){x.value.splice(e,1)}function ae(){let e={};for(let t of x.value)t.key.trim()&&(e[t.key.trim()]=t.value);return{title:y.title.trim(),subtitle:y.subtitle.trim()||void 0,body:y.body.trim()||void 0,severity:y.severity,tag:y.tag.trim()||void 0,imageUrl:y.imageUrl.trim()||void 0,deepLink:y.deepLink.trim()||void 0,data:Object.keys(e).length?e:void 0}}async function G(){let e=m.value;if(!(!e||C.value)){if(!y.title.trim()){S.value=!0;return}C.value=!0;try{let t=ae(),n=P.value.length?P.value:D.value.map(e=>e.id);await e.sendNotification?.(n,t),l.add({severity:`success`,detail:s(`components.notification_interface.sent`),life:3e3})}catch(e){l.add({severity:`error`,detail:e,life:3e3})}finally{C.value=!1}}}return H(m,e=>{e&&(R(),V())},{immediate:!0}),(t,n)=>{let r=u,i=ue,o=de,s=Re,c=e,l=je,ee=a,te=fe,d=Oe;return b(),A(`div`,null,[E(`h3`,Z,M(t.$t(`components.notification_interface.template`)),1),E(`div`,Q,[E(`div`,$,[E(`label`,Ve,M(t.$t(`components.notification_interface.title`)),1),O(r,{modelValue:k(y).title,"onUpdate:modelValue":[n[0]||=e=>k(y).title=e,n[1]||=e=>S.value=!1],placeholder:t.$t(`components.notification_interface.title`),invalid:k(S),class:`w-full`},null,8,[`modelValue`,`placeholder`,`invalid`]),k(S)?(b(),A(`p`,He,M(t.$t(`components.notification_interface.title_required`)),1)):f(``,!0)]),E(`div`,Ue,[E(`label`,We,M(t.$t(`components.notification_interface.subtitle`)),1),O(r,{modelValue:k(y).subtitle,"onUpdate:modelValue":n[2]||=e=>k(y).subtitle=e,placeholder:t.$t(`components.notification_interface.subtitle`),class:`w-full`},null,8,[`modelValue`,`placeholder`])]),E(`div`,Ge,[E(`label`,Ke,M(t.$t(`components.notification_interface.body`)),1),O(i,{modelValue:k(y).body,"onUpdate:modelValue":n[3]||=e=>k(y).body=e,placeholder:t.$t(`components.notification_interface.body`),rows:`3`,class:`w-full`},null,8,[`modelValue`,`placeholder`])]),E(`div`,qe,[E(`label`,Je,M(t.$t(`components.notification_interface.severity`)),1),O(o,{modelValue:k(y).severity,"onUpdate:modelValue":n[4]||=e=>k(y).severity=e,options:k(_),"option-label":`label`,"option-value":`value`,class:`w-full`},null,8,[`modelValue`,`options`])]),E(`div`,Ye,[E(`label`,Xe,M(t.$t(`components.notification_interface.tag`)),1),O(r,{modelValue:k(y).tag,"onUpdate:modelValue":n[5]||=e=>k(y).tag=e,placeholder:`motion:cam-1`,class:`w-full`},null,8,[`modelValue`])]),E(`div`,Ze,[E(`label`,Qe,M(t.$t(`components.notification_interface.image_url`)),1),O(r,{modelValue:k(y).imageUrl,"onUpdate:modelValue":n[6]||=e=>k(y).imageUrl=e,placeholder:`https://…`,class:`w-full`},null,8,[`modelValue`])]),E(`div`,$e,[E(`label`,et,M(t.$t(`components.notification_interface.deep_link`)),1),O(r,{modelValue:k(y).deepLink,"onUpdate:modelValue":n[7]||=e=>k(y).deepLink=e,placeholder:`/cameras/cam-1`,class:`w-full`},null,8,[`modelValue`])]),E(`div`,tt,[E(`label`,nt,M(t.$t(`components.notification_interface.data`)),1),(b(!0),A(g,null,re(k(x),(e,n)=>(b(),A(`div`,{key:n,class:`flex gap-2 items-center`},[O(r,{modelValue:e.key,"onUpdate:modelValue":t=>e.key=t,placeholder:t.$t(`components.notification_interface.data_key`),class:`flex-1 min-w-0`},null,8,[`modelValue`,`onUpdate:modelValue`,`placeholder`]),O(r,{modelValue:e.value,"onUpdate:modelValue":t=>e.value=t,placeholder:t.$t(`components.notification_interface.data_value`),class:`flex-1 min-w-0`},null,8,[`modelValue`,`onUpdate:modelValue`,`placeholder`]),O(c,{text:``,rounded:``,severity:`danger`,class:`cui-icon-md shrink-0`,onClick:e=>W(n)},{icon:h(()=>[O(s,{width:`100%`,height:`100%`})]),_:1},8,[`onClick`])]))),128)),O(c,{severity:`secondary`,outlined:``,fluid:``,class:`cui-button-medium`,label:t.$t(`components.notification_interface.add_data`),onClick:ie},{icon:h(()=>[O(l,{class:`w-4 h-4`})]),_:1},8,[`label`])])]),E(`div`,rt,[E(`h3`,it,M(t.$t(`components.notification_interface.targets`)),1),k(N)?(b(),A(`div`,at,[O(ee,{class:`w-[24px] h-[24px] m-0`,"stroke-width":`5`})])):k(L).length?(b(),A(`div`,st,[E(`span`,ct,M(t.$t(`components.notification_interface.targets_hint`)),1),O(te,{modelValue:k(P),"onUpdate:modelValue":n[8]||=e=>T(P)?P.value=e:null,options:k(L),"option-label":`label`,"option-value":`id`,placeholder:t.$t(`components.notification_interface.all_devices`),display:`chip`,filter:``,class:`w-full`},null,8,[`modelValue`,`options`,`placeholder`])])):(b(),A(`div`,ot,M(t.$t(`components.notification_interface.no_devices`)),1))]),k(F)?.length?(b(),A(`div`,lt,[E(`h3`,ut,M(t.$t(`components.notification_interface.settings`)),1),O(d,{"schema-form":{schema:k(F),config:{}},loading:k(I)},null,8,[`schema-form`,`loading`])])):f(``,!0),O(c,{fluid:``,class:`mt-8 cui-button-medium`,severity:`success`,loading:k(C),disabled:!k(m)||k(C),label:t.$t(`components.notification_interface.send_test`),onClick:G},null,8,[`loading`,`disabled`,`label`])])}}}),ft=.15,pt=.38,mt={class:`mb-4 rounded-xl overflow-hidden`},ht=[`src`],gt={class:`text-sm text-muted mb-4`},_t={key:0,class:`ml-1`},vt={class:`flex gap-2 mb-4`},yt={key:0,class:`flex flex-col gap-2`},bt={class:`text-sm truncate flex-1 mr-3`},xt={class:`flex items-center gap-2 shrink-0`},St=V({__name:`PluginClipInterface`,props:{src:{},response:{},onTextSearch:{type:Function}},setup(t,{expose:n}){let r=t,i=te(),a=j(``),o=j(!1),s=j([]);function c(e){return Math.max(0,Math.min(1,(e-ft)/(pt-ft)))}async function l(){let e=a.value.trim();if(!(!e||o.value)){o.value=!0;try{let{score:t}=await r.onTextSearch(e);s.value.unshift({query:e,rawScore:t,displayScore:c(t)}),a.value=``}catch(e){i.error(`CLIP text search failed:`,e)}finally{o.value=!1}}}return n({}),(n,r)=>{let i=u,c=e,ee=J;return b(),A(`div`,null,[E(`div`,mt,[E(`img`,{src:t.src,alt:`CLIP test image`,class:`w-full object-contain`},null,8,ht)]),E(`div`,gt,[P(M(t.response.embeddings.length)+` embedding(s), `+M(t.response.embeddings[0]?.embedding?.length??0)+`-dim `,1),t.response.embeddingModel?(b(),A(`span`,_t,`(`+M(t.response.embeddingModel)+`)`,1)):f(``,!0)]),E(`div`,vt,[O(i,{modelValue:k(a),"onUpdate:modelValue":r[0]||=e=>T(a)?a.value=e:null,class:`flex-1`,placeholder:n.$t(`components.clip_interface.enter_query`),onKeyup:S(l,[`enter`])},null,8,[`modelValue`,`placeholder`]),O(c,{class:`cui-button-medium`,label:n.$t(`components.clip_interface.search`),loading:k(o),onClick:l},null,8,[`label`,`loading`])]),k(s).length?(b(),A(`div`,yt,[(b(!0),A(g,null,re(k(s),(e,t)=>(b(),A(`div`,{key:t,class:`flex items-center justify-between p-3 rounded-lg content-background`},[E(`span`,bt,M(e.query),1),E(`div`,xt,[E(`div`,{class:L([`text-sm font-medium`,e.displayScore>=.5?`text-green-500`:e.displayScore>=.25?`text-yellow-500`:`text-red-400`])},M((e.displayScore*100).toFixed(0))+`% `,3),O(ee,{value:e.displayScore>=.5?`Match`:e.displayScore>=.25?`Possible`:`No match`,severity:e.displayScore>=.5?`success`:e.displayScore>=.25?`warn`:`danger`,class:`text-xs`},null,8,[`value`,`severity`])])]))),128))])):f(``,!0)])}}}),Ct=V({__name:`PluginMotionInterface`,props:{response:{}},setup(e){let{response:t}=z(e),n=_(`videoPlayerRef`);return p(()=>{if(n.value){let e=new Blob([t.value.videoData],{type:`video/mp4`});n.value.src=URL.createObjectURL(e),n.value.load()}}),(e,t)=>(b(),A(`div`,null,[E(`video`,{ref_key:`videoPlayerRef`,ref:n,controls:``,class:`w-full`},`Your browser does not support the video tag.`,512)]))}}),wt={class:`mb-5 h-min`},Tt=[`src`],Et=V({__name:`PluginObjectInterface`,props:{src:{},response:{}},setup(e){let{response:t,src:n}=z(e),r=w(()=>t.value.detections);return(e,t)=>{let i=ve;return b(),A(`div`,wt,[O(i,{detections:k(r)},null,8,[`detections`]),E(`img`,{src:k(n),alt:`Preview`,class:`w-full`},null,8,Tt)])}}}),Dt={key:0,class:`w-full`},Ot={class:`flex flex-col justify-center items-center mb-5`},kt={for:`restoreInput`,class:`cursor-pointer text-center text-sm`},At=[`accept`],jt={key:0,class:`text-red-500 text-sm`},Mt={key:1,class:`w-full flex flex-col items-center justify-center`},Nt={key:0,class:`relative mb-4`},Pt=[`src`],Ft={key:1,class:`relative mb-4 w-full`},It={key:2,class:`relative mb-4 w-full`},Lt=[`src`,`type`],Rt={class:`flex items-center justify-center`},zt={class:`mx-2`},Bt={class:`text-muted`},Vt={class:`flex items-center justify-center mt-2 text-xs text-muted`},Ht={class:`mt-10`},Ut={class:`text-base font-semibold border-b-[1px] border-color mb-3 pb-3`},Wt={key:0,class:`flex items-center justify-center text-sm text-muted mt-5`},Gt=V({__name:`CuiDetectionInterface`,props:{type:{},pluginName:{}},emits:[`update:file`,`update:metadata`],setup(t,{emit:n}){let r=t,a=n,o=te(),{t:s}=c(),l=ee(),u=xe(),{type:d,pluginName:ne}=z(r),{plugin:p,isLoading:re}=i(ne),g=_(`fileInputRef`),v=_(`videoPlayerRef`),x=_(`audioPlayerRef`),S=B([]),C=j(!1),T=j(!1),N=j(!1),F=j(!1),I=j(``),R=j(!1),V=j(),ie=j(!0),U=B(),W=j(!1),ae=w(()=>W.value||re.value||R.value),G=w(()=>{switch(d.value){case`objectDetection`:case`faceDetection`:case`licensePlateDetection`:case`classifierDetection`:case`clipDetection`:return`image`;case`motionDetection`:return`video`;case`audioDetection`:return`audio`;default:return`image`}}),K=w(()=>{switch(G.value){case`image`:return Ee;case`video`:return Te;case`audio`:return X;default:return[]}}),q=w(()=>{switch(G.value){case`image`:return Ce;case`video`:return we;case`audio`:return Y;default:return 0}}),oe=w(()=>K.value.join(`,`));async function se(){if(p.value){W.value=!0;try{let e;switch(d.value){case`motionDetection`:e=await p.value.motionDetectionSettings?.();break;case`objectDetection`:e=await p.value.objectDetectionSettings?.();break;case`audioDetection`:e=await p.value.audioDetectionSettings?.();break;case`faceDetection`:e=await p.value.faceDetectionSettings?.();break;case`licensePlateDetection`:e=await p.value.licensePlateDetectionSettings?.();break;case`classifierDetection`:e=await p.value.classifierDetectionSettings?.();break;case`clipDetection`:e=await p.value.clipSettings?.();break}U.value=e}catch(e){o.error(`Failed to load interface schema:`,e),U.value=void 0}finally{W.value=!1}}}function ce(e){let t=S.value.findIndex(t=>t.name===e);t>-1&&(S.value.splice(t,1),ue(),I.value=``,G.value===`video`&&v.value&&(v.value.src=``),V.value=void 0,a(`update:file`,null),a(`update:metadata`,null))}function le(e){if(C.value=!1,T.value=!1,F.value=!1,S.value=[],e.dataTransfer)if(e.dataTransfer.files.length>1)T.value=!0;else{let t=e.dataTransfer.files[0];(K.value.length===0||K.value.includes(t.type))&&t.size<=q.value?(S.value.push(t),D(()=>{de(t)})):t.size>q.value?F.value=!0:T.value=!0}}function J(e){T.value=!1,F.value=!1,S.value=[];let t=e.target;if(t&&t.files){if(t.files?.length>1)T.value=!0;else if(t.files.length===1){let e=t.files[0],n=K.value.length===0||K.value.includes(e.type);e.size<=q.value&&n?(S.value.push(e),D(()=>{de(e)})):e.size>q.value?F.value=!0:T.value=!0}}}function ue(){g.value&&(g.value.value=``)}function de(e){R.value=!0;let t=URL.createObjectURL(e);switch(G.value){case`image`:fe(e,t);break;case`video`:pe(e,t);break;case`audio`:me(e,t);break}}function fe(e,t){let n=new Image;n.src=t,n.onload=()=>{I.value=n.src;let t={width:n.width,height:n.height};V.value=t,a(`update:metadata`,t),a(`update:file`,e),R.value=!1}}function pe(e,t){v.value&&(v.value.src=t,v.value.load(),v.value.onloadeddata=()=>{a(`update:file`,e),R.value=!1})}function me(e,t){I.value=t;let n=new Audio;n.src=t,n.onloadedmetadata=()=>{let t={mimeType:e.type};V.value=t,a(`update:metadata`,t),a(`update:file`,e),R.value=!1}}function he(e){return e<1024?e+` bytes`:e<1048576?(e/1024).toFixed(1)+` KB`:(e/1048576).toFixed(1)+` MB`}function ge(e,t){let n=0,r=0,i=0;for(let a=0;a<e.length;a++)n+=e[a]*t[a],r+=e[a]*e[a],i+=t[a]*t[a];return r&&i?n/(Math.sqrt(r)*Math.sqrt(i)):0}async function _e(e){if(!S.value.length){N.value=!0;return}if(!p.value){o.error(`Plugin not connected`);return}R.value=!0;try{let t=await S.value[0].arrayBuffer();if(d.value===`audioDetection`){let n=await p.value.testAudioDetection?.(new Uint8Array(t),V.value,e);if(!n){o.warn(`No audio detection interface available`);return}if(n.detected&&n.detections?.length){let e=n.detections.map(e=>`${e.label} (${Math.round(e.confidence*100)}%)`).join(`, `),t=n.decibels==null?``:` | ${n.decibels.toFixed(1)} dBFS`;l.add({severity:`success`,detail:`${e}${t}`,life:3e3})}else l.add({severity:`info`,detail:s(`components.detection_interface.audio_not_detected`),life:3e3})}else if(d.value===`motionDetection`){let n=await p.value.testMotionDetection?.(new Uint8Array(t),e);if(!n){o.warn(`No motion detection interface available`);return}u.openComponentDialog(Ct,{data:{title:s(`components.dialog.title.result`),hideConfirmButton:!0,contentProps:{response:n}}})}else if(d.value===`faceDetection`){let n=await p.value.testFaceDetection?.(new Uint8Array(t),V.value,e);if(!n){o.warn(`No face detection interface available`);return}u.openComponentDialog(Et,{data:{title:s(`components.dialog.title.result`),hideConfirmButton:!0,contentProps:{src:I,response:n}}})}else if(d.value===`licensePlateDetection`){let n=await p.value.testLicensePlateDetection?.(new Uint8Array(t),V.value,e);if(!n){o.warn(`No license plate detection interface available`);return}u.openComponentDialog(Et,{data:{title:s(`components.dialog.title.result`),hideConfirmButton:!0,contentProps:{src:I,response:n}}})}else if(d.value===`classifierDetection`){let n=await p.value.testClassifierDetection?.(new Uint8Array(t),V.value,e);if(!n){o.warn(`No classifier detection interface available`);return}u.openComponentDialog(Et,{data:{title:s(`components.dialog.title.result`),hideConfirmButton:!0,contentProps:{src:I,response:n}}})}else if(d.value===`clipDetection`){let n=await p.value.testClipEmbedding?.(new Uint8Array(t),V.value,e);if(!n){o.warn(`No CLIP detection interface available`);return}if(!n.embeddings?.length){l.add({severity:`info`,detail:s(`components.detection_interface.no_detections`),life:3e3});return}let r=n.embeddings[0].embedding;u.openComponentDialog(St,{data:{title:s(`components.dialog.title.result`),hideConfirmButton:!0,contentProps:{src:I,response:n,onTextSearch:async e=>{let t=await p.value.getTextEmbedding(e);return t?.embedding?.length?{score:ge(r,t.embedding)}:{score:0}}}}})}else{let n=await p.value.testObjectDetection?.(new Uint8Array(t),V.value,e);if(!n){o.warn(`No object detection interface available`);return}u.openComponentDialog(Et,{data:{title:s(`components.dialog.title.result`),hideConfirmButton:!0,contentProps:{src:I,response:n}}})}}catch(e){l.add({severity:`error`,detail:e,life:3e3})}finally{R.value=!1}}return H(p,e=>{e&&se()},{immediate:!0}),H(S,e=>{e.length>0?(N.value=!1,ie.value=!1):(I.value=``,V.value=void 0,ie.value=!0)},{immediate:!0,deep:!0}),(t,n)=>{let r=Re,i=e,a=Oe;return b(),A(`div`,null,[E(`div`,{class:`file-upload-box`,onDrop:n[1]||=m(e=>le(e),[`prevent`]),onDragover:n[2]||=m(e=>C.value=!0,[`prevent`]),onDragenter:n[3]||=m(e=>C.value=!0,[`prevent`]),onDragleave:n[4]||=m(e=>C.value=!1,[`prevent`])},[k(S).length?(b(),A(`div`,Mt,[k(G)===`image`?(b(),A(`div`,Nt,[E(`img`,{src:k(I),alt:`Preview`,class:`w-full`},null,8,Pt)])):k(G)===`video`?(b(),A(`div`,Ft,[E(`video`,{ref_key:`videoPlayerRef`,ref:v,controls:``,class:`w-full`},`Your browser does not support the video tag.`,512)])):k(G)===`audio`?(b(),A(`div`,It,[E(`audio`,{ref_key:`audioPlayerRef`,ref:x,controls:``,class:`w-full`},[E(`source`,{src:k(I),type:k(S)[0].type},null,8,Lt),n[5]||=P(` Your browser does not support the audio element. `,-1)],512)])):f(``,!0),E(`div`,Rt,[O(i,{text:``,rounded:``,severity:`danger`,class:`cui-icon-md shrink-0`,onClick:n[0]||=m(e=>ce(k(S)[0].name),[`stop`])},{icon:h(()=>[O(r,{width:`100%`,height:`100%`})]),_:1}),E(`b`,zt,M(k(S)[0].name),1),E(`span`,Bt,`(`+M(he(k(S)[0].size))+`)`,1)])])):(b(),A(`div`,Dt,[E(`div`,Ot,[E(`label`,kt,M(t.$t(`components.detection_interface.drop_or_select_${k(G)}_to_detect${k(G)===`image`?`_objects`:k(G)===`video`?`_motion`:``}`)),1),E(`input`,{id:`restoreInput`,ref_key:`fileInputRef`,ref:g,type:`file`,class:`hidden`,accept:k(oe),onChange:J},null,40,At),k(T)?(b(),A(`p`,jt,M(t.$t(`components.detection_interface.only_one_${k(G)}_allowed`)),1)):f(``,!0),k(N)?(b(),A(`p`,{key:1,class:L([`text-red-500 text-sm`,{"mt-2":k(T)}])},M(t.$t(`components.detection_interface.${k(G)}_required`)),3)):f(``,!0),k(F)?(b(),A(`p`,{key:2,class:L([`text-red-500 text-sm`,{"mt-2":k(T)||k(N)}])},M(t.$t(`components.detection_interface.file_size_error`)),3)):f(``,!0)])]))],32),E(`div`,Vt,[E(`span`,null,`(`+M(k(q)/1024/1024)+`MB, `+M(k(K).join(`, `))+`)`,1)]),E(`div`,Ht,[E(`h3`,Ut,M(t.$t(`components.detection_interface.interface_config`)),1),k(U)?.length?(b(),y(a,{key:1,"schema-form":{schema:k(U),config:{}},loading:k(ae),"save-button-label":t.$t(`components.detection_interface.detect`),"disable-button":k(ie),"show-button":``,onOnFormSubmit:_e},null,8,[`schema-form`,`loading`,`save-button-label`,`disable-button`])):(b(),A(`div`,Wt,M(t.$t(`components.detection_interface.no_interface_config`)),1))])])}}}),Kt={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function qt(e,t){return b(),A(`svg`,Kt,[...t[0]||=[E(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M2 10v3m4-7v11m4-14v18m4-13v7m4-10v13m4-8v3`},null,-1)]])}var Jt=C({name:`lucide-audio-lines`,render:qt}),Yt={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Xt(e,t){return b(),A(`svg`,Yt,[...t[0]||=[E(`path`,{fill:`currentColor`,d:`M2 7V4q0-.825.588-1.412T4 2h3v2H4v3zm5 15H4q-.825 0-1.412-.587T2 20v-3h2v3h3zm10 0v-2h3v-3h2v3q0 .825-.587 1.413T20 22zm3-15V4h-3V2h3q.825 0 1.413.588T22 4v3zm-7.913 1.913Q11.5 8.325 11.5 7.5t.588-1.412T13.5 5.5t1.413.588T15.5 7.5t-.587 1.413T13.5 9.5t-1.412-.587M12.8 18h-4l1-5.1l-1.8.7V17H6v-4.7l3.95-1.7q.875-.375 1.288-.487T12 10q.525 0 .975.275T13.7 11l1 1.6q.65 1.05 1.763 1.725T19 15v2q-1.65 0-3.088-.687T13.5 14.5z`},null,-1)]])}var Zt=C({name:`material-symbols-detection-and-zone`,render:Xt}),Qt={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function $t(e,t){return b(),A(`svg`,Qt,[...t[0]||=[E(`path`,{fill:`currentColor`,d:`M8.113 13.888Q7.75 13.525 7.75 13t.363-.888T9 11.75t.888.363t.362.887t-.363.888T9 14.25t-.888-.363m6 0q-.362-.362-.362-.887t.363-.888t.887-.362t.888.363t.362.887t-.363.888t-.887.362t-.888-.363M12 20q3.35 0 5.675-2.325T20 12q0-.6-.075-1.162T19.65 9.75q-.525.125-1.05.188T17.5 10q-2.275 0-4.3-.975T9.75 6.3q-.8 1.95-2.287 3.388T4 11.85V12q0 3.35 2.325 5.675T12 20m0 2q-2.075 0-3.9-.787t-3.175-2.138T2.788 15.9T2 12t.788-3.9t2.137-3.175T8.1 2.788T12 2t3.9.788t3.175 2.137T21.213 8.1T22 12t-.788 3.9t-2.137 3.175t-3.175 2.138T12 22`},null,-1)]])}var en=C({name:`material-symbols-face`,render:$t}),tn={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function nn(e,t){return b(),A(`svg`,tn,[...t[0]||=[E(`path`,{fill:`currentColor`,d:`M8 17q-.425 0-.712-.288T7 16t.288-.712T8 15h5q-.35-.425-.562-.925T12.1 13H10q-.425 0-.712-.288T9 12t.288-.712T10 11h2.1q.125-.575.338-1.075T13 9H4q-.425 0-.712-.288T3 8t.288-.712T4 7h13q2.075 0 3.538 1.463T22 12t-1.463 3.538T17 17zm9-2q1.25 0 2.125-.875T20 12t-.875-2.125T17 9t-2.125.875T14 12t.875 2.125T17 15M3 13q-.425 0-.712-.288T2 12t.288-.712T3 11h4q.425 0 .713.288T8 12t-.288.713T7 13zm1 4q-.425 0-.712-.288T3 16t.288-.712T4 15h1q.425 0 .713.288T6 16t-.288.713T5 17z`},null,-1)]])}var rn=C({name:`material-symbols-motion-blur-rounded`,render:nn}),an={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function on(e,t){return b(),A(`svg`,an,[...t[0]||=[E(`g`,{fill:`none`,"fill-rule":`evenodd`},[E(`path`,{d:`m12.594 23.258l-.012.002l-.071.035l-.02.004l-.014-.004l-.071-.036q-.016-.004-.024.006l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.016-.018m.264-.113l-.014.002l-.184.093l-.01.01l-.003.011l.018.43l.005.012l.008.008l.201.092q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.003-.011l.018-.43l-.003-.012l-.01-.01z`}),E(`path`,{fill:`currentColor`,d:`M15.586 2.757a2 2 0 0 1 2.828 0l2.829 2.829a2 2 0 0 1 0 2.828l-2.829 2.829a2 2 0 0 1-2.828 0l-2.829-2.829a2 2 0 0 1 0-2.828zM9 3a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2zm12 12a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h4a2 2 0 0 0 2-2zM9 13a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4a2 2 0 0 1 2-2z`})],-1)]])}var sn=C({name:`mingcute-classify-2-fill`,render:on}),cn={viewBox:`0 0 256 256`,width:`1.2em`,height:`1.2em`};function ln(e,t){return b(),A(`svg`,cn,[...t[0]||=[E(`path`,{fill:`currentColor`,d:`M200 156c0 6.5-7.33 12-16 12s-16-5.5-16-12s7.33-12 16-12s16 5.5 16 12m32-100v144a16 16 0 0 1-16 16H40a16 16 0 0 1-16-16V56a16 16 0 0 1 16-16h176a16 16 0 0 1 16 16m-88.63 116.88l-44-104a8 8 0 0 0-14.74 0l-44 104a8 8 0 0 0 14.74 6.24L66.84 152h50.32l11.47 27.12a8 8 0 0 0 14.74-6.24M216 124c0-15.44-14.36-28-32-28a34.86 34.86 0 0 0-20.78 6.68a8 8 0 0 0 9.56 12.83A18.84 18.84 0 0 1 184 112c8.56 0 15.8 5.36 16 11.76v8a35.24 35.24 0 0 0-16-3.76c-17.64 0-32 12.56-32 28s14.36 28 32 28a35.1 35.1 0 0 0 16.93-4.26A8 8 0 0 0 216 176ZM73.61 136h36.78L92 92.53Z`},null,-1)]])}var un=C({name:`ph-text-aa-fill`,render:ln}),dn={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function fn(e,t){return b(),A(`svg`,dn,[...t[0]||=[E(`path`,{fill:`currentColor`,d:`M12.75 3a.75.75 0 0 0-1.5 0v2a.75.75 0 0 0 1.5 0z`},null,-1),E(`path`,{fill:`currentColor`,"fill-rule":`evenodd`,d:`M22.75 12.057c0 1.837 0 3.293-.153 4.432c-.158 1.172-.49 2.121-1.238 2.87c-.749.748-1.698 1.08-2.87 1.238c-1.14.153-2.595.153-4.433.153H9.944c-1.837 0-3.293 0-4.432-.153c-1.172-.158-2.121-.49-2.87-1.238c-.748-.749-1.08-1.698-1.238-2.87c-.153-1.14-.153-2.595-.153-4.433v-.926q.001-.575.008-1.096c.014-.975.05-1.81.145-2.523c.158-1.172.49-2.121 1.238-2.87c.749-.748 1.698-1.08 2.87-1.238c.716-.096 1.558-.132 2.541-.145l.697-.005a1 1 0 0 1 1.001.999V5a2.25 2.25 0 0 0 4.5 0v-.75c0-.552.448-1 1-.998c1.29.006 2.359.033 3.239.151c1.172.158 2.121.49 2.87 1.238c.748.749 1.08 1.698 1.238 2.87c.153 1.14.153 2.595.153 4.433zM8 9.75a.75.75 0 0 0 0 1.5h8a.75.75 0 0 0 0-1.5zm0 3.5a.75.75 0 0 0 0 1.5h5.5a.75.75 0 0 0 0-1.5z`,"clip-rule":`evenodd`},null,-1)]])}var pn=C({name:`solar-plate-bold`,render:fn}),mn={class:`font-semibold text-xl truncate`},hn={class:`lg:col-span-2 order-1 !h-[220px]`},gn={class:`flex w-full h-full items-center justify-center`},_n={class:`lg:col-span-1 lg:row-span-3 order-2`},vn={class:`lg:!hidden card-title`},yn={key:0,class:`w-full h-full flex items-center justify-center`},bn={key:1},xn={class:`hidden lg:block text-base font-semibold border-b-[1px] border-color mb-3 pb-3`},Sn={key:0,class:`flex items-center justify-center w-full h-full text-muted text-sm`},Cn=[`onClick`],wn={key:0,class:`w-full h-full`},Tn={key:0,class:`flex flex-col items-center justify-center w-full h-full text-muted text-sm gap-1 text-center`},En={key:2,class:`flex items-center justify-center w-full h-full text-muted text-sm`},Dn={key:9,class:`w-full h-full`},On={key:0,class:`flex items-center justify-center w-full h-full text-muted text-sm`},kn={class:`lg:col-span-2 order-3`},An={class:`lg:!hidden card-title`},jn={class:`hidden lg:block text-base font-semibold border-b-[1px] border-color mb-3 pb-3`},Mn={key:0,class:`flex w-full h-full items-center justify-center`},Nn=[`innerHTML`],Pn={class:`lg:col-span-2 order-4`},Fn={class:`lg:!hidden card-title`},In={class:`hidden lg:block text-base font-semibold border-b-[1px] border-color mb-3 pb-3`},Ln={key:0,class:`flex w-full h-full items-center justify-center`},Rn=[`innerHTML`],zn=W(V({__name:`Plugin`,setup(r){let u=new ye,d=new ke,p=te(),m=be(),_=ie(),v=ee(),S=xe(),{lgBreakpoint:C}=ae(),{t:D}=c(),z=j(_.params.scope),B=j(_.params.pluginname),V=w(()=>z.value?`${z.value}/${B.value}`:B.value),{contract:U,error:W}=i(V);d.toggleQueryActivator(`getPluginContractQuery`,!1);let{data:J,isBusy:ue}=d.getPluginQuery(V),{data:de,isBusy:fe}=d.getPluginReadmeQuery(V),{data:ge,isBusy:ve}=d.getPluginChangelogQuery(V),{data:Ce}=d.getPluginContractQuery(V),Y=o(V),X=Y.config,we=Y.isLoading,{mutate:Te,isPending:Ee}=u.addCameraExtensionQuery(),{mutate:je,isPending:Re}=u.removeCameraExtensionQuery(),Z=j(`settings`),Q=j([]),$=j([]),Ve=w(()=>!!U.value&&l(U.value,n.NVR)),He=Le(`commonmark`,{highlight(e,t){if(t&&Fe.getLanguage(t))try{return`<pre><code class="hljs">`+Fe.highlight(e,{language:t,ignoreIllegals:!0}).value+`</code></pre>`}catch{}return`<pre><code class="hljs">`+He.utils.escapeHtml(e)+`</code></pre>`}});Fe.registerLanguage(`typescript`,Ie),Fe.registerLanguage(`yaml`,Pe),Fe.registerLanguage(`json`,Me),Fe.registerLanguage(`python`,Ne);function Ue(e,t){return e.pluginInfo?.name===t}async function We(e){try{await Y.setValue(e.key,void 0),v.add({severity:`success`,detail:D(`components.toast.config_updated`),life:3e3})}catch(e){v.add({severity:`error`,detail:e,life:3e3})}}async function Ge(e){try{let t=await Y.submitValue(e.key,e.payload);if(t?.toast){let e=ne(t.toast.type);v.add({severity:e,detail:t.toast.message,life:3e3})}t?.schema?.length&&S.openComponentDialog(Ae,{data:{title:D(`components.dialog.title.config`),hideConfirmButton:!0,contentProps:{schemaConfig:{schema:t.schema,config:e.payload},pluginName:V.value,buttonKey:e.key}}})}catch(e){v.add({severity:`error`,detail:e,life:3e3})}}async function Ke(e){if(X.value?.schema.length)try{let t=De(X.value.schema,e);await Y.setConfig(t),v.add({severity:`success`,detail:D(`components.toast.config_updated`),life:3e3})}catch(e){v.add({severity:`error`,detail:e,life:3e3})}}async function qe(e){if(J.value&&J.value.contract){let n=t(J.value.contract)?[`hub`]:J.value.contract.provides;if($.value.includes(e.name))for(let t of n)je({cameraname:e.name,pluginname:J.value.pluginName,type:t},{onSuccess:()=>{$.value=$.value.filter(t=>t!==e.name)}});else for(let t of n)Te({cameraname:e.name,pluginname:J.value.pluginName,type:t},{onSuccess:()=>{$.value=[...$.value,e.name]}})}}return H(J,e=>{if(!e||e.disabled){let e=Q.value.some(e=>e.name===`settings`),t=Q.value.some(e=>e.name===`cameras`);e?Z.value=`settings`:t&&(Z.value=`cameras`)}},{deep:!0}),H(_,()=>{B.value=_.params.pluginname},{deep:!0,immediate:!0}),H([J,Y.isConnected],async([e,t])=>{e&&!e.disabled&&t&&await Y.getConfig()},{immediate:!0}),H(X,()=>{X.value?d.toggleQueryActivator(`getPluginContractQuery`,!0):d.toggleQueryActivator(`getPluginContractQuery`,!1)},{deep:!0,immediate:!0}),H([Ce,X,U],()=>{let e=[],t=!1,r=Ve.value||!!X.value?.schema.length;e.push({name:`settings`,icon:he,isInterface:!1,tooltip:D(`views.plugin.settings_tab_tooltip`)}),U.value&&l(U.value,n.MotionDetection)&&(t=!0,e.push({name:`motion_detection`,icon:rn,isInterface:!0,tooltip:D(`views.plugin.motion_detection_tab_tooltip`)})),U.value&&l(U.value,n.ObjectDetection)&&(t=!0,e.push({name:`object_detection`,icon:Zt,isInterface:!0,tooltip:D(`views.plugin.object_detection_tab_tooltip`)})),U.value&&l(U.value,n.AudioDetection)&&(t=!0,e.push({name:`audio_detection`,icon:Jt,isInterface:!0,tooltip:D(`views.plugin.audio_detection_tab_tooltip`)})),U.value&&l(U.value,n.FaceDetection)&&(t=!0,e.push({name:`face_detection`,icon:en,isInterface:!0,tooltip:D(`views.plugin.face_detection_tab_tooltip`)})),U.value&&l(U.value,n.LicensePlateDetection)&&(t=!0,e.push({name:`license_plate_detection`,icon:pn,isInterface:!0,tooltip:D(`views.plugin.license_plate_detection_tab_tooltip`)})),U.value&&l(U.value,n.ClassifierDetection)&&(t=!0,e.push({name:`classifier_detection`,icon:sn,isInterface:!0,tooltip:D(`views.plugin.classifier_detection_tab_tooltip`)})),U.value&&l(U.value,n.ClipDetection)&&(t=!0,e.push({name:`clip_detection`,icon:un,isInterface:!0,tooltip:D(`views.plugin.clip_detection_tab_tooltip`)})),U.value&&l(U.value,n.Notifier)&&(t=!0,e.push({name:`notification`,icon:me,isInterface:!0,tooltip:D(`views.plugin.notification_tab_tooltip`)})),e.push({name:`cameras`,icon:pe,isInterface:!1,tooltip:D(`views.plugin.cameras_tab_tooltip`)}),Ce.value?.cameras.length&&($.value=Ce.value.cameras.filter(e=>e.plugins?.some(e=>e.name===V.value)).map(e=>e.name)),Q.value=[...e],J.value?.disabled||(r?Z.value=`settings`:t?Z.value=Q.value.filter(e=>e.isInterface)[0].name:Z.value=`settings`)},{deep:!0,immediate:!0}),H(W,e=>{e&&J.value&&!J.value.disabled&&p.error(`Error connecting to plugin:`,e)}),(t,n)=>{let r=ze,i=e,o=Se,c=a,l=s,u=Be,ee=G,te=ce,d=I(`RouterLink`),ne=Oe,p=Gt,_=dt,v=se,S=_e,w=q,D=le,j=K,z=oe;return b(),A(`div`,{key:k(V)},[O(o,{position:`left`},{default:h(()=>[O(i,{severity:`secondary`,text:``,class:`cui-button p-2 text-color non-draggable-region`,onClick:n[0]||=e=>t.$router.push(`/plugins`)},{icon:h(()=>[O(r,{class:`w-6 h-6`})]),_:1})]),_:1}),O(o,{position:`center`},{default:h(()=>[E(`span`,mn,M(t.$t(`views.plugin.title`)),1)]),_:1}),E(`div`,{class:L([`grid grid-auto grid-cols-1 lg:grid-cols-3 gap-6 lg:h-full`,{"!gap-2":k(C)}])},[E(`div`,hn,[k(J)?(b(),y(u,{key:1,plugin:k(J),class:`h-[220px]`},null,8,[`plugin`])):(b(),y(l,{key:0,class:`cui-card items-center justify-center !h-[220px]`},{content:h(()=>[E(`div`,gn,[O(c,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})])]),_:1}))]),E(`div`,_n,[E(`span`,vn,M(t.$t(`views.plugin.settings`)),1),O(l,{class:L([`cui-card !h-auto lg:!h-full`,{"items-center justify-center":k(ue)||k(we)}])},{content:h(()=>[k(ue)||k(we)?(b(),A(`div`,yn,[O(c,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})])):(b(),A(`div`,bn,[E(`h3`,xn,M(t.$t(`views.plugin.settings`)),1),k(J)?.disabled?(b(),A(`div`,Sn,[E(`span`,null,M(t.$t(`views.plugin.disabled_info`)),1)])):(b(),y(j,{key:1,value:k(Z),"onUpdate:value":n[1]||=e=>T(Z)?Z.value=e:null,scrollable:``},{default:h(()=>[O(te,{class:`justify-between`,pt:{activeBar:{class:`!w-auto`},content:{class:`border-[1px] border-color cui-rounded-corner overflow-hidden`}}},{default:h(()=>[(b(!0),A(g,null,re(k(Q),(e,t)=>(b(),y(ee,{key:t,disabled:e.isInterface&&k(J)?.disabled,value:e.name,"as-child":``},{default:h(t=>[x((b(),A(`div`,N({ref_for:!0},t.a11yAttrs,{class:[`flex flex-col items-center justify-center flex-1 content-background !py-3 h-[55px]`,[{"hover:!text-color active:!text-color focus:!text-color":!t.active},t.class]],onClick:t.onClick}),[(b(),y(F(e.icon),{class:`w-5 h-5`}))],16,Cn)),[[z,{value:e.tooltip}]])]),_:2},1032,[`disabled`,`value`]))),128))]),_:1}),O(D,{class:`px-0 pb-0`},{default:h(()=>[(b(!0),A(g,null,re(k(Q),(e,n)=>(b(),y(w,{key:n,value:e.name,"as-child":``},{default:h(n=>[n.active?(b(),A(`div`,N({key:0,class:n.class},{ref_for:!0},n.a11yAttrs),[e.name===`settings`?(b(),A(`div`,wn,[k(Ve)?(b(),A(`div`,Tn,[E(`span`,null,M(t.$t(`views.plugin.nvr_settings_hint`)),1),O(d,{to:`/settings/recordings`,class:`text-primary-500 hover:underline`},{default:h(()=>[P(M(t.$t(`views.plugin.nvr_settings_link`)),1)]),_:1})])):k(X)?.schema?.length?(b(),y(ne,{key:1,"schema-form":{schema:k(X).schema,config:k(X).config},loading:k(Y).isLoading.value,"save-button-color":`success`,onOnAction:We,onOnSubmit:Ge,onOnFormSubmit:Ke},null,8,[`schema-form`,`loading`])):(b(),A(`div`,En,[E(`span`,null,M(t.$t(`views.plugin.no_settings`)),1)]))])):e.name===`motion_detection`?(b(),y(p,{key:1,"plugin-name":k(V),type:`motionDetection`},null,8,[`plugin-name`])):e.name===`object_detection`?(b(),y(p,{key:2,"plugin-name":k(V),type:`objectDetection`},null,8,[`plugin-name`])):e.name===`audio_detection`?(b(),y(p,{key:3,"plugin-name":k(V),type:`audioDetection`},null,8,[`plugin-name`])):e.name===`face_detection`?(b(),y(p,{key:4,"plugin-name":k(V),type:`faceDetection`},null,8,[`plugin-name`])):e.name===`license_plate_detection`?(b(),y(p,{key:5,"plugin-name":k(V),type:`licensePlateDetection`},null,8,[`plugin-name`])):e.name===`classifier_detection`?(b(),y(p,{key:6,"plugin-name":k(V),type:`classifierDetection`},null,8,[`plugin-name`])):e.name===`clip_detection`?(b(),y(p,{key:7,"plugin-name":k(V),type:`clipDetection`},null,8,[`plugin-name`])):e.name===`notification`?(b(),y(_,{key:8,"plugin-name":k(V)},null,8,[`plugin-name`])):e.name===`cameras`?(b(),A(`div`,Dn,[k(Ce)?.cameras?.length?(b(!0),A(g,{key:1},re(k(Ce).cameras,e=>(b(),A(`div`,{key:e.name,class:`cui-list-item`},[O(S,{disabled:k(Ee)||k(Re)||k(Y).isLoading.value,active:k($).includes(e.name),class:`h-14`,onClick:t=>k(m).open({cameraName:e.name})},R({default:h(()=>[E(`span`,null,M(e.name),1)]),_:2},[!k(J)||!Ue(e,k(J).pluginName)?{name:`append`,fn:h(()=>[O(v,{"model-value":k($).includes(e.name),disabled:k(Ee)||k(Re)||k(Y).isLoading.value,"onUpdate:modelValue":()=>qe(e)},null,8,[`model-value`,`disabled`,`onUpdate:modelValue`])]),key:`0`}:void 0]),1032,[`disabled`,`active`,`onClick`])]))),128)):(b(),A(`div`,On,[E(`span`,null,M(t.$t(`views.plugin.no_cameras`)),1)]))])):f(``,!0)],16)):f(``,!0)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`value`]))]))]),_:1},8,[`class`])]),E(`div`,kn,[E(`span`,An,M(t.$t(`views.plugin.readme`)),1),O(l,{class:`cui-card !h-auto lg:!h-full`},{content:h(()=>[E(`h3`,jn,M(t.$t(`views.plugin.readme`)),1),k(fe)?(b(),A(`div`,Mn,[O(c,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})])):(b(),A(`div`,{key:1,class:`markdown-body`,innerHTML:k(He).render(k(de)||t.$t(`views.plugin.no_readme`))},null,8,Nn))]),_:1})]),E(`div`,Pn,[E(`span`,Fn,M(t.$t(`views.plugin.changelog`)),1),O(l,{class:`cui-card !h-auto lg:!h-full`},{content:h(()=>[E(`h3`,In,M(t.$t(`views.plugin.changelog`)),1),k(ve)?(b(),A(`div`,Ln,[O(c,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})])):(b(),A(`div`,{key:1,class:`markdown-body`,innerHTML:k(He).render(k(ge)||t.$t(`views.plugin.no_changelog`))},null,8,Rn))]),_:1})])],2)])}}}),[[`__scopeId`,`data-v-869e4fd8`]]);export{zn as default};
1
+ import{Hn as e,Mn as t,Nn as n,On as r,Ut as i,Vn as a,Wt as o,ct as s,fi as c,jn as l,tt as u}from"./vendor-cameraui-D-WYtlxb.js";import{C as ee,O as te,f as d,l as ne}from"./api-CLcqLYO9.js";import{$t as f,Cn as p,Dn as re,Gt as m,Hn as h,Kt as g,Ln as _,Qn as v,Qt as y,Tn as b,Un as x,Wt as S,Xn as C,Xt as w,Yn as T,Zt as E,_n as D,an as O,cr as k,en as A,er as j,fr as M,gn as N,in as P,jn as F,kn as I,lr as L,nn as R,or as z,rr as B,sn as V,zn as H}from"./vendor-CUsAwmr-.js";import{c as ie,f as U}from"./vendor-core-CWeZebhd.js";import{t as W}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{t as ae}from"./useSharedComposables-CzkF-tst.js";import{B as G,G as K,H as q,J as oe,K as se,V as ce,W as le,a as J,i as ue,j as de,u as fe}from"./vendor-primevue-01WhBsPb.js";import{t as pe}from"./cctv-C9H_8mDb.js";import{t as me}from"./bell-D6XTudrP.js";import{t as he}from"./cog-OzsdLKVr.js";import{t as ge}from"./hasPermission-BHM3xbrG.js";import{n as _e}from"./CuiMenu-KizSc3du.js";import{t as ve}from"./CuiBBoxPlayground-_SGm4cz1.js";import{t as ye}from"./cameras-BOHWrQm2.js";import{n as be}from"./useCuiCameraDrawer-Ca6U-GzM.js";import{t as xe}from"./useCuiDialog-C-2PMjxH.js";import{t as Se}from"./CuiTopbarSlot-BlbZqDDn.js";import{F as Ce,G as Y,H as X,K as we,U as Te,W as Ee,a as De}from"./types-DZNoDDGr.js";import{t as Oe}from"./CuiSchema-CkgT_tmr.js";import{t as ke}from"./plugins-BWlFg8TN.js";import{t as Ae}from"./PluginSchema-g4Srx0FS.js";import{t as je}from"./plus-iXo1T1is.js";import{a as Me,i as Ne,n as Pe,o as Fe,r as Ie,t as Le}from"./vendor-markdown-e7bfD1d7.js";import{t as Re}from"./close-circle-BtZFk77i.js";import{t as ze}from"./back-filled-DVeRsKmt.js";import{t as Be}from"./CuiPluginCard-DpllCJXe.js";var Z={class:`text-base font-semibold border-b-[1px] border-color mb-3 pb-3`},Q={class:`flex flex-col gap-4`},$={class:`flex flex-col field-gap`},Ve={class:`cui-label`},He={key:0,class:`text-red-500 text-sm`},Ue={class:`flex flex-col field-gap`},We={class:`cui-label`},Ge={class:`flex flex-col field-gap`},Ke={class:`cui-label`},qe={class:`flex flex-col field-gap`},Je={class:`cui-label`},Ye={class:`flex flex-col field-gap`},Xe={class:`cui-label`},Ze={class:`flex flex-col field-gap`},Qe={class:`cui-label`},$e={class:`flex flex-col field-gap`},et={class:`cui-label`},tt={class:`flex flex-col field-gap`},nt={class:`cui-label`},rt={class:`mt-8`},it={class:`text-base font-semibold border-b-[1px] border-color mb-3 pb-3`},at={key:0,class:`flex items-center justify-center w-full py-4`},ot={key:1,class:`flex items-center justify-center text-sm text-muted py-4 text-center`},st={key:2,class:`flex flex-col field-gap`},ct={class:`text-xs text-muted`},lt={key:0,class:`mt-8`},ut={class:`text-base font-semibold border-b-[1px] border-color mb-3 pb-3`},dt=V({__name:`CuiNotificationInterface`,props:{pluginName:{}},setup(t){let n=t,o=te(),{t:s}=c(),l=ee(),{user:ne}=U(d()),{pluginName:p}=z(n),{plugin:m}=i(p),_=w(()=>Object.values(r).map(e=>({label:s(`components.notification_interface.severity_${e}`),value:e}))),y=v({title:`Test notification`,subtitle:``,body:`This is a test notification from camera.ui`,severity:r.Info,tag:``,imageUrl:``,deepLink:``}),x=j([]),S=j(!1),C=j(!1),D=B([]),N=j(!1),P=j([]),F=B(),I=j(!1),L=w(()=>D.value.map(e=>({id:e.id,label:e.name})));async function R(){if(!(!m.value||!ne.value?._id)){N.value=!0;try{let e=ge(void 0,`admin`)?[]:[ne.value._id];D.value=await m.value.getDevices?.(e)??[]}catch(e){o.error(`Failed to load notifier devices:`,e),D.value=[]}finally{N.value=!1}}}async function V(){if(m.value){I.value=!0;try{F.value=await m.value.notificationSettings?.()}catch(e){o.error(`Failed to load notification settings schema:`,e),F.value=void 0}finally{I.value=!1}}}function ie(){x.value.push({key:``,value:``})}function W(e){x.value.splice(e,1)}function ae(){let e={};for(let t of x.value)t.key.trim()&&(e[t.key.trim()]=t.value);return{title:y.title.trim(),subtitle:y.subtitle.trim()||void 0,body:y.body.trim()||void 0,severity:y.severity,tag:y.tag.trim()||void 0,imageUrl:y.imageUrl.trim()||void 0,deepLink:y.deepLink.trim()||void 0,data:Object.keys(e).length?e:void 0}}async function G(){let e=m.value;if(!(!e||C.value)){if(!y.title.trim()){S.value=!0;return}C.value=!0;try{let t=ae(),n=P.value.length?P.value:D.value.map(e=>e.id);await e.sendNotification?.(n,t),l.add({severity:`success`,detail:s(`components.notification_interface.sent`),life:3e3})}catch(e){l.add({severity:`error`,detail:e,life:3e3})}finally{C.value=!1}}}return H(m,e=>{e&&(R(),V())},{immediate:!0}),(t,n)=>{let r=u,i=ue,o=de,s=Re,c=e,l=je,ee=a,te=fe,d=Oe;return b(),A(`div`,null,[E(`h3`,Z,M(t.$t(`components.notification_interface.template`)),1),E(`div`,Q,[E(`div`,$,[E(`label`,Ve,M(t.$t(`components.notification_interface.title`)),1),O(r,{modelValue:k(y).title,"onUpdate:modelValue":[n[0]||=e=>k(y).title=e,n[1]||=e=>S.value=!1],placeholder:t.$t(`components.notification_interface.title`),invalid:k(S),class:`w-full`},null,8,[`modelValue`,`placeholder`,`invalid`]),k(S)?(b(),A(`p`,He,M(t.$t(`components.notification_interface.title_required`)),1)):f(``,!0)]),E(`div`,Ue,[E(`label`,We,M(t.$t(`components.notification_interface.subtitle`)),1),O(r,{modelValue:k(y).subtitle,"onUpdate:modelValue":n[2]||=e=>k(y).subtitle=e,placeholder:t.$t(`components.notification_interface.subtitle`),class:`w-full`},null,8,[`modelValue`,`placeholder`])]),E(`div`,Ge,[E(`label`,Ke,M(t.$t(`components.notification_interface.body`)),1),O(i,{modelValue:k(y).body,"onUpdate:modelValue":n[3]||=e=>k(y).body=e,placeholder:t.$t(`components.notification_interface.body`),rows:`3`,class:`w-full`},null,8,[`modelValue`,`placeholder`])]),E(`div`,qe,[E(`label`,Je,M(t.$t(`components.notification_interface.severity`)),1),O(o,{modelValue:k(y).severity,"onUpdate:modelValue":n[4]||=e=>k(y).severity=e,options:k(_),"option-label":`label`,"option-value":`value`,class:`w-full`},null,8,[`modelValue`,`options`])]),E(`div`,Ye,[E(`label`,Xe,M(t.$t(`components.notification_interface.tag`)),1),O(r,{modelValue:k(y).tag,"onUpdate:modelValue":n[5]||=e=>k(y).tag=e,placeholder:`motion:cam-1`,class:`w-full`},null,8,[`modelValue`])]),E(`div`,Ze,[E(`label`,Qe,M(t.$t(`components.notification_interface.image_url`)),1),O(r,{modelValue:k(y).imageUrl,"onUpdate:modelValue":n[6]||=e=>k(y).imageUrl=e,placeholder:`https://…`,class:`w-full`},null,8,[`modelValue`])]),E(`div`,$e,[E(`label`,et,M(t.$t(`components.notification_interface.deep_link`)),1),O(r,{modelValue:k(y).deepLink,"onUpdate:modelValue":n[7]||=e=>k(y).deepLink=e,placeholder:`/cameras/cam-1`,class:`w-full`},null,8,[`modelValue`])]),E(`div`,tt,[E(`label`,nt,M(t.$t(`components.notification_interface.data`)),1),(b(!0),A(g,null,re(k(x),(e,n)=>(b(),A(`div`,{key:n,class:`flex gap-2 items-center`},[O(r,{modelValue:e.key,"onUpdate:modelValue":t=>e.key=t,placeholder:t.$t(`components.notification_interface.data_key`),class:`flex-1 min-w-0`},null,8,[`modelValue`,`onUpdate:modelValue`,`placeholder`]),O(r,{modelValue:e.value,"onUpdate:modelValue":t=>e.value=t,placeholder:t.$t(`components.notification_interface.data_value`),class:`flex-1 min-w-0`},null,8,[`modelValue`,`onUpdate:modelValue`,`placeholder`]),O(c,{text:``,rounded:``,severity:`danger`,class:`cui-icon-md shrink-0`,onClick:e=>W(n)},{icon:h(()=>[O(s,{width:`100%`,height:`100%`})]),_:1},8,[`onClick`])]))),128)),O(c,{severity:`secondary`,outlined:``,fluid:``,class:`cui-button-medium`,label:t.$t(`components.notification_interface.add_data`),onClick:ie},{icon:h(()=>[O(l,{class:`w-4 h-4`})]),_:1},8,[`label`])])]),E(`div`,rt,[E(`h3`,it,M(t.$t(`components.notification_interface.targets`)),1),k(N)?(b(),A(`div`,at,[O(ee,{class:`w-[24px] h-[24px] m-0`,"stroke-width":`5`})])):k(L).length?(b(),A(`div`,st,[E(`span`,ct,M(t.$t(`components.notification_interface.targets_hint`)),1),O(te,{modelValue:k(P),"onUpdate:modelValue":n[8]||=e=>T(P)?P.value=e:null,options:k(L),"option-label":`label`,"option-value":`id`,placeholder:t.$t(`components.notification_interface.all_devices`),display:`chip`,filter:``,class:`w-full`},null,8,[`modelValue`,`options`,`placeholder`])])):(b(),A(`div`,ot,M(t.$t(`components.notification_interface.no_devices`)),1))]),k(F)?.length?(b(),A(`div`,lt,[E(`h3`,ut,M(t.$t(`components.notification_interface.settings`)),1),O(d,{"schema-form":{schema:k(F),config:{}},loading:k(I)},null,8,[`schema-form`,`loading`])])):f(``,!0),O(c,{fluid:``,class:`mt-8 cui-button-medium`,severity:`success`,loading:k(C),disabled:!k(m)||k(C),label:t.$t(`components.notification_interface.send_test`),onClick:G},null,8,[`loading`,`disabled`,`label`])])}}}),ft=.15,pt=.38,mt={class:`mb-4 rounded-xl overflow-hidden`},ht=[`src`],gt={class:`text-sm text-muted mb-4`},_t={key:0,class:`ml-1`},vt={class:`flex gap-2 mb-4`},yt={key:0,class:`flex flex-col gap-2`},bt={class:`text-sm truncate flex-1 mr-3`},xt={class:`flex items-center gap-2 shrink-0`},St=V({__name:`PluginClipInterface`,props:{src:{},response:{},onTextSearch:{type:Function}},setup(t,{expose:n}){let r=t,i=te(),a=j(``),o=j(!1),s=j([]);function c(e){return Math.max(0,Math.min(1,(e-ft)/(pt-ft)))}async function l(){let e=a.value.trim();if(!(!e||o.value)){o.value=!0;try{let{score:t}=await r.onTextSearch(e);s.value.unshift({query:e,rawScore:t,displayScore:c(t)}),a.value=``}catch(e){i.error(`CLIP text search failed:`,e)}finally{o.value=!1}}}return n({}),(n,r)=>{let i=u,c=e,ee=J;return b(),A(`div`,null,[E(`div`,mt,[E(`img`,{src:t.src,alt:`CLIP test image`,class:`w-full object-contain`},null,8,ht)]),E(`div`,gt,[P(M(t.response.embeddings.length)+` embedding(s), `+M(t.response.embeddings[0]?.embedding?.length??0)+`-dim `,1),t.response.embeddingModel?(b(),A(`span`,_t,`(`+M(t.response.embeddingModel)+`)`,1)):f(``,!0)]),E(`div`,vt,[O(i,{modelValue:k(a),"onUpdate:modelValue":r[0]||=e=>T(a)?a.value=e:null,class:`flex-1`,placeholder:n.$t(`components.clip_interface.enter_query`),onKeyup:S(l,[`enter`])},null,8,[`modelValue`,`placeholder`]),O(c,{class:`cui-button-medium`,label:n.$t(`components.clip_interface.search`),loading:k(o),onClick:l},null,8,[`label`,`loading`])]),k(s).length?(b(),A(`div`,yt,[(b(!0),A(g,null,re(k(s),(e,t)=>(b(),A(`div`,{key:t,class:`flex items-center justify-between p-3 rounded-lg content-background`},[E(`span`,bt,M(e.query),1),E(`div`,xt,[E(`div`,{class:L([`text-sm font-medium`,e.displayScore>=.5?`text-green-500`:e.displayScore>=.25?`text-yellow-500`:`text-red-400`])},M((e.displayScore*100).toFixed(0))+`% `,3),O(ee,{value:e.displayScore>=.5?`Match`:e.displayScore>=.25?`Possible`:`No match`,severity:e.displayScore>=.5?`success`:e.displayScore>=.25?`warn`:`danger`,class:`text-xs`},null,8,[`value`,`severity`])])]))),128))])):f(``,!0)])}}}),Ct=V({__name:`PluginMotionInterface`,props:{response:{}},setup(e){let{response:t}=z(e),n=_(`videoPlayerRef`);return p(()=>{if(n.value){let e=new Blob([t.value.videoData],{type:`video/mp4`});n.value.src=URL.createObjectURL(e),n.value.load()}}),(e,t)=>(b(),A(`div`,null,[E(`video`,{ref_key:`videoPlayerRef`,ref:n,controls:``,class:`w-full`},`Your browser does not support the video tag.`,512)]))}}),wt={class:`mb-5 h-min`},Tt=[`src`],Et=V({__name:`PluginObjectInterface`,props:{src:{},response:{}},setup(e){let{response:t,src:n}=z(e),r=w(()=>t.value.detections);return(e,t)=>{let i=ve;return b(),A(`div`,wt,[O(i,{detections:k(r)},null,8,[`detections`]),E(`img`,{src:k(n),alt:`Preview`,class:`w-full`},null,8,Tt)])}}}),Dt={key:0,class:`w-full`},Ot={class:`flex flex-col justify-center items-center mb-5`},kt={for:`restoreInput`,class:`cursor-pointer text-center text-sm`},At=[`accept`],jt={key:0,class:`text-red-500 text-sm`},Mt={key:1,class:`w-full flex flex-col items-center justify-center`},Nt={key:0,class:`relative mb-4`},Pt=[`src`],Ft={key:1,class:`relative mb-4 w-full`},It={key:2,class:`relative mb-4 w-full`},Lt=[`src`,`type`],Rt={class:`flex items-center justify-center`},zt={class:`mx-2`},Bt={class:`text-muted`},Vt={class:`flex items-center justify-center mt-2 text-xs text-muted`},Ht={class:`mt-10`},Ut={class:`text-base font-semibold border-b-[1px] border-color mb-3 pb-3`},Wt={key:0,class:`flex items-center justify-center text-sm text-muted mt-5`},Gt=V({__name:`CuiDetectionInterface`,props:{type:{},pluginName:{}},emits:[`update:file`,`update:metadata`],setup(t,{emit:n}){let r=t,a=n,o=te(),{t:s}=c(),l=ee(),u=xe(),{type:d,pluginName:ne}=z(r),{plugin:p,isLoading:re}=i(ne),g=_(`fileInputRef`),v=_(`videoPlayerRef`),x=_(`audioPlayerRef`),S=B([]),C=j(!1),T=j(!1),N=j(!1),F=j(!1),I=j(``),R=j(!1),V=j(),ie=j(!0),U=B(),W=j(!1),ae=w(()=>W.value||re.value||R.value),G=w(()=>{switch(d.value){case`objectDetection`:case`faceDetection`:case`licensePlateDetection`:case`classifierDetection`:case`clipDetection`:return`image`;case`motionDetection`:return`video`;case`audioDetection`:return`audio`;default:return`image`}}),K=w(()=>{switch(G.value){case`image`:return Ee;case`video`:return Te;case`audio`:return X;default:return[]}}),q=w(()=>{switch(G.value){case`image`:return Ce;case`video`:return we;case`audio`:return Y;default:return 0}}),oe=w(()=>K.value.join(`,`));async function se(){if(p.value){W.value=!0;try{let e;switch(d.value){case`motionDetection`:e=await p.value.motionDetectionSettings?.();break;case`objectDetection`:e=await p.value.objectDetectionSettings?.();break;case`audioDetection`:e=await p.value.audioDetectionSettings?.();break;case`faceDetection`:e=await p.value.faceDetectionSettings?.();break;case`licensePlateDetection`:e=await p.value.licensePlateDetectionSettings?.();break;case`classifierDetection`:e=await p.value.classifierDetectionSettings?.();break;case`clipDetection`:e=await p.value.clipSettings?.();break}U.value=e}catch(e){o.error(`Failed to load interface schema:`,e),U.value=void 0}finally{W.value=!1}}}function ce(e){let t=S.value.findIndex(t=>t.name===e);t>-1&&(S.value.splice(t,1),ue(),I.value=``,G.value===`video`&&v.value&&(v.value.src=``),V.value=void 0,a(`update:file`,null),a(`update:metadata`,null))}function le(e){if(C.value=!1,T.value=!1,F.value=!1,S.value=[],e.dataTransfer)if(e.dataTransfer.files.length>1)T.value=!0;else{let t=e.dataTransfer.files[0];(K.value.length===0||K.value.includes(t.type))&&t.size<=q.value?(S.value.push(t),D(()=>{de(t)})):t.size>q.value?F.value=!0:T.value=!0}}function J(e){T.value=!1,F.value=!1,S.value=[];let t=e.target;if(t&&t.files){if(t.files?.length>1)T.value=!0;else if(t.files.length===1){let e=t.files[0],n=K.value.length===0||K.value.includes(e.type);e.size<=q.value&&n?(S.value.push(e),D(()=>{de(e)})):e.size>q.value?F.value=!0:T.value=!0}}}function ue(){g.value&&(g.value.value=``)}function de(e){R.value=!0;let t=URL.createObjectURL(e);switch(G.value){case`image`:fe(e,t);break;case`video`:pe(e,t);break;case`audio`:me(e,t);break}}function fe(e,t){let n=new Image;n.src=t,n.onload=()=>{I.value=n.src;let t={width:n.width,height:n.height};V.value=t,a(`update:metadata`,t),a(`update:file`,e),R.value=!1}}function pe(e,t){v.value&&(v.value.src=t,v.value.load(),v.value.onloadeddata=()=>{a(`update:file`,e),R.value=!1})}function me(e,t){I.value=t;let n=new Audio;n.src=t,n.onloadedmetadata=()=>{let t={mimeType:e.type};V.value=t,a(`update:metadata`,t),a(`update:file`,e),R.value=!1}}function he(e){return e<1024?e+` bytes`:e<1048576?(e/1024).toFixed(1)+` KB`:(e/1048576).toFixed(1)+` MB`}function ge(e,t){let n=0,r=0,i=0;for(let a=0;a<e.length;a++)n+=e[a]*t[a],r+=e[a]*e[a],i+=t[a]*t[a];return r&&i?n/(Math.sqrt(r)*Math.sqrt(i)):0}async function _e(e){if(!S.value.length){N.value=!0;return}if(!p.value){o.error(`Plugin not connected`);return}R.value=!0;try{let t=await S.value[0].arrayBuffer();if(d.value===`audioDetection`){let n=await p.value.testAudioDetection?.(new Uint8Array(t),V.value,e);if(!n){o.warn(`No audio detection interface available`);return}if(n.detected&&n.detections?.length){let e=n.detections.map(e=>`${e.label} (${Math.round(e.confidence*100)}%)`).join(`, `),t=n.decibels==null?``:` | ${n.decibels.toFixed(1)} dBFS`;l.add({severity:`success`,detail:`${e}${t}`,life:3e3})}else l.add({severity:`info`,detail:s(`components.detection_interface.audio_not_detected`),life:3e3})}else if(d.value===`motionDetection`){let n=await p.value.testMotionDetection?.(new Uint8Array(t),e);if(!n){o.warn(`No motion detection interface available`);return}u.openComponentDialog(Ct,{data:{title:s(`components.dialog.title.result`),hideConfirmButton:!0,contentProps:{response:n}}})}else if(d.value===`faceDetection`){let n=await p.value.testFaceDetection?.(new Uint8Array(t),V.value,e);if(!n){o.warn(`No face detection interface available`);return}u.openComponentDialog(Et,{data:{title:s(`components.dialog.title.result`),hideConfirmButton:!0,contentProps:{src:I,response:n}}})}else if(d.value===`licensePlateDetection`){let n=await p.value.testLicensePlateDetection?.(new Uint8Array(t),V.value,e);if(!n){o.warn(`No license plate detection interface available`);return}u.openComponentDialog(Et,{data:{title:s(`components.dialog.title.result`),hideConfirmButton:!0,contentProps:{src:I,response:n}}})}else if(d.value===`classifierDetection`){let n=await p.value.testClassifierDetection?.(new Uint8Array(t),V.value,e);if(!n){o.warn(`No classifier detection interface available`);return}u.openComponentDialog(Et,{data:{title:s(`components.dialog.title.result`),hideConfirmButton:!0,contentProps:{src:I,response:n}}})}else if(d.value===`clipDetection`){let n=await p.value.testClipEmbedding?.(new Uint8Array(t),V.value,e);if(!n){o.warn(`No CLIP detection interface available`);return}if(!n.embeddings?.length){l.add({severity:`info`,detail:s(`components.detection_interface.no_detections`),life:3e3});return}let r=n.embeddings[0].embedding;u.openComponentDialog(St,{data:{title:s(`components.dialog.title.result`),hideConfirmButton:!0,contentProps:{src:I,response:n,onTextSearch:async e=>{let t=await p.value.getTextEmbedding(e);return t?.embedding?.length?{score:ge(r,t.embedding)}:{score:0}}}}})}else{let n=await p.value.testObjectDetection?.(new Uint8Array(t),V.value,e);if(!n){o.warn(`No object detection interface available`);return}u.openComponentDialog(Et,{data:{title:s(`components.dialog.title.result`),hideConfirmButton:!0,contentProps:{src:I,response:n}}})}}catch(e){l.add({severity:`error`,detail:e,life:3e3})}finally{R.value=!1}}return H(p,e=>{e&&se()},{immediate:!0}),H(S,e=>{e.length>0?(N.value=!1,ie.value=!1):(I.value=``,V.value=void 0,ie.value=!0)},{immediate:!0,deep:!0}),(t,n)=>{let r=Re,i=e,a=Oe;return b(),A(`div`,null,[E(`div`,{class:`file-upload-box`,onDrop:n[1]||=m(e=>le(e),[`prevent`]),onDragover:n[2]||=m(e=>C.value=!0,[`prevent`]),onDragenter:n[3]||=m(e=>C.value=!0,[`prevent`]),onDragleave:n[4]||=m(e=>C.value=!1,[`prevent`])},[k(S).length?(b(),A(`div`,Mt,[k(G)===`image`?(b(),A(`div`,Nt,[E(`img`,{src:k(I),alt:`Preview`,class:`w-full`},null,8,Pt)])):k(G)===`video`?(b(),A(`div`,Ft,[E(`video`,{ref_key:`videoPlayerRef`,ref:v,controls:``,class:`w-full`},`Your browser does not support the video tag.`,512)])):k(G)===`audio`?(b(),A(`div`,It,[E(`audio`,{ref_key:`audioPlayerRef`,ref:x,controls:``,class:`w-full`},[E(`source`,{src:k(I),type:k(S)[0].type},null,8,Lt),n[5]||=P(` Your browser does not support the audio element. `,-1)],512)])):f(``,!0),E(`div`,Rt,[O(i,{text:``,rounded:``,severity:`danger`,class:`cui-icon-md shrink-0`,onClick:n[0]||=m(e=>ce(k(S)[0].name),[`stop`])},{icon:h(()=>[O(r,{width:`100%`,height:`100%`})]),_:1}),E(`b`,zt,M(k(S)[0].name),1),E(`span`,Bt,`(`+M(he(k(S)[0].size))+`)`,1)])])):(b(),A(`div`,Dt,[E(`div`,Ot,[E(`label`,kt,M(t.$t(`components.detection_interface.drop_or_select_${k(G)}_to_detect${k(G)===`image`?`_objects`:k(G)===`video`?`_motion`:``}`)),1),E(`input`,{id:`restoreInput`,ref_key:`fileInputRef`,ref:g,type:`file`,class:`hidden`,accept:k(oe),onChange:J},null,40,At),k(T)?(b(),A(`p`,jt,M(t.$t(`components.detection_interface.only_one_${k(G)}_allowed`)),1)):f(``,!0),k(N)?(b(),A(`p`,{key:1,class:L([`text-red-500 text-sm`,{"mt-2":k(T)}])},M(t.$t(`components.detection_interface.${k(G)}_required`)),3)):f(``,!0),k(F)?(b(),A(`p`,{key:2,class:L([`text-red-500 text-sm`,{"mt-2":k(T)||k(N)}])},M(t.$t(`components.detection_interface.file_size_error`)),3)):f(``,!0)])]))],32),E(`div`,Vt,[E(`span`,null,`(`+M(k(q)/1024/1024)+`MB, `+M(k(K).join(`, `))+`)`,1)]),E(`div`,Ht,[E(`h3`,Ut,M(t.$t(`components.detection_interface.interface_config`)),1),k(U)?.length?(b(),y(a,{key:1,"schema-form":{schema:k(U),config:{}},loading:k(ae),"save-button-label":t.$t(`components.detection_interface.detect`),"disable-button":k(ie),"show-button":``,onOnFormSubmit:_e},null,8,[`schema-form`,`loading`,`save-button-label`,`disable-button`])):(b(),A(`div`,Wt,M(t.$t(`components.detection_interface.no_interface_config`)),1))])])}}}),Kt={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function qt(e,t){return b(),A(`svg`,Kt,[...t[0]||=[E(`path`,{fill:`none`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`2`,d:`M2 10v3m4-7v11m4-14v18m4-13v7m4-10v13m4-8v3`},null,-1)]])}var Jt=C({name:`lucide-audio-lines`,render:qt}),Yt={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Xt(e,t){return b(),A(`svg`,Yt,[...t[0]||=[E(`path`,{fill:`currentColor`,d:`M2 7V4q0-.825.588-1.412T4 2h3v2H4v3zm5 15H4q-.825 0-1.412-.587T2 20v-3h2v3h3zm10 0v-2h3v-3h2v3q0 .825-.587 1.413T20 22zm3-15V4h-3V2h3q.825 0 1.413.588T22 4v3zm-7.913 1.913Q11.5 8.325 11.5 7.5t.588-1.412T13.5 5.5t1.413.588T15.5 7.5t-.587 1.413T13.5 9.5t-1.412-.587M12.8 18h-4l1-5.1l-1.8.7V17H6v-4.7l3.95-1.7q.875-.375 1.288-.487T12 10q.525 0 .975.275T13.7 11l1 1.6q.65 1.05 1.763 1.725T19 15v2q-1.65 0-3.088-.687T13.5 14.5z`},null,-1)]])}var Zt=C({name:`material-symbols-detection-and-zone`,render:Xt}),Qt={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function $t(e,t){return b(),A(`svg`,Qt,[...t[0]||=[E(`path`,{fill:`currentColor`,d:`M8.113 13.888Q7.75 13.525 7.75 13t.363-.888T9 11.75t.888.363t.362.887t-.363.888T9 14.25t-.888-.363m6 0q-.362-.362-.362-.887t.363-.888t.887-.362t.888.363t.362.887t-.363.888t-.887.362t-.888-.363M12 20q3.35 0 5.675-2.325T20 12q0-.6-.075-1.162T19.65 9.75q-.525.125-1.05.188T17.5 10q-2.275 0-4.3-.975T9.75 6.3q-.8 1.95-2.287 3.388T4 11.85V12q0 3.35 2.325 5.675T12 20m0 2q-2.075 0-3.9-.787t-3.175-2.138T2.788 15.9T2 12t.788-3.9t2.137-3.175T8.1 2.788T12 2t3.9.788t3.175 2.137T21.213 8.1T22 12t-.788 3.9t-2.137 3.175t-3.175 2.138T12 22`},null,-1)]])}var en=C({name:`material-symbols-face`,render:$t}),tn={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function nn(e,t){return b(),A(`svg`,tn,[...t[0]||=[E(`path`,{fill:`currentColor`,d:`M8 17q-.425 0-.712-.288T7 16t.288-.712T8 15h5q-.35-.425-.562-.925T12.1 13H10q-.425 0-.712-.288T9 12t.288-.712T10 11h2.1q.125-.575.338-1.075T13 9H4q-.425 0-.712-.288T3 8t.288-.712T4 7h13q2.075 0 3.538 1.463T22 12t-1.463 3.538T17 17zm9-2q1.25 0 2.125-.875T20 12t-.875-2.125T17 9t-2.125.875T14 12t.875 2.125T17 15M3 13q-.425 0-.712-.288T2 12t.288-.712T3 11h4q.425 0 .713.288T8 12t-.288.713T7 13zm1 4q-.425 0-.712-.288T3 16t.288-.712T4 15h1q.425 0 .713.288T6 16t-.288.713T5 17z`},null,-1)]])}var rn=C({name:`material-symbols-motion-blur-rounded`,render:nn}),an={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function on(e,t){return b(),A(`svg`,an,[...t[0]||=[E(`g`,{fill:`none`,"fill-rule":`evenodd`},[E(`path`,{d:`m12.594 23.258l-.012.002l-.071.035l-.02.004l-.014-.004l-.071-.036q-.016-.004-.024.006l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.016-.018m.264-.113l-.014.002l-.184.093l-.01.01l-.003.011l.018.43l.005.012l.008.008l.201.092q.019.005.029-.008l.004-.014l-.034-.614q-.005-.019-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.003-.011l.018-.43l-.003-.012l-.01-.01z`}),E(`path`,{fill:`currentColor`,d:`M15.586 2.757a2 2 0 0 1 2.828 0l2.829 2.829a2 2 0 0 1 0 2.828l-2.829 2.829a2 2 0 0 1-2.828 0l-2.829-2.829a2 2 0 0 1 0-2.828zM9 3a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2zm12 12a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h4a2 2 0 0 0 2-2zM9 13a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4a2 2 0 0 1 2-2z`})],-1)]])}var sn=C({name:`mingcute-classify-2-fill`,render:on}),cn={viewBox:`0 0 256 256`,width:`1.2em`,height:`1.2em`};function ln(e,t){return b(),A(`svg`,cn,[...t[0]||=[E(`path`,{fill:`currentColor`,d:`M200 156c0 6.5-7.33 12-16 12s-16-5.5-16-12s7.33-12 16-12s16 5.5 16 12m32-100v144a16 16 0 0 1-16 16H40a16 16 0 0 1-16-16V56a16 16 0 0 1 16-16h176a16 16 0 0 1 16 16m-88.63 116.88l-44-104a8 8 0 0 0-14.74 0l-44 104a8 8 0 0 0 14.74 6.24L66.84 152h50.32l11.47 27.12a8 8 0 0 0 14.74-6.24M216 124c0-15.44-14.36-28-32-28a34.86 34.86 0 0 0-20.78 6.68a8 8 0 0 0 9.56 12.83A18.84 18.84 0 0 1 184 112c8.56 0 15.8 5.36 16 11.76v8a35.24 35.24 0 0 0-16-3.76c-17.64 0-32 12.56-32 28s14.36 28 32 28a35.1 35.1 0 0 0 16.93-4.26A8 8 0 0 0 216 176ZM73.61 136h36.78L92 92.53Z`},null,-1)]])}var un=C({name:`ph-text-aa-fill`,render:ln}),dn={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function fn(e,t){return b(),A(`svg`,dn,[...t[0]||=[E(`path`,{fill:`currentColor`,d:`M12.75 3a.75.75 0 0 0-1.5 0v2a.75.75 0 0 0 1.5 0z`},null,-1),E(`path`,{fill:`currentColor`,"fill-rule":`evenodd`,d:`M22.75 12.057c0 1.837 0 3.293-.153 4.432c-.158 1.172-.49 2.121-1.238 2.87c-.749.748-1.698 1.08-2.87 1.238c-1.14.153-2.595.153-4.433.153H9.944c-1.837 0-3.293 0-4.432-.153c-1.172-.158-2.121-.49-2.87-1.238c-.748-.749-1.08-1.698-1.238-2.87c-.153-1.14-.153-2.595-.153-4.433v-.926q.001-.575.008-1.096c.014-.975.05-1.81.145-2.523c.158-1.172.49-2.121 1.238-2.87c.749-.748 1.698-1.08 2.87-1.238c.716-.096 1.558-.132 2.541-.145l.697-.005a1 1 0 0 1 1.001.999V5a2.25 2.25 0 0 0 4.5 0v-.75c0-.552.448-1 1-.998c1.29.006 2.359.033 3.239.151c1.172.158 2.121.49 2.87 1.238c.748.749 1.08 1.698 1.238 2.87c.153 1.14.153 2.595.153 4.433zM8 9.75a.75.75 0 0 0 0 1.5h8a.75.75 0 0 0 0-1.5zm0 3.5a.75.75 0 0 0 0 1.5h5.5a.75.75 0 0 0 0-1.5z`,"clip-rule":`evenodd`},null,-1)]])}var pn=C({name:`solar-plate-bold`,render:fn}),mn={class:`font-semibold text-xl truncate`},hn={class:`lg:col-span-2 order-1 !h-[220px]`},gn={class:`flex w-full h-full items-center justify-center`},_n={class:`lg:col-span-1 lg:row-span-3 order-2`},vn={class:`lg:!hidden card-title`},yn={key:0,class:`w-full h-full flex items-center justify-center`},bn={key:1},xn={class:`hidden lg:block text-base font-semibold border-b-[1px] border-color mb-3 pb-3`},Sn={key:0,class:`flex items-center justify-center w-full h-full text-muted text-sm`},Cn=[`onClick`],wn={key:0,class:`w-full h-full`},Tn={key:0,class:`flex flex-col items-center justify-center w-full h-full text-muted text-sm gap-1 text-center`},En={key:2,class:`flex items-center justify-center w-full h-full text-muted text-sm`},Dn={key:9,class:`w-full h-full`},On={key:0,class:`flex items-center justify-center w-full h-full text-muted text-sm`},kn={class:`lg:col-span-2 order-3`},An={class:`lg:!hidden card-title`},jn={class:`hidden lg:block text-base font-semibold border-b-[1px] border-color mb-3 pb-3`},Mn={key:0,class:`flex w-full h-full items-center justify-center`},Nn=[`innerHTML`],Pn={class:`lg:col-span-2 order-4`},Fn={class:`lg:!hidden card-title`},In={class:`hidden lg:block text-base font-semibold border-b-[1px] border-color mb-3 pb-3`},Ln={key:0,class:`flex w-full h-full items-center justify-center`},Rn=[`innerHTML`],zn=W(V({__name:`Plugin`,setup(r){let u=new ye,d=new ke,p=te(),m=be(),_=ie(),v=ee(),S=xe(),{lgBreakpoint:C}=ae(),{t:D}=c(),z=j(_.params.scope),B=j(_.params.pluginname),V=w(()=>z.value?`${z.value}/${B.value}`:B.value),{contract:U,error:W}=i(V);d.toggleQueryActivator(`getPluginContractQuery`,!1);let{data:J,isBusy:ue}=d.getPluginQuery(V),{data:de,isBusy:fe}=d.getPluginReadmeQuery(V),{data:ge,isBusy:ve}=d.getPluginChangelogQuery(V),{data:Ce}=d.getPluginContractQuery(V),Y=o(V),X=Y.config,we=Y.isLoading,{mutate:Te,isPending:Ee}=u.addCameraExtensionQuery(),{mutate:je,isPending:Re}=u.removeCameraExtensionQuery(),Z=j(`settings`),Q=j([]),$=j([]),Ve=w(()=>!!U.value&&l(U.value,n.NVR)),He=Le(`commonmark`,{highlight(e,t){if(t&&Fe.getLanguage(t))try{return`<pre><code class="hljs">`+Fe.highlight(e,{language:t,ignoreIllegals:!0}).value+`</code></pre>`}catch{}return`<pre><code class="hljs">`+He.utils.escapeHtml(e)+`</code></pre>`}});Fe.registerLanguage(`typescript`,Ie),Fe.registerLanguage(`yaml`,Pe),Fe.registerLanguage(`json`,Me),Fe.registerLanguage(`python`,Ne);function Ue(e,t){return e.pluginInfo?.name===t}async function We(e){try{await Y.setValue(e.key,void 0),v.add({severity:`success`,detail:D(`components.toast.config_updated`),life:3e3})}catch(e){v.add({severity:`error`,detail:e,life:3e3})}}async function Ge(e){try{let t=await Y.submitValue(e.key,e.payload);if(t?.toast){let e=ne(t.toast.type);v.add({severity:e,detail:t.toast.message,life:3e3})}t?.schema?.length&&S.openComponentDialog(Ae,{data:{title:D(`components.dialog.title.config`),hideConfirmButton:!0,contentProps:{schemaConfig:{schema:t.schema,config:e.payload},pluginName:V.value,buttonKey:e.key}}})}catch(e){v.add({severity:`error`,detail:e,life:3e3})}}async function Ke(e){if(X.value?.schema.length)try{let t=De(X.value.schema,e);await Y.setConfig(t),v.add({severity:`success`,detail:D(`components.toast.config_updated`),life:3e3})}catch(e){v.add({severity:`error`,detail:e,life:3e3})}}async function qe(e){if(J.value&&J.value.contract){let n=t(J.value.contract)?[`hub`]:J.value.contract.provides;if($.value.includes(e.name))for(let t of n)je({cameraname:e.name,pluginname:J.value.pluginName,type:t},{onSuccess:()=>{$.value=$.value.filter(t=>t!==e.name)}});else for(let t of n)Te({cameraname:e.name,pluginname:J.value.pluginName,type:t},{onSuccess:()=>{$.value=[...$.value,e.name]}})}}return H(J,e=>{if(!e||e.disabled){let e=Q.value.some(e=>e.name===`settings`),t=Q.value.some(e=>e.name===`cameras`);e?Z.value=`settings`:t&&(Z.value=`cameras`)}},{deep:!0}),H(_,()=>{B.value=_.params.pluginname},{deep:!0,immediate:!0}),H([J,Y.isConnected],async([e,t])=>{e&&!e.disabled&&t&&await Y.getConfig()},{immediate:!0}),H(X,()=>{X.value?d.toggleQueryActivator(`getPluginContractQuery`,!0):d.toggleQueryActivator(`getPluginContractQuery`,!1)},{deep:!0,immediate:!0}),H([Ce,X,U],()=>{let e=[],t=!1,r=Ve.value||!!X.value?.schema.length;e.push({name:`settings`,icon:he,isInterface:!1,tooltip:D(`views.plugin.settings_tab_tooltip`)}),U.value&&l(U.value,n.MotionDetection)&&(t=!0,e.push({name:`motion_detection`,icon:rn,isInterface:!0,tooltip:D(`views.plugin.motion_detection_tab_tooltip`)})),U.value&&l(U.value,n.ObjectDetection)&&(t=!0,e.push({name:`object_detection`,icon:Zt,isInterface:!0,tooltip:D(`views.plugin.object_detection_tab_tooltip`)})),U.value&&l(U.value,n.AudioDetection)&&(t=!0,e.push({name:`audio_detection`,icon:Jt,isInterface:!0,tooltip:D(`views.plugin.audio_detection_tab_tooltip`)})),U.value&&l(U.value,n.FaceDetection)&&(t=!0,e.push({name:`face_detection`,icon:en,isInterface:!0,tooltip:D(`views.plugin.face_detection_tab_tooltip`)})),U.value&&l(U.value,n.LicensePlateDetection)&&(t=!0,e.push({name:`license_plate_detection`,icon:pn,isInterface:!0,tooltip:D(`views.plugin.license_plate_detection_tab_tooltip`)})),U.value&&l(U.value,n.ClassifierDetection)&&(t=!0,e.push({name:`classifier_detection`,icon:sn,isInterface:!0,tooltip:D(`views.plugin.classifier_detection_tab_tooltip`)})),U.value&&l(U.value,n.ClipDetection)&&(t=!0,e.push({name:`clip_detection`,icon:un,isInterface:!0,tooltip:D(`views.plugin.clip_detection_tab_tooltip`)})),U.value&&l(U.value,n.Notifier)&&(t=!0,e.push({name:`notification`,icon:me,isInterface:!0,tooltip:D(`views.plugin.notification_tab_tooltip`)})),e.push({name:`cameras`,icon:pe,isInterface:!1,tooltip:D(`views.plugin.cameras_tab_tooltip`)}),Ce.value?.cameras.length&&($.value=Ce.value.cameras.filter(e=>e.plugins?.some(e=>e.name===V.value)).map(e=>e.name)),Q.value=[...e],J.value?.disabled||(r?Z.value=`settings`:t?Z.value=Q.value.filter(e=>e.isInterface)[0].name:Z.value=`settings`)},{deep:!0,immediate:!0}),H(W,e=>{e&&J.value&&!J.value.disabled&&p.error(`Error connecting to plugin:`,e)}),(t,n)=>{let r=ze,i=e,o=Se,c=a,l=s,u=Be,ee=G,te=ce,d=I(`RouterLink`),ne=Oe,p=Gt,_=dt,v=se,S=_e,w=q,D=le,j=K,z=oe;return b(),A(`div`,{key:k(V)},[O(o,{position:`left`},{default:h(()=>[O(i,{severity:`secondary`,text:``,class:`cui-button p-2 text-color non-draggable-region`,onClick:n[0]||=e=>t.$router.push(`/plugins`)},{icon:h(()=>[O(r,{class:`w-6 h-6`})]),_:1})]),_:1}),O(o,{position:`center`},{default:h(()=>[E(`span`,mn,M(t.$t(`views.plugin.title`)),1)]),_:1}),E(`div`,{class:L([`grid grid-auto grid-cols-1 lg:grid-cols-3 gap-6 lg:h-full`,{"!gap-2":k(C)}])},[E(`div`,hn,[k(J)?(b(),y(u,{key:1,plugin:k(J),class:`h-[220px]`},null,8,[`plugin`])):(b(),y(l,{key:0,class:`cui-card items-center justify-center !h-[220px]`},{content:h(()=>[E(`div`,gn,[O(c,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})])]),_:1}))]),E(`div`,_n,[E(`span`,vn,M(t.$t(`views.plugin.settings`)),1),O(l,{class:L([`cui-card !h-auto lg:!h-full`,{"items-center justify-center":k(ue)||k(we)}])},{content:h(()=>[k(ue)||k(we)?(b(),A(`div`,yn,[O(c,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})])):(b(),A(`div`,bn,[E(`h3`,xn,M(t.$t(`views.plugin.settings`)),1),k(J)?.disabled?(b(),A(`div`,Sn,[E(`span`,null,M(t.$t(`views.plugin.disabled_info`)),1)])):(b(),y(j,{key:1,value:k(Z),"onUpdate:value":n[1]||=e=>T(Z)?Z.value=e:null,scrollable:``},{default:h(()=>[O(te,{class:`justify-between`,pt:{activeBar:{class:`!w-auto`},content:{class:`border-[1px] border-color cui-rounded-corner overflow-hidden`}}},{default:h(()=>[(b(!0),A(g,null,re(k(Q),(e,t)=>(b(),y(ee,{key:t,disabled:e.isInterface&&k(J)?.disabled,value:e.name,"as-child":``},{default:h(t=>[x((b(),A(`div`,N({ref_for:!0},t.a11yAttrs,{class:[`flex flex-col items-center justify-center flex-1 content-background !py-3 h-[55px]`,[{"hover:!text-color active:!text-color focus:!text-color":!t.active},t.class]],onClick:t.onClick}),[(b(),y(F(e.icon),{class:`w-5 h-5`}))],16,Cn)),[[z,{value:e.tooltip}]])]),_:2},1032,[`disabled`,`value`]))),128))]),_:1}),O(D,{class:`px-0 pb-0`},{default:h(()=>[(b(!0),A(g,null,re(k(Q),(e,n)=>(b(),y(w,{key:n,value:e.name,"as-child":``},{default:h(n=>[n.active?(b(),A(`div`,N({key:0,class:n.class},{ref_for:!0},n.a11yAttrs),[e.name===`settings`?(b(),A(`div`,wn,[k(Ve)?(b(),A(`div`,Tn,[E(`span`,null,M(t.$t(`views.plugin.nvr_settings_hint`)),1),O(d,{to:`/settings/recordings`,class:`text-primary-500 hover:underline`},{default:h(()=>[P(M(t.$t(`views.plugin.nvr_settings_link`)),1)]),_:1})])):k(X)?.schema?.length?(b(),y(ne,{key:1,"schema-form":{schema:k(X).schema,config:k(X).config},loading:k(Y).isLoading.value,"save-button-color":`success`,onOnAction:We,onOnSubmit:Ge,onOnFormSubmit:Ke},null,8,[`schema-form`,`loading`])):(b(),A(`div`,En,[E(`span`,null,M(t.$t(`views.plugin.no_settings`)),1)]))])):e.name===`motion_detection`?(b(),y(p,{key:1,"plugin-name":k(V),type:`motionDetection`},null,8,[`plugin-name`])):e.name===`object_detection`?(b(),y(p,{key:2,"plugin-name":k(V),type:`objectDetection`},null,8,[`plugin-name`])):e.name===`audio_detection`?(b(),y(p,{key:3,"plugin-name":k(V),type:`audioDetection`},null,8,[`plugin-name`])):e.name===`face_detection`?(b(),y(p,{key:4,"plugin-name":k(V),type:`faceDetection`},null,8,[`plugin-name`])):e.name===`license_plate_detection`?(b(),y(p,{key:5,"plugin-name":k(V),type:`licensePlateDetection`},null,8,[`plugin-name`])):e.name===`classifier_detection`?(b(),y(p,{key:6,"plugin-name":k(V),type:`classifierDetection`},null,8,[`plugin-name`])):e.name===`clip_detection`?(b(),y(p,{key:7,"plugin-name":k(V),type:`clipDetection`},null,8,[`plugin-name`])):e.name===`notification`?(b(),y(_,{key:8,"plugin-name":k(V)},null,8,[`plugin-name`])):e.name===`cameras`?(b(),A(`div`,Dn,[k(Ce)?.cameras?.length?(b(!0),A(g,{key:1},re(k(Ce).cameras,e=>(b(),A(`div`,{key:e.name,class:`cui-list-item`},[O(S,{disabled:k(Ee)||k(Re)||k(Y).isLoading.value,active:k($).includes(e.name),class:`h-14`,onClick:t=>k(m).open({cameraName:e.name})},R({default:h(()=>[E(`span`,null,M(e.name),1)]),_:2},[!k(J)||!Ue(e,k(J).pluginName)?{name:`append`,fn:h(()=>[O(v,{"model-value":k($).includes(e.name),disabled:k(Ee)||k(Re)||k(Y).isLoading.value,"onUpdate:modelValue":()=>qe(e)},null,8,[`model-value`,`disabled`,`onUpdate:modelValue`])]),key:`0`}:void 0]),1032,[`disabled`,`active`,`onClick`])]))),128)):(b(),A(`div`,On,[E(`span`,null,M(t.$t(`views.plugin.no_cameras`)),1)]))])):f(``,!0)],16)):f(``,!0)]),_:2},1032,[`value`]))),128))]),_:1})]),_:1},8,[`value`]))]))]),_:1},8,[`class`])]),E(`div`,kn,[E(`span`,An,M(t.$t(`views.plugin.readme`)),1),O(l,{class:`cui-card !h-auto lg:!h-full`},{content:h(()=>[E(`h3`,jn,M(t.$t(`views.plugin.readme`)),1),k(fe)?(b(),A(`div`,Mn,[O(c,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})])):(b(),A(`div`,{key:1,class:`markdown-body`,innerHTML:k(He).render(k(de)||t.$t(`views.plugin.no_readme`))},null,8,Nn))]),_:1})]),E(`div`,Pn,[E(`span`,Fn,M(t.$t(`views.plugin.changelog`)),1),O(l,{class:`cui-card !h-auto lg:!h-full`},{content:h(()=>[E(`h3`,In,M(t.$t(`views.plugin.changelog`)),1),k(ve)?(b(),A(`div`,Ln,[O(c,{class:`w-[30px] h-[30px] m-0`,"stroke-width":`5`})])):(b(),A(`div`,{key:1,class:`markdown-body`,innerHTML:k(He).render(k(ge)||t.$t(`views.plugin.no_changelog`))},null,8,Rn))]),_:1})])],2)])}}}),[[`__scopeId`,`data-v-869e4fd8`]]);export{zn as default};
@@ -1,4 +1,4 @@
1
- import{Cn as e,Ln as t,Tn as n,Xt as r,an as i,cr as a,en as o,fn as s,or as c,sn as l,wn as u}from"./vendor-CUsAwmr-.js";import{t as d}from"./useSharedComposables-SA61SVjO.js";import{t as f}from"./useFileDownload-BGGtfpvc.js";import{t as p}from"./plugins-B5zOpwk5.js";import{n as m,t as h}from"./useLogsSocket-D6H2UEA3.js";var g=l({__name:`PluginConsole`,props:{plugin:{},isInstalling:{type:Boolean}},setup(l,{expose:g}){let _=new p,v=l,{mdBreakpoint:y}=d(),b=s(`dialogRefProps`),{plugin:x,isInstalling:S}=c(v),C=h({target:x.value.pluginName,onStdout:e=>D.value?.writeTerminal(e),onDisconnect:()=>D.value?.writeTerminal(`\r
1
+ import{Cn as e,Ln as t,Tn as n,Xt as r,an as i,cr as a,en as o,fn as s,or as c,sn as l,wn as u}from"./vendor-CUsAwmr-.js";import{t as d}from"./useSharedComposables-CzkF-tst.js";import{t as f}from"./useFileDownload-DntU1WW7.js";import{t as p}from"./plugins-BWlFg8TN.js";import{n as m,t as h}from"./useLogsSocket-R2SaD_bg.js";var g=l({__name:`PluginConsole`,props:{plugin:{},isInstalling:{type:Boolean}},setup(l,{expose:g}){let _=new p,v=l,{mdBreakpoint:y}=d(),b=s(`dialogRefProps`),{plugin:x,isInstalling:S}=c(v),C=h({target:x.value.pluginName,onStdout:e=>D.value?.writeTerminal(e),onDisconnect:()=>D.value?.writeTerminal(`\r
2
2
  Websocket failed to connect! Is the server running?\r
3
3
  \r
4
4
  `),onClearLog:()=>D.value?.clearTerminal(),onReconnected:()=>{S.value||(D.value?.clearTerminal(),D.value?.writeTerminal(`\r
@@ -1 +1 @@
1
- import{Gt as e,Mt as t,Wt as n}from"./vendor-cameraui-lEA-78Jn.js";import{C as r,l as i}from"./api-DhzCRVL5.js";import{Qt as a,Tn as o,Xt as s,cr as c,er as l,fn as u,or as d,sn as f,zn as p}from"./vendor-CUsAwmr-.js";import{t as m}from"./CuiSchema-DVgwhbCy.js";var h=f({__name:`PluginSchema`,props:{schemaConfig:{},pluginName:{},cameraName:{},buttonKey:{},sensorId:{},pluginId:{}},setup(f,{expose:h}){let g=f,_=r(),v=u(`dialogRef`),y=u(`dialogRefProps`),{schemaConfig:b,pluginName:x,cameraName:S,buttonKey:C,sensorId:w,pluginId:T}=d(g),E=n(x),D=t(S,x),O=e(S,w,T),k=l({schema:[],config:{}}),A=s(()=>S.value&&w.value?`sensor`:S.value?`camera`:`plugin`),j=s(()=>{switch(A.value){case`sensor`:return O;case`camera`:return D;default:return E}}),M=s(()=>!!(y.loading?.value||j.value.isLoading.value));async function N(e){await j.value.setValue(e.key,void 0)}async function P(e){let t={...b.value.config,...e},n=await j.value.submitValue(C.value,t);if(n?.toast){let e=i(n.toast.type);_.add({severity:e,detail:n.toast.message,life:3e3})}n?.schema&&Object.keys(n.schema).length&&k.value?k.value.schema=n.schema:v.value.close()}return p(b,e=>{k.value=e},{deep:!0,immediate:!0}),h({isLoading:M}),(e,t)=>{let n=m;return o(),a(n,{"schema-form":c(k),loading:c(M),"show-button":``,onOnAction:N,onOnFormSubmit:P},null,8,[`schema-form`,`loading`])}}});export{h as t};
1
+ import{Gt as e,Mt as t,Wt as n}from"./vendor-cameraui-D-WYtlxb.js";import{C as r,l as i}from"./api-CLcqLYO9.js";import{Qt as a,Tn as o,Xt as s,cr as c,er as l,fn as u,or as d,sn as f,zn as p}from"./vendor-CUsAwmr-.js";import{t as m}from"./CuiSchema-CkgT_tmr.js";var h=f({__name:`PluginSchema`,props:{schemaConfig:{},pluginName:{},cameraName:{},buttonKey:{},sensorId:{},pluginId:{}},setup(f,{expose:h}){let g=f,_=r(),v=u(`dialogRef`),y=u(`dialogRefProps`),{schemaConfig:b,pluginName:x,cameraName:S,buttonKey:C,sensorId:w,pluginId:T}=d(g),E=n(x),D=t(S,x),O=e(S,w,T),k=l({schema:[],config:{}}),A=s(()=>S.value&&w.value?`sensor`:S.value?`camera`:`plugin`),j=s(()=>{switch(A.value){case`sensor`:return O;case`camera`:return D;default:return E}}),M=s(()=>!!(y.loading?.value||j.value.isLoading.value));async function N(e){await j.value.setValue(e.key,void 0)}async function P(e){let t={...b.value.config,...e},n=await j.value.submitValue(C.value,t);if(n?.toast){let e=i(n.toast.type);_.add({severity:e,detail:n.toast.message,life:3e3})}n?.schema&&Object.keys(n.schema).length&&k.value?k.value.schema=n.schema:v.value.close()}return p(b,e=>{k.value=e},{deep:!0,immediate:!0}),h({isLoading:M}),(e,t)=>{let n=m;return o(),a(n,{"schema-form":c(k),loading:c(M),"show-button":``,onOnAction:N,onOnFormSubmit:P},null,8,[`schema-form`,`loading`])}}});export{h as t};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/VersionsHandler-B5D1agkJ.js","assets/vendor-cameraui-lEA-78Jn.js","assets/rolldown-runtime-DAXXjFlN.js","assets/vendor-CUsAwmr-.js","assets/api-DhzCRVL5.js","assets/vendor-core-Dqc843Zs.js","assets/api-Dbhyyb4d.css","assets/useSharedComposables-SA61SVjO.js","assets/ui-DhLpf0gJ.js","assets/vendor-primevue-DST-0Ea0.js","assets/plugins-B5zOpwk5.js","assets/useLogsSocket-D6H2UEA3.js","assets/_plugin-vue_export-helper-BDNMzG2s.js","assets/vendor-xterm-BRN-hOYD.js","assets/vendor-xterm-BrP-ENHg.css","assets/useLogsSocket-DZ93-C8L.css","assets/vendor-markdown-e7bfD1d7.js","assets/vendor-markdown-DtOhvyRx.css","assets/server-D9bvACdr.js"])))=>i.map(i=>d[i]);
2
- import{Hn as e,Kn as t,fi as n,lt as r,tt as i}from"./vendor-cameraui-lEA-78Jn.js";import{$t as a,At as o,Dn as s,Gt as c,Hn as l,Kt as u,Qt as d,Tn as f,Un as p,Xn as m,Xt as h,Yn as g,Zt as _,an as v,cr as y,dr as b,en as x,er as S,fn as C,fr as w,lr as T,sn as E,zn as D,zt as O}from"./vendor-CUsAwmr-.js";import{t as k}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{a as A,t as j}from"./useSharedComposables-SA61SVjO.js";import{t as M}from"./close-CEZvWyN1.js";import{F as N,J as P,L as F,P as I,R as L,U as R,s as ee}from"./vendor-primevue-DST-0Ea0.js";import{n as te,r as z,t as ne}from"./github-xiZ7fokg.js";import{t as B}from"./CuiFloatingButton-BaAiuemi.js";import{t as V}from"./hasPermission-D44ci-iH.js";import{n as H,t as U}from"./useCuiDialog-nDtDuLq-.js";import{t as W}from"./CuiTopbarSlot-BhsSSnaB.js";import{t as G}from"./plugins-B5zOpwk5.js";import{t as K}from"./back-filled-DVeRsKmt.js";import{t as q}from"./plus-CuWXW2I0.js";import{t as J}from"./search-Bl5hzTQq.js";import{n as Y,t as X}from"./CuiPluginCard-Dp0o4UCK.js";var Z={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Q(e,t){return f(),x(`svg`,Z,[...t[0]||=[_(`g`,{fill:`none`},[_(`rect`,{width:`16.5`,height:`16.5`,x:`3.75`,y:`3.75`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`1.5`,rx:`2`}),_(`path`,{fill:`currentColor`,d:`M12 9a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v11.25h-4z`})],-1)]])}var re=m({name:`proicons-npm`,render:Q}),$={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function ie(e,t){return f(),x(`svg`,$,[...t[0]||=[_(`path`,{fill:`currentColor`,d:`M2 10.96a.985.985 0 0 1-.37-1.37L3.13 7c.11-.2.28-.34.47-.42l7.83-4.4c.16-.12.36-.18.57-.18s.41.06.57.18l7.9 4.44c.19.1.35.26.44.46l1.45 2.52c.28.48.11 1.09-.36 1.36l-1 .58v4.96c0 .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-5.54c-.3.17-.68.18-1 0m10-6.81v6.7l5.96-3.35zM5 15.91l6 3.38v-6.71L5 9.21zm14 0v-3.22l-5 2.9c-.33.18-.7.17-1 .01v3.69zm-5.15-2.55l6.28-3.63l-.58-1.01l-6.28 3.63z`},null,-1)]])}var ae=m({name:`mdi-package-variant`,render:ie}),oe={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function se(e,t){return f(),x(`svg`,oe,[...t[0]||=[_(`path`,{fill:`currentColor`,d:`M13 15.6c.3.2.7.2 1 0l5-2.9v.3c.7 0 1.4.1 2 .4v-1.8l1-.6c.5-.3.6-.9.4-1.4l-1.5-2.5c-.1-.2-.2-.4-.4-.5l-7.9-4.4c-.2-.1-.4-.2-.6-.2s-.4.1-.6.2L3.6 6.6c-.2.1-.4.2-.5.4L1.6 9.6c-.3.5-.1 1.1.4 1.4c.3.2.7.2 1 0v5.5c0 .4.2.7.5.9l7.9 4.4c.2.1.4.2.6.2s.4-.1.6-.2l.9-.5c-.3-.6-.4-1.3-.5-2m-2 0l-6-3.4V9.2l6 3.4zm9.1-9.6l-6.3 3.6l-.6-1l6.3-3.6zM12 10.8V4.2l6 3.3zm8 4.2v3h3v2h-3v3h-2v-3h-3v-2h3v-3z`},null,-1)]])}var ce=m({name:`mdi-package-variant-plus`,render:se}),le={class:`cui-label`},ue={class:`flex flex-row items-center justify-center w-full mt-8`},de={key:2,class:`text-center py-10`},fe={class:`text-muted mb-2`},pe={class:`text-muted`},me={key:3,class:`w-full`},he={key:4,class:`w-full plugin-list`},ge={class:`plugin-info`},_e={class:`flex items-center`},ve={class:`font-medium text-base`},ye={class:`text-sm text-muted mb-2`},be={class:`plugin-description`},xe={class:`plugin-meta`},Se={class:`plugin-meta-item`},Ce={class:`meta-label font-semibold`},we={class:`meta-value`},Te={class:`plugin-meta-item`},Ee={class:`meta-label font-semibold`},De={class:`meta-value`},Oe={class:`plugin-actions`},ke={class:`flex gap-2 mb-2`},Ae=k(E({__name:`PluginSearch`,setup(m,{expose:b}){let E=H(()=>o(()=>import(`./VersionsHandler-B5D1agkJ.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]))),O=new G,k=U(),{t:A}=n(),j=C(`dialogRefProps`),N=S(``),I=S({}),z=S([]),{data:B,isBusy:V,refetch:W}=O.searchPluginsQuery(I,{page:1,pageSize:-1}),{data:K,isBusy:q,refetch:J}=O.getPluginsProgressQuery({page:1,pageSize:-1}),Y=h(()=>V.value||q.value),X=h(()=>!!(j.loading?.value||Y.value));function Z(e){return K.value?.result.some(t=>t.pluginName===e)}function Q(e){e?.preventDefault(),I.value.pluginname=N.value??``}function $(){N.value=``,I.value={},Q()}function ie(){W(),J()}function oe(e){k.openComponentDialog(E,{data:{title:A(`components.dialog.title.install`),loading:X,contentProps:{target:y(e),installVersion:`latest`,isNewPlugin:!0}}})}return D(B,e=>{e?.result&&(z.value=e.result.filter(e=>!e.installPath))},{immediate:!0,deep:!0}),b({isLoading:X}),(n,o)=>{let m=i,h=M,b=e,S=F,C=L,E=te,D=t,O=ee,k=R,A=ce,j=r,I=ae,B=ne,V=re,H=P;return f(),x(`div`,null,[_(`form`,{onSubmit:c(Q,[`prevent`])},[_(`label`,le,w(n.$t(`components.form.label.name`)),1),v(C,null,{default:l(()=>[v(m,{modelValue:y(N),"onUpdate:modelValue":o[0]||=e=>g(N)?N.value=e:null,modelModifiers:{trim:!0},loading:y(Y),placeholder:`camera-ui-`,type:`text`},null,8,[`modelValue`,`loading`]),v(S,null,{default:l(()=>[v(b,{text:``,rounded:``,severity:`secondary`,class:`cui-icon-md`,onClick:$},{icon:l(()=>[v(h,{width:`100%`,height:`100%`})]),_:1})]),_:1})]),_:1})],32),_(`div`,ue,[_(`h3`,null,w(n.$t(`components.plugin_search.plugins`)),1),p((f(),d(b,{text:``,rounded:``,severity:`secondary`,class:`cui-icon-md ml-auto`,onClick:ie},{icon:l(()=>[v(E,{width:`100%`,height:`100%`})]),_:1})),[[H,{value:n.$t(`components.plugin_search.refresh`)}]]),v(D,{size:`small`,class:`ml-2 rounded-full`,value:String(y(z).length)},null,8,[`value`])]),y(Y)?(f(),d(O,{key:0,mode:`indeterminate`,class:`my-3 !h-[1px]`})):(f(),d(k,{key:1,class:`m-0 py-3`})),!y(Y)&&!y(z).length?(f(),x(`div`,de,[_(`div`,fe,[v(A,{class:`w-12 h-12 mx-auto opacity-30`})]),_(`p`,pe,w(n.$t(`views.plugins.no_plugins`)),1)])):y(Y)?(f(),x(`div`,me,[(f(),x(u,null,s(6,e=>v(j,{key:e,class:`mb-2`,height:`132px`})),64))])):(f(),x(`div`,he,[(f(!0),x(u,null,s(y(z),(e,t)=>p((f(),x(`div`,{key:t,class:T([`plugin-list-item shadow-sm transition-default card-background custom-scrollbar`,{"opacity-50 in-progress":Z(e.pluginName)}])},[_(`div`,ge,[_(`div`,_e,[v(I,{class:`w-5 h-5 text-primary mr-2`}),_(`h4`,ve,w(e.displayName),1)]),_(`div`,ye,w(e.pluginName),1),_(`p`,be,w(e.description),1),_(`div`,xe,[_(`div`,Se,[_(`span`,Ce,w(n.$t(`components.plugin_card.version`))+`:`,1),_(`span`,we,w(e.latestVersion),1)]),_(`div`,Te,[_(`span`,Ee,w(n.$t(`components.plugin_card.author`))+`:`,1),_(`span`,De,w(e.author),1)])])]),_(`div`,Oe,[_(`div`,ke,[e.links?.homepage?p((f(),d(b,{key:0,text:``,rounded:``,severity:`secondary`,class:`cui-icon-md`,onClick:t=>n.$router.absUrl(e.links.homepage,!0)},{icon:l(()=>[v(B,{width:`100%`,height:`100%`})]),_:1},8,[`onClick`])),[[H,{value:`Github`}]]):a(``,!0),e.links?.npm?p((f(),d(b,{key:1,text:``,rounded:``,severity:`secondary`,class:`cui-icon-md`,onClick:t=>n.$router.absUrl(e.links.npm,!0)},{icon:l(()=>[v(V,{width:`100%`,height:`100%`})]),_:1},8,[`onClick`])),[[H,{value:`NPM`}]]):a(``,!0)]),v(b,{class:`cui-button-medium`,label:n.$t(`components.form.button.install`),disabled:Z(e.pluginName),onClick:t=>oe(e)},null,8,[`label`,`disabled`,`onClick`])])],2)),[[H,{value:Z(e.pluginName)?n.$t(`components.plugin_search.in_progress`):void 0}]])),128))]))])}}}),[[`__scopeId`,`data-v-e84cbdf9`]]),je={class:`flex flex-col`},Me={key:0,class:`page-title`},Ne={class:`flex gap-2 mb-4`},Pe={key:1,class:`flex flex-1 min-h-0 flex-col items-center justify-center w-full gap-4`},Fe={class:`text-muted text-sm`},Ie=E({__name:`Plugins`,setup(t){let o=new G,c=U(),{t:p}=n(),{smBreakpoint:m}=j(),{width:C,height:T}=A(),{data:E,isBusy:D}=o.getPluginsQuery({page:1,pageSize:-1}),k=S(``),M=h(()=>D.value),P=h(()=>{let e=E.value?.result??[],t=k.value.toLowerCase().trim();return t?e.filter(e=>e.pluginName.toLowerCase().includes(t)||e.displayName?.toLowerCase().includes(t)):e}),F=h(()=>(m.value?1:Math.max(1,Math.floor(C.value/450)))*Math.max(1,Math.ceil(T.value/(Y.HEIGHT+8))));function L(){c.openComponentDialog(Ae,{data:{title:p(`components.dialog.title.search_plugin`),contentProps:{},hideConfirmButton:!0,fullscreen:!0}})}return(t,n)=>{let o=K,c=e,h=W,S=J,C=I,T=i,E=N,D=r,A=z,j=X,R=B;return f(),x(`div`,je,[y(m)?a(``,!0):(f(),x(`h1`,Me,w(t.$t(`views.${String(t.$route.name).toLowerCase()}.title`)),1)),v(h,{position:`left`},{default:l(()=>[v(c,{severity:`secondary`,text:``,class:`cui-button p-2 text-color non-draggable-region`,onClick:n[0]||=e=>t.$router.push(`/menu`)},{icon:l(()=>[v(o,{class:`w-6 h-6`})]),_:1})]),_:1}),_(`div`,Ne,[v(E,{class:`flex-1`},{default:l(()=>[v(C,null,{default:l(()=>[v(S,{class:`w-4 h-4`})]),_:1}),v(T,{modelValue:y(k),"onUpdate:modelValue":n[1]||=e=>g(k)?k.value=e:null,placeholder:y(p)(`views.plugins.search`),class:`w-full`},null,8,[`modelValue`,`placeholder`])]),_:1})]),v(O,{name:`fade-2`,mode:`out-in`},{default:l(()=>[y(M)?(f(),x(`div`,{key:`loading`,class:`grid w-full gap-2`,style:b({gridTemplateColumns:`repeat(auto-fill, minmax(${y(m)?`100%`:`450px`}, 1fr))`})},[(f(!0),x(u,null,s(y(F),e=>(f(),d(D,{key:e,height:`${y(Y).HEIGHT}px`,class:`cui-card`},null,8,[`height`]))),128))],4)):!y(P).length||!(`hasPermission`in t?t.hasPermission:y(V))(void 0,`admin`)?(f(),x(`div`,Pe,[v(A,{class:`w-12 h-12 text-muted`}),_(`span`,Fe,w(t.$t(`views.plugins.no_plugins`)),1)])):(f(),x(`div`,{key:`content`,class:`grid w-full gap-2`,style:b({gridTemplateColumns:`repeat(auto-fill, minmax(${y(m)?`100%`:`450px`}, 1fr))`})},[(f(!0),x(u,null,s(y(P),(e,t)=>(f(),d(j,{key:t,plugin:e},null,8,[`plugin`]))),128))],4))]),_:1}),(`hasPermission`in t?t.hasPermission:y(V))(void 0,`admin`)?(f(),d(R,{key:1,"tooltip-props":{value:t.$t(`views.plugins.search_plugins`)},"button-props":{class:`text-white`},icon:y(q),"icon-props":{width:`30px`,height:`30px`},onClick:L},null,8,[`tooltip-props`,`icon`])):a(``,!0)])}}});export{Ie as default};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/VersionsHandler-XIP-8qdF.js","assets/vendor-cameraui-D-WYtlxb.js","assets/rolldown-runtime-DAXXjFlN.js","assets/vendor-CUsAwmr-.js","assets/api-CLcqLYO9.js","assets/vendor-core-CWeZebhd.js","assets/api-Dbhyyb4d.css","assets/useSharedComposables-CzkF-tst.js","assets/ui-DSOnsqS6.js","assets/vendor-primevue-01WhBsPb.js","assets/plugins-BWlFg8TN.js","assets/useLogsSocket-R2SaD_bg.js","assets/_plugin-vue_export-helper-BDNMzG2s.js","assets/vendor-xterm-BRN-hOYD.js","assets/vendor-xterm-BrP-ENHg.css","assets/useLogsSocket-DZ93-C8L.css","assets/vendor-markdown-e7bfD1d7.js","assets/vendor-markdown-DtOhvyRx.css","assets/server-B3_iwGek.js"])))=>i.map(i=>d[i]);
2
+ import{Hn as e,Kn as t,fi as n,lt as r,tt as i}from"./vendor-cameraui-D-WYtlxb.js";import{$t as a,At as o,Dn as s,Gt as c,Hn as l,Kt as u,Qt as d,Tn as f,Un as p,Xn as m,Xt as h,Yn as g,Zt as _,an as v,cr as y,dr as b,en as x,er as S,fn as C,fr as w,lr as T,sn as E,zn as D,zt as O}from"./vendor-CUsAwmr-.js";import{t as k}from"./_plugin-vue_export-helper-BDNMzG2s.js";import{a as A,t as j}from"./useSharedComposables-CzkF-tst.js";import{t as M}from"./close-CEZvWyN1.js";import{F as N,J as P,L as F,P as I,R as L,U as R,s as ee}from"./vendor-primevue-01WhBsPb.js";import{n as te,r as z,t as ne}from"./github-xiZ7fokg.js";import{t as B}from"./CuiFloatingButton-B4byvsOs.js";import{t as V}from"./hasPermission-BHM3xbrG.js";import{n as H,t as U}from"./useCuiDialog-C-2PMjxH.js";import{t as W}from"./CuiTopbarSlot-BlbZqDDn.js";import{t as G}from"./plugins-BWlFg8TN.js";import{t as K}from"./back-filled-DVeRsKmt.js";import{t as q}from"./plus-CuWXW2I0.js";import{t as J}from"./search-Bl5hzTQq.js";import{n as Y,t as X}from"./CuiPluginCard-DpllCJXe.js";var Z={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function Q(e,t){return f(),x(`svg`,Z,[...t[0]||=[_(`g`,{fill:`none`},[_(`rect`,{width:`16.5`,height:`16.5`,x:`3.75`,y:`3.75`,stroke:`currentColor`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"stroke-width":`1.5`,rx:`2`}),_(`path`,{fill:`currentColor`,d:`M12 9a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v11.25h-4z`})],-1)]])}var re=m({name:`proicons-npm`,render:Q}),$={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function ie(e,t){return f(),x(`svg`,$,[...t[0]||=[_(`path`,{fill:`currentColor`,d:`M2 10.96a.985.985 0 0 1-.37-1.37L3.13 7c.11-.2.28-.34.47-.42l7.83-4.4c.16-.12.36-.18.57-.18s.41.06.57.18l7.9 4.44c.19.1.35.26.44.46l1.45 2.52c.28.48.11 1.09-.36 1.36l-1 .58v4.96c0 .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-5.54c-.3.17-.68.18-1 0m10-6.81v6.7l5.96-3.35zM5 15.91l6 3.38v-6.71L5 9.21zm14 0v-3.22l-5 2.9c-.33.18-.7.17-1 .01v3.69zm-5.15-2.55l6.28-3.63l-.58-1.01l-6.28 3.63z`},null,-1)]])}var ae=m({name:`mdi-package-variant`,render:ie}),oe={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function se(e,t){return f(),x(`svg`,oe,[...t[0]||=[_(`path`,{fill:`currentColor`,d:`M13 15.6c.3.2.7.2 1 0l5-2.9v.3c.7 0 1.4.1 2 .4v-1.8l1-.6c.5-.3.6-.9.4-1.4l-1.5-2.5c-.1-.2-.2-.4-.4-.5l-7.9-4.4c-.2-.1-.4-.2-.6-.2s-.4.1-.6.2L3.6 6.6c-.2.1-.4.2-.5.4L1.6 9.6c-.3.5-.1 1.1.4 1.4c.3.2.7.2 1 0v5.5c0 .4.2.7.5.9l7.9 4.4c.2.1.4.2.6.2s.4-.1.6-.2l.9-.5c-.3-.6-.4-1.3-.5-2m-2 0l-6-3.4V9.2l6 3.4zm9.1-9.6l-6.3 3.6l-.6-1l6.3-3.6zM12 10.8V4.2l6 3.3zm8 4.2v3h3v2h-3v3h-2v-3h-3v-2h3v-3z`},null,-1)]])}var ce=m({name:`mdi-package-variant-plus`,render:se}),le={class:`cui-label`},ue={class:`flex flex-row items-center justify-center w-full mt-8`},de={key:2,class:`text-center py-10`},fe={class:`text-muted mb-2`},pe={class:`text-muted`},me={key:3,class:`w-full`},he={key:4,class:`w-full plugin-list`},ge={class:`plugin-info`},_e={class:`flex items-center`},ve={class:`font-medium text-base`},ye={class:`text-sm text-muted mb-2`},be={class:`plugin-description`},xe={class:`plugin-meta`},Se={class:`plugin-meta-item`},Ce={class:`meta-label font-semibold`},we={class:`meta-value`},Te={class:`plugin-meta-item`},Ee={class:`meta-label font-semibold`},De={class:`meta-value`},Oe={class:`plugin-actions`},ke={class:`flex gap-2 mb-2`},Ae=k(E({__name:`PluginSearch`,setup(m,{expose:b}){let E=H(()=>o(()=>import(`./VersionsHandler-XIP-8qdF.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]))),O=new G,k=U(),{t:A}=n(),j=C(`dialogRefProps`),N=S(``),I=S({}),z=S([]),{data:B,isBusy:V,refetch:W}=O.searchPluginsQuery(I,{page:1,pageSize:-1}),{data:K,isBusy:q,refetch:J}=O.getPluginsProgressQuery({page:1,pageSize:-1}),Y=h(()=>V.value||q.value),X=h(()=>!!(j.loading?.value||Y.value));function Z(e){return K.value?.result.some(t=>t.pluginName===e)}function Q(e){e?.preventDefault(),I.value.pluginname=N.value??``}function $(){N.value=``,I.value={},Q()}function ie(){W(),J()}function oe(e){k.openComponentDialog(E,{data:{title:A(`components.dialog.title.install`),loading:X,contentProps:{target:y(e),installVersion:`latest`,isNewPlugin:!0}}})}return D(B,e=>{e?.result&&(z.value=e.result.filter(e=>!e.installPath))},{immediate:!0,deep:!0}),b({isLoading:X}),(n,o)=>{let m=i,h=M,b=e,S=F,C=L,E=te,D=t,O=ee,k=R,A=ce,j=r,I=ae,B=ne,V=re,H=P;return f(),x(`div`,null,[_(`form`,{onSubmit:c(Q,[`prevent`])},[_(`label`,le,w(n.$t(`components.form.label.name`)),1),v(C,null,{default:l(()=>[v(m,{modelValue:y(N),"onUpdate:modelValue":o[0]||=e=>g(N)?N.value=e:null,modelModifiers:{trim:!0},loading:y(Y),placeholder:`camera-ui-`,type:`text`},null,8,[`modelValue`,`loading`]),v(S,null,{default:l(()=>[v(b,{text:``,rounded:``,severity:`secondary`,class:`cui-icon-md`,onClick:$},{icon:l(()=>[v(h,{width:`100%`,height:`100%`})]),_:1})]),_:1})]),_:1})],32),_(`div`,ue,[_(`h3`,null,w(n.$t(`components.plugin_search.plugins`)),1),p((f(),d(b,{text:``,rounded:``,severity:`secondary`,class:`cui-icon-md ml-auto`,onClick:ie},{icon:l(()=>[v(E,{width:`100%`,height:`100%`})]),_:1})),[[H,{value:n.$t(`components.plugin_search.refresh`)}]]),v(D,{size:`small`,class:`ml-2 rounded-full`,value:String(y(z).length)},null,8,[`value`])]),y(Y)?(f(),d(O,{key:0,mode:`indeterminate`,class:`my-3 !h-[1px]`})):(f(),d(k,{key:1,class:`m-0 py-3`})),!y(Y)&&!y(z).length?(f(),x(`div`,de,[_(`div`,fe,[v(A,{class:`w-12 h-12 mx-auto opacity-30`})]),_(`p`,pe,w(n.$t(`views.plugins.no_plugins`)),1)])):y(Y)?(f(),x(`div`,me,[(f(),x(u,null,s(6,e=>v(j,{key:e,class:`mb-2`,height:`132px`})),64))])):(f(),x(`div`,he,[(f(!0),x(u,null,s(y(z),(e,t)=>p((f(),x(`div`,{key:t,class:T([`plugin-list-item shadow-sm transition-default card-background custom-scrollbar`,{"opacity-50 in-progress":Z(e.pluginName)}])},[_(`div`,ge,[_(`div`,_e,[v(I,{class:`w-5 h-5 text-primary mr-2`}),_(`h4`,ve,w(e.displayName),1)]),_(`div`,ye,w(e.pluginName),1),_(`p`,be,w(e.description),1),_(`div`,xe,[_(`div`,Se,[_(`span`,Ce,w(n.$t(`components.plugin_card.version`))+`:`,1),_(`span`,we,w(e.latestVersion),1)]),_(`div`,Te,[_(`span`,Ee,w(n.$t(`components.plugin_card.author`))+`:`,1),_(`span`,De,w(e.author),1)])])]),_(`div`,Oe,[_(`div`,ke,[e.links?.homepage?p((f(),d(b,{key:0,text:``,rounded:``,severity:`secondary`,class:`cui-icon-md`,onClick:t=>n.$router.absUrl(e.links.homepage,!0)},{icon:l(()=>[v(B,{width:`100%`,height:`100%`})]),_:1},8,[`onClick`])),[[H,{value:`Github`}]]):a(``,!0),e.links?.npm?p((f(),d(b,{key:1,text:``,rounded:``,severity:`secondary`,class:`cui-icon-md`,onClick:t=>n.$router.absUrl(e.links.npm,!0)},{icon:l(()=>[v(V,{width:`100%`,height:`100%`})]),_:1},8,[`onClick`])),[[H,{value:`NPM`}]]):a(``,!0)]),v(b,{class:`cui-button-medium`,label:n.$t(`components.form.button.install`),disabled:Z(e.pluginName),onClick:t=>oe(e)},null,8,[`label`,`disabled`,`onClick`])])],2)),[[H,{value:Z(e.pluginName)?n.$t(`components.plugin_search.in_progress`):void 0}]])),128))]))])}}}),[[`__scopeId`,`data-v-e84cbdf9`]]),je={class:`flex flex-col`},Me={key:0,class:`page-title`},Ne={class:`flex gap-2 mb-4`},Pe={key:1,class:`flex flex-1 min-h-0 flex-col items-center justify-center w-full gap-4`},Fe={class:`text-muted text-sm`},Ie=E({__name:`Plugins`,setup(t){let o=new G,c=U(),{t:p}=n(),{smBreakpoint:m}=j(),{width:C,height:T}=A(),{data:E,isBusy:D}=o.getPluginsQuery({page:1,pageSize:-1}),k=S(``),M=h(()=>D.value),P=h(()=>{let e=E.value?.result??[],t=k.value.toLowerCase().trim();return t?e.filter(e=>e.pluginName.toLowerCase().includes(t)||e.displayName?.toLowerCase().includes(t)):e}),F=h(()=>(m.value?1:Math.max(1,Math.floor(C.value/450)))*Math.max(1,Math.ceil(T.value/(Y.HEIGHT+8))));function L(){c.openComponentDialog(Ae,{data:{title:p(`components.dialog.title.search_plugin`),contentProps:{},hideConfirmButton:!0,fullscreen:!0}})}return(t,n)=>{let o=K,c=e,h=W,S=J,C=I,T=i,E=N,D=r,A=z,j=X,R=B;return f(),x(`div`,je,[y(m)?a(``,!0):(f(),x(`h1`,Me,w(t.$t(`views.${String(t.$route.name).toLowerCase()}.title`)),1)),v(h,{position:`left`},{default:l(()=>[v(c,{severity:`secondary`,text:``,class:`cui-button p-2 text-color non-draggable-region`,onClick:n[0]||=e=>t.$router.push(`/menu`)},{icon:l(()=>[v(o,{class:`w-6 h-6`})]),_:1})]),_:1}),_(`div`,Ne,[v(E,{class:`flex-1`},{default:l(()=>[v(C,null,{default:l(()=>[v(S,{class:`w-4 h-4`})]),_:1}),v(T,{modelValue:y(k),"onUpdate:modelValue":n[1]||=e=>g(k)?k.value=e:null,placeholder:y(p)(`views.plugins.search`),class:`w-full`},null,8,[`modelValue`,`placeholder`])]),_:1})]),v(O,{name:`fade-2`,mode:`out-in`},{default:l(()=>[y(M)?(f(),x(`div`,{key:`loading`,class:`grid w-full gap-2`,style:b({gridTemplateColumns:`repeat(auto-fill, minmax(${y(m)?`100%`:`450px`}, 1fr))`})},[(f(!0),x(u,null,s(y(F),e=>(f(),d(D,{key:e,height:`${y(Y).HEIGHT}px`,class:`cui-card`},null,8,[`height`]))),128))],4)):!y(P).length||!(`hasPermission`in t?t.hasPermission:y(V))(void 0,`admin`)?(f(),x(`div`,Pe,[v(A,{class:`w-12 h-12 text-muted`}),_(`span`,Fe,w(t.$t(`views.plugins.no_plugins`)),1)])):(f(),x(`div`,{key:`content`,class:`grid w-full gap-2`,style:b({gridTemplateColumns:`repeat(auto-fill, minmax(${y(m)?`100%`:`450px`}, 1fr))`})},[(f(!0),x(u,null,s(y(P),(e,t)=>(f(),d(j,{key:t,plugin:e},null,8,[`plugin`]))),128))],4))]),_:1}),(`hasPermission`in t?t.hasPermission:y(V))(void 0,`admin`)?(f(),d(R,{key:1,"tooltip-props":{value:t.$t(`views.plugins.search_plugins`)},"button-props":{class:`text-white`},icon:y(q),"icon-props":{width:`30px`,height:`30px`},onClick:L},null,8,[`tooltip-props`,`icon`])):a(``,!0)])}}});export{Ie as default};