@camera.ui/server 0.0.106 → 0.0.108
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.
- package/dist/interface/assets/{404-BAYYYl25.js → 404-CI9hgJ8F.js} +1 -1
- package/dist/interface/assets/{About-CF96M6HY.js → About-BSXaNKcn.js} +1 -1
- package/dist/interface/assets/{Adminpanel-DOaJyAyb.js → Adminpanel-DIrU1IPr.js} +1 -1
- package/dist/interface/assets/{Automation-CKXlldCc.js → Automation-B3PL1pEy.js} +2 -2
- package/dist/interface/assets/{Automations-Bly4du8g.js → Automations-tMa-Nd_9.js} +1 -1
- package/dist/interface/assets/{Camera-B_iqc3Zu.js → Camera-CB1MNjuK.js} +2 -2
- package/dist/interface/assets/{CameraConsole-DmkR-ATY.js → CameraConsole-D0Bc_ahp.js} +1 -1
- package/dist/interface/assets/{Cameras-CBJqTSnN.js → Cameras-AR-V60eV.js} +1 -1
- package/dist/interface/assets/{Camview-CF_Fa0E1.js → Camview-BCu_kFUZ.js} +1 -1
- package/dist/interface/assets/{Config-B10TESNa.js → Config-BAHiY9fl.js} +1 -1
- package/dist/interface/assets/{ConfigActionCameraControl-BWpRxipc.js → ConfigActionCameraControl-DTWPiJMZ.js} +1 -1
- package/dist/interface/assets/{ConfigActionDelay-NBOa8ulm.js → ConfigActionDelay-BGqK0k0C.js} +1 -1
- package/dist/interface/assets/{ConfigActionHttp-CpeMles1.js → ConfigActionHttp-DrDMHRfW.js} +1 -1
- package/dist/interface/assets/{ConfigActionImageInput-He5suR1p.js → ConfigActionImageInput-C1quCpKJ.js} +1 -1
- package/dist/interface/assets/{ConfigActionNotification-BrYGUn_B.js → ConfigActionNotification-B5Xz7W9W.js} +1 -1
- package/dist/interface/assets/{ConfigActionOutput-Dy32ypu0.js → ConfigActionOutput-ZW8D0Vun.js} +1 -1
- package/dist/interface/assets/{ConfigActionPlugin-DZgDVj2J.js → ConfigActionPlugin-DIlzf1ge.js} +1 -1
- package/dist/interface/assets/{ConfigActionSensor-B9aJwfb2.js → ConfigActionSensor-DXjTdDOs.js} +1 -1
- package/dist/interface/assets/{ConfigActionSnapshot-Bisnu1Va.js → ConfigActionSnapshot-BNOqZN6J.js} +1 -1
- package/dist/interface/assets/{ConfigActionVariable-BcQ-pUs-.js → ConfigActionVariable-C58fSa_D.js} +1 -1
- package/dist/interface/assets/{ConfigConditionIfElse-DKyGnLRO.js → ConfigConditionIfElse-BVnmrgs0.js} +1 -1
- package/dist/interface/assets/{ConfigConditionSensorState-mKh6F8lJ.js → ConfigConditionSensorState-BS0x-e0R.js} +1 -1
- package/dist/interface/assets/{ConfigConditionSwitch-CSZTkyIE.js → ConfigConditionSwitch-DUutKE77.js} +1 -1
- package/dist/interface/assets/{ConfigConditionTime-C8_R0ITE.js → ConfigConditionTime-BlW5hBOp.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerDetection-a2NV6Ke1.js → ConfigTriggerDetection-DyTF9dpf.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerGeofence-DnS6ONJC.js → ConfigTriggerGeofence-Cx3ACtM2.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerManual-CrKYDCVp.js → ConfigTriggerManual-ybm3t7qu.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerSchedule-Dc6k-hJ2.js → ConfigTriggerSchedule-CJOvGrwG.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerSensor-lmBAbpAF.js → ConfigTriggerSensor-BpR5wRd7.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerSystem-BibBSkft.js → ConfigTriggerSystem-DzLNeRld.js} +1 -1
- package/dist/interface/assets/{ConfigTriggerWebhook-CcMI4u82.js → ConfigTriggerWebhook-CxhiJ5Mr.js} +1 -1
- package/dist/interface/assets/{Console-CiqXek8C.js → Console-BMyweZbs.js} +1 -1
- package/dist/interface/assets/{CuiActionButton-DmV0jhr5.js → CuiActionButton-DSPQ87mF.js} +1 -1
- package/dist/interface/assets/{CuiAvatar-DMZqcLoE.js → CuiAvatar-C_bXabf8.js} +1 -1
- package/dist/interface/assets/{CuiBBoxPlayground-BakfNGCT.js → CuiBBoxPlayground-B8GmrOcS.js} +1 -1
- package/dist/interface/assets/CuiBottomSheet-Bd-iBeRi.js +1 -0
- package/dist/interface/assets/{CuiBottomSheet-CkJEMXQy.js → CuiBottomSheet-CCAk8aAV.js} +1 -1
- package/dist/interface/assets/{CuiCameraCard-jWlEnJAQ.js → CuiCameraCard-bsvbHK2Q.js} +1 -1
- package/dist/interface/assets/{CuiCameraPipCard-ClOJg9E-.js → CuiCameraPipCard-45ynFm-u.js} +1 -1
- package/dist/interface/assets/{CuiCameraRecordings-BhM5UivW.js → CuiCameraRecordings-CGvBIMC4.js} +1 -1
- package/dist/interface/assets/{CuiCameraShares-CktUxrlR.js → CuiCameraShares-BWWAhQIJ.js} +1 -1
- package/dist/interface/assets/{CuiCameraSnapshot-BE1xeM4q.js → CuiCameraSnapshot-8II_Se2f.js} +1 -1
- package/dist/interface/assets/{CuiCameraTable-D87v9LhC.js → CuiCameraTable-BxHzqHDc.js} +1 -1
- package/dist/interface/assets/{CuiDataTable-C5toN4L-.js → CuiDataTable-DkyuVvat.js} +1 -1
- package/dist/interface/assets/{CuiFloatingButton-DvdpuxUr.js → CuiFloatingButton-BkABAT2D.js} +1 -1
- package/dist/interface/assets/{CuiImage-C-DSHyf2.js → CuiImage-kDoN6Lbk.js} +1 -1
- package/dist/interface/assets/{CuiMenu-CwumqO_L.js → CuiMenu-BvXvtuWu.js} +1 -1
- package/dist/interface/assets/{CuiPluginCard-DIqaLKcf.js → CuiPluginCard-cUX8AU4v.js} +2 -2
- package/dist/interface/assets/{CuiPluginOAuthButton-CBTeQEb9.js → CuiPluginOAuthButton-CrsASrCI.js} +2 -2
- package/dist/interface/assets/{CuiQRCode-ChJuYXmm.js → CuiQRCode-BcZt2asu.js} +1 -1
- package/dist/interface/assets/{CuiRecordingsGrid-D1mYCCcE.js → CuiRecordingsGrid-CGdSlCOD.js} +1 -1
- package/dist/interface/assets/{CuiSchema-BIGweVJy.js → CuiSchema-B8dMgXmV.js} +1 -1
- package/dist/interface/assets/{CuiTopNavbarItem-FXY4aBoC.js → CuiTopNavbarItem-BobFp8Wk.js} +1 -1
- package/dist/interface/assets/{CuiTopbarSlot-DCeAqmkQ.js → CuiTopbarSlot-CqQCfN63.js} +1 -1
- package/dist/interface/assets/{Faces-B6JlzZ5i.js → Faces-C2y56m3u.js} +1 -1
- package/dist/interface/assets/{FirstSteps-CH1iro2p.js → FirstSteps-CY8OrJob.js} +1 -1
- package/dist/interface/assets/{Instances-BNNA4Z6H.js → Instances-BAxroOZc.js} +1 -1
- package/dist/interface/assets/{Logs-BkF4EFHV.js → Logs-CKFT_9EN.js} +1 -1
- package/dist/interface/assets/{Menu-DYejNhsi.js → Menu-B34BAqOr.js} +1 -1
- package/dist/interface/assets/{OAuthDeviceFlow-BVeSCJiJ.js → OAuthDeviceFlow-DVsb3ChM.js} +1 -1
- package/dist/interface/assets/{Plugin-zvdoGW2r.js → Plugin-CS9xFAuH.js} +1 -1
- package/dist/interface/assets/{PluginConsole-CQA2A5Wc.js → PluginConsole-C9SQD6RL.js} +1 -1
- package/dist/interface/assets/{PluginSchema-xof7AYIK.js → PluginSchema-DZTiTZbE.js} +1 -1
- package/dist/interface/assets/{Plugins-DAwDjr_I.js → Plugins-B91V9GJo.js} +2 -2
- package/dist/interface/assets/{Recordings-D7UhoAKi.js → Recordings-COii0fbS.js} +1 -1
- package/dist/interface/assets/{Settings-CnU98cZv.js → Settings-DH8yWCAa.js} +1 -1
- package/dist/interface/assets/{SettingsAccount-BVIztMFL.js → SettingsAccount-C7B5Uspx.js} +1 -1
- package/dist/interface/assets/SettingsAccount-CoKSF1fo.js +1 -0
- package/dist/interface/assets/{SettingsAppearance-CW8mbN9Q.js → SettingsAppearance-BKYInlYU.js} +1 -1
- package/dist/interface/assets/SettingsAppearance-D6TpuCxy.js +1 -0
- package/dist/interface/assets/{SettingsBackup-DDNiOgvA.js → SettingsBackup-ydhPrp9H.js} +1 -1
- package/dist/interface/assets/{SettingsNotifications-DLMT1o4I.js → SettingsNotifications-BpArJz6A.js} +1 -1
- package/dist/interface/assets/{SettingsRecordings-DirvHeKB.js → SettingsRecordings-DbzIkaUT.js} +1 -1
- package/dist/interface/assets/{SettingsRemote-CKWsHa5R.js → SettingsRemote-MCtWay-m.js} +1 -1
- package/dist/interface/assets/{SettingsSystem-D9ZC11Mh.js → SettingsSystem-CFGxgxj0.js} +2 -2
- package/dist/interface/assets/{SettingsUsers-pcJeXZKp.js → SettingsUsers-CLxyW-Lh.js} +1 -1
- package/dist/interface/assets/{Terminal-Cu3uC8EZ.js → Terminal-D2Wtmx8B.js} +1 -1
- package/dist/interface/assets/{VariableInput-Bwu9vChK.js → VariableInput-BHsqhveo.js} +1 -1
- package/dist/interface/assets/{VariableSuggestions-l2MLjZre.js → VariableSuggestions-DYiMrayX.js} +1 -1
- package/dist/interface/assets/{VersionsHandler-BTxJHwdS.js → VersionsHandler-CWdiwGCJ.js} +1 -1
- package/dist/interface/assets/{Workers-BsEDKzmG.js → Workers-BhBrTtIk.js} +1 -1
- package/dist/interface/assets/api-4uwBzwAb.js +2 -0
- package/dist/interface/assets/{api-C3OjKngj.js → api-CAElWxuE.js} +1 -1
- package/dist/interface/assets/{auth-C5IUhkWS.js → auth-ye1pNein.js} +1 -1
- package/dist/interface/assets/{automations-DD8bCSnT.js → automations-B_jkpdMj.js} +1 -1
- package/dist/interface/assets/{automations-DusabINi.js → automations-Boelr57C.js} +1 -1
- package/dist/interface/assets/{backup-oG81xIPA.js → backup-DJU5eZ52.js} +1 -1
- package/dist/interface/assets/{cameras-CmFEgULx.js → cameras-BlgUDUKl.js} +1 -1
- package/dist/interface/assets/{cameras.schema-iBaEWm0Y.js → cameras.schema-xsUy4_fS.js} +1 -1
- package/dist/interface/assets/cloudHandoff-DFMyt3WO.js +1 -0
- package/dist/interface/assets/{deviceId-opaLeE0R.js → deviceId-DTKBHD_o.js} +1 -1
- package/dist/interface/assets/{hasPermission-ChIspc-L.js → hasPermission-C172254-.js} +1 -1
- package/dist/interface/assets/{instances-ykXfoA2u.js → instances-B8-XTfm0.js} +1 -1
- package/dist/interface/assets/{locale-BliTvqss.js → locale-urtOOfFa.js} +1 -1
- package/dist/interface/assets/{main-DiUHKjqR.js → main-B7dX4NjI.js} +2 -2
- package/dist/interface/assets/{notifications-BQyPgfnE.js → notifications-CrLi6Cr7.js} +1 -1
- package/dist/interface/assets/{plugins-BFzZB-8S.js → plugins-JXK_PGzM.js} +1 -1
- package/dist/interface/assets/{round-restart-alt-C4TFl1Rk.js → round-restart-alt-BgYnebrR.js} +1 -1
- package/dist/interface/assets/{router-BzaHrqQ7.js → router-8PyglZz5.js} +2 -2
- package/dist/interface/assets/{routerState-UESa7YsN.js → routerState-DZsVS_14.js} +1 -1
- package/dist/interface/assets/{server-7nJbrqvt.js → server-itwpugcG.js} +1 -1
- package/dist/interface/assets/{shares-BokQ1O4D.js → shares-Ci3Asqv4.js} +1 -1
- package/dist/interface/assets/{theme-iSxYm9Ao.js → theme-L7YrC0KT.js} +1 -1
- package/dist/interface/assets/{types-CVp3a4-E.js → types-D8H6g3Ju.js} +1 -1
- package/dist/interface/assets/{ui-CVUMjabl.js → ui-C1XBm7M4.js} +1 -1
- package/dist/interface/assets/{useBiometricCredentials-BTSuyr45.js → useBiometricCredentials-FEOZhKdF.js} +1 -1
- package/dist/interface/assets/{useCameraOptions-CuIFFMce.js → useCameraOptions-KXHLlQyb.js} +1 -1
- package/dist/interface/assets/{useCuiCameraDrawer-DHbL2uYT.js → useCuiCameraDrawer-D5Tm5Oym.js} +1 -1
- package/dist/interface/assets/{useCuiDialog-DmnaFxId.js → useCuiDialog-CWtSo_nE.js} +1 -1
- package/dist/interface/assets/{useFileDownload-D7uRiFqP.js → useFileDownload-DjadYKPC.js} +1 -1
- package/dist/interface/assets/{useLogsSocket-CA2uq1kZ.js → useLogsSocket-C4GKRyoC.js} +1 -1
- package/dist/interface/assets/{useSharedComposables-Dsn2uiyW.js → useSharedComposables-D_jZlYMO.js} +1 -1
- package/dist/interface/assets/{useStreamStatus-Dun63PvC.js → useStreamStatus-DCS4WeNe.js} +1 -1
- package/dist/interface/assets/{users.schema-COvF8XP0.js → users.schema-_GRn7DCi.js} +1 -1
- package/dist/interface/assets/{vendor-cameraui-B1JU4jwS.js → vendor-cameraui-Co5kJL9z.js} +4 -4
- package/dist/interface/assets/{vendor-core-BxjZmyZH.js → vendor-core-B_NNTGHw.js} +1 -1
- package/dist/interface/assets/{vendor-primevue-gmNTz6qq.js → vendor-primevue-BOGXPDZn.js} +1 -1
- package/dist/interface/assets/{view-grid-C3peaC6C.js → view-grid-D-4rB6Pd.js} +1 -1
- package/dist/interface/index.html +40 -40
- package/dist/interface/sw.js +1 -1
- package/dist/server/package.json +2 -2
- package/dist/server/requirements.txt +1 -1
- package/package.json +2 -2
- package/dist/interface/assets/CuiBottomSheet-BJl4lLzC.js +0 -1
- package/dist/interface/assets/SettingsAccount-BmuJLRLH.js +0 -1
- package/dist/interface/assets/SettingsAppearance-CiVRn_RM.js +0 -1
- package/dist/interface/assets/api-CFbWrm1k.js +0 -2
- package/dist/interface/assets/cloudHandoff-BzwN18OZ.js +0 -1
- /package/dist/interface/assets/{error-256-DLKVOU2S.png → logo-512-DLKVOU2S.png} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{At as e,G as t,I as n,Oi as r,Ri as i}from"./vendor-cameraui-B1JU4jwS.js";import{C as a,F as o,M as s,N as c,O as l,T as u,f as d,x as f}from"./api-CFbWrm1k.js";import{$n as p,F as m,I as h,Tn as g,Xn as _,Xt as v,Zt as y,en as b,er as x,sr as S,z as C}from"./vendor-zxCOTbSj.js";import{d as w,l as T}from"./vendor-core-BxjZmyZH.js";import{t as E}from"./hasPermission-ChIspc-L.js";import{t as ee}from"./useCuiDialog-DmnaFxId.js";var D={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function O(e,t){return g(),b(`svg`,D,[...t[0]||=[y(`path`,{fill:`currentColor`,d:`M20.916 9.564a1 1 0 0 0-.513-1.316L7.328 2.492c-.995-.438-2.22.051-2.645 1.042l-2.21 5.154a2 2 0 0 0 1.052 2.624L9.563 13.9L8.323 17H4v-3H2v8h2v-3h4.323c.823 0 1.552-.494 1.856-1.258l1.222-3.054l5.205 2.23a1 1 0 0 0 1.31-.517l.312-.71l1.701.68l2-5l-1.536-.613zm-4.434 5.126L4.313 9.475l2.208-5.152l12.162 5.354z`},null,-1)]])}var k=_({name:`bx-cctv`,render:O}),A={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function j(e,t){return g(),b(`svg`,A,[...t[0]||=[y(`path`,{fill:`currentColor`,d:`M20 3H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2m-5 5h-2V6h2zm4 0h-2V6h2zm1 5H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2m-5 5h-2v-2h2zm4 0h-2v-2h2z`},null,-1)]])}var M=_({name:`bxs-server`,render:j});async function N(e){return(await s.get(`/instances`,{signal:e})).data}async function P(e){return(await s.post(`/instances`,e)).data}async function F({id:e,data:t}){return(await s.put(`/instances/${e}`,t)).data}async function I(e){await s.delete(`/instances/${e}`)}async function L(e){return(await s.patch(`/instances/${e}/favorite`)).data}async function R(e){return(await s.post(`/instances/${e}/login`)).data}async function z(e,t){return(await s.get(`/instances/${e}/status`,{signal:t})).data}var B=class{_queryClient=C();toast=a();t=u.global.t;listQuery(){return f({queryKey:[`instances`],queryFn:({signal:e})=>N(e)})}statusQueries(e){return h({queries:v(()=>S(e).map(e=>({queryKey:[`instances`,e.id,`status`],queryFn:({signal:t})=>z(e.id,t),refetchInterval:15e3,retry:!1})))})}createMutation(){return m({mutationFn:P,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`instances`]}),this.toast.add({severity:`success`,detail:this.t(`views.settings.instances.added`),life:3e3})}})}updateMutation(){return m({mutationFn:F,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`instances`]}),this.toast.add({severity:`success`,detail:this.t(`views.settings.instances.updated`),life:3e3})}})}deleteMutation(){return m({mutationFn:async e=>{await I(e),await this._queryClient.cancelQueries({queryKey:[`instances`,e,`status`]}),this._queryClient.removeQueries({queryKey:[`instances`,e,`status`]})},onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`instances`]}),this.toast.add({severity:`success`,detail:this.t(`views.settings.instances.removed`),life:3e3})}})}toggleFavoriteMutation(){return m({mutationFn:L,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`instances`]})}})}loginMutation(){return m({mutationFn:R,onError:()=>{}})}},V=3e4,H=5e3,U=`__home__`,W=new Set([`localhost`,`127.0.0.1`,`::1`]),G=l(`Instances`);async function K(e,t){try{let n=AbortSignal.timeout(H),r=t?AbortSignal.any([n,t]):n,i=await fetch(`${e}/api/health`,{signal:r});return G.debug(`[probe]`,`${e} → ${i.ok?`OK`:`HTTP ${i.status}`}`),i.ok}catch(t){let n=t instanceof Error?t.message:String(t);return G.debug(`[probe]`,`${e} → FAIL`,n),!1}}function q(e){return{access:e.access_token,accessExpiresAt:e.access_token_expires_at,refresh:e.refresh_token,refreshExpiresAt:e.refresh_token_expires_at}}function te(e,t){return{_id:t?._id??``,username:t?.username??``,email:t?.email,role:t?.role??``,firstLogin:t?.firstLogin,avatar:t?.avatar,access_token:e.access,refresh_token:e.refresh??``,token_type:`Bearer`,access_token_expires_at:e.accessExpiresAt??0,refresh_token_expires_at:e.refreshExpiresAt??0,internalAddresses:[],externalAddresses:[]}}var J=w(`instances`,()=>{let s=d(),l=T(),f=a(),m=ee(),h=C(),{t:g}=u.global,_=r(`instanceTokens`,{}),y=r(`activeInstanceId`,null),b=x(!1),S=x(null),w=x(0),D=0,O=x(null),k=x([]),A=i(`redirectInfo`,null,{serializer:{read:e=>e?JSON.parse(e):null,write:e=>JSON.stringify(e)}}),j=v(()=>y.value===null),M=v(()=>y.value===null?null:k.value.find(e=>e.id===y.value)?.url??null);async function z(){try{if(!E(void 0,`admin`))return;let e=await N();k.value=e.instances,O.value=e.homeId,G.debug(`[fetch]`,`loaded ${e.instances.length} instances`,{homeId:e.homeId})}catch(e){G.warn(`[fetch]`,`failed`,e)}}let B=v(()=>{let e=O.value;return k.value.filter(t=>!(e&&t.remoteHomeId&&t.remoteHomeId===e)).map(e=>{let t=_.value[e.id];return{id:e.id,name:e.name,url:e.url,hasCredentials:!!e.credentials,favorite:e.favorite??!0,userData:t?.userData??null,lastConnectedAt:t?.lastConnectedAt??null,isHome:!1}})});function H(){let e=_.value[U],t=y.value===null?c().target.value?.endpoint.url??e?.url??window.location.origin:e?.url??window.location.origin;return{id:`home`,name:g(`navigation.home`),url:t,hasCredentials:!1,favorite:!1,userData:e?.userData??null,lastConnectedAt:e?.lastConnectedAt??null,isHome:!0}}let J=v(()=>{if(y.value!==null){let e=B.value.find(e=>e.id===y.value);if(e)return e}return H()}),Y=v(()=>B.value.filter(e=>e.favorite)),X=v(()=>Y.value.length>0||y.value!==null||A.value!==null);function Z(e){return k.value.find(t=>t.id===e)?.favorite??!0}async function ne(e){let{favorite:t}=await L(e),n=k.value.find(t=>t.id===e);n&&(n.favorite=t)}async function re(e){let t=await P(e);return k.value=[...k.value,t],t}async function ie(e){await I(e),k.value=k.value.filter(t=>t.id!==e),delete _.value[e]}async function ae(e,t){let n=await F({id:e,data:t}),r=k.value.findIndex(t=>t.id===e);r!==-1&&(k.value[r]=n)}async function oe(e,t){let n=k.value.find(t=>t.id===e);return n?K(n.url,t):!1}function Q(){let e=c().target.value;if(!e?.tokens.access){G.debug(`[save-tokens]`,`skipped — no live access token`);return}let t=y.value??U;_.value[t]={userData:te(e.tokens,s.user??void 0),lastConnectedAt:Date.now(),url:e.endpoint.url},G.debug(`[save-tokens]`,`slot=${t} url=${e.endpoint.url}`)}function se(){if(y.value===null){o.value=null,G.debug(`[restore-override]`,`no active instance — home target`);return}let e=_.value[y.value],t=e?.url??e?.userData?.internalAddresses?.[0]??e?.userData?.externalAddresses?.[0]??null;o.value=t,G.debug(`[restore-override]`,`activeId=${y.value} → ${t??`no cached url`}`)}async function ce(r){if(b.value){G.warn(`[switch]`,`ignored — another switch is already in progress`);return}let i=r===null?H():B.value.find(e=>e.id===r)??H();if(r!==null&&$(i.url)&&!await ue(i.name)){G.debug(`[switch]`,`URL handoff declined by user`);return}let a=++D;b.value=!0,S.value=i.name,G.debug(`[switch]`,`START targetId=${r??`home`} gen=${a}`),G.debug(`[switch]`,`target resolved — name="${i.name}" url=${i.url} hasCreds=${i.hasCredentials}`);try{if(r!==null){let e=await K(i.url);if(a!==D){G.debug(`[switch]`,`aborted after probe — newer gen=${D}`);return}if(!e){G.warn(`[switch]`,`target unreachable — ${i.url}`),f.add({severity:`warn`,detail:g(`instances.unreachable`,{name:i.name}),life:3e3});return}}let u=null;if(r!==null&&i.hasCredentials)try{u=await R(r),G.debug(`[switch]`,`backend relay login OK`)}catch(e){G.warn(`[switch]`,`backend relay login FAILED — will try cached tokens`,e)}if(a!==D){G.debug(`[switch]`,`aborted after relay-login — newer gen=${D}`);return}Q();let d=r??U,p=u?q(u):le(d);if(G.debug(`[switch]`,`tokens source: ${u?`fresh`:p?`cached`:`none`} (slot=${d})`),r!==null&&$(i.url)){G.debug(`[switch]`,`URL handoff required — leaving SPA`),await de(i,u);return}let m=c();if(m.reset(),G.debug(`[switch]`,`kernel RESET`),e(),t(),n(),h.clear(),G.debug(`[switch]`,`vue-query cleared`),y.value=r,o.value=r===null?null:i.url,G.debug(`[switch]`,`activeId=${r} instanceOverride=${o.value??`null`}`),p&&u&&(_.value[d]={userData:u,lastConnectedAt:Date.now(),url:i.url},s.user={_id:u._id,username:u.username,role:u.role,firstLogin:u.firstLogin,avatar:u.avatar}),p){let e={url:i.url,mode:`direct-lan`,priority:0};G.debug(`[switch]`,`seedAndRetry → ${e.url}`),await Promise.race([m.seedAndRetry({endpoint:e,tokens:p},r??`home`),new Promise((e,t)=>setTimeout(()=>t(Error(`switch_timeout`)),V))])}else{G.warn(`[switch]`,`no tokens — boot + route to login`),m.boot(r??`home`),s.user=null,l.push(`/`);return}if(a!==D){G.debug(`[switch]`,`aborted after seedAndRetry — newer gen=${D}`);return}w.value++,G.debug(`[switch]`,`DONE gen=${a} → /home`),l.push(`/home`)}catch(e){(e instanceof Error?e.message:String(e))===`switch_timeout`?(G.error(`[switch]`,`TIMEOUT after ${V}ms`),f.add({severity:`error`,detail:g(`instances.switch_timeout`,{name:S.value??``}),life:3e3})):(G.error(`[switch]`,`failed`,e),f.add({severity:`error`,detail:e,life:3e3}))}finally{a===D&&(b.value=!1,S.value=null)}}function le(e){let t=_.value[e];return t?.userData?.access_token?q(t.userData):null}function $(e){try{let t=new URL(e),n=new URL(window.location.origin),r=n.protocol===`https:`&&t.protocol===`http:`,i=W.has(t.hostname)&&!W.has(n.hostname);return r||i}catch{return!1}}function ue(e){return G.warn(`[switch]`,`target "${e}" requires URL handoff — asking user confirmation`),new Promise(t=>{let n=!1,r=e=>{n||(n=!0,t(e))};m.openTextDialog({data:{title:g(`instances.insecure_handoff_title`),confirmText:g(`instances.insecure_handoff_confirm`),contentText:g(`instances.insecure_handoff_message`,{name:e}),confirmButtonProps:{severity:`danger`}},onConfirm:()=>r(!0),onCancel:()=>r(!1)})})}async function de(e,t){let n={_reset:!0,_sourceUrl:window.location.origin,_instanceName:e.name};t&&Object.assign(n,t);let r=encodeURIComponent(btoa(JSON.stringify(n))),i=`${e.url.split(`#`)[0]}#auth=${r}`;G.debug(`[url-handoff]`,`→ ${e.url} (with token=${t?`yes`:`no`})`),window.location.href=i}function fe(){_.value={},y.value=null,o.value=null,A.value=null,k.value=[],O.value=null,G.debug(`[reset]`,`store cleared`)}return{instances:B,activeInstance:J,activeId:y,activeUrl:M,isHomeActive:j,isMultiInstance:X,isSwitching:p(b),switchTargetName:p(S),switchKey:p(w),serverHomeId:O,redirectInfo:A,serverInstances:k,instanceTokens:_,favoriteInstances:Y,isFavorite:Z,toggleFavorite:ne,fetchInstances:z,addInstance:re,removeInstance:ie,updateInstance:ae,switchInstance:ce,probeInstance:oe,reset:fe,saveCurrentTokens:Q,restoreActiveOverride:se}});export{k as i,B as n,M as r,J as t};
|
|
1
|
+
import{At as e,G as t,I as n,Oi as r,Ri as i}from"./vendor-cameraui-Co5kJL9z.js";import{C as a,F as o,M as s,N as c,O as l,T as u,f as d,x as f}from"./api-4uwBzwAb.js";import{$n as p,F as m,I as h,Tn as g,Xn as _,Xt as v,Zt as y,en as b,er as x,sr as S,z as C}from"./vendor-zxCOTbSj.js";import{d as w,l as T}from"./vendor-core-B_NNTGHw.js";import{t as E}from"./hasPermission-C172254-.js";import{t as ee}from"./useCuiDialog-CWtSo_nE.js";var D={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function O(e,t){return g(),b(`svg`,D,[...t[0]||=[y(`path`,{fill:`currentColor`,d:`M20.916 9.564a1 1 0 0 0-.513-1.316L7.328 2.492c-.995-.438-2.22.051-2.645 1.042l-2.21 5.154a2 2 0 0 0 1.052 2.624L9.563 13.9L8.323 17H4v-3H2v8h2v-3h4.323c.823 0 1.552-.494 1.856-1.258l1.222-3.054l5.205 2.23a1 1 0 0 0 1.31-.517l.312-.71l1.701.68l2-5l-1.536-.613zm-4.434 5.126L4.313 9.475l2.208-5.152l12.162 5.354z`},null,-1)]])}var k=_({name:`bx-cctv`,render:O}),A={viewBox:`0 0 24 24`,width:`1.2em`,height:`1.2em`};function j(e,t){return g(),b(`svg`,A,[...t[0]||=[y(`path`,{fill:`currentColor`,d:`M20 3H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2m-5 5h-2V6h2zm4 0h-2V6h2zm1 5H4a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2m-5 5h-2v-2h2zm4 0h-2v-2h2z`},null,-1)]])}var M=_({name:`bxs-server`,render:j});async function N(e){return(await s.get(`/instances`,{signal:e})).data}async function P(e){return(await s.post(`/instances`,e)).data}async function F({id:e,data:t}){return(await s.put(`/instances/${e}`,t)).data}async function I(e){await s.delete(`/instances/${e}`)}async function L(e){return(await s.patch(`/instances/${e}/favorite`)).data}async function R(e){return(await s.post(`/instances/${e}/login`)).data}async function z(e,t){return(await s.get(`/instances/${e}/status`,{signal:t})).data}var B=class{_queryClient=C();toast=a();t=u.global.t;listQuery(){return f({queryKey:[`instances`],queryFn:({signal:e})=>N(e)})}statusQueries(e){return h({queries:v(()=>S(e).map(e=>({queryKey:[`instances`,e.id,`status`],queryFn:({signal:t})=>z(e.id,t),refetchInterval:15e3,retry:!1})))})}createMutation(){return m({mutationFn:P,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`instances`]}),this.toast.add({severity:`success`,detail:this.t(`views.settings.instances.added`),life:3e3})}})}updateMutation(){return m({mutationFn:F,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`instances`]}),this.toast.add({severity:`success`,detail:this.t(`views.settings.instances.updated`),life:3e3})}})}deleteMutation(){return m({mutationFn:async e=>{await I(e),await this._queryClient.cancelQueries({queryKey:[`instances`,e,`status`]}),this._queryClient.removeQueries({queryKey:[`instances`,e,`status`]})},onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`instances`]}),this.toast.add({severity:`success`,detail:this.t(`views.settings.instances.removed`),life:3e3})}})}toggleFavoriteMutation(){return m({mutationFn:L,onSuccess:async()=>{await this._queryClient.refetchQueries({queryKey:[`instances`]})}})}loginMutation(){return m({mutationFn:R,onError:()=>{}})}},V=3e4,H=5e3,U=`__home__`,W=new Set([`localhost`,`127.0.0.1`,`::1`]),G=l(`Instances`);async function K(e,t){try{let n=AbortSignal.timeout(H),r=t?AbortSignal.any([n,t]):n,i=await fetch(`${e}/api/health`,{signal:r});return G.debug(`[probe]`,`${e} → ${i.ok?`OK`:`HTTP ${i.status}`}`),i.ok}catch(t){let n=t instanceof Error?t.message:String(t);return G.debug(`[probe]`,`${e} → FAIL`,n),!1}}function q(e){return{access:e.access_token,accessExpiresAt:e.access_token_expires_at,refresh:e.refresh_token,refreshExpiresAt:e.refresh_token_expires_at}}function te(e,t){return{_id:t?._id??``,username:t?.username??``,email:t?.email,role:t?.role??``,firstLogin:t?.firstLogin,avatar:t?.avatar,access_token:e.access,refresh_token:e.refresh??``,token_type:`Bearer`,access_token_expires_at:e.accessExpiresAt??0,refresh_token_expires_at:e.refreshExpiresAt??0,internalAddresses:[],externalAddresses:[]}}var J=w(`instances`,()=>{let s=d(),l=T(),f=a(),m=ee(),h=C(),{t:g}=u.global,_=r(`instanceTokens`,{}),y=r(`activeInstanceId`,null),b=x(!1),S=x(null),w=x(0),D=0,O=x(null),k=x([]),A=i(`redirectInfo`,null,{serializer:{read:e=>e?JSON.parse(e):null,write:e=>JSON.stringify(e)}}),j=v(()=>y.value===null),M=v(()=>y.value===null?null:k.value.find(e=>e.id===y.value)?.url??null);async function z(){try{if(!E(void 0,`admin`))return;let e=await N();k.value=e.instances,O.value=e.homeId,G.debug(`[fetch]`,`loaded ${e.instances.length} instances`,{homeId:e.homeId})}catch(e){G.warn(`[fetch]`,`failed`,e)}}let B=v(()=>{let e=O.value;return k.value.filter(t=>!(e&&t.remoteHomeId&&t.remoteHomeId===e)).map(e=>{let t=_.value[e.id];return{id:e.id,name:e.name,url:e.url,hasCredentials:!!e.credentials,favorite:e.favorite??!0,userData:t?.userData??null,lastConnectedAt:t?.lastConnectedAt??null,isHome:!1}})});function H(){let e=_.value[U],t=y.value===null?c().target.value?.endpoint.url??e?.url??window.location.origin:e?.url??window.location.origin;return{id:`home`,name:g(`navigation.home`),url:t,hasCredentials:!1,favorite:!1,userData:e?.userData??null,lastConnectedAt:e?.lastConnectedAt??null,isHome:!0}}let J=v(()=>{if(y.value!==null){let e=B.value.find(e=>e.id===y.value);if(e)return e}return H()}),Y=v(()=>B.value.filter(e=>e.favorite)),X=v(()=>Y.value.length>0||y.value!==null||A.value!==null);function Z(e){return k.value.find(t=>t.id===e)?.favorite??!0}async function ne(e){let{favorite:t}=await L(e),n=k.value.find(t=>t.id===e);n&&(n.favorite=t)}async function re(e){let t=await P(e);return k.value=[...k.value,t],t}async function ie(e){await I(e),k.value=k.value.filter(t=>t.id!==e),delete _.value[e]}async function ae(e,t){let n=await F({id:e,data:t}),r=k.value.findIndex(t=>t.id===e);r!==-1&&(k.value[r]=n)}async function oe(e,t){let n=k.value.find(t=>t.id===e);return n?K(n.url,t):!1}function Q(){let e=c().target.value;if(!e?.tokens.access){G.debug(`[save-tokens]`,`skipped — no live access token`);return}let t=y.value??U;_.value[t]={userData:te(e.tokens,s.user??void 0),lastConnectedAt:Date.now(),url:e.endpoint.url},G.debug(`[save-tokens]`,`slot=${t} url=${e.endpoint.url}`)}function se(){if(y.value===null){o.value=null,G.debug(`[restore-override]`,`no active instance — home target`);return}let e=_.value[y.value],t=e?.url??e?.userData?.internalAddresses?.[0]??e?.userData?.externalAddresses?.[0]??null;o.value=t,G.debug(`[restore-override]`,`activeId=${y.value} → ${t??`no cached url`}`)}async function ce(r){if(b.value){G.warn(`[switch]`,`ignored — another switch is already in progress`);return}let i=r===null?H():B.value.find(e=>e.id===r)??H();if(r!==null&&$(i.url)&&!await ue(i.name)){G.debug(`[switch]`,`URL handoff declined by user`);return}let a=++D;b.value=!0,S.value=i.name,G.debug(`[switch]`,`START targetId=${r??`home`} gen=${a}`),G.debug(`[switch]`,`target resolved — name="${i.name}" url=${i.url} hasCreds=${i.hasCredentials}`);try{if(r!==null){let e=await K(i.url);if(a!==D){G.debug(`[switch]`,`aborted after probe — newer gen=${D}`);return}if(!e){G.warn(`[switch]`,`target unreachable — ${i.url}`),f.add({severity:`warn`,detail:g(`instances.unreachable`,{name:i.name}),life:3e3});return}}let u=null;if(r!==null&&i.hasCredentials)try{u=await R(r),G.debug(`[switch]`,`backend relay login OK`)}catch(e){G.warn(`[switch]`,`backend relay login FAILED — will try cached tokens`,e)}if(a!==D){G.debug(`[switch]`,`aborted after relay-login — newer gen=${D}`);return}Q();let d=r??U,p=u?q(u):le(d);if(G.debug(`[switch]`,`tokens source: ${u?`fresh`:p?`cached`:`none`} (slot=${d})`),r!==null&&$(i.url)){G.debug(`[switch]`,`URL handoff required — leaving SPA`),await de(i,u);return}let m=c();if(m.reset(),G.debug(`[switch]`,`kernel RESET`),e(),t(),n(),h.clear(),G.debug(`[switch]`,`vue-query cleared`),y.value=r,o.value=r===null?null:i.url,G.debug(`[switch]`,`activeId=${r} instanceOverride=${o.value??`null`}`),p&&u&&(_.value[d]={userData:u,lastConnectedAt:Date.now(),url:i.url},s.user={_id:u._id,username:u.username,role:u.role,firstLogin:u.firstLogin,avatar:u.avatar}),p){let e={url:i.url,mode:`direct-lan`,priority:0};G.debug(`[switch]`,`seedAndRetry → ${e.url}`),await Promise.race([m.seedAndRetry({endpoint:e,tokens:p},r??`home`),new Promise((e,t)=>setTimeout(()=>t(Error(`switch_timeout`)),V))])}else{G.warn(`[switch]`,`no tokens — boot + route to login`),m.boot(r??`home`),s.user=null,l.push(`/`);return}if(a!==D){G.debug(`[switch]`,`aborted after seedAndRetry — newer gen=${D}`);return}w.value++,G.debug(`[switch]`,`DONE gen=${a} → /home`),l.push(`/home`)}catch(e){(e instanceof Error?e.message:String(e))===`switch_timeout`?(G.error(`[switch]`,`TIMEOUT after ${V}ms`),f.add({severity:`error`,detail:g(`instances.switch_timeout`,{name:S.value??``}),life:3e3})):(G.error(`[switch]`,`failed`,e),f.add({severity:`error`,detail:e,life:3e3}))}finally{a===D&&(b.value=!1,S.value=null)}}function le(e){let t=_.value[e];return t?.userData?.access_token?q(t.userData):null}function $(e){try{let t=new URL(e),n=new URL(window.location.origin),r=n.protocol===`https:`&&t.protocol===`http:`,i=W.has(t.hostname)&&!W.has(n.hostname);return r||i}catch{return!1}}function ue(e){return G.warn(`[switch]`,`target "${e}" requires URL handoff — asking user confirmation`),new Promise(t=>{let n=!1,r=e=>{n||(n=!0,t(e))};m.openTextDialog({data:{title:g(`instances.insecure_handoff_title`),confirmText:g(`instances.insecure_handoff_confirm`),contentText:g(`instances.insecure_handoff_message`,{name:e}),confirmButtonProps:{severity:`danger`}},onConfirm:()=>r(!0),onCancel:()=>r(!1)})})}async function de(e,t){let n={_reset:!0,_sourceUrl:window.location.origin,_instanceName:e.name};t&&Object.assign(n,t);let r=encodeURIComponent(btoa(JSON.stringify(n))),i=`${e.url.split(`#`)[0]}#auth=${r}`;G.debug(`[url-handoff]`,`→ ${e.url} (with token=${t?`yes`:`no`})`),window.location.href=i}function fe(){_.value={},y.value=null,o.value=null,A.value=null,k.value=[],O.value=null,G.debug(`[reset]`,`store cleared`)}return{instances:B,activeInstance:J,activeId:y,activeUrl:M,isHomeActive:j,isMultiInstance:X,isSwitching:p(b),switchTargetName:p(S),switchKey:p(w),serverHomeId:O,redirectInfo:A,serverInstances:k,instanceTokens:_,favoriteInstances:Y,isFavorite:Z,toggleFavorite:ne,fetchInstances:z,addInstance:re,removeInstance:ie,updateInstance:ae,switchInstance:ce,probeInstance:oe,reset:fe,saveCurrentTokens:Q,restoreActiveOverride:se}});export{k as i,B as n,M as r,J as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Oi as e}from"./vendor-cameraui-
|
|
1
|
+
import{Oi as e}from"./vendor-cameraui-Co5kJL9z.js";import{T as t,w as n}from"./api-4uwBzwAb.js";import{_ as r,er as i,v as a,zn as o}from"./vendor-zxCOTbSj.js";import{d as s}from"./vendor-core-B_NNTGHw.js";import{t as c}from"./useElectron-mh8HQUAI.js";import{b as l}from"./vendor-primevue-BOGXPDZn.js";var u={de:a,en:r},d=s(`locale`,()=>{let r=e(`locale`,`en`),a=i(n),s=l(),{electron:d}=c(),f=t.global;function p(e){d?.send(`change-language`,e),f.locale.value=e}async function m(e){let t=u[e];t&&(s.config.locale=t)}return o(r,e=>{p(e),m(e)}),p(r.value),m(r.value),{languages:a,locale:r,setI18Nlocale:p,setPrimeVueLocale:m}});export{d as t};
|