@camstack/addon-admin-ui 1.2.431 → 1.2.433
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/assets/{AddonAssetIcon-CngGyUbH.js → AddonAssetIcon-BN2L5zYR.js} +1 -1
- package/dist/assets/Addons-IVSrpQ1E.js +4 -0
- package/dist/assets/{AdminPage-BFQa1eDk.js → AdminPage-BN12I-qw.js} +1 -1
- package/dist/assets/{AdminSectionedPage-Bb00eMTj.js → AdminSectionedPage-32bbJRJv.js} +1 -1
- package/dist/assets/{AiProfiles-DGok1qYw.js → AiProfiles-0jvT_Qwx.js} +1 -1
- package/dist/assets/{BrokerForm-NDMOvAlu.js → BrokerForm-Dgr4eoOb.js} +1 -1
- package/dist/assets/{Build-BPgFXVbn.js → Build-Cu6tKrLQ.js} +1 -1
- package/dist/assets/{Calendars-DLuwgZXW.js → Calendars-Bk15Hwva.js} +1 -1
- package/dist/assets/{Cluster-BUBVih9A.js → Cluster-BdEsq5J1.js} +1 -1
- package/dist/assets/{ClusterStepModel-DzduELev.js → ClusterStepModel-Bdu1erTg.js} +1 -1
- package/dist/assets/{CompositionEditor-DTgOmFqj.js → CompositionEditor-Dx68KXOf.js} +1 -1
- package/dist/assets/{CompositionEditorPage-D73l3mqU.js → CompositionEditorPage-C439CHpw.js} +1 -1
- package/dist/assets/{Data-Wqos-WHl.js → Data-BwCbkEKL.js} +1 -1
- package/dist/assets/{DeviceDetail-CwmpXUmk.js → DeviceDetail-O6lp6wGS.js} +1 -1
- package/dist/assets/{DeviceDoActionFields-DKOJoFJc.js → DeviceDoActionFields-C9lcQjsE.js} +1 -1
- package/dist/assets/{Devices-D_SKAo6X.js → Devices-DJLRZ1gB.js} +1 -1
- package/dist/assets/{EmbedPlayerPage-DI4ac8Wo.js → EmbedPlayerPage-BS7XG8ND.js} +1 -1
- package/dist/assets/{Identity-C25gG2Mh.js → Identity-CBJqopOJ.js} +1 -1
- package/dist/assets/{IntegrationDetail-L73oZLMf.js → IntegrationDetail-ClLd4MXh.js} +1 -1
- package/dist/assets/{IntegrationHub-DuVgrEey.js → IntegrationHub-DLGn7tol.js} +1 -1
- package/dist/assets/{Integrations-CUPpCCtl.js → Integrations-CWLFbroL.js} +1 -1
- package/dist/assets/{Integrations-Cgm8qaox.js → Integrations-DwGGLX0o.js} +1 -1
- package/dist/assets/{Library-Dm0AivX3.js → Library-CLDkRGXt.js} +1 -1
- package/dist/assets/{Locations-B2TjRBpQ.js → Locations-B0gmUpSi.js} +1 -1
- package/dist/assets/{Logs-CeX1xx9_.js → Logs-BrWt8ZO7.js} +1 -1
- package/dist/assets/{MaskShapeCanvas-GZ2ZMDcz.js → MaskShapeCanvas-D_fehNld.js} +1 -1
- package/dist/assets/{MotionZonesSettings-B5gIoLVC.js → MotionZonesSettings-CrnUBRrN.js} +1 -1
- package/dist/assets/{MyAccess-DJvaTHrq.js → MyAccess-B3zd07Xt.js} +1 -1
- package/dist/assets/{Network-D0uak4Dc.js → Network-DWFicIZW.js} +1 -1
- package/dist/assets/{NodeAddonsSettingsPanel-kmgNnVID.js → NodeAddonsSettingsPanel-DpiOL1Ze.js} +1 -1
- package/dist/assets/{Notifications-DP0iwqUM.js → Notifications-CWachKDI.js} +1 -1
- package/dist/assets/{PrivacyMaskSettings-DWCvE7XZ.js → PrivacyMaskSettings-1Gn-79PY.js} +1 -1
- package/dist/assets/{Recordings-r5KE18a6.js → Recordings-BuuW-Zcu.js} +1 -1
- package/dist/assets/{ScanNetworkModal-CHWsBmiM.js → ScanNetworkModal-C7uRGWAy.js} +1 -1
- package/dist/assets/{SceneMonitorEditor-BNFYspNy.js → SceneMonitorEditor-BiCDEoco.js} +1 -1
- package/dist/assets/{SessionsList-OvrBa2rd.js → SessionsList-BdFbtv3Z.js} +1 -1
- package/dist/assets/{Showroom-DNgHGmg0.js → Showroom-m2vZPqGf.js} +1 -1
- package/dist/assets/{System-CcDzJj6C.js → System-BXLdiSS2.js} +1 -1
- package/dist/assets/{Terminal-DpGR-56V.js → Terminal-Dhk0sGr6.js} +1 -1
- package/dist/assets/{Viewer-vqCH_LqM.js → Viewer-Dsadw_E6.js} +1 -1
- package/dist/assets/{_virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-DR_v3lvi.js → _virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-veeSdFYk.js} +1 -1
- package/dist/assets/{addon-icons-context-B2Gmu49a.js → addon-icons-context-IBurbMO3.js} +1 -1
- package/dist/assets/{archive-CoV271Ga.js → archive-CFXN2ykw.js} +1 -1
- package/dist/assets/{authed-media-BSx10sm9.js → authed-media-CMSX10jh.js} +1 -1
- package/dist/assets/{bell-off-CQHJCxaC.js → bell-off-DXKLMEY7.js} +1 -1
- package/dist/assets/{board-model-lagHZiI7.js → board-model-DXmUHcnO.js} +1 -1
- package/dist/assets/{boxes-DKr2EDaB.js → boxes-Bmu9l4XP.js} +1 -1
- package/dist/assets/circle-slash-DSwW3p-p.js +1 -0
- package/dist/assets/client-CUNqxW78.js +358 -0
- package/dist/assets/{cloud-upload-D3IJwdmA.js → cloud-upload-0ACTrw2z.js} +1 -1
- package/dist/assets/crop-uQYFVj7C.js +1 -0
- package/dist/assets/{device-integration-icon-BHf83qVT.js → device-integration-icon-CLWfAoNu.js} +1 -1
- package/dist/assets/device-picker-model-Bjy90-ZC.js +1 -0
- package/dist/assets/{dist-Dlrgg5It.js → dist-B4Z8jDGs.js} +1 -1
- package/dist/assets/dist-GOV92hHi.js +358 -0
- package/dist/assets/{eraser-BRuYxYS4.js → eraser-CiNxLDkc.js} +1 -1
- package/dist/assets/{hard-drive-download-B14E8eTo.js → hard-drive-download-BRScR_dE.js} +1 -1
- package/dist/assets/{history-Dn2pnfaZ.js → history-BdpOCM60.js} +1 -1
- package/dist/assets/{hostInit-3qW3eaSU.js → hostInit-oc6MTKNx.js} +1 -1
- package/dist/assets/i18n-CmGpgquB.js +1 -0
- package/dist/assets/{icons-CvJTX54k.js → icons-CqawGiX4.js} +1 -1
- package/dist/assets/{index-mBJW996X.js → index-DmLRwCOJ.js} +3 -3
- package/dist/assets/{key-EeG_L4W9.js → key-CbIla85G.js} +1 -1
- package/dist/assets/{key-round-C9pPg55h.js → key-round-B5K63Sum.js} +1 -1
- package/dist/assets/{layers-DhxisKd7.js → layers-cAOItMFb.js} +1 -1
- package/dist/assets/{linked-devices-model-CTfAwc1p.js → linked-devices-model-BemXG-ca.js} +1 -1
- package/dist/assets/{list-ordered-Ckqq8GR7.js → list-ordered-DPhkTIKi.js} +1 -1
- package/dist/assets/{location-owned-usage-eDtNCANy.js → location-owned-usage-DlLHa0e9.js} +1 -1
- package/dist/assets/{log-in-CAiH8-Mq.js → log-in-DGvtILIO.js} +1 -1
- package/dist/assets/{memory-stick-Bir-K-V7.js → memory-stick-BEpCAEGl.js} +1 -1
- package/dist/assets/{message-square-plus-B_0WwbBk.js → message-square-plus-DoTcuOzO.js} +1 -1
- package/dist/assets/{mf-entry-bootstrap-0-c62ae51c.js → mf-entry-bootstrap-0-80e86115.js} +2 -2
- package/dist/assets/{mic-off-D5kT_DDX.js → mic-off-DcStq35W.js} +1 -1
- package/dist/assets/{monitor-off-DzKNd6eJ.js → monitor-off-C-97xYe0.js} +1 -1
- package/dist/assets/{monitor-smartphone-D3ZPy75c.js → monitor-smartphone-CO0bB1t2.js} +1 -1
- package/dist/assets/mount-Bjy90-ZC.js +1 -0
- package/dist/assets/{notification-schedule-field-DaKiveMR.js → notification-schedule-field-Dk2EwHr3.js} +1 -1
- package/dist/assets/{octagon-alert-BYNvsZ0Q.js → octagon-alert-DNnHqguO.js} +1 -1
- package/dist/assets/{player-overlays-DFTWiQ8-.js → player-overlays-DAkqwPfz.js} +1 -1
- package/dist/assets/{recycle-DJUuC9xt.js → recycle-CYGYs1R0.js} +1 -1
- package/dist/assets/remoteEntry-BFWX_ydx.js +1 -0
- package/dist/assets/{scan-eye-_otUiDbW.js → scan-eye-jlDwlrp9.js} +1 -1
- package/dist/assets/{scissors-BU04yNa7.js → scissors-KJj8onDS.js} +1 -1
- package/dist/assets/{search-x-Djycej4Y.js → search-x-BKi_eBw1.js} +1 -1
- package/dist/assets/{send-BNY2bJqA.js → send-DCu2jIlN.js} +1 -1
- package/dist/assets/{settings-2-BxpLi7pY.js → settings-2-DBU7cgzi.js} +1 -1
- package/dist/assets/{speaker-BspD0ixN.js → speaker-5ejvh-Bn.js} +1 -1
- package/dist/assets/src-Cy0DaR_s.js +67 -0
- package/dist/assets/{timer-reset-CPRU92uv.js → timer-reset-DSuKvwUU.js} +1 -1
- package/dist/assets/{ungroup-oYlFn3LE.js → ungroup-D7NCV2Lj.js} +1 -1
- package/dist/assets/{unlink-D0eJ5vAc.js → unlink-C8DgAMZK.js} +1 -1
- package/dist/assets/{usb-C24Ua3ty.js → usb-CeNgKfW_.js} +1 -1
- package/dist/assets/{use-scenes-feed-DzzIer2d.js → use-scenes-feed-CCpBk3yA.js} +1 -1
- package/dist/assets/{use-stationary-objects-C-l1Z5zI.js → use-stationary-objects-BM_xse0L.js} +1 -1
- package/dist/assets/useEventInvalidation-Bjy90-ZC.js +1 -0
- package/dist/assets/{useNodeUrlSelection-Ba-ed7zb.js → useNodeUrlSelection-ml8Lvw9I.js} +1 -1
- package/dist/assets/user-round-yAJ0vDoi.js +1 -0
- package/dist/assets/{user-x-CdpX6b_D.js → user-x-aUe-OIlE.js} +1 -1
- package/dist/assets/{video-vLKHp9E_.js → video-CizbhiMO.js} +1 -1
- package/dist/assets/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-D83o1ikp.js → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-DfTFurdS.js} +2 -2
- package/dist/index.html +10 -10
- package/dist/server/addon.js +152 -12
- package/package.json +1 -1
- package/dist/assets/Addons-COSbX7Q1.js +0 -4
- package/dist/assets/circle-slash-D1CG5tRc.js +0 -1
- package/dist/assets/client-CqsEJzhO.js +0 -358
- package/dist/assets/crop-sD8BDahL.js +0 -1
- package/dist/assets/device-picker-model-JBC8n4FU.js +0 -1
- package/dist/assets/dist-C3lDDHVX.js +0 -358
- package/dist/assets/i18n-B-IeyHf7.js +0 -1
- package/dist/assets/mount-JBC8n4FU.js +0 -1
- package/dist/assets/remoteEntry-BhYjusn-.js +0 -1
- package/dist/assets/src-CE3hNyCx.js +0 -67
- package/dist/assets/useEventInvalidation-JBC8n4FU.js +0 -1
- package/dist/assets/user-round-JzUTTasm.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./Devices-
|
|
2
|
-
import{a as e,t}from"./rolldown-runtime-Cyuzqnbw.js";import"./virtual_mf-exposes___mfe_internal__admin_ui_host__remoteEntry-_hash_-DnnXQRkG.js";import{a as n,o as r}from"./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-D83o1ikp.js";import{t as i}from"./vite-preload-helper-kNaey6uv.js";import{$ as a,A as o,B as s,D as c,E as l,F as u,G as d,J as f,L as p,M as m,N as h,O as g,P as _,R as v,S as y,V as b,W as x,X as S,Y as C,Z as w,a as T,b as E,d as D,j as O,k,o as A,q as j,u as M,x as N}from"./_virtual_mf___mfe_internal__admin_ui_host__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-CEHpkaJP.js";import{Bi as P,Cr as F,Dn as I,Gn as ee,Gt as L,Ir as te,Jr as ne,Kr as re,Lr as ie,Nr as ae,Nt as oe,Oi as R,Pi as se,Pn as ce,Q as z,Qi as le,Qt as ue,Rn as de,Rr as fe,T as pe,Tr as me,Xt as he,Yn as ge,Z as _e,Zn as ve,_i as ye,_r as be,_t as xe,ar as Se,bi as Ce,bn as we,di as Te,dn as Ee,dt as De,ea as Oe,er as ke,fn as Ae,ft as je,ht as Me,ia as Ne,in as Pe,it as Fe,ki as Ie,ln as Le,nr as Re,on as ze,ot as Be,pi as Ve,pr as He,qi as Ue,rt as We,ui as Ge,un as Ke,ut as qe,vi as Je,wi as Ye,wn as Xe,wr as Ze,xr as Qe,yn as $e}from"./player-overlays-DFTWiQ8-.js";import{a as et,c as tt,d as nt,f as rt,i as it,l as at,m as ot,n as st,o as ct,p as lt,r as ut,s as dt,t as ft,u as pt}from"./video-vLKHp9E_.js";import{Hr as mt,Mr as ht,Xn as gt,fn as _t,lr as vt,mi as yt,mn as bt,n as xt,qr as St,rr as Ct,t as wt}from"./client-CqsEJzhO.js";import{$l as Tt,$n as Et,$t as Dt,Aa as Ot,An as kt,Ar as At,At as jt,Bn as Mt,Cr as Nt,Dn as Pt,Dt as Ft,El as It,En as Lt,Et as Rt,Fa as zt,G as Bt,Gn as Vt,Gr as Ht,Ha as Ut,Hn as Wt,Hr as Gt,Ia as Kt,Jn as qt,Kn as Jt,Kr as Yt,Ll as Xt,On as Zt,Ot as Qt,Ra as $t,Sn as en,St as tn,Tn as nn,Un as rn,Ur as an,V as on,Va as sn,Wn as cn,Wr as ln,Yn as un,_r as dn,au as fn,ca as pn,cu as mn,da as hn,du as gn,fa as _n,fr as vn,fu as yn,gn as bn,gt as xn,ha as Sn,il as Cn,ja as wn,jn as Tn,jt as En,ka as Dn,kn as On,kt as kn,l as An,la as jn,ll as Mn,lo as Nn,lu as Pn,mt as Fn,mu as In,n as Ln,ou as Rn,pa as zn,pu as Bn,ql as Vn,qn as Hn,rl as Un,s as Wn,st as Gn,tr as Kn,tt as qn,tu as Jn,ut as Yn,vu as Xn,wn as Zn,wo as Qn,xn as $n,ya as er,yu as tr}from"./src-CE3hNyCx.js";import{r as nr,t as rr}from"./_virtual_mf___mfe_internal__admin_ui_host__loadShare__react_mf_2_dom__loadShare__.js-DPkvGqVU.js";import{t as ir}from"./_virtual_mf___mfe_internal__admin_ui_host__loadShare__react_mf_2_dom_mf_1_client__loadShare__.js-Cb2QlpvS.js";import{n as ar,t as B}from"./i18n-B-IeyHf7.js";import{a as or,c as sr,i as cr,l as lr,n as ur,o as dr,s as fr,t as V,u as pr}from"./useTranslation-D3Is_4B6.js";import"./mount-JBC8n4FU.js";import{n as mr,t as hr}from"./addon-icons-context-B2Gmu49a.js";import{t as gr}from"./notification-schedule-field-DaKiveMR.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})(),a();var _r=/^(?:[a-z][a-z0-9+.-]*:|[\\/]{2})/i,vr=/^[\\/]{2}/;function yr(e,t){return t+e.replace(/\\/g,`/`)}var br=`popstate`;function xr(e){return typeof e==`object`&&!!e&&`pathname`in e&&`search`in e&&`hash`in e&&`state`in e&&`key`in e}function Sr(e={}){function t(e,t){let n=t.state?.masked,{pathname:r,search:i,hash:a}=n||e.location;return Tr(``,{pathname:r,search:i,hash:a},t.state&&t.state.usr||null,t.state&&t.state.key||`default`,n?{pathname:e.location.pathname,search:e.location.search,hash:e.location.hash}:void 0)}function n(e,t){return typeof t==`string`?t:Er(t)}return Or(t,n,null,e)}function H(e,t){if(e===!1||e==null)throw Error(t)}function U(e,t){if(!e){typeof console<`u`&&console.warn(t);try{throw Error(t)}catch{}}}function Cr(){return Math.random().toString(36).substring(2,10)}function wr(e,t){return{usr:e.state,key:e.key,idx:t,masked:e.mask?{pathname:e.pathname,search:e.search,hash:e.hash}:void 0}}function Tr(e,t,n=null,r,i){return{pathname:typeof e==`string`?e:e.pathname,search:``,hash:``,...typeof t==`string`?Dr(t):t,state:n,key:t&&t.key||r||Cr(),mask:i}}function Er({pathname:e=`/`,search:t=``,hash:n=``}){return t&&t!==`?`&&(e+=t.charAt(0)===`?`?t:`?`+t),n&&n!==`#`&&(e+=n.charAt(0)===`#`?n:`#`+n),e}function Dr(e){let t={};if(e){let n=e.indexOf(`#`);n>=0&&(t.hash=e.substring(n),e=e.substring(0,n));let r=e.indexOf(`?`);r>=0&&(t.search=e.substring(r),e=e.substring(0,r)),e&&(t.pathname=e)}return t}function Or(e,t,n,r={}){let{window:i=document.defaultView,v5Compat:a=!1}=r,o=i.history,s=`POP`,c=null,l=u();l??(l=0,o.replaceState({...o.state,idx:l},``));function u(){return(o.state||{idx:null}).idx}function d(){s=`POP`;let e=u(),t=e==null?null:e-l;l=e,c&&c({action:s,location:h.location,delta:t})}function f(e,t){s=`PUSH`;let r=xr(e)?e:Tr(h.location,e,t);n&&n(r,e),l=u()+1;let d=wr(r,l),f=h.createHref(r.mask||r);try{o.pushState(d,``,f)}catch(e){if(e instanceof DOMException&&e.name===`DataCloneError`)throw e;i.location.assign(f)}a&&c&&c({action:s,location:h.location,delta:1})}function p(e,t){s=`REPLACE`;let r=xr(e)?e:Tr(h.location,e,t);n&&n(r,e),l=u();let i=wr(r,l),d=h.createHref(r.mask||r);o.replaceState(i,``,d),a&&c&&c({action:s,location:h.location,delta:0})}function m(e){return kr(i,e)}let h={get action(){return s},get location(){return e(i,o)},listen(e){if(c)throw Error(`A history only accepts one active listener`);return i.addEventListener(br,d),c=e,()=>{i.removeEventListener(br,d),c=null}},createHref(e){return t(i,e)},createURL:m,encodeLocation(e){let t=m(e);return{pathname:t.pathname,search:t.search,hash:t.hash}},push:f,replace:p,go(e){return o.go(e)}};return h}function kr(e,t,n=!1){let r=`http://localhost`;e&&(r=e.location.origin===`null`?e.location.href:e.location.origin),H(r,`No window.location.(origin|href) available to create URL`);let i=typeof t==`string`?t:Er(t);return i=i.replace(/ $/,`%20`),!n&&vr.test(i)&&(i=r+i),new URL(i,r)}function Ar(e,t,n=`/`){return jr(e,t,n,!1)}function jr(e,t,n,r,i){let a=W((typeof t==`string`?Dr(t):t).pathname||`/`,n);if(a==null)return null;let o=i??Nr(e),s=null,c=Xr(a);for(let e=0;s==null&&e<o.length;++e)s=Kr(o[e],c,r);return s}function Mr(e,t){let{route:n,pathname:r,params:i}=e;return{id:n.id,pathname:r,params:i,data:t[n.id],loaderData:t[n.id],handle:n.handle}}function Nr(e){let t=Pr(e);return Ir(t),t}function Pr(e,t=[],n=[],r=``,i=!1){let a=(e,a,o=i,s)=>{let c={relativePath:s===void 0?e.path||``:s,caseSensitive:e.caseSensitive===!0,childrenIndex:a,route:e};if(c.relativePath.startsWith(`/`)){if(!c.relativePath.startsWith(r)&&o)return;H(c.relativePath.startsWith(r),`Absolute route path "${c.relativePath}" nested under path "${r}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),c.relativePath=c.relativePath.slice(r.length)}let l=G([r,c.relativePath]),u=n.concat(c);e.children&&e.children.length>0&&(H(e.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${l}".`),Pr(e.children,t,u,l,o)),!(e.path==null&&!e.index)&&t.push({path:l,score:Wr(l,e.index),routesMeta:u.map((e,t)=>{let[n,r]=Yr(e.relativePath,e.caseSensitive,t===u.length-1);return{...e,matcher:n,compiledParams:r}})})};return e.forEach((e,t)=>{if(e.path===``||!e.path?.includes(`?`))a(e,t);else for(let n of Fr(e.path))a(e,t,!0,n)}),t}function Fr(e){let t=e.split(`/`);if(t.length===0)return[];let[n,...r]=t,i=n.endsWith(`?`),a=n.replace(/\?$/,``);if(r.length===0)return i?[a,``]:[a];let o=Fr(r.join(`/`)),s=[];return s.push(...o.map(e=>e===``?a:[a,e].join(`/`))),i&&s.push(...o),s.map(t=>e.startsWith(`/`)&&t===``?`/`:t)}function Ir(e){e.sort((e,t)=>e.score===t.score?Gr(e.routesMeta.map(e=>e.childrenIndex),t.routesMeta.map(e=>e.childrenIndex)):t.score-e.score)}var Lr=/^:[\w-]+$/,Rr=3,zr=2,Br=1,Vr=10,Hr=-2,Ur=e=>e===`*`;function Wr(e,t){let n=e.split(`/`),r=n.length;return n.some(Ur)&&(r+=Hr),t&&(r+=zr),n.filter(e=>!Ur(e)).reduce((e,t)=>e+(Lr.test(t)?Rr:t===``?Br:Vr),r)}function Gr(e,t){return e.length===t.length&&e.slice(0,-1).every((e,n)=>e===t[n])?e[e.length-1]-t[t.length-1]:0}function Kr(e,t,n=!1){let{routesMeta:r}=e,i={},a=`/`,o=[];for(let e=0;e<r.length;++e){let s=r[e],c=e===r.length-1,l=a===`/`?t:t.slice(a.length)||`/`,u={path:s.relativePath,caseSensitive:s.caseSensitive,end:c},d=s.matcher&&s.compiledParams?Jr(u,l,s.matcher,s.compiledParams):qr(u,l),f=s.route;if(!d&&c&&n&&!r[r.length-1].route.index&&(d=qr({path:s.relativePath,caseSensitive:s.caseSensitive,end:!1},l)),!d)return null;Object.assign(i,d.params),o.push({params:i,pathname:G([a,d.pathname]),pathnameBase:ai(G([a,d.pathnameBase])),route:f}),d.pathnameBase!==`/`&&(a=G([a,d.pathnameBase]))}return o}function qr(e,t){typeof e==`string`&&(e={path:e,caseSensitive:!1,end:!0});let[n,r]=Yr(e.path,e.caseSensitive,e.end);return Jr(e,t,n,r)}function Jr(e,t,n,r){let i=t.match(n);if(!i)return null;let a=i[0],o=a.replace(/(.)\/+$/,`$1`),s=i.slice(1);return{params:r.reduce((e,{paramName:t,isOptional:n},r)=>{if(t===`*`){let e=s[r]||``;o=a.slice(0,a.length-e.length).replace(/(.)\/+$/,`$1`)}let i=s[r];return n&&!i?e[t]=void 0:e[t]=(i||``).replace(/%2F/g,`/`),e},{}),pathname:a,pathnameBase:o,pattern:e}}function Yr(e,t=!1,n=!0){U(e===`*`||!e.endsWith(`*`)||e.endsWith(`/*`),`Route path "${e}" will be treated as if it were "${e.replace(/\*$/,`/*`)}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${e.replace(/\*$/,`/*`)}".`);let r=[],i=`^`+e.replace(/\/*\*?$/,``).replace(/^\/*/,`/`).replace(/[\\.*+^${}|()[\]]/g,`\\$&`).replace(/\/:([\w-]+)(\?)?/g,(e,t,n,i,a)=>{if(r.push({paramName:t,isOptional:n!=null}),n){let t=a.charAt(i+e.length);return t&&t!==`/`?`/([^\\/]*)`:`(?:/([^\\/]*))?`}return`/([^\\/]+)`}).replace(/\/([\w-]+)\?(\/|$)/g,`(/$1)?$2`);return e.endsWith(`*`)?(r.push({paramName:`*`}),i+=e===`*`||e===`/*`?`(.*)$`:`(?:\\/(.+)|\\/*)$`):n?i+=`\\/*$`:e!==``&&e!==`/`&&(i+=`(?:(?=\\/|$))`),[new RegExp(i,t?void 0:`i`),r]}function Xr(e){try{return e.split(`/`).map(e=>decodeURIComponent(e).replace(/\//g,`%2F`)).join(`/`)}catch(t){return U(!1,`The URL path "${e}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${t}).`),e}}function W(e,t){if(t===`/`)return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith(`/`)?t.length-1:t.length,r=e.charAt(n);return r&&r!==`/`?null:e.slice(n)||`/`}function Zr(e,t=`/`){let{pathname:n,search:r=``,hash:i=``}=typeof e==`string`?Dr(e):e,a;return n?(n=ri(n),a=n.startsWith(`/`)?Qr(n.substring(1),`/`):Qr(n,t)):a=t,{pathname:a,search:oi(r),hash:si(i)}}function Qr(e,t){let n=ii(t).split(`/`);return e.split(`/`).forEach(e=>{e===`..`?n.length>1&&n.pop():e!==`.`&&n.push(e)}),n.length>1?n.join(`/`):`/`}function $r(e,t,n,r){return`Cannot include a '${e}' character in a manually specified \`to.${t}\` field [${JSON.stringify(r)}]. Please separate it out to the \`to.${n}\` field. Alternatively you may provide the full path as a string in <Link to="..."> and the router will parse it for you.`}function ei(e){return e.filter((e,t)=>t===0||e.route.path&&e.route.path.length>0)}function ti(e){let t=ei(e);return t.map((e,n)=>n===t.length-1?e.pathname:e.pathnameBase)}function ni(e,t,n,r=!1){let i;typeof e==`string`?i=Dr(e):(i={...e},H(!i.pathname||!i.pathname.includes(`?`),$r(`?`,`pathname`,`search`,i)),H(!i.pathname||!i.pathname.includes(`#`),$r(`#`,`pathname`,`hash`,i)),H(!i.search||!i.search.includes(`#`),$r(`#`,`search`,`hash`,i)));let a=e===``||i.pathname===``,o=a?`/`:i.pathname,s;if(o==null)s=n;else{let e=t.length-1;if(!r&&o.startsWith(`..`)){let t=o.split(`/`);for(;t[0]===`..`;)t.shift(),--e;i.pathname=t.join(`/`)}s=e>=0?t[e]:`/`}let c=Zr(i,s),l=o&&o!==`/`&&o.endsWith(`/`),u=(a||o===`.`)&&n.endsWith(`/`);return!c.pathname.endsWith(`/`)&&(l||u)&&(c.pathname+=`/`),c}var ri=e=>e.replace(/[\\/]{2,}/g,`/`),G=e=>ri(e.join(`/`)),ii=e=>e.replace(/\/+$/,``),ai=e=>ii(e).replace(/^\/*/,`/`),oi=e=>!e||e===`?`?``:e.startsWith(`?`)?e:`?`+e,si=e=>!e||e===`#`?``:e.startsWith(`#`)?e:`#`+e,ci=class{constructor(e,t,n,r=!1){this.status=e,this.statusText=t||``,this.internal=r,n instanceof Error?(this.data=n.toString(),this.error=n):this.data=n}};function li(e){return e!=null&&typeof e.status==`number`&&typeof e.statusText==`string`&&typeof e.internal==`boolean`&&`data`in e}function ui(e){return G(e.map(e=>e.route.path).filter(Boolean))||`/`}var di=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;function fi(e,t){let n=e;if(typeof n!=`string`||!_r.test(n))return{absoluteURL:void 0,isExternal:!1,to:n};let r=n,i=!1;if(di)try{let e=new URL(window.location.href),r=vr.test(n)?new URL(yr(n,e.protocol)):new URL(n),a=W(r.pathname,t);r.origin===e.origin&&a!=null?n=a+r.search+r.hash:i=!0}catch{U(!1,`<Link to="${n}"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:r,isExternal:i,to:n}}Object.getOwnPropertyNames(Object.prototype).sort().join(`\0`);var pi=[`POST`,`PUT`,`PATCH`,`DELETE`];new Set(pi);var mi=[`GET`,...pi];new Set(mi);var hi=[`about:`,`blob:`,`chrome:`,`chrome-untrusted:`,`content:`,`data:`,`devtools:`,`file:`,`filesystem:`,`javascript:`];function gi(e){try{return hi.includes(new URL(e).protocol)}catch{return!1}}var _i=g(null);_i.displayName=`DataRouter`;var vi=g(null);vi.displayName=`DataRouterState`;var yi=g(!1);function bi(){return v(yi)}var xi=g({isTransitioning:!1});xi.displayName=`ViewTransition`;var Si=g(new Map);Si.displayName=`Fetchers`;var Ci=g(null);Ci.displayName=`Await`;var K=g(null);K.displayName=`Navigation`;var wi=g(null);wi.displayName=`Location`;var q=g({outlet:null,matches:[],isDataRoute:!1});q.displayName=`Route`;var Ti=g(null);Ti.displayName=`RouteError`;var Ei=`REACT_ROUTER_ERROR`,Di=`REDIRECT`,Oi=`ROUTE_ERROR_RESPONSE`;function ki(e){if(e.startsWith(`${Ei}:${Di}:{`))try{let t=JSON.parse(e.slice(28));if(typeof t==`object`&&t&&typeof t.status==`number`&&typeof t.statusText==`string`&&typeof t.location==`string`&&typeof t.reloadDocument==`boolean`&&typeof t.replace==`boolean`)return t}catch{}}function Ai(e){if(e.startsWith(`${Ei}:${Oi}:{`))try{let t=JSON.parse(e.slice(40));if(typeof t==`object`&&t&&typeof t.status==`number`&&typeof t.statusText==`string`)return new ci(t.status,t.statusText,t.data)}catch{}}function ji(e,{relative:t}={}){H(Mi(),`useHref() may be used only in the context of a <Router> component.`);let{basename:n,navigator:r}=v(K),{hash:i,pathname:a,search:o}=Vi(e,{relative:t}),s=a;return n!==`/`&&(s=a===`/`?n:G([n,a])),r.createHref({pathname:s,search:o,hash:i})}function Mi(){return v(wi)!=null}function J(){return H(Mi(),`useLocation() may be used only in the context of a <Router> component.`),v(wi).location}function Ni(){return v(wi).navigationType}var Pi=`You should call navigate() in a React.useEffect(), not when your component is first rendered.`;function Fi(e){v(K).static||x(e)}function Ii(){let{isDataRoute:e}=v(q);return e?oa():Li()}function Li(){H(Mi(),`useNavigate() may be used only in the context of a <Router> component.`);let e=v(_i),{basename:t,navigator:n}=v(K),{matches:r}=v(q),{pathname:i}=J(),a=JSON.stringify(ti(r)),o=j(!1);return Fi(()=>{o.current=!0}),p((r,s={})=>{if(U(o.current,Pi),!o.current)return;if(typeof r==`number`){n.go(r);return}let c=ni(r,JSON.parse(a),i,s.relative===`path`);e==null&&t!==`/`&&(c.pathname=c.pathname===`/`?t:G([t,c.pathname])),(s.replace?n.replace:n.push)(c,s.state,s)},[t,n,a,i,e])}var Ri=g(null);function zi(e){let t=v(q).outlet;return d(()=>t&&k(Ri.Provider,{value:e},t),[t,e])}function Bi(){let{matches:e}=v(q);return e[e.length-1]?.params??{}}function Vi(e,{relative:t}={}){let{matches:n}=v(q),{pathname:r}=J(),i=JSON.stringify(ti(n));return d(()=>ni(e,JSON.parse(i),r,t===`path`),[e,i,r,t])}function Hi(e,t){return Ui(e,t)}function Ui(e,t,n){H(Mi(),`useRoutes() may be used only in the context of a <Router> component.`);let{navigator:r}=v(K),{matches:i}=v(q),a=i[i.length-1],o=a?a.params:{},s=a?a.pathname:`/`,c=a?a.pathnameBase:`/`,l=a&&a.route;{let e=l&&l.path||``;ca(s,!l||e.endsWith(`*`)||e.endsWith(`*?`),`You rendered descendant <Routes> (or called \`useRoutes()\`) at "${s}" (under <Route path="${e}">) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render.
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./Devices-DJLRZ1gB.js","./src-Cy0DaR_s.js","./player-overlays-DAkqwPfz.js","./client-CUNqxW78.js","./__vite-browser-external-DF8Eb0aa.js","./useTranslation-D3Is_4B6.js","./AdminPage-BN12I-qw.js","./device-integration-icon-CLWfAoNu.js","./useEventInvalidation-Bjy90-ZC.js","./Integrations-CWLFbroL.js","./i18n-CmGpgquB.js","./ScanNetworkModal-C7uRGWAy.js","./BrokerForm-Dgr4eoOb.js","./mount-Bjy90-ZC.js","./IntegrationDetail-ClLd4MXh.js","./search-x-BKi_eBw1.js","./NodeAddonsSettingsPanel-DpiOL1Ze.js","./addon-icons-context-IBurbMO3.js","./ClusterStepModel-Bdu1erTg.js","./video-CizbhiMO.js","./usb-CeNgKfW_.js","./crop-uQYFVj7C.js","./layers-cAOItMFb.js","./board-model-DXmUHcnO.js","./DeviceDetail-O6lp6wGS.js","./archive-CFXN2ykw.js","./scan-eye-jlDwlrp9.js","./bell-off-DXKLMEY7.js","./boxes-Bmu9l4XP.js","./circle-slash-DSwW3p-p.js","./CompositionEditor-Dx68KXOf.js","./use-stationary-objects-BM_xse0L.js","./linked-devices-model-BemXG-ca.js","./device-picker-model-Bjy90-ZC.js","./authed-media-CMSX10jh.js","./Showroom-m2vZPqGf.js","./EmbedPlayerPage-BS7XG8ND.js","./Library-CLDkRGXt.js","./user-x-aUe-OIlE.js","./user-round-yAJ0vDoi.js","./AdminSectionedPage-32bbJRJv.js","./use-scenes-feed-CCpBk3yA.js","./Recordings-BuuW-Zcu.js","./scissors-KJj8onDS.js","./location-owned-usage-DlLHa0e9.js","./eraser-CiNxLDkc.js","./hard-drive-download-BRScR_dE.js","./format-size-DIxKXxtj.js","./Viewer-Dsadw_E6.js","./monitor-off-C-97xYe0.js","./Build-Cu6tKrLQ.js","./ungroup-D7NCV2Lj.js","./DeviceDoActionFields-C9lcQjsE.js","./notification-schedule-field-Dk2EwHr3.js","./CompositionEditorPage-C439CHpw.js","./Locations-B0gmUpSi.js","./speaker-5ejvh-Bn.js","./Addons-IVSrpQ1E.js","./octagon-alert-DNnHqguO.js","./useNodeUrlSelection-ml8Lvw9I.js","./AiProfiles-0jvT_Qwx.js","./message-square-plus-DoTcuOzO.js","./send-DCu2jIlN.js","./MyAccess-B3zd07Xt.js","./key-round-B5K63Sum.js","./monitor-smartphone-CO0bB1t2.js","./unlink-C8DgAMZK.js","./SessionsList-BdFbtv3Z.js","./Logs-BrWt8ZO7.js","./timer-reset-DSuKvwUU.js","./IntegrationHub-DLGn7tol.js","./settings-2-DBU7cgzi.js","./AddonAssetIcon-BN2L5zYR.js","./addon-display-names-BkwMrExv.js","./Identity-CBJqopOJ.js","./key-CbIla85G.js","./history-BdpOCM60.js","./Network-DWFicIZW.js","./log-in-DGvtILIO.js","./Integrations-DwGGLX0o.js","./recycle-CYGYs1R0.js","./Data-BwCbkEKL.js","./cloud-upload-0ACTrw2z.js","./System-BXLdiSS2.js","./Cluster-BdEsq5J1.js","./memory-stick-BEpCAEGl.js","./Terminal-Dhk0sGr6.js","./Terminal-kHJ-D0s7.css","./Notifications-CWachKDI.js","./list-ordered-DPhkTIKi.js","./Calendars-Bk15Hwva.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{a as e,t}from"./rolldown-runtime-Cyuzqnbw.js";import"./virtual_mf-exposes___mfe_internal__admin_ui_host__remoteEntry-_hash_-DnnXQRkG.js";import{a as n,o as r}from"./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-DfTFurdS.js";import{t as i}from"./vite-preload-helper-kNaey6uv.js";import{$ as a,A as o,B as s,D as c,E as l,F as u,G as d,J as f,L as p,M as m,N as h,O as g,P as _,R as v,S as y,V as b,W as x,X as S,Y as C,Z as w,a as T,b as E,d as D,j as O,k,o as A,q as j,u as M,x as N}from"./_virtual_mf___mfe_internal__admin_ui_host__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-CEHpkaJP.js";import{Bi as P,Cr as F,Dn as I,Gn as ee,Gt as L,Ir as te,Jr as ne,Kr as re,Lr as ie,Nr as ae,Nt as oe,Oi as R,Pi as se,Pn as ce,Q as z,Qi as le,Qt as ue,Rn as de,Rr as fe,T as pe,Tr as me,Xt as he,Yn as ge,Z as _e,Zn as ve,_i as ye,_r as be,_t as xe,ar as Se,bi as Ce,bn as we,di as Te,dn as Ee,dt as De,ea as Oe,er as ke,fn as Ae,ft as je,ht as Me,ia as Ne,in as Pe,it as Fe,ki as Ie,ln as Le,nr as Re,on as ze,ot as Be,pi as Ve,pr as He,qi as Ue,rt as We,ui as Ge,un as Ke,ut as qe,vi as Je,wi as Ye,wn as Xe,wr as Ze,xr as Qe,yn as $e}from"./player-overlays-DAkqwPfz.js";import{a as et,c as tt,d as nt,f as rt,i as it,l as at,m as ot,n as st,o as ct,p as lt,r as ut,s as dt,t as ft,u as pt}from"./video-CizbhiMO.js";import{Hr as mt,Mr as ht,Xn as gt,fn as _t,lr as vt,mi as yt,mn as bt,n as xt,qr as St,rr as Ct,t as wt}from"./client-CUNqxW78.js";import{$l as Tt,$n as Et,$t as Dt,Aa as Ot,An as kt,Ar as At,At as jt,Bn as Mt,Cr as Nt,Dn as Pt,Dt as Ft,El as It,En as Lt,Et as Rt,Fa as zt,G as Bt,Gn as Vt,Gr as Ht,Ha as Ut,Hn as Wt,Hr as Gt,Ia as Kt,Jn as qt,Kn as Jt,Kr as Yt,Ll as Xt,On as Zt,Ot as Qt,Ra as $t,Sn as en,St as tn,Tn as nn,Un as rn,Ur as an,V as on,Va as sn,Wn as cn,Wr as ln,Yn as un,_r as dn,au as fn,ca as pn,cu as mn,da as hn,du as gn,fa as _n,fr as vn,fu as yn,gn as bn,gt as xn,ha as Sn,il as Cn,ja as wn,jn as Tn,jt as En,ka as Dn,kn as On,kt as kn,l as An,la as jn,ll as Mn,lo as Nn,lu as Pn,mt as Fn,mu as In,n as Ln,ou as Rn,pa as zn,pu as Bn,ql as Vn,qn as Hn,rl as Un,s as Wn,st as Gn,tr as Kn,tt as qn,tu as Jn,ut as Yn,vu as Xn,wn as Zn,wo as Qn,xn as $n,ya as er,yu as tr}from"./src-Cy0DaR_s.js";import{r as nr,t as rr}from"./_virtual_mf___mfe_internal__admin_ui_host__loadShare__react_mf_2_dom__loadShare__.js-DPkvGqVU.js";import{t as ir}from"./_virtual_mf___mfe_internal__admin_ui_host__loadShare__react_mf_2_dom_mf_1_client__loadShare__.js-Cb2QlpvS.js";import{n as ar,t as B}from"./i18n-CmGpgquB.js";import{a as or,c as sr,i as cr,l as lr,n as ur,o as dr,s as fr,t as V,u as pr}from"./useTranslation-D3Is_4B6.js";import"./mount-Bjy90-ZC.js";import{n as mr,t as hr}from"./addon-icons-context-IBurbMO3.js";import{t as gr}from"./notification-schedule-field-Dk2EwHr3.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})(),a();var _r=/^(?:[a-z][a-z0-9+.-]*:|[\\/]{2})/i,vr=/^[\\/]{2}/;function yr(e,t){return t+e.replace(/\\/g,`/`)}var br=`popstate`;function xr(e){return typeof e==`object`&&!!e&&`pathname`in e&&`search`in e&&`hash`in e&&`state`in e&&`key`in e}function Sr(e={}){function t(e,t){let n=t.state?.masked,{pathname:r,search:i,hash:a}=n||e.location;return Tr(``,{pathname:r,search:i,hash:a},t.state&&t.state.usr||null,t.state&&t.state.key||`default`,n?{pathname:e.location.pathname,search:e.location.search,hash:e.location.hash}:void 0)}function n(e,t){return typeof t==`string`?t:Er(t)}return Or(t,n,null,e)}function H(e,t){if(e===!1||e==null)throw Error(t)}function U(e,t){if(!e){typeof console<`u`&&console.warn(t);try{throw Error(t)}catch{}}}function Cr(){return Math.random().toString(36).substring(2,10)}function wr(e,t){return{usr:e.state,key:e.key,idx:t,masked:e.mask?{pathname:e.pathname,search:e.search,hash:e.hash}:void 0}}function Tr(e,t,n=null,r,i){return{pathname:typeof e==`string`?e:e.pathname,search:``,hash:``,...typeof t==`string`?Dr(t):t,state:n,key:t&&t.key||r||Cr(),mask:i}}function Er({pathname:e=`/`,search:t=``,hash:n=``}){return t&&t!==`?`&&(e+=t.charAt(0)===`?`?t:`?`+t),n&&n!==`#`&&(e+=n.charAt(0)===`#`?n:`#`+n),e}function Dr(e){let t={};if(e){let n=e.indexOf(`#`);n>=0&&(t.hash=e.substring(n),e=e.substring(0,n));let r=e.indexOf(`?`);r>=0&&(t.search=e.substring(r),e=e.substring(0,r)),e&&(t.pathname=e)}return t}function Or(e,t,n,r={}){let{window:i=document.defaultView,v5Compat:a=!1}=r,o=i.history,s=`POP`,c=null,l=u();l??(l=0,o.replaceState({...o.state,idx:l},``));function u(){return(o.state||{idx:null}).idx}function d(){s=`POP`;let e=u(),t=e==null?null:e-l;l=e,c&&c({action:s,location:h.location,delta:t})}function f(e,t){s=`PUSH`;let r=xr(e)?e:Tr(h.location,e,t);n&&n(r,e),l=u()+1;let d=wr(r,l),f=h.createHref(r.mask||r);try{o.pushState(d,``,f)}catch(e){if(e instanceof DOMException&&e.name===`DataCloneError`)throw e;i.location.assign(f)}a&&c&&c({action:s,location:h.location,delta:1})}function p(e,t){s=`REPLACE`;let r=xr(e)?e:Tr(h.location,e,t);n&&n(r,e),l=u();let i=wr(r,l),d=h.createHref(r.mask||r);o.replaceState(i,``,d),a&&c&&c({action:s,location:h.location,delta:0})}function m(e){return kr(i,e)}let h={get action(){return s},get location(){return e(i,o)},listen(e){if(c)throw Error(`A history only accepts one active listener`);return i.addEventListener(br,d),c=e,()=>{i.removeEventListener(br,d),c=null}},createHref(e){return t(i,e)},createURL:m,encodeLocation(e){let t=m(e);return{pathname:t.pathname,search:t.search,hash:t.hash}},push:f,replace:p,go(e){return o.go(e)}};return h}function kr(e,t,n=!1){let r=`http://localhost`;e&&(r=e.location.origin===`null`?e.location.href:e.location.origin),H(r,`No window.location.(origin|href) available to create URL`);let i=typeof t==`string`?t:Er(t);return i=i.replace(/ $/,`%20`),!n&&vr.test(i)&&(i=r+i),new URL(i,r)}function Ar(e,t,n=`/`){return jr(e,t,n,!1)}function jr(e,t,n,r,i){let a=W((typeof t==`string`?Dr(t):t).pathname||`/`,n);if(a==null)return null;let o=i??Nr(e),s=null,c=Xr(a);for(let e=0;s==null&&e<o.length;++e)s=Kr(o[e],c,r);return s}function Mr(e,t){let{route:n,pathname:r,params:i}=e;return{id:n.id,pathname:r,params:i,data:t[n.id],loaderData:t[n.id],handle:n.handle}}function Nr(e){let t=Pr(e);return Ir(t),t}function Pr(e,t=[],n=[],r=``,i=!1){let a=(e,a,o=i,s)=>{let c={relativePath:s===void 0?e.path||``:s,caseSensitive:e.caseSensitive===!0,childrenIndex:a,route:e};if(c.relativePath.startsWith(`/`)){if(!c.relativePath.startsWith(r)&&o)return;H(c.relativePath.startsWith(r),`Absolute route path "${c.relativePath}" nested under path "${r}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),c.relativePath=c.relativePath.slice(r.length)}let l=G([r,c.relativePath]),u=n.concat(c);e.children&&e.children.length>0&&(H(e.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${l}".`),Pr(e.children,t,u,l,o)),!(e.path==null&&!e.index)&&t.push({path:l,score:Wr(l,e.index),routesMeta:u.map((e,t)=>{let[n,r]=Yr(e.relativePath,e.caseSensitive,t===u.length-1);return{...e,matcher:n,compiledParams:r}})})};return e.forEach((e,t)=>{if(e.path===``||!e.path?.includes(`?`))a(e,t);else for(let n of Fr(e.path))a(e,t,!0,n)}),t}function Fr(e){let t=e.split(`/`);if(t.length===0)return[];let[n,...r]=t,i=n.endsWith(`?`),a=n.replace(/\?$/,``);if(r.length===0)return i?[a,``]:[a];let o=Fr(r.join(`/`)),s=[];return s.push(...o.map(e=>e===``?a:[a,e].join(`/`))),i&&s.push(...o),s.map(t=>e.startsWith(`/`)&&t===``?`/`:t)}function Ir(e){e.sort((e,t)=>e.score===t.score?Gr(e.routesMeta.map(e=>e.childrenIndex),t.routesMeta.map(e=>e.childrenIndex)):t.score-e.score)}var Lr=/^:[\w-]+$/,Rr=3,zr=2,Br=1,Vr=10,Hr=-2,Ur=e=>e===`*`;function Wr(e,t){let n=e.split(`/`),r=n.length;return n.some(Ur)&&(r+=Hr),t&&(r+=zr),n.filter(e=>!Ur(e)).reduce((e,t)=>e+(Lr.test(t)?Rr:t===``?Br:Vr),r)}function Gr(e,t){return e.length===t.length&&e.slice(0,-1).every((e,n)=>e===t[n])?e[e.length-1]-t[t.length-1]:0}function Kr(e,t,n=!1){let{routesMeta:r}=e,i={},a=`/`,o=[];for(let e=0;e<r.length;++e){let s=r[e],c=e===r.length-1,l=a===`/`?t:t.slice(a.length)||`/`,u={path:s.relativePath,caseSensitive:s.caseSensitive,end:c},d=s.matcher&&s.compiledParams?Jr(u,l,s.matcher,s.compiledParams):qr(u,l),f=s.route;if(!d&&c&&n&&!r[r.length-1].route.index&&(d=qr({path:s.relativePath,caseSensitive:s.caseSensitive,end:!1},l)),!d)return null;Object.assign(i,d.params),o.push({params:i,pathname:G([a,d.pathname]),pathnameBase:ai(G([a,d.pathnameBase])),route:f}),d.pathnameBase!==`/`&&(a=G([a,d.pathnameBase]))}return o}function qr(e,t){typeof e==`string`&&(e={path:e,caseSensitive:!1,end:!0});let[n,r]=Yr(e.path,e.caseSensitive,e.end);return Jr(e,t,n,r)}function Jr(e,t,n,r){let i=t.match(n);if(!i)return null;let a=i[0],o=a.replace(/(.)\/+$/,`$1`),s=i.slice(1);return{params:r.reduce((e,{paramName:t,isOptional:n},r)=>{if(t===`*`){let e=s[r]||``;o=a.slice(0,a.length-e.length).replace(/(.)\/+$/,`$1`)}let i=s[r];return n&&!i?e[t]=void 0:e[t]=(i||``).replace(/%2F/g,`/`),e},{}),pathname:a,pathnameBase:o,pattern:e}}function Yr(e,t=!1,n=!0){U(e===`*`||!e.endsWith(`*`)||e.endsWith(`/*`),`Route path "${e}" will be treated as if it were "${e.replace(/\*$/,`/*`)}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${e.replace(/\*$/,`/*`)}".`);let r=[],i=`^`+e.replace(/\/*\*?$/,``).replace(/^\/*/,`/`).replace(/[\\.*+^${}|()[\]]/g,`\\$&`).replace(/\/:([\w-]+)(\?)?/g,(e,t,n,i,a)=>{if(r.push({paramName:t,isOptional:n!=null}),n){let t=a.charAt(i+e.length);return t&&t!==`/`?`/([^\\/]*)`:`(?:/([^\\/]*))?`}return`/([^\\/]+)`}).replace(/\/([\w-]+)\?(\/|$)/g,`(/$1)?$2`);return e.endsWith(`*`)?(r.push({paramName:`*`}),i+=e===`*`||e===`/*`?`(.*)$`:`(?:\\/(.+)|\\/*)$`):n?i+=`\\/*$`:e!==``&&e!==`/`&&(i+=`(?:(?=\\/|$))`),[new RegExp(i,t?void 0:`i`),r]}function Xr(e){try{return e.split(`/`).map(e=>decodeURIComponent(e).replace(/\//g,`%2F`)).join(`/`)}catch(t){return U(!1,`The URL path "${e}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${t}).`),e}}function W(e,t){if(t===`/`)return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith(`/`)?t.length-1:t.length,r=e.charAt(n);return r&&r!==`/`?null:e.slice(n)||`/`}function Zr(e,t=`/`){let{pathname:n,search:r=``,hash:i=``}=typeof e==`string`?Dr(e):e,a;return n?(n=ri(n),a=n.startsWith(`/`)?Qr(n.substring(1),`/`):Qr(n,t)):a=t,{pathname:a,search:oi(r),hash:si(i)}}function Qr(e,t){let n=ii(t).split(`/`);return e.split(`/`).forEach(e=>{e===`..`?n.length>1&&n.pop():e!==`.`&&n.push(e)}),n.length>1?n.join(`/`):`/`}function $r(e,t,n,r){return`Cannot include a '${e}' character in a manually specified \`to.${t}\` field [${JSON.stringify(r)}]. Please separate it out to the \`to.${n}\` field. Alternatively you may provide the full path as a string in <Link to="..."> and the router will parse it for you.`}function ei(e){return e.filter((e,t)=>t===0||e.route.path&&e.route.path.length>0)}function ti(e){let t=ei(e);return t.map((e,n)=>n===t.length-1?e.pathname:e.pathnameBase)}function ni(e,t,n,r=!1){let i;typeof e==`string`?i=Dr(e):(i={...e},H(!i.pathname||!i.pathname.includes(`?`),$r(`?`,`pathname`,`search`,i)),H(!i.pathname||!i.pathname.includes(`#`),$r(`#`,`pathname`,`hash`,i)),H(!i.search||!i.search.includes(`#`),$r(`#`,`search`,`hash`,i)));let a=e===``||i.pathname===``,o=a?`/`:i.pathname,s;if(o==null)s=n;else{let e=t.length-1;if(!r&&o.startsWith(`..`)){let t=o.split(`/`);for(;t[0]===`..`;)t.shift(),--e;i.pathname=t.join(`/`)}s=e>=0?t[e]:`/`}let c=Zr(i,s),l=o&&o!==`/`&&o.endsWith(`/`),u=(a||o===`.`)&&n.endsWith(`/`);return!c.pathname.endsWith(`/`)&&(l||u)&&(c.pathname+=`/`),c}var ri=e=>e.replace(/[\\/]{2,}/g,`/`),G=e=>ri(e.join(`/`)),ii=e=>e.replace(/\/+$/,``),ai=e=>ii(e).replace(/^\/*/,`/`),oi=e=>!e||e===`?`?``:e.startsWith(`?`)?e:`?`+e,si=e=>!e||e===`#`?``:e.startsWith(`#`)?e:`#`+e,ci=class{constructor(e,t,n,r=!1){this.status=e,this.statusText=t||``,this.internal=r,n instanceof Error?(this.data=n.toString(),this.error=n):this.data=n}};function li(e){return e!=null&&typeof e.status==`number`&&typeof e.statusText==`string`&&typeof e.internal==`boolean`&&`data`in e}function ui(e){return G(e.map(e=>e.route.path).filter(Boolean))||`/`}var di=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;function fi(e,t){let n=e;if(typeof n!=`string`||!_r.test(n))return{absoluteURL:void 0,isExternal:!1,to:n};let r=n,i=!1;if(di)try{let e=new URL(window.location.href),r=vr.test(n)?new URL(yr(n,e.protocol)):new URL(n),a=W(r.pathname,t);r.origin===e.origin&&a!=null?n=a+r.search+r.hash:i=!0}catch{U(!1,`<Link to="${n}"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:r,isExternal:i,to:n}}Object.getOwnPropertyNames(Object.prototype).sort().join(`\0`);var pi=[`POST`,`PUT`,`PATCH`,`DELETE`];new Set(pi);var mi=[`GET`,...pi];new Set(mi);var hi=[`about:`,`blob:`,`chrome:`,`chrome-untrusted:`,`content:`,`data:`,`devtools:`,`file:`,`filesystem:`,`javascript:`];function gi(e){try{return hi.includes(new URL(e).protocol)}catch{return!1}}var _i=g(null);_i.displayName=`DataRouter`;var vi=g(null);vi.displayName=`DataRouterState`;var yi=g(!1);function bi(){return v(yi)}var xi=g({isTransitioning:!1});xi.displayName=`ViewTransition`;var Si=g(new Map);Si.displayName=`Fetchers`;var Ci=g(null);Ci.displayName=`Await`;var K=g(null);K.displayName=`Navigation`;var wi=g(null);wi.displayName=`Location`;var q=g({outlet:null,matches:[],isDataRoute:!1});q.displayName=`Route`;var Ti=g(null);Ti.displayName=`RouteError`;var Ei=`REACT_ROUTER_ERROR`,Di=`REDIRECT`,Oi=`ROUTE_ERROR_RESPONSE`;function ki(e){if(e.startsWith(`${Ei}:${Di}:{`))try{let t=JSON.parse(e.slice(28));if(typeof t==`object`&&t&&typeof t.status==`number`&&typeof t.statusText==`string`&&typeof t.location==`string`&&typeof t.reloadDocument==`boolean`&&typeof t.replace==`boolean`)return t}catch{}}function Ai(e){if(e.startsWith(`${Ei}:${Oi}:{`))try{let t=JSON.parse(e.slice(40));if(typeof t==`object`&&t&&typeof t.status==`number`&&typeof t.statusText==`string`)return new ci(t.status,t.statusText,t.data)}catch{}}function ji(e,{relative:t}={}){H(Mi(),`useHref() may be used only in the context of a <Router> component.`);let{basename:n,navigator:r}=v(K),{hash:i,pathname:a,search:o}=Vi(e,{relative:t}),s=a;return n!==`/`&&(s=a===`/`?n:G([n,a])),r.createHref({pathname:s,search:o,hash:i})}function Mi(){return v(wi)!=null}function J(){return H(Mi(),`useLocation() may be used only in the context of a <Router> component.`),v(wi).location}function Ni(){return v(wi).navigationType}var Pi=`You should call navigate() in a React.useEffect(), not when your component is first rendered.`;function Fi(e){v(K).static||x(e)}function Ii(){let{isDataRoute:e}=v(q);return e?oa():Li()}function Li(){H(Mi(),`useNavigate() may be used only in the context of a <Router> component.`);let e=v(_i),{basename:t,navigator:n}=v(K),{matches:r}=v(q),{pathname:i}=J(),a=JSON.stringify(ti(r)),o=j(!1);return Fi(()=>{o.current=!0}),p((r,s={})=>{if(U(o.current,Pi),!o.current)return;if(typeof r==`number`){n.go(r);return}let c=ni(r,JSON.parse(a),i,s.relative===`path`);e==null&&t!==`/`&&(c.pathname=c.pathname===`/`?t:G([t,c.pathname])),(s.replace?n.replace:n.push)(c,s.state,s)},[t,n,a,i,e])}var Ri=g(null);function zi(e){let t=v(q).outlet;return d(()=>t&&k(Ri.Provider,{value:e},t),[t,e])}function Bi(){let{matches:e}=v(q);return e[e.length-1]?.params??{}}function Vi(e,{relative:t}={}){let{matches:n}=v(q),{pathname:r}=J(),i=JSON.stringify(ti(n));return d(()=>ni(e,JSON.parse(i),r,t===`path`),[e,i,r,t])}function Hi(e,t){return Ui(e,t)}function Ui(e,t,n){H(Mi(),`useRoutes() may be used only in the context of a <Router> component.`);let{navigator:r}=v(K),{matches:i}=v(q),a=i[i.length-1],o=a?a.params:{},s=a?a.pathname:`/`,c=a?a.pathnameBase:`/`,l=a&&a.route;{let e=l&&l.path||``;ca(s,!l||e.endsWith(`*`)||e.endsWith(`*?`),`You rendered descendant <Routes> (or called \`useRoutes()\`) at "${s}" (under <Route path="${e}">) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render.
|
|
3
3
|
|
|
4
|
-
Please change the parent <Route path="${e}"> to <Route path="${e===`/`?`*`:`${e}/*`}">.`)}let u=J(),d;if(t){let e=typeof t==`string`?Dr(t):t;H(c===`/`||e.pathname?.startsWith(c),`When overriding the location using \`<Routes location>\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${c}" but pathname "${e.pathname}" was given in the \`location\` prop.`),d=e}else d=u;let f=d.pathname||`/`,p=f;if(c!==`/`){let e=c.replace(/^\//,``).split(`/`);p=`/`+f.replace(/^\//,``).split(`/`).slice(e.length).join(`/`)}let m=n&&n.state.matches.length?n.state.matches.map(e=>Object.assign(e,{route:n.manifest[e.route.id]||e.route})):Ar(e,{pathname:p});U(l||m!=null,`No routes matched location "${d.pathname}${d.search}${d.hash}" `),U(m==null||m[m.length-1].route.element!==void 0||m[m.length-1].route.Component!==void 0||m[m.length-1].route.lazy!==void 0,`Matched leaf route at location "${d.pathname}${d.search}${d.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`);let h=Xi(m&&m.map(e=>Object.assign({},e,{params:Object.assign({},o,e.params),pathname:G([c,r.encodeLocation?r.encodeLocation(e.pathname.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathname]),pathnameBase:e.pathnameBase===`/`?c:G([c,r.encodeLocation?r.encodeLocation(e.pathnameBase.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathnameBase])})),i,n);return t&&h?k(wi.Provider,{value:{location:{pathname:`/`,search:``,hash:``,state:null,key:`default`,mask:void 0,...d},navigationType:`POP`}},h):h}function Wi(){let e=aa(),t=li(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,r=`rgba(200,200,200, 0.5)`,i={padding:`0.5rem`,backgroundColor:r},a={padding:`2px 4px`,backgroundColor:r},o=null;return console.error(`Error handled by React Router default ErrorBoundary:`,e),o=k(b,null,k(`p`,null,`💿 Hey developer 👋`),k(`p`,null,`You can provide a way better UX than this when your app throws errors by providing your own `,k(`code`,{style:a},`ErrorBoundary`),` or`,` `,k(`code`,{style:a},`errorElement`),` prop on your route.`)),k(b,null,k(`h2`,null,`Unexpected Application Error!`),k(`h3`,{style:{fontStyle:`italic`}},t),n?k(`pre`,{style:i},n):null,o)}var Gi=k(Wi,null),Ki=class extends _{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||t.revalidation!==`idle`&&e.revalidation===`idle`?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:e.error===void 0?t.error:e.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){this.props.onError?this.props.onError(e,t):console.error(`React Router caught the following error during render`,e)}render(){let e=this.state.error;if(this.context&&typeof e==`object`&&e&&`digest`in e&&typeof e.digest==`string`){let t=Ai(e.digest);t&&(e=t)}let t=e===void 0?this.props.children:k(q.Provider,{value:this.props.routeContext},k(Ti.Provider,{value:e,children:this.props.component}));return this.context?k(Ji,{error:e},t):t}};Ki.contextType=yi;var qi=new WeakMap;function Ji({children:e,error:t}){let{basename:n}=v(K);if(typeof t==`object`&&t&&`digest`in t&&typeof t.digest==`string`){let e=ki(t.digest);if(e){let r=qi.get(t);if(r)throw r;let i=fi(e.location,n),a=i.absoluteURL||i.to;if(gi(a))throw Error(`Invalid redirect location`);if(di&&!qi.get(t))if(i.isExternal||e.reloadDocument)window.location.href=a;else{let n=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(i.to,{replace:e.replace}));throw qi.set(t,n),n}return k(`meta`,{httpEquiv:`refresh`,content:`0;url=${a}`})}}return e}function Yi({routeContext:e,match:t,children:n}){let r=v(_i);return r&&r.static&&r.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=t.route.id),k(q.Provider,{value:e},n)}function Xi(e,t=[],n){let r=n?.state;if(e==null){if(!r)return null;if(r.errors)e=r.matches;else if(t.length===0&&!r.initialized&&r.matches.length>0)e=r.matches;else return null}let i=e,a=r?.errors;if(a!=null){let e=i.findIndex(e=>e.route.id&&a?.[e.route.id]!==void 0);H(e>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(a).join(`,`)}`),i=i.slice(0,Math.min(i.length,e+1))}let o=!1,s=-1;if(n&&r){o=r.renderFallback;for(let e=0;e<i.length;e++){let t=i[e];if((t.route.HydrateFallback||t.route.hydrateFallbackElement)&&(s=e),t.route.id){let{loaderData:e,errors:a}=r,c=t.route.loader&&!e.hasOwnProperty(t.route.id)&&(!a||a[t.route.id]===void 0);if(t.route.lazy||c){n.isStatic&&(o=!0),i=s>=0?i.slice(0,s+1):[i[0]];break}}}}let c=n?.onError,l=r&&c?(e,t)=>{c(e,{location:r.location,params:r.matches?.[0]?.params??{},pattern:ui(r.matches),errorInfo:t})}:void 0;return i.reduceRight((e,n,c)=>{let u,d=!1,f=null,p=null;r&&(u=a&&n.route.id?a[n.route.id]:void 0,f=n.route.errorElement||Gi,o&&(s<0&&c===0?(ca(`route-fallback`,!1,"No `HydrateFallback` element provided to render during initial hydration"),d=!0,p=null):s===c&&(d=!0,p=n.route.hydrateFallbackElement||null)));let m=t.concat(i.slice(0,c+1)),h=()=>{let t;return t=u?f:d?p:n.route.Component?k(n.route.Component,null):n.route.element?n.route.element:e,k(Yi,{match:n,routeContext:{outlet:e,matches:m,isDataRoute:r!=null},children:t})};return r&&(n.route.ErrorBoundary||n.route.errorElement||c===0)?k(Ki,{location:r.location,revalidation:r.revalidation,component:f,error:u,children:h(),routeContext:{outlet:null,matches:m,isDataRoute:!0},onError:l}):h()},null)}function Zi(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Qi(e){let t=v(_i);return H(t,Zi(e)),t}function $i(e){let t=v(vi);return H(t,Zi(e)),t}function ea(e){let t=v(q);return H(t,Zi(e)),t}function ta(e){let t=ea(e),n=t.matches[t.matches.length-1];return H(n.route.id,`${e} can only be used on routes that contain a unique "id"`),n.route.id}function na(){return ta(`useRouteId`)}function ra(){let e=$i(`useNavigation`);return d(()=>{let{matches:t,historyAction:n,...r}=e.navigation;return r},[e.navigation])}function ia(){let{matches:e,loaderData:t}=$i(`useMatches`);return d(()=>e.map(e=>Mr(e,t)),[e,t])}function aa(){let e=v(Ti),t=$i(`useRouteError`),n=ta(`useRouteError`);return e===void 0?t.errors?.[n]:e}function oa(){let{router:e}=Qi(`useNavigate`),t=ta(`useNavigate`),n=j(!1);return Fi(()=>{n.current=!0}),p(async(r,i={})=>{U(n.current,Pi),n.current&&(typeof r==`number`?await e.navigate(r):await e.navigate(r,{fromRouteId:t,...i}))},[e,t])}var sa={};function ca(e,t,n){!t&&!sa[e]&&(sa[e]=!0,U(!1,n))}h(la);function la({routes:e,manifest:t,future:n,state:r,isStatic:i,onError:a}){return Ui(e,void 0,{manifest:t,state:r,isStatic:i,onError:a,future:n})}function Y({to:e,replace:t,state:n,relative:r}){H(Mi(),`<Navigate> may be used only in the context of a <Router> component.`);let{static:i}=v(K);U(!i,`<Navigate> must not be used on the initial render in a <StaticRouter>. This is a no-op, but you should modify your code so the <Navigate> is only ever rendered in response to some user interaction or state change.`);let{matches:a}=v(q),{pathname:o}=J(),c=Ii(),l=ni(e,ti(a),o,r===`path`),u=JSON.stringify(l);return s(()=>{c(JSON.parse(u),{replace:t,state:n,relative:r})},[c,u,r,t,n]),null}function X(e){H(!1,`A <Route> is only ever to be used as the child of <Routes> element, never rendered directly. Please wrap your <Route> in a <Routes>.`)}function ua({basename:e=`/`,children:t=null,location:n,navigationType:r=`POP`,navigator:i,static:a=!1,useTransitions:o}){H(!Mi(),`You cannot render a <Router> inside another <Router>. You should never have more than one in your app.`);let s=e.replace(/^\/*/,`/`),c=d(()=>({basename:s,navigator:i,static:a,useTransitions:o,future:{}}),[s,i,a,o]);typeof n==`string`&&(n=Dr(n));let{pathname:l=`/`,search:u=``,hash:f=``,state:p=null,key:m=`default`,mask:h}=n,g=d(()=>{let e=W(l,s);return e==null?null:{location:{pathname:e,search:u,hash:f,state:p,key:m,mask:h},navigationType:r}},[s,l,u,f,p,m,r,h]);return U(g!=null,`<Router basename="${s}"> is not able to match the URL "${l}${u}${f}" because it does not start with the basename, so the <Router> won't render anything.`),g==null?null:k(K.Provider,{value:c},k(wi.Provider,{children:t,value:g}))}function da({children:e,location:t}){return Hi(fa(e),t)}function fa(e,t=[]){let n=[];return l.forEach(e,(e,r)=>{if(!O(e))return;let i=[...t,r];if(e.type===b){n.push.apply(n,fa(e.props.children,i));return}H(e.type===X,`[${typeof e.type==`string`?e.type:e.type.name}] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`),H(!e.props.index||!e.props.children,`An index route cannot have child routes.`);let a={id:e.props.id||i.join(`-`),caseSensitive:e.props.caseSensitive,element:e.props.element,Component:e.props.Component,index:e.props.index,path:e.props.path,middleware:e.props.middleware,loader:e.props.loader,action:e.props.action,hydrateFallbackElement:e.props.hydrateFallbackElement,HydrateFallback:e.props.HydrateFallback,errorElement:e.props.errorElement,ErrorBoundary:e.props.ErrorBoundary,hasErrorBoundary:e.props.hasErrorBoundary===!0||e.props.ErrorBoundary!=null||e.props.errorElement!=null,shouldRevalidate:e.props.shouldRevalidate,handle:e.props.handle,lazy:e.props.lazy};e.props.children&&(a.children=fa(e.props.children,i)),n.push(a)}),n}var pa=`get`,ma=`application/x-www-form-urlencoded`;function ha(e){return typeof HTMLElement<`u`&&e instanceof HTMLElement}function ga(e){return ha(e)&&e.tagName.toLowerCase()===`button`}function _a(e){return ha(e)&&e.tagName.toLowerCase()===`form`}function va(e){return ha(e)&&e.tagName.toLowerCase()===`input`}function ya(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function ba(e,t){return e.button===0&&(!t||t===`_self`)&&!ya(e)}function xa(e=``){return new URLSearchParams(typeof e==`string`||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce((t,n)=>{let r=e[n];return t.concat(Array.isArray(r)?r.map(e=>[n,e]):[[n,r]])},[]))}function Sa(e,t){let n=xa(e);return t&&t.forEach((e,r)=>{n.has(r)||t.getAll(r).forEach(e=>{n.append(r,e)})}),n}var Ca=null;function wa(){if(Ca===null)try{new FormData(document.createElement(`form`),0),Ca=!1}catch{Ca=!0}return Ca}var Ta=new Set([`application/x-www-form-urlencoded`,`multipart/form-data`,`text/plain`]);function Ea(e){return e!=null&&!Ta.has(e)?(U(!1,`"${e}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${ma}"`),null):e}function Da(e,t){let n,r,i,a,o;if(_a(e)){let o=e.getAttribute(`action`);r=o?W(o,t):null,n=e.getAttribute(`method`)||pa,i=Ea(e.getAttribute(`enctype`))||ma,a=new FormData(e)}else if(ga(e)||va(e)&&(e.type===`submit`||e.type===`image`)){let o=e.form;if(o==null)throw Error(`Cannot submit a <button> or <input type="submit"> without a <form>`);let s=e.getAttribute(`formaction`)||o.getAttribute(`action`);if(r=s?W(s,t):null,n=e.getAttribute(`formmethod`)||o.getAttribute(`method`)||pa,i=Ea(e.getAttribute(`formenctype`))||Ea(o.getAttribute(`enctype`))||ma,a=new FormData(o,e),!wa()){let{name:t,type:n,value:r}=e;if(n===`image`){let e=t?`${t}.`:``;a.append(`${e}x`,`0`),a.append(`${e}y`,`0`)}else t&&a.append(t,r)}}else if(ha(e))throw Error(`Cannot submit element that is not <form>, <button>, or <input type="submit|image">`);else n=pa,r=null,i=ma,o=e;return a&&i===`text/plain`&&(o=a,a=void 0),{action:r,method:n.toLowerCase(),encType:i,formData:a,body:o}}Object.getOwnPropertyNames(Object.prototype).sort().join(`\0`);var Oa={"&":`\\u0026`,">":`\\u003e`,"<":`\\u003c`,"\u2028":`\\u2028`,"\u2029":`\\u2029`},ka=/[&><\u2028\u2029]/g;function Aa(e){return e.replace(ka,e=>Oa[e])}function ja(e,t){if(e===!1||e==null)throw Error(t)}function Ma(e,t,n,r){let i=typeof e==`string`?new URL(e,typeof window>`u`?`server://singlefetch/`:window.location.origin):e;return n?i.pathname.endsWith(`/`)?i.pathname=`${i.pathname}_.${r}`:i.pathname=`${i.pathname}.${r}`:i.pathname===`/`?i.pathname=`_root.${r}`:t&&W(i.pathname,t)===`/`?i.pathname=`${ii(t)}/_root.${r}`:i.pathname=`${ii(i.pathname)}.${r}`,i}async function Na(e,t){if(e.id in t)return t[e.id];try{let n=await i(()=>import(e.module),[],import.meta.url);return t[e.id]=n,n}catch(t){return console.error(`Error loading route module \`${e.module}\`, reloading page...`),console.error(t),window.__reactRouterContext&&window.__reactRouterContext.isSpaMode,window.location.reload(),new Promise(()=>{})}}function Pa(e){return e!=null&&typeof e.page==`string`}function Fa(e){return e==null?!1:e.href==null?e.rel===`preload`&&typeof e.imageSrcSet==`string`&&typeof e.imageSizes==`string`:typeof e.rel==`string`&&typeof e.href==`string`}async function Ia(e,t,n){return Va((await Promise.all(e.map(async e=>{let r=t.routes[e.route.id];if(r){let e=await Na(r,n);return e.links?e.links():[]}return[]}))).flat(1).filter(Fa).filter(e=>e.rel===`stylesheet`||e.rel===`preload`).map(e=>e.rel===`stylesheet`?{...e,rel:`prefetch`,as:`style`}:{...e,rel:`prefetch`}))}function La(e,t,n,r,i,a){let o=(e,t)=>n[t]?e.route.id!==n[t].route.id:!0,s=(e,t)=>n[t].pathname!==e.pathname||n[t].route.path?.endsWith(`*`)&&n[t].params[`*`]!==e.params[`*`];return a===`assets`?t.filter((e,t)=>o(e,t)||s(e,t)):a===`data`?t.filter((t,a)=>{let c=r.routes[t.route.id];if(!c||!c.hasLoader)return!1;if(o(t,a)||s(t,a))return!0;if(t.route.shouldRevalidate){let r=t.route.shouldRevalidate({currentUrl:new URL(i.pathname+i.search+i.hash,window.origin),currentParams:n[0]?.params||{},nextUrl:new URL(e,window.origin),nextParams:t.params,defaultShouldRevalidate:!0});if(typeof r==`boolean`)return r}return!0}):[]}function Ra(e,t,{includeHydrateFallback:n}={}){return za(e.map(e=>{let r=t.routes[e.route.id];if(!r)return[];let i=[r.module];return r.clientActionModule&&(i=i.concat(r.clientActionModule)),r.clientLoaderModule&&(i=i.concat(r.clientLoaderModule)),n&&r.hydrateFallbackModule&&(i=i.concat(r.hydrateFallbackModule)),r.imports&&(i=i.concat(r.imports)),i}).flat(1))}function za(e){return[...new Set(e)]}function Ba(e){let t={},n=Object.keys(e).sort();for(let r of n)t[r]=e[r];return t}function Va(e,t){let n=new Set,r=new Set(t);return e.reduce((e,i)=>{if(t&&!Pa(i)&&i.as===`script`&&i.href&&r.has(i.href))return e;let a=JSON.stringify(Ba(i));return n.has(a)||(n.add(a),e.push({key:a,link:i})),e},[])}function Ha(){let e=v(_i);return ja(e,`You must render this element inside a <DataRouterContext.Provider> element`),e}function Ua(){let e=v(vi);return ja(e,`You must render this element inside a <DataRouterStateContext.Provider> element`),e}var Wa=g(void 0);Wa.displayName=`FrameworkContext`;function Ga(){let e=v(Wa);return ja(e,`You must render this element inside a <HydratedRouter> element`),e}function Ka(e,t){let n=v(Wa),[r,i]=f(!1),[a,o]=f(!1),{onFocus:c,onBlur:l,onMouseEnter:u,onMouseLeave:d,onTouchStart:p}=t,m=j(null);s(()=>{if(e===`render`&&o(!0),e===`viewport`){let e=new IntersectionObserver(e=>{e.forEach(e=>{o(e.isIntersecting)})},{threshold:.5});return m.current&&e.observe(m.current),()=>{e.disconnect()}}},[e]),s(()=>{if(r){let e=setTimeout(()=>{o(!0)},100);return()=>{clearTimeout(e)}}},[r]);let h=()=>{i(!0)},g=()=>{i(!1),o(!1)};return n?e===`intent`?[a,m,{onFocus:qa(c,h),onBlur:qa(l,g),onMouseEnter:qa(u,h),onMouseLeave:qa(d,g),onTouchStart:qa(p,h)}]:[a,m,{}]:[!1,m,{}]}function qa(e,t){return n=>{e&&e(n),n.defaultPrevented||t(n)}}function Ja({page:e,...t}){let n=bi(),{nonce:r}=Ga(),{router:i}=Ha(),a=d(()=>Ar(i.routes,e,i.basename),[i.routes,e,i.basename]);return a?(t.nonce==null&&r&&(t={...t,nonce:r}),k(n?Xa:Za,{page:e,matches:a,...t})):null}function Ya(e){let{manifest:t,routeModules:n}=Ga(),[r,i]=f([]);return s(()=>{let r=!1;return Ia(e,t,n).then(e=>{r||i(e)}),()=>{r=!0}},[e,t,n]),r}function Xa({page:e,matches:t,...n}){let r=J(),{future:i}=Ga(),{basename:a}=Ha();return k(b,null,d(()=>{if(e===r.pathname+r.search+r.hash)return[];let n=Ma(e,a,i.v8_trailingSlashAwareDataRequests,`rsc`),o=!1,s=[];for(let e of t)typeof e.route.shouldRevalidate==`function`?o=!0:s.push(e.route.id);return o&&s.length>0&&n.searchParams.set(`_routes`,s.join(`,`)),[n.pathname+n.search]},[a,i.v8_trailingSlashAwareDataRequests,e,r,t]).map(e=>k(`link`,{key:e,rel:`prefetch`,as:`fetch`,href:e,...n})))}function Za({page:e,matches:t,...n}){let r=J(),{future:i,manifest:a,routeModules:o}=Ga(),{basename:s}=Ha(),{loaderData:c,matches:l}=Ua(),u=d(()=>La(e,t,l,a,r,`data`),[e,t,l,a,r]),f=d(()=>La(e,t,l,a,r,`assets`),[e,t,l,a,r]),p=d(()=>{if(e===r.pathname+r.search+r.hash)return[];let n=new Set,l=!1;if(t.forEach(e=>{let t=a.routes[e.route.id];!t||!t.hasLoader||(!u.some(t=>t.route.id===e.route.id)&&e.route.id in c&&o[e.route.id]?.shouldRevalidate||t.hasClientLoader?l=!0:n.add(e.route.id))}),n.size===0)return[];let d=Ma(e,s,i.v8_trailingSlashAwareDataRequests,`data`);return l&&n.size>0&&d.searchParams.set(`_routes`,t.filter(e=>n.has(e.route.id)).map(e=>e.route.id).join(`,`)),[d.pathname+d.search]},[s,i.v8_trailingSlashAwareDataRequests,c,r,a,u,t,e,o]),m=d(()=>Ra(f,a),[f,a]),h=Ya(f);return k(b,null,p.map(e=>k(`link`,{key:e,rel:`prefetch`,as:`fetch`,href:e,...n})),m.map(e=>k(`link`,{key:e,rel:`modulepreload`,href:e,...n})),h.map(({key:e,link:t})=>k(`link`,{key:e,nonce:n.nonce,...t,crossOrigin:t.crossOrigin??n.crossOrigin})))}function Qa(...e){return t=>{e.forEach(e=>{typeof e==`function`?e(t):e!=null&&(e.current=t)})}}var $a=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;try{$a&&(window.__reactRouterVersion=`7.18.0`)}catch{}function eo({basename:e,children:t,useTransitions:n,window:r}){let i=j();i.current??=Sr({window:r,v5Compat:!0});let a=i.current,[o,s]=f({action:a.action,location:a.location}),c=p(e=>{n===!1?s(e):u(()=>s(e))},[n]);return x(()=>a.listen(c),[a,c]),k(ua,{basename:e,children:t,location:o.location,navigationType:o.action,navigator:a,useTransitions:n})}function to({basename:e,children:t,history:n,useTransitions:r}){let[i,a]=f({action:n.action,location:n.location}),o=p(e=>{r===!1?a(e):u(()=>a(e))},[r]);return x(()=>n.listen(o),[n,o]),k(ua,{basename:e,children:t,location:i.location,navigationType:i.action,navigator:n,useTransitions:r})}to.displayName=`unstable_HistoryRouter`;var no=o(function({onClick:e,discover:t=`render`,prefetch:n=`none`,relative:r,reloadDocument:i,replace:a,mask:o,state:s,target:c,to:l,preventScrollReset:u,viewTransition:d,defaultShouldRevalidate:f,...p},m){let{basename:h,navigator:g,useTransitions:_}=v(K),y=typeof l==`string`&&_r.test(l),x=fi(l,h);l=x.to;let S=ji(l,{relative:r}),C=J(),w=null;if(o){let e=ni(o,[],C.mask?C.mask.pathname:`/`,!0);h!==`/`&&(e.pathname=e.pathname===`/`?h:G([h,e.pathname])),w=g.createHref(e)}let[T,E,D]=Ka(n,p),O=lo(l,{replace:a,mask:o,state:s,target:c,preventScrollReset:u,relative:r,viewTransition:d,defaultShouldRevalidate:f,useTransitions:_});function A(t){e&&e(t),t.defaultPrevented||O(t)}let j=!(x.isExternal||i),M=k(`a`,{...p,...D,href:(j?w:void 0)||x.absoluteURL||S,onClick:j?A:e,ref:Qa(m,E),target:c,"data-discover":!y&&t===`render`?`true`:void 0});return T&&!y?k(b,null,M,k(Ja,{page:S})):M});no.displayName=`Link`;var ro=o(function({"aria-current":e=`page`,caseSensitive:t=!1,className:n=``,end:r=!1,style:i,to:a,viewTransition:o,children:s,...c},l){let u=Vi(a,{relative:c.relative}),d=J(),f=v(vi),{navigator:p,basename:m}=v(K),h=f!=null&&xo(u)&&o===!0,g=p.encodeLocation?p.encodeLocation(u).pathname:u.pathname,_=d.pathname,y=f&&f.navigation&&f.navigation.location?f.navigation.location.pathname:null;t||(_=_.toLowerCase(),y=y?y.toLowerCase():null,g=g.toLowerCase()),y&&m&&(y=W(y,m)||y);let b=g!==`/`&&g.endsWith(`/`)?g.length-1:g.length,x=_===g||!r&&_.startsWith(g)&&_.charAt(b)===`/`,S=y!=null&&(y===g||!r&&y.startsWith(g)&&y.charAt(g.length)===`/`),C={isActive:x,isPending:S,isTransitioning:h},w=x?e:void 0,T;T=typeof n==`function`?n(C):[n,x?`active`:null,S?`pending`:null,h?`transitioning`:null].filter(Boolean).join(` `);let E=typeof i==`function`?i(C):i;return k(no,{...c,"aria-current":w,className:T,ref:l,style:E,to:a,viewTransition:o},typeof s==`function`?s(C):s)});ro.displayName=`NavLink`;var io=o(({discover:e=`render`,fetcherKey:t,navigate:n,reloadDocument:r,replace:i,state:a,method:o=pa,action:s,onSubmit:c,relative:l,preventScrollReset:d,viewTransition:f,defaultShouldRevalidate:p,...m},h)=>{let{useTransitions:g}=v(K),_=mo(),y=ho(s,{relative:l}),b=o.toLowerCase()===`get`?`get`:`post`,x=typeof s==`string`&&_r.test(s);return k(`form`,{ref:h,method:b,action:y,onSubmit:r?c:e=>{if(c&&c(e),e.defaultPrevented)return;e.preventDefault();let r=e.nativeEvent.submitter,s=r?.getAttribute(`formmethod`)||o,m=()=>_(r||e.currentTarget,{fetcherKey:t,method:s,navigate:n,replace:i,state:a,relative:l,preventScrollReset:d,viewTransition:f,defaultShouldRevalidate:p});g&&n!==!1?u(()=>m()):m()},...m,"data-discover":!x&&e===`render`?`true`:void 0})});io.displayName=`Form`;function ao({getKey:e,storageKey:t,...n}){let r=v(Wa),{basename:i}=v(K),a=J(),o=ia();yo({getKey:e,storageKey:t});let s=d(()=>{if(!r||!e)return null;let t=vo(a,o,i,e);return t===a.key?null:t},[]);if(!r||r.isSpaMode)return null;let c=((e,t)=>{if(!window.history.state||!window.history.state.key){let e=Math.random().toString(32).slice(2);window.history.replaceState({key:e},``)}try{let n=JSON.parse(sessionStorage.getItem(e)||`{}`)[t||window.history.state.key];typeof n==`number`&&window.scrollTo(0,n)}catch(t){console.error(t),sessionStorage.removeItem(e)}}).toString();return n.nonce==null&&r?.nonce&&(n.nonce=r.nonce),k(`script`,{...n,suppressHydrationWarning:!0,dangerouslySetInnerHTML:{__html:`(${c})(${Aa(JSON.stringify(t||go))}, ${Aa(JSON.stringify(s))})`}})}ao.displayName=`ScrollRestoration`;function oo(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function so(e){let t=v(_i);return H(t,oo(e)),t}function co(e){let t=v(vi);return H(t,oo(e)),t}function lo(e,{target:t,replace:n,mask:r,state:i,preventScrollReset:a,relative:o,viewTransition:s,defaultShouldRevalidate:c,useTransitions:l}={}){let d=Ii(),f=J(),m=Vi(e,{relative:o});return p(p=>{if(ba(p,t)){p.preventDefault();let t=n===void 0?Er(f)===Er(m):n,h=()=>d(e,{replace:t,mask:r,state:i,preventScrollReset:a,relative:o,viewTransition:s,defaultShouldRevalidate:c});l?u(()=>h()):h()}},[f,d,m,n,r,i,t,e,a,o,s,c,l])}function uo(e){U(typeof URLSearchParams<`u`,"You cannot use the `useSearchParams` hook in a browser that does not support the URLSearchParams API. If you need to support Internet Explorer 11, we recommend you load a polyfill such as https://github.com/ungap/url-search-params.");let t=j(xa(e)),n=j(!1),r=J(),i=d(()=>Sa(r.search,n.current?null:t.current),[r.search]),a=Ii();return[i,p((e,t)=>{let r=xa(typeof e==`function`?e(new URLSearchParams(i)):e);n.current=!0,a(`?`+r,t)},[a,i])]}var fo=0,po=()=>`__${String(++fo)}__`;function mo(){let{router:e}=so(`useSubmit`),{basename:t}=v(K),n=na(),r=e.fetch,i=e.navigate;return p(async(e,a={})=>{let{action:o,method:s,encType:c,formData:l,body:u}=Da(e,t);a.navigate===!1?await r(a.fetcherKey||po(),n,a.action||o,{defaultShouldRevalidate:a.defaultShouldRevalidate,preventScrollReset:a.preventScrollReset,formData:l,body:u,formMethod:a.method||s,formEncType:a.encType||c,flushSync:a.flushSync}):await i(a.action||o,{defaultShouldRevalidate:a.defaultShouldRevalidate,preventScrollReset:a.preventScrollReset,formData:l,body:u,formMethod:a.method||s,formEncType:a.encType||c,replace:a.replace,state:a.state,fromRouteId:n,flushSync:a.flushSync,viewTransition:a.viewTransition})},[r,i,t,n])}function ho(e,{relative:t}={}){let{basename:n}=v(K),r=v(q);H(r,`useFormAction must be used inside a RouteContext`);let[i]=r.matches.slice(-1),a={...Vi(e||`.`,{relative:t})},o=J();if(e==null){a.search=o.search;let e=new URLSearchParams(a.search),t=e.getAll(`index`);if(t.some(e=>e===``)){e.delete(`index`),t.filter(e=>e).forEach(t=>e.append(`index`,t));let n=e.toString();a.search=n?`?${n}`:``}}return(!e||e===`.`)&&i.route.index&&(a.search=a.search?a.search.replace(/^\?/,`?index&`):`?index`),n!==`/`&&(a.pathname=a.pathname===`/`?n:G([n,a.pathname])),Er(a)}var go=`react-router-scroll-positions`,_o={};function vo(e,t,n,r){let i=null;return r&&(i=r(n===`/`?e:{...e,pathname:W(e.pathname,n)||e.pathname},t)),i??=e.key,i}function yo({getKey:e,storageKey:t}={}){let{router:n}=so(`useScrollRestoration`),{restoreScrollPosition:r,preventScrollReset:i}=co(`useScrollRestoration`),{basename:a}=v(K),o=J(),c=ia(),l=ra();s(()=>(window.history.scrollRestoration=`manual`,()=>{window.history.scrollRestoration=`auto`}),[]),bo(p(()=>{if(l.state===`idle`){let t=vo(o,c,a,e);_o[t]=window.scrollY}try{sessionStorage.setItem(t||go,JSON.stringify(_o))}catch(e){U(!1,`Failed to save scroll positions in sessionStorage, <ScrollRestoration /> will not work properly (${e}).`)}window.history.scrollRestoration=`auto`},[l.state,e,a,o,c,t])),typeof document<`u`&&(x(()=>{try{let e=sessionStorage.getItem(t||go);e&&(_o=JSON.parse(e))}catch{}},[t]),x(()=>{let t=n?.enableScrollRestoration(_o,()=>window.scrollY,e?(t,n)=>vo(t,n,a,e):void 0);return()=>t&&t()},[n,a,e]),x(()=>{if(r!==!1){if(typeof r==`number`){window.scrollTo(0,r);return}try{if(o.hash){let e=document.getElementById(decodeURIComponent(o.hash.slice(1)));if(e){e.scrollIntoView();return}}}catch{U(!1,`"${o.hash.slice(1)}" is not a decodable element ID. The view will not scroll to it.`)}i!==!0&&window.scrollTo(0,0)}},[o,r,i]))}function bo(e,t){let{capture:n}=t||{};s(()=>{let t=n==null?void 0:{capture:n};return window.addEventListener(`pagehide`,e,t),()=>{window.removeEventListener(`pagehide`,e,t)}},[e,n])}function xo(e,{relative:t}={}){let n=v(xi);H(n!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:r}=so(`useViewTransitionState`),i=Vi(e,{relative:t});if(!n.isTransitioning)return!1;let a=W(n.currentLocation.pathname,r)||n.currentLocation.pathname,o=W(n.nextLocation.pathname,r)||n.nextLocation.pathname;return qr(i.pathname,o)!=null||qr(i.pathname,a)!=null}var So=e(t(((e,t)=>{t.exports={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0}}))()),Co=/\s([^'"/\s><]+?)[\s/>]|([^\s=]+)=\s?(".*?"|'.*?')/g;function wo(e){var t={type:`tag`,name:``,voidElement:!1,attrs:{},children:[]},n=e.match(/<\/?([^\s]+?)[/\s>]/);if(n&&(t.name=n[1],(So.default[n[1]]||e.charAt(e.length-2)===`/`)&&(t.voidElement=!0),t.name.startsWith(`!--`))){var r=e.indexOf(`-->`);return{type:`comment`,comment:r===-1?``:e.slice(4,r)}}for(var i=new RegExp(Co),a=null;(a=i.exec(e))!==null;)if(a[0].trim())if(a[1]){var o=a[1].trim(),s=[o,``];o.indexOf(`=`)>-1&&(s=o.split(`=`)),t.attrs[s[0]]=s[1],i.lastIndex--}else a[2]&&(t.attrs[a[2]]=a[3].trim().substring(1,a[3].length-1));return t}var To=/<[a-zA-Z0-9\-\!\/](?:"[^"]*"|'[^']*'|[^'">])*>/g,Eo=/^\s*$/,Do=Object.create(null);function Oo(e,t){switch(t.type){case`text`:return e+t.content;case`tag`:return e+=`<`+t.name+(t.attrs?function(e){var t=[];for(var n in e)t.push(n+`="`+e[n]+`"`);return t.length?` `+t.join(` `):``}(t.attrs):``)+(t.voidElement?`/>`:`>`),t.voidElement?e:e+t.children.reduce(Oo,``)+`</`+t.name+`>`;case`comment`:return e+`<!--`+t.comment+`-->`}}var ko={parse:function(e,t){t||={},t.components||=Do;var n,r=[],i=[],a=-1,o=!1;if(e.indexOf(`<`)!==0){var s=e.indexOf(`<`);r.push({type:`text`,content:s===-1?e:e.substring(0,s)})}return e.replace(To,function(s,c){if(o){if(s!==`</`+n.name+`>`)return;o=!1}var l,u=s.charAt(1)!==`/`,d=s.startsWith(`<!--`),f=c+s.length,p=e.charAt(f);if(d){var m=wo(s);return a<0?(r.push(m),r):((l=i[a]).children.push(m),r)}if(u&&(a++,(n=wo(s)).type===`tag`&&t.components[n.name]&&(n.type=`component`,o=!0),n.voidElement||o||!p||p===`<`||n.children.push({type:`text`,content:e.slice(f,e.indexOf(`<`,f))}),a===0&&r.push(n),(l=i[a-1])&&l.children.push(n),i[a]=n),(!u||n.voidElement)&&(a>-1&&(n.voidElement||n.name===s.slice(2,-1))&&(a--,n=a===-1?r:i[a]),!o&&p!==`<`&&p)){l=a===-1?r:i[a].children;var h=e.indexOf(`<`,f),g=e.slice(f,h===-1?void 0:h);Eo.test(g)&&(g=` `),(h>-1&&a+l.length>=0||g!==` `)&&l.push({type:`text`,content:g})}}),r},stringify:function(e){return e.reduce(function(e,t){return e+Oo(``,t)},``)}};a();var Ao=(e,t)=>{if(!e)return!1;let n=e.props?.children??e.children;return t?n.length>0:!!n},jo=e=>{if(!e)return[];let t=e.props?.children??e.children;return e.props?.i18nIsDynamicList?No(t):t},Mo=e=>Array.isArray(e)&&e.every(O),No=e=>Array.isArray(e)?e:[e],Po=(e,t)=>{let n={...t};return n.props={...t.props,...e.props},n},Fo=e=>{let t={};if(!e)return t;let n=e=>{No(e).forEach(e=>{sr(e)||(Ao(e)?n(jo(e)):fr(e)&&!O(e)&&Object.assign(t,e))})};return n(e),t},Io=(e,t,n,r)=>{if(!e)return``;let i=``,a=No(e),o=t?.transSupportBasicHtmlNodes?t.transKeepBasicHtmlNodesFor??[]:[];return a.forEach((e,a)=>{if(sr(e)){i+=`${e}`;return}if(O(e)){let{props:s,type:c}=e,l=Object.keys(s).length,u=o.indexOf(c)>-1,d=s.children;if(!d&&u&&!l){i+=`<${c}/>`;return}if(!d&&(!u||l)||s.i18nIsDynamicList){i+=`<${a}></${a}>`;return}if(u&&l<=1){let e=sr(d)?d:Io(d,t,n,r);i+=`<${c}>${e}</${c}>`;return}let f=Io(d,t,n,r);i+=`<${a}>${f}</${a}>`;return}if(e===null){lr(n,`TRANS_NULL_VALUE`,`Passed in a null value as child`,{i18nKey:r});return}if(fr(e)){let{format:t,...a}=e,o=Object.keys(a);if(o.length===1){let e=t?`${o[0]}, ${t}`:o[0];i+=`{{${e}}}`;return}lr(n,`TRANS_INVALID_OBJ`,`Invalid child - Object should only have keys {{ value, format }} (format is optional).`,{i18nKey:r,child:e});return}lr(n,`TRANS_INVALID_VAR`,`Passed in a variable like {number} - pass variables for interpolation as full objects like {{number}}.`,{i18nKey:r,child:e})}),i},Lo=(e,t=[],n={})=>{if(!e)return e;let r=Object.keys(n),i=[...t,...r],a=``,o=0;for(;o<e.length;)if(e[o]===`<`){let t=!1,n=e.slice(o).match(/^<\/(\d+|[a-zA-Z][a-zA-Z0-9_-]*)>/);if(n){let e=n[1];(/^\d+$/.test(e)||i.includes(e))&&(t=!0,a+=n[0],o+=n[0].length)}if(!t){let n=e.slice(o).match(/^<(\d+|[a-zA-Z][a-zA-Z0-9_-]*)(\s+[\w-]+(?:=(?:"[^"]*"|'[^']*'|[^\s>]+))?)*\s*(\/)?>/);if(n){let e=n[1];(/^\d+$/.test(e)||i.includes(e))&&(t=!0,a+=n[0],o+=n[0].length)}}t||(a+=`<`,o+=1)}else a+=e[o],o+=1;return a},Ro=(e,t,n,r,i,a,o)=>{if(n===``)return[];let s=i.transKeepBasicHtmlNodesFor||[],u=n&&new RegExp(s.map(e=>`<${e}`).join(`|`)).test(n);if(!e&&!t&&!u&&!o)return[n];let d=t??{},f=e=>{No(e).forEach(e=>{sr(e)||(Ao(e)?f(jo(e)):fr(e)&&!O(e)&&Object.assign(d,e))})};f(e);let p=Lo(n,s,d),m=ko.parse(`<0>${p}</0>`),h={...d,...a},g=(e,t,n)=>{let r=jo(e),i=v(r,t.children,n);return Mo(r)&&i.length===0||e.props?.i18nIsDynamicList?r:i},_=(e,t,n,r,i)=>{e.dummy?(e.children=t,n.push(c(e,{key:r},i?void 0:t))):n.push(...l.map([e],e=>{if(e.type===b||e.props?.i18nIsDynamicList!==void 0){let n={key:r};return e&&e.props&&Object.keys(e.props).forEach(t=>{t===`children`||t===`i18nIsDynamicList`||(n[t]=e.props[t])}),k(e.type,n,i?null:t)}let n={key:r};return e&&e.props&&Object.keys(e.props).forEach(t=>{t===`ref`||t===`children`||(n[t]=e.props[t])}),c(e,n,i?null:t)}))},v=(e,n,a)=>{let c=No(e),l=No(n),d={};return l.reduce((e,n,l)=>{let f=n.children?.[0]?.content&&r.services.interpolator.interpolate(n.children[0].content,h,r.language);if(n.type===`tag`){let p=c[parseInt(n.name,10)];!p&&t&&(p=t[n.name]),a.length===1&&!p&&(p=a[0][n.name]),p||={};let m={...n.attrs};o&&Object.keys(m).forEach(e=>{let t=m[e];sr(t)&&(m[e]=dr(t))});let y=Object.keys(m).length===0?p:Po({props:m},p),b=O(y),x=b&&Ao(n,!0)&&!n.voidElement,S=u&&fr(y)&&y.dummy&&!b,C=fr(t)&&Object.hasOwnProperty.call(t,n.name);if(sr(y)){let t=r.services.interpolator.interpolate(y,h,r.language);e.push(t)}else if(Ao(y)||x)_(y,g(y,n,a),e,l);else if(S)_(y,v(c,n.children,a),e,l);else if(Number.isNaN(parseFloat(n.name)))if(C)_(y,g(y,n,a),e,l,n.voidElement);else if(i.transSupportBasicHtmlNodes&&s.indexOf(n.name)>-1)if(n.voidElement)e.push(k(n.name,{key:`${n.name}-${l}`}));else{let t=d[n.name]||0;d[n.name]=t+1;let r,i=0;for(let e=0;e<c.length;e+=1){let a=c[e];if(O(a)&&a.type===n.name){if(i===t){r=a;break}i+=1}}let o=v(r?No(jo(r)):c,n.children,a);e.push(k(n.name,{key:`${n.name}-${l}`},o))}else if(n.voidElement)e.push(`<${n.name} />`);else{let t=v(c,n.children,a);e.push(`<${n.name}>${t}</${n.name}>`)}else if(fr(y)&&!b){let t=n.children[0]?f:null;t&&e.push(t)}else _(y,f,e,l,n.children.length!==1||!f)}else if(n.type===`text`){let t=i.transWrapTextNodes,a=typeof i.unescape==`function`?i.unescape:or().unescape,s=o?a(r.services.interpolator.interpolate(n.content,h,r.language)):r.services.interpolator.interpolate(n.content,h,r.language);t?e.push(k(t,{key:`${n.name}-${l}`},s)):e.push(s)}return e},[])};return jo(v([{dummy:!0,children:e||[]}],m,No(e||[]))[0])},zo=(e,t,n)=>{let r=e.key||t,i=c(e,{key:r});if(!i.props||!i.props.children||n.indexOf(`${t}/>`)<0&&n.indexOf(`${t} />`)<0)return i;function a(){return k(b,null,i)}return k(a,{key:r})},Bo=(e,t)=>e.map((e,n)=>zo(e,n,t)),Vo=(e,t)=>{let n={};return Object.keys(e).forEach(r=>{Object.assign(n,{[r]:zo(e[r],r,t)})}),n},Ho=(e,t,n,r)=>e?Array.isArray(e)?Bo(e,t):fr(e)?Vo(e,t):(pr(n,`TRANS_INVALID_COMPONENTS`,`<Trans /> "components" prop expects an object or array`,{i18nKey:r}),null):null,Uo=e=>!fr(e)||Array.isArray(e)?!1:Object.keys(e).reduce((e,t)=>e&&Number.isNaN(Number.parseFloat(t)),!0);function Wo({children:e,count:t,parent:n,i18nKey:r,context:i,tOptions:a={},values:o,defaults:s,components:c,ns:l,i18n:u,t:d,shouldUnescape:f,...p}){let m=u||cr();if(!m)return pr(m,`NO_I18NEXT_INSTANCE`,`Trans: You need to pass in an i18next instance using i18nextReactModule`,{i18nKey:r}),e;let h=d||m.t.bind(m)||(e=>e),g={...or(),...m.options?.react},_=l||h.ns||m.options?.defaultNS;_=sr(_)?[_]:_||[`translation`];let{transDefaultProps:v}=g,y=v?.tOptions?{...v.tOptions,...a}:a,b=f??v?.shouldUnescape,x=v?.values?{...v.values,...o}:o,S=v?.components?{...v.components,...c}:c,C=Io(e,g,m,r),w=s||y?.defaultValue||C||g.transEmptyNodeValue||(typeof r==`function`?ar(r):r),{hashTransKey:T}=g,E=r||(T?T(C||w):C||w);o=m.options?.interpolation?.defaultVariables?x&&Object.keys(x).length>0?{...x,...m.options.interpolation.defaultVariables}:{...m.options.interpolation.defaultVariables}:x;let D=Fo(e);D&&typeof D.count==`number`&&t===void 0&&(t=D.count);let O=o||t!==void 0&&!m.options?.interpolation?.alwaysFormat||!e?y.interpolation:{interpolation:{...y.interpolation,prefix:`#$?`,suffix:`?$#`}},A={...y,context:i||y.context,count:t,...o,...O,defaultValue:w,ns:_},j=E?h(E,A):w;j===E&&w&&(j=w);let M=Ho(S,j,m,r),N=M||e,P=null;Uo(M)&&(P=M,N=e);let F=Ro(N,P,j,m,g,A,b),I=n??g.defaultTransParent;return I?k(I,p,F):F}a();function Go({children:e,count:t,parent:n,i18nKey:r,context:i,tOptions:a={},values:o,defaults:s,components:c,ns:l,i18n:u,t:d,shouldUnescape:f,...p}){let{i18n:m,defaultNS:h}=v(ur)||{},g=u||m||cr(),_=d||g?.t.bind(g);return Wo({children:e,count:t,parent:n,i18nKey:r,context:i,tOptions:a,values:o,defaults:s,components:c,ns:l||_?.ns||h||g?.options?.defaultNS,i18n:g,t:d,shouldUnescape:f,...p})}var Ko={streaming:{icon:ft,labelKey:`capabilityBadges.streaming`},detection:{icon:te,labelKey:`capabilityBadges.detection`},recording:{icon:Ge,labelKey:`capabilityBadges.recording`},audio:{icon:ge,labelKey:`capabilityBadges.audio`},snapshot:{icon:Ye,labelKey:`capabilityBadges.snapshot`},motion:{icon:qe,labelKey:`capabilityBadges.motion`},ptz:{icon:Le,labelKey:`capabilityBadges.ptz`},webrtc:{icon:we,labelKey:`capabilityBadges.webrtc`},onvif:{icon:Pe,labelKey:`capabilityBadges.onvif`},analytics:{icon:ne,labelKey:`capabilityBadges.analytics`},"battery-operated":{icon:P,labelKey:`capabilityBadges.battery`},"native-snapshot":{icon:Ye,labelKey:`capabilityBadges.nativeSnapshot`},"pan-tilt-zoom":{icon:Le,labelKey:`capabilityBadges.ptz`},"two-way-audio":{icon:ge,labelKey:`capabilityBadges.twoWayAudio`},"doorbell-button":{icon:se,labelKey:`capabilityBadges.doorbell`},rebootable:{icon:$e,labelKey:`capabilityBadges.rebootable`},"vacuum-has-map":{icon:et,labelKey:`capabilityBadges.map`},"vacuum-has-ai":{icon:he,labelKey:`capabilityBadges.aiObstacle`},"mower-has-map":{icon:et,labelKey:`capabilityBadges.map`},"mower-has-targeted-mowing":{icon:F,labelKey:`capabilityBadges.targetedMowing`}},qo=R;function Jo({capabilities:e,showLabels:t=!1}){let{t:n}=V();return N(`div`,{className:`flex items-center gap-1 flex-wrap`,children:e.map(e=>{let r=Ko[e],i=r?.icon??qo,a=r?n(r.labelKey):e;return y(`span`,{className:`inline-flex items-center gap-1 rounded-md bg-surface-hover px-1.5 py-0.5 text-[10px] text-foreground-subtle`,title:a,children:[N(i,{className:`h-3 w-3`}),t&&N(`span`,{children:a})]},e)})})}a();var Yo={amcrest:{icon:lt,color:`#3b82f6`,label:`Amcrest`},hikvision:{icon:Ke,color:`#a855f7`,label:`Hikvision`},reolink:{icon:we,color:`#06b6d4`,label:`Reolink`},homeassistant:{icon:be,color:`#22d3ee`,label:`Home Assistant`},rtsp:{icon:Me,color:`#78716c`,label:`RTSP`},onvif:{icon:Me,color:`#78716c`,label:`ONVIF`}},Xo={sm:`h-4 w-4`,md:`h-5 w-5`,lg:`h-6 w-6`},Zo={sm:`h-7 w-7`,md:`h-8 w-8`,lg:`h-10 w-10`};function Qo(e){let t=e.toLowerCase();return t.startsWith(`provider-`)?t.slice(9):t}function $o(e){return Yo[Qo(e)]??{icon:lt,color:`#78716c`,label:e}}function es({type:e,size:t=`md`,showLabel:n}){let r=$o(e),i=r.icon,[a,o]=f(!1),s=mr(e);return y(`div`,{className:`flex items-center gap-2`,children:[N(`div`,{className:`flex items-center justify-center rounded-lg ${Zo[t]}`,style:{backgroundColor:`${r.color}15`},children:a||!s?N(i,{className:Xo[t],style:{color:r.color}}):N(`img`,{src:s,alt:r.label,className:Xo[t],onError:()=>o(!0)})}),n&&N(`span`,{className:`text-xs font-medium text-foreground-subtle`,children:r.label})]})}function Z({label:e,value:t,layout:n=`inline`}){return n===`stacked`?y(`div`,{className:`min-w-0 flex flex-col gap-0.5 px-0.5`,children:[N(`span`,{className:`text-[11px] text-foreground-subtle`,children:e}),N(`div`,{className:`min-w-0 text-[11px] text-foreground`,children:t})]}):y(`div`,{className:`${pe} flex items-start gap-2 sm:gap-3`,children:[N(`span`,{className:`w-20 sm:w-28 flex-shrink-0 text-[11px] text-foreground-subtle`,children:e}),N(`div`,{className:`flex-1 min-w-0 text-[11px] text-foreground`,children:t})]})}a();function ts({deviceId:e,initialName:t,label:n=`Name`,layout:r=`inline`,onError:i,onSaved:a,onCancel:o}){let{t:c}=V(),l=A(),[u,d]=f(!1),[p,m]=f(t),[h,g]=f(!1),_=j(null);s(()=>{u||m(t)},[t,u]),s(()=>{u&&_.current?.focus()},[u]);let v=zt({onSuccess:()=>{l.invalidateQueries({queryKey:[[`deviceManager`,`getDevice`]]}),l.invalidateQueries({queryKey:[[`deviceManager`,`listAll`]]}),l.invalidateQueries({queryKey:[[`deviceManager`,`getDeviceAggregate`]]})}}),b=async()=>{let n=p.trim();if(n.length===0||n===t){d(!1),m(t),a?.();return}g(!0);try{await v.mutateAsync({deviceId:e,name:n}),d(!1),a?.()}catch(e){i?.(e instanceof Error?e.message:String(e))}finally{g(!1)}},x=()=>{m(t),d(!1),o?.()};return u?N(Z,{label:n,layout:r,value:y(`div`,{className:`flex items-center gap-1`,children:[N(`input`,{ref:_,type:`text`,value:p,onChange:e=>m(e.target.value),onKeyDown:e=>{e.key===`Enter`?b():e.key===`Escape`&&x()},disabled:h,className:`flex-1 min-w-0 px-1.5 py-0.5 text-[11px] bg-background border border-border rounded focus:outline-none focus:border-primary`}),N(`button`,{type:`button`,onClick:()=>void b(),disabled:h,className:`p-0.5 rounded hover:bg-success/10 text-success disabled:opacity-50`,"aria-label":c(`inlineEdit.save`),children:N(Ce,{className:`h-3 w-3`})}),N(`button`,{type:`button`,onClick:x,disabled:h,className:`p-0.5 rounded hover:bg-danger/10 text-danger disabled:opacity-50`,"aria-label":c(`inlineEdit.cancel`),children:N(De,{className:`h-3 w-3`})})]})}):N(Z,{label:n,layout:r,value:y(`div`,{className:`flex items-center gap-2 group`,children:[N(`span`,{className:`truncate`,children:t}),N(`button`,{type:`button`,onClick:()=>d(!0),className:`p-0.5 rounded text-foreground-subtle hover:text-foreground hover:bg-surface-hover transition-colors`,"aria-label":c(`inlineEdit.editName`),children:N(ce,{className:`h-3.5 w-3.5`})})]})})}a();function ns({deviceId:e,initialLocation:t,label:n=`Location`,layout:r=`inline`,onError:i,onSaved:a,onCancel:o}){let{t:c}=V(),l=A(),[u,p]=f(!1),[m,h]=f(t??``),[g,_]=f(!1),v=j(null),{data:b}=er(void 0,{enabled:u}),x=b??[];s(()=>{u||h(t??``)},[t,u]),s(()=>{u&&v.current?.focus()},[u]);let S=wn({onSuccess:()=>{l.invalidateQueries({queryKey:[[`deviceManager`,`getDevice`]]}),l.invalidateQueries({queryKey:[[`deviceManager`,`listAll`]]}),l.invalidateQueries({queryKey:[[`deviceManager`,`getDeviceAggregate`]]}),l.invalidateQueries({queryKey:[[`deviceManager`,`listLocations`]]})}}),C=d(()=>{let e=m.trim().toLowerCase();return e.length===0?x:x.filter(t=>t.toLowerCase()!==e&&t.toLowerCase().includes(e))},[x,m]),w=m.trim().length>0&&!x.some(e=>e.toLowerCase()===m.trim().toLowerCase()),T=async n=>{let r=(n??m).trim(),o=r.length===0?null:r;if(o===(t??null)){p(!1),a?.();return}_(!0);try{await S.mutateAsync({deviceId:e,location:o}),p(!1),a?.()}catch(e){i?.(e instanceof Error?e.message:String(e))}finally{_(!1)}},E=()=>{h(t??``),p(!1),o?.()};return u?N(Z,{label:n,layout:r,value:y(`div`,{className:`relative`,children:[y(`div`,{className:`flex items-center gap-1`,children:[N(`input`,{ref:v,type:`text`,value:m,onChange:e=>h(e.target.value),onKeyDown:e=>{e.key===`Enter`?T():e.key===`Escape`&&E()},disabled:g,placeholder:c(`shared.locationRow.roomAreaOrLeaveEmpty`,`Room / area (or leave empty to clear)`),className:`flex-1 min-w-0 px-1.5 py-0.5 text-[11px] bg-background border border-border rounded focus:outline-none focus:border-primary`}),N(`button`,{type:`button`,onClick:()=>void T(),disabled:g,className:`p-0.5 rounded hover:bg-success/10 text-success disabled:opacity-50`,"aria-label":c(`inlineEdit.save`),children:N(Ce,{className:`h-3 w-3`})}),N(`button`,{type:`button`,onClick:E,disabled:g,className:`p-0.5 rounded hover:bg-danger/10 text-danger disabled:opacity-50`,"aria-label":c(`inlineEdit.cancel`),children:N(De,{className:`h-3 w-3`})})]}),(C.length>0||w)&&y(`div`,{className:`absolute z-10 left-0 right-0 mt-0.5 max-h-40 overflow-y-auto rounded-md border border-border bg-surface shadow-md`,children:[C.map(e=>y(`button`,{type:`button`,onClick:()=>{h(e),T(e)},className:`w-full flex items-center gap-2 px-2 py-1 text-left text-[11px] hover:bg-surface-hover`,children:[N(ke,{className:`h-3 w-3 text-foreground-subtle flex-shrink-0`}),N(`span`,{className:`truncate`,children:e})]},e)),w&&y(`button`,{type:`button`,onClick:()=>void T(),className:`w-full flex items-center gap-2 px-2 py-1 text-left text-[11px] hover:bg-surface-hover border-t border-border`,children:[N(`span`,{className:`text-foreground-subtle`,children:c(`shared.locationRow.create`,`Create`)}),y(`span`,{className:`font-medium truncate`,children:[`"`,m.trim(),`"`]})]})]})]})}):N(Z,{label:n,layout:r,value:y(`div`,{className:`flex items-center gap-2 group`,children:[t?N(`span`,{className:`truncate`,children:t}):N(`span`,{className:`italic text-foreground-subtle`,children:c(`common.unset`)}),N(`button`,{type:`button`,onClick:()=>p(!0),className:`p-0.5 rounded text-foreground-subtle hover:text-foreground hover:bg-surface-hover transition-colors`,"aria-label":c(`inlineEdit.editLocation`),children:N(ce,{className:`h-3.5 w-3.5`})})]})})}a();function rs(e){return Sn({addonId:e,projection:`slim`})}function is(e){return hn({deviceId:e},{enabled:Number.isFinite(e)})}var as=3e4,os=2e3;function ss(e){let t=j(0);return t.current===0&&(t.current=Date.now()),jn({parentDeviceId:e},{enabled:Number.isFinite(e),staleTime:0,refetchOnMount:`always`,refetchInterval:e=>{let n=e.state.data;return n&&n.length>0||Date.now()-t.current>=as?!1:os}})}a();function cs({deviceId:e}){let{t}=V(),n=A(),{data:r}=is(e),{data:i}=ss(e),[a,o]=f(null),s=Kt({onSuccess:()=>{o(null),n.invalidateQueries({queryKey:[[`deviceManager`]]})},onError:e=>{o(`Could not change primary child: ${e.message}`)}});if(r==null||String(r.type??``)!==ht.Container)return null;let c=(i??[]).map(e=>({id:e.id,stableId:e.stableId,type:e.type,name:e.name,...e.sourceInfo?{sourceInfo:{id:e.sourceInfo.id}}:{}}));if(c.length<=1)return null;let l=xn(c,typeof r.linkDeviceId==`number`?r.linkDeviceId:null,typeof r.primaryChildEntityId==`string`?r.primaryChildEntityId:null),u=l===null?c[0].id:l.id;return y(E,{children:[N(Z,{label:t(`shared.primaryChildRow.primaryChild`,`Primary child`),value:N(Fn,{childrenList:c,selectedId:u,onSetPrimary:t=>s.mutate({deviceId:e,primaryChildEntityId:t}),disabled:s.isPending})}),a!==null&&N(`p`,{role:`alert`,className:`px-3 sm:px-4 py-1.5 text-[11px] text-danger`,children:a})]})}a();var ls=[`manufacturer`,`model`,`hardware`,`firmware`,`serialNumber`,`uid`,`mac`,`itemNo`];function us(e){return e.replace(/([a-z])([A-Z])/g,`$1 $2`).replace(/^./,e=>e.toUpperCase())}function ds(e){return e==null?`—`:typeof e==`string`||typeof e==`number`||typeof e==`boolean`?String(e):JSON.stringify(e)}function fs(){let{t:e}=V(),t=Hn(),n=qt(),{data:r}=hn({deviceId:t??0},{enabled:t!==null}),{data:i}=pn({deviceId:t??0},{enabled:t!==null}),a=r??n??null,[o,s]=f(`identity`);if(t===null||!a)return null;let c=String(a.stableId??``),l=String(a.name??``),u=String(a.type??``),d=String(a.addonId??``),p=a.features??[],m=new Set([`device-status`,`feature-probe`,`device-ops`]),h=(i?.entries??[]).filter(e=>e.kind===`native`&&!m.has(e.capName)).map(e=>e.capName),g=p.length>0?p:h,_=a.location??null,v=a.metadata??null,b=v!==null&&Object.keys(v).length>0;return y(`div`,{className:`rounded-lg border border-border bg-surface overflow-hidden`,children:[y(`div`,{className:`border-b border-border px-3 sm:px-4 py-2 flex items-center justify-between gap-3`,children:[N(`h2`,{className:`text-[11px] font-semibold text-foreground uppercase tracking-wider`,children:e(`overviewAdapters.deviceInfoAdapter.deviceInfo`,`Device Info`)}),b&&y(`div`,{className:`flex items-center gap-1 rounded-md bg-surface-hover p-0.5`,children:[N(ps,{active:o===`identity`,onClick:()=>s(`identity`),label:e(`overviewAdapters.deviceInfoAdapter.identity`,`Identity`)}),N(ps,{active:o===`hardware`,onClick:()=>s(`hardware`),label:e(`overviewAdapters.deviceInfoAdapter.hardware`,`Hardware`)})]})]}),(!b||o===`identity`)&&y(`div`,{className:`divide-y divide-border`,children:[N(Z,{label:`ID`,value:y(`span`,{className:`font-mono text-[11px] text-foreground`,children:[`#${t}`,y(`span`,{className:`ml-1.5 text-foreground-subtle`,children:[`(`,c,`)`]})]})}),N(ts,{deviceId:t,initialName:l}),N(ns,{deviceId:t,initialLocation:_}),N(cs,{deviceId:t}),N(Z,{label:e(`overviewAdapters.deviceInfoAdapter.type`,`Type`),value:u}),N(Z,{label:e(`overviewAdapters.deviceInfoAdapter.provider`,`Provider`),value:N(es,{type:d,size:`sm`,showLabel:!0})}),N(Z,{label:e(`overviewAdapters.deviceInfoAdapter.capabilities`,`Capabilities`),value:g.length>0?N(Jo,{capabilities:g,showLabels:!0}):N(`span`,{className:`text-[11px] text-foreground-subtle`,children:e(`overviewAdapters.deviceInfoAdapter.none`,`None`)})})]}),b&&o===`hardware`&&N(ms,{metadata:v})]})}function ps({active:e,onClick:t,label:n}){return N(`button`,{type:`button`,onClick:t,className:`px-2 py-0.5 rounded text-[10px] font-medium transition-colors ${e?`bg-surface text-foreground shadow-sm`:`text-foreground-subtle hover:text-foreground`}`,children:n})}function ms({metadata:e}){let{t}=V(),n=ls.filter(t=>t in e),r=Object.keys(e).filter(e=>!ls.includes(e)).toSorted(),i=[...n,...r];return y(`div`,{children:[N(`div`,{className:`px-3 sm:px-4 py-1.5 text-[10px] text-foreground-subtle border-b border-border bg-surface-subtle/40`,children:t(`overviewAdapters.deviceInfoAdapter.autoPopulatedByTheDriver`,`Auto-populated by the driver on every connect. Read-only.`)}),N(`div`,{className:`divide-y divide-border`,children:i.map(t=>N(Z,{label:us(t),value:N(`span`,{className:`font-mono text-[11px] text-foreground break-all`,children:ds(e[t])})},t))})]})}function hs(e){return e.hubReachable?e.authOk===!1?{kind:`auth-expired`}:{kind:`cluster-degraded`,offlineAgents:e.offlineAgents,offlineAgentIds:e.offlineAgentIds}:{kind:`hub-unreachable`}}function gs(e){switch(e.kind){case`connected`:return null;case`reconnecting`:return{severity:`warning`,message:B.t(`connection.reconnecting`),i18nKey:`connection.reconnecting`,showSpinner:!0};case`cluster-degraded`:{let t=e.offlineAgentIds??[];return t.length>0?{severity:`warning`,message:B.t(`connection.degradedNodes`,{nodes:t.join(`, `),count:t.length}),i18nKey:`connection.degradedNodes`,i18nParams:{nodes:t.join(`, `),count:t.length},showSpinner:!0}:e.offlineAgents!==null&&e.offlineAgents>0?{severity:`warning`,message:B.t(`connection.degradedCount`,{count:e.offlineAgents}),i18nKey:`connection.degradedCount`,i18nParams:{count:e.offlineAgents},showSpinner:!0}:{severity:`warning`,message:B.t(`connection.degraded`),i18nKey:`connection.degraded`,showSpinner:!0}}case`hub-unreachable`:return{severity:`danger`,message:B.t(`connection.disconnected`),i18nKey:`connection.disconnected`,showSpinner:!0};case`auth-expired`:return{severity:`danger`,message:B.t(`connection.sessionExpired`),i18nKey:`connection.sessionExpired`,showSpinner:!1,action:`sign-in`}}}var _s=4e3,vs=5e3;function ys(e){if(typeof e!=`object`||!e)return{offline:null,offlineIds:null,ok:null};let t={...e},n=typeof t.ok==`boolean`?t.ok:null,r=t.agents;if(typeof r!=`object`||!r)return{offline:null,offlineIds:null,ok:n};let i={...r},a=i.offline,o=typeof a==`number`?a:null,s=i.offlineIds;return{offline:o,offlineIds:Array.isArray(s)?s.filter(e=>typeof e==`string`):null,ok:n}}async function bs(e,t,n,r){let i=new AbortController,a=setTimeout(()=>i.abort(),n);try{return await e(t,{method:`GET`,signal:i.signal,credentials:`omit`,...r===void 0?{}:{headers:r}})}finally{clearTimeout(a)}}async function xs(e){let t=e.fetchFn??fetch,n=e.timeoutMs??_s,r=e.origin.replace(/\/+$/,``),i;try{i=await bs(t,`${r}/health`,n)}catch{return{hubReachable:!1,authOk:`unknown`,offlineAgents:null,offlineAgentIds:null}}if(!i.ok)return{hubReachable:!1,authOk:`unknown`,offlineAgents:null,offlineAgentIds:null};let a=null,o=e.getToken();if(o!==null&&o!==``)try{let e=await bs(t,`${r}/health/details`,n,{Authorization:`Bearer ${o}`});e.ok&&(a=await e.json())}catch{}let s;try{s=ys(a??await i.json())}catch{s={offline:null,offlineIds:null,ok:null}}if(s.ok===!1)return{hubReachable:!1,authOk:`unknown`,offlineAgents:null,offlineAgentIds:null};let c=e.getToken(),l=`unknown`;if(c!==null&&c!==``)try{let e=await bs(t,`${r}/trpc/auth.me`,n,{Authorization:`Bearer ${c}`});e.status===401||e.status===403?l=!1:e.ok&&(l=!0)}catch{l=`unknown`}return{hubReachable:!0,authOk:l,offlineAgents:s.offline,offlineAgentIds:s.offlineIds}}var Ss={kind:`connected`},Cs={kind:`reconnecting`};function ws(e){let t=e.probeIntervalMs??vs,n=new Set,r=Ss,i=0,a=!1,o=null;function s(e){if(r!==e){r=e;for(let e of n)e()}}function c(){a=!1,o!==null&&(clearTimeout(o),o=null)}function l(){let n=i;e.probe().then(e=>{n!==i||!a||(s(hs(e)),o=setTimeout(l,t))},()=>{n!==i||!a||(s({kind:`hub-unreachable`}),o=setTimeout(l,t))})}function u(e){if(i+=1,e===`connected`){c(),s(Ss);return}if(e===`connecting`){c(),s(Cs);return}(r.kind===`connected`||r.kind===`reconnecting`)&&s(Cs),o!==null&&(clearTimeout(o),o=null),a=!0,l()}return{getSnapshot:()=>r,subscribe:e=>(n.add(e),()=>{n.delete(e)}),onSdkConnectionState:u,dispose:()=>{i+=1,c(),n.clear()}}}var Ts=null;function Es(){return Ts===null&&(Ts=ws({probe:()=>xs({origin:_e(),getToken:()=>localStorage.getItem(`camstack_admin_token`)})})),Ts}function Ds(e){Es().onSdkConnectionState(e)}var Os=null,ks=0;function Q(){if(!Os){let e=ks;Os=En({serverUrl:_e(),token:localStorage.getItem(`camstack_admin_token`)??void 0,getLanguage:()=>B.language,onConnectionChange:t=>{e===ks&&Ds(t)}})}return Os}function As(){let e=Os;Os=null,ks+=1,e?.close()}var js=`camstack_admin_token`,Ms=`camstack_admin_refresh`,Ns=`camstack_admin_token_expires`;function Ps(e){try{let t=localStorage.getItem(e);return t!==null&&t.length>0?t:null}catch{return null}}function Fs(e,t){try{t===null?localStorage.removeItem(e):localStorage.setItem(e,t)}catch{}}function Is(){let e=Ps(js);if(e===null)return null;let t=Ps(Ms),n=Number(Ps(Ns));return{token:e,...t===null?{}:{refreshToken:t},...Number.isFinite(n)&&n>0?{expiresAt:n}:{}}}function Ls(e){Fs(js,e.token),Fs(Ms,e.refreshToken??null),Fs(Ns,e.expiresAt===void 0?null:String(e.expiresAt))}function Rs(){Fs(js,null),Fs(Ms,null),Fs(Ns,null)}function zs(e){let t=e.get(`token`);if(t===null||t.length===0)return null;let n=e.get(`refreshToken`),r=Number(e.get(`expiresAt`));return{token:t,...n!==null&&n.length>0?{refreshToken:n}:{},...Number.isFinite(r)&&r>0?{expiresAt:r}:{}}}async function Bs(e){await fetch(z(`/api/auth/session`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({token:e})}).catch(()=>{})}var Vs=new Set;function Hs(e){return Vs.add(e),()=>Vs.delete(e)}var Us=null;function Ws(){return Us===null&&(Us=new jt({refresh:async e=>{let t=Is();if(t?.refreshToken!==void 0&&t.refreshToken!==e&&(t.expiresAt??0)>Date.now()+6e4)return t;let n=await Q().refreshSession(e);return{token:n.token,refreshToken:n.refreshToken,expiresAt:n.expiresAt}},onTokens:e=>{Ls(e),Q().setToken(e.token),Bs(e.token)},onExpired:()=>{Rs();for(let e of Vs)e()}})),Us}function Gs(e){Ls(e),Ws().adopt(e)}var Ks=512;function qs(e){if(!e||e.length>Ks)return null;let t=mt(e);return t===null?!e.startsWith(`/`)||e.startsWith(`//`)||e.includes(`\\`)||e.includes(`://`)||e.includes(`..`)||e===`/login`||e.startsWith(`/login?`)||e.startsWith(`/login/`)?null:{kind:`path`,path:e}:{kind:`app-callback`,url:t}}var Js=/^[A-Za-z0-9_-]{43,128}$/,Ys=/^[A-Za-z0-9._~-]{1,256}$/;function Xs(e){let{codeChallenge:t,state:n}=e;return!t||!Js.test(t)||(e.codeChallengeMethod??`S256`)!==`S256`||!n||!Ys.test(n)?null:{codeChallenge:t,state:n,purpose:e.purpose===`step-up`?`step-up`:`new-session`}}var Zs=`camstack:login-app-handoff`;function Qs(e){if(!e)return null;try{let t=JSON.parse(e);if(typeof t!=`object`||!t)return null;let n=e=>{let n=Reflect.get(t,e);return typeof n==`string`?n:null};return Xs({codeChallenge:n(`codeChallenge`),state:n(`state`),purpose:n(`purpose`)})}catch{return null}}function $s(e,t=Date.now()){e!==null&&dc(Zs,JSON.stringify(e),Qs,t)}function ec(e=Date.now()){return fc(Zs,Qs,e)}function tc(e,t,n){return`${e}?${`code=${encodeURIComponent(t)}`}${n===void 0?``:`&state=${encodeURIComponent(n)}`}`}function nc(e,t=Date.now()){return hc(t)??qs(e)}var rc=2048;function ic(e){return!e||e.length>rc||!e.startsWith(`/`)||e.startsWith(`//`)||e.includes(`\\`)||e.includes(`://`)||e.includes(`..`)||e===`/login`||e.startsWith(`/login?`)||e.startsWith(`/login/`)?null:e}function ac(e,t=Date.now()){dc(lc,e,ic,t)}function oc(e=Date.now()){return fc(lc,ic,e)}function sc(e,t=Date.now()){return oc(t)??ic(e)}var cc=`camstack:login-redirect`,lc=`camstack:login-next`,uc=10*6e4;function dc(e,t,n,r){let i=pc();if(!i||!n(t))return;let a={raw:t??``,at:r};try{i.setItem(e,JSON.stringify(a))}catch{}}function fc(e,t,n){let r=pc();if(!r)return null;let i=null;try{i=r.getItem(e),r.removeItem(e)}catch{return null}if(!i)return null;try{let e=JSON.parse(i);if(typeof e!=`object`||!e)return null;let r=Reflect.get(e,`at`),a=Reflect.get(e,`raw`);return typeof r!=`number`||typeof a!=`string`||n-r>uc?null:t(a)}catch{return null}}function pc(){if(typeof window>`u`)return null;try{return window.sessionStorage}catch{return null}}function mc(e,t=Date.now()){dc(cc,e,qs,t)}function hc(e=Date.now()){return fc(cc,qs,e)}function gc(e){try{let t=e.split(`.`);if(t.length<2||!t[1])return null;let n=JSON.parse(atob(t[1]));return{id:String(n.userId??``),username:String(n.username??`unknown`),isAdmin:!!n.isAdmin,exp:Number(n.exp??0),scopes:_c(n.scopes)}}catch{return null}}function _c(e){return xt(e)}function vc(e){let t=gc(e);return t?t.exp*1e3<Date.now():!0}a();var yc=`changeme`;function bc(e){return{token:e.token,...e.refreshToken===void 0?{}:{refreshToken:e.refreshToken},...e.expiresAt===void 0?{}:{expiresAt:e.expiresAt}}}async function xc(e,t){if(await Bs(e),t.kind===`path`){window.location.replace(z(t.path));return}try{As();let e=ec();if(e===null)throw Error(`The app sent no PKCE challenge and state`);let{code:n}=await Q().trpcClient.auth.createHandoffCode.mutate({purpose:e.purpose,codeChallenge:e.codeChallenge,state:e.state});window.location.replace(tc(t.url,n,e.state))}catch{window.location.replace(z(`/`))}}async function Sc(e,t){await Bs(e),window.location.replace(z(t))}var Cc=g(null);function wc({children:e}){let[t,n]=f(null),[r,i]=f(!0),[a,o]=f(!1);s(()=>{if(typeof window<`u`&&window.location.hash.startsWith(`#token=`)){let e=new URLSearchParams(window.location.hash.slice(1)),t=zs(e),n=t?.token??null;if(t!==null&&n!==null){Gs(t);let r=hc();if(r){xc(n,r);return}let i=oc()??ic(e.get(`next`));if(i){Sc(n,i);return}window.history.replaceState({},``,z(`/`))}}c()},[]);let c=async()=>{let e=Is();if(e===null){i(!1);return}let t=e.token;if(e.refreshToken!==void 0){let n=Ws();n.adopt(e),await n.ensureFresh();let r=Is();if(r===null){i(!1);return}t=r.token}if(vc(t)){Rs(),i(!1);return}let r=gc(t);if(!r){Rs(),i(!1);return}Bs(t),Q().trpcClient.system.info.query().then(()=>n(r)).catch(e=>{let t=e?.data?.code;t===`UNAUTHORIZED`||t===`FORBIDDEN`?(Ws().stop(),Rs(),As()):n(r)}).finally(()=>i(!1))};s(()=>Hs(()=>{As(),n(null),o(!1)}),[]);let l=p(async(e,t)=>{let r=await Q().login(e,t,{refreshable:!0}),i=r.secondFactors??(r.requiresTotp===!0?[`totp`]:[]);if(i.length>0)return{kind:`second-factor`,challengeToken:r.token,factors:i};let a=r.token;return Gs(bc(r)),await Bs(a),As(),n(gc(a)),o(t===yc),{kind:`ok`}},[]),u=p(async(e,t)=>{let r=await Q().loginVerifyTotp(e,t,{refreshable:!0}),i=r.token;Gs(bc(r)),await Bs(i),As(),n(gc(i)),o(!1)},[]),d=p(async(e,t)=>{Gs({token:e,...t}),await Bs(e),As(),n(gc(e)),o(!1)},[]),m=p(()=>{Q().logout().catch(()=>{}),Ws().stop(),Rs(),fetch(z(`/api/auth/session`),{method:`DELETE`}).catch(()=>{}),As(),n(null),o(!1)},[]),h=p(()=>{o(!1)},[]);return N(Cc.Provider,{value:{user:t,loading:r,mustChangePassword:a,login:l,verifyTotp:u,finalizePasskeyLogin:d,logout:m,clearMustChangePassword:h},children:e})}function Tc(){let e=v(Cc);if(!e)throw Error(`useAuth must be used within AuthProvider`);return e}a();function Ec(e,t){for(let n of e)for(let e of n.fields){if(!(`key`in e)||e.key!==t)continue;if(e.type===`button`||e.type===`separator`||e.type===`info`)return!0;let r=e.immediate;return r===!0?!0:r===!1?!1:n.immediate===!0}return!1}function Dc({schema:e,serverValues:t,onImmediateSave:n,onDeferredSave:r}){let[i,a]=f({}),[o,c]=f({}),[l,u]=f(!1),m=j(null),h=e?.sections??[],g=Object.keys(i).length>0,_=d(()=>({...t,...o,...i}),[t,o,i]);s(()=>{if(g||Object.keys(o).length>0){u(!0);return}m.current&&clearTimeout(m.current),m.current=setTimeout(()=>u(!1),500)},[g,o]),s(()=>()=>{m.current&&clearTimeout(m.current)},[]);let v=p(()=>{u(!0),m.current&&clearTimeout(m.current),m.current=setTimeout(()=>u(!1),2e3)},[]),y=p(e=>{v();let r={},o={},s={...t,...i};for(let[t,n]of Object.entries(e))s[t]!==n&&(Ec(h,t)?r[t]=n:o[t]=n);Object.keys(r).length>0&&n(r),a(e=>{let t={...e};for(let e of Object.keys(r))delete t[e];for(let[e,n]of Object.entries(o))t[e]=n;return t})},[v,t,i,h,n]),b=p(e=>{let t={},n={};for(let[r,a]of Object.entries(i))e.includes(r)?t[r]=a:n[r]=a;if(a(n),Object.keys(t).length===0)return;let o=Object.keys(t),s=r(t);if(s===void 0||typeof s.then!=`function`)return;c(e=>({...e,...t}));let l=()=>c(e=>{let t={...e};for(let e of o)delete t[e];return t});s.then(l,()=>{l(),a(e=>{let n={...e};for(let e of o)e in n||(n[e]=t[e]);return n})})},[i,r]),x=p(e=>{a(t=>{let n={...t};for(let t of e)delete n[t];return n})},[]),S=p(()=>{a({})},[]);return{values:_,pendingKeys:Object.keys(i),hasPendingEdits:g,editingPaused:l,handleChange:y,handleSave:b,handleDiscard:x,resetAll:S}}function Oc(e){return e>=8}a();function kc(e){if(typeof e!=`object`||!e)return;let t=Reflect.get(e,`windows`);if(!(!Array.isArray(t)||t.length===0))return e}function Ac(e){return e.type===`multiselect`}function jc(e){let t=e.suggestions;return t===void 0||t.length===0?[]:t.map(e=>({value:e,label:e}))}function Mc(e){return e.map(e=>({value:e.value,label:e.label,...e.description===void 0?{}:{description:e.description},...e.iconId===void 0?{}:{iconId:e.iconId}}))}function Nc(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`):[]}function Pc({field:e,values:t,onChange:n,disabled:r,translationFn:i,onTestField:a,externalProbe:o,allFields:s,onAction:c}){let{t:l}=V();if(e.type===`tags`){if(!en(e,t,s))return null;let a=e.creatable!==!1;return N(Kn,{mode:`multi`,options:jc(e),value:Nc(t[e.key]),onChange:t=>n(e.key,t),disabled:r===!0||e.disabled===!0,creatable:a,...e.createLabel===void 0?{}:{createLabel:e.createLabel},...e.maxTags===void 0?{}:{maxItems:e.maxTags},label:Ic(e.label,i),description:e.description===void 0?void 0:Ic(e.description,i),placeholder:e.placeholder??l(`formBuilder.formBuilder.searchOrAdd`,`Search or add…`),testId:`config-tags-${e.key}`})}if(e.type===`schedule`){if(!en(e,t,s))return null;let r=Ic(e.label,i),a=e.description===void 0?void 0:Ic(e.description,i),o=e.mode===`times`?`times`:`windows`;return y(`div`,{className:`space-y-1`,"data-testid":`config-schedule-${e.key}`,children:[r!==void 0&&N(`label`,{className:`block text-[11px] font-medium text-foreground-subtle`,children:r}),a!==void 0&&N(`p`,{className:`text-[10px] text-foreground-subtle`,children:a}),N(gr,{mode:o,value:kc(t[e.key]),onChange:t=>n(e.key,t)})]})}return Ac(e)&&(Oc(e.options.length)||e.creatable===!0)?en(e,t,s)?N(Kn,{mode:`multi`,options:Mc(e.options),value:Nc(t[e.key]),onChange:t=>n(e.key,t),disabled:r===!0||e.disabled===!0,creatable:e.creatable===!0,...e.createLabel===void 0?{}:{createLabel:e.createLabel},...e.maxItems===void 0?{}:{maxItems:e.maxItems},label:Ic(e.label,i),description:e.description===void 0?void 0:Ic(e.description,i),placeholder:e.placeholder??l(`formBuilder.formBuilder.searchToAdd`,`Search to add…`),testId:`config-multiselect-${e.key}`,listboxId:`msel-${e.key}`}):null:N($n,{field:e,values:t,onChange:n,disabled:r,translationFn:i,onTestField:a,externalProbe:o,allFields:s,onAction:c})}function Fc(e){return/^[a-zA-Z0-9_]+(\.[a-zA-Z0-9_]+)+$/.test(e)}function Ic(e,t){if(e!==void 0)return t&&Fc(e)?t(e):e}function Lc({section:e,values:t,onChange:n,disabled:r,translationFn:i,onTestField:a,probeResults:o,onAction:s}){let[c,l]=f(e.defaultCollapsed??!1),u=e.style===`accordion`;if(e.fields.reduce((n,r)=>n+ +!!en(r,t,e.fields),0)===0)return null;let d=e.fields,p=e.columns??2,m=p===1?`grid-cols-1`:p===3?`grid-cols-1 @[480px]:grid-cols-2 @[880px]:grid-cols-3`:p===4?`grid-cols-1 @[480px]:grid-cols-2 @[1140px]:grid-cols-4`:`grid-cols-1 @[480px]:grid-cols-2`,h=e.fields.length===1&&e.fields[0]?.type===`widget`?e.fields[0]:void 0,g=h!==void 0||!e.title&&!e.description;return y(`div`,{className:`@container rounded-lg border border-border bg-surface p-3`,style:{containerType:`inline-size`},"data-settings-section":e.id,children:[!g&&y(`div`,{className:[`flex items-center justify-between mb-2`,u?`cursor-pointer`:``].join(` `),onClick:u?()=>l(e=>!e):void 0,children:[y(`div`,{children:[e.title&&N(`h3`,{className:`text-[11px] font-semibold text-foreground-subtle uppercase tracking-wider`,children:Ic(e.title,i)}),e.description&&N(`p`,{className:`text-[10px] text-foreground-subtle mt-0.5`,children:Ic(e.description,i)})]}),u&&N(`span`,{className:`text-foreground-subtle text-xs ml-2`,children:c?`▸`:`▾`})]}),!(c&&!g)&&(h===void 0?N(E,{children:N(`div`,{className:`grid ${m} gap-x-3 gap-y-2.5`,children:d.map(c=>N(Pc,{field:c,values:t,onChange:n,disabled:r,translationFn:i,onTestField:a,externalProbe:o?.[c.key],allFields:e.fields,onAction:s},c.key))})}):N($n,{field:h,values:t,onChange:n,disabled:r,translationFn:i,onTestField:a,externalProbe:o?.[h.key],allFields:e.fields,onAction:s},h.key))]})}function Rc({schema:e,values:t,onChange:n,disabled:r,translationFn:i,onTestField:a,probeResults:o,onClearProbe:s,onAction:c,visibilityContext:l}){let u=l?{...l,...t}:t,d=(e,r)=>{n({...t,[e]:r}),s?.(e)};return N(`div`,{className:`space-y-4`,children:e.sections.map((e,t)=>N(Lc,{section:e,values:u,onChange:d,disabled:r,translationFn:i,onTestField:a,probeResults:o,onAction:c},`${e.id}-${t}`))})}function zc({pendingCount:e,onSave:t,onDiscard:n,saving:r=!1,saveLabel:i=`Save`,discardLabel:a=`Discard`}){let{t:o}=V();return e<=0?null:y(`div`,{className:`sticky bottom-0 -mb-3 flex items-center justify-between gap-3 rounded-lg border border-primary/40 bg-primary/5 px-3 py-2 shadow-sm z-10`,children:[N(`span`,{className:`text-xs text-foreground`,children:o(`formBuilder.saveBar.unsavedChanges`,{count:e})}),y(`div`,{className:`flex items-center gap-2`,children:[N(`button`,{type:`button`,onClick:n,disabled:r,className:`inline-flex items-center rounded-md border border-border px-2.5 py-1 text-xs text-foreground-subtle hover:bg-surface-hover disabled:opacity-50`,children:a}),N(`button`,{type:`button`,onClick:t,disabled:r,className:`inline-flex items-center rounded-md bg-primary px-3 py-1 text-xs font-medium text-primary-foreground hover:bg-primary/90 disabled:opacity-50`,children:r?o(`formBuilder.formSaveBar.saving`,`Saving…`):i})]})]})}function Bc({tabs:e,activeId:t,onChange:n,countByTab:r,pendingByTab:i}){return e.length===0?null:N(`div`,{className:`flex flex-wrap items-center gap-1 border-b border-border shrink-0`,children:e.map(e=>{let a=e.id===t,o=r?.get(e.id)??0,s=i?.get(e.id)??0;return y(`button`,{type:`button`,onClick:()=>n(e.id),className:`relative shrink-0 px-3 py-1.5 text-xs font-medium rounded-t-md transition-colors -mb-px border-b-2 whitespace-nowrap ${a?`text-primary border-primary bg-primary/5`:`text-foreground-subtle border-transparent hover:text-foreground hover:bg-surface-hover`}`,children:[e.label,o>0&&y(`span`,{className:`ml-1.5 text-[10px] opacity-60`,children:[`(`,o,`)`]}),s>0&&N(`span`,{className:`ml-1.5 inline-flex h-1.5 w-1.5 rounded-full bg-primary`})]},e.id)})})}a();function Vc({schema:e,values:t,pendingKeys:n,onChange:r,onAction:i,onSave:a,onDiscard:o,disabled:s,activeSubTab:c,onSubTabChange:l,flattenTabs:u=!1,visibilityContext:p}){let m=e.tabs??[],h=d(()=>{let t=new Map;for(let n of e.sections){let e=n.tab??`general`,r=t.get(e)??[];r.push(n),t.set(e,r)}return t},[e.sections]),g=new Set(m.map(e=>e.id)),_=[...m,...[...h.keys()].filter(e=>!g.has(e)).map(e=>({id:e,label:e,icon:`wrench`,order:100}))],v=_[0]?.id??`general`,[b,x]=f(v),S=l!==void 0,C=new Set(_.map(e=>e.id)),w=j(new Set);for(let e of C)w.current.add(e);let T=w.current,E=(e=>e&&(C.has(e)||T.has(e))?e:v)(S?c:b),D=e=>{S?l(e):x(e)},O=h.get(E)??[],k={sections:O.length<=1?O.length===1?[{...O[0],title:``}]:O:O.every(e=>!e.title)?[{...O[0],title:``,fields:O.flatMap(e=>e.fields)}]:O},A=N(zc,{pendingCount:n.length,onSave:()=>a(n),onDiscard:()=>o(n),saving:s});if(u||_.length<=1)return y(`div`,{className:`flex flex-col gap-3`,children:[N(Rc,{schema:e,values:t,onChange:r,onAction:i,disabled:s,visibilityContext:p}),A]});let M=new Map,P=new Map;for(let[e,t]of h){M.set(e,t.length);let r=new Set,i=e=>{for(let t of e)if(`key`in t&&typeof t.key==`string`&&r.add(t.key),t.type===`group`)i(t.fields);else if(t.type===`sub-tabs`)for(let e of t.tabs)i(e.fields)};for(let e of t)i(e.fields);let a=n.filter(e=>r.has(e)).length;a>0&&P.set(e,a)}return y(`div`,{className:`flex flex-col gap-3`,children:[N(Bc,{tabs:_.map(e=>({id:e.id,label:e.label})),activeId:E,onChange:D,countByTab:M,pendingByTab:P}),N(on,{tabKey:E,children:N(Rc,{schema:k,values:t,onChange:r,onAction:i,disabled:s,visibilityContext:p})}),A]})}var Hc=`device-export`,Uc=`export`,Wc=`Export`;function Gc(e){return e.type===`separator`||e.type===`info`||e.type===`object-array`||e.type===`widget`||e.type===`addon-action-button`||e.type===`device-action-button`?!1:e.type===`group`?e.fields.some(Gc):e.type===`sub-tabs`?e.tabs.some(e=>e.fields.some(Gc)):e.writerCapName===Hc}function Kc(e){return e.tab===`export`?!0:e.fields.some(Gc)}var qc=`host/extensions-panel`;function Jc(e){return e.type===`widget`?e.widgetId===qc:e.type===`group`?e.fields.some(Jc):e.type===`sub-tabs`?e.tabs.some(e=>e.fields.some(Jc)):!1}function Yc(e){return e.fields.some(Jc)}function Xc(e,t){return!t&&e!==void 0&>.includes(e)}function Zc(e){return e.location!==`top-tab`&&!Kc(e)&&!Yc(e)}function Qc(e,t,n,r){return!r||Xc(t,n)?!0:(e??[]).some(Zc)}function $c(e,t){for(let n of e){if(n.type===`group`){$c(n.fields,t);continue}if(n.type===`sub-tabs`){for(let e of n.tabs)$c(e.fields,t);continue}if(!(`value`in n))continue;let e=n.value===void 0?n.default:n.value;e!==void 0&&(t[n.key]=e)}}function el(e){let t={};for(let n of e)$c(n.fields,t);return t}a();function tl(e,t){return t&&t===`admin`?e:!0}function nl(e){if(!e)return null;let t={sections:[...e.sections].toSorted((e,t)=>{let n=e.tab??`general`,r=t.tab??`general`;return n===r?Kc(e)&&Kc(t)?e.id.localeCompare(t.id):(e.order??0)-(t.order??0):n.localeCompare(r)})};return e.tabs?{...t,tabs:e.tabs}:t}function rl(e){return e.type===`separator`||e.type===`info`||e.type===`button`||e.type===`widget`||e.type===`addon-action-button`||e.type===`device-action-button`}function il(e){return e.key}function al(e){if(!rl(e))return e.value}function ol(e){return rl(e)?null:e}function sl(e,t){for(let n of e)if(t(n),n.type===`group`)sl(n.fields,t);else if(n.type===`sub-tabs`)for(let e of n.tabs)sl(e.fields,t)}function cl(e){if(!e)return{};let t={};for(let n of e.sections)sl(n.fields,e=>{let n=il(e);n!==null&&(t[n]=al(e))});return t}function ll(e,t){if(!e)return null;let n=null;for(let r of e.sections)if(sl(r.fields,e=>{if(n!==null||il(e)!==t)return;let r=ol(e);r&&r.writerCapName&&r.writerAddonId&&(n={capName:r.writerCapName,addonId:r.writerAddonId})}),n!==null)break;return n}function ul(e){return{...e,fields:e.fields.map(dl)}}function dl(e){return e.type===`separator`||e.type===`info`||e.type===`button`||e.type===`object-array`?e:{...e,readonlyField:!0}}function fl(e,t){return e&&{...e,sections:e.sections.map(e=>({...e,fields:e.fields.map(e=>{let n=ol(e);return n?tl(t,n.minRole)?e:dl(e):e})}))}}function pl({deviceId:e,sectionFilter:t,activeSubTab:n,onSubTabChange:r,flattenSubTabs:i,subTabGrouping:a}){let{t:o}=V(),s=A(),{user:c}=Tc(),l=c?.isAdmin===!0,u=j(!1),{data:f,isLoading:m}=_n({deviceId:e},{refetchInterval:()=>u.current?!1:2500,enabled:Number.isFinite(e)}),{data:h}=hn({deviceId:e},{enabled:Number.isFinite(e)}),g=f?.settings??null,_=f?.live??null,v=d(()=>{if(!g&&!_)return null;let e=g?.sections??[],n=(_?.sections??[]).map(ul),r=[...e,...n],i=t?r.filter(t):r.filter(Zc);if(i.length===0)return null;if(a){let e=i.map(e=>({...e,tab:a.groupOf(e)})),t=new Set(e.map(e=>e.tab)),n=a.tabs.filter(e=>t.has(e.id));return n.length>0?{tabs:n,sections:e}:{sections:e}}let o=new Set;for(let e of i)o.add(e.tab??`general`);let s=[...g?.tabs??[],...(_?.tabs??[]).filter(e=>!(g?.tabs??[]).some(t=>t.id===e.id))].filter(e=>o.has(e.id));return s.length>0?{tabs:s,sections:i}:{sections:i}},[g,_,t,a]),b=d(()=>el([...g?.sections??[],..._?.sections??[]]),[g,_]),x=d(()=>nl(v),[v]),S=d(()=>fl(x,l),[x,l]),C=d(()=>cl(S),[S]),w=Cn(),T=Un(),E=sn(),D=Dn(),O=Ut({onSuccess:()=>{s.invalidateQueries({queryKey:[[`deviceManager`,`getDeviceAggregate`]]})}}),k={isPending:O.isPending,mutate:t=>{O.mutate({deviceId:e,changes:[...t]})}},M=Dc({schema:S,serverValues:C,onImmediateSave:p(e=>{let t=Object.entries(e).map(([e,t])=>{let n=ll(S,e);return n?{writerCapName:n.capName,writerAddonId:n.addonId,key:e,value:t}:null}).filter(e=>e!==null);t.length>0&&k.mutate(t)},[S,k]),onDeferredSave:p(async t=>{let n=Object.entries(t).map(([e,t])=>{let n=ll(S,e);return n?{writerCapName:n.capName,writerAddonId:n.addonId,key:e,value:t}:null}).filter(e=>e!==null);if(n.length!==0)try{let t=await O.mutateAsync({deviceId:e,changes:n});if(t.failures.length>0)throw Error(t.failures.map(e=>e.error).join(`; `))}finally{await s.invalidateQueries({queryKey:[[`deviceManager`,`getDeviceAggregate`]]})}},[S,O,e,s])}),{values:P,pendingKeys:F,handleChange:I,handleSave:ee,handleDiscard:L}=M;if(u.current=M.editingPaused,m)return y(`div`,{className:`flex items-center justify-center py-12 text-foreground-subtle`,children:[N(Se,{className:`h-4 w-4 animate-spin mr-2`}),N(`span`,{className:`text-xs`,children:o(`device.deviceAggregateSection.loadingDeviceAggregate`,`Loading device aggregate…`)})]});if(!S||S.sections.length===0)return N(`div`,{className:`text-xs text-foreground-subtle italic py-4 text-center`,children:o(`device.deviceAggregateSection.noAggregateContributionsForThis`,`No aggregate contributions for this device.`)});async function te(t,n,r){if(t===`regenerate-rtsp-token`){let t=[`rtspUrl:`,`regenerateToken:`].find(e=>n.startsWith(e));if(!t)throw Error(`regenerate-rtsp-token: unrecognised key "${n}" (expected "rtspUrl:<streamId>" or "regenerateToken:<streamId>")`);let r=n.slice(t.length);if(!r)throw Error(`regenerate-rtsp-token: key "${n}" has no streamId after prefix`);let i=yt(e,r);await w.mutateAsync({brokerId:i}),s.invalidateQueries({queryKey:[[`deviceManager`,`getDeviceAggregate`]]});return}if(t===`test-probe`){if(!h)return{status:`error`,error:o(`device.deviceAggregateSection.metadataNotLoaded`)};try{return await E.mutateAsync({addonId:h.addonId,type:h.type,key:n,value:r})}catch(e){return{status:`error`,error:e instanceof Error?e.message:String(e)}}}if(t===`refresh-probe`){if(!n.startsWith(`probedInfo:`))throw Error(`refresh-probe: unrecognised key "${n}" (expected "probedInfo:<streamId>")`);let t=n.slice(11);if(!t)throw Error(`refresh-probe: key "${n}" has no streamId after prefix`);let r=yt(e,t),i=await T.mutateAsync({brokerId:r});return s.invalidateQueries({queryKey:[[`deviceManager`,`getDeviceAggregate`]]}),i}if(t===`device-custom-action`){let t=await D.mutateAsync({deviceId:e,action:n,input:r});return s.invalidateQueries({queryKey:[[`deviceManager`,`getDeviceAggregate`]]}),t}throw Error(`[device-aggregate] unknown action "${t}"`)}return N(Vc,{schema:S,values:P,pendingKeys:F,onChange:I,onAction:te,onSave:ee,onDiscard:L,disabled:k.isPending,activeSubTab:n,onSubTabChange:r,flattenTabs:i,visibilityContext:b})}var ml=`w-full min-w-0 px-1.5 py-0.5 text-[11px] bg-background border border-border rounded focus:outline-none focus:border-primary disabled:opacity-50 disabled:cursor-not-allowed`,hl=0,gl=10;function _l(e){if(e.trim()===``)return``;let t=Number.parseInt(e,10);return Number.isFinite(t)?String(t<hl?hl:t>gl?gl:t):``}function vl({value:e,onChange:t,disabled:n=!1,placeholder:r,className:i,id:a,"aria-label":o}){return N(`input`,{type:`number`,min:hl,max:gl,step:1,id:a,className:i??ml,"aria-label":o,placeholder:r,value:e,onChange:e=>{t(_l(e.target.value))},disabled:n})}function yl({deviceName:e,value:t,inheritedIcon:n,inheritedLabel:r,disabled:i,onChange:a}){let{t:o}=V(),s={trigger:o(`deviceDisplay.pickIcon`,{name:e}),panel:o(`deviceDisplay.iconFor`,{name:e}),searchPlaceholder:o(`deviceDisplay.iconSearchPlaceholder`),clear:r,noMatches:o(`deviceDisplay.iconNoMatches`)};return y(`div`,{className:`flex items-center gap-2`,children:[N(Jn,{value:t===``?null:t,onPick:e=>a(e??``),categoryLabel:e=>o(`deviceDisplay.iconCategory.${e}`,{defaultValue:Ct(e)}),fallbackGlyph:n,labels:s,disabled:i}),N(`span`,{className:`text-[11px] text-foreground-subtle`,children:t===``?r:t})]})}a();var bl=`w-full min-w-0 px-1.5 py-0.5 text-[11px] bg-background border border-border rounded focus:outline-none focus:border-primary disabled:opacity-50`,xl={icon:``,label:``,unit:``,precision:``,hidden:!1};function Sl(e){return{icon:e?.icon??``,label:e?.label??``,unit:e?.unit??``,precision:e?.precision===void 0?``:String(e.precision),hidden:e?.hidden===!0}}function Cl(e){if(typeof e!=`object`||!e)return;let t=e.unit;return typeof t==`string`?t:void 0}function wl(e){if(e.trim()===``)return;let t=Number.parseInt(e,10);return Number.isFinite(t)?t:void 0}function Tl(e,t){let n=wl(e.precision),r={...e.icon===``?{}:{icon:e.icon},...e.label.trim()===``?{}:{label:e.label.trim()},...e.unit===``?{}:{unit:e.unit},...n===void 0?{}:{precision:n},...e.hidden?{hidden:!0}:{},...t?.perCap===void 0?{}:{perCap:t.perCap}};return Object.keys(r).length===0?null:r}function El({deviceId:e}){let t=Ne();Pn();let{t:n}=V(),r=Be(),i=A(),{data:a}=hn({deviceId:e},{enabled:e>0}),o=typeof a?.role==`string`&&a.role.length>0?a.role:null,s=o===null?void 0:tn[o],c=s?.kind===`numeric`,l=String(a?.type??``),u=o!==null||a?.parentDeviceId!==null&&a?.parentDeviceId!==void 0,d=Wn(r.trpcClient,e,o??``),p=s?.kind===`numeric`?s.canonicalUnit:void 0,m=Cl(d)??p,h=m===void 0?void 0:vt(m)??m,g=h===void 0?void 0:_t(h),[_,v]=f(null),b=_??Sl(a?.display),x=Ot({onSuccess:()=>{i.invalidateQueries({queryKey:[[`deviceManager`]]})}}),{data:S}=zn({},{staleTime:6e4,enabled:o!==null}),C=$t({onSuccess:()=>{i.invalidateQueries({queryKey:[[`deviceManager`]]})}});if(a==null)return null;let w=e=>{v({...b,...e})},T=()=>{x.mutate({deviceId:e,display:Tl(b,a.display)})},D=()=>{v(xl),x.mutate({deviceId:e,display:null})},O=()=>{if(o===null)return;let e=wl(b.precision),t={...b.icon===``?{}:{icon:b.icon},...b.unit===``?{}:{unit:b.unit},...e===void 0?{}:{precision:e}},n={...S?.defaults,[o]:t};C.mutate({defaults:n})},k=o===null?void 0:S?.defaults[o]?.icon,j=k===void 0?void 0:mn(k),M=o===null?Bn(l,t):gn(o,t),P={icon:j??M.icon,label:j===void 0?M.label:String(k)},F=o===null&&l===ht.Container?n(`deviceDisplay.inheritedContainer`):j===void 0?n(`deviceDisplay.inherited`,{name:P.label}):n(`deviceDisplay.inheritedRoleDefault`,{icon:P.label,role:M.label}),I=typeof a.name==`string`?a.name:`#${String(e)}`,ee=o===null?``:gn(o,t).label;return y(`div`,{className:`rounded-lg border border-border bg-surface overflow-hidden`,children:[N(`div`,{className:`border-b border-border px-3 sm:px-4 py-2`,children:N(`h2`,{className:`text-[11px] font-semibold text-foreground uppercase tracking-wider`,children:n(`deviceDisplay.title`)})}),y(`div`,{className:`divide-y divide-border`,children:[N(Z,{label:n(`deviceDisplay.icon`),value:N(yl,{deviceName:I,value:b.icon,inheritedIcon:P.icon,inheritedLabel:F,disabled:x.isPending,onChange:e=>w({icon:e})})}),u&&N(Z,{label:n(`deviceDisplay.label`),value:N(`input`,{type:`text`,className:bl,"aria-label":n(`deviceDisplay.label`),placeholder:o===null?I:ee,value:b.label,onChange:e=>w({label:e.target.value})})}),c&&y(E,{children:[N(Z,{label:n(`deviceDisplay.unit`),value:N(An,{dimension:g,value:b.unit,onChange:e=>w({unit:e}),disabled:x.isPending,"aria-label":n(`deviceDisplay.unit`),inheritLabel:n(`deviceDisplay.unitSource`,{unit:h===void 0?``:` (${h})`}),emptyReason:n(`deviceDisplay.unitSource`,{unit:``})})}),N(Z,{label:n(`deviceDisplay.precision`),value:N(vl,{"aria-label":n(`deviceDisplay.precision`),placeholder:n(`deviceDisplay.precisionInherit`),value:b.precision,onChange:e=>w({precision:e}),disabled:x.isPending})})]}),N(Z,{label:n(`deviceDisplay.hidden`),value:y(`label`,{className:`flex items-center gap-2`,children:[N(`input`,{type:`checkbox`,checked:b.hidden,onChange:e=>w({hidden:e.target.checked})}),N(`span`,{className:`text-[11px] text-foreground`,children:n(`deviceDisplay.hideFromLists`)})]})})]}),y(`div`,{className:`border-t border-border px-3 sm:px-4 py-2 flex flex-wrap items-center gap-2`,children:[N(`button`,{type:`button`,className:`rounded bg-primary px-3 py-1 text-[11px] font-medium text-primary-foreground disabled:opacity-50`,onClick:T,disabled:x.isPending,children:n(`common.save`)}),N(`button`,{type:`button`,className:`rounded border border-border px-3 py-1 text-[11px] text-foreground-subtle`,onClick:D,disabled:x.isPending,children:n(`common.reset`)}),o!==null&&N(`button`,{type:`button`,className:`rounded border border-border px-3 py-1 text-[11px] text-foreground-subtle`,onClick:O,disabled:C.isPending,title:n(`deviceDisplay.setRoleDefaultTitle`,{role:ee}),children:n(`deviceDisplay.setRoleDefault`,{role:ee})})]})]})}a();function Dl({deviceId:e,onClose:t}){let{t:n}=V(),[r,i]=f(`info`),{data:a}=hn({deviceId:e},{enabled:e>0});return N(nn,{open:!0,onOpenChange:e=>!e&&t(),children:y(Pt,{width:`lg`,scroll:`body`,children:[y(kt,{children:[N(Tn,{children:typeof a?.name==`string`&&a.name.length>0?a.name:`#${String(e)}`}),y(Zt,{children:[n(`deviceQuickDetail.description`,{defaultValue:`Device info, display and export — same surfaces as the detail page.`}),` `,N(no,{to:`/devices/${String(e)}`,className:`text-primary hover:underline`,onClick:t,children:n(`deviceQuickDetail.openFull`,{defaultValue:`Open full detail`})})]})]}),N(`div`,{className:`mt-3 flex items-center gap-1 rounded-md bg-surface-hover p-0.5 w-fit`,children:[[`info`,n(`deviceQuickDetail.tabInfo`,{defaultValue:`Device info`})],[`display`,n(`deviceQuickDetail.tabDisplay`,{defaultValue:`Display`})],[`export`,n(`deviceQuickDetail.tabExport`,{defaultValue:`Export`})]].map(([e,t])=>N(`button`,{type:`button`,onClick:()=>i(e),className:`px-2.5 py-1 rounded text-[11px] font-medium transition-colors ${r===e?`bg-surface text-foreground shadow-sm`:`text-foreground-subtle hover:text-foreground`}`,children:t},e))}),N(Lt,{className:`mt-3`,children:y(Jt,{deviceId:e,device:a??void 0,children:[r===`info`&&N(fs,{}),r===`display`&&N(El,{deviceId:e}),r===`export`&&N(pl,{deviceId:e,sectionFilter:Kc})]})})]})})}function Ol({children:e}){let[t,n]=f(null),r=p(e=>n(e),[]),i=p(()=>n(null),[]);return y(Gn,{open:r,children:[e,t===null?null:N(Dl,{deviceId:t,onClose:i})]})}a();function kl({tabs:e,active:t,onChange:n}){return N(`div`,{className:`flex rounded-lg border border-border bg-surface p-0.5 gap-0.5`,children:e.map(e=>N(`button`,{type:`button`,onClick:()=>n(e.id),className:[`flex-1 rounded-md px-3 py-1.5 text-xs font-medium transition-colors`,t===e.id?`bg-primary/12 text-primary`:`text-foreground-subtle hover:text-foreground hover:bg-surface-hover`].join(` `),children:e.label},e.id))})}function Al(e){let t=e.formats;if(!t)return``;let n=Object.values(t).filter(e=>e!==void 0&&e.sizeMB>0).map(e=>e.sizeMB);if(n.length===0)return``;let r=Math.min(...n),i=Math.max(...n);return r===i?`${r} MB`:`${r}-${i} MB`}function jl(e){return`${e.inputSize.width}x${e.inputSize.height}`}function Ml(e){return e.formats?Object.keys(e.formats).filter(t=>e.formats[t]!==void 0):[]}function Nl({entry:e,selected:t,onSelect:n,disabled:r}){let{t:i}=V(),a=Al(e),o=jl(e),s=Ml(e);return y(`button`,{type:`button`,onClick:n,disabled:r,className:[`w-full text-left rounded-lg border p-3 transition-all`,t?`border-primary bg-primary/5 ring-1 ring-primary/30`:`border-border bg-background hover:border-foreground-subtle/40 hover:bg-surface-hover/50`,r?`opacity-50 cursor-not-allowed`:`cursor-pointer`].join(` `),children:[N(`div`,{className:`flex items-start justify-between gap-2`,children:y(`div`,{className:`flex-1 min-w-0`,children:[y(`div`,{className:`flex items-center gap-2`,children:[N(`span`,{className:`text-xs font-semibold text-foreground truncate`,children:e.name}),t&&N(Ce,{className:`h-3.5 w-3.5 text-primary shrink-0`})]}),N(`p`,{className:`text-[10px] text-foreground-subtle mt-0.5 line-clamp-2`,children:e.description})]})}),y(`div`,{className:`flex items-center gap-3 mt-2 flex-wrap`,children:[y(`span`,{className:`inline-flex items-center gap-1 text-[10px] text-foreground-subtle`,children:[N(ne,{className:`h-3 w-3`}),o]}),a&&N(`span`,{className:`text-[10px] text-foreground-subtle`,children:a}),s.length>0&&N(`div`,{className:`flex gap-1`,children:s.map(e=>N(`span`,{className:`text-[9px] uppercase rounded bg-surface border border-border px-1 py-0.5 text-foreground-subtle font-mono`,children:e},e))}),e.labels.length>0&&N(`span`,{className:`text-[10px] text-foreground-subtle`,children:i(`common.labels`,{count:e.labels.length})})]})]})}function Pl({field:e,value:t,onChange:n,disabled:r}){let{t:i}=V(),a=e.catalog??[],o=a.length>0,s=St(a).length>0,c=e.allowCustomPath!==!1||e.allowCustom===!0,l=[...o?[{id:`catalog`,label:i(`formBuilder.modelSelector.models`,`Models ({{length}})`,{length:a.length})}]:[],...c?[{id:`custom`,label:i(`formBuilder.modelSelector.customPath`,`Custom Path`)}]:[]],[u,d]=f(o?`catalog`:`custom`),p=t==null?``:String(t);return y(`div`,{className:`space-y-3`,children:[l.length>1&&N(kl,{tabs:l,active:u,onChange:d}),u===`catalog`&&o&&s&&N(bn,{catalog:a,value:p,onChange:e=>n(e),disabled:r||e.disabled}),u===`catalog`&&o&&!s&&N(`div`,{className:`space-y-1.5 max-h-[320px] overflow-y-auto pr-1`,children:a.filter(e=>e.legacy!==!0).map(t=>N(Nl,{entry:t,selected:p===t.id,onSelect:()=>n(t.id),disabled:r||e.disabled},t.id))}),u===`catalog`&&!o&&y(`div`,{className:`rounded-md border border-info/30 bg-info/5 px-3 py-2 flex items-start gap-2`,children:[N(He,{className:`h-3.5 w-3.5 text-info shrink-0 mt-0.5`}),N(`p`,{className:`text-[11px] text-foreground-subtle leading-relaxed`,children:i(`formBuilder.modelSelector.noPredefinedModelsAvailableUse`,`No predefined models available. Use the Custom Path tab to specify a model file path or URL.`)})]}),u===`custom`&&c&&y(`div`,{className:`space-y-2`,children:[N(`input`,{type:`text`,className:`w-full rounded-md border border-border bg-background px-3 py-2 text-sm text-foreground focus:border-primary focus:ring-1 focus:ring-primary/30 outline-none disabled:opacity-50`,placeholder:i(`formBuilder.modelSelector.enterPathLikeDataModels`,`Enter path like /data/models/custom.onnx or https://...`),value:p,disabled:r||e.disabled,onChange:e=>n(e.target.value)}),e.acceptFormats&&e.acceptFormats.length>0&&y(`p`,{className:`text-[10px] text-foreground-subtle`,children:[i(`formBuilder.modelSelector.acceptedFormats`,`Accepted formats:`),` `,e.acceptFormats.join(`, `)]})]}),(e.compatibilityNote||e.conversionGuideUrl)&&y(`div`,{className:`flex items-start justify-between gap-3 pt-1`,children:[e.compatibilityNote&&y(`p`,{className:`flex items-start gap-1 text-[10px] text-foreground-subtle`,children:[N(He,{className:`h-3 w-3 mt-0.5 shrink-0`}),e.compatibilityNote]}),e.conversionGuideUrl&&y(`a`,{href:e.conversionGuideUrl,target:`_blank`,rel:`noopener noreferrer`,className:`flex items-center gap-1 text-[11px] text-primary hover:underline shrink-0`,children:[i(`formBuilder.modelSelector.howToConvertYourModel`,`How to convert your model`),N(fe,{className:`h-3 w-3`})]})]})]})}function Fl({to:e}){let{search:t}=J();return N(Y,{to:`${e}${t}`,replace:!0})}a();function Il(){return B.t(`helpers.keychainRevealHost.forbidden`)}function Ll(e){if(typeof e!=`object`||!e)return null;let t=Reflect.get(e,`data`);if(typeof t!=`object`||!t)return null;let n=Reflect.get(t,`code`);return typeof n==`string`?n:null}function Rl(e){let t=Ll(e);if(t===`FORBIDDEN`||t===`UNAUTHORIZED`)return Il();let n=e instanceof Error?e.message:String(e);return n.length>0?B.t(`helpers.keychainRevealHost.failedWith`,{message:n}):B.t(`helpers.keychainRevealHost.failed`)}function zl({children:e}){let t=Qn();return N(Vn,{reveal:p(async e=>{try{return(await t.mutateAsync({ref:e})).value}catch(e){throw Error(Rl(e))}},[t]),children:e})}a();function Bl(){let e=Be(),t=A(),[n,r]=f(()=>e.isConnected()?`connected`:`disconnected`),i=j(!1),[a,o]=f(0),[c,l]=f([]);s(()=>e.subscribeConnectionEvents(e=>{r(t=>(t!==`connected`&&e===`connected`&&i.current&&o(e=>e+1),e!==`connected`&&(i.current=!0),e))}),[e]),s(()=>{a!==0&&t.invalidateQueries({queryKey:[[`addons`,`getLastRestart`]]})},[a,t]);let{data:u}=Nt(void 0,{enabled:n===`connected`&&a>0,staleTime:0,refetchOnMount:!1,refetchOnWindowFocus:!1}),d=j(null);return s(()=>{if(u==null||u.requestedAt===d.current)return;d.current=u.requestedAt;let e=Hl(u);l(t=>[...t,e]);let t=window.setTimeout(()=>{l(t=>t.filter(t=>t.id!==e.id))},6e3);return()=>window.clearTimeout(t)},[u]),N(E,{children:c.length>0&&N(Vl,{toasts:c})})}function Vl({toasts:e}){return N(`div`,{className:`fixed top-[calc(env(safe-area-inset-top)+1rem)] right-[calc(env(safe-area-inset-right)+1rem)] z-50 flex flex-col gap-2 max-w-sm w-full pointer-events-none`,children:e.map(e=>y(`div`,{className:`pointer-events-auto flex items-start gap-2 px-3 py-2.5 rounded-md border border-green-500/30 bg-green-500/10 shadow-lg backdrop-blur-sm`,children:[N(Te,{className:`w-4 h-4 shrink-0 mt-0.5 text-green-400`}),y(`div`,{children:[N(`div`,{className:`text-[11px] font-semibold text-foreground`,children:e.title}),N(`div`,{className:`text-[10px] text-foreground-subtle mt-0.5`,children:e.message})]})]},e.id))})}function Hl(e){let t=`restart-${e.requestedAt}`;if(e.kind===`framework-update`&&e.packageName!==void 0&&e.toVersion!==void 0){let n=e.fromVersion===void 0?`v${e.toVersion}`:`v${e.fromVersion} → v${e.toVersion}`;return{id:t,title:B.t(`system.reconnectOverlay.frameworkUpdated`,`Framework updated`),message:B.t(`system.reconnectOverlay.isNow`,`{{packageName}} is now {{fromTo}}.`,{packageName:e.packageName,fromTo:n})}}return{id:t,title:B.t(`system.reconnectOverlay.serverRestarted`,`Server restarted`),message:e.requestedBy===void 0?B.t(`system.reconnectOverlay.manualRestartCompleted`,`Manual restart completed.`):B.t(`system.reconnectOverlay.manualRestartByCompleted`,`Manual restart by {{requestedBy}} completed.`,{requestedBy:e.requestedBy})}}var Ul=`/system/settings`,Wl=[{path:`/system/secrets`,tab:`secrets`},{path:`/system/capabilities`,tab:`capabilities`}];function Gl(e,t=``){let n=new URLSearchParams(t);return n.delete(`tab`),n.set(`tab`,e),`${Ul}?${n.toString()}`}function Kl({tab:e}){let{search:t,hash:n}=J();return N(Y,{to:`${Gl(e,t)}${n}`,replace:!0})}a();var ql={info:{bg:`bg-info/10`,border:`border-info/30`,icon:He},warning:{bg:`bg-warning/10`,border:`border-warning/30`,icon:oe},critical:{bg:`bg-danger/10`,border:`border-danger/30`,icon:Ve}};function Jl({toast:e,onDismiss:t}){let n=ql[e.severity]??ql.info,r=n.icon;return s(()=>{let n=e.duration??5e3;if(n<=0)return;let r=setTimeout(()=>t(e.id),n);return()=>clearTimeout(r)},[e.id,e.duration,t]),y(`div`,{className:`flex items-start gap-3 px-4 py-3 rounded-lg border ${n.border} ${n.bg} shadow-lg backdrop-blur-sm animate-in slide-in-from-right-5 fade-in duration-200`,children:[N(r,{className:`h-4 w-4 shrink-0 mt-0.5 text-foreground-subtle`}),y(`div`,{className:`flex-1 min-w-0`,children:[N(`div`,{className:`text-xs font-semibold text-foreground`,children:e.title}),N(`div`,{className:`text-[11px] text-foreground-subtle mt-0.5`,children:e.message})]}),N(`button`,{type:`button`,onClick:()=>t(e.id),className:`shrink-0 p-0.5 rounded hover:bg-surface-hover transition-colors`,children:N(De,{className:`h-3.5 w-3.5 text-foreground-subtle`})})]})}function Yl(){let[e,t]=f([]),n=p(e=>{t(t=>t.filter(t=>t.id!==e))},[]);return It(void 0,{onData:e=>{let n=e,r=`toast-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;t(e=>[...e,{...n,id:r,timestamp:Date.now()}])}}),e.length===0?null:N(`div`,{className:`fixed bottom-[calc(env(safe-area-inset-bottom)+1rem)] right-[calc(env(safe-area-inset-right)+1rem)] z-50 flex flex-col gap-2 max-w-sm w-full pointer-events-none`,children:e.map(e=>N(`div`,{className:`pointer-events-auto`,children:N(Jl,{toast:e,onDismiss:n})},e.id))})}function Xl(e){return(t,n,r)=>e(t,{...typeof n==`string`?{defaultValue:n}:{defaultValue_one:n.one,defaultValue_other:n.other},...r})}var Zl=(e,t,n)=>Xl(B.t.bind(B))(e,t,n);a();function Ql({children:e}){let{t}=V();return N(Oe,{t:d(()=>Xl(t),[t]),children:e})}a();function $l(e){if(typeof e!=`object`||!e)return;let{data:t}=e;return t?.code}function eu(e,t){let n=$l(e);return n===`UNAUTHORIZED`||n===`FORBIDDEN`?!0:/UNAUTHORIZED|FORBIDDEN/.test(t)}function tu(e,t,n){let[r,i]=f(!1),[a,o]=f(null);return s(()=>{if(i(!1),o(null),!t){i(!0);return}let r=!1;return e.init().catch(()=>void 0),e.awaitConnected().then(()=>{r||i(!0)},e=>{if(r)return;let t=e instanceof Error?e.message:String(e);if(eu(e,t)){n();return}o(t),i(!0)}),()=>{r=!0}},[e,t,n]),{bootReady:r,bootError:a}}a();var nu=3e4;function ru(e){let t=j(e);t.current=e,s(()=>{let e=null,n=()=>{if(document.visibilityState===`hidden`){e=Date.now();return}if(document.visibilityState===`visible`&&e!==null){let n=Date.now()-e;e=null,n>=nu&&t.current()}},r=()=>{t.current()},i=e=>{e.persisted&&t.current()};return document.addEventListener(`visibilitychange`,n),window.addEventListener(`online`,r),window.addEventListener(`pageshow`,i),()=>{document.removeEventListener(`visibilitychange`,n),window.removeEventListener(`online`,r),window.removeEventListener(`pageshow`,i)}},[])}a();function iu(e){let t=new Set,n=new Set,r=e=>e.page.remoteName.includes(e.addonId.replace(/[^a-zA-Z0-9]+/g,`_`)),i=[...e.filter(r),...e.filter(e=>!r(e))],a=[];for(let e of i){let r=`${e.addonId}::${e.page.id}`;t.has(r)||n.has(e.page.path)||(t.add(r),n.add(e.page.path),a.push({id:e.page.id,addonId:e.addonId,label:e.page.label,icon:e.page.icon,path:e.page.path,remoteName:e.page.remoteName,bundle:e.page.bundle,bundleUrl:e.bundleUrl,...e.page.section===void 0?{}:{section:e.page.section},...e.page.sectionLabel===void 0?{}:{sectionLabel:e.page.sectionLabel}}))}return a}var au=new Map,ou=new Map,su=new Set;function cu(e){return!e||typeof e!=`object`?!1:typeof e.default==`function`}async function lu(e,t){let i=au.get(e);if(i)return i;let a=ou.get(e);if(a)return a;su.has(e)||(Vt(),r([{name:e,entry:z(t),type:`module`}],{force:!1}),su.add(e));let o=n(`${e}/page`).then(n=>{if(!cu(n))throw Error(`Addon page remote ${e} (${t}) does not expose a default React component on './page'`);return au.set(e,n.default),ou.delete(e),n.default}).catch(t=>{throw ou.delete(e),t});return ou.set(e,o),o}function uu(){let{t:e}=V(),{pagePath:t}=Bi(),n=Ii(),r=Be(),{data:i}=vn(void 0),a=d(()=>i?iu(i):void 0,[i]),o=a?.find(e=>e.path===`/addon/${t}`),c=o?.remoteName,l=o?.bundleUrl,[u,p]=f(null),[m,h]=f(null);return s(()=>{if(!c||!l)return;h(null);let e=au.get(c);if(e){p(()=>e);return}p(null);let t=!1;return lu(c,l).then(e=>{t||p(()=>e)}).catch(e=>{t||h(`Failed to load addon page: ${e instanceof Error?e.message:String(e)}`)}),()=>{t=!0}},[c,l]),a?o?m?N(`div`,{className:`flex items-center justify-center h-full text-danger text-sm`,children:m}):u?N(u,{trpc:r.trpcClient,theme:{isDark:document.documentElement.classList.contains(`dark`)},navigate:e=>{n(e.startsWith(`/`)?e:`/${e}`)}}):N(`div`,{className:`flex items-center justify-center h-full`,children:N(`div`,{className:`animate-spin h-6 w-6 border-2 border-primary border-t-transparent rounded-full`})}):N(`div`,{className:`flex items-center justify-center h-full text-foreground-subtle`,children:e(`layouts.addonPageLoader.addonPageNotFound`,`Addon page not found`)}):N(`div`,{className:`flex items-center justify-center h-full`,children:N(`div`,{className:`animate-spin h-6 w-6 border-2 border-primary border-t-transparent rounded-full`})})}nr();var du=/\p{Mn}/gu;function fu(e){return e.normalize(`NFD`).replace(du,``).toLowerCase().trim()}var pu=[`device`,`page`,`integration`],mu=0,hu=1,gu=2,_u=3,vu=4,yu=5,bu=6,xu=7;function Su(e,t,n,r){return n.includes(r)?mu:e===r?hu:e.startsWith(r)?gu:e.split(/\s+/).some(e=>e.startsWith(r))?_u:e.includes(r)?vu:t.some(e=>e.includes(r))?yu:null}function Cu(e,t){let n=0;for(let r=0;r<e.length&&n<t.length;r++)e[r]===t[n]&&n++;return n===t.length}function wu(e){return e<4?0:e<=7?1:e<=12?2:3}function Tu(e,t,n){if(e===t)return 0;if(n<=0||Math.abs(e.length-t.length)>n)return null;let r=t.length,i=Array(r+1).fill(0),a=Array.from({length:r+1},(e,t)=>t),o=Array(r+1).fill(0);for(let s=1;s<=e.length;s++){o[0]=s;let c=s,l=e[s-1];for(let n=1;n<=r;n++){let r=t[n-1],u=l===r?0:1,d=Math.min((a[n]??1/0)+1,o[n-1]+1,(a[n-1]??1/0)+u);s>1&&n>1&&l===t[n-2]&&e[s-2]===r&&(d=Math.min(d,(i[n-2]??1/0)+1)),o[n]=d,d<c&&(c=d)}if(c>n)return null;let u=i;i=a,a=o,o=u}let s=a[r]??1/0;return s<=n?s:null}function Eu(e,t){if(Cu(e,t))return bu;let n=wu(t.length);if(n>0){for(let r of e.split(/\s+/))if(Tu(r,t,n)!==null)return xu}return null}function Du(e,t,n=200){let r=fu(t);if(r.length===0)return{groups:[],totalMatched:0,truncated:!1};let i=new Map;for(let t of e){let e=fu(t.label),n=Su(e,(t.keywords??[]).map(fu),(t.identifiers??[]).map(fu),r)??Eu(e,r);if(n===null)continue;let a=i.get(t.domain)??[];a.push({item:t,rank:n}),i.set(t.domain,a)}let a=0;for(let e of i.values())a+=e.length;let o=n,s=[];for(let e of pu){let t=i.get(e);if(!t||t.length===0||o<=0)continue;t.sort((e,t)=>e.rank-t.rank||e.item.label.localeCompare(t.item.label));let n=t.slice(0,o).map(e=>e.item);o-=n.length,s.push({domain:e,items:n})}return{groups:s,totalMatched:a,truncated:a>n}}function Ou(e){return e.flatMap(e=>e.items)}function ku(e){let t=new Map;for(let n of e)t.set(n.id,n.name);let n=new Map;for(let r of e){let e=r.parentDeviceId;e!==null&&e!==r.id&&n.set(r.id,t.get(e)??`#${String(e)}`)}return n}function Au(e,t){return e.filter(e=>!e.adminOnly||t)}function ju({t:e,isAdmin:t}){let n=Au([{label:e(`nav.devices`,`Devices`),icon:Ye,path:`/devices`},{label:e(`nav.integrations`),icon:I,path:`/integrations`},{label:e(`nav.build`,`Build-your-self`),icon:Qe,path:`/build`,adminOnly:!0},{label:e(`nav.locations`,`Locations`),icon:ke,path:`/locations`,adminOnly:!0},{label:e(`nav.viewer`,`Viewer`),icon:it,path:`/live`}],t),r=Au([{label:e(`nav.library`,`Library`),icon:dt,path:`/library`,adminOnly:!0,keywords:[`People`,`Vehicles`,`Events`,`Scenes`,`plates`,`faces`,`detection-intelligence`]},{label:e(`nav.recordings`,`Recordings`),icon:ae,path:`/recordings`,adminOnly:!0}],t),i=Au([{label:e(`nav.nodes`,`Nodes`),icon:de,path:`/system/nodes`,adminOnly:!0},{label:e(`nav.pipeline`,`Pipeline`),icon:at,path:`/system/pipeline`},{label:e(`system.addons`),icon:Xe,path:`/system/addons`,adminOnly:!0},{label:e(`system.ai`,`AI`),icon:he,path:`/system/ai`,adminOnly:!0}],t),a=Au([{label:e(`system.identity`,`Identity & Access`),icon:Re,path:`/system/identity`,adminOnly:!0},{label:e(`system.network`,`Network`),icon:tt,path:`/system/network`,adminOnly:!0},{label:e(`system.integrations`,`Connectivity`),icon:I,path:`/system/integrations`,adminOnly:!0},{label:e(`system.data`,`Data`),icon:re,path:`/system/data`,adminOnly:!0},{label:e(`system.notifications`,`Notifications`),icon:se,path:`/system/notifications`,adminOnly:!0},{label:e(`system.calendars`,`Calendars`),icon:ot,path:`/system/calendars`,adminOnly:!0},{label:e(`system.systemNav`,`System`),icon:Le,path:Ul,adminOnly:!0},{label:e(`system.logs`,`Logs`),icon:Ae,path:`/system/logs`,adminOnly:!0},{label:e(`system.terminal`,`Terminal`),icon:st,path:`/system/terminal`,adminOnly:!0}],t);return[{key:`top`,label:null,items:n},{key:`detection`,label:e(`nav.detectionSection`,`Detection`),items:r},{key:`cluster`,label:e(`nav.clusterSection`,`Cluster`),items:i},{key:`administration`,label:e(`system.title`,`Administration`),items:a}]}var Mu={gauge:me,puzzle:Xe,bot:Ie,cpu:ne,terminal:st,box:R,boxes:R,monitor:it,wrench:je,activity:le,plug:I,"graduation-cap":Ze};function Nu(e){return Mu[e]??Xe}function Pu(e,t){for(let n of ju(t))for(let t of n.items)if(t.path===e)return{icon:t.icon,title:t.label,path:t.path};return null}var Fu=` · `;function Iu(e,t,n,r){let i=[`#${t}`];return r!==void 0&&i.push(r),e.stableId.length>0&&e.stableId!==n&&i.push(e.stableId),i.push(e.type),e.disabled&&i.push(`disabled`),i.join(Fu)}function Lu(e,t=null){let n=ku(e),r=qn(t);return e.map(e=>{let t=String(e.id),i=e.name||e.stableId||`#${t}`,a=n.get(e.id),o=r(e),s=o.kind===`resolved`?o.integration.name:``;return{key:`device:${t}`,domain:`device`,label:i,subtitle:Iu(e,t,i,a),identifiers:[t,`#${t}`],keywords:[e.stableId,e.addonId,e.location??``,a??``,s].filter(e=>e.length>0),path:`/devices/${t}`,icon:yn(e.type).icon}})}function Ru(e){return e.map(e=>({key:`integration:${e.id}`,domain:`integration`,label:e.name||e.addonId,subtitle:e.enabled?e.addonId:B.t(`helpers.searchItems.disabled`,{addonId:e.addonId}),keywords:[e.addonId,e.processState],path:`/integrations/${e.id}`}))}function zu(e,t,n){let r=e.section?.trim();return r?t[r]??e.sectionLabel?.trim()??r:n}function Bu(e,t,n){let r=e.flatMap(e=>e.items.map(t=>({key:`page:${t.path}`,domain:`page`,label:t.label,subtitle:e.label??void 0,path:t.path,icon:t.icon,...t.keywords!==void 0&&t.keywords.length>0?{keywords:t.keywords}:{}}))),i={detection:n.detection,cluster:n.cluster,administration:n.administration},a=t.map(e=>({key:`page:addon:${e.addonId}:${e.id}`,domain:`page`,label:e.label,subtitle:zu(e,i,n.ungrouped),keywords:[e.addonId],path:e.path,icon:Nu(e.icon)}));return[...r,...a]}a();var Vu={device:{labelKey:`search.resultsList.devices`,icon:Ye},page:{labelKey:`search.resultsList.pages`,icon:nt},integration:{labelKey:`search.resultsList.integrations`,icon:I}};function Hu({groups:e,activeKey:t,query:n,totalMatched:r,truncated:i,onSelect:a,onHover:o}){let{t:c}=V(),l=j(null);if(s(()=>{t&&(l.current?.querySelector(`[data-key="${CSS.escape(t)}"]`))?.scrollIntoView({block:`nearest`})},[t]),n.trim().length===0)return null;if(e.length===0)return N(`div`,{className:`px-3 py-4 text-center text-[12px] text-foreground-subtle`,children:c(`search.resultsList.noResults`,{query:n})});let u=e.reduce((e,t)=>e+t.items.length,0);return y(E,{children:[N(`div`,{ref:l,role:`listbox`,className:`max-h-[60vh] overflow-y-auto py-1`,children:e.map(e=>{let n=Vu[e.domain],r=n.icon;return y(`div`,{className:`px-1 py-1`,children:[y(`div`,{className:`sticky top-0 z-10 flex items-center gap-1.5 bg-surface px-2 py-1 text-[10px] font-semibold uppercase tracking-widest text-foreground-subtle/60`,children:[N(r,{className:`h-3 w-3`}),c(n.labelKey)]}),e.items.map(e=>{let r=e.icon??n.icon,i=e.key===t;return y(`button`,{type:`button`,role:`option`,"aria-selected":i,"data-key":e.key,onMouseEnter:()=>o(e),onClick:()=>a(e),className:`flex w-full items-center gap-2.5 rounded-md px-2 py-1.5 text-left text-[12px] transition-colors ${i?`bg-primary/12 text-primary`:`text-foreground hover:bg-surface-hover`}`,children:[N(r,{className:`h-3.5 w-3.5 shrink-0 ${i?`text-primary`:`text-foreground-subtle`}`}),y(`span`,{className:`flex-1 min-w-0`,children:[N(`span`,{className:`block truncate font-medium`,children:e.label}),e.subtitle&&N(`span`,{className:`block truncate text-[10px] text-foreground-subtle`,children:e.subtitle})]})]},e.key)})]},e.domain)})}),i&&N(`div`,{className:`border-t border-border px-3 py-1.5 text-center text-[10px] text-foreground-subtle`,children:c(`search.truncatedResults`,`Showing first {{shown}} of {{total}} — refine your search.`,{shown:u,total:r})})]})}a();function Uu({navSections:e,addonPages:t,compact:n,onNavigated:r}){let{t:i}=V(),a=Ii(),o=j(null),c=j(null),l=j(null),[u,m]=f(null),[h,g]=f(``),[_,v]=f(0),[b,x]=f(!1),{data:S}=Sn({projection:`slim`}),{data:C}=Nn(void 0),w=d(()=>{let n={detection:i(`nav.detectionSection`,`Detection`),cluster:i(`nav.clusterSection`,`Cluster`),administration:i(`system.title`,`Administration`),ungrouped:i(`nav.addonPages`,`Addon Pages`)};return[...Lu(S??[],C??null),...Bu(e,t,n),...Ru(C??[])]},[S,C,e,t,i]),{groups:T,totalMatched:E,truncated:D}=d(()=>Du(w,h),[w,h]),O=d(()=>Ou(T),[T]);s(()=>{v(0)},[h,w]),s(()=>{b&&o.current?.focus()},[b]);let k=p(()=>{x(!1),g(``),v(0)},[]),A=p(e=>{a(e.path),k(),o.current?.blur(),r?.()},[a,k,r]);s(()=>{function e(e){(e.metaKey||e.ctrlKey)&&e.key.toLowerCase()===`k`&&(e.preventDefault(),x(!0))}return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[]),s(()=>{if(!b)return;function e(e){if(!(e.target instanceof Node))return;let t=c.current?.contains(e.target)===!0,n=l.current?.contains(e.target)===!0;!t&&!n&&x(!1)}return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[b]);let M=b&&h.trim().length>0;s(()=>{if(!M){m(null);return}let e=()=>{let e=o.current?.getBoundingClientRect();e&&m({left:e.left,top:e.bottom+4,width:e.width})};return e(),window.addEventListener(`resize`,e),window.addEventListener(`scroll`,e,!0),()=>{window.removeEventListener(`resize`,e),window.removeEventListener(`scroll`,e,!0)}},[M]);let P=O[_]?.key??null,F=i(`search.placeholder`,`Search devices, pages, integrations…`),I=y(`div`,{className:`relative`,children:[N(Ee,{className:`pointer-events-none absolute left-2 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-foreground-subtle`}),N(`input`,{ref:o,type:`text`,value:h,placeholder:F,"aria-label":F,role:`combobox`,"aria-expanded":b&&h.trim().length>0,"aria-controls":`global-search-results`,onChange:e=>{g(e.target.value),x(!0)},onFocus:()=>x(!0),onKeyDown:e=>{if(e.key===`ArrowDown`)e.preventDefault(),O.length>0&&v(e=>(e+1)%O.length);else if(e.key===`ArrowUp`)e.preventDefault(),O.length>0&&v(e=>(e-1+O.length)%O.length);else if(e.key===`Enter`){e.preventDefault();let t=O[_];t&&A(t)}else e.key===`Escape`&&(e.preventDefault(),k(),o.current?.blur())},className:`w-full rounded-md border border-border bg-surface py-1.5 pl-7 pr-6 text-[12px] text-foreground placeholder:text-foreground-subtle/70 focus:outline-none focus:ring-1 focus:ring-primary/50`}),h.length>0&&N(`button`,{type:`button`,"aria-label":i(`search.globalSearch.clearSearch`,`Clear search`),onClick:()=>{g(``),o.current?.focus()},className:`absolute right-1.5 top-1/2 -translate-y-1/2 text-foreground-subtle hover:text-foreground`,children:N(De,{className:`h-3 w-3`})}),M&&u!==null&&rr(N(`div`,{ref:l,id:`global-search-results`,className:`fixed z-50 w-max max-w-[26rem] rounded-lg border border-border bg-surface shadow-xl`,style:{left:u.left,top:u.top,minWidth:u.width},children:N(Hu,{groups:T,activeKey:P,query:h,totalMatched:E,truncated:D,onSelect:A,onHover:e=>{let t=O.findIndex(t=>t.key===e.key);t>=0&&v(t)}})}),document.body)]});return n?N(`div`,{ref:c,className:`px-1.5 pb-1.5`,children:b?N(`div`,{className:`fixed z-50 w-max min-w-72 max-w-[26rem]`,style:{left:`calc(env(safe-area-inset-left) + 3.5rem)`,top:`calc(env(safe-area-inset-top) + 3.5rem)`},children:I}):N(`button`,{type:`button`,onClick:()=>x(!0),"aria-label":F,title:F,className:`flex w-full items-center justify-center rounded-md px-0 py-2 text-foreground-subtle hover:bg-surface-hover hover:text-foreground transition-colors`,children:N(Ee,{className:`h-3.5 w-3.5 shrink-0`})})}):N(`div`,{ref:c,className:`px-2 pb-2`,children:I})}var Wu=/^(\d{1,3}\.){3}\d{1,3}$/;function Gu(e){let t=e.startsWith(`[`)&&e.endsWith(`]`)?e.slice(1,-1):e;return!!(Wu.test(t)||t.includes(`:`))}function Ku(e,t){return!t||Gu(e)?!1:e===t||e.endsWith(`.${t}`)}a();var qu=`auth-webauthn/passkey-enrollment`,Ju=`camstack_passkey_prompt_dismissed:`,Yu=720*60*60*1e3;function Xu(e){try{let t=localStorage.getItem(`${Ju}${e}`);if(!t)return!1;let n=Number(t);return Number.isFinite(n)?Date.now()-n<Yu:!1}catch{return!1}}function Zu(e){try{localStorage.setItem(`${Ju}${e}`,String(Date.now()))}catch{}}function Qu(){let{user:e}=Tc(),{t}=V(),n=Be(),r=cn(qu),[i,a]=f(!1),[o,s]=f(!1),c=d(()=>e?Xu(e.id):!0,[e]),l=tr.auth.listLoginMethods.useQuery().data?.find(e=>e.kind===`passkey`),u=l!==void 0&&Ku(window.location.hostname,l.rpId),m=e!==null&&u&&r!=null&&!c,h=T({queryKey:[`auth`,`listOwnPasskeys`],queryFn:()=>n.listOwnPasskeys(),enabled:m,staleTime:6e4}),g=p(()=>{e&&Zu(e.id),a(!0),s(!1)},[e]),_=p(()=>{s(!1),h.refetch()},[h]);return!m||i||h.data===void 0||h.data.length>0?null:y(`div`,{className:`shrink-0 border-b border-primary/20 bg-primary/5`,children:[y(`div`,{className:`flex items-center gap-2.5 px-3 py-2 text-xs text-foreground`,children:[N(pt,{className:`h-4 w-4 text-primary shrink-0`}),N(`span`,{className:`flex-1 min-w-0`,children:t(`passkeyPrompt.message`,`Save a passkey for faster sign-in?`)}),N(`button`,{onClick:()=>s(e=>!e),className:`rounded bg-primary px-2.5 py-1 text-[11px] font-semibold text-primary-foreground hover:bg-primary/90`,children:t(`passkeyPrompt.enrollNow`,`Enroll now`)}),N(`button`,{onClick:g,className:`inline-flex items-center gap-1 rounded border border-border px-2 py-1 text-[11px] text-foreground-subtle hover:text-foreground hover:bg-surface-hover`,children:t(`passkeyPrompt.notNow`,`Not now`)}),N(`button`,{onClick:g,"aria-label":t(`passkeyPrompt.notNow`,`Not now`),className:`p-1 rounded text-foreground-subtle hover:text-foreground`,children:N(De,{className:`h-3.5 w-3.5`})})]}),o&&N(`div`,{className:`px-3 pb-3`,children:y(`div`,{className:`max-w-xl`,children:[N(Zn,{widgetId:qu,host:`dashboard`}),N(`div`,{className:`mt-2 flex justify-end`,children:N(`button`,{onClick:_,className:`rounded border border-border px-2.5 py-1 text-[11px] text-foreground-subtle hover:text-foreground hover:bg-surface-hover`,children:t(`common.close`,`Close`)})})]})})]})}var $u=6e4;function ed(){let e=Mn(void 0,{staleTime:$u});return{info:e.data?.serverName??null,isLoading:e.isLoading}}a();var td=`system-config`,nd=`hub`,rd=`camstack_server_name_prompt_dismissed`;function id(){try{return sessionStorage.getItem(rd)===`1`}catch{return!1}}function ad(){try{sessionStorage.setItem(rd,`1`)}catch{}}function od(e){return e.isAdmin&&e.info!==null&&e.info.isDefault&&!e.dismissed}function sd(){let{user:e}=Tc(),{info:t}=ed(),[n,r]=f(id);return od({isAdmin:e?.isAdmin===!0,info:t,dismissed:n})?N(cd,{suggestion:t?.name??``,onLater:()=>{ad(),r(!0)}}):null}function cd({suggestion:e,onLater:t}){let{t:n}=V(),r=A(),i=dn(),[a,o]=f(e),[c,l]=f(null),u=j(null);s(()=>u.current?.focus(),[]);let d=p(async()=>{let e=bt.safeParse(a);if(!e.success){l(e.error.issues[0]?.message??n(`serverName.invalid`,`Not a valid name`));return}l(null);try{await i.mutateAsync({addonId:td,nodeId:nd,patch:{name:e.data}}),await r.invalidateQueries({queryKey:[[`system`,`info`]]}),await r.invalidateQueries({queryKey:[[`addonSettings`]]})}catch(e){l(e instanceof Error&&e.message.length>0?e.message:`Could not save`)}},[r,i,n,a]);return N(nn,{open:!0,onOpenChange:e=>!e&&t(),children:N(Pt,{children:y(`form`,{onSubmit:e=>{e.preventDefault(),i.isPending||d()},children:[y(kt,{children:[N(Tn,{children:n(`serverName.title`,`Name this server`)}),N(Zt,{children:n(`serverName.description`,`Pick a name for this hub. It shows in the admin UI and on the apps’ sign-in screen. You can change it later in System settings.`)})]}),N(Lt,{children:N(Bt,{label:n(`serverName.label`,`Server name`),...c===null?{}:{error:c},children:N(Tt,{ref:u,value:a,maxLength:48,onChange:e=>o(e.target.value),state:c===null?`default`:`error`,"aria-label":n(`serverName.label`,`Server name`)})})}),y(On,{children:[N(Mt,{type:`button`,variant:`ghost`,onClick:t,disabled:i.isPending,children:n(`serverName.later`,`Later`)}),y(Mt,{type:`submit`,disabled:i.isPending||a.trim().length===0,children:[i.isPending&&N(Se,{className:`h-4 w-4 animate-spin`}),n(`common.save`,`Save`)]})]})]})})})}a(),nr();var ld={info:He,success:Te,warning:oe,error:Ve},ud={info:`text-info`,success:`text-success`,warning:`text-warning`,error:`text-danger`},dd={active:`border-l-info`,"in-progress":`border-l-warning`,completed:`border-l-success`,failed:`border-l-danger`,dismissed:`border-l-foreground-subtle/30`};function fd(e){let t=Math.floor((Date.now()-e)/1e3);if(t<60)return B.t(`helpers.relativeTime.justNow`);let n=Math.floor(t/60);if(n<60)return B.t(`helpers.relativeTime.minutesAgo`,{count:n});let r=Math.floor(n/60);if(r<24)return B.t(`helpers.relativeTime.hoursAgo`,{count:r});let i=Math.floor(r/24);return B.t(`helpers.relativeTime.daysAgo`,{count:i})}function pd(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function md(e){return typeof e==`string`&&e.length>0?e:void 0}function hd(e){if(pd(e.metadata)){let t=md(e.metadata.nodeId)??md(e.metadata.agentId);if(t!==void 0)return t}let t=e.source;if(t!==void 0&&!(t.type!==`node`&&t.type!==`agent`))return md(t.id)}function gd({alert:e,onMarkRead:t,onDismiss:n}){let{t:r}=V(),i=e.severity in ld?e.severity:`info`,a=e.status in dd?e.status:`active`,o=ld[i],s=ud[i],c=dd[a],{nodes:l}=In(),u=hd(e),d=u===void 0?void 0:l.find(e=>e.id===u),f=u===void 0?void 0:d?.name??u;return y(`div`,{className:`flex items-start gap-2.5 px-3 py-2.5 border-l-2 ${c} ${e.read?`opacity-60`:``} hover:bg-surface-hover transition-colors`,children:[N(o,{className:`h-3.5 w-3.5 shrink-0 mt-0.5 ${s}`}),y(`div`,{className:`flex-1 min-w-0`,children:[y(`div`,{className:`flex items-center gap-1.5`,children:[N(`span`,{className:`text-[11px] font-semibold ${e.read?`text-foreground-subtle`:`text-foreground`}`,children:e.title}),!e.read&&N(`span`,{className:`h-1.5 w-1.5 rounded-full bg-primary shrink-0`})]}),f!==void 0&&N(`div`,{className:`text-foreground-subtle text-[10px] mt-0.5 truncate`,children:f}),N(`div`,{className:`text-[10px] text-foreground-subtle mt-0.5 line-clamp-2`,children:e.message}),e.status===`in-progress`&&e.progress!==void 0&&y(`div`,{className:`mt-1.5 flex items-center gap-2`,children:[N(`div`,{className:`flex-1 h-1 bg-surface-hover rounded-full overflow-hidden`,children:N(`div`,{className:`h-full bg-primary rounded-full transition-all duration-300`,style:{width:`${String(Math.min(100,Math.max(0,e.progress)))}%`}})}),y(`span`,{className:`text-[9px] text-foreground-subtle font-mono shrink-0`,children:[String(Math.round(e.progress)),`%`]})]}),N(`div`,{className:`text-[9px] text-foreground-subtle/60 mt-1`,children:fd(e.updatedAt)})]}),y(`div`,{className:`flex items-center gap-0.5 shrink-0`,children:[!e.read&&N(`button`,{type:`button`,onClick:n=>{n.stopPropagation(),t(e.id)},className:`p-1 rounded hover:bg-surface-hover transition-colors`,title:r(`ui.alertBell.markAsRead`,`Mark as read`),children:N(Ce,{className:`h-3 w-3 text-foreground-subtle`})}),e.status!==`in-progress`&&N(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),n(e.id)},className:`p-1 rounded hover:bg-surface-hover transition-colors`,title:r(`ui.alertBell.dismiss`,`Dismiss`),children:N(De,{className:`h-3 w-3 text-foreground-subtle`})})]})]})}function _d({variant:e=`icon`,compact:t=!1}={}){let{t:n}=V(),[r,i]=f(!1),[a,o]=f(!1),c=j(null),l=j(null),u=A(),{data:d=0}=an(void 0,{refetchInterval:3e4}),{data:m=[],isLoading:h}=ln({limit:50},{enabled:r}),g=a?m:m.filter(e=>!e.read),_=m.filter(e=>e.read).length,v=()=>{u.invalidateQueries({queryKey:[[`alerts`]]})},b=Yt({onSuccess:v}),x=Ht({onSuccess:v}),S=Gt({onSuccess:v});Xn(`alert.created`,()=>{u.invalidateQueries({queryKey:[[`alerts`]]})}),Xn(`alert.updated`,()=>{u.invalidateQueries({queryKey:[[`alerts`]]})}),s(()=>{if(!r)return;let e=e=>{let t=e.target;c.current&&!c.current.contains(t)&&l.current&&!l.current.contains(t)&&i(!1)};return document.addEventListener(`mousedown`,e),document.addEventListener(`touchstart`,e),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`touchstart`,e)}},[r]);let C=p(e=>{b.mutate({alertId:e})},[b]),w=p(e=>{e&&S.mutate({alertId:e})},[S]),T=p(()=>{x.mutate(void 0),i(!1)},[x]),E=g.filter(e=>e.status===`in-progress`),D=g.filter(e=>e.status!==`in-progress`),[O,k]=f({}),M=p(()=>{let e=l.current;if(!e)return;let t=e.getBoundingClientRect(),n=window.innerWidth,r=window.innerHeight,i=Math.min(320,n-16),a=t.left;a+i>n-8&&(a=n-8-i),a<8&&(a=8);let o=r-t.bottom,s=t.top,c={position:`fixed`,left:a,width:i,zIndex:9999};o>=s?(c.top=t.bottom+4,c.maxHeight=Math.max(160,o-8-4)):(c.bottom=r-t.top+4,c.maxHeight=Math.max(160,s-8-4)),k(c)},[]);return s(()=>{if(!r)return;M();let e=()=>M();return window.addEventListener(`resize`,e),window.addEventListener(`scroll`,e,!0),()=>{window.removeEventListener(`resize`,e),window.removeEventListener(`scroll`,e,!0)}},[r,M]),y(`div`,{children:[e===`sidebar`?y(`button`,{ref:l,type:`button`,onClick:()=>i(!r),className:`flex w-full items-center gap-2.5 rounded-md ${t?`justify-center px-0 py-2`:`px-2.5 py-1.5`} text-[12px] text-foreground-subtle hover:bg-surface-hover hover:text-foreground transition-colors`,title:t?d>0?n(`ui.alertBell.alertsUnread`,{count:d}):n(`ui.alertBell.alerts`):void 0,children:[y(`span`,{className:`relative inline-flex shrink-0`,children:[N(Ae,{className:`h-3.5 w-3.5`}),t&&d>0&&N(`span`,{className:`absolute -top-1 -right-1 h-2 w-2 rounded-full bg-primary`})]}),!t&&N(`span`,{className:`flex-1 text-left`,children:n(`ui.alertBell.alerts`,`Alerts`)}),!t&&d>0&&N(`span`,{className:`flex items-center justify-center h-4 min-w-4 px-1 rounded-full bg-primary text-primary-foreground text-[9px] font-bold leading-none`,children:d>99?`99+`:String(d)})]}):y(`button`,{ref:l,type:`button`,onClick:()=>i(!r),className:`relative p-1.5 rounded-md hover:bg-surface-hover text-foreground-subtle hover:text-foreground transition-colors`,"aria-label":n(`ui.alertBell.alerts`,`Alerts`),children:[N(Ae,{className:`h-4.5 w-4.5`}),d>0&&N(`span`,{className:`absolute -top-0.5 -right-0.5 flex items-center justify-center h-4 min-w-4 px-0.5 rounded-full bg-primary text-primary-foreground text-[9px] font-bold leading-none`,children:d>99?`99+`:String(d)})]}),r&&rr(y(`div`,{ref:c,style:O,className:`bg-surface border border-border rounded-lg shadow-xl flex flex-col overflow-hidden`,children:[y(`div`,{className:`flex items-center justify-between px-3 py-2 border-b border-border shrink-0`,children:[N(`span`,{className:`text-[12px] font-semibold text-foreground`,children:n(`ui.alertBell.alerts`,`Alerts`)}),y(`div`,{className:`flex items-center gap-2`,children:[_>0&&y(`label`,{className:`flex items-center gap-1 text-[10px] text-foreground-subtle cursor-pointer select-none`,children:[N(`input`,{type:`checkbox`,checked:a,onChange:e=>o(e.target.checked),className:`h-3 w-3 rounded border-border accent-primary cursor-pointer`}),n(`ui.alertBell.showRead`,`Show read`)]}),d>0&&y(`button`,{type:`button`,onClick:T,className:`flex items-center gap-1 text-[10px] text-primary hover:text-primary/80 transition-colors`,children:[N(rt,{className:`h-3 w-3`}),n(`ui.alertBell.markAllRead`,`Mark all read`)]})]})]}),y(`div`,{className:`flex-1 overflow-y-auto`,children:[h&&N(`div`,{className:`flex items-center justify-center py-8`,children:N(Se,{className:`h-4 w-4 animate-spin text-foreground-subtle`})}),!h&&g.length===0&&y(`div`,{className:`flex flex-col items-center justify-center py-8 text-foreground-subtle`,children:[N(Ae,{className:`h-6 w-6 mb-2 opacity-40`}),N(`span`,{className:`text-[11px]`,children:m.length>0?n(`ui.alertBell.noUnreadAlerts`,`No unread alerts`):n(`ui.alertBell.noAlerts`,`No alerts`)}),m.length>0&&!a&&N(`button`,{type:`button`,onClick:()=>o(!0),className:`text-[10px] text-primary mt-1 hover:underline`,children:n(`ui.alertBell.showRead`,{count:_})})]}),E.length>0&&y(`div`,{className:`border-b border-border`,children:[N(`div`,{className:`px-3 py-1.5 bg-surface-hover/50`,children:N(`span`,{className:`text-[9px] font-semibold uppercase tracking-widest text-foreground-subtle/60`,children:n(`ui.alertBell.inProgress`,`In Progress`)})}),E.map(e=>N(gd,{alert:e,onMarkRead:C,onDismiss:w},e.id))]}),D.map(e=>N(gd,{alert:e,onMarkRead:C,onDismiss:w},e.id))]})]}),document.body)]})}a();function vd(){let e=Es();return C(e.subscribe,e.getSnapshot,e.getSnapshot)}var yd=[`detection`,`cluster`,`administration`];function bd(e){return yd.includes(e)}function xd(e){let t=new Map,n=new Map,r=[];for(let i of e){let e=i.section?.trim();if(e===void 0||e.length===0){r.push(i);continue}if(bd(e)){let n=t.get(e)??[];n.push(i),t.set(e,n);continue}let a=n.get(e);a?a.pages.push(i):n.set(e,{label:i.sectionLabel?.trim()||e,pages:[i]})}return{known:t,custom:[...n.entries()].map(([e,t])=>({id:e,label:t.label,pages:t.pages})),ungrouped:r}}var Sd=`camstack:last-path`,Cd=512,wd=[`/login`,`/change-password`,`/access-denied`,`/logout`];function Td(e){return!e.startsWith(`/`)||e.startsWith(`//`)||e.length>Cd?!1:!wd.some(t=>e===t||e.startsWith(t+`/`))}function Ed(e){if(!(typeof window>`u`)&&Td(e))try{window.localStorage.setItem(Sd,e)}catch{}}function Dd(){if(typeof window>`u`)return null;try{let e=window.localStorage.getItem(Sd);return e===null?null:Td(e)?e:null}catch{return null}}a();var Od=g(!0);function kd(e){return e===`/addon`||e.startsWith(`/addon/`)}function Ad(e,t,n){let r=[...e.filter(e=>e!==t),t];return r.length<=n?r:r.slice(r.length-n)}function jd({maxCached:e=6}){let t=zi(),n=J(),r=Ni(),i=v(q),a=n.pathname,o=kd(a),s=j(new Map),c=j([]);if(o){s.current.set(a,{key:a,outlet:t,location:n,navigationType:r,routeContext:i});let o=Ad(c.current,a,e),l=new Set(o);for(let e of s.current.keys())l.has(e)||s.current.delete(e);c.current=o}return y(E,{children:[c.current.map(e=>{let t=s.current.get(e);if(t?.outlet==null)return null;let n=o&&e===a;return N(`div`,{className:n?`h-full min-h-0`:void 0,style:n?void 0:{display:`none`},hidden:!n,"aria-hidden":!n,children:N(Od.Provider,{value:n,children:N(wi.Provider,{value:{location:t.location,navigationType:t.navigationType},children:N(q.Provider,{value:t.routeContext,children:t.outlet})})})},e)}),!o&&t!=null?N(`div`,{className:`h-full min-h-0`,children:t},a):null]})}a();var Md={dark:ee,light:L,system:it};function Nd(){return N(`div`,{className:`flex h-full min-h-[50vh] items-center justify-center`,children:N(`span`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-primary/30 border-t-primary`})})}function Pd(){let e=J(),t=Ii(),{user:n,logout:r}=Tc(),i=Ft(),{t:a}=V(),o=Rn(),c=fn(),{info:l}=ed();s(()=>{document.title=l===null?`CamStack Admin`:`${l.name} \u00b7 CamStack Admin`},[l]);let u=gs(vd()),[p,m]=f(!1);s(()=>{Ed(e.pathname+e.search)},[e.pathname,e.search]);let[h,g]=f(()=>typeof window>`u`?!1:window.localStorage.getItem(`camstack:sidebar-collapsed`)===`1`);s(()=>{typeof window>`u`||window.localStorage.setItem(`camstack:sidebar-collapsed`,h?`1`:`0`)},[h]);let[_]=f(()=>{if(typeof window>`u`)return new Set;try{let e=window.localStorage.getItem(`camstack:sidebar-collapsed-groups`);if(!e)return new Set;let t=JSON.parse(e);return Array.isArray(t)?new Set(t.filter(e=>typeof e==`string`)):new Set}catch{return new Set}});s(()=>{typeof window>`u`||window.localStorage.setItem(`camstack:sidebar-collapsed-groups`,JSON.stringify([..._]))},[_]),s(()=>{c&&window.localStorage.getItem(`camstack:sidebar-collapsed`)===null&&g(!0)},[c]);let{data:v=[]}=At({nodeId:`hub`},{refetchInterval:3e4}),b=v.length,x=A(),S=j(Date.now()),{data:C}=vn(void 0,{staleTime:0,refetchOnMount:`always`,refetchInterval:e=>{let t=e.state.data;return t&&t.length>0||Date.now()-S.current>=3e4?!1:2e3}}),T=d(()=>C&&n?.isAdmin?iu(C):[],[C,n?.isAdmin]),D=d(()=>xd(T),[T]),O=D.known.get(`detection`)??[],k=D.known.get(`cluster`)??[],M=D.known.get(`administration`)??[];Xn(`addon.page-ready`,()=>{x.invalidateQueries({queryKey:[[`addonPages`,`listPages`]]})});let P=()=>{r(),t(`/login`)},F=t=>!!(e.pathname===t||e.pathname.startsWith(t+`/`)),I=[`/system/pipeline`,`/live`,`/addon/osd-manager`,`/build`].some(t=>e.pathname===t||e.pathname.startsWith(t+`/`)),ee=n?.isAdmin===!0,L=d(()=>ju({t:a,isAdmin:ee}),[a,ee]),te=L[0]?.items??[],ne=L[1]?.items??[],re=L[2]?.items??[],ie=L[3]?.items??[],ae=i?.mode??`system`,oe={dark:a(`theme.dark`),light:a(`theme.light`),system:a(`theme.system`)},R=h&&!o,se=(e,t=`md`)=>`flex w-full items-center gap-2.5 rounded-md ${R?`justify-center px-0 py-2`:`px-2.5 py-1.5`} ${t===`lg`?`text-[13px] font-medium`:`text-[12px]`} transition-all ${e?t===`lg`?`bg-primary/12 text-primary shadow-sm shadow-primary/5`:`bg-primary/12 text-primary`:`text-foreground-subtle hover:bg-surface-hover hover:text-foreground`}`,ce=(e,t)=>e===0?null:R?N(`div`,{className:`pt-3 mb-1 mx-2 border-t border-border/60`},`sep-${t}`):N(`div`,{className:`pt-4 pb-1.5 px-2.5`,children:N(`span`,{className:`text-[10px] font-semibold uppercase tracking-widest text-foreground-subtle/60`,children:t})},`hdr-${t}`),ue=e=>{let n=F(e.path),r=Nu(e.icon);return y(`button`,{onClick:()=>{t(e.path),m(!1)},className:se(n),title:R?e.label:void 0,children:[N(r,{className:`h-3.5 w-3.5 shrink-0 ${n?`text-primary`:``}`}),!R&&e.label]},`${e.addonId}::${e.id}`)},de=e=>{let n=e.icon,r=F(e.path),i=e.path===`/system/addons`;return y(`button`,{"data-testid":`nav-${e.path.replace(/^\//,``).replace(/\//g,`-`)}`,onClick:()=>{t(e.path),m(!1)},className:se(r),title:R?e.label:void 0,children:[N(n,{className:`h-3.5 w-3.5 shrink-0 ${r?`text-primary`:``}`}),!R&&y(E,{children:[N(`span`,{className:`flex-1 text-left`,children:e.label}),i&&b>0&&N(`span`,{className:`ml-auto rounded-full bg-primary px-1.5 py-0.5 text-[9px] font-bold text-primary-foreground leading-none`,children:b})]}),R&&i&&b>0&&N(`span`,{className:`absolute mt-[-14px] ml-3 h-2 w-2 rounded-full bg-primary`})]},e.path)},fe=y(E,{children:[y(`div`,{className:`flex h-14 items-center border-b border-border ${R?`justify-center px-1`:`pl-3 pr-4 gap-2`}`,children:[!R&&N(`img`,{src:i?.resolvedMode===`light`?z(`/brand/logo-horizontal-light.svg`):z(`/brand/logo-horizontal-dark.svg`),alt:a(`layouts.appLayout.camstackAdmin`,`CamStack Admin`),className:`h-9 flex-1 min-w-0`}),!o&&N(`button`,{onClick:()=>g(e=>!e),className:`p-1.5 rounded-md hover:bg-surface-hover text-foreground-subtle transition-colors flex-shrink-0 ${R?``:`mr-2`}`,"aria-label":h?a(`layouts.appLayout.expandSidebar`,`Expand sidebar`):a(`layouts.appLayout.collapseSidebar`,`Collapse sidebar`),title:h?a(`layouts.appLayout.expandSidebar`,`Expand sidebar`):a(`layouts.appLayout.collapseSidebar`,`Collapse sidebar`),children:N(h?ye:Je,{className:`h-4 w-4`})})]}),!R&&l!==null&&N(`div`,{"data-testid":`sidebar-server-name`,title:l.name,className:`truncate border-b border-border px-3 py-1.5 text-xs font-medium text-foreground-muted`,children:l.name}),N(`div`,{className:`border-b border-border pt-2`,children:N(Uu,{navSections:L,addonPages:T,compact:R,onNavigated:()=>m(!1)})}),y(`nav`,{className:`flex-1 overflow-y-auto py-3 ${R?`px-1.5`:`px-2`} space-y-0.5`,children:[te.map(e=>de(e)),ce(ne.length+O.length,a(`nav.detectionSection`,`Detection`)),ne.map(e=>de(e)),O.map(e=>ue(e)),ce(re.length+k.length,a(`nav.clusterSection`,`Cluster`)),re.map(e=>de(e)),k.map(e=>ue(e)),ce(ie.length+M.length,a(`system.title`,`Administration`)),ie.map(e=>de(e)),M.map(e=>ue(e)),D.custom.map(e=>y(`div`,{className:`contents`,children:[ce(e.pages.length,e.label),e.pages.map(e=>ue(e))]},`custom-${e.id}`)),ce(D.ungrouped.length,a(`nav.addonPages`,`Addon Pages`)),D.ungrouped.map(e=>ue(e))]}),y(`div`,{className:`border-t border-border ${R?`p-1.5`:`p-2`} space-y-0.5`,children:[y(`button`,{onClick:()=>i?.toggleMode(),className:se(!1),title:R?oe[ae]:void 0,children:[(()=>{let e=Md[ae];return N(e,{className:`h-3.5 w-3.5 shrink-0`})})(),!R&&N(`span`,{children:oe[ae]})]}),N(_d,{variant:`sidebar`,compact:R}),y(`button`,{type:`button`,onClick:()=>t(`/system/my-access`),className:se(F(`/system/my-access`)),title:R?a(`system.myAccess`,`My access`):void 0,children:[N(ze,{className:`h-3.5 w-3.5 shrink-0`}),!R&&N(`span`,{className:`truncate`,children:a(`system.myAccess`,`My access`)})]}),y(`button`,{onClick:P,className:se(!1).replace(`hover:text-foreground`,`hover:text-danger`),title:R?n?.username??a(`layouts.appLayout.logout`,`Logout`):void 0,children:[N(ct,{className:`h-3.5 w-3.5 shrink-0`}),!R&&N(`span`,{className:`truncate`,children:n?.username??a(`layouts.appLayout.user`,`User`)})]}),N(`div`,{className:`pt-1 text-[10px] text-foreground-disabled select-none ${R?`text-center`:`px-2`}`,title:a(`layouts.appLayout.adminUiV`,`admin-ui v{{__APP_VERSION__}}`,{__APP_VERSION__:`1.2.431`}),children:R?`1.2.431`:`v1.2.431`})]})]});return y(`div`,{className:`flex h-dvh overflow-hidden bg-background text-foreground pt-[env(safe-area-inset-top)] pb-[env(safe-area-inset-bottom)]`,children:[!o&&N(`aside`,{className:`flex flex-col border-r border-border bg-surface/80 backdrop-blur-sm shrink-0 transition-[width] duration-150 ease-out ${R?`w-12`:`w-48`}`,children:fe}),o&&N(Dt,{open:p,onClose:()=>m(!1),width:`w-64`,children:fe}),y(`div`,{className:`flex flex-1 flex-col min-w-0`,children:[u!==null&&y(`div`,{className:`flex items-center justify-center gap-2 px-3 py-2 text-[12px] font-medium shrink-0 ${u.severity===`danger`?`bg-danger/90 text-white`:`bg-warning/15 text-warning border-b border-warning/30`}`,children:[u.severity===`danger`?N(xe,{className:`h-3.5 w-3.5`}):N(le,{className:`h-3.5 w-3.5`}),N(`span`,{children:a(u.i18nKey,{defaultValue:u.message,...u.i18nParams})}),u.action===`sign-in`&&N(`button`,{onClick:()=>r(),className:`ml-2 rounded border border-white/40 px-2 py-0.5 text-[11px] font-semibold hover:bg-white/10`,children:a(`connection.signIn`,`Sign in`)}),u.showSpinner&&N(Se,{className:`h-3.5 w-3.5 animate-spin`})]}),N(Qu,{}),N(sd,{}),o&&y(`header`,{className:`flex items-center h-12 border-b border-border px-3 shrink-0 bg-surface/80 backdrop-blur-sm`,children:[N(`button`,{onClick:()=>m(!0),className:`p-1.5 -ml-1.5 rounded-md hover:bg-surface-hover text-foreground-muted transition-colors`,"aria-label":a(`layouts.appLayout.openMenu`,`Open menu`),children:N(ve,{className:`h-5 w-5`})}),N(`div`,{className:`flex-1 flex justify-center`,children:N(`img`,{src:i?.resolvedMode===`light`?z(`/brand/logo-horizontal-light.svg`):z(`/brand/logo-horizontal-dark.svg`),alt:a(`layouts.appLayout.camstack`,`CamStack`),className:`h-7`})}),N(_d,{})]}),N(`main`,{className:`relative flex-1 min-h-0 overscroll-contain bg-background ${I?`overflow-hidden`:`overflow-auto`}`,children:N(w,{fallback:N(Nd,{}),children:N(jd,{})})})]})]})}function $({children:e,requireAdmin:t}){let{t:n}=V(),{user:r,loading:i,mustChangePassword:a}=Tc(),o=J();return i?N(`div`,{className:`flex h-screen items-center justify-center bg-background text-foreground-subtle`,children:n(`layouts.protectedRoute.loading`,`Loading...`)}):r?a&&o.pathname!==`/change-password`?N(Y,{to:`/change-password`,replace:!0}):t&&!r.isAdmin?N(Y,{to:`/access-denied`,replace:!0}):N(E,{children:e}):N(Y,{to:`/login`,replace:!0,state:{from:o.pathname+o.search}})}var Fd=`customize`,Id=`main`,Ld=`advanced`,Rd=`/build/compositions/new`,zd=`/build/compositions/:blockId`,Bd=`/build?tab=custom-device`;function Vd(e){return`/devices/${e}?tab=${Fd}`}function Hd(e){return`${Vd(e)}&sub=${Ld}`}function Ud(e){return`/build/compositions/${encodeURIComponent(e)}`}var Wd=`integration`,Gd=`section`,Kd=[Wd,Gd],qd={connectivity:{path:`/system/integrations`,tab:null},remoteAccess:{path:`/system/network`,tab:`remote-access`},mesh:{path:`/system/network`,tab:`mesh`},turn:{path:`/system/network`,tab:`turn`},authentication:{path:`/system/identity`,tab:`authentication`},access:{path:`/system/identity`,tab:`access`},logging:{path:`/system/logs`,tab:`destinations`}},Jd=`settings`,Yd=`activity`;function Xd(e,t={}){let{path:n,tab:r}=qd[e],i=new URLSearchParams;r!==null&&i.set(`tab`,r),t.integration!==void 0&&i.set(Wd,t.integration),t.section!==void 0&&i.set(Gd,t.section);let a=i.toString();return a.length>0?`${n}?${a}`:n}function Zd(e){let{ids:t,requested:n,answered:r,legacyGroup:i=null,groupFirst:a={}}=e;if(n!==null&&t.includes(n))return{selectedId:n,staleId:null};let o=n!==null&&r?n:null,s=i===null?void 0:a[i];return s!==void 0&&t.includes(s)?{selectedId:s,staleId:o}:{selectedId:t[0]??null,staleId:o}}function Qd(e,t,n=null,r=null){let i=new URLSearchParams(e);return i.set(Wd,t),r===null?i.delete(Gd):i.set(Gd,r),n!==null&&i.delete(n),i}function $d(e){return e===`/admin`||e===`/admin/`?`/`:e.startsWith(`/admin/`)?e.slice(6):e}function ef(){let{t:e}=V(),t=Ii();return y(`div`,{className:`flex flex-col items-center justify-center text-foreground py-16 px-4`,children:[N(`div`,{className:`flex h-16 w-16 items-center justify-center rounded-2xl bg-danger/10 mb-4`,children:N(ut,{className:`h-8 w-8 text-danger`})}),N(`h1`,{className:`text-xl font-bold`,children:e(`accessDenied.accessDenied`,`Access Denied`)}),N(`p`,{className:`mt-2 text-sm text-foreground-subtle`,children:e(`accessDenied.youDonTHavePermission`,`You don't have permission to access this page.`)}),N(`button`,{onClick:()=>t(`/devices`),className:`mt-6 rounded-lg bg-primary px-5 py-2.5 text-sm font-medium text-primary-foreground shadow-md shadow-primary/20 hover:shadow-lg transition-all`,children:e(`accessDenied.goToDevices`,`Go to Devices`)})]})}a();var tf=8;function nf(){let{t:e}=V(),{user:t,mustChangePassword:n,clearMustChangePassword:r,logout:i}=Tc(),a=Ft(),o=Ii(),[s,c]=f(``),[l,u]=f(``),[d,p]=f(!1),[m,h]=f(``),g=Xt({onSuccess:()=>{r(),o(`/devices`,{replace:!0})},onError:e=>{h(e instanceof Error?e.message:`Could not change password`)}});return N(`div`,{className:`flex min-h-screen items-center justify-center bg-background p-4`,children:y(`div`,{className:`w-full max-w-sm`,children:[N(`div`,{className:`flex justify-center mb-8`,children:N(`img`,{src:a?.resolvedMode===`light`?z(`/brand/logo-horizontal-light.svg`):z(`/brand/logo-horizontal-dark.svg`),alt:e(`changePassword.camstackAdmin`,`CamStack Admin`),className:`h-12`})}),y(`form`,{onSubmit:async e=>{if(e.preventDefault(),h(``),!t){h(`Not signed in`);return}if(s.length<tf){h(`Password must be at least ${tf} characters`);return}if(s!==l){h(`The two passwords do not match`);return}if(s===`changeme`){h(`Choose a password different from the seed default`);return}g.mutate({id:t.id,newPassword:s})},className:`space-y-4 rounded-xl border border-border bg-surface p-6 shadow-xl shadow-black/10`,children:[y(`div`,{className:`space-y-1`,children:[N(`h1`,{className:`text-sm font-semibold text-foreground`,children:e(`changePassword.setANewPassword`,`Set a new password`)}),N(`p`,{className:`text-xs text-foreground-subtle`,children:n?e(`changePassword.youMustRotateTheSeed`,`You must rotate the seed password before continuing.`):e(`changePassword.chooseANewPasswordFor`,`Choose a new password for your account.`)})]}),m&&N(`div`,{className:`rounded-md bg-danger/10 border border-danger/20 px-3 py-2 text-xs text-danger`,children:m}),y(`div`,{className:`space-y-1.5`,children:[N(`label`,{className:`text-xs font-medium text-foreground-subtle`,children:e(`changePassword.newPassword`,`New password`)}),y(`div`,{className:`relative`,children:[N(`input`,{"data-testid":`change-password-new`,type:d?`text`:`password`,value:s,onChange:e=>c(e.target.value),className:`w-full rounded-lg border border-border bg-background px-3 py-2.5 pr-10 text-sm text-foreground placeholder:text-foreground-disabled focus:border-primary focus:ring-1 focus:ring-primary/30 outline-none transition-all`,autoFocus:!0}),N(`button`,{type:`button`,onClick:()=>p(!d),className:`absolute right-2.5 top-1/2 -translate-y-1/2 text-foreground-subtle hover:text-foreground transition-colors`,tabIndex:-1,children:N(d?ie:te,{className:`h-4 w-4`})})]})]}),y(`div`,{className:`space-y-1.5`,children:[N(`label`,{className:`text-xs font-medium text-foreground-subtle`,children:e(`changePassword.confirmNewPassword`,`Confirm new password`)}),N(`input`,{"data-testid":`change-password-confirm`,type:d?`text`:`password`,value:l,onChange:e=>u(e.target.value),className:`w-full rounded-lg border border-border bg-background px-3 py-2.5 text-sm text-foreground placeholder:text-foreground-disabled focus:border-primary focus:ring-1 focus:ring-primary/30 outline-none transition-all`})]}),N(`button`,{"data-testid":`change-password-submit`,type:`submit`,disabled:g.isPending||!s||!l,className:`w-full rounded-lg bg-primary px-4 py-2.5 text-sm font-semibold text-primary-foreground shadow-md shadow-primary/20 hover:shadow-lg hover:shadow-primary/30 disabled:opacity-50 disabled:shadow-none transition-all`,children:g.isPending?e(`changePassword.saving`,`Saving…`):e(`changePassword.saveAndContinue`,`Save and continue`)}),n&&N(`button`,{type:`button`,onClick:()=>{i(),o(`/login`,{replace:!0})},className:`w-full text-xs text-foreground-subtle hover:text-foreground transition-colors`,children:e(`changePassword.signOutInstead`,`Sign out instead`)})]})]})})}function rf(e){let t=new Uint8Array(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=/g,``)}function af(e){let t=e.replace(/-/g,`+`).replace(/_/g,`/`),n=(4-t.length%4)%4,r=t.padEnd(t.length+n,`=`),i=atob(r),a=new ArrayBuffer(i.length),o=new Uint8Array(a);for(let e=0;e<i.length;e++)o[e]=i.charCodeAt(e);return a}function of(){return window?.PublicKeyCredential!==void 0&&typeof window.PublicKeyCredential==`function`}function sf(e){let{id:t}=e;return{...e,id:af(t),transports:e.transports}}function cf(e){return e===`localhost`||/^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$/i.test(e)}var lf=class extends Error{constructor({message:e,code:t,cause:n,name:r}){super(e,{cause:n}),this.name=r??n.name,this.code=t}},uf=new class{createNewAbortSignal(){if(this.controller){let e=Error(`Cancelling existing WebAuthn API call for new one`);e.name=`AbortError`,this.controller.abort(e)}let e=new AbortController;return this.controller=e,e.signal}cancelCeremony(){if(this.controller){let e=Error(`Manually cancelling existing WebAuthn API call`);e.name=`AbortError`,this.controller.abort(e),this.controller=void 0}}},df=[`cross-platform`,`platform`];function ff(e){if(e&&!(df.indexOf(e)<0))return e}function pf(){if(!of())return new Promise(e=>e(!1));let e=window.PublicKeyCredential;return e.isConditionalMediationAvailable===void 0?new Promise(e=>e(!1)):e.isConditionalMediationAvailable()}function mf({error:e,options:t}){let{publicKey:n}=t;if(!n)throw Error(`options was missing required publicKey property`);if(e.name===`AbortError`){if(t.signal instanceof AbortSignal)return new lf({message:`Authentication ceremony was sent an abort signal`,code:`ERROR_CEREMONY_ABORTED`,cause:e})}else if(e.name===`NotAllowedError`)return new lf({message:e.message,code:`ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY`,cause:e});else if(e.name===`SecurityError`){let t=window.location.hostname;if(!cf(t))return new lf({message:`${window.location.hostname} is an invalid domain`,code:`ERROR_INVALID_DOMAIN`,cause:e});if(n.rpId!==t)return new lf({message:`The RP ID "${n.rpId}" is invalid for this domain`,code:`ERROR_INVALID_RP_ID`,cause:e})}else if(e.name===`UnknownError`)return new lf({message:`The authenticator was unable to process the specified options, or could not create a new assertion signature`,code:`ERROR_AUTHENTICATOR_GENERAL_ERROR`,cause:e});return e}async function hf(e){let{optionsJSON:t,useBrowserAutofill:n=!1,verifyBrowserAutofillInput:r=!0}=e;if(!of())throw Error(`WebAuthn is not supported in this browser`);let i;t.allowCredentials?.length!==0&&(i=t.allowCredentials?.map(sf));let a={...t,challenge:af(t.challenge),allowCredentials:i},o={};if(n){if(!await pf())throw Error(`Browser does not support WebAuthn autofill`);if(document.querySelectorAll(`input[autocomplete$='webauthn']`).length<1&&r)throw Error('No <input> with "webauthn" as the only or last value in its `autocomplete` attribute was detected');o.mediation=`conditional`,a.allowCredentials=[]}o.publicKey=a,o.signal=uf.createNewAbortSignal();let s;try{s=await navigator.credentials.get(o)}catch(e){throw mf({error:e,options:o})}if(!s)throw Error(`Authentication was not completed`);let{id:c,rawId:l,response:u,type:d}=s,f;return u.userHandle&&(f=rf(u.userHandle)),{id:c,rawId:rf(l),response:{authenticatorData:rf(u.authenticatorData),clientDataJSON:rf(u.clientDataJSON),signature:rf(u.signature),userHandle:f},type:d,clientExtensionResults:s.getClientExtensionResults(),authenticatorAttachment:ff(s.authenticatorAttachment)}}a();async function gf(e){let t=await hf({optionsJSON:e});return Object.fromEntries(Object.entries(t))}function _f({method:e,challengeToken:t,onComplete:n,onSecondFactor:r,onError:i}){let[a,o]=f(!1),[s,c]=f(null),l=async()=>{c(null),o(!0);try{let e=Q();if(t){let r=await gf((await e.loginBeginPasskey(t)).optionsJSON),i=await e.loginVerifyPasskey(t,r,{refreshable:!0});n(i.token,i);return}let a=await gf((await e.passkeyLoginBegin()).optionsJSON),o=await e.passkeyLoginFinish(a,{refreshable:!0}),s=o.secondFactors??(o.requiresTotp===!0?[`totp`]:[]);if(s.length>0){if(r)r({challengeToken:o.token,factors:s});else{let e=`Additional verification is required — sign in with your password to continue.`;c(e),i?.(e)}return}n(o.token,o)}catch(e){let n=t?`Passkey verification failed`:`Passkey sign-in failed`,r=e instanceof Error?e.message:n;c(r),i?.(r)}finally{o(!1)}};return y(`div`,{className:`space-y-2`,children:[y(`button`,{type:`button`,"data-testid":t?`login-passkey`:`login-passkey-direct`,onClick:()=>void l(),disabled:a,className:`w-full flex items-center justify-center gap-2 rounded-lg border border-border bg-surface px-4 py-2.5 text-sm font-medium text-foreground hover:bg-surface-hover disabled:opacity-50 transition-colors`,children:[a?N(Se,{className:`h-4 w-4 animate-spin text-primary`}):N(pt,{className:`h-4 w-4 text-primary`}),e.label]}),s&&N(`div`,{className:`rounded-md bg-danger/10 border border-danger/20 px-3 py-2 text-xs text-danger`,children:s})]})}var vf=()=>window.location.hostname;function yf(e,t=vf){return of()&&Ku(t(),e.rpId)}function bf(e,t=vf){let n=e.filter(e=>e.kind===`passkey`&&e.stage===`second-factor`).filter(e=>yf(e,t));return{passkeyMethods:n,widgetMethods:n.length>0?[]:e.filter(e=>e.kind===`widget`&&e.stage===`second-factor`)}}function xf(e,t){let n=e.includes(`passkey`),r=t.passkeyMethods.length>0||t.widgetMethods.length>0,i=e.includes(`totp`);return n&&!r&&!i}function Sf(e){let t=e.onComplete,n=e.onSecondFactor;return typeof t==`function`?{onComplete:t,onSecondFactor:typeof n==`function`?n:void 0}:null}function Cf({methods:e,widgetConfig:t,onRedirect:n}){let{t:r}=V();Pn();let i=e.filter(e=>e.kind!==`passkey`||yf(e));return i.length===0?null:y(`div`,{className:`mt-6 space-y-3`,children:[y(`div`,{className:`flex items-center gap-3`,children:[N(`div`,{className:`h-px flex-1 bg-border`}),N(`span`,{className:`text-[10px] uppercase tracking-wider text-foreground-subtle`,children:r(`login.primaryLoginMethods.orContinueWith`,`Or continue with`)}),N(`div`,{className:`h-px flex-1 bg-border`})]}),N(`div`,{className:`space-y-2`,children:i.map(e=>{if(e.kind===`redirect`){let t=(e.icon===void 0?void 0:mn(e.icon))??ze;return y(`a`,{href:e.startUrl,onClick:t=>{n?.(e)===!0&&t.preventDefault()},className:`flex items-center justify-center gap-2 w-full rounded-lg border border-border bg-surface px-4 py-2.5 text-sm font-medium text-foreground hover:bg-surface-hover transition-colors`,children:[N(t,{className:`h-4 w-4 text-primary`}),e.label]},e.id)}if(e.kind===`passkey`){let n=Sf(t);return n?N(_f,{method:e,onComplete:n.onComplete,onSecondFactor:n.onSecondFactor},e.id):null}return N(wf,{method:e,config:t},e.id)})})]})}function wf({method:e,config:t}){let{t:n}=V(),r=rn(e.remote,e.bundleUrl);return r===null?y(`div`,{className:`flex items-center justify-center gap-2 rounded-lg border border-border bg-background px-4 py-2.5 text-xs text-foreground-subtle`,children:[N(Se,{className:`h-3.5 w-3.5 animate-spin`}),n(`common.loading`,`Loading…`)]}):r===void 0?y(`div`,{"data-testid":`login-method-load-error`,className:`flex items-center justify-center gap-2 rounded-lg border border-danger/20 bg-danger/10 px-4 py-2.5 text-xs text-danger`,children:[N(Ve,{className:`h-3.5 w-3.5 shrink-0`}),n(`login.primaryMethods.loadFailed`)]}):N(r,{instanceId:e.id,host:`dashboard`,config:t})}function Tf(e){return e===`totp`||e===`passkey`}function Ef(e){if(!e.startsWith(`#`))return null;let t=new URLSearchParams(e.slice(1)),n=t.get(`challenge`);if(n!==null){if(n.length===0)return null;let e=(t.get(`factors`)??``).split(`,`).filter(Tf);return e.length===0?null:{kind:`challenge`,challengeToken:n,factors:e}}let r=t.get(`error`);return r===`sso-not-linked`||r===`sso-state`?{kind:`error`,code:r,provider:t.get(`provider`)}:null}function Df(e,t){switch(e){case`sso-not-linked`:return B.t(`helpers.ssoReturn.notLinked`,{provider:t??B.t(`helpers.ssoReturn.signInFallback`)});case`sso-state`:return B.t(`helpers.ssoReturn.state`)}}var Of={expired:`helpers.ssoReturn.link.expired`,provider:`helpers.ssoReturn.link.provider`,session:`helpers.ssoReturn.link.session`,conflict:`helpers.ssoReturn.link.conflict`,state:`helpers.ssoReturn.link.state`};function kf(e){let t=new URLSearchParams(e),n=t.get(`linked`);if(n!==null&&n.length>0)return{kind:`linked`,provider:n};let r=t.get(`linkError`);return r===null?null:{kind:`error`,message:B.t(Of[r]??`helpers.ssoReturn.link.failed`)}}var Af=`camstack:sso-return`,jf=`camstack:sso-ack`,Mf=`/sso-complete`,Nf=1500,Pf=520,Ff=680;function If(e){if(!e.startsWith(`#`))return null;let t=new URLSearchParams(e.slice(1)),n=t.get(`return`);t.delete(`return`);let r=t.toString();return n===`login`?r.length>0?{target:n,fragment:r}:null:n===`profile`&&r.length>0?{target:n,query:r}:null}function Lf(e){return e.target===`login`?`/login#${e.fragment}`:`/system/my-access?${e.query}`}function Rf(e){let t=new URL(e,`http://placeholder.invalid`);return t.searchParams.set(`popup`,`1`),/^[a-z][a-z0-9+.-]*:/i.test(e)?t.toString():`${t.pathname}${t.search}${t.hash}`}function zf(e=window){let t=Math.max(0,Math.round(e.screenX+(e.outerWidth-Pf)/2)),n=Math.max(0,Math.round(e.screenY+(e.outerHeight-Ff)/2));return[`popup=yes`,`width=${Pf}`,`height=${Ff}`,`left=${t}`,`top=${n}`,`toolbar=no`,`menubar=no`,`location=no`,`status=no`,`resizable=yes`,`scrollbars=yes`].join(`,`)}function Bf(e){try{return window.open(e??`about:blank`,`camstack-sso`,zf())??null}catch{return null}}function Vf(e){if(typeof e!=`object`||!e)return!1;let t=e;return t.target===`login`?typeof t.fragment==`string`:t.target===`profile`?typeof t.query==`string`:!1}function Hf(e){if(typeof e!=`object`||!e)return!1;let t=e;return t.type===`camstack:sso-return`&&Vf(t.completion)}function Uf(e,t,n){return t===null||e.source!==t||e.origin!==n?null:Hf(e.data)?e.data.completion:null}var Wf=`camstack-sso`,Gf=`camstack:sso-done`;function Kf(e,t){return e.target===`profile`?{target:`profile`,query:e.query}:t?{target:`login`}:null}function qf(e){if(typeof e!=`object`||!e)return null;let t=e;if(t.type!==`camstack:sso-done`)return null;let n=Object.keys(t).sort().join(`,`);return t.target===`login`&&n===`target,type`?{target:`login`}:t.target===`profile`&&typeof t.query==`string`&&n===`query,target,type`?{target:`profile`,query:t.query}:null}function Jf(e){return typeof e==`object`&&!!e&&e.type===`camstack:sso-done-ack`}function Yf(e){try{let t=e.location.origin;return typeof t==`string`?t:null}catch{return null}}function Xf(){if(typeof BroadcastChannel>`u`)return null;try{let e=new BroadcastChannel(Wf);return{post:t=>e.postMessage(t),subscribe:t=>{let n=e=>t(e.data);return e.addEventListener(`message`,n),()=>e.removeEventListener(`message`,n)},close:()=>e.close()}}catch{return null}}var Zf=500;function Qf(e,t,n=window,r={}){let i=n.location.origin,a=r.channel===void 0?Xf():null,o=r.channel===void 0?a:r.channel,s=r.setInterval??((e,t)=>window.setInterval(e,t)),c=r.clearInterval??(e=>window.clearInterval(e)),l=!1,u=!1,d=r=>{let a=Uf(r,e,i);a===null||l||(l=!0,n.removeEventListener(`message`,d),e.postMessage({type:jf},i),t.onReturn(a))};n.addEventListener(`message`,d);let f=o?.subscribe(e=>{let n=qf(e);n===null||l||(l=!0,o.post({type:`camstack:sso-done-ack`}),t.onDone?.(n))})??null,p=s(()=>{u||!e.closed||(u=!0,c(p),t.onClosed?.())},Zf);return()=>{n.removeEventListener(`message`,d),f?.(),a?.close(),c(p)}}function $f(e,t,n){if(t===null||e.source!==t||e.origin!==n)return!1;let r=e.data;return typeof r==`object`&&!!r&&r.type===`camstack:sso-ack`}function ep(e,t){return new Promise(n=>{let r=!1,i=t(()=>{r||(r=!0,i(),n(!0))});e.setTimeout(()=>{r||(r=!0,i(),n(!1))},Nf)})}function tp(e,t,n){let r=ep(n,e=>{let r=r=>{$f(r,t,n.origin)&&e()};return n.addEventListener(`message`,r),()=>n.removeEventListener(`message`,r)});try{let r={type:Af,completion:e};t.postMessage(r,n.origin)}catch{}return r}function np(e,t,n){let r=ep(n,e=>t.subscribe(t=>{Jf(t)&&e()}));return t.post({type:Gf,...e}),r}async function rp(e,t){let n=t.opener!==null&&!t.opener.closed?t.opener:null;if(n!==null&&Yf(n)===t.origin&&await tp(e,n,t)){t.close();return}let r=e.target===`login`?new URLSearchParams(e.fragment).get(`token`):null,i=r!==null&&r.length>0,a=Kf(e,i);if(a!==null&&t.channel!==null&&(r!==null&&i&&await t.persistSession(r),await np(a,t.channel,t))){t.close();return}if(n!==null&&e.target===`profile`){let n=kf(`?${e.query}`);if(n?.kind===`error`){t.showResult({kind:`link-error`,message:n.message});return}t.close();return}t.continueAt(Lf(e))}function ip(e,t){return(t.length>0&&e.startsWith(t)?e.slice(t.length):e).replace(/\/+$/,``)===Mf}var ap=`Done — you can close this window.`,op=500,sp=`camstack_admin_token`;async function cp(e,t=``){try{let n=zs(new URLSearchParams(t));n!==null&&n.token===e?Ls(n):localStorage.setItem(sp,e)}catch{}await fetch(z(`/api/auth/session`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({token:e})}).catch(()=>{})}function lp(){try{let e=localStorage.getItem(sp);return e!==null&&e.length>0?e:null}catch{return null}}function up(e){let t=If(window.location.hash);window.history.replaceState(null,``,window.location.pathname);let n=n=>e.render(N(dp,{completion:t,result:n}));if(n(null),t===null)return;let r=Xf();rp(t,{opener:window.opener,origin:window.location.origin,channel:r,addEventListener:(e,t)=>window.addEventListener(e,t),removeEventListener:(e,t)=>window.removeEventListener(e,t),close:()=>{window.close(),window.setTimeout(()=>n({kind:`done`,message:ap}),op)},continueAt:e=>window.location.replace(z(e)),persistSession:e=>cp(e,t.target===`login`?t.fragment:``),showResult:n,setTimeout:(e,t)=>window.setTimeout(e,t)})}function dp({completion:e,result:t}){let{t:n}=V();return N(`div`,{className:`flex min-h-screen items-center justify-center bg-background p-4`,children:N(`div`,{className:`flex flex-col items-center gap-3 text-sm text-foreground-subtle`,children:e===null?N(`a`,{className:`text-primary underline`,href:z(`/login`),children:n(`ssoComplete.nothingToFinishHereGo`,`Nothing to finish here — go to sign-in`)}):t===null?y(`span`,{className:`flex items-center gap-3`,children:[N(`span`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-primary/30 border-t-primary`}),n(`ssoComplete.finishingSignIn`,`Finishing sign-in…`)]}):y(E,{children:[N(`span`,{"data-testid":`sso-complete-result`,className:t.kind===`link-error`?`text-danger`:`text-foreground`,children:t.message}),N(`button`,{type:`button`,className:`rounded-md border border-border px-3 py-1.5 text-foreground hover:bg-surface-hover`,onClick:()=>window.close(),children:n(`ssoComplete.closeThisWindow`,`Close this window`)})]})})})}a();function fp(e){if(typeof e!=`object`||!e)return!1;let t=Reflect.get(e,`message`),n=Reflect.get(e,`data`);return(typeof n==`object`&&n?Reflect.get(n,`code`):void 0)===`FORBIDDEN`||typeof t==`string`&&/sign in again first/i.test(t)}function pp(){let e=new URLSearchParams(window.location.search);return Xs({codeChallenge:e.get(`code_challenge`),codeChallengeMethod:e.get(`code_challenge_method`),state:e.get(`state`),purpose:e.get(`purpose`)})}function mp(){let{t:e}=V(),{login:t,verifyTotp:n,finalizePasskeyLogin:r,user:i}=Tc(),{i18n:a}=V(),o=Ft(),c=Ii(),l=J(),u=new URLSearchParams(window.location.search).get(`next`);s(()=>{ac(u)},[u]);let d=new URLSearchParams(window.location.search).get(`redirect`);s(()=>{mc(d)},[d]);let p=pp();s(()=>{$s(p)},[p?.codeChallenge,p?.state,p?.purpose]);let m=l.state?.from??Dd()??`/devices`,[h,g]=f(``),[_,v]=f(``),[b,x]=f(!1),[S,C]=f(``),[w,T]=f(!1),[D,O]=f(`credentials`),[k,A]=f(``),[M,P]=f([]),[F,I]=f(``),[ee,L]=f(void 0),[ne,re]=f(`sso-not-linked`),ae=(tr.auth.listLoginMethods.useQuery().data??[]).filter(e=>e.kind!==`device-certificate`),oe=tr.auth.getServerName.useQuery().data,R=ae.filter(e=>e.stage===`primary`),se=bf(ae);s(()=>{let e=Ef(window.location.hash);if(e!==null){if(window.history.replaceState({},``,window.location.pathname+window.location.search),e.kind===`challenge`){A(e.challengeToken),P(e.factors),I(``),O(`second-factor`);return}re(e.code),L(e.provider)}},[]);let ce=ee==null?null:ae.find(e=>e.id===ee&&`label`in e)?.label??null,le=S||(ee===void 0?``:Df(ne,ce)),{passkeyMethods:de,widgetMethods:fe}=se,pe=j(!1),me=async()=>{if(pe.current)return;pe.current=!0;let e=nc(d);if(e?.kind===`app-callback`){await _e(e.url);return}else if(e){window.location.assign(z(e.path));return}let t=sc(u);t?window.location.assign(z(t)):c(m,{replace:!0})},[he,ge]=f(null),_e=async e=>{ge({callbackBase:e,mintedUrl:null,failed:!1});try{let t=pp()??ec();if(t===null)throw Error(`The app sent no PKCE challenge and state`);let{code:n}=await Q().trpcClient.auth.createHandoffCode.mutate({purpose:t.purpose,codeChallenge:t.codeChallenge,state:t.state}),r=tc(e,n,t.state);ge({callbackBase:e,mintedUrl:r,failed:!1}),window.location.assign(r)}catch(t){if(fp(t)){pe.current=!1,ge(null),C(`Sign in again to confirm it is you.`);return}ge({callbackBase:e,mintedUrl:null,failed:!0})}},ve=i!==null,[ye,be]=f(!1);s(()=>{!ve||!d&&!u||ye||(be(!0),me())},[ve,d,u,ye]);let xe=async e=>{e.preventDefault(),C(``),L(void 0),T(!0);try{let e=await t(h,_);if(e.kind===`second-factor`){A(e.challengeToken),P(e.factors),O(`second-factor`);return}_===`changeme`?c(`/change-password`,{replace:!0}):await me()}catch(e){C(e instanceof Error?e.message:`Login failed`)}finally{T(!1)}},Se=async e=>{e.preventDefault(),C(``),T(!0);try{await n(k,F.trim()),await me()}catch(e){C(e instanceof Error?e.message:`TOTP verification failed`),I(``)}finally{T(!1)}},Ce=async(e,t)=>{try{await r(e,t),await me()}catch(e){C(e instanceof Error?e.message:`Passkey sign-in failed`)}},we=j(null);s(()=>()=>we.current?.(),[]);let Te=async e=>{if(e.target!==`login`)return;let t=zs(new URLSearchParams(e.fragment));if(t!==null){try{await r(t.token,t),await me()}catch(e){C(e instanceof Error?e.message:`Sign-in failed`)}return}let n=Ef(`#${e.fragment}`);if(n!==null){if(n.kind===`challenge`){De({challengeToken:n.challengeToken,factors:n.factors});return}re(n.code),L(n.provider)}},Ee=e=>{if(qs(d)?.kind===`app-callback`)return!1;let t=Bf(z(Rf(e.startUrl)));return t===null?!1:(C(``),L(void 0),we.current?.(),we.current=Qf(t,{onReturn:e=>{we.current?.(),we.current=null,Te(e)},onDone:e=>{if(we.current?.(),we.current=null,e.target!==`login`)return;let t=lp()===null?null:Is();t!==null&&Te({target:`login`,fragment:new URLSearchParams({token:t.token,...t.refreshToken===void 0?{}:{refreshToken:t.refreshToken},...t.expiresAt===void 0?{}:{expiresAt:String(t.expiresAt)}}).toString()})}}),!0)},De=e=>{let t=e.factors.filter(e=>e===`totp`||e===`passkey`);A(e.challengeToken),P(t),I(``),C(``),O(`second-factor`)};return he===null?N(`div`,{className:`flex min-h-screen items-center justify-center bg-background p-4`,children:y(`div`,{className:`w-full max-w-sm`,children:[N(`div`,{className:`flex justify-center mb-8`,children:N(`img`,{src:o?.resolvedMode===`light`?z(`/brand/logo-horizontal-light.svg`):z(`/brand/logo-horizontal-dark.svg`),alt:e(`login.camstackAdmin`,`CamStack Admin`),className:`h-12`})}),oe!==void 0&&!oe.isDefault&&N(`p`,{"data-testid":`login-server-name`,className:`-mt-4 mb-6 text-center text-sm text-foreground-muted`,children:N(Go,{i18nKey:`login.signInTo`,values:{name:oe.name},components:{b:N(`span`,{className:`font-semibold text-foreground`})}})}),D===`credentials`?y(`form`,{onSubmit:xe,className:`space-y-4 rounded-xl border border-border bg-surface p-6 shadow-xl shadow-black/10`,children:[le&&N(`div`,{"data-testid":`login-error`,className:`rounded-md bg-danger/10 border border-danger/20 px-3 py-2 text-xs text-danger`,children:le}),y(`div`,{className:`space-y-1.5`,children:[N(`label`,{className:`text-xs font-medium text-foreground-subtle`,children:e(`login.username`,`Username`)}),N(`input`,{"data-testid":`login-username`,type:`text`,placeholder:e(`login.username`,`Username`),value:h,onChange:e=>g(e.target.value),className:`w-full rounded-lg border border-border bg-background px-3 py-2.5 text-sm text-foreground placeholder:text-foreground-disabled focus:border-primary focus:ring-1 focus:ring-primary/30 outline-none transition-all`,autoFocus:!0})]}),y(`div`,{className:`space-y-1.5`,children:[N(`label`,{className:`text-xs font-medium text-foreground-subtle`,children:e(`login.password`,`Password`)}),y(`div`,{className:`relative`,children:[N(`input`,{"data-testid":`login-password`,type:b?`text`:`password`,placeholder:e(`login.password`,`Password`),value:_,onChange:e=>v(e.target.value),className:`w-full rounded-lg border border-border bg-background px-3 py-2.5 pr-10 text-sm text-foreground placeholder:text-foreground-disabled focus:border-primary focus:ring-1 focus:ring-primary/30 outline-none transition-all`}),N(`button`,{type:`button`,onClick:()=>x(!b),className:`absolute right-2.5 top-1/2 -translate-y-1/2 text-foreground-subtle hover:text-foreground transition-colors`,tabIndex:-1,children:N(b?ie:te,{className:`h-4 w-4`})})]})]}),N(`button`,{"data-testid":`login-submit`,type:`submit`,disabled:w||!h||!_,className:`w-full rounded-lg bg-primary px-4 py-2.5 text-sm font-semibold text-primary-foreground shadow-md shadow-primary/20 hover:shadow-lg hover:shadow-primary/30 disabled:opacity-50 disabled:shadow-none transition-all`,children:w?y(`span`,{className:`flex items-center justify-center gap-2`,children:[N(`span`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-primary-foreground/30 border-t-primary-foreground`}),e(`login.loggingIn`,`Logging in...`)]}):e(`login.logIn`,`Log in`)})]}):y(`div`,{className:`space-y-4 rounded-xl border border-border bg-surface p-6 shadow-xl shadow-black/10`,children:[y(`div`,{className:`flex items-center gap-2 pb-1 border-b border-border`,children:[N(ue,{className:`h-4 w-4 text-primary`}),N(`div`,{className:`text-sm font-medium text-foreground`,children:e(`login.twoFactorAuthentication`,`Two-factor authentication`)})]}),N(`p`,{className:`text-xs text-foreground-subtle`,children:h?N(E,{children:N(Go,{i18nKey:`login.finishSigningInAs`,values:{username:h},components:{mono:N(`span`,{className:`font-mono text-foreground`})}})}):e(`login.finishSigningInAs`,`Finish signing in.`)}),S&&N(`div`,{className:`rounded-md bg-danger/10 border border-danger/20 px-3 py-2 text-xs text-danger`,children:S}),M.includes(`passkey`)&&de.map(e=>N(_f,{method:e,challengeToken:k,onComplete:Ce},e.id)),M.includes(`passkey`)&&fe.map(e=>N(wf,{method:e,config:{challengeToken:k,onComplete:Ce}},e.id)),xf(M,se)&&N(`div`,{className:`rounded-md border border-border bg-background px-3 py-2 text-xs text-foreground-subtle`,children:e(`login.passkeyVerificationIsnTAvailable`,`Passkey verification isn't available on this address. Open the hub via its domain URL to complete sign-in.`)}),M.includes(`passkey`)&&M.includes(`totp`)&&y(`div`,{className:`flex items-center gap-3`,children:[N(`div`,{className:`h-px flex-1 bg-border`}),N(`span`,{className:`text-[10px] uppercase tracking-wider text-foreground-subtle`,children:`or`}),N(`div`,{className:`h-px flex-1 bg-border`})]}),M.includes(`totp`)&&y(`form`,{onSubmit:Se,className:`space-y-4`,children:[y(`div`,{className:`space-y-1.5`,children:[N(`label`,{className:`text-xs font-medium text-foreground-subtle`,children:e(`login.authenticationCode`,`Authentication code`)}),N(`input`,{"data-testid":`login-totp`,type:`text`,inputMode:`numeric`,autoComplete:`one-time-code`,placeholder:`123456`,value:F,onChange:e=>I(e.target.value.replace(/\D/g,``).slice(0,6)),className:`w-full rounded-lg border border-border bg-background px-3 py-3 text-center text-2xl font-mono tracking-widest text-foreground placeholder:text-foreground-disabled focus:border-primary focus:ring-1 focus:ring-primary/30 outline-none transition-all`,autoFocus:!0})]}),N(`button`,{"data-testid":`login-totp-submit`,type:`submit`,disabled:w||F.length!==6,className:`w-full rounded-lg bg-primary px-4 py-2.5 text-sm font-semibold text-primary-foreground shadow-md shadow-primary/20 hover:shadow-lg hover:shadow-primary/30 disabled:opacity-50 disabled:shadow-none transition-all`,children:w?y(`span`,{className:`flex items-center justify-center gap-2`,children:[N(`span`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-primary-foreground/30 border-t-primary-foreground`}),e(`login.verifying`,`Verifying...`)]}):e(`login.verifyAndSignIn`,`Verify and sign in`)})]}),y(`button`,{type:`button`,onClick:()=>{O(`credentials`),A(``),P([]),I(``),C(``)},className:`w-full flex items-center justify-center gap-1.5 text-xs text-foreground-subtle hover:text-foreground transition-colors`,children:[N(Ue,{className:`h-3 w-3`}),e(`login.backToUsernamePassword`,`Back to username + password`)]})]}),D===`credentials`&&N(Cf,{methods:R,widgetConfig:{onComplete:Ce,onSecondFactor:De,locale:a.language},onRedirect:Ee}),N(`p`,{className:`mt-6 text-center text-[10px] text-foreground-subtle/50`,children:e(`login.version`,{version:`1.2.431`})})]})}):N(`div`,{className:`flex min-h-screen items-center justify-center bg-background p-4`,children:y(`div`,{className:`w-full max-w-sm rounded-xl border border-border bg-surface p-6 text-center space-y-4`,children:[N(`h1`,{className:`text-sm font-semibold text-foreground`,children:e(`login.returningToTheApp`,`Returning to the app…`)}),he.failed?y(E,{children:[N(`p`,{className:`text-xs text-danger`,children:e(`login.couldNotPrepareTheSign`,`Could not prepare the sign-in handoff. You are logged in — retry below.`)}),N(`button`,{onClick:()=>void _e(he.callbackBase),className:`inline-flex rounded-lg bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90`,children:e(`common.retry`,`Retry`)})]}):he.mintedUrl===null?N(`p`,{className:`text-xs text-foreground-subtle`,children:e(`login.preparingAOneTimeSign`,`Preparing a one-time sign-in code…`)}):y(E,{children:[N(`p`,{className:`text-xs text-foreground-subtle`,children:e(`login.ifTheAppDoesNot`,`If the app does not open automatically, tap below (the code expires in 60s).`)}),N(`a`,{href:he.mintedUrl,className:`inline-flex rounded-lg bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90`,children:e(`login.openCamstack`,`Open CamStack`)})]})]})})}a();function hp(){let{pathname:e,search:t,hash:n}=J();return N(Y,{to:`${$d(e)}${t}${n}`,replace:!0})}function gp(){return N(Y,{to:Dd()??`/devices`,replace:!0})}var _p=m(()=>i(()=>import(`./Devices-D_SKAo6X.js`).then(e=>({default:e.DevicesPage})),__vite__mapDeps([0,1,2,3,4,5,6,7,8]),import.meta.url)),vp=m(()=>i(()=>import(`./Integrations-CUPpCCtl.js`).then(e=>({default:e.IntegrationsPage})),__vite__mapDeps([9,1,2,3,4,10,5,6,11,12,13,7,8]),import.meta.url)),yp=m(()=>i(()=>import(`./IntegrationDetail-L73oZLMf.js`).then(e=>({default:e.IntegrationDetailPage})),__vite__mapDeps([14,1,2,3,4,15,5,16,11,12,13,7,17]),import.meta.url)),bp=m(()=>i(()=>import(`./ClusterStepModel-DzduELev.js`).then(e=>e.r).then(e=>({default:e.PipelinePage})),__vite__mapDeps([18,1,2,3,4,10,5,19,20,21,22,16,23,8]),import.meta.url)),xp=m(()=>i(()=>import(`./DeviceDetail-CwmpXUmk.js`).then(e=>({default:e.DeviceDetailPage})),__vite__mapDeps([24,1,2,3,4,10,5,25,26,27,28,19,29,22,30,31,32,33,18,20,21,16,23,8,34,13]),import.meta.url)),Sp=m(()=>i(()=>import(`./Showroom-DNgHGmg0.js`).then(e=>({default:e.ShowroomPage})),__vite__mapDeps([35,1,2,3,4]),import.meta.url)),Cp=m(()=>i(()=>import(`./EmbedPlayerPage-DI4ac8Wo.js`).then(e=>({default:e.EmbedPlayerPage})),__vite__mapDeps([36,1,2,3,4,5]),import.meta.url)),wp=m(()=>i(()=>import(`./Library-Dm0AivX3.js`).then(e=>({default:e.LibraryPage})),__vite__mapDeps([37,1,2,3,4,10,5,38,19,21,39,40,31,41,34,13]),import.meta.url)),Tp=m(()=>i(()=>import(`./Recordings-r5KE18a6.js`).then(e=>({default:e.RecordingsPage})),__vite__mapDeps([42,1,2,3,4,10,5,43,40,44,25,45,46,47,34,13]),import.meta.url)),Ep=m(()=>i(()=>import(`./Viewer-vqCH_LqM.js`).then(e=>({default:e.ViewerPage})),__vite__mapDeps([48,2,3,4,49,5,13,1]),import.meta.url)),Dp=m(()=>i(()=>import(`./Build-BPgFXVbn.js`).then(e=>({default:e.BuildPage})),__vite__mapDeps([50,1,2,3,4,10,5,28,51,19,40,30,52,53]),import.meta.url)),Op=m(()=>i(()=>import(`./CompositionEditorPage-D73l3mqU.js`).then(e=>({default:e.CompositionEditorPage})),__vite__mapDeps([54,1,2,3,4,28,5,6,30,10]),import.meta.url)),kp=m(()=>i(()=>import(`./Locations-B2TjRBpQ.js`).then(e=>({default:e.LocationsPage})),__vite__mapDeps([55,1,2,3,4,10,5,28,56,39,40,32,33]),import.meta.url)),Ap=m(()=>i(()=>import(`./Addons-COSbX7Q1.js`).then(e=>({default:e.AddonsPage})),__vite__mapDeps([57,1,2,3,4,19,58,5,6,16,59,13]),import.meta.url)),jp=m(()=>i(()=>import(`./AiProfiles-DGok1qYw.js`).then(e=>({default:e.AiProfilesPage})),__vite__mapDeps([60,1,2,3,4,10,5,61,62,6,40,13]),import.meta.url)),Mp=m(()=>i(()=>import(`./MyAccess-DJvaTHrq.js`).then(e=>({default:e.MyAccessPage})),__vite__mapDeps([63,1,2,3,4,10,5,19,64,65,66,6,67,58,13]),import.meta.url)),Np=m(()=>i(()=>import(`./Logs-CeX1xx9_.js`).then(e=>({default:e.LogsPage})),__vite__mapDeps([68,1,2,3,4,69,22,5,6,40,70,71,16,72,17,13,73]),import.meta.url)),Pp=m(()=>i(()=>import(`./Identity-C25gG2Mh.js`).then(e=>({default:e.IdentityPage})),__vite__mapDeps([74,1,2,3,4,10,5,75,19,76,64,65,66,6,40,70,71,16,72,17,13,67,58,73]),import.meta.url)),Fp=m(()=>i(()=>import(`./Network-D0uak4Dc.js`).then(e=>({default:e.NetworkPage})),__vite__mapDeps([77,1,2,3,4,10,5,28,19,78,6,40,70,71,16,72,17,13,73]),import.meta.url)),Ip=m(()=>i(()=>import(`./Integrations-Cgm8qaox.js`).then(e=>({default:e.IntegrationsPage})),__vite__mapDeps([79,1,2,3,4,10,5,19,78,65,80,40,70,71,6,16,72,17,13,12]),import.meta.url)),Lp=m(()=>i(()=>import(`./Data-Wqos-WHl.js`).then(e=>({default:e.DataPage})),__vite__mapDeps([81,1,2,3,4,10,5,82,29,46,6,40,44,25,45,47,34,13]),import.meta.url)),Rp=m(()=>i(()=>import(`./System-CcDzJj6C.js`).then(e=>({default:e.SystemPage})),__vite__mapDeps([83,1,2,3,4,10,5,64,58,6,40,16,72,17,13]),import.meta.url)),zp=m(()=>i(()=>import(`./Cluster-BUBVih9A.js`).then(e=>({default:e.ClusterPage})),__vite__mapDeps([84,1,2,3,4,10,5,46,85,66,6,16,23,59,47]),import.meta.url)),Bp=m(()=>i(()=>import(`./Terminal-DpGR-56V.js`).then(e=>({default:e.TerminalPage})),__vite__mapDeps([86,1,2,3,4,19,5,6,16,87]),import.meta.url)),Vp=m(()=>i(()=>import(`./Notifications-DP0iwqUM.js`).then(e=>({default:e.NotificationsPage})),__vite__mapDeps([88,1,2,3,4,10,5,27,19,76,89,62,6,40,52,53,41,13,33]),import.meta.url)),Hp=m(()=>i(()=>import(`./Calendars-DLuwgZXW.js`).then(e=>({default:e.CalendarsPage})),__vite__mapDeps([90,1,2,3,4,10,5,19,6]),import.meta.url)),Up=new D({defaultOptions:{queries:{gcTime:0,staleTime:0,retry:!1,refetchOnWindowFocus:!1}}});Rt(Up);function Wp({field:e,value:t,onChange:n,disabled:r}){return N(Pl,{field:e,value:t,onChange:n,disabled:r})}var Gp={"model-selector":Wp};function Kp({children:e}){let{t}=V(),{user:n,logout:r}=Tc(),[i,a]=f(0),o=j(n?.username??null);s(()=>{let e=n?.username??null;e!==o.current&&(o.current=e,As(),a(e=>e+1))},[n]);let c=d(()=>Q(),[i]),{bootReady:l,bootError:u}=tu(c,n??null,r);return ru(p(()=>{Q().reconnect(),a(e=>e+1),Up.invalidateQueries()},[])),N(Ql,{children:N(Fe,{system:c,children:N(tr.Provider,{client:c.trpcClient,queryClient:Up,children:y(Wt,{children:[N(Yn,{children:l?e:N(qp,{})}),l&&N(Bl,{}),u!==null&&l&&y(`div`,{className:`fixed bottom-[calc(env(safe-area-inset-bottom)+1rem)] right-[calc(env(safe-area-inset-right)+1rem)] z-50 max-w-sm rounded-lg border border-warning/30 bg-warning/10 px-3 py-2 text-xs text-warning shadow-lg`,children:[t(`app.bootProbeFailed`,`Boot probe failed:`),` `,u,`. Retrying in background.`]})]})})})})}function qp(){let{t:e}=V();return N(`div`,{className:`flex min-h-screen items-center justify-center bg-background`,children:y(`div`,{className:`flex items-center gap-3 text-sm text-foreground-subtle`,children:[N(`span`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-primary/30 border-t-primary`}),e(`app.connecting`,`Connecting…`)]})})}function Jp(){return N(`div`,{className:`flex min-h-screen items-center justify-center bg-background`,children:N(`span`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-primary/30 border-t-primary`})})}function Yp(){return N(Qt,{defaultMode:`dark`,children:N(M,{client:Up,children:N(wc,{children:N(Kp,{children:N(un,{children:N(zl,{children:y(Et,{renderers:Gp,children:[N(eo,{basename:We(),children:N(Ol,{children:N(w,{fallback:N(Jp,{}),children:y(da,{children:[N(X,{path:`/login`,element:N(mp,{})}),N(X,{path:`/admin/*`,element:N(hp,{})}),N(X,{path:`/admin`,element:N(hp,{})}),N(X,{path:`/change-password`,element:N($,{children:N(nf,{})})}),N(X,{path:`/showroom`,element:N(Sp,{})}),N(X,{path:`/embed/player`,element:N(Cp,{})}),y(X,{element:N($,{children:N(hr,{children:N(Pd,{})})}),children:[N(X,{index:!0,element:N(gp,{})}),N(X,{path:`/access-denied`,element:N(ef,{})}),N(X,{path:`/dashboard`,element:N(Y,{to:`/devices`,replace:!0})}),N(X,{path:`/devices`,element:N(_p,{})}),N(X,{path:`/cameras`,element:N(Y,{to:`/devices`,replace:!0})}),N(X,{path:`/integrations`,element:N(vp,{})}),N(X,{path:`/integrations/:integrationId`,element:N(yp,{})}),N(X,{path:`/system/pipeline`,element:N(bp,{})}),N(X,{path:`/pipeline`,element:N(Y,{to:`/system/pipeline`,replace:!0})}),N(X,{path:`/live`,element:N(Ep,{})}),N(X,{path:`/devices/:deviceId`,element:N(xp,{})}),N(X,{path:`/system/logs`,element:N($,{requireAdmin:!0,children:N(Np,{})})}),N(X,{path:`/system/addons`,element:N($,{requireAdmin:!0,children:N(Ap,{})})}),N(X,{path:`/system/ai`,element:N($,{requireAdmin:!0,children:N(jp,{})})}),N(X,{path:`/system/settings`,element:N($,{requireAdmin:!0,children:N(Rp,{})})}),N(X,{path:`/system/nodes`,element:N($,{requireAdmin:!0,children:N(zp,{})})}),N(X,{path:`/system/notifications`,element:N($,{requireAdmin:!0,children:N(Vp,{})})}),N(X,{path:`/system/calendars`,element:N($,{requireAdmin:!0,children:N(Hp,{})})}),N(X,{path:`/system/identity`,element:N($,{requireAdmin:!0,children:N(Pp,{})})}),N(X,{path:`/system/my-access`,element:N(Mp,{})}),N(X,{path:`/system/network`,element:N($,{requireAdmin:!0,children:N(Fp,{})})}),N(X,{path:`/system/integrations`,element:N($,{requireAdmin:!0,children:N(Ip,{})})}),N(X,{path:`/system/data`,element:N($,{requireAdmin:!0,children:N(Lp,{})})}),N(X,{path:`/system`,element:N(Y,{to:Ul,replace:!0})}),N(X,{path:`/system/terminal`,element:N($,{requireAdmin:!0,children:N(Bp,{})})}),Wl.map(e=>N(X,{path:e.path,element:N(Kl,{tab:e.tab})},e.path)),N(X,{path:`/system/users`,element:N(Y,{to:`/system/identity?tab=users`,replace:!0})}),N(X,{path:`/system/api-keys`,element:N(Y,{to:`/system/identity?tab=api-keys`,replace:!0})}),N(X,{path:`/system/authentication`,element:N(Y,{to:Xd(`authentication`),replace:!0})}),N(X,{path:`/system/linked-sessions`,element:N(Y,{to:`/system/identity?tab=linked-sessions`,replace:!0})}),N(X,{path:`/system/remote-access`,element:N(Y,{to:Xd(`remoteAccess`),replace:!0})}),N(X,{path:`/system/turn`,element:N(Y,{to:Xd(`turn`),replace:!0})}),N(X,{path:`/system/storage`,element:N(Y,{to:`/system/data?tab=storage`,replace:!0})}),N(X,{path:`/system/backup`,element:N(Y,{to:`/system/data?tab=backup`,replace:!0})}),N(X,{path:`/library`,element:N($,{requireAdmin:!0,children:N(wp,{})})}),N(X,{path:`/retrain`,element:N(Y,{to:`/addon/training`,replace:!0})}),N(X,{path:`/recordings`,element:N($,{requireAdmin:!0,children:N(Tp,{})})}),N(X,{path:`/build`,element:N($,{requireAdmin:!0,children:N(Dp,{})})}),N(X,{path:Rd,element:N($,{requireAdmin:!0,children:N(Op,{})})}),N(X,{path:zd,element:N($,{requireAdmin:!0,children:N(Op,{})})}),N(X,{path:`/locations`,element:N($,{requireAdmin:!0,children:N(kp,{})})}),N(X,{path:`/automation`,element:N(Fl,{to:`/build`})}),N(X,{path:`/addon/:pagePath`,element:N($,{requireAdmin:!0,children:N(uu,{})})}),N(X,{path:`*`,element:N(Y,{to:`/devices`,replace:!0})})]})]})})})}),N(Yl,{})]})})})})})})})}a(),window.__camstackUiLibrary=Ln,window.__camstackSdk=kn,window.__camstackTypes=wt;var Xp=ir(document.getElementById(`root`));ip(window.location.pathname,We())?up(Xp):Xp.render(N(S,{children:N(Yp,{})}));export{Bi as $,Qc as A,fs as B,Pu as C,Rl as D,Ul as E,Bc as F,ts as G,ss as H,zc as I,Jo as J,Z as K,Rc as L,Uc as M,Wc as N,El as O,Kc as P,Ii as Q,Dc as R,ed as S,Zl as T,rs as U,is as V,ns as W,no as X,Go as Y,Y as Z,Id as _,hf as a,Hd as b,qd as c,Jd as d,uo as et,Xd as f,Ld as g,Bd as h,kf as i,Xc as j,pl as k,Wd as l,Qd as m,Qf as n,Yd as o,Zd as p,es as q,Rf as r,Kd as s,Bf as t,Gd as u,Fd as v,ku as w,Vd as x,Ud as y,Tc as z};
|
|
4
|
+
Please change the parent <Route path="${e}"> to <Route path="${e===`/`?`*`:`${e}/*`}">.`)}let u=J(),d;if(t){let e=typeof t==`string`?Dr(t):t;H(c===`/`||e.pathname?.startsWith(c),`When overriding the location using \`<Routes location>\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${c}" but pathname "${e.pathname}" was given in the \`location\` prop.`),d=e}else d=u;let f=d.pathname||`/`,p=f;if(c!==`/`){let e=c.replace(/^\//,``).split(`/`);p=`/`+f.replace(/^\//,``).split(`/`).slice(e.length).join(`/`)}let m=n&&n.state.matches.length?n.state.matches.map(e=>Object.assign(e,{route:n.manifest[e.route.id]||e.route})):Ar(e,{pathname:p});U(l||m!=null,`No routes matched location "${d.pathname}${d.search}${d.hash}" `),U(m==null||m[m.length-1].route.element!==void 0||m[m.length-1].route.Component!==void 0||m[m.length-1].route.lazy!==void 0,`Matched leaf route at location "${d.pathname}${d.search}${d.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`);let h=Xi(m&&m.map(e=>Object.assign({},e,{params:Object.assign({},o,e.params),pathname:G([c,r.encodeLocation?r.encodeLocation(e.pathname.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathname]),pathnameBase:e.pathnameBase===`/`?c:G([c,r.encodeLocation?r.encodeLocation(e.pathnameBase.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathnameBase])})),i,n);return t&&h?k(wi.Provider,{value:{location:{pathname:`/`,search:``,hash:``,state:null,key:`default`,mask:void 0,...d},navigationType:`POP`}},h):h}function Wi(){let e=aa(),t=li(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,r=`rgba(200,200,200, 0.5)`,i={padding:`0.5rem`,backgroundColor:r},a={padding:`2px 4px`,backgroundColor:r},o=null;return console.error(`Error handled by React Router default ErrorBoundary:`,e),o=k(b,null,k(`p`,null,`💿 Hey developer 👋`),k(`p`,null,`You can provide a way better UX than this when your app throws errors by providing your own `,k(`code`,{style:a},`ErrorBoundary`),` or`,` `,k(`code`,{style:a},`errorElement`),` prop on your route.`)),k(b,null,k(`h2`,null,`Unexpected Application Error!`),k(`h3`,{style:{fontStyle:`italic`}},t),n?k(`pre`,{style:i},n):null,o)}var Gi=k(Wi,null),Ki=class extends _{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||t.revalidation!==`idle`&&e.revalidation===`idle`?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:e.error===void 0?t.error:e.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){this.props.onError?this.props.onError(e,t):console.error(`React Router caught the following error during render`,e)}render(){let e=this.state.error;if(this.context&&typeof e==`object`&&e&&`digest`in e&&typeof e.digest==`string`){let t=Ai(e.digest);t&&(e=t)}let t=e===void 0?this.props.children:k(q.Provider,{value:this.props.routeContext},k(Ti.Provider,{value:e,children:this.props.component}));return this.context?k(Ji,{error:e},t):t}};Ki.contextType=yi;var qi=new WeakMap;function Ji({children:e,error:t}){let{basename:n}=v(K);if(typeof t==`object`&&t&&`digest`in t&&typeof t.digest==`string`){let e=ki(t.digest);if(e){let r=qi.get(t);if(r)throw r;let i=fi(e.location,n),a=i.absoluteURL||i.to;if(gi(a))throw Error(`Invalid redirect location`);if(di&&!qi.get(t))if(i.isExternal||e.reloadDocument)window.location.href=a;else{let n=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(i.to,{replace:e.replace}));throw qi.set(t,n),n}return k(`meta`,{httpEquiv:`refresh`,content:`0;url=${a}`})}}return e}function Yi({routeContext:e,match:t,children:n}){let r=v(_i);return r&&r.static&&r.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=t.route.id),k(q.Provider,{value:e},n)}function Xi(e,t=[],n){let r=n?.state;if(e==null){if(!r)return null;if(r.errors)e=r.matches;else if(t.length===0&&!r.initialized&&r.matches.length>0)e=r.matches;else return null}let i=e,a=r?.errors;if(a!=null){let e=i.findIndex(e=>e.route.id&&a?.[e.route.id]!==void 0);H(e>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(a).join(`,`)}`),i=i.slice(0,Math.min(i.length,e+1))}let o=!1,s=-1;if(n&&r){o=r.renderFallback;for(let e=0;e<i.length;e++){let t=i[e];if((t.route.HydrateFallback||t.route.hydrateFallbackElement)&&(s=e),t.route.id){let{loaderData:e,errors:a}=r,c=t.route.loader&&!e.hasOwnProperty(t.route.id)&&(!a||a[t.route.id]===void 0);if(t.route.lazy||c){n.isStatic&&(o=!0),i=s>=0?i.slice(0,s+1):[i[0]];break}}}}let c=n?.onError,l=r&&c?(e,t)=>{c(e,{location:r.location,params:r.matches?.[0]?.params??{},pattern:ui(r.matches),errorInfo:t})}:void 0;return i.reduceRight((e,n,c)=>{let u,d=!1,f=null,p=null;r&&(u=a&&n.route.id?a[n.route.id]:void 0,f=n.route.errorElement||Gi,o&&(s<0&&c===0?(ca(`route-fallback`,!1,"No `HydrateFallback` element provided to render during initial hydration"),d=!0,p=null):s===c&&(d=!0,p=n.route.hydrateFallbackElement||null)));let m=t.concat(i.slice(0,c+1)),h=()=>{let t;return t=u?f:d?p:n.route.Component?k(n.route.Component,null):n.route.element?n.route.element:e,k(Yi,{match:n,routeContext:{outlet:e,matches:m,isDataRoute:r!=null},children:t})};return r&&(n.route.ErrorBoundary||n.route.errorElement||c===0)?k(Ki,{location:r.location,revalidation:r.revalidation,component:f,error:u,children:h(),routeContext:{outlet:null,matches:m,isDataRoute:!0},onError:l}):h()},null)}function Zi(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Qi(e){let t=v(_i);return H(t,Zi(e)),t}function $i(e){let t=v(vi);return H(t,Zi(e)),t}function ea(e){let t=v(q);return H(t,Zi(e)),t}function ta(e){let t=ea(e),n=t.matches[t.matches.length-1];return H(n.route.id,`${e} can only be used on routes that contain a unique "id"`),n.route.id}function na(){return ta(`useRouteId`)}function ra(){let e=$i(`useNavigation`);return d(()=>{let{matches:t,historyAction:n,...r}=e.navigation;return r},[e.navigation])}function ia(){let{matches:e,loaderData:t}=$i(`useMatches`);return d(()=>e.map(e=>Mr(e,t)),[e,t])}function aa(){let e=v(Ti),t=$i(`useRouteError`),n=ta(`useRouteError`);return e===void 0?t.errors?.[n]:e}function oa(){let{router:e}=Qi(`useNavigate`),t=ta(`useNavigate`),n=j(!1);return Fi(()=>{n.current=!0}),p(async(r,i={})=>{U(n.current,Pi),n.current&&(typeof r==`number`?await e.navigate(r):await e.navigate(r,{fromRouteId:t,...i}))},[e,t])}var sa={};function ca(e,t,n){!t&&!sa[e]&&(sa[e]=!0,U(!1,n))}h(la);function la({routes:e,manifest:t,future:n,state:r,isStatic:i,onError:a}){return Ui(e,void 0,{manifest:t,state:r,isStatic:i,onError:a,future:n})}function Y({to:e,replace:t,state:n,relative:r}){H(Mi(),`<Navigate> may be used only in the context of a <Router> component.`);let{static:i}=v(K);U(!i,`<Navigate> must not be used on the initial render in a <StaticRouter>. This is a no-op, but you should modify your code so the <Navigate> is only ever rendered in response to some user interaction or state change.`);let{matches:a}=v(q),{pathname:o}=J(),c=Ii(),l=ni(e,ti(a),o,r===`path`),u=JSON.stringify(l);return s(()=>{c(JSON.parse(u),{replace:t,state:n,relative:r})},[c,u,r,t,n]),null}function X(e){H(!1,`A <Route> is only ever to be used as the child of <Routes> element, never rendered directly. Please wrap your <Route> in a <Routes>.`)}function ua({basename:e=`/`,children:t=null,location:n,navigationType:r=`POP`,navigator:i,static:a=!1,useTransitions:o}){H(!Mi(),`You cannot render a <Router> inside another <Router>. You should never have more than one in your app.`);let s=e.replace(/^\/*/,`/`),c=d(()=>({basename:s,navigator:i,static:a,useTransitions:o,future:{}}),[s,i,a,o]);typeof n==`string`&&(n=Dr(n));let{pathname:l=`/`,search:u=``,hash:f=``,state:p=null,key:m=`default`,mask:h}=n,g=d(()=>{let e=W(l,s);return e==null?null:{location:{pathname:e,search:u,hash:f,state:p,key:m,mask:h},navigationType:r}},[s,l,u,f,p,m,r,h]);return U(g!=null,`<Router basename="${s}"> is not able to match the URL "${l}${u}${f}" because it does not start with the basename, so the <Router> won't render anything.`),g==null?null:k(K.Provider,{value:c},k(wi.Provider,{children:t,value:g}))}function da({children:e,location:t}){return Hi(fa(e),t)}function fa(e,t=[]){let n=[];return l.forEach(e,(e,r)=>{if(!O(e))return;let i=[...t,r];if(e.type===b){n.push.apply(n,fa(e.props.children,i));return}H(e.type===X,`[${typeof e.type==`string`?e.type:e.type.name}] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`),H(!e.props.index||!e.props.children,`An index route cannot have child routes.`);let a={id:e.props.id||i.join(`-`),caseSensitive:e.props.caseSensitive,element:e.props.element,Component:e.props.Component,index:e.props.index,path:e.props.path,middleware:e.props.middleware,loader:e.props.loader,action:e.props.action,hydrateFallbackElement:e.props.hydrateFallbackElement,HydrateFallback:e.props.HydrateFallback,errorElement:e.props.errorElement,ErrorBoundary:e.props.ErrorBoundary,hasErrorBoundary:e.props.hasErrorBoundary===!0||e.props.ErrorBoundary!=null||e.props.errorElement!=null,shouldRevalidate:e.props.shouldRevalidate,handle:e.props.handle,lazy:e.props.lazy};e.props.children&&(a.children=fa(e.props.children,i)),n.push(a)}),n}var pa=`get`,ma=`application/x-www-form-urlencoded`;function ha(e){return typeof HTMLElement<`u`&&e instanceof HTMLElement}function ga(e){return ha(e)&&e.tagName.toLowerCase()===`button`}function _a(e){return ha(e)&&e.tagName.toLowerCase()===`form`}function va(e){return ha(e)&&e.tagName.toLowerCase()===`input`}function ya(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function ba(e,t){return e.button===0&&(!t||t===`_self`)&&!ya(e)}function xa(e=``){return new URLSearchParams(typeof e==`string`||Array.isArray(e)||e instanceof URLSearchParams?e:Object.keys(e).reduce((t,n)=>{let r=e[n];return t.concat(Array.isArray(r)?r.map(e=>[n,e]):[[n,r]])},[]))}function Sa(e,t){let n=xa(e);return t&&t.forEach((e,r)=>{n.has(r)||t.getAll(r).forEach(e=>{n.append(r,e)})}),n}var Ca=null;function wa(){if(Ca===null)try{new FormData(document.createElement(`form`),0),Ca=!1}catch{Ca=!0}return Ca}var Ta=new Set([`application/x-www-form-urlencoded`,`multipart/form-data`,`text/plain`]);function Ea(e){return e!=null&&!Ta.has(e)?(U(!1,`"${e}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${ma}"`),null):e}function Da(e,t){let n,r,i,a,o;if(_a(e)){let o=e.getAttribute(`action`);r=o?W(o,t):null,n=e.getAttribute(`method`)||pa,i=Ea(e.getAttribute(`enctype`))||ma,a=new FormData(e)}else if(ga(e)||va(e)&&(e.type===`submit`||e.type===`image`)){let o=e.form;if(o==null)throw Error(`Cannot submit a <button> or <input type="submit"> without a <form>`);let s=e.getAttribute(`formaction`)||o.getAttribute(`action`);if(r=s?W(s,t):null,n=e.getAttribute(`formmethod`)||o.getAttribute(`method`)||pa,i=Ea(e.getAttribute(`formenctype`))||Ea(o.getAttribute(`enctype`))||ma,a=new FormData(o,e),!wa()){let{name:t,type:n,value:r}=e;if(n===`image`){let e=t?`${t}.`:``;a.append(`${e}x`,`0`),a.append(`${e}y`,`0`)}else t&&a.append(t,r)}}else if(ha(e))throw Error(`Cannot submit element that is not <form>, <button>, or <input type="submit|image">`);else n=pa,r=null,i=ma,o=e;return a&&i===`text/plain`&&(o=a,a=void 0),{action:r,method:n.toLowerCase(),encType:i,formData:a,body:o}}Object.getOwnPropertyNames(Object.prototype).sort().join(`\0`);var Oa={"&":`\\u0026`,">":`\\u003e`,"<":`\\u003c`,"\u2028":`\\u2028`,"\u2029":`\\u2029`},ka=/[&><\u2028\u2029]/g;function Aa(e){return e.replace(ka,e=>Oa[e])}function ja(e,t){if(e===!1||e==null)throw Error(t)}function Ma(e,t,n,r){let i=typeof e==`string`?new URL(e,typeof window>`u`?`server://singlefetch/`:window.location.origin):e;return n?i.pathname.endsWith(`/`)?i.pathname=`${i.pathname}_.${r}`:i.pathname=`${i.pathname}.${r}`:i.pathname===`/`?i.pathname=`_root.${r}`:t&&W(i.pathname,t)===`/`?i.pathname=`${ii(t)}/_root.${r}`:i.pathname=`${ii(i.pathname)}.${r}`,i}async function Na(e,t){if(e.id in t)return t[e.id];try{let n=await i(()=>import(e.module),[],import.meta.url);return t[e.id]=n,n}catch(t){return console.error(`Error loading route module \`${e.module}\`, reloading page...`),console.error(t),window.__reactRouterContext&&window.__reactRouterContext.isSpaMode,window.location.reload(),new Promise(()=>{})}}function Pa(e){return e!=null&&typeof e.page==`string`}function Fa(e){return e==null?!1:e.href==null?e.rel===`preload`&&typeof e.imageSrcSet==`string`&&typeof e.imageSizes==`string`:typeof e.rel==`string`&&typeof e.href==`string`}async function Ia(e,t,n){return Va((await Promise.all(e.map(async e=>{let r=t.routes[e.route.id];if(r){let e=await Na(r,n);return e.links?e.links():[]}return[]}))).flat(1).filter(Fa).filter(e=>e.rel===`stylesheet`||e.rel===`preload`).map(e=>e.rel===`stylesheet`?{...e,rel:`prefetch`,as:`style`}:{...e,rel:`prefetch`}))}function La(e,t,n,r,i,a){let o=(e,t)=>n[t]?e.route.id!==n[t].route.id:!0,s=(e,t)=>n[t].pathname!==e.pathname||n[t].route.path?.endsWith(`*`)&&n[t].params[`*`]!==e.params[`*`];return a===`assets`?t.filter((e,t)=>o(e,t)||s(e,t)):a===`data`?t.filter((t,a)=>{let c=r.routes[t.route.id];if(!c||!c.hasLoader)return!1;if(o(t,a)||s(t,a))return!0;if(t.route.shouldRevalidate){let r=t.route.shouldRevalidate({currentUrl:new URL(i.pathname+i.search+i.hash,window.origin),currentParams:n[0]?.params||{},nextUrl:new URL(e,window.origin),nextParams:t.params,defaultShouldRevalidate:!0});if(typeof r==`boolean`)return r}return!0}):[]}function Ra(e,t,{includeHydrateFallback:n}={}){return za(e.map(e=>{let r=t.routes[e.route.id];if(!r)return[];let i=[r.module];return r.clientActionModule&&(i=i.concat(r.clientActionModule)),r.clientLoaderModule&&(i=i.concat(r.clientLoaderModule)),n&&r.hydrateFallbackModule&&(i=i.concat(r.hydrateFallbackModule)),r.imports&&(i=i.concat(r.imports)),i}).flat(1))}function za(e){return[...new Set(e)]}function Ba(e){let t={},n=Object.keys(e).sort();for(let r of n)t[r]=e[r];return t}function Va(e,t){let n=new Set,r=new Set(t);return e.reduce((e,i)=>{if(t&&!Pa(i)&&i.as===`script`&&i.href&&r.has(i.href))return e;let a=JSON.stringify(Ba(i));return n.has(a)||(n.add(a),e.push({key:a,link:i})),e},[])}function Ha(){let e=v(_i);return ja(e,`You must render this element inside a <DataRouterContext.Provider> element`),e}function Ua(){let e=v(vi);return ja(e,`You must render this element inside a <DataRouterStateContext.Provider> element`),e}var Wa=g(void 0);Wa.displayName=`FrameworkContext`;function Ga(){let e=v(Wa);return ja(e,`You must render this element inside a <HydratedRouter> element`),e}function Ka(e,t){let n=v(Wa),[r,i]=f(!1),[a,o]=f(!1),{onFocus:c,onBlur:l,onMouseEnter:u,onMouseLeave:d,onTouchStart:p}=t,m=j(null);s(()=>{if(e===`render`&&o(!0),e===`viewport`){let e=new IntersectionObserver(e=>{e.forEach(e=>{o(e.isIntersecting)})},{threshold:.5});return m.current&&e.observe(m.current),()=>{e.disconnect()}}},[e]),s(()=>{if(r){let e=setTimeout(()=>{o(!0)},100);return()=>{clearTimeout(e)}}},[r]);let h=()=>{i(!0)},g=()=>{i(!1),o(!1)};return n?e===`intent`?[a,m,{onFocus:qa(c,h),onBlur:qa(l,g),onMouseEnter:qa(u,h),onMouseLeave:qa(d,g),onTouchStart:qa(p,h)}]:[a,m,{}]:[!1,m,{}]}function qa(e,t){return n=>{e&&e(n),n.defaultPrevented||t(n)}}function Ja({page:e,...t}){let n=bi(),{nonce:r}=Ga(),{router:i}=Ha(),a=d(()=>Ar(i.routes,e,i.basename),[i.routes,e,i.basename]);return a?(t.nonce==null&&r&&(t={...t,nonce:r}),k(n?Xa:Za,{page:e,matches:a,...t})):null}function Ya(e){let{manifest:t,routeModules:n}=Ga(),[r,i]=f([]);return s(()=>{let r=!1;return Ia(e,t,n).then(e=>{r||i(e)}),()=>{r=!0}},[e,t,n]),r}function Xa({page:e,matches:t,...n}){let r=J(),{future:i}=Ga(),{basename:a}=Ha();return k(b,null,d(()=>{if(e===r.pathname+r.search+r.hash)return[];let n=Ma(e,a,i.v8_trailingSlashAwareDataRequests,`rsc`),o=!1,s=[];for(let e of t)typeof e.route.shouldRevalidate==`function`?o=!0:s.push(e.route.id);return o&&s.length>0&&n.searchParams.set(`_routes`,s.join(`,`)),[n.pathname+n.search]},[a,i.v8_trailingSlashAwareDataRequests,e,r,t]).map(e=>k(`link`,{key:e,rel:`prefetch`,as:`fetch`,href:e,...n})))}function Za({page:e,matches:t,...n}){let r=J(),{future:i,manifest:a,routeModules:o}=Ga(),{basename:s}=Ha(),{loaderData:c,matches:l}=Ua(),u=d(()=>La(e,t,l,a,r,`data`),[e,t,l,a,r]),f=d(()=>La(e,t,l,a,r,`assets`),[e,t,l,a,r]),p=d(()=>{if(e===r.pathname+r.search+r.hash)return[];let n=new Set,l=!1;if(t.forEach(e=>{let t=a.routes[e.route.id];!t||!t.hasLoader||(!u.some(t=>t.route.id===e.route.id)&&e.route.id in c&&o[e.route.id]?.shouldRevalidate||t.hasClientLoader?l=!0:n.add(e.route.id))}),n.size===0)return[];let d=Ma(e,s,i.v8_trailingSlashAwareDataRequests,`data`);return l&&n.size>0&&d.searchParams.set(`_routes`,t.filter(e=>n.has(e.route.id)).map(e=>e.route.id).join(`,`)),[d.pathname+d.search]},[s,i.v8_trailingSlashAwareDataRequests,c,r,a,u,t,e,o]),m=d(()=>Ra(f,a),[f,a]),h=Ya(f);return k(b,null,p.map(e=>k(`link`,{key:e,rel:`prefetch`,as:`fetch`,href:e,...n})),m.map(e=>k(`link`,{key:e,rel:`modulepreload`,href:e,...n})),h.map(({key:e,link:t})=>k(`link`,{key:e,nonce:n.nonce,...t,crossOrigin:t.crossOrigin??n.crossOrigin})))}function Qa(...e){return t=>{e.forEach(e=>{typeof e==`function`?e(t):e!=null&&(e.current=t)})}}var $a=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;try{$a&&(window.__reactRouterVersion=`7.18.0`)}catch{}function eo({basename:e,children:t,useTransitions:n,window:r}){let i=j();i.current??=Sr({window:r,v5Compat:!0});let a=i.current,[o,s]=f({action:a.action,location:a.location}),c=p(e=>{n===!1?s(e):u(()=>s(e))},[n]);return x(()=>a.listen(c),[a,c]),k(ua,{basename:e,children:t,location:o.location,navigationType:o.action,navigator:a,useTransitions:n})}function to({basename:e,children:t,history:n,useTransitions:r}){let[i,a]=f({action:n.action,location:n.location}),o=p(e=>{r===!1?a(e):u(()=>a(e))},[r]);return x(()=>n.listen(o),[n,o]),k(ua,{basename:e,children:t,location:i.location,navigationType:i.action,navigator:n,useTransitions:r})}to.displayName=`unstable_HistoryRouter`;var no=o(function({onClick:e,discover:t=`render`,prefetch:n=`none`,relative:r,reloadDocument:i,replace:a,mask:o,state:s,target:c,to:l,preventScrollReset:u,viewTransition:d,defaultShouldRevalidate:f,...p},m){let{basename:h,navigator:g,useTransitions:_}=v(K),y=typeof l==`string`&&_r.test(l),x=fi(l,h);l=x.to;let S=ji(l,{relative:r}),C=J(),w=null;if(o){let e=ni(o,[],C.mask?C.mask.pathname:`/`,!0);h!==`/`&&(e.pathname=e.pathname===`/`?h:G([h,e.pathname])),w=g.createHref(e)}let[T,E,D]=Ka(n,p),O=lo(l,{replace:a,mask:o,state:s,target:c,preventScrollReset:u,relative:r,viewTransition:d,defaultShouldRevalidate:f,useTransitions:_});function A(t){e&&e(t),t.defaultPrevented||O(t)}let j=!(x.isExternal||i),M=k(`a`,{...p,...D,href:(j?w:void 0)||x.absoluteURL||S,onClick:j?A:e,ref:Qa(m,E),target:c,"data-discover":!y&&t===`render`?`true`:void 0});return T&&!y?k(b,null,M,k(Ja,{page:S})):M});no.displayName=`Link`;var ro=o(function({"aria-current":e=`page`,caseSensitive:t=!1,className:n=``,end:r=!1,style:i,to:a,viewTransition:o,children:s,...c},l){let u=Vi(a,{relative:c.relative}),d=J(),f=v(vi),{navigator:p,basename:m}=v(K),h=f!=null&&xo(u)&&o===!0,g=p.encodeLocation?p.encodeLocation(u).pathname:u.pathname,_=d.pathname,y=f&&f.navigation&&f.navigation.location?f.navigation.location.pathname:null;t||(_=_.toLowerCase(),y=y?y.toLowerCase():null,g=g.toLowerCase()),y&&m&&(y=W(y,m)||y);let b=g!==`/`&&g.endsWith(`/`)?g.length-1:g.length,x=_===g||!r&&_.startsWith(g)&&_.charAt(b)===`/`,S=y!=null&&(y===g||!r&&y.startsWith(g)&&y.charAt(g.length)===`/`),C={isActive:x,isPending:S,isTransitioning:h},w=x?e:void 0,T;T=typeof n==`function`?n(C):[n,x?`active`:null,S?`pending`:null,h?`transitioning`:null].filter(Boolean).join(` `);let E=typeof i==`function`?i(C):i;return k(no,{...c,"aria-current":w,className:T,ref:l,style:E,to:a,viewTransition:o},typeof s==`function`?s(C):s)});ro.displayName=`NavLink`;var io=o(({discover:e=`render`,fetcherKey:t,navigate:n,reloadDocument:r,replace:i,state:a,method:o=pa,action:s,onSubmit:c,relative:l,preventScrollReset:d,viewTransition:f,defaultShouldRevalidate:p,...m},h)=>{let{useTransitions:g}=v(K),_=mo(),y=ho(s,{relative:l}),b=o.toLowerCase()===`get`?`get`:`post`,x=typeof s==`string`&&_r.test(s);return k(`form`,{ref:h,method:b,action:y,onSubmit:r?c:e=>{if(c&&c(e),e.defaultPrevented)return;e.preventDefault();let r=e.nativeEvent.submitter,s=r?.getAttribute(`formmethod`)||o,m=()=>_(r||e.currentTarget,{fetcherKey:t,method:s,navigate:n,replace:i,state:a,relative:l,preventScrollReset:d,viewTransition:f,defaultShouldRevalidate:p});g&&n!==!1?u(()=>m()):m()},...m,"data-discover":!x&&e===`render`?`true`:void 0})});io.displayName=`Form`;function ao({getKey:e,storageKey:t,...n}){let r=v(Wa),{basename:i}=v(K),a=J(),o=ia();yo({getKey:e,storageKey:t});let s=d(()=>{if(!r||!e)return null;let t=vo(a,o,i,e);return t===a.key?null:t},[]);if(!r||r.isSpaMode)return null;let c=((e,t)=>{if(!window.history.state||!window.history.state.key){let e=Math.random().toString(32).slice(2);window.history.replaceState({key:e},``)}try{let n=JSON.parse(sessionStorage.getItem(e)||`{}`)[t||window.history.state.key];typeof n==`number`&&window.scrollTo(0,n)}catch(t){console.error(t),sessionStorage.removeItem(e)}}).toString();return n.nonce==null&&r?.nonce&&(n.nonce=r.nonce),k(`script`,{...n,suppressHydrationWarning:!0,dangerouslySetInnerHTML:{__html:`(${c})(${Aa(JSON.stringify(t||go))}, ${Aa(JSON.stringify(s))})`}})}ao.displayName=`ScrollRestoration`;function oo(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function so(e){let t=v(_i);return H(t,oo(e)),t}function co(e){let t=v(vi);return H(t,oo(e)),t}function lo(e,{target:t,replace:n,mask:r,state:i,preventScrollReset:a,relative:o,viewTransition:s,defaultShouldRevalidate:c,useTransitions:l}={}){let d=Ii(),f=J(),m=Vi(e,{relative:o});return p(p=>{if(ba(p,t)){p.preventDefault();let t=n===void 0?Er(f)===Er(m):n,h=()=>d(e,{replace:t,mask:r,state:i,preventScrollReset:a,relative:o,viewTransition:s,defaultShouldRevalidate:c});l?u(()=>h()):h()}},[f,d,m,n,r,i,t,e,a,o,s,c,l])}function uo(e){U(typeof URLSearchParams<`u`,"You cannot use the `useSearchParams` hook in a browser that does not support the URLSearchParams API. If you need to support Internet Explorer 11, we recommend you load a polyfill such as https://github.com/ungap/url-search-params.");let t=j(xa(e)),n=j(!1),r=J(),i=d(()=>Sa(r.search,n.current?null:t.current),[r.search]),a=Ii();return[i,p((e,t)=>{let r=xa(typeof e==`function`?e(new URLSearchParams(i)):e);n.current=!0,a(`?`+r,t)},[a,i])]}var fo=0,po=()=>`__${String(++fo)}__`;function mo(){let{router:e}=so(`useSubmit`),{basename:t}=v(K),n=na(),r=e.fetch,i=e.navigate;return p(async(e,a={})=>{let{action:o,method:s,encType:c,formData:l,body:u}=Da(e,t);a.navigate===!1?await r(a.fetcherKey||po(),n,a.action||o,{defaultShouldRevalidate:a.defaultShouldRevalidate,preventScrollReset:a.preventScrollReset,formData:l,body:u,formMethod:a.method||s,formEncType:a.encType||c,flushSync:a.flushSync}):await i(a.action||o,{defaultShouldRevalidate:a.defaultShouldRevalidate,preventScrollReset:a.preventScrollReset,formData:l,body:u,formMethod:a.method||s,formEncType:a.encType||c,replace:a.replace,state:a.state,fromRouteId:n,flushSync:a.flushSync,viewTransition:a.viewTransition})},[r,i,t,n])}function ho(e,{relative:t}={}){let{basename:n}=v(K),r=v(q);H(r,`useFormAction must be used inside a RouteContext`);let[i]=r.matches.slice(-1),a={...Vi(e||`.`,{relative:t})},o=J();if(e==null){a.search=o.search;let e=new URLSearchParams(a.search),t=e.getAll(`index`);if(t.some(e=>e===``)){e.delete(`index`),t.filter(e=>e).forEach(t=>e.append(`index`,t));let n=e.toString();a.search=n?`?${n}`:``}}return(!e||e===`.`)&&i.route.index&&(a.search=a.search?a.search.replace(/^\?/,`?index&`):`?index`),n!==`/`&&(a.pathname=a.pathname===`/`?n:G([n,a.pathname])),Er(a)}var go=`react-router-scroll-positions`,_o={};function vo(e,t,n,r){let i=null;return r&&(i=r(n===`/`?e:{...e,pathname:W(e.pathname,n)||e.pathname},t)),i??=e.key,i}function yo({getKey:e,storageKey:t}={}){let{router:n}=so(`useScrollRestoration`),{restoreScrollPosition:r,preventScrollReset:i}=co(`useScrollRestoration`),{basename:a}=v(K),o=J(),c=ia(),l=ra();s(()=>(window.history.scrollRestoration=`manual`,()=>{window.history.scrollRestoration=`auto`}),[]),bo(p(()=>{if(l.state===`idle`){let t=vo(o,c,a,e);_o[t]=window.scrollY}try{sessionStorage.setItem(t||go,JSON.stringify(_o))}catch(e){U(!1,`Failed to save scroll positions in sessionStorage, <ScrollRestoration /> will not work properly (${e}).`)}window.history.scrollRestoration=`auto`},[l.state,e,a,o,c,t])),typeof document<`u`&&(x(()=>{try{let e=sessionStorage.getItem(t||go);e&&(_o=JSON.parse(e))}catch{}},[t]),x(()=>{let t=n?.enableScrollRestoration(_o,()=>window.scrollY,e?(t,n)=>vo(t,n,a,e):void 0);return()=>t&&t()},[n,a,e]),x(()=>{if(r!==!1){if(typeof r==`number`){window.scrollTo(0,r);return}try{if(o.hash){let e=document.getElementById(decodeURIComponent(o.hash.slice(1)));if(e){e.scrollIntoView();return}}}catch{U(!1,`"${o.hash.slice(1)}" is not a decodable element ID. The view will not scroll to it.`)}i!==!0&&window.scrollTo(0,0)}},[o,r,i]))}function bo(e,t){let{capture:n}=t||{};s(()=>{let t=n==null?void 0:{capture:n};return window.addEventListener(`pagehide`,e,t),()=>{window.removeEventListener(`pagehide`,e,t)}},[e,n])}function xo(e,{relative:t}={}){let n=v(xi);H(n!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:r}=so(`useViewTransitionState`),i=Vi(e,{relative:t});if(!n.isTransitioning)return!1;let a=W(n.currentLocation.pathname,r)||n.currentLocation.pathname,o=W(n.nextLocation.pathname,r)||n.nextLocation.pathname;return qr(i.pathname,o)!=null||qr(i.pathname,a)!=null}var So=e(t(((e,t)=>{t.exports={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0}}))()),Co=/\s([^'"/\s><]+?)[\s/>]|([^\s=]+)=\s?(".*?"|'.*?')/g;function wo(e){var t={type:`tag`,name:``,voidElement:!1,attrs:{},children:[]},n=e.match(/<\/?([^\s]+?)[/\s>]/);if(n&&(t.name=n[1],(So.default[n[1]]||e.charAt(e.length-2)===`/`)&&(t.voidElement=!0),t.name.startsWith(`!--`))){var r=e.indexOf(`-->`);return{type:`comment`,comment:r===-1?``:e.slice(4,r)}}for(var i=new RegExp(Co),a=null;(a=i.exec(e))!==null;)if(a[0].trim())if(a[1]){var o=a[1].trim(),s=[o,``];o.indexOf(`=`)>-1&&(s=o.split(`=`)),t.attrs[s[0]]=s[1],i.lastIndex--}else a[2]&&(t.attrs[a[2]]=a[3].trim().substring(1,a[3].length-1));return t}var To=/<[a-zA-Z0-9\-\!\/](?:"[^"]*"|'[^']*'|[^'">])*>/g,Eo=/^\s*$/,Do=Object.create(null);function Oo(e,t){switch(t.type){case`text`:return e+t.content;case`tag`:return e+=`<`+t.name+(t.attrs?function(e){var t=[];for(var n in e)t.push(n+`="`+e[n]+`"`);return t.length?` `+t.join(` `):``}(t.attrs):``)+(t.voidElement?`/>`:`>`),t.voidElement?e:e+t.children.reduce(Oo,``)+`</`+t.name+`>`;case`comment`:return e+`<!--`+t.comment+`-->`}}var ko={parse:function(e,t){t||={},t.components||=Do;var n,r=[],i=[],a=-1,o=!1;if(e.indexOf(`<`)!==0){var s=e.indexOf(`<`);r.push({type:`text`,content:s===-1?e:e.substring(0,s)})}return e.replace(To,function(s,c){if(o){if(s!==`</`+n.name+`>`)return;o=!1}var l,u=s.charAt(1)!==`/`,d=s.startsWith(`<!--`),f=c+s.length,p=e.charAt(f);if(d){var m=wo(s);return a<0?(r.push(m),r):((l=i[a]).children.push(m),r)}if(u&&(a++,(n=wo(s)).type===`tag`&&t.components[n.name]&&(n.type=`component`,o=!0),n.voidElement||o||!p||p===`<`||n.children.push({type:`text`,content:e.slice(f,e.indexOf(`<`,f))}),a===0&&r.push(n),(l=i[a-1])&&l.children.push(n),i[a]=n),(!u||n.voidElement)&&(a>-1&&(n.voidElement||n.name===s.slice(2,-1))&&(a--,n=a===-1?r:i[a]),!o&&p!==`<`&&p)){l=a===-1?r:i[a].children;var h=e.indexOf(`<`,f),g=e.slice(f,h===-1?void 0:h);Eo.test(g)&&(g=` `),(h>-1&&a+l.length>=0||g!==` `)&&l.push({type:`text`,content:g})}}),r},stringify:function(e){return e.reduce(function(e,t){return e+Oo(``,t)},``)}};a();var Ao=(e,t)=>{if(!e)return!1;let n=e.props?.children??e.children;return t?n.length>0:!!n},jo=e=>{if(!e)return[];let t=e.props?.children??e.children;return e.props?.i18nIsDynamicList?No(t):t},Mo=e=>Array.isArray(e)&&e.every(O),No=e=>Array.isArray(e)?e:[e],Po=(e,t)=>{let n={...t};return n.props={...t.props,...e.props},n},Fo=e=>{let t={};if(!e)return t;let n=e=>{No(e).forEach(e=>{sr(e)||(Ao(e)?n(jo(e)):fr(e)&&!O(e)&&Object.assign(t,e))})};return n(e),t},Io=(e,t,n,r)=>{if(!e)return``;let i=``,a=No(e),o=t?.transSupportBasicHtmlNodes?t.transKeepBasicHtmlNodesFor??[]:[];return a.forEach((e,a)=>{if(sr(e)){i+=`${e}`;return}if(O(e)){let{props:s,type:c}=e,l=Object.keys(s).length,u=o.indexOf(c)>-1,d=s.children;if(!d&&u&&!l){i+=`<${c}/>`;return}if(!d&&(!u||l)||s.i18nIsDynamicList){i+=`<${a}></${a}>`;return}if(u&&l<=1){let e=sr(d)?d:Io(d,t,n,r);i+=`<${c}>${e}</${c}>`;return}let f=Io(d,t,n,r);i+=`<${a}>${f}</${a}>`;return}if(e===null){lr(n,`TRANS_NULL_VALUE`,`Passed in a null value as child`,{i18nKey:r});return}if(fr(e)){let{format:t,...a}=e,o=Object.keys(a);if(o.length===1){let e=t?`${o[0]}, ${t}`:o[0];i+=`{{${e}}}`;return}lr(n,`TRANS_INVALID_OBJ`,`Invalid child - Object should only have keys {{ value, format }} (format is optional).`,{i18nKey:r,child:e});return}lr(n,`TRANS_INVALID_VAR`,`Passed in a variable like {number} - pass variables for interpolation as full objects like {{number}}.`,{i18nKey:r,child:e})}),i},Lo=(e,t=[],n={})=>{if(!e)return e;let r=Object.keys(n),i=[...t,...r],a=``,o=0;for(;o<e.length;)if(e[o]===`<`){let t=!1,n=e.slice(o).match(/^<\/(\d+|[a-zA-Z][a-zA-Z0-9_-]*)>/);if(n){let e=n[1];(/^\d+$/.test(e)||i.includes(e))&&(t=!0,a+=n[0],o+=n[0].length)}if(!t){let n=e.slice(o).match(/^<(\d+|[a-zA-Z][a-zA-Z0-9_-]*)(\s+[\w-]+(?:=(?:"[^"]*"|'[^']*'|[^\s>]+))?)*\s*(\/)?>/);if(n){let e=n[1];(/^\d+$/.test(e)||i.includes(e))&&(t=!0,a+=n[0],o+=n[0].length)}}t||(a+=`<`,o+=1)}else a+=e[o],o+=1;return a},Ro=(e,t,n,r,i,a,o)=>{if(n===``)return[];let s=i.transKeepBasicHtmlNodesFor||[],u=n&&new RegExp(s.map(e=>`<${e}`).join(`|`)).test(n);if(!e&&!t&&!u&&!o)return[n];let d=t??{},f=e=>{No(e).forEach(e=>{sr(e)||(Ao(e)?f(jo(e)):fr(e)&&!O(e)&&Object.assign(d,e))})};f(e);let p=Lo(n,s,d),m=ko.parse(`<0>${p}</0>`),h={...d,...a},g=(e,t,n)=>{let r=jo(e),i=v(r,t.children,n);return Mo(r)&&i.length===0||e.props?.i18nIsDynamicList?r:i},_=(e,t,n,r,i)=>{e.dummy?(e.children=t,n.push(c(e,{key:r},i?void 0:t))):n.push(...l.map([e],e=>{if(e.type===b||e.props?.i18nIsDynamicList!==void 0){let n={key:r};return e&&e.props&&Object.keys(e.props).forEach(t=>{t===`children`||t===`i18nIsDynamicList`||(n[t]=e.props[t])}),k(e.type,n,i?null:t)}let n={key:r};return e&&e.props&&Object.keys(e.props).forEach(t=>{t===`ref`||t===`children`||(n[t]=e.props[t])}),c(e,n,i?null:t)}))},v=(e,n,a)=>{let c=No(e),l=No(n),d={};return l.reduce((e,n,l)=>{let f=n.children?.[0]?.content&&r.services.interpolator.interpolate(n.children[0].content,h,r.language);if(n.type===`tag`){let p=c[parseInt(n.name,10)];!p&&t&&(p=t[n.name]),a.length===1&&!p&&(p=a[0][n.name]),p||={};let m={...n.attrs};o&&Object.keys(m).forEach(e=>{let t=m[e];sr(t)&&(m[e]=dr(t))});let y=Object.keys(m).length===0?p:Po({props:m},p),b=O(y),x=b&&Ao(n,!0)&&!n.voidElement,S=u&&fr(y)&&y.dummy&&!b,C=fr(t)&&Object.hasOwnProperty.call(t,n.name);if(sr(y)){let t=r.services.interpolator.interpolate(y,h,r.language);e.push(t)}else if(Ao(y)||x)_(y,g(y,n,a),e,l);else if(S)_(y,v(c,n.children,a),e,l);else if(Number.isNaN(parseFloat(n.name)))if(C)_(y,g(y,n,a),e,l,n.voidElement);else if(i.transSupportBasicHtmlNodes&&s.indexOf(n.name)>-1)if(n.voidElement)e.push(k(n.name,{key:`${n.name}-${l}`}));else{let t=d[n.name]||0;d[n.name]=t+1;let r,i=0;for(let e=0;e<c.length;e+=1){let a=c[e];if(O(a)&&a.type===n.name){if(i===t){r=a;break}i+=1}}let o=v(r?No(jo(r)):c,n.children,a);e.push(k(n.name,{key:`${n.name}-${l}`},o))}else if(n.voidElement)e.push(`<${n.name} />`);else{let t=v(c,n.children,a);e.push(`<${n.name}>${t}</${n.name}>`)}else if(fr(y)&&!b){let t=n.children[0]?f:null;t&&e.push(t)}else _(y,f,e,l,n.children.length!==1||!f)}else if(n.type===`text`){let t=i.transWrapTextNodes,a=typeof i.unescape==`function`?i.unescape:or().unescape,s=o?a(r.services.interpolator.interpolate(n.content,h,r.language)):r.services.interpolator.interpolate(n.content,h,r.language);t?e.push(k(t,{key:`${n.name}-${l}`},s)):e.push(s)}return e},[])};return jo(v([{dummy:!0,children:e||[]}],m,No(e||[]))[0])},zo=(e,t,n)=>{let r=e.key||t,i=c(e,{key:r});if(!i.props||!i.props.children||n.indexOf(`${t}/>`)<0&&n.indexOf(`${t} />`)<0)return i;function a(){return k(b,null,i)}return k(a,{key:r})},Bo=(e,t)=>e.map((e,n)=>zo(e,n,t)),Vo=(e,t)=>{let n={};return Object.keys(e).forEach(r=>{Object.assign(n,{[r]:zo(e[r],r,t)})}),n},Ho=(e,t,n,r)=>e?Array.isArray(e)?Bo(e,t):fr(e)?Vo(e,t):(pr(n,`TRANS_INVALID_COMPONENTS`,`<Trans /> "components" prop expects an object or array`,{i18nKey:r}),null):null,Uo=e=>!fr(e)||Array.isArray(e)?!1:Object.keys(e).reduce((e,t)=>e&&Number.isNaN(Number.parseFloat(t)),!0);function Wo({children:e,count:t,parent:n,i18nKey:r,context:i,tOptions:a={},values:o,defaults:s,components:c,ns:l,i18n:u,t:d,shouldUnescape:f,...p}){let m=u||cr();if(!m)return pr(m,`NO_I18NEXT_INSTANCE`,`Trans: You need to pass in an i18next instance using i18nextReactModule`,{i18nKey:r}),e;let h=d||m.t.bind(m)||(e=>e),g={...or(),...m.options?.react},_=l||h.ns||m.options?.defaultNS;_=sr(_)?[_]:_||[`translation`];let{transDefaultProps:v}=g,y=v?.tOptions?{...v.tOptions,...a}:a,b=f??v?.shouldUnescape,x=v?.values?{...v.values,...o}:o,S=v?.components?{...v.components,...c}:c,C=Io(e,g,m,r),w=s||y?.defaultValue||C||g.transEmptyNodeValue||(typeof r==`function`?ar(r):r),{hashTransKey:T}=g,E=r||(T?T(C||w):C||w);o=m.options?.interpolation?.defaultVariables?x&&Object.keys(x).length>0?{...x,...m.options.interpolation.defaultVariables}:{...m.options.interpolation.defaultVariables}:x;let D=Fo(e);D&&typeof D.count==`number`&&t===void 0&&(t=D.count);let O=o||t!==void 0&&!m.options?.interpolation?.alwaysFormat||!e?y.interpolation:{interpolation:{...y.interpolation,prefix:`#$?`,suffix:`?$#`}},A={...y,context:i||y.context,count:t,...o,...O,defaultValue:w,ns:_},j=E?h(E,A):w;j===E&&w&&(j=w);let M=Ho(S,j,m,r),N=M||e,P=null;Uo(M)&&(P=M,N=e);let F=Ro(N,P,j,m,g,A,b),I=n??g.defaultTransParent;return I?k(I,p,F):F}a();function Go({children:e,count:t,parent:n,i18nKey:r,context:i,tOptions:a={},values:o,defaults:s,components:c,ns:l,i18n:u,t:d,shouldUnescape:f,...p}){let{i18n:m,defaultNS:h}=v(ur)||{},g=u||m||cr(),_=d||g?.t.bind(g);return Wo({children:e,count:t,parent:n,i18nKey:r,context:i,tOptions:a,values:o,defaults:s,components:c,ns:l||_?.ns||h||g?.options?.defaultNS,i18n:g,t:d,shouldUnescape:f,...p})}var Ko={streaming:{icon:ft,labelKey:`capabilityBadges.streaming`},detection:{icon:te,labelKey:`capabilityBadges.detection`},recording:{icon:Ge,labelKey:`capabilityBadges.recording`},audio:{icon:ge,labelKey:`capabilityBadges.audio`},snapshot:{icon:Ye,labelKey:`capabilityBadges.snapshot`},motion:{icon:qe,labelKey:`capabilityBadges.motion`},ptz:{icon:Le,labelKey:`capabilityBadges.ptz`},webrtc:{icon:we,labelKey:`capabilityBadges.webrtc`},onvif:{icon:Pe,labelKey:`capabilityBadges.onvif`},analytics:{icon:ne,labelKey:`capabilityBadges.analytics`},"battery-operated":{icon:P,labelKey:`capabilityBadges.battery`},"native-snapshot":{icon:Ye,labelKey:`capabilityBadges.nativeSnapshot`},"pan-tilt-zoom":{icon:Le,labelKey:`capabilityBadges.ptz`},"two-way-audio":{icon:ge,labelKey:`capabilityBadges.twoWayAudio`},"doorbell-button":{icon:se,labelKey:`capabilityBadges.doorbell`},rebootable:{icon:$e,labelKey:`capabilityBadges.rebootable`},"vacuum-has-map":{icon:et,labelKey:`capabilityBadges.map`},"vacuum-has-ai":{icon:he,labelKey:`capabilityBadges.aiObstacle`},"mower-has-map":{icon:et,labelKey:`capabilityBadges.map`},"mower-has-targeted-mowing":{icon:F,labelKey:`capabilityBadges.targetedMowing`}},qo=R;function Jo({capabilities:e,showLabels:t=!1}){let{t:n}=V();return N(`div`,{className:`flex items-center gap-1 flex-wrap`,children:e.map(e=>{let r=Ko[e],i=r?.icon??qo,a=r?n(r.labelKey):e;return y(`span`,{className:`inline-flex items-center gap-1 rounded-md bg-surface-hover px-1.5 py-0.5 text-[10px] text-foreground-subtle`,title:a,children:[N(i,{className:`h-3 w-3`}),t&&N(`span`,{children:a})]},e)})})}a();var Yo={amcrest:{icon:lt,color:`#3b82f6`,label:`Amcrest`},hikvision:{icon:Ke,color:`#a855f7`,label:`Hikvision`},reolink:{icon:we,color:`#06b6d4`,label:`Reolink`},homeassistant:{icon:be,color:`#22d3ee`,label:`Home Assistant`},rtsp:{icon:Me,color:`#78716c`,label:`RTSP`},onvif:{icon:Me,color:`#78716c`,label:`ONVIF`}},Xo={sm:`h-4 w-4`,md:`h-5 w-5`,lg:`h-6 w-6`},Zo={sm:`h-7 w-7`,md:`h-8 w-8`,lg:`h-10 w-10`};function Qo(e){let t=e.toLowerCase();return t.startsWith(`provider-`)?t.slice(9):t}function $o(e){return Yo[Qo(e)]??{icon:lt,color:`#78716c`,label:e}}function es({type:e,size:t=`md`,showLabel:n}){let r=$o(e),i=r.icon,[a,o]=f(!1),s=mr(e);return y(`div`,{className:`flex items-center gap-2`,children:[N(`div`,{className:`flex items-center justify-center rounded-lg ${Zo[t]}`,style:{backgroundColor:`${r.color}15`},children:a||!s?N(i,{className:Xo[t],style:{color:r.color}}):N(`img`,{src:s,alt:r.label,className:Xo[t],onError:()=>o(!0)})}),n&&N(`span`,{className:`text-xs font-medium text-foreground-subtle`,children:r.label})]})}function Z({label:e,value:t,layout:n=`inline`}){return n===`stacked`?y(`div`,{className:`min-w-0 flex flex-col gap-0.5 px-0.5`,children:[N(`span`,{className:`text-[11px] text-foreground-subtle`,children:e}),N(`div`,{className:`min-w-0 text-[11px] text-foreground`,children:t})]}):y(`div`,{className:`${pe} flex items-start gap-2 sm:gap-3`,children:[N(`span`,{className:`w-20 sm:w-28 flex-shrink-0 text-[11px] text-foreground-subtle`,children:e}),N(`div`,{className:`flex-1 min-w-0 text-[11px] text-foreground`,children:t})]})}a();function ts({deviceId:e,initialName:t,label:n=`Name`,layout:r=`inline`,onError:i,onSaved:a,onCancel:o}){let{t:c}=V(),l=A(),[u,d]=f(!1),[p,m]=f(t),[h,g]=f(!1),_=j(null);s(()=>{u||m(t)},[t,u]),s(()=>{u&&_.current?.focus()},[u]);let v=zt({onSuccess:()=>{l.invalidateQueries({queryKey:[[`deviceManager`,`getDevice`]]}),l.invalidateQueries({queryKey:[[`deviceManager`,`listAll`]]}),l.invalidateQueries({queryKey:[[`deviceManager`,`getDeviceAggregate`]]})}}),b=async()=>{let n=p.trim();if(n.length===0||n===t){d(!1),m(t),a?.();return}g(!0);try{await v.mutateAsync({deviceId:e,name:n}),d(!1),a?.()}catch(e){i?.(e instanceof Error?e.message:String(e))}finally{g(!1)}},x=()=>{m(t),d(!1),o?.()};return u?N(Z,{label:n,layout:r,value:y(`div`,{className:`flex items-center gap-1`,children:[N(`input`,{ref:_,type:`text`,value:p,onChange:e=>m(e.target.value),onKeyDown:e=>{e.key===`Enter`?b():e.key===`Escape`&&x()},disabled:h,className:`flex-1 min-w-0 px-1.5 py-0.5 text-[11px] bg-background border border-border rounded focus:outline-none focus:border-primary`}),N(`button`,{type:`button`,onClick:()=>void b(),disabled:h,className:`p-0.5 rounded hover:bg-success/10 text-success disabled:opacity-50`,"aria-label":c(`inlineEdit.save`),children:N(Ce,{className:`h-3 w-3`})}),N(`button`,{type:`button`,onClick:x,disabled:h,className:`p-0.5 rounded hover:bg-danger/10 text-danger disabled:opacity-50`,"aria-label":c(`inlineEdit.cancel`),children:N(De,{className:`h-3 w-3`})})]})}):N(Z,{label:n,layout:r,value:y(`div`,{className:`flex items-center gap-2 group`,children:[N(`span`,{className:`truncate`,children:t}),N(`button`,{type:`button`,onClick:()=>d(!0),className:`p-0.5 rounded text-foreground-subtle hover:text-foreground hover:bg-surface-hover transition-colors`,"aria-label":c(`inlineEdit.editName`),children:N(ce,{className:`h-3.5 w-3.5`})})]})})}a();function ns({deviceId:e,initialLocation:t,label:n=`Location`,layout:r=`inline`,onError:i,onSaved:a,onCancel:o}){let{t:c}=V(),l=A(),[u,p]=f(!1),[m,h]=f(t??``),[g,_]=f(!1),v=j(null),{data:b}=er(void 0,{enabled:u}),x=b??[];s(()=>{u||h(t??``)},[t,u]),s(()=>{u&&v.current?.focus()},[u]);let S=wn({onSuccess:()=>{l.invalidateQueries({queryKey:[[`deviceManager`,`getDevice`]]}),l.invalidateQueries({queryKey:[[`deviceManager`,`listAll`]]}),l.invalidateQueries({queryKey:[[`deviceManager`,`getDeviceAggregate`]]}),l.invalidateQueries({queryKey:[[`deviceManager`,`listLocations`]]})}}),C=d(()=>{let e=m.trim().toLowerCase();return e.length===0?x:x.filter(t=>t.toLowerCase()!==e&&t.toLowerCase().includes(e))},[x,m]),w=m.trim().length>0&&!x.some(e=>e.toLowerCase()===m.trim().toLowerCase()),T=async n=>{let r=(n??m).trim(),o=r.length===0?null:r;if(o===(t??null)){p(!1),a?.();return}_(!0);try{await S.mutateAsync({deviceId:e,location:o}),p(!1),a?.()}catch(e){i?.(e instanceof Error?e.message:String(e))}finally{_(!1)}},E=()=>{h(t??``),p(!1),o?.()};return u?N(Z,{label:n,layout:r,value:y(`div`,{className:`relative`,children:[y(`div`,{className:`flex items-center gap-1`,children:[N(`input`,{ref:v,type:`text`,value:m,onChange:e=>h(e.target.value),onKeyDown:e=>{e.key===`Enter`?T():e.key===`Escape`&&E()},disabled:g,placeholder:c(`shared.locationRow.roomAreaOrLeaveEmpty`,`Room / area (or leave empty to clear)`),className:`flex-1 min-w-0 px-1.5 py-0.5 text-[11px] bg-background border border-border rounded focus:outline-none focus:border-primary`}),N(`button`,{type:`button`,onClick:()=>void T(),disabled:g,className:`p-0.5 rounded hover:bg-success/10 text-success disabled:opacity-50`,"aria-label":c(`inlineEdit.save`),children:N(Ce,{className:`h-3 w-3`})}),N(`button`,{type:`button`,onClick:E,disabled:g,className:`p-0.5 rounded hover:bg-danger/10 text-danger disabled:opacity-50`,"aria-label":c(`inlineEdit.cancel`),children:N(De,{className:`h-3 w-3`})})]}),(C.length>0||w)&&y(`div`,{className:`absolute z-10 left-0 right-0 mt-0.5 max-h-40 overflow-y-auto rounded-md border border-border bg-surface shadow-md`,children:[C.map(e=>y(`button`,{type:`button`,onClick:()=>{h(e),T(e)},className:`w-full flex items-center gap-2 px-2 py-1 text-left text-[11px] hover:bg-surface-hover`,children:[N(ke,{className:`h-3 w-3 text-foreground-subtle flex-shrink-0`}),N(`span`,{className:`truncate`,children:e})]},e)),w&&y(`button`,{type:`button`,onClick:()=>void T(),className:`w-full flex items-center gap-2 px-2 py-1 text-left text-[11px] hover:bg-surface-hover border-t border-border`,children:[N(`span`,{className:`text-foreground-subtle`,children:c(`shared.locationRow.create`,`Create`)}),y(`span`,{className:`font-medium truncate`,children:[`"`,m.trim(),`"`]})]})]})]})}):N(Z,{label:n,layout:r,value:y(`div`,{className:`flex items-center gap-2 group`,children:[t?N(`span`,{className:`truncate`,children:t}):N(`span`,{className:`italic text-foreground-subtle`,children:c(`common.unset`)}),N(`button`,{type:`button`,onClick:()=>p(!0),className:`p-0.5 rounded text-foreground-subtle hover:text-foreground hover:bg-surface-hover transition-colors`,"aria-label":c(`inlineEdit.editLocation`),children:N(ce,{className:`h-3.5 w-3.5`})})]})})}a();function rs(e){return Sn({addonId:e,projection:`slim`})}function is(e){return hn({deviceId:e},{enabled:Number.isFinite(e)})}var as=3e4,os=2e3;function ss(e){let t=j(0);return t.current===0&&(t.current=Date.now()),jn({parentDeviceId:e},{enabled:Number.isFinite(e),staleTime:0,refetchOnMount:`always`,refetchInterval:e=>{let n=e.state.data;return n&&n.length>0||Date.now()-t.current>=as?!1:os}})}a();function cs({deviceId:e}){let{t}=V(),n=A(),{data:r}=is(e),{data:i}=ss(e),[a,o]=f(null),s=Kt({onSuccess:()=>{o(null),n.invalidateQueries({queryKey:[[`deviceManager`]]})},onError:e=>{o(`Could not change primary child: ${e.message}`)}});if(r==null||String(r.type??``)!==ht.Container)return null;let c=(i??[]).map(e=>({id:e.id,stableId:e.stableId,type:e.type,name:e.name,...e.sourceInfo?{sourceInfo:{id:e.sourceInfo.id}}:{}}));if(c.length<=1)return null;let l=xn(c,typeof r.linkDeviceId==`number`?r.linkDeviceId:null,typeof r.primaryChildEntityId==`string`?r.primaryChildEntityId:null),u=l===null?c[0].id:l.id;return y(E,{children:[N(Z,{label:t(`shared.primaryChildRow.primaryChild`,`Primary child`),value:N(Fn,{childrenList:c,selectedId:u,onSetPrimary:t=>s.mutate({deviceId:e,primaryChildEntityId:t}),disabled:s.isPending})}),a!==null&&N(`p`,{role:`alert`,className:`px-3 sm:px-4 py-1.5 text-[11px] text-danger`,children:a})]})}a();var ls=[`manufacturer`,`model`,`hardware`,`firmware`,`serialNumber`,`uid`,`mac`,`itemNo`];function us(e){return e.replace(/([a-z])([A-Z])/g,`$1 $2`).replace(/^./,e=>e.toUpperCase())}function ds(e){return e==null?`—`:typeof e==`string`||typeof e==`number`||typeof e==`boolean`?String(e):JSON.stringify(e)}function fs(){let{t:e}=V(),t=Hn(),n=qt(),{data:r}=hn({deviceId:t??0},{enabled:t!==null}),{data:i}=pn({deviceId:t??0},{enabled:t!==null}),a=r??n??null,[o,s]=f(`identity`);if(t===null||!a)return null;let c=String(a.stableId??``),l=String(a.name??``),u=String(a.type??``),d=String(a.addonId??``),p=a.features??[],m=new Set([`device-status`,`feature-probe`,`device-ops`]),h=(i?.entries??[]).filter(e=>e.kind===`native`&&!m.has(e.capName)).map(e=>e.capName),g=p.length>0?p:h,_=a.location??null,v=a.metadata??null,b=v!==null&&Object.keys(v).length>0;return y(`div`,{className:`rounded-lg border border-border bg-surface overflow-hidden`,children:[y(`div`,{className:`border-b border-border px-3 sm:px-4 py-2 flex items-center justify-between gap-3`,children:[N(`h2`,{className:`text-[11px] font-semibold text-foreground uppercase tracking-wider`,children:e(`overviewAdapters.deviceInfoAdapter.deviceInfo`,`Device Info`)}),b&&y(`div`,{className:`flex items-center gap-1 rounded-md bg-surface-hover p-0.5`,children:[N(ps,{active:o===`identity`,onClick:()=>s(`identity`),label:e(`overviewAdapters.deviceInfoAdapter.identity`,`Identity`)}),N(ps,{active:o===`hardware`,onClick:()=>s(`hardware`),label:e(`overviewAdapters.deviceInfoAdapter.hardware`,`Hardware`)})]})]}),(!b||o===`identity`)&&y(`div`,{className:`divide-y divide-border`,children:[N(Z,{label:`ID`,value:y(`span`,{className:`font-mono text-[11px] text-foreground`,children:[`#${t}`,y(`span`,{className:`ml-1.5 text-foreground-subtle`,children:[`(`,c,`)`]})]})}),N(ts,{deviceId:t,initialName:l}),N(ns,{deviceId:t,initialLocation:_}),N(cs,{deviceId:t}),N(Z,{label:e(`overviewAdapters.deviceInfoAdapter.type`,`Type`),value:u}),N(Z,{label:e(`overviewAdapters.deviceInfoAdapter.provider`,`Provider`),value:N(es,{type:d,size:`sm`,showLabel:!0})}),N(Z,{label:e(`overviewAdapters.deviceInfoAdapter.capabilities`,`Capabilities`),value:g.length>0?N(Jo,{capabilities:g,showLabels:!0}):N(`span`,{className:`text-[11px] text-foreground-subtle`,children:e(`overviewAdapters.deviceInfoAdapter.none`,`None`)})})]}),b&&o===`hardware`&&N(ms,{metadata:v})]})}function ps({active:e,onClick:t,label:n}){return N(`button`,{type:`button`,onClick:t,className:`px-2 py-0.5 rounded text-[10px] font-medium transition-colors ${e?`bg-surface text-foreground shadow-sm`:`text-foreground-subtle hover:text-foreground`}`,children:n})}function ms({metadata:e}){let{t}=V(),n=ls.filter(t=>t in e),r=Object.keys(e).filter(e=>!ls.includes(e)).toSorted(),i=[...n,...r];return y(`div`,{children:[N(`div`,{className:`px-3 sm:px-4 py-1.5 text-[10px] text-foreground-subtle border-b border-border bg-surface-subtle/40`,children:t(`overviewAdapters.deviceInfoAdapter.autoPopulatedByTheDriver`,`Auto-populated by the driver on every connect. Read-only.`)}),N(`div`,{className:`divide-y divide-border`,children:i.map(t=>N(Z,{label:us(t),value:N(`span`,{className:`font-mono text-[11px] text-foreground break-all`,children:ds(e[t])})},t))})]})}function hs(e){return e.hubReachable?e.authOk===!1?{kind:`auth-expired`}:{kind:`cluster-degraded`,offlineAgents:e.offlineAgents,offlineAgentIds:e.offlineAgentIds}:{kind:`hub-unreachable`}}function gs(e){switch(e.kind){case`connected`:return null;case`reconnecting`:return{severity:`warning`,message:B.t(`connection.reconnecting`),i18nKey:`connection.reconnecting`,showSpinner:!0};case`cluster-degraded`:{let t=e.offlineAgentIds??[];return t.length>0?{severity:`warning`,message:B.t(`connection.degradedNodes`,{nodes:t.join(`, `),count:t.length}),i18nKey:`connection.degradedNodes`,i18nParams:{nodes:t.join(`, `),count:t.length},showSpinner:!0}:e.offlineAgents!==null&&e.offlineAgents>0?{severity:`warning`,message:B.t(`connection.degradedCount`,{count:e.offlineAgents}),i18nKey:`connection.degradedCount`,i18nParams:{count:e.offlineAgents},showSpinner:!0}:{severity:`warning`,message:B.t(`connection.degraded`),i18nKey:`connection.degraded`,showSpinner:!0}}case`hub-unreachable`:return{severity:`danger`,message:B.t(`connection.disconnected`),i18nKey:`connection.disconnected`,showSpinner:!0};case`auth-expired`:return{severity:`danger`,message:B.t(`connection.sessionExpired`),i18nKey:`connection.sessionExpired`,showSpinner:!1,action:`sign-in`}}}var _s=4e3,vs=5e3;function ys(e){if(typeof e!=`object`||!e)return{offline:null,offlineIds:null,ok:null};let t={...e},n=typeof t.ok==`boolean`?t.ok:null,r=t.agents;if(typeof r!=`object`||!r)return{offline:null,offlineIds:null,ok:n};let i={...r},a=i.offline,o=typeof a==`number`?a:null,s=i.offlineIds;return{offline:o,offlineIds:Array.isArray(s)?s.filter(e=>typeof e==`string`):null,ok:n}}async function bs(e,t,n,r){let i=new AbortController,a=setTimeout(()=>i.abort(),n);try{return await e(t,{method:`GET`,signal:i.signal,credentials:`omit`,...r===void 0?{}:{headers:r}})}finally{clearTimeout(a)}}async function xs(e){let t=e.fetchFn??fetch,n=e.timeoutMs??_s,r=e.origin.replace(/\/+$/,``),i;try{i=await bs(t,`${r}/health`,n)}catch{return{hubReachable:!1,authOk:`unknown`,offlineAgents:null,offlineAgentIds:null}}if(!i.ok)return{hubReachable:!1,authOk:`unknown`,offlineAgents:null,offlineAgentIds:null};let a=null,o=e.getToken();if(o!==null&&o!==``)try{let e=await bs(t,`${r}/health/details`,n,{Authorization:`Bearer ${o}`});e.ok&&(a=await e.json())}catch{}let s;try{s=ys(a??await i.json())}catch{s={offline:null,offlineIds:null,ok:null}}if(s.ok===!1)return{hubReachable:!1,authOk:`unknown`,offlineAgents:null,offlineAgentIds:null};let c=e.getToken(),l=`unknown`;if(c!==null&&c!==``)try{let e=await bs(t,`${r}/trpc/auth.me`,n,{Authorization:`Bearer ${c}`});e.status===401||e.status===403?l=!1:e.ok&&(l=!0)}catch{l=`unknown`}return{hubReachable:!0,authOk:l,offlineAgents:s.offline,offlineAgentIds:s.offlineIds}}var Ss={kind:`connected`},Cs={kind:`reconnecting`};function ws(e){let t=e.probeIntervalMs??vs,n=new Set,r=Ss,i=0,a=!1,o=null;function s(e){if(r!==e){r=e;for(let e of n)e()}}function c(){a=!1,o!==null&&(clearTimeout(o),o=null)}function l(){let n=i;e.probe().then(e=>{n!==i||!a||(s(hs(e)),o=setTimeout(l,t))},()=>{n!==i||!a||(s({kind:`hub-unreachable`}),o=setTimeout(l,t))})}function u(e){if(i+=1,e===`connected`){c(),s(Ss);return}if(e===`connecting`){c(),s(Cs);return}(r.kind===`connected`||r.kind===`reconnecting`)&&s(Cs),o!==null&&(clearTimeout(o),o=null),a=!0,l()}return{getSnapshot:()=>r,subscribe:e=>(n.add(e),()=>{n.delete(e)}),onSdkConnectionState:u,dispose:()=>{i+=1,c(),n.clear()}}}var Ts=null;function Es(){return Ts===null&&(Ts=ws({probe:()=>xs({origin:_e(),getToken:()=>localStorage.getItem(`camstack_admin_token`)})})),Ts}function Ds(e){Es().onSdkConnectionState(e)}var Os=null,ks=0;function Q(){if(!Os){let e=ks;Os=En({serverUrl:_e(),token:localStorage.getItem(`camstack_admin_token`)??void 0,getLanguage:()=>B.language,onConnectionChange:t=>{e===ks&&Ds(t)}})}return Os}function As(){let e=Os;Os=null,ks+=1,e?.close()}var js=`camstack_admin_token`,Ms=`camstack_admin_refresh`,Ns=`camstack_admin_token_expires`;function Ps(e){try{let t=localStorage.getItem(e);return t!==null&&t.length>0?t:null}catch{return null}}function Fs(e,t){try{t===null?localStorage.removeItem(e):localStorage.setItem(e,t)}catch{}}function Is(){let e=Ps(js);if(e===null)return null;let t=Ps(Ms),n=Number(Ps(Ns));return{token:e,...t===null?{}:{refreshToken:t},...Number.isFinite(n)&&n>0?{expiresAt:n}:{}}}function Ls(e){Fs(js,e.token),Fs(Ms,e.refreshToken??null),Fs(Ns,e.expiresAt===void 0?null:String(e.expiresAt))}function Rs(){Fs(js,null),Fs(Ms,null),Fs(Ns,null)}function zs(e){let t=e.get(`token`);if(t===null||t.length===0)return null;let n=e.get(`refreshToken`),r=Number(e.get(`expiresAt`));return{token:t,...n!==null&&n.length>0?{refreshToken:n}:{},...Number.isFinite(r)&&r>0?{expiresAt:r}:{}}}async function Bs(e){await fetch(z(`/api/auth/session`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({token:e})}).catch(()=>{})}var Vs=new Set;function Hs(e){return Vs.add(e),()=>Vs.delete(e)}var Us=null;function Ws(){return Us===null&&(Us=new jt({refresh:async e=>{let t=Is();if(t?.refreshToken!==void 0&&t.refreshToken!==e&&(t.expiresAt??0)>Date.now()+6e4)return t;let n=await Q().refreshSession(e);return{token:n.token,refreshToken:n.refreshToken,expiresAt:n.expiresAt}},onTokens:e=>{Ls(e),Q().setToken(e.token),Bs(e.token)},onExpired:()=>{Rs();for(let e of Vs)e()}})),Us}function Gs(e){Ls(e),Ws().adopt(e)}var Ks=512;function qs(e){if(!e||e.length>Ks)return null;let t=mt(e);return t===null?!e.startsWith(`/`)||e.startsWith(`//`)||e.includes(`\\`)||e.includes(`://`)||e.includes(`..`)||e===`/login`||e.startsWith(`/login?`)||e.startsWith(`/login/`)?null:{kind:`path`,path:e}:{kind:`app-callback`,url:t}}var Js=/^[A-Za-z0-9_-]{43,128}$/,Ys=/^[A-Za-z0-9._~-]{1,256}$/;function Xs(e){let{codeChallenge:t,state:n}=e;return!t||!Js.test(t)||(e.codeChallengeMethod??`S256`)!==`S256`||!n||!Ys.test(n)?null:{codeChallenge:t,state:n,purpose:e.purpose===`step-up`?`step-up`:`new-session`}}var Zs=`camstack:login-app-handoff`;function Qs(e){if(!e)return null;try{let t=JSON.parse(e);if(typeof t!=`object`||!t)return null;let n=e=>{let n=Reflect.get(t,e);return typeof n==`string`?n:null};return Xs({codeChallenge:n(`codeChallenge`),state:n(`state`),purpose:n(`purpose`)})}catch{return null}}function $s(e,t=Date.now()){e!==null&&dc(Zs,JSON.stringify(e),Qs,t)}function ec(e=Date.now()){return fc(Zs,Qs,e)}function tc(e,t,n){return`${e}?${`code=${encodeURIComponent(t)}`}${n===void 0?``:`&state=${encodeURIComponent(n)}`}`}function nc(e,t=Date.now()){return hc(t)??qs(e)}var rc=2048;function ic(e){return!e||e.length>rc||!e.startsWith(`/`)||e.startsWith(`//`)||e.includes(`\\`)||e.includes(`://`)||e.includes(`..`)||e===`/login`||e.startsWith(`/login?`)||e.startsWith(`/login/`)?null:e}function ac(e,t=Date.now()){dc(lc,e,ic,t)}function oc(e=Date.now()){return fc(lc,ic,e)}function sc(e,t=Date.now()){return oc(t)??ic(e)}var cc=`camstack:login-redirect`,lc=`camstack:login-next`,uc=10*6e4;function dc(e,t,n,r){let i=pc();if(!i||!n(t))return;let a={raw:t??``,at:r};try{i.setItem(e,JSON.stringify(a))}catch{}}function fc(e,t,n){let r=pc();if(!r)return null;let i=null;try{i=r.getItem(e),r.removeItem(e)}catch{return null}if(!i)return null;try{let e=JSON.parse(i);if(typeof e!=`object`||!e)return null;let r=Reflect.get(e,`at`),a=Reflect.get(e,`raw`);return typeof r!=`number`||typeof a!=`string`||n-r>uc?null:t(a)}catch{return null}}function pc(){if(typeof window>`u`)return null;try{return window.sessionStorage}catch{return null}}function mc(e,t=Date.now()){dc(cc,e,qs,t)}function hc(e=Date.now()){return fc(cc,qs,e)}function gc(e){try{let t=e.split(`.`);if(t.length<2||!t[1])return null;let n=JSON.parse(atob(t[1]));return{id:String(n.userId??``),username:String(n.username??`unknown`),isAdmin:!!n.isAdmin,exp:Number(n.exp??0),scopes:_c(n.scopes)}}catch{return null}}function _c(e){return xt(e)}function vc(e){let t=gc(e);return t?t.exp*1e3<Date.now():!0}a();var yc=`changeme`;function bc(e){return{token:e.token,...e.refreshToken===void 0?{}:{refreshToken:e.refreshToken},...e.expiresAt===void 0?{}:{expiresAt:e.expiresAt}}}async function xc(e,t){if(await Bs(e),t.kind===`path`){window.location.replace(z(t.path));return}try{As();let e=ec();if(e===null)throw Error(`The app sent no PKCE challenge and state`);let{code:n}=await Q().trpcClient.auth.createHandoffCode.mutate({purpose:e.purpose,codeChallenge:e.codeChallenge,state:e.state});window.location.replace(tc(t.url,n,e.state))}catch{window.location.replace(z(`/`))}}async function Sc(e,t){await Bs(e),window.location.replace(z(t))}var Cc=g(null);function wc({children:e}){let[t,n]=f(null),[r,i]=f(!0),[a,o]=f(!1);s(()=>{if(typeof window<`u`&&window.location.hash.startsWith(`#token=`)){let e=new URLSearchParams(window.location.hash.slice(1)),t=zs(e),n=t?.token??null;if(t!==null&&n!==null){Gs(t);let r=hc();if(r){xc(n,r);return}let i=oc()??ic(e.get(`next`));if(i){Sc(n,i);return}window.history.replaceState({},``,z(`/`))}}c()},[]);let c=async()=>{let e=Is();if(e===null){i(!1);return}let t=e.token;if(e.refreshToken!==void 0){let n=Ws();n.adopt(e),await n.ensureFresh();let r=Is();if(r===null){i(!1);return}t=r.token}if(vc(t)){Rs(),i(!1);return}let r=gc(t);if(!r){Rs(),i(!1);return}Bs(t),Q().trpcClient.system.info.query().then(()=>n(r)).catch(e=>{let t=e?.data?.code;t===`UNAUTHORIZED`||t===`FORBIDDEN`?(Ws().stop(),Rs(),As()):n(r)}).finally(()=>i(!1))};s(()=>Hs(()=>{As(),n(null),o(!1)}),[]);let l=p(async(e,t)=>{let r=await Q().login(e,t,{refreshable:!0}),i=r.secondFactors??(r.requiresTotp===!0?[`totp`]:[]);if(i.length>0)return{kind:`second-factor`,challengeToken:r.token,factors:i};let a=r.token;return Gs(bc(r)),await Bs(a),As(),n(gc(a)),o(t===yc),{kind:`ok`}},[]),u=p(async(e,t)=>{let r=await Q().loginVerifyTotp(e,t,{refreshable:!0}),i=r.token;Gs(bc(r)),await Bs(i),As(),n(gc(i)),o(!1)},[]),d=p(async(e,t)=>{Gs({token:e,...t}),await Bs(e),As(),n(gc(e)),o(!1)},[]),m=p(()=>{Q().logout().catch(()=>{}),Ws().stop(),Rs(),fetch(z(`/api/auth/session`),{method:`DELETE`}).catch(()=>{}),As(),n(null),o(!1)},[]),h=p(()=>{o(!1)},[]);return N(Cc.Provider,{value:{user:t,loading:r,mustChangePassword:a,login:l,verifyTotp:u,finalizePasskeyLogin:d,logout:m,clearMustChangePassword:h},children:e})}function Tc(){let e=v(Cc);if(!e)throw Error(`useAuth must be used within AuthProvider`);return e}a();function Ec(e,t){for(let n of e)for(let e of n.fields){if(!(`key`in e)||e.key!==t)continue;if(e.type===`button`||e.type===`separator`||e.type===`info`)return!0;let r=e.immediate;return r===!0?!0:r===!1?!1:n.immediate===!0}return!1}function Dc({schema:e,serverValues:t,onImmediateSave:n,onDeferredSave:r}){let[i,a]=f({}),[o,c]=f({}),[l,u]=f(!1),m=j(null),h=e?.sections??[],g=Object.keys(i).length>0,_=d(()=>({...t,...o,...i}),[t,o,i]);s(()=>{if(g||Object.keys(o).length>0){u(!0);return}m.current&&clearTimeout(m.current),m.current=setTimeout(()=>u(!1),500)},[g,o]),s(()=>()=>{m.current&&clearTimeout(m.current)},[]);let v=p(()=>{u(!0),m.current&&clearTimeout(m.current),m.current=setTimeout(()=>u(!1),2e3)},[]),y=p(e=>{v();let r={},o={},s={...t,...i};for(let[t,n]of Object.entries(e))s[t]!==n&&(Ec(h,t)?r[t]=n:o[t]=n);Object.keys(r).length>0&&n(r),a(e=>{let t={...e};for(let e of Object.keys(r))delete t[e];for(let[e,n]of Object.entries(o))t[e]=n;return t})},[v,t,i,h,n]),b=p(e=>{let t={},n={};for(let[r,a]of Object.entries(i))e.includes(r)?t[r]=a:n[r]=a;if(a(n),Object.keys(t).length===0)return;let o=Object.keys(t),s=r(t);if(s===void 0||typeof s.then!=`function`)return;c(e=>({...e,...t}));let l=()=>c(e=>{let t={...e};for(let e of o)delete t[e];return t});s.then(l,()=>{l(),a(e=>{let n={...e};for(let e of o)e in n||(n[e]=t[e]);return n})})},[i,r]),x=p(e=>{a(t=>{let n={...t};for(let t of e)delete n[t];return n})},[]),S=p(()=>{a({})},[]);return{values:_,pendingKeys:Object.keys(i),hasPendingEdits:g,editingPaused:l,handleChange:y,handleSave:b,handleDiscard:x,resetAll:S}}function Oc(e){return e>=8}a();function kc(e){if(typeof e!=`object`||!e)return;let t=Reflect.get(e,`windows`);if(!(!Array.isArray(t)||t.length===0))return e}function Ac(e){return e.type===`multiselect`}function jc(e){let t=e.suggestions;return t===void 0||t.length===0?[]:t.map(e=>({value:e,label:e}))}function Mc(e){return e.map(e=>({value:e.value,label:e.label,...e.description===void 0?{}:{description:e.description},...e.iconId===void 0?{}:{iconId:e.iconId}}))}function Nc(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`):[]}function Pc({field:e,values:t,onChange:n,disabled:r,translationFn:i,onTestField:a,externalProbe:o,allFields:s,onAction:c}){let{t:l}=V();if(e.type===`tags`){if(!en(e,t,s))return null;let a=e.creatable!==!1;return N(Kn,{mode:`multi`,options:jc(e),value:Nc(t[e.key]),onChange:t=>n(e.key,t),disabled:r===!0||e.disabled===!0,creatable:a,...e.createLabel===void 0?{}:{createLabel:e.createLabel},...e.maxTags===void 0?{}:{maxItems:e.maxTags},label:Ic(e.label,i),description:e.description===void 0?void 0:Ic(e.description,i),placeholder:e.placeholder??l(`formBuilder.formBuilder.searchOrAdd`,`Search or add…`),testId:`config-tags-${e.key}`})}if(e.type===`schedule`){if(!en(e,t,s))return null;let r=Ic(e.label,i),a=e.description===void 0?void 0:Ic(e.description,i),o=e.mode===`times`?`times`:`windows`;return y(`div`,{className:`space-y-1`,"data-testid":`config-schedule-${e.key}`,children:[r!==void 0&&N(`label`,{className:`block text-[11px] font-medium text-foreground-subtle`,children:r}),a!==void 0&&N(`p`,{className:`text-[10px] text-foreground-subtle`,children:a}),N(gr,{mode:o,value:kc(t[e.key]),onChange:t=>n(e.key,t)})]})}return Ac(e)&&(Oc(e.options.length)||e.creatable===!0)?en(e,t,s)?N(Kn,{mode:`multi`,options:Mc(e.options),value:Nc(t[e.key]),onChange:t=>n(e.key,t),disabled:r===!0||e.disabled===!0,creatable:e.creatable===!0,...e.createLabel===void 0?{}:{createLabel:e.createLabel},...e.maxItems===void 0?{}:{maxItems:e.maxItems},label:Ic(e.label,i),description:e.description===void 0?void 0:Ic(e.description,i),placeholder:e.placeholder??l(`formBuilder.formBuilder.searchToAdd`,`Search to add…`),testId:`config-multiselect-${e.key}`,listboxId:`msel-${e.key}`}):null:N($n,{field:e,values:t,onChange:n,disabled:r,translationFn:i,onTestField:a,externalProbe:o,allFields:s,onAction:c})}function Fc(e){return/^[a-zA-Z0-9_]+(\.[a-zA-Z0-9_]+)+$/.test(e)}function Ic(e,t){if(e!==void 0)return t&&Fc(e)?t(e):e}function Lc({section:e,values:t,onChange:n,disabled:r,translationFn:i,onTestField:a,probeResults:o,onAction:s}){let[c,l]=f(e.defaultCollapsed??!1),u=e.style===`accordion`;if(e.fields.reduce((n,r)=>n+ +!!en(r,t,e.fields),0)===0)return null;let d=e.fields,p=e.columns??2,m=p===1?`grid-cols-1`:p===3?`grid-cols-1 @[480px]:grid-cols-2 @[880px]:grid-cols-3`:p===4?`grid-cols-1 @[480px]:grid-cols-2 @[1140px]:grid-cols-4`:`grid-cols-1 @[480px]:grid-cols-2`,h=e.fields.length===1&&e.fields[0]?.type===`widget`?e.fields[0]:void 0,g=h!==void 0||!e.title&&!e.description;return y(`div`,{className:`@container rounded-lg border border-border bg-surface p-3`,style:{containerType:`inline-size`},"data-settings-section":e.id,children:[!g&&y(`div`,{className:[`flex items-center justify-between mb-2`,u?`cursor-pointer`:``].join(` `),onClick:u?()=>l(e=>!e):void 0,children:[y(`div`,{children:[e.title&&N(`h3`,{className:`text-[11px] font-semibold text-foreground-subtle uppercase tracking-wider`,children:Ic(e.title,i)}),e.description&&N(`p`,{className:`text-[10px] text-foreground-subtle mt-0.5`,children:Ic(e.description,i)})]}),u&&N(`span`,{className:`text-foreground-subtle text-xs ml-2`,children:c?`▸`:`▾`})]}),!(c&&!g)&&(h===void 0?N(E,{children:N(`div`,{className:`grid ${m} gap-x-3 gap-y-2.5`,children:d.map(c=>N(Pc,{field:c,values:t,onChange:n,disabled:r,translationFn:i,onTestField:a,externalProbe:o?.[c.key],allFields:e.fields,onAction:s},c.key))})}):N($n,{field:h,values:t,onChange:n,disabled:r,translationFn:i,onTestField:a,externalProbe:o?.[h.key],allFields:e.fields,onAction:s},h.key))]})}function Rc({schema:e,values:t,onChange:n,disabled:r,translationFn:i,onTestField:a,probeResults:o,onClearProbe:s,onAction:c,visibilityContext:l}){let u=l?{...l,...t}:t,d=(e,r)=>{n({...t,[e]:r}),s?.(e)};return N(`div`,{className:`space-y-4`,children:e.sections.map((e,t)=>N(Lc,{section:e,values:u,onChange:d,disabled:r,translationFn:i,onTestField:a,probeResults:o,onAction:c},`${e.id}-${t}`))})}function zc({pendingCount:e,onSave:t,onDiscard:n,saving:r=!1,saveLabel:i=`Save`,discardLabel:a=`Discard`}){let{t:o}=V();return e<=0?null:y(`div`,{className:`sticky bottom-0 -mb-3 flex items-center justify-between gap-3 rounded-lg border border-primary/40 bg-primary/5 px-3 py-2 shadow-sm z-10`,children:[N(`span`,{className:`text-xs text-foreground`,children:o(`formBuilder.saveBar.unsavedChanges`,{count:e})}),y(`div`,{className:`flex items-center gap-2`,children:[N(`button`,{type:`button`,onClick:n,disabled:r,className:`inline-flex items-center rounded-md border border-border px-2.5 py-1 text-xs text-foreground-subtle hover:bg-surface-hover disabled:opacity-50`,children:a}),N(`button`,{type:`button`,onClick:t,disabled:r,className:`inline-flex items-center rounded-md bg-primary px-3 py-1 text-xs font-medium text-primary-foreground hover:bg-primary/90 disabled:opacity-50`,children:r?o(`formBuilder.formSaveBar.saving`,`Saving…`):i})]})]})}function Bc({tabs:e,activeId:t,onChange:n,countByTab:r,pendingByTab:i}){return e.length===0?null:N(`div`,{className:`flex flex-wrap items-center gap-1 border-b border-border shrink-0`,children:e.map(e=>{let a=e.id===t,o=r?.get(e.id)??0,s=i?.get(e.id)??0;return y(`button`,{type:`button`,onClick:()=>n(e.id),className:`relative shrink-0 px-3 py-1.5 text-xs font-medium rounded-t-md transition-colors -mb-px border-b-2 whitespace-nowrap ${a?`text-primary border-primary bg-primary/5`:`text-foreground-subtle border-transparent hover:text-foreground hover:bg-surface-hover`}`,children:[e.label,o>0&&y(`span`,{className:`ml-1.5 text-[10px] opacity-60`,children:[`(`,o,`)`]}),s>0&&N(`span`,{className:`ml-1.5 inline-flex h-1.5 w-1.5 rounded-full bg-primary`})]},e.id)})})}a();function Vc({schema:e,values:t,pendingKeys:n,onChange:r,onAction:i,onSave:a,onDiscard:o,disabled:s,activeSubTab:c,onSubTabChange:l,flattenTabs:u=!1,visibilityContext:p}){let m=e.tabs??[],h=d(()=>{let t=new Map;for(let n of e.sections){let e=n.tab??`general`,r=t.get(e)??[];r.push(n),t.set(e,r)}return t},[e.sections]),g=new Set(m.map(e=>e.id)),_=[...m,...[...h.keys()].filter(e=>!g.has(e)).map(e=>({id:e,label:e,icon:`wrench`,order:100}))],v=_[0]?.id??`general`,[b,x]=f(v),S=l!==void 0,C=new Set(_.map(e=>e.id)),w=j(new Set);for(let e of C)w.current.add(e);let T=w.current,E=(e=>e&&(C.has(e)||T.has(e))?e:v)(S?c:b),D=e=>{S?l(e):x(e)},O=h.get(E)??[],k={sections:O.length<=1?O.length===1?[{...O[0],title:``}]:O:O.every(e=>!e.title)?[{...O[0],title:``,fields:O.flatMap(e=>e.fields)}]:O},A=N(zc,{pendingCount:n.length,onSave:()=>a(n),onDiscard:()=>o(n),saving:s});if(u||_.length<=1)return y(`div`,{className:`flex flex-col gap-3`,children:[N(Rc,{schema:e,values:t,onChange:r,onAction:i,disabled:s,visibilityContext:p}),A]});let M=new Map,P=new Map;for(let[e,t]of h){M.set(e,t.length);let r=new Set,i=e=>{for(let t of e)if(`key`in t&&typeof t.key==`string`&&r.add(t.key),t.type===`group`)i(t.fields);else if(t.type===`sub-tabs`)for(let e of t.tabs)i(e.fields)};for(let e of t)i(e.fields);let a=n.filter(e=>r.has(e)).length;a>0&&P.set(e,a)}return y(`div`,{className:`flex flex-col gap-3`,children:[N(Bc,{tabs:_.map(e=>({id:e.id,label:e.label})),activeId:E,onChange:D,countByTab:M,pendingByTab:P}),N(on,{tabKey:E,children:N(Rc,{schema:k,values:t,onChange:r,onAction:i,disabled:s,visibilityContext:p})}),A]})}var Hc=`device-export`,Uc=`export`,Wc=`Export`;function Gc(e){return e.type===`separator`||e.type===`info`||e.type===`object-array`||e.type===`widget`||e.type===`addon-action-button`||e.type===`device-action-button`?!1:e.type===`group`?e.fields.some(Gc):e.type===`sub-tabs`?e.tabs.some(e=>e.fields.some(Gc)):e.writerCapName===Hc}function Kc(e){return e.tab===`export`?!0:e.fields.some(Gc)}var qc=`host/extensions-panel`;function Jc(e){return e.type===`widget`?e.widgetId===qc:e.type===`group`?e.fields.some(Jc):e.type===`sub-tabs`?e.tabs.some(e=>e.fields.some(Jc)):!1}function Yc(e){return e.fields.some(Jc)}function Xc(e,t){return!t&&e!==void 0&>.includes(e)}function Zc(e){return e.location!==`top-tab`&&!Kc(e)&&!Yc(e)}function Qc(e,t,n,r){return!r||Xc(t,n)?!0:(e??[]).some(Zc)}function $c(e,t){for(let n of e){if(n.type===`group`){$c(n.fields,t);continue}if(n.type===`sub-tabs`){for(let e of n.tabs)$c(e.fields,t);continue}if(!(`value`in n))continue;let e=n.value===void 0?n.default:n.value;e!==void 0&&(t[n.key]=e)}}function el(e){let t={};for(let n of e)$c(n.fields,t);return t}a();function tl(e,t){return t&&t===`admin`?e:!0}function nl(e){if(!e)return null;let t={sections:[...e.sections].toSorted((e,t)=>{let n=e.tab??`general`,r=t.tab??`general`;return n===r?Kc(e)&&Kc(t)?e.id.localeCompare(t.id):(e.order??0)-(t.order??0):n.localeCompare(r)})};return e.tabs?{...t,tabs:e.tabs}:t}function rl(e){return e.type===`separator`||e.type===`info`||e.type===`button`||e.type===`widget`||e.type===`addon-action-button`||e.type===`device-action-button`}function il(e){return e.key}function al(e){if(!rl(e))return e.value}function ol(e){return rl(e)?null:e}function sl(e,t){for(let n of e)if(t(n),n.type===`group`)sl(n.fields,t);else if(n.type===`sub-tabs`)for(let e of n.tabs)sl(e.fields,t)}function cl(e){if(!e)return{};let t={};for(let n of e.sections)sl(n.fields,e=>{let n=il(e);n!==null&&(t[n]=al(e))});return t}function ll(e,t){if(!e)return null;let n=null;for(let r of e.sections)if(sl(r.fields,e=>{if(n!==null||il(e)!==t)return;let r=ol(e);r&&r.writerCapName&&r.writerAddonId&&(n={capName:r.writerCapName,addonId:r.writerAddonId})}),n!==null)break;return n}function ul(e){return{...e,fields:e.fields.map(dl)}}function dl(e){return e.type===`separator`||e.type===`info`||e.type===`button`||e.type===`object-array`?e:{...e,readonlyField:!0}}function fl(e,t){return e&&{...e,sections:e.sections.map(e=>({...e,fields:e.fields.map(e=>{let n=ol(e);return n?tl(t,n.minRole)?e:dl(e):e})}))}}function pl({deviceId:e,sectionFilter:t,activeSubTab:n,onSubTabChange:r,flattenSubTabs:i,subTabGrouping:a}){let{t:o}=V(),s=A(),{user:c}=Tc(),l=c?.isAdmin===!0,u=j(!1),{data:f,isLoading:m}=_n({deviceId:e},{refetchInterval:()=>u.current?!1:2500,enabled:Number.isFinite(e)}),{data:h}=hn({deviceId:e},{enabled:Number.isFinite(e)}),g=f?.settings??null,_=f?.live??null,v=d(()=>{if(!g&&!_)return null;let e=g?.sections??[],n=(_?.sections??[]).map(ul),r=[...e,...n],i=t?r.filter(t):r.filter(Zc);if(i.length===0)return null;if(a){let e=i.map(e=>({...e,tab:a.groupOf(e)})),t=new Set(e.map(e=>e.tab)),n=a.tabs.filter(e=>t.has(e.id));return n.length>0?{tabs:n,sections:e}:{sections:e}}let o=new Set;for(let e of i)o.add(e.tab??`general`);let s=[...g?.tabs??[],...(_?.tabs??[]).filter(e=>!(g?.tabs??[]).some(t=>t.id===e.id))].filter(e=>o.has(e.id));return s.length>0?{tabs:s,sections:i}:{sections:i}},[g,_,t,a]),b=d(()=>el([...g?.sections??[],..._?.sections??[]]),[g,_]),x=d(()=>nl(v),[v]),S=d(()=>fl(x,l),[x,l]),C=d(()=>cl(S),[S]),w=Cn(),T=Un(),E=sn(),D=Dn(),O=Ut({onSuccess:()=>{s.invalidateQueries({queryKey:[[`deviceManager`,`getDeviceAggregate`]]})}}),k={isPending:O.isPending,mutate:t=>{O.mutate({deviceId:e,changes:[...t]})}},M=Dc({schema:S,serverValues:C,onImmediateSave:p(e=>{let t=Object.entries(e).map(([e,t])=>{let n=ll(S,e);return n?{writerCapName:n.capName,writerAddonId:n.addonId,key:e,value:t}:null}).filter(e=>e!==null);t.length>0&&k.mutate(t)},[S,k]),onDeferredSave:p(async t=>{let n=Object.entries(t).map(([e,t])=>{let n=ll(S,e);return n?{writerCapName:n.capName,writerAddonId:n.addonId,key:e,value:t}:null}).filter(e=>e!==null);if(n.length!==0)try{let t=await O.mutateAsync({deviceId:e,changes:n});if(t.failures.length>0)throw Error(t.failures.map(e=>e.error).join(`; `))}finally{await s.invalidateQueries({queryKey:[[`deviceManager`,`getDeviceAggregate`]]})}},[S,O,e,s])}),{values:P,pendingKeys:F,handleChange:I,handleSave:ee,handleDiscard:L}=M;if(u.current=M.editingPaused,m)return y(`div`,{className:`flex items-center justify-center py-12 text-foreground-subtle`,children:[N(Se,{className:`h-4 w-4 animate-spin mr-2`}),N(`span`,{className:`text-xs`,children:o(`device.deviceAggregateSection.loadingDeviceAggregate`,`Loading device aggregate…`)})]});if(!S||S.sections.length===0)return N(`div`,{className:`text-xs text-foreground-subtle italic py-4 text-center`,children:o(`device.deviceAggregateSection.noAggregateContributionsForThis`,`No aggregate contributions for this device.`)});async function te(t,n,r){if(t===`regenerate-rtsp-token`){let t=[`rtspUrl:`,`regenerateToken:`].find(e=>n.startsWith(e));if(!t)throw Error(`regenerate-rtsp-token: unrecognised key "${n}" (expected "rtspUrl:<streamId>" or "regenerateToken:<streamId>")`);let r=n.slice(t.length);if(!r)throw Error(`regenerate-rtsp-token: key "${n}" has no streamId after prefix`);let i=yt(e,r);await w.mutateAsync({brokerId:i}),s.invalidateQueries({queryKey:[[`deviceManager`,`getDeviceAggregate`]]});return}if(t===`test-probe`){if(!h)return{status:`error`,error:o(`device.deviceAggregateSection.metadataNotLoaded`)};try{return await E.mutateAsync({addonId:h.addonId,type:h.type,key:n,value:r})}catch(e){return{status:`error`,error:e instanceof Error?e.message:String(e)}}}if(t===`refresh-probe`){if(!n.startsWith(`probedInfo:`))throw Error(`refresh-probe: unrecognised key "${n}" (expected "probedInfo:<streamId>")`);let t=n.slice(11);if(!t)throw Error(`refresh-probe: key "${n}" has no streamId after prefix`);let r=yt(e,t),i=await T.mutateAsync({brokerId:r});return s.invalidateQueries({queryKey:[[`deviceManager`,`getDeviceAggregate`]]}),i}if(t===`device-custom-action`){let t=await D.mutateAsync({deviceId:e,action:n,input:r});return s.invalidateQueries({queryKey:[[`deviceManager`,`getDeviceAggregate`]]}),t}throw Error(`[device-aggregate] unknown action "${t}"`)}return N(Vc,{schema:S,values:P,pendingKeys:F,onChange:I,onAction:te,onSave:ee,onDiscard:L,disabled:k.isPending,activeSubTab:n,onSubTabChange:r,flattenTabs:i,visibilityContext:b})}var ml=`w-full min-w-0 px-1.5 py-0.5 text-[11px] bg-background border border-border rounded focus:outline-none focus:border-primary disabled:opacity-50 disabled:cursor-not-allowed`,hl=0,gl=10;function _l(e){if(e.trim()===``)return``;let t=Number.parseInt(e,10);return Number.isFinite(t)?String(t<hl?hl:t>gl?gl:t):``}function vl({value:e,onChange:t,disabled:n=!1,placeholder:r,className:i,id:a,"aria-label":o}){return N(`input`,{type:`number`,min:hl,max:gl,step:1,id:a,className:i??ml,"aria-label":o,placeholder:r,value:e,onChange:e=>{t(_l(e.target.value))},disabled:n})}function yl({deviceName:e,value:t,inheritedIcon:n,inheritedLabel:r,disabled:i,onChange:a}){let{t:o}=V(),s={trigger:o(`deviceDisplay.pickIcon`,{name:e}),panel:o(`deviceDisplay.iconFor`,{name:e}),searchPlaceholder:o(`deviceDisplay.iconSearchPlaceholder`),clear:r,noMatches:o(`deviceDisplay.iconNoMatches`)};return y(`div`,{className:`flex items-center gap-2`,children:[N(Jn,{value:t===``?null:t,onPick:e=>a(e??``),categoryLabel:e=>o(`deviceDisplay.iconCategory.${e}`,{defaultValue:Ct(e)}),fallbackGlyph:n,labels:s,disabled:i}),N(`span`,{className:`text-[11px] text-foreground-subtle`,children:t===``?r:t})]})}a();var bl=`w-full min-w-0 px-1.5 py-0.5 text-[11px] bg-background border border-border rounded focus:outline-none focus:border-primary disabled:opacity-50`,xl={icon:``,label:``,unit:``,precision:``,hidden:!1};function Sl(e){return{icon:e?.icon??``,label:e?.label??``,unit:e?.unit??``,precision:e?.precision===void 0?``:String(e.precision),hidden:e?.hidden===!0}}function Cl(e){if(typeof e!=`object`||!e)return;let t=e.unit;return typeof t==`string`?t:void 0}function wl(e){if(e.trim()===``)return;let t=Number.parseInt(e,10);return Number.isFinite(t)?t:void 0}function Tl(e,t){let n=wl(e.precision),r={...e.icon===``?{}:{icon:e.icon},...e.label.trim()===``?{}:{label:e.label.trim()},...e.unit===``?{}:{unit:e.unit},...n===void 0?{}:{precision:n},...e.hidden?{hidden:!0}:{},...t?.perCap===void 0?{}:{perCap:t.perCap}};return Object.keys(r).length===0?null:r}function El({deviceId:e}){let t=Ne();Pn();let{t:n}=V(),r=Be(),i=A(),{data:a}=hn({deviceId:e},{enabled:e>0}),o=typeof a?.role==`string`&&a.role.length>0?a.role:null,s=o===null?void 0:tn[o],c=s?.kind===`numeric`,l=String(a?.type??``),u=o!==null||a?.parentDeviceId!==null&&a?.parentDeviceId!==void 0,d=Wn(r.trpcClient,e,o??``),p=s?.kind===`numeric`?s.canonicalUnit:void 0,m=Cl(d)??p,h=m===void 0?void 0:vt(m)??m,g=h===void 0?void 0:_t(h),[_,v]=f(null),b=_??Sl(a?.display),x=Ot({onSuccess:()=>{i.invalidateQueries({queryKey:[[`deviceManager`]]})}}),{data:S}=zn({},{staleTime:6e4,enabled:o!==null}),C=$t({onSuccess:()=>{i.invalidateQueries({queryKey:[[`deviceManager`]]})}});if(a==null)return null;let w=e=>{v({...b,...e})},T=()=>{x.mutate({deviceId:e,display:Tl(b,a.display)})},D=()=>{v(xl),x.mutate({deviceId:e,display:null})},O=()=>{if(o===null)return;let e=wl(b.precision),t={...b.icon===``?{}:{icon:b.icon},...b.unit===``?{}:{unit:b.unit},...e===void 0?{}:{precision:e}},n={...S?.defaults,[o]:t};C.mutate({defaults:n})},k=o===null?void 0:S?.defaults[o]?.icon,j=k===void 0?void 0:mn(k),M=o===null?Bn(l,t):gn(o,t),P={icon:j??M.icon,label:j===void 0?M.label:String(k)},F=o===null&&l===ht.Container?n(`deviceDisplay.inheritedContainer`):j===void 0?n(`deviceDisplay.inherited`,{name:P.label}):n(`deviceDisplay.inheritedRoleDefault`,{icon:P.label,role:M.label}),I=typeof a.name==`string`?a.name:`#${String(e)}`,ee=o===null?``:gn(o,t).label;return y(`div`,{className:`rounded-lg border border-border bg-surface overflow-hidden`,children:[N(`div`,{className:`border-b border-border px-3 sm:px-4 py-2`,children:N(`h2`,{className:`text-[11px] font-semibold text-foreground uppercase tracking-wider`,children:n(`deviceDisplay.title`)})}),y(`div`,{className:`divide-y divide-border`,children:[N(Z,{label:n(`deviceDisplay.icon`),value:N(yl,{deviceName:I,value:b.icon,inheritedIcon:P.icon,inheritedLabel:F,disabled:x.isPending,onChange:e=>w({icon:e})})}),u&&N(Z,{label:n(`deviceDisplay.label`),value:N(`input`,{type:`text`,className:bl,"aria-label":n(`deviceDisplay.label`),placeholder:o===null?I:ee,value:b.label,onChange:e=>w({label:e.target.value})})}),c&&y(E,{children:[N(Z,{label:n(`deviceDisplay.unit`),value:N(An,{dimension:g,value:b.unit,onChange:e=>w({unit:e}),disabled:x.isPending,"aria-label":n(`deviceDisplay.unit`),inheritLabel:n(`deviceDisplay.unitSource`,{unit:h===void 0?``:` (${h})`}),emptyReason:n(`deviceDisplay.unitSource`,{unit:``})})}),N(Z,{label:n(`deviceDisplay.precision`),value:N(vl,{"aria-label":n(`deviceDisplay.precision`),placeholder:n(`deviceDisplay.precisionInherit`),value:b.precision,onChange:e=>w({precision:e}),disabled:x.isPending})})]}),N(Z,{label:n(`deviceDisplay.hidden`),value:y(`label`,{className:`flex items-center gap-2`,children:[N(`input`,{type:`checkbox`,checked:b.hidden,onChange:e=>w({hidden:e.target.checked})}),N(`span`,{className:`text-[11px] text-foreground`,children:n(`deviceDisplay.hideFromLists`)})]})})]}),y(`div`,{className:`border-t border-border px-3 sm:px-4 py-2 flex flex-wrap items-center gap-2`,children:[N(`button`,{type:`button`,className:`rounded bg-primary px-3 py-1 text-[11px] font-medium text-primary-foreground disabled:opacity-50`,onClick:T,disabled:x.isPending,children:n(`common.save`)}),N(`button`,{type:`button`,className:`rounded border border-border px-3 py-1 text-[11px] text-foreground-subtle`,onClick:D,disabled:x.isPending,children:n(`common.reset`)}),o!==null&&N(`button`,{type:`button`,className:`rounded border border-border px-3 py-1 text-[11px] text-foreground-subtle`,onClick:O,disabled:C.isPending,title:n(`deviceDisplay.setRoleDefaultTitle`,{role:ee}),children:n(`deviceDisplay.setRoleDefault`,{role:ee})})]})]})}a();function Dl({deviceId:e,onClose:t}){let{t:n}=V(),[r,i]=f(`info`),{data:a}=hn({deviceId:e},{enabled:e>0});return N(nn,{open:!0,onOpenChange:e=>!e&&t(),children:y(Pt,{width:`lg`,scroll:`body`,children:[y(kt,{children:[N(Tn,{children:typeof a?.name==`string`&&a.name.length>0?a.name:`#${String(e)}`}),y(Zt,{children:[n(`deviceQuickDetail.description`,{defaultValue:`Device info, display and export — same surfaces as the detail page.`}),` `,N(no,{to:`/devices/${String(e)}`,className:`text-primary hover:underline`,onClick:t,children:n(`deviceQuickDetail.openFull`,{defaultValue:`Open full detail`})})]})]}),N(`div`,{className:`mt-3 flex items-center gap-1 rounded-md bg-surface-hover p-0.5 w-fit`,children:[[`info`,n(`deviceQuickDetail.tabInfo`,{defaultValue:`Device info`})],[`display`,n(`deviceQuickDetail.tabDisplay`,{defaultValue:`Display`})],[`export`,n(`deviceQuickDetail.tabExport`,{defaultValue:`Export`})]].map(([e,t])=>N(`button`,{type:`button`,onClick:()=>i(e),className:`px-2.5 py-1 rounded text-[11px] font-medium transition-colors ${r===e?`bg-surface text-foreground shadow-sm`:`text-foreground-subtle hover:text-foreground`}`,children:t},e))}),N(Lt,{className:`mt-3`,children:y(Jt,{deviceId:e,device:a??void 0,children:[r===`info`&&N(fs,{}),r===`display`&&N(El,{deviceId:e}),r===`export`&&N(pl,{deviceId:e,sectionFilter:Kc})]})})]})})}function Ol({children:e}){let[t,n]=f(null),r=p(e=>n(e),[]),i=p(()=>n(null),[]);return y(Gn,{open:r,children:[e,t===null?null:N(Dl,{deviceId:t,onClose:i})]})}a();function kl({tabs:e,active:t,onChange:n}){return N(`div`,{className:`flex rounded-lg border border-border bg-surface p-0.5 gap-0.5`,children:e.map(e=>N(`button`,{type:`button`,onClick:()=>n(e.id),className:[`flex-1 rounded-md px-3 py-1.5 text-xs font-medium transition-colors`,t===e.id?`bg-primary/12 text-primary`:`text-foreground-subtle hover:text-foreground hover:bg-surface-hover`].join(` `),children:e.label},e.id))})}function Al(e){let t=e.formats;if(!t)return``;let n=Object.values(t).filter(e=>e!==void 0&&e.sizeMB>0).map(e=>e.sizeMB);if(n.length===0)return``;let r=Math.min(...n),i=Math.max(...n);return r===i?`${r} MB`:`${r}-${i} MB`}function jl(e){return`${e.inputSize.width}x${e.inputSize.height}`}function Ml(e){return e.formats?Object.keys(e.formats).filter(t=>e.formats[t]!==void 0):[]}function Nl({entry:e,selected:t,onSelect:n,disabled:r}){let{t:i}=V(),a=Al(e),o=jl(e),s=Ml(e);return y(`button`,{type:`button`,onClick:n,disabled:r,className:[`w-full text-left rounded-lg border p-3 transition-all`,t?`border-primary bg-primary/5 ring-1 ring-primary/30`:`border-border bg-background hover:border-foreground-subtle/40 hover:bg-surface-hover/50`,r?`opacity-50 cursor-not-allowed`:`cursor-pointer`].join(` `),children:[N(`div`,{className:`flex items-start justify-between gap-2`,children:y(`div`,{className:`flex-1 min-w-0`,children:[y(`div`,{className:`flex items-center gap-2`,children:[N(`span`,{className:`text-xs font-semibold text-foreground truncate`,children:e.name}),t&&N(Ce,{className:`h-3.5 w-3.5 text-primary shrink-0`})]}),N(`p`,{className:`text-[10px] text-foreground-subtle mt-0.5 line-clamp-2`,children:e.description})]})}),y(`div`,{className:`flex items-center gap-3 mt-2 flex-wrap`,children:[y(`span`,{className:`inline-flex items-center gap-1 text-[10px] text-foreground-subtle`,children:[N(ne,{className:`h-3 w-3`}),o]}),a&&N(`span`,{className:`text-[10px] text-foreground-subtle`,children:a}),s.length>0&&N(`div`,{className:`flex gap-1`,children:s.map(e=>N(`span`,{className:`text-[9px] uppercase rounded bg-surface border border-border px-1 py-0.5 text-foreground-subtle font-mono`,children:e},e))}),e.labels.length>0&&N(`span`,{className:`text-[10px] text-foreground-subtle`,children:i(`common.labels`,{count:e.labels.length})})]})]})}function Pl({field:e,value:t,onChange:n,disabled:r}){let{t:i}=V(),a=e.catalog??[],o=a.length>0,s=St(a).length>0,c=e.allowCustomPath!==!1||e.allowCustom===!0,l=[...o?[{id:`catalog`,label:i(`formBuilder.modelSelector.models`,`Models ({{length}})`,{length:a.length})}]:[],...c?[{id:`custom`,label:i(`formBuilder.modelSelector.customPath`,`Custom Path`)}]:[]],[u,d]=f(o?`catalog`:`custom`),p=t==null?``:String(t);return y(`div`,{className:`space-y-3`,children:[l.length>1&&N(kl,{tabs:l,active:u,onChange:d}),u===`catalog`&&o&&s&&N(bn,{catalog:a,value:p,onChange:e=>n(e),disabled:r||e.disabled}),u===`catalog`&&o&&!s&&N(`div`,{className:`space-y-1.5 max-h-[320px] overflow-y-auto pr-1`,children:a.filter(e=>e.legacy!==!0).map(t=>N(Nl,{entry:t,selected:p===t.id,onSelect:()=>n(t.id),disabled:r||e.disabled},t.id))}),u===`catalog`&&!o&&y(`div`,{className:`rounded-md border border-info/30 bg-info/5 px-3 py-2 flex items-start gap-2`,children:[N(He,{className:`h-3.5 w-3.5 text-info shrink-0 mt-0.5`}),N(`p`,{className:`text-[11px] text-foreground-subtle leading-relaxed`,children:i(`formBuilder.modelSelector.noPredefinedModelsAvailableUse`,`No predefined models available. Use the Custom Path tab to specify a model file path or URL.`)})]}),u===`custom`&&c&&y(`div`,{className:`space-y-2`,children:[N(`input`,{type:`text`,className:`w-full rounded-md border border-border bg-background px-3 py-2 text-sm text-foreground focus:border-primary focus:ring-1 focus:ring-primary/30 outline-none disabled:opacity-50`,placeholder:i(`formBuilder.modelSelector.enterPathLikeDataModels`,`Enter path like /data/models/custom.onnx or https://...`),value:p,disabled:r||e.disabled,onChange:e=>n(e.target.value)}),e.acceptFormats&&e.acceptFormats.length>0&&y(`p`,{className:`text-[10px] text-foreground-subtle`,children:[i(`formBuilder.modelSelector.acceptedFormats`,`Accepted formats:`),` `,e.acceptFormats.join(`, `)]})]}),(e.compatibilityNote||e.conversionGuideUrl)&&y(`div`,{className:`flex items-start justify-between gap-3 pt-1`,children:[e.compatibilityNote&&y(`p`,{className:`flex items-start gap-1 text-[10px] text-foreground-subtle`,children:[N(He,{className:`h-3 w-3 mt-0.5 shrink-0`}),e.compatibilityNote]}),e.conversionGuideUrl&&y(`a`,{href:e.conversionGuideUrl,target:`_blank`,rel:`noopener noreferrer`,className:`flex items-center gap-1 text-[11px] text-primary hover:underline shrink-0`,children:[i(`formBuilder.modelSelector.howToConvertYourModel`,`How to convert your model`),N(fe,{className:`h-3 w-3`})]})]})]})}function Fl({to:e}){let{search:t}=J();return N(Y,{to:`${e}${t}`,replace:!0})}a();function Il(){return B.t(`helpers.keychainRevealHost.forbidden`)}function Ll(e){if(typeof e!=`object`||!e)return null;let t=Reflect.get(e,`data`);if(typeof t!=`object`||!t)return null;let n=Reflect.get(t,`code`);return typeof n==`string`?n:null}function Rl(e){let t=Ll(e);if(t===`FORBIDDEN`||t===`UNAUTHORIZED`)return Il();let n=e instanceof Error?e.message:String(e);return n.length>0?B.t(`helpers.keychainRevealHost.failedWith`,{message:n}):B.t(`helpers.keychainRevealHost.failed`)}function zl({children:e}){let t=Qn();return N(Vn,{reveal:p(async e=>{try{return(await t.mutateAsync({ref:e})).value}catch(e){throw Error(Rl(e))}},[t]),children:e})}a();function Bl(){let e=Be(),t=A(),[n,r]=f(()=>e.isConnected()?`connected`:`disconnected`),i=j(!1),[a,o]=f(0),[c,l]=f([]);s(()=>e.subscribeConnectionEvents(e=>{r(t=>(t!==`connected`&&e===`connected`&&i.current&&o(e=>e+1),e!==`connected`&&(i.current=!0),e))}),[e]),s(()=>{a!==0&&t.invalidateQueries({queryKey:[[`addons`,`getLastRestart`]]})},[a,t]);let{data:u}=Nt(void 0,{enabled:n===`connected`&&a>0,staleTime:0,refetchOnMount:!1,refetchOnWindowFocus:!1}),d=j(null);return s(()=>{if(u==null||u.requestedAt===d.current)return;d.current=u.requestedAt;let e=Hl(u);l(t=>[...t,e]);let t=window.setTimeout(()=>{l(t=>t.filter(t=>t.id!==e.id))},6e3);return()=>window.clearTimeout(t)},[u]),N(E,{children:c.length>0&&N(Vl,{toasts:c})})}function Vl({toasts:e}){return N(`div`,{className:`fixed top-[calc(env(safe-area-inset-top)+1rem)] right-[calc(env(safe-area-inset-right)+1rem)] z-50 flex flex-col gap-2 max-w-sm w-full pointer-events-none`,children:e.map(e=>y(`div`,{className:`pointer-events-auto flex items-start gap-2 px-3 py-2.5 rounded-md border border-green-500/30 bg-green-500/10 shadow-lg backdrop-blur-sm`,children:[N(Te,{className:`w-4 h-4 shrink-0 mt-0.5 text-green-400`}),y(`div`,{children:[N(`div`,{className:`text-[11px] font-semibold text-foreground`,children:e.title}),N(`div`,{className:`text-[10px] text-foreground-subtle mt-0.5`,children:e.message})]})]},e.id))})}function Hl(e){let t=`restart-${e.requestedAt}`;if(e.kind===`framework-update`&&e.packageName!==void 0&&e.toVersion!==void 0){let n=e.fromVersion===void 0?`v${e.toVersion}`:`v${e.fromVersion} → v${e.toVersion}`;return{id:t,title:B.t(`system.reconnectOverlay.frameworkUpdated`,`Framework updated`),message:B.t(`system.reconnectOverlay.isNow`,`{{packageName}} is now {{fromTo}}.`,{packageName:e.packageName,fromTo:n})}}return{id:t,title:B.t(`system.reconnectOverlay.serverRestarted`,`Server restarted`),message:e.requestedBy===void 0?B.t(`system.reconnectOverlay.manualRestartCompleted`,`Manual restart completed.`):B.t(`system.reconnectOverlay.manualRestartByCompleted`,`Manual restart by {{requestedBy}} completed.`,{requestedBy:e.requestedBy})}}var Ul=`/system/settings`,Wl=[{path:`/system/secrets`,tab:`secrets`},{path:`/system/capabilities`,tab:`capabilities`}];function Gl(e,t=``){let n=new URLSearchParams(t);return n.delete(`tab`),n.set(`tab`,e),`${Ul}?${n.toString()}`}function Kl({tab:e}){let{search:t,hash:n}=J();return N(Y,{to:`${Gl(e,t)}${n}`,replace:!0})}a();var ql={info:{bg:`bg-info/10`,border:`border-info/30`,icon:He},warning:{bg:`bg-warning/10`,border:`border-warning/30`,icon:oe},critical:{bg:`bg-danger/10`,border:`border-danger/30`,icon:Ve}};function Jl({toast:e,onDismiss:t}){let n=ql[e.severity]??ql.info,r=n.icon;return s(()=>{let n=e.duration??5e3;if(n<=0)return;let r=setTimeout(()=>t(e.id),n);return()=>clearTimeout(r)},[e.id,e.duration,t]),y(`div`,{className:`flex items-start gap-3 px-4 py-3 rounded-lg border ${n.border} ${n.bg} shadow-lg backdrop-blur-sm animate-in slide-in-from-right-5 fade-in duration-200`,children:[N(r,{className:`h-4 w-4 shrink-0 mt-0.5 text-foreground-subtle`}),y(`div`,{className:`flex-1 min-w-0`,children:[N(`div`,{className:`text-xs font-semibold text-foreground`,children:e.title}),N(`div`,{className:`text-[11px] text-foreground-subtle mt-0.5`,children:e.message})]}),N(`button`,{type:`button`,onClick:()=>t(e.id),className:`shrink-0 p-0.5 rounded hover:bg-surface-hover transition-colors`,children:N(De,{className:`h-3.5 w-3.5 text-foreground-subtle`})})]})}function Yl(){let[e,t]=f([]),n=p(e=>{t(t=>t.filter(t=>t.id!==e))},[]);return It(void 0,{onData:e=>{let n=e,r=`toast-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;t(e=>[...e,{...n,id:r,timestamp:Date.now()}])}}),e.length===0?null:N(`div`,{className:`fixed bottom-[calc(env(safe-area-inset-bottom)+1rem)] right-[calc(env(safe-area-inset-right)+1rem)] z-50 flex flex-col gap-2 max-w-sm w-full pointer-events-none`,children:e.map(e=>N(`div`,{className:`pointer-events-auto`,children:N(Jl,{toast:e,onDismiss:n})},e.id))})}function Xl(e){return(t,n,r)=>e(t,{...typeof n==`string`?{defaultValue:n}:{defaultValue_one:n.one,defaultValue_other:n.other},...r})}var Zl=(e,t,n)=>Xl(B.t.bind(B))(e,t,n);a();function Ql({children:e}){let{t}=V();return N(Oe,{t:d(()=>Xl(t),[t]),children:e})}a();function $l(e){if(typeof e!=`object`||!e)return;let{data:t}=e;return t?.code}function eu(e,t){let n=$l(e);return n===`UNAUTHORIZED`||n===`FORBIDDEN`?!0:/UNAUTHORIZED|FORBIDDEN/.test(t)}function tu(e,t,n){let[r,i]=f(!1),[a,o]=f(null);return s(()=>{if(i(!1),o(null),!t){i(!0);return}let r=!1;return e.init().catch(()=>void 0),e.awaitConnected().then(()=>{r||i(!0)},e=>{if(r)return;let t=e instanceof Error?e.message:String(e);if(eu(e,t)){n();return}o(t),i(!0)}),()=>{r=!0}},[e,t,n]),{bootReady:r,bootError:a}}a();var nu=3e4;function ru(e){let t=j(e);t.current=e,s(()=>{let e=null,n=()=>{if(document.visibilityState===`hidden`){e=Date.now();return}if(document.visibilityState===`visible`&&e!==null){let n=Date.now()-e;e=null,n>=nu&&t.current()}},r=()=>{t.current()},i=e=>{e.persisted&&t.current()};return document.addEventListener(`visibilitychange`,n),window.addEventListener(`online`,r),window.addEventListener(`pageshow`,i),()=>{document.removeEventListener(`visibilitychange`,n),window.removeEventListener(`online`,r),window.removeEventListener(`pageshow`,i)}},[])}a();function iu(e){let t=new Set,n=new Set,r=e=>e.page.remoteName.includes(e.addonId.replace(/[^a-zA-Z0-9]+/g,`_`)),i=[...e.filter(r),...e.filter(e=>!r(e))],a=[];for(let e of i){let r=`${e.addonId}::${e.page.id}`;t.has(r)||n.has(e.page.path)||(t.add(r),n.add(e.page.path),a.push({id:e.page.id,addonId:e.addonId,label:e.page.label,icon:e.page.icon,path:e.page.path,remoteName:e.page.remoteName,bundle:e.page.bundle,bundleUrl:e.bundleUrl,...e.page.section===void 0?{}:{section:e.page.section},...e.page.sectionLabel===void 0?{}:{sectionLabel:e.page.sectionLabel}}))}return a}var au=new Map,ou=new Map,su=new Set;function cu(e){return!e||typeof e!=`object`?!1:typeof e.default==`function`}async function lu(e,t){let i=au.get(e);if(i)return i;let a=ou.get(e);if(a)return a;su.has(e)||(Vt(),r([{name:e,entry:z(t),type:`module`}],{force:!1}),su.add(e));let o=n(`${e}/page`).then(n=>{if(!cu(n))throw Error(`Addon page remote ${e} (${t}) does not expose a default React component on './page'`);return au.set(e,n.default),ou.delete(e),n.default}).catch(t=>{throw ou.delete(e),t});return ou.set(e,o),o}function uu(){let{t:e}=V(),{pagePath:t}=Bi(),n=Ii(),r=Be(),{data:i}=vn(void 0),a=d(()=>i?iu(i):void 0,[i]),o=a?.find(e=>e.path===`/addon/${t}`),c=o?.remoteName,l=o?.bundleUrl,[u,p]=f(null),[m,h]=f(null);return s(()=>{if(!c||!l)return;h(null);let e=au.get(c);if(e){p(()=>e);return}p(null);let t=!1;return lu(c,l).then(e=>{t||p(()=>e)}).catch(e=>{t||h(`Failed to load addon page: ${e instanceof Error?e.message:String(e)}`)}),()=>{t=!0}},[c,l]),a?o?m?N(`div`,{className:`flex items-center justify-center h-full text-danger text-sm`,children:m}):u?N(u,{trpc:r.trpcClient,theme:{isDark:document.documentElement.classList.contains(`dark`)},navigate:e=>{n(e.startsWith(`/`)?e:`/${e}`)}}):N(`div`,{className:`flex items-center justify-center h-full`,children:N(`div`,{className:`animate-spin h-6 w-6 border-2 border-primary border-t-transparent rounded-full`})}):N(`div`,{className:`flex items-center justify-center h-full text-foreground-subtle`,children:e(`layouts.addonPageLoader.addonPageNotFound`,`Addon page not found`)}):N(`div`,{className:`flex items-center justify-center h-full`,children:N(`div`,{className:`animate-spin h-6 w-6 border-2 border-primary border-t-transparent rounded-full`})})}nr();var du=/\p{Mn}/gu;function fu(e){return e.normalize(`NFD`).replace(du,``).toLowerCase().trim()}var pu=[`device`,`page`,`integration`],mu=0,hu=1,gu=2,_u=3,vu=4,yu=5,bu=6,xu=7;function Su(e,t,n,r){return n.includes(r)?mu:e===r?hu:e.startsWith(r)?gu:e.split(/\s+/).some(e=>e.startsWith(r))?_u:e.includes(r)?vu:t.some(e=>e.includes(r))?yu:null}function Cu(e,t){let n=0;for(let r=0;r<e.length&&n<t.length;r++)e[r]===t[n]&&n++;return n===t.length}function wu(e){return e<4?0:e<=7?1:e<=12?2:3}function Tu(e,t,n){if(e===t)return 0;if(n<=0||Math.abs(e.length-t.length)>n)return null;let r=t.length,i=Array(r+1).fill(0),a=Array.from({length:r+1},(e,t)=>t),o=Array(r+1).fill(0);for(let s=1;s<=e.length;s++){o[0]=s;let c=s,l=e[s-1];for(let n=1;n<=r;n++){let r=t[n-1],u=l===r?0:1,d=Math.min((a[n]??1/0)+1,o[n-1]+1,(a[n-1]??1/0)+u);s>1&&n>1&&l===t[n-2]&&e[s-2]===r&&(d=Math.min(d,(i[n-2]??1/0)+1)),o[n]=d,d<c&&(c=d)}if(c>n)return null;let u=i;i=a,a=o,o=u}let s=a[r]??1/0;return s<=n?s:null}function Eu(e,t){if(Cu(e,t))return bu;let n=wu(t.length);if(n>0){for(let r of e.split(/\s+/))if(Tu(r,t,n)!==null)return xu}return null}function Du(e,t,n=200){let r=fu(t);if(r.length===0)return{groups:[],totalMatched:0,truncated:!1};let i=new Map;for(let t of e){let e=fu(t.label),n=Su(e,(t.keywords??[]).map(fu),(t.identifiers??[]).map(fu),r)??Eu(e,r);if(n===null)continue;let a=i.get(t.domain)??[];a.push({item:t,rank:n}),i.set(t.domain,a)}let a=0;for(let e of i.values())a+=e.length;let o=n,s=[];for(let e of pu){let t=i.get(e);if(!t||t.length===0||o<=0)continue;t.sort((e,t)=>e.rank-t.rank||e.item.label.localeCompare(t.item.label));let n=t.slice(0,o).map(e=>e.item);o-=n.length,s.push({domain:e,items:n})}return{groups:s,totalMatched:a,truncated:a>n}}function Ou(e){return e.flatMap(e=>e.items)}function ku(e){let t=new Map;for(let n of e)t.set(n.id,n.name);let n=new Map;for(let r of e){let e=r.parentDeviceId;e!==null&&e!==r.id&&n.set(r.id,t.get(e)??`#${String(e)}`)}return n}function Au(e,t){return e.filter(e=>!e.adminOnly||t)}function ju({t:e,isAdmin:t}){let n=Au([{label:e(`nav.devices`,`Devices`),icon:Ye,path:`/devices`},{label:e(`nav.integrations`),icon:I,path:`/integrations`},{label:e(`nav.build`,`Build-your-self`),icon:Qe,path:`/build`,adminOnly:!0},{label:e(`nav.locations`,`Locations`),icon:ke,path:`/locations`,adminOnly:!0},{label:e(`nav.viewer`,`Viewer`),icon:it,path:`/live`}],t),r=Au([{label:e(`nav.library`,`Library`),icon:dt,path:`/library`,adminOnly:!0,keywords:[`People`,`Vehicles`,`Events`,`Scenes`,`plates`,`faces`,`detection-intelligence`]},{label:e(`nav.recordings`,`Recordings`),icon:ae,path:`/recordings`,adminOnly:!0}],t),i=Au([{label:e(`nav.nodes`,`Nodes`),icon:de,path:`/system/nodes`,adminOnly:!0},{label:e(`nav.pipeline`,`Pipeline`),icon:at,path:`/system/pipeline`},{label:e(`system.addons`),icon:Xe,path:`/system/addons`,adminOnly:!0},{label:e(`system.ai`,`AI`),icon:he,path:`/system/ai`,adminOnly:!0}],t),a=Au([{label:e(`system.identity`,`Identity & Access`),icon:Re,path:`/system/identity`,adminOnly:!0},{label:e(`system.network`,`Network`),icon:tt,path:`/system/network`,adminOnly:!0},{label:e(`system.integrations`,`Connectivity`),icon:I,path:`/system/integrations`,adminOnly:!0},{label:e(`system.data`,`Data`),icon:re,path:`/system/data`,adminOnly:!0},{label:e(`system.notifications`,`Notifications`),icon:se,path:`/system/notifications`,adminOnly:!0},{label:e(`system.calendars`,`Calendars`),icon:ot,path:`/system/calendars`,adminOnly:!0},{label:e(`system.systemNav`,`System`),icon:Le,path:Ul,adminOnly:!0},{label:e(`system.logs`,`Logs`),icon:Ae,path:`/system/logs`,adminOnly:!0},{label:e(`system.terminal`,`Terminal`),icon:st,path:`/system/terminal`,adminOnly:!0}],t);return[{key:`top`,label:null,items:n},{key:`detection`,label:e(`nav.detectionSection`,`Detection`),items:r},{key:`cluster`,label:e(`nav.clusterSection`,`Cluster`),items:i},{key:`administration`,label:e(`system.title`,`Administration`),items:a}]}var Mu={gauge:me,puzzle:Xe,bot:Ie,cpu:ne,terminal:st,box:R,boxes:R,monitor:it,wrench:je,activity:le,plug:I,"graduation-cap":Ze};function Nu(e){return Mu[e]??Xe}function Pu(e,t){for(let n of ju(t))for(let t of n.items)if(t.path===e)return{icon:t.icon,title:t.label,path:t.path};return null}var Fu=` · `;function Iu(e,t,n,r){let i=[`#${t}`];return r!==void 0&&i.push(r),e.stableId.length>0&&e.stableId!==n&&i.push(e.stableId),i.push(e.type),e.disabled&&i.push(`disabled`),i.join(Fu)}function Lu(e,t=null){let n=ku(e),r=qn(t);return e.map(e=>{let t=String(e.id),i=e.name||e.stableId||`#${t}`,a=n.get(e.id),o=r(e),s=o.kind===`resolved`?o.integration.name:``;return{key:`device:${t}`,domain:`device`,label:i,subtitle:Iu(e,t,i,a),identifiers:[t,`#${t}`],keywords:[e.stableId,e.addonId,e.location??``,a??``,s].filter(e=>e.length>0),path:`/devices/${t}`,icon:yn(e.type).icon}})}function Ru(e){return e.map(e=>({key:`integration:${e.id}`,domain:`integration`,label:e.name||e.addonId,subtitle:e.enabled?e.addonId:B.t(`helpers.searchItems.disabled`,{addonId:e.addonId}),keywords:[e.addonId,e.processState],path:`/integrations/${e.id}`}))}function zu(e,t,n){let r=e.section?.trim();return r?t[r]??e.sectionLabel?.trim()??r:n}function Bu(e,t,n){let r=e.flatMap(e=>e.items.map(t=>({key:`page:${t.path}`,domain:`page`,label:t.label,subtitle:e.label??void 0,path:t.path,icon:t.icon,...t.keywords!==void 0&&t.keywords.length>0?{keywords:t.keywords}:{}}))),i={detection:n.detection,cluster:n.cluster,administration:n.administration},a=t.map(e=>({key:`page:addon:${e.addonId}:${e.id}`,domain:`page`,label:e.label,subtitle:zu(e,i,n.ungrouped),keywords:[e.addonId],path:e.path,icon:Nu(e.icon)}));return[...r,...a]}a();var Vu={device:{labelKey:`search.resultsList.devices`,icon:Ye},page:{labelKey:`search.resultsList.pages`,icon:nt},integration:{labelKey:`search.resultsList.integrations`,icon:I}};function Hu({groups:e,activeKey:t,query:n,totalMatched:r,truncated:i,onSelect:a,onHover:o}){let{t:c}=V(),l=j(null);if(s(()=>{t&&(l.current?.querySelector(`[data-key="${CSS.escape(t)}"]`))?.scrollIntoView({block:`nearest`})},[t]),n.trim().length===0)return null;if(e.length===0)return N(`div`,{className:`px-3 py-4 text-center text-[12px] text-foreground-subtle`,children:c(`search.resultsList.noResults`,{query:n})});let u=e.reduce((e,t)=>e+t.items.length,0);return y(E,{children:[N(`div`,{ref:l,role:`listbox`,className:`max-h-[60vh] overflow-y-auto py-1`,children:e.map(e=>{let n=Vu[e.domain],r=n.icon;return y(`div`,{className:`px-1 py-1`,children:[y(`div`,{className:`sticky top-0 z-10 flex items-center gap-1.5 bg-surface px-2 py-1 text-[10px] font-semibold uppercase tracking-widest text-foreground-subtle/60`,children:[N(r,{className:`h-3 w-3`}),c(n.labelKey)]}),e.items.map(e=>{let r=e.icon??n.icon,i=e.key===t;return y(`button`,{type:`button`,role:`option`,"aria-selected":i,"data-key":e.key,onMouseEnter:()=>o(e),onClick:()=>a(e),className:`flex w-full items-center gap-2.5 rounded-md px-2 py-1.5 text-left text-[12px] transition-colors ${i?`bg-primary/12 text-primary`:`text-foreground hover:bg-surface-hover`}`,children:[N(r,{className:`h-3.5 w-3.5 shrink-0 ${i?`text-primary`:`text-foreground-subtle`}`}),y(`span`,{className:`flex-1 min-w-0`,children:[N(`span`,{className:`block truncate font-medium`,children:e.label}),e.subtitle&&N(`span`,{className:`block truncate text-[10px] text-foreground-subtle`,children:e.subtitle})]})]},e.key)})]},e.domain)})}),i&&N(`div`,{className:`border-t border-border px-3 py-1.5 text-center text-[10px] text-foreground-subtle`,children:c(`search.truncatedResults`,`Showing first {{shown}} of {{total}} — refine your search.`,{shown:u,total:r})})]})}a();function Uu({navSections:e,addonPages:t,compact:n,onNavigated:r}){let{t:i}=V(),a=Ii(),o=j(null),c=j(null),l=j(null),[u,m]=f(null),[h,g]=f(``),[_,v]=f(0),[b,x]=f(!1),{data:S}=Sn({projection:`slim`}),{data:C}=Nn(void 0),w=d(()=>{let n={detection:i(`nav.detectionSection`,`Detection`),cluster:i(`nav.clusterSection`,`Cluster`),administration:i(`system.title`,`Administration`),ungrouped:i(`nav.addonPages`,`Addon Pages`)};return[...Lu(S??[],C??null),...Bu(e,t,n),...Ru(C??[])]},[S,C,e,t,i]),{groups:T,totalMatched:E,truncated:D}=d(()=>Du(w,h),[w,h]),O=d(()=>Ou(T),[T]);s(()=>{v(0)},[h,w]),s(()=>{b&&o.current?.focus()},[b]);let k=p(()=>{x(!1),g(``),v(0)},[]),A=p(e=>{a(e.path),k(),o.current?.blur(),r?.()},[a,k,r]);s(()=>{function e(e){(e.metaKey||e.ctrlKey)&&e.key.toLowerCase()===`k`&&(e.preventDefault(),x(!0))}return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[]),s(()=>{if(!b)return;function e(e){if(!(e.target instanceof Node))return;let t=c.current?.contains(e.target)===!0,n=l.current?.contains(e.target)===!0;!t&&!n&&x(!1)}return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[b]);let M=b&&h.trim().length>0;s(()=>{if(!M){m(null);return}let e=()=>{let e=o.current?.getBoundingClientRect();e&&m({left:e.left,top:e.bottom+4,width:e.width})};return e(),window.addEventListener(`resize`,e),window.addEventListener(`scroll`,e,!0),()=>{window.removeEventListener(`resize`,e),window.removeEventListener(`scroll`,e,!0)}},[M]);let P=O[_]?.key??null,F=i(`search.placeholder`,`Search devices, pages, integrations…`),I=y(`div`,{className:`relative`,children:[N(Ee,{className:`pointer-events-none absolute left-2 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-foreground-subtle`}),N(`input`,{ref:o,type:`text`,value:h,placeholder:F,"aria-label":F,role:`combobox`,"aria-expanded":b&&h.trim().length>0,"aria-controls":`global-search-results`,onChange:e=>{g(e.target.value),x(!0)},onFocus:()=>x(!0),onKeyDown:e=>{if(e.key===`ArrowDown`)e.preventDefault(),O.length>0&&v(e=>(e+1)%O.length);else if(e.key===`ArrowUp`)e.preventDefault(),O.length>0&&v(e=>(e-1+O.length)%O.length);else if(e.key===`Enter`){e.preventDefault();let t=O[_];t&&A(t)}else e.key===`Escape`&&(e.preventDefault(),k(),o.current?.blur())},className:`w-full rounded-md border border-border bg-surface py-1.5 pl-7 pr-6 text-[12px] text-foreground placeholder:text-foreground-subtle/70 focus:outline-none focus:ring-1 focus:ring-primary/50`}),h.length>0&&N(`button`,{type:`button`,"aria-label":i(`search.globalSearch.clearSearch`,`Clear search`),onClick:()=>{g(``),o.current?.focus()},className:`absolute right-1.5 top-1/2 -translate-y-1/2 text-foreground-subtle hover:text-foreground`,children:N(De,{className:`h-3 w-3`})}),M&&u!==null&&rr(N(`div`,{ref:l,id:`global-search-results`,className:`fixed z-50 w-max max-w-[26rem] rounded-lg border border-border bg-surface shadow-xl`,style:{left:u.left,top:u.top,minWidth:u.width},children:N(Hu,{groups:T,activeKey:P,query:h,totalMatched:E,truncated:D,onSelect:A,onHover:e=>{let t=O.findIndex(t=>t.key===e.key);t>=0&&v(t)}})}),document.body)]});return n?N(`div`,{ref:c,className:`px-1.5 pb-1.5`,children:b?N(`div`,{className:`fixed z-50 w-max min-w-72 max-w-[26rem]`,style:{left:`calc(env(safe-area-inset-left) + 3.5rem)`,top:`calc(env(safe-area-inset-top) + 3.5rem)`},children:I}):N(`button`,{type:`button`,onClick:()=>x(!0),"aria-label":F,title:F,className:`flex w-full items-center justify-center rounded-md px-0 py-2 text-foreground-subtle hover:bg-surface-hover hover:text-foreground transition-colors`,children:N(Ee,{className:`h-3.5 w-3.5 shrink-0`})})}):N(`div`,{ref:c,className:`px-2 pb-2`,children:I})}var Wu=/^(\d{1,3}\.){3}\d{1,3}$/;function Gu(e){let t=e.startsWith(`[`)&&e.endsWith(`]`)?e.slice(1,-1):e;return!!(Wu.test(t)||t.includes(`:`))}function Ku(e,t){return!t||Gu(e)?!1:e===t||e.endsWith(`.${t}`)}a();var qu=`auth-webauthn/passkey-enrollment`,Ju=`camstack_passkey_prompt_dismissed:`,Yu=720*60*60*1e3;function Xu(e){try{let t=localStorage.getItem(`${Ju}${e}`);if(!t)return!1;let n=Number(t);return Number.isFinite(n)?Date.now()-n<Yu:!1}catch{return!1}}function Zu(e){try{localStorage.setItem(`${Ju}${e}`,String(Date.now()))}catch{}}function Qu(){let{user:e}=Tc(),{t}=V(),n=Be(),r=cn(qu),[i,a]=f(!1),[o,s]=f(!1),c=d(()=>e?Xu(e.id):!0,[e]),l=tr.auth.listLoginMethods.useQuery().data?.find(e=>e.kind===`passkey`),u=l!==void 0&&Ku(window.location.hostname,l.rpId),m=e!==null&&u&&r!=null&&!c,h=T({queryKey:[`auth`,`listOwnPasskeys`],queryFn:()=>n.listOwnPasskeys(),enabled:m,staleTime:6e4}),g=p(()=>{e&&Zu(e.id),a(!0),s(!1)},[e]),_=p(()=>{s(!1),h.refetch()},[h]);return!m||i||h.data===void 0||h.data.length>0?null:y(`div`,{className:`shrink-0 border-b border-primary/20 bg-primary/5`,children:[y(`div`,{className:`flex items-center gap-2.5 px-3 py-2 text-xs text-foreground`,children:[N(pt,{className:`h-4 w-4 text-primary shrink-0`}),N(`span`,{className:`flex-1 min-w-0`,children:t(`passkeyPrompt.message`,`Save a passkey for faster sign-in?`)}),N(`button`,{onClick:()=>s(e=>!e),className:`rounded bg-primary px-2.5 py-1 text-[11px] font-semibold text-primary-foreground hover:bg-primary/90`,children:t(`passkeyPrompt.enrollNow`,`Enroll now`)}),N(`button`,{onClick:g,className:`inline-flex items-center gap-1 rounded border border-border px-2 py-1 text-[11px] text-foreground-subtle hover:text-foreground hover:bg-surface-hover`,children:t(`passkeyPrompt.notNow`,`Not now`)}),N(`button`,{onClick:g,"aria-label":t(`passkeyPrompt.notNow`,`Not now`),className:`p-1 rounded text-foreground-subtle hover:text-foreground`,children:N(De,{className:`h-3.5 w-3.5`})})]}),o&&N(`div`,{className:`px-3 pb-3`,children:y(`div`,{className:`max-w-xl`,children:[N(Zn,{widgetId:qu,host:`dashboard`}),N(`div`,{className:`mt-2 flex justify-end`,children:N(`button`,{onClick:_,className:`rounded border border-border px-2.5 py-1 text-[11px] text-foreground-subtle hover:text-foreground hover:bg-surface-hover`,children:t(`common.close`,`Close`)})})]})})]})}var $u=6e4;function ed(){let e=Mn(void 0,{staleTime:$u});return{info:e.data?.serverName??null,isLoading:e.isLoading}}a();var td=`system-config`,nd=`hub`,rd=`camstack_server_name_prompt_dismissed`;function id(){try{return sessionStorage.getItem(rd)===`1`}catch{return!1}}function ad(){try{sessionStorage.setItem(rd,`1`)}catch{}}function od(e){return e.isAdmin&&e.info!==null&&e.info.isDefault&&!e.dismissed}function sd(){let{user:e}=Tc(),{info:t}=ed(),[n,r]=f(id);return od({isAdmin:e?.isAdmin===!0,info:t,dismissed:n})?N(cd,{suggestion:t?.name??``,onLater:()=>{ad(),r(!0)}}):null}function cd({suggestion:e,onLater:t}){let{t:n}=V(),r=A(),i=dn(),[a,o]=f(e),[c,l]=f(null),u=j(null);s(()=>u.current?.focus(),[]);let d=p(async()=>{let e=bt.safeParse(a);if(!e.success){l(e.error.issues[0]?.message??n(`serverName.invalid`,`Not a valid name`));return}l(null);try{await i.mutateAsync({addonId:td,nodeId:nd,patch:{name:e.data}}),await r.invalidateQueries({queryKey:[[`system`,`info`]]}),await r.invalidateQueries({queryKey:[[`addonSettings`]]})}catch(e){l(e instanceof Error&&e.message.length>0?e.message:`Could not save`)}},[r,i,n,a]);return N(nn,{open:!0,onOpenChange:e=>!e&&t(),children:N(Pt,{children:y(`form`,{onSubmit:e=>{e.preventDefault(),i.isPending||d()},children:[y(kt,{children:[N(Tn,{children:n(`serverName.title`,`Name this server`)}),N(Zt,{children:n(`serverName.description`,`Pick a name for this hub. It shows in the admin UI and on the apps’ sign-in screen. You can change it later in System settings.`)})]}),N(Lt,{children:N(Bt,{label:n(`serverName.label`,`Server name`),...c===null?{}:{error:c},children:N(Tt,{ref:u,value:a,maxLength:48,onChange:e=>o(e.target.value),state:c===null?`default`:`error`,"aria-label":n(`serverName.label`,`Server name`)})})}),y(On,{children:[N(Mt,{type:`button`,variant:`ghost`,onClick:t,disabled:i.isPending,children:n(`serverName.later`,`Later`)}),y(Mt,{type:`submit`,disabled:i.isPending||a.trim().length===0,children:[i.isPending&&N(Se,{className:`h-4 w-4 animate-spin`}),n(`common.save`,`Save`)]})]})]})})})}a(),nr();var ld={info:He,success:Te,warning:oe,error:Ve},ud={info:`text-info`,success:`text-success`,warning:`text-warning`,error:`text-danger`},dd={active:`border-l-info`,"in-progress":`border-l-warning`,completed:`border-l-success`,failed:`border-l-danger`,dismissed:`border-l-foreground-subtle/30`};function fd(e){let t=Math.floor((Date.now()-e)/1e3);if(t<60)return B.t(`helpers.relativeTime.justNow`);let n=Math.floor(t/60);if(n<60)return B.t(`helpers.relativeTime.minutesAgo`,{count:n});let r=Math.floor(n/60);if(r<24)return B.t(`helpers.relativeTime.hoursAgo`,{count:r});let i=Math.floor(r/24);return B.t(`helpers.relativeTime.daysAgo`,{count:i})}function pd(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function md(e){return typeof e==`string`&&e.length>0?e:void 0}function hd(e){if(pd(e.metadata)){let t=md(e.metadata.nodeId)??md(e.metadata.agentId);if(t!==void 0)return t}let t=e.source;if(t!==void 0&&!(t.type!==`node`&&t.type!==`agent`))return md(t.id)}function gd({alert:e,onMarkRead:t,onDismiss:n}){let{t:r}=V(),i=e.severity in ld?e.severity:`info`,a=e.status in dd?e.status:`active`,o=ld[i],s=ud[i],c=dd[a],{nodes:l}=In(),u=hd(e),d=u===void 0?void 0:l.find(e=>e.id===u),f=u===void 0?void 0:d?.name??u;return y(`div`,{className:`flex items-start gap-2.5 px-3 py-2.5 border-l-2 ${c} ${e.read?`opacity-60`:``} hover:bg-surface-hover transition-colors`,children:[N(o,{className:`h-3.5 w-3.5 shrink-0 mt-0.5 ${s}`}),y(`div`,{className:`flex-1 min-w-0`,children:[y(`div`,{className:`flex items-center gap-1.5`,children:[N(`span`,{className:`text-[11px] font-semibold ${e.read?`text-foreground-subtle`:`text-foreground`}`,children:e.title}),!e.read&&N(`span`,{className:`h-1.5 w-1.5 rounded-full bg-primary shrink-0`})]}),f!==void 0&&N(`div`,{className:`text-foreground-subtle text-[10px] mt-0.5 truncate`,children:f}),N(`div`,{className:`text-[10px] text-foreground-subtle mt-0.5 line-clamp-2`,children:e.message}),e.status===`in-progress`&&e.progress!==void 0&&y(`div`,{className:`mt-1.5 flex items-center gap-2`,children:[N(`div`,{className:`flex-1 h-1 bg-surface-hover rounded-full overflow-hidden`,children:N(`div`,{className:`h-full bg-primary rounded-full transition-all duration-300`,style:{width:`${String(Math.min(100,Math.max(0,e.progress)))}%`}})}),y(`span`,{className:`text-[9px] text-foreground-subtle font-mono shrink-0`,children:[String(Math.round(e.progress)),`%`]})]}),N(`div`,{className:`text-[9px] text-foreground-subtle/60 mt-1`,children:fd(e.updatedAt)})]}),y(`div`,{className:`flex items-center gap-0.5 shrink-0`,children:[!e.read&&N(`button`,{type:`button`,onClick:n=>{n.stopPropagation(),t(e.id)},className:`p-1 rounded hover:bg-surface-hover transition-colors`,title:r(`ui.alertBell.markAsRead`,`Mark as read`),children:N(Ce,{className:`h-3 w-3 text-foreground-subtle`})}),e.status!==`in-progress`&&N(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),n(e.id)},className:`p-1 rounded hover:bg-surface-hover transition-colors`,title:r(`ui.alertBell.dismiss`,`Dismiss`),children:N(De,{className:`h-3 w-3 text-foreground-subtle`})})]})]})}function _d({variant:e=`icon`,compact:t=!1}={}){let{t:n}=V(),[r,i]=f(!1),[a,o]=f(!1),c=j(null),l=j(null),u=A(),{data:d=0}=an(void 0,{refetchInterval:3e4}),{data:m=[],isLoading:h}=ln({limit:50},{enabled:r}),g=a?m:m.filter(e=>!e.read),_=m.filter(e=>e.read).length,v=()=>{u.invalidateQueries({queryKey:[[`alerts`]]})},b=Yt({onSuccess:v}),x=Ht({onSuccess:v}),S=Gt({onSuccess:v});Xn(`alert.created`,()=>{u.invalidateQueries({queryKey:[[`alerts`]]})}),Xn(`alert.updated`,()=>{u.invalidateQueries({queryKey:[[`alerts`]]})}),s(()=>{if(!r)return;let e=e=>{let t=e.target;c.current&&!c.current.contains(t)&&l.current&&!l.current.contains(t)&&i(!1)};return document.addEventListener(`mousedown`,e),document.addEventListener(`touchstart`,e),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`touchstart`,e)}},[r]);let C=p(e=>{b.mutate({alertId:e})},[b]),w=p(e=>{e&&S.mutate({alertId:e})},[S]),T=p(()=>{x.mutate(void 0),i(!1)},[x]),E=g.filter(e=>e.status===`in-progress`),D=g.filter(e=>e.status!==`in-progress`),[O,k]=f({}),M=p(()=>{let e=l.current;if(!e)return;let t=e.getBoundingClientRect(),n=window.innerWidth,r=window.innerHeight,i=Math.min(320,n-16),a=t.left;a+i>n-8&&(a=n-8-i),a<8&&(a=8);let o=r-t.bottom,s=t.top,c={position:`fixed`,left:a,width:i,zIndex:9999};o>=s?(c.top=t.bottom+4,c.maxHeight=Math.max(160,o-8-4)):(c.bottom=r-t.top+4,c.maxHeight=Math.max(160,s-8-4)),k(c)},[]);return s(()=>{if(!r)return;M();let e=()=>M();return window.addEventListener(`resize`,e),window.addEventListener(`scroll`,e,!0),()=>{window.removeEventListener(`resize`,e),window.removeEventListener(`scroll`,e,!0)}},[r,M]),y(`div`,{children:[e===`sidebar`?y(`button`,{ref:l,type:`button`,onClick:()=>i(!r),className:`flex w-full items-center gap-2.5 rounded-md ${t?`justify-center px-0 py-2`:`px-2.5 py-1.5`} text-[12px] text-foreground-subtle hover:bg-surface-hover hover:text-foreground transition-colors`,title:t?d>0?n(`ui.alertBell.alertsUnread`,{count:d}):n(`ui.alertBell.alerts`):void 0,children:[y(`span`,{className:`relative inline-flex shrink-0`,children:[N(Ae,{className:`h-3.5 w-3.5`}),t&&d>0&&N(`span`,{className:`absolute -top-1 -right-1 h-2 w-2 rounded-full bg-primary`})]}),!t&&N(`span`,{className:`flex-1 text-left`,children:n(`ui.alertBell.alerts`,`Alerts`)}),!t&&d>0&&N(`span`,{className:`flex items-center justify-center h-4 min-w-4 px-1 rounded-full bg-primary text-primary-foreground text-[9px] font-bold leading-none`,children:d>99?`99+`:String(d)})]}):y(`button`,{ref:l,type:`button`,onClick:()=>i(!r),className:`relative p-1.5 rounded-md hover:bg-surface-hover text-foreground-subtle hover:text-foreground transition-colors`,"aria-label":n(`ui.alertBell.alerts`,`Alerts`),children:[N(Ae,{className:`h-4.5 w-4.5`}),d>0&&N(`span`,{className:`absolute -top-0.5 -right-0.5 flex items-center justify-center h-4 min-w-4 px-0.5 rounded-full bg-primary text-primary-foreground text-[9px] font-bold leading-none`,children:d>99?`99+`:String(d)})]}),r&&rr(y(`div`,{ref:c,style:O,className:`bg-surface border border-border rounded-lg shadow-xl flex flex-col overflow-hidden`,children:[y(`div`,{className:`flex items-center justify-between px-3 py-2 border-b border-border shrink-0`,children:[N(`span`,{className:`text-[12px] font-semibold text-foreground`,children:n(`ui.alertBell.alerts`,`Alerts`)}),y(`div`,{className:`flex items-center gap-2`,children:[_>0&&y(`label`,{className:`flex items-center gap-1 text-[10px] text-foreground-subtle cursor-pointer select-none`,children:[N(`input`,{type:`checkbox`,checked:a,onChange:e=>o(e.target.checked),className:`h-3 w-3 rounded border-border accent-primary cursor-pointer`}),n(`ui.alertBell.showRead`,`Show read`)]}),d>0&&y(`button`,{type:`button`,onClick:T,className:`flex items-center gap-1 text-[10px] text-primary hover:text-primary/80 transition-colors`,children:[N(rt,{className:`h-3 w-3`}),n(`ui.alertBell.markAllRead`,`Mark all read`)]})]})]}),y(`div`,{className:`flex-1 overflow-y-auto`,children:[h&&N(`div`,{className:`flex items-center justify-center py-8`,children:N(Se,{className:`h-4 w-4 animate-spin text-foreground-subtle`})}),!h&&g.length===0&&y(`div`,{className:`flex flex-col items-center justify-center py-8 text-foreground-subtle`,children:[N(Ae,{className:`h-6 w-6 mb-2 opacity-40`}),N(`span`,{className:`text-[11px]`,children:m.length>0?n(`ui.alertBell.noUnreadAlerts`,`No unread alerts`):n(`ui.alertBell.noAlerts`,`No alerts`)}),m.length>0&&!a&&N(`button`,{type:`button`,onClick:()=>o(!0),className:`text-[10px] text-primary mt-1 hover:underline`,children:n(`ui.alertBell.showRead`,{count:_})})]}),E.length>0&&y(`div`,{className:`border-b border-border`,children:[N(`div`,{className:`px-3 py-1.5 bg-surface-hover/50`,children:N(`span`,{className:`text-[9px] font-semibold uppercase tracking-widest text-foreground-subtle/60`,children:n(`ui.alertBell.inProgress`,`In Progress`)})}),E.map(e=>N(gd,{alert:e,onMarkRead:C,onDismiss:w},e.id))]}),D.map(e=>N(gd,{alert:e,onMarkRead:C,onDismiss:w},e.id))]})]}),document.body)]})}a();function vd(){let e=Es();return C(e.subscribe,e.getSnapshot,e.getSnapshot)}var yd=[`detection`,`cluster`,`administration`];function bd(e){return yd.includes(e)}function xd(e){let t=new Map,n=new Map,r=[];for(let i of e){let e=i.section?.trim();if(e===void 0||e.length===0){r.push(i);continue}if(bd(e)){let n=t.get(e)??[];n.push(i),t.set(e,n);continue}let a=n.get(e);a?a.pages.push(i):n.set(e,{label:i.sectionLabel?.trim()||e,pages:[i]})}return{known:t,custom:[...n.entries()].map(([e,t])=>({id:e,label:t.label,pages:t.pages})),ungrouped:r}}var Sd=`camstack:last-path`,Cd=512,wd=[`/login`,`/change-password`,`/access-denied`,`/logout`];function Td(e){return!e.startsWith(`/`)||e.startsWith(`//`)||e.length>Cd?!1:!wd.some(t=>e===t||e.startsWith(t+`/`))}function Ed(e){if(!(typeof window>`u`)&&Td(e))try{window.localStorage.setItem(Sd,e)}catch{}}function Dd(){if(typeof window>`u`)return null;try{let e=window.localStorage.getItem(Sd);return e===null?null:Td(e)?e:null}catch{return null}}a();var Od=g(!0);function kd(e){return e===`/addon`||e.startsWith(`/addon/`)}function Ad(e,t,n){let r=[...e.filter(e=>e!==t),t];return r.length<=n?r:r.slice(r.length-n)}function jd({maxCached:e=6}){let t=zi(),n=J(),r=Ni(),i=v(q),a=n.pathname,o=kd(a),s=j(new Map),c=j([]);if(o){s.current.set(a,{key:a,outlet:t,location:n,navigationType:r,routeContext:i});let o=Ad(c.current,a,e),l=new Set(o);for(let e of s.current.keys())l.has(e)||s.current.delete(e);c.current=o}return y(E,{children:[c.current.map(e=>{let t=s.current.get(e);if(t?.outlet==null)return null;let n=o&&e===a;return N(`div`,{className:n?`h-full min-h-0`:void 0,style:n?void 0:{display:`none`},hidden:!n,"aria-hidden":!n,children:N(Od.Provider,{value:n,children:N(wi.Provider,{value:{location:t.location,navigationType:t.navigationType},children:N(q.Provider,{value:t.routeContext,children:t.outlet})})})},e)}),!o&&t!=null?N(`div`,{className:`h-full min-h-0`,children:t},a):null]})}a();var Md={dark:ee,light:L,system:it};function Nd(){return N(`div`,{className:`flex h-full min-h-[50vh] items-center justify-center`,children:N(`span`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-primary/30 border-t-primary`})})}function Pd(){let e=J(),t=Ii(),{user:n,logout:r}=Tc(),i=Ft(),{t:a}=V(),o=Rn(),c=fn(),{info:l}=ed();s(()=>{document.title=l===null?`CamStack Admin`:`${l.name} \u00b7 CamStack Admin`},[l]);let u=gs(vd()),[p,m]=f(!1);s(()=>{Ed(e.pathname+e.search)},[e.pathname,e.search]);let[h,g]=f(()=>typeof window>`u`?!1:window.localStorage.getItem(`camstack:sidebar-collapsed`)===`1`);s(()=>{typeof window>`u`||window.localStorage.setItem(`camstack:sidebar-collapsed`,h?`1`:`0`)},[h]);let[_]=f(()=>{if(typeof window>`u`)return new Set;try{let e=window.localStorage.getItem(`camstack:sidebar-collapsed-groups`);if(!e)return new Set;let t=JSON.parse(e);return Array.isArray(t)?new Set(t.filter(e=>typeof e==`string`)):new Set}catch{return new Set}});s(()=>{typeof window>`u`||window.localStorage.setItem(`camstack:sidebar-collapsed-groups`,JSON.stringify([..._]))},[_]),s(()=>{c&&window.localStorage.getItem(`camstack:sidebar-collapsed`)===null&&g(!0)},[c]);let{data:v=[]}=At({nodeId:`hub`},{refetchInterval:3e4}),b=v.length,x=A(),S=j(Date.now()),{data:C}=vn(void 0,{staleTime:0,refetchOnMount:`always`,refetchInterval:e=>{let t=e.state.data;return t&&t.length>0||Date.now()-S.current>=3e4?!1:2e3}}),T=d(()=>C&&n?.isAdmin?iu(C):[],[C,n?.isAdmin]),D=d(()=>xd(T),[T]),O=D.known.get(`detection`)??[],k=D.known.get(`cluster`)??[],M=D.known.get(`administration`)??[];Xn(`addon.page-ready`,()=>{x.invalidateQueries({queryKey:[[`addonPages`,`listPages`]]})});let P=()=>{r(),t(`/login`)},F=t=>!!(e.pathname===t||e.pathname.startsWith(t+`/`)),I=[`/system/pipeline`,`/live`,`/addon/osd-manager`,`/build`].some(t=>e.pathname===t||e.pathname.startsWith(t+`/`)),ee=n?.isAdmin===!0,L=d(()=>ju({t:a,isAdmin:ee}),[a,ee]),te=L[0]?.items??[],ne=L[1]?.items??[],re=L[2]?.items??[],ie=L[3]?.items??[],ae=i?.mode??`system`,oe={dark:a(`theme.dark`),light:a(`theme.light`),system:a(`theme.system`)},R=h&&!o,se=(e,t=`md`)=>`flex w-full items-center gap-2.5 rounded-md ${R?`justify-center px-0 py-2`:`px-2.5 py-1.5`} ${t===`lg`?`text-[13px] font-medium`:`text-[12px]`} transition-all ${e?t===`lg`?`bg-primary/12 text-primary shadow-sm shadow-primary/5`:`bg-primary/12 text-primary`:`text-foreground-subtle hover:bg-surface-hover hover:text-foreground`}`,ce=(e,t)=>e===0?null:R?N(`div`,{className:`pt-3 mb-1 mx-2 border-t border-border/60`},`sep-${t}`):N(`div`,{className:`pt-4 pb-1.5 px-2.5`,children:N(`span`,{className:`text-[10px] font-semibold uppercase tracking-widest text-foreground-subtle/60`,children:t})},`hdr-${t}`),ue=e=>{let n=F(e.path),r=Nu(e.icon);return y(`button`,{onClick:()=>{t(e.path),m(!1)},className:se(n),title:R?e.label:void 0,children:[N(r,{className:`h-3.5 w-3.5 shrink-0 ${n?`text-primary`:``}`}),!R&&e.label]},`${e.addonId}::${e.id}`)},de=e=>{let n=e.icon,r=F(e.path),i=e.path===`/system/addons`;return y(`button`,{"data-testid":`nav-${e.path.replace(/^\//,``).replace(/\//g,`-`)}`,onClick:()=>{t(e.path),m(!1)},className:se(r),title:R?e.label:void 0,children:[N(n,{className:`h-3.5 w-3.5 shrink-0 ${r?`text-primary`:``}`}),!R&&y(E,{children:[N(`span`,{className:`flex-1 text-left`,children:e.label}),i&&b>0&&N(`span`,{className:`ml-auto rounded-full bg-primary px-1.5 py-0.5 text-[9px] font-bold text-primary-foreground leading-none`,children:b})]}),R&&i&&b>0&&N(`span`,{className:`absolute mt-[-14px] ml-3 h-2 w-2 rounded-full bg-primary`})]},e.path)},fe=y(E,{children:[y(`div`,{className:`flex h-14 items-center border-b border-border ${R?`justify-center px-1`:`pl-3 pr-4 gap-2`}`,children:[!R&&N(`img`,{src:i?.resolvedMode===`light`?z(`/brand/logo-horizontal-light.svg`):z(`/brand/logo-horizontal-dark.svg`),alt:a(`layouts.appLayout.camstackAdmin`,`CamStack Admin`),className:`h-9 flex-1 min-w-0`}),!o&&N(`button`,{onClick:()=>g(e=>!e),className:`p-1.5 rounded-md hover:bg-surface-hover text-foreground-subtle transition-colors flex-shrink-0 ${R?``:`mr-2`}`,"aria-label":h?a(`layouts.appLayout.expandSidebar`,`Expand sidebar`):a(`layouts.appLayout.collapseSidebar`,`Collapse sidebar`),title:h?a(`layouts.appLayout.expandSidebar`,`Expand sidebar`):a(`layouts.appLayout.collapseSidebar`,`Collapse sidebar`),children:N(h?ye:Je,{className:`h-4 w-4`})})]}),!R&&l!==null&&N(`div`,{"data-testid":`sidebar-server-name`,title:l.name,className:`truncate border-b border-border px-3 py-1.5 text-xs font-medium text-foreground-muted`,children:l.name}),N(`div`,{className:`border-b border-border pt-2`,children:N(Uu,{navSections:L,addonPages:T,compact:R,onNavigated:()=>m(!1)})}),y(`nav`,{className:`flex-1 overflow-y-auto py-3 ${R?`px-1.5`:`px-2`} space-y-0.5`,children:[te.map(e=>de(e)),ce(ne.length+O.length,a(`nav.detectionSection`,`Detection`)),ne.map(e=>de(e)),O.map(e=>ue(e)),ce(re.length+k.length,a(`nav.clusterSection`,`Cluster`)),re.map(e=>de(e)),k.map(e=>ue(e)),ce(ie.length+M.length,a(`system.title`,`Administration`)),ie.map(e=>de(e)),M.map(e=>ue(e)),D.custom.map(e=>y(`div`,{className:`contents`,children:[ce(e.pages.length,e.label),e.pages.map(e=>ue(e))]},`custom-${e.id}`)),ce(D.ungrouped.length,a(`nav.addonPages`,`Addon Pages`)),D.ungrouped.map(e=>ue(e))]}),y(`div`,{className:`border-t border-border ${R?`p-1.5`:`p-2`} space-y-0.5`,children:[y(`button`,{onClick:()=>i?.toggleMode(),className:se(!1),title:R?oe[ae]:void 0,children:[(()=>{let e=Md[ae];return N(e,{className:`h-3.5 w-3.5 shrink-0`})})(),!R&&N(`span`,{children:oe[ae]})]}),N(_d,{variant:`sidebar`,compact:R}),y(`button`,{type:`button`,onClick:()=>t(`/system/my-access`),className:se(F(`/system/my-access`)),title:R?a(`system.myAccess`,`My access`):void 0,children:[N(ze,{className:`h-3.5 w-3.5 shrink-0`}),!R&&N(`span`,{className:`truncate`,children:a(`system.myAccess`,`My access`)})]}),y(`button`,{onClick:P,className:se(!1).replace(`hover:text-foreground`,`hover:text-danger`),title:R?n?.username??a(`layouts.appLayout.logout`,`Logout`):void 0,children:[N(ct,{className:`h-3.5 w-3.5 shrink-0`}),!R&&N(`span`,{className:`truncate`,children:n?.username??a(`layouts.appLayout.user`,`User`)})]}),N(`div`,{className:`pt-1 text-[10px] text-foreground-disabled select-none ${R?`text-center`:`px-2`}`,title:a(`layouts.appLayout.adminUiV`,`admin-ui v{{__APP_VERSION__}}`,{__APP_VERSION__:`1.2.433`}),children:R?`1.2.433`:`v1.2.433`})]})]});return y(`div`,{className:`flex h-dvh overflow-hidden bg-background text-foreground pt-[env(safe-area-inset-top)] pb-[env(safe-area-inset-bottom)]`,children:[!o&&N(`aside`,{className:`flex flex-col border-r border-border bg-surface/80 backdrop-blur-sm shrink-0 transition-[width] duration-150 ease-out ${R?`w-12`:`w-48`}`,children:fe}),o&&N(Dt,{open:p,onClose:()=>m(!1),width:`w-64`,children:fe}),y(`div`,{className:`flex flex-1 flex-col min-w-0`,children:[u!==null&&y(`div`,{className:`flex items-center justify-center gap-2 px-3 py-2 text-[12px] font-medium shrink-0 ${u.severity===`danger`?`bg-danger/90 text-white`:`bg-warning/15 text-warning border-b border-warning/30`}`,children:[u.severity===`danger`?N(xe,{className:`h-3.5 w-3.5`}):N(le,{className:`h-3.5 w-3.5`}),N(`span`,{children:a(u.i18nKey,{defaultValue:u.message,...u.i18nParams})}),u.action===`sign-in`&&N(`button`,{onClick:()=>r(),className:`ml-2 rounded border border-white/40 px-2 py-0.5 text-[11px] font-semibold hover:bg-white/10`,children:a(`connection.signIn`,`Sign in`)}),u.showSpinner&&N(Se,{className:`h-3.5 w-3.5 animate-spin`})]}),N(Qu,{}),N(sd,{}),o&&y(`header`,{className:`flex items-center h-12 border-b border-border px-3 shrink-0 bg-surface/80 backdrop-blur-sm`,children:[N(`button`,{onClick:()=>m(!0),className:`p-1.5 -ml-1.5 rounded-md hover:bg-surface-hover text-foreground-muted transition-colors`,"aria-label":a(`layouts.appLayout.openMenu`,`Open menu`),children:N(ve,{className:`h-5 w-5`})}),N(`div`,{className:`flex-1 flex justify-center`,children:N(`img`,{src:i?.resolvedMode===`light`?z(`/brand/logo-horizontal-light.svg`):z(`/brand/logo-horizontal-dark.svg`),alt:a(`layouts.appLayout.camstack`,`CamStack`),className:`h-7`})}),N(_d,{})]}),N(`main`,{className:`relative flex-1 min-h-0 overscroll-contain bg-background ${I?`overflow-hidden`:`overflow-auto`}`,children:N(w,{fallback:N(Nd,{}),children:N(jd,{})})})]})]})}function $({children:e,requireAdmin:t}){let{t:n}=V(),{user:r,loading:i,mustChangePassword:a}=Tc(),o=J();return i?N(`div`,{className:`flex h-screen items-center justify-center bg-background text-foreground-subtle`,children:n(`layouts.protectedRoute.loading`,`Loading...`)}):r?a&&o.pathname!==`/change-password`?N(Y,{to:`/change-password`,replace:!0}):t&&!r.isAdmin?N(Y,{to:`/access-denied`,replace:!0}):N(E,{children:e}):N(Y,{to:`/login`,replace:!0,state:{from:o.pathname+o.search}})}var Fd=`customize`,Id=`main`,Ld=`advanced`,Rd=`/build/compositions/new`,zd=`/build/compositions/:blockId`,Bd=`/build?tab=custom-device`;function Vd(e){return`/devices/${e}?tab=${Fd}`}function Hd(e){return`${Vd(e)}&sub=${Ld}`}function Ud(e){return`/build/compositions/${encodeURIComponent(e)}`}var Wd=`integration`,Gd=`section`,Kd=[Wd,Gd],qd={connectivity:{path:`/system/integrations`,tab:null},remoteAccess:{path:`/system/network`,tab:`remote-access`},mesh:{path:`/system/network`,tab:`mesh`},turn:{path:`/system/network`,tab:`turn`},authentication:{path:`/system/identity`,tab:`authentication`},access:{path:`/system/identity`,tab:`access`},logging:{path:`/system/logs`,tab:`destinations`}},Jd=`settings`,Yd=`activity`;function Xd(e,t={}){let{path:n,tab:r}=qd[e],i=new URLSearchParams;r!==null&&i.set(`tab`,r),t.integration!==void 0&&i.set(Wd,t.integration),t.section!==void 0&&i.set(Gd,t.section);let a=i.toString();return a.length>0?`${n}?${a}`:n}function Zd(e){let{ids:t,requested:n,answered:r,legacyGroup:i=null,groupFirst:a={}}=e;if(n!==null&&t.includes(n))return{selectedId:n,staleId:null};let o=n!==null&&r?n:null,s=i===null?void 0:a[i];return s!==void 0&&t.includes(s)?{selectedId:s,staleId:o}:{selectedId:t[0]??null,staleId:o}}function Qd(e,t,n=null,r=null){let i=new URLSearchParams(e);return i.set(Wd,t),r===null?i.delete(Gd):i.set(Gd,r),n!==null&&i.delete(n),i}function $d(e){return e===`/admin`||e===`/admin/`?`/`:e.startsWith(`/admin/`)?e.slice(6):e}function ef(){let{t:e}=V(),t=Ii();return y(`div`,{className:`flex flex-col items-center justify-center text-foreground py-16 px-4`,children:[N(`div`,{className:`flex h-16 w-16 items-center justify-center rounded-2xl bg-danger/10 mb-4`,children:N(ut,{className:`h-8 w-8 text-danger`})}),N(`h1`,{className:`text-xl font-bold`,children:e(`accessDenied.accessDenied`,`Access Denied`)}),N(`p`,{className:`mt-2 text-sm text-foreground-subtle`,children:e(`accessDenied.youDonTHavePermission`,`You don't have permission to access this page.`)}),N(`button`,{onClick:()=>t(`/devices`),className:`mt-6 rounded-lg bg-primary px-5 py-2.5 text-sm font-medium text-primary-foreground shadow-md shadow-primary/20 hover:shadow-lg transition-all`,children:e(`accessDenied.goToDevices`,`Go to Devices`)})]})}a();var tf=8;function nf(){let{t:e}=V(),{user:t,mustChangePassword:n,clearMustChangePassword:r,logout:i}=Tc(),a=Ft(),o=Ii(),[s,c]=f(``),[l,u]=f(``),[d,p]=f(!1),[m,h]=f(``),g=Xt({onSuccess:()=>{r(),o(`/devices`,{replace:!0})},onError:e=>{h(e instanceof Error?e.message:`Could not change password`)}});return N(`div`,{className:`flex min-h-screen items-center justify-center bg-background p-4`,children:y(`div`,{className:`w-full max-w-sm`,children:[N(`div`,{className:`flex justify-center mb-8`,children:N(`img`,{src:a?.resolvedMode===`light`?z(`/brand/logo-horizontal-light.svg`):z(`/brand/logo-horizontal-dark.svg`),alt:e(`changePassword.camstackAdmin`,`CamStack Admin`),className:`h-12`})}),y(`form`,{onSubmit:async e=>{if(e.preventDefault(),h(``),!t){h(`Not signed in`);return}if(s.length<tf){h(`Password must be at least ${tf} characters`);return}if(s!==l){h(`The two passwords do not match`);return}if(s===`changeme`){h(`Choose a password different from the seed default`);return}g.mutate({id:t.id,newPassword:s})},className:`space-y-4 rounded-xl border border-border bg-surface p-6 shadow-xl shadow-black/10`,children:[y(`div`,{className:`space-y-1`,children:[N(`h1`,{className:`text-sm font-semibold text-foreground`,children:e(`changePassword.setANewPassword`,`Set a new password`)}),N(`p`,{className:`text-xs text-foreground-subtle`,children:n?e(`changePassword.youMustRotateTheSeed`,`You must rotate the seed password before continuing.`):e(`changePassword.chooseANewPasswordFor`,`Choose a new password for your account.`)})]}),m&&N(`div`,{className:`rounded-md bg-danger/10 border border-danger/20 px-3 py-2 text-xs text-danger`,children:m}),y(`div`,{className:`space-y-1.5`,children:[N(`label`,{className:`text-xs font-medium text-foreground-subtle`,children:e(`changePassword.newPassword`,`New password`)}),y(`div`,{className:`relative`,children:[N(`input`,{"data-testid":`change-password-new`,type:d?`text`:`password`,value:s,onChange:e=>c(e.target.value),className:`w-full rounded-lg border border-border bg-background px-3 py-2.5 pr-10 text-sm text-foreground placeholder:text-foreground-disabled focus:border-primary focus:ring-1 focus:ring-primary/30 outline-none transition-all`,autoFocus:!0}),N(`button`,{type:`button`,onClick:()=>p(!d),className:`absolute right-2.5 top-1/2 -translate-y-1/2 text-foreground-subtle hover:text-foreground transition-colors`,tabIndex:-1,children:N(d?ie:te,{className:`h-4 w-4`})})]})]}),y(`div`,{className:`space-y-1.5`,children:[N(`label`,{className:`text-xs font-medium text-foreground-subtle`,children:e(`changePassword.confirmNewPassword`,`Confirm new password`)}),N(`input`,{"data-testid":`change-password-confirm`,type:d?`text`:`password`,value:l,onChange:e=>u(e.target.value),className:`w-full rounded-lg border border-border bg-background px-3 py-2.5 text-sm text-foreground placeholder:text-foreground-disabled focus:border-primary focus:ring-1 focus:ring-primary/30 outline-none transition-all`})]}),N(`button`,{"data-testid":`change-password-submit`,type:`submit`,disabled:g.isPending||!s||!l,className:`w-full rounded-lg bg-primary px-4 py-2.5 text-sm font-semibold text-primary-foreground shadow-md shadow-primary/20 hover:shadow-lg hover:shadow-primary/30 disabled:opacity-50 disabled:shadow-none transition-all`,children:g.isPending?e(`changePassword.saving`,`Saving…`):e(`changePassword.saveAndContinue`,`Save and continue`)}),n&&N(`button`,{type:`button`,onClick:()=>{i(),o(`/login`,{replace:!0})},className:`w-full text-xs text-foreground-subtle hover:text-foreground transition-colors`,children:e(`changePassword.signOutInstead`,`Sign out instead`)})]})]})})}function rf(e){let t=new Uint8Array(e),n=``;for(let e of t)n+=String.fromCharCode(e);return btoa(n).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=/g,``)}function af(e){let t=e.replace(/-/g,`+`).replace(/_/g,`/`),n=(4-t.length%4)%4,r=t.padEnd(t.length+n,`=`),i=atob(r),a=new ArrayBuffer(i.length),o=new Uint8Array(a);for(let e=0;e<i.length;e++)o[e]=i.charCodeAt(e);return a}function of(){return window?.PublicKeyCredential!==void 0&&typeof window.PublicKeyCredential==`function`}function sf(e){let{id:t}=e;return{...e,id:af(t),transports:e.transports}}function cf(e){return e===`localhost`||/^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$/i.test(e)}var lf=class extends Error{constructor({message:e,code:t,cause:n,name:r}){super(e,{cause:n}),this.name=r??n.name,this.code=t}},uf=new class{createNewAbortSignal(){if(this.controller){let e=Error(`Cancelling existing WebAuthn API call for new one`);e.name=`AbortError`,this.controller.abort(e)}let e=new AbortController;return this.controller=e,e.signal}cancelCeremony(){if(this.controller){let e=Error(`Manually cancelling existing WebAuthn API call`);e.name=`AbortError`,this.controller.abort(e),this.controller=void 0}}},df=[`cross-platform`,`platform`];function ff(e){if(e&&!(df.indexOf(e)<0))return e}function pf(){if(!of())return new Promise(e=>e(!1));let e=window.PublicKeyCredential;return e.isConditionalMediationAvailable===void 0?new Promise(e=>e(!1)):e.isConditionalMediationAvailable()}function mf({error:e,options:t}){let{publicKey:n}=t;if(!n)throw Error(`options was missing required publicKey property`);if(e.name===`AbortError`){if(t.signal instanceof AbortSignal)return new lf({message:`Authentication ceremony was sent an abort signal`,code:`ERROR_CEREMONY_ABORTED`,cause:e})}else if(e.name===`NotAllowedError`)return new lf({message:e.message,code:`ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY`,cause:e});else if(e.name===`SecurityError`){let t=window.location.hostname;if(!cf(t))return new lf({message:`${window.location.hostname} is an invalid domain`,code:`ERROR_INVALID_DOMAIN`,cause:e});if(n.rpId!==t)return new lf({message:`The RP ID "${n.rpId}" is invalid for this domain`,code:`ERROR_INVALID_RP_ID`,cause:e})}else if(e.name===`UnknownError`)return new lf({message:`The authenticator was unable to process the specified options, or could not create a new assertion signature`,code:`ERROR_AUTHENTICATOR_GENERAL_ERROR`,cause:e});return e}async function hf(e){let{optionsJSON:t,useBrowserAutofill:n=!1,verifyBrowserAutofillInput:r=!0}=e;if(!of())throw Error(`WebAuthn is not supported in this browser`);let i;t.allowCredentials?.length!==0&&(i=t.allowCredentials?.map(sf));let a={...t,challenge:af(t.challenge),allowCredentials:i},o={};if(n){if(!await pf())throw Error(`Browser does not support WebAuthn autofill`);if(document.querySelectorAll(`input[autocomplete$='webauthn']`).length<1&&r)throw Error('No <input> with "webauthn" as the only or last value in its `autocomplete` attribute was detected');o.mediation=`conditional`,a.allowCredentials=[]}o.publicKey=a,o.signal=uf.createNewAbortSignal();let s;try{s=await navigator.credentials.get(o)}catch(e){throw mf({error:e,options:o})}if(!s)throw Error(`Authentication was not completed`);let{id:c,rawId:l,response:u,type:d}=s,f;return u.userHandle&&(f=rf(u.userHandle)),{id:c,rawId:rf(l),response:{authenticatorData:rf(u.authenticatorData),clientDataJSON:rf(u.clientDataJSON),signature:rf(u.signature),userHandle:f},type:d,clientExtensionResults:s.getClientExtensionResults(),authenticatorAttachment:ff(s.authenticatorAttachment)}}a();async function gf(e){let t=await hf({optionsJSON:e});return Object.fromEntries(Object.entries(t))}function _f({method:e,challengeToken:t,onComplete:n,onSecondFactor:r,onError:i}){let[a,o]=f(!1),[s,c]=f(null),l=async()=>{c(null),o(!0);try{let e=Q();if(t){let r=await gf((await e.loginBeginPasskey(t)).optionsJSON),i=await e.loginVerifyPasskey(t,r,{refreshable:!0});n(i.token,i);return}let a=await gf((await e.passkeyLoginBegin()).optionsJSON),o=await e.passkeyLoginFinish(a,{refreshable:!0}),s=o.secondFactors??(o.requiresTotp===!0?[`totp`]:[]);if(s.length>0){if(r)r({challengeToken:o.token,factors:s});else{let e=`Additional verification is required — sign in with your password to continue.`;c(e),i?.(e)}return}n(o.token,o)}catch(e){let n=t?`Passkey verification failed`:`Passkey sign-in failed`,r=e instanceof Error?e.message:n;c(r),i?.(r)}finally{o(!1)}};return y(`div`,{className:`space-y-2`,children:[y(`button`,{type:`button`,"data-testid":t?`login-passkey`:`login-passkey-direct`,onClick:()=>void l(),disabled:a,className:`w-full flex items-center justify-center gap-2 rounded-lg border border-border bg-surface px-4 py-2.5 text-sm font-medium text-foreground hover:bg-surface-hover disabled:opacity-50 transition-colors`,children:[a?N(Se,{className:`h-4 w-4 animate-spin text-primary`}):N(pt,{className:`h-4 w-4 text-primary`}),e.label]}),s&&N(`div`,{className:`rounded-md bg-danger/10 border border-danger/20 px-3 py-2 text-xs text-danger`,children:s})]})}var vf=()=>window.location.hostname;function yf(e,t=vf){return of()&&Ku(t(),e.rpId)}function bf(e,t=vf){let n=e.filter(e=>e.kind===`passkey`&&e.stage===`second-factor`).filter(e=>yf(e,t));return{passkeyMethods:n,widgetMethods:n.length>0?[]:e.filter(e=>e.kind===`widget`&&e.stage===`second-factor`)}}function xf(e,t){let n=e.includes(`passkey`),r=t.passkeyMethods.length>0||t.widgetMethods.length>0,i=e.includes(`totp`);return n&&!r&&!i}function Sf(e){let t=e.onComplete,n=e.onSecondFactor;return typeof t==`function`?{onComplete:t,onSecondFactor:typeof n==`function`?n:void 0}:null}function Cf({methods:e,widgetConfig:t,onRedirect:n}){let{t:r}=V();Pn();let i=e.filter(e=>e.kind!==`passkey`||yf(e));return i.length===0?null:y(`div`,{className:`mt-6 space-y-3`,children:[y(`div`,{className:`flex items-center gap-3`,children:[N(`div`,{className:`h-px flex-1 bg-border`}),N(`span`,{className:`text-[10px] uppercase tracking-wider text-foreground-subtle`,children:r(`login.primaryLoginMethods.orContinueWith`,`Or continue with`)}),N(`div`,{className:`h-px flex-1 bg-border`})]}),N(`div`,{className:`space-y-2`,children:i.map(e=>{if(e.kind===`redirect`){let t=(e.icon===void 0?void 0:mn(e.icon))??ze;return y(`a`,{href:e.startUrl,onClick:t=>{n?.(e)===!0&&t.preventDefault()},className:`flex items-center justify-center gap-2 w-full rounded-lg border border-border bg-surface px-4 py-2.5 text-sm font-medium text-foreground hover:bg-surface-hover transition-colors`,children:[N(t,{className:`h-4 w-4 text-primary`}),e.label]},e.id)}if(e.kind===`passkey`){let n=Sf(t);return n?N(_f,{method:e,onComplete:n.onComplete,onSecondFactor:n.onSecondFactor},e.id):null}return N(wf,{method:e,config:t},e.id)})})]})}function wf({method:e,config:t}){let{t:n}=V(),r=rn(e.remote,e.bundleUrl);return r===null?y(`div`,{className:`flex items-center justify-center gap-2 rounded-lg border border-border bg-background px-4 py-2.5 text-xs text-foreground-subtle`,children:[N(Se,{className:`h-3.5 w-3.5 animate-spin`}),n(`common.loading`,`Loading…`)]}):r===void 0?y(`div`,{"data-testid":`login-method-load-error`,className:`flex items-center justify-center gap-2 rounded-lg border border-danger/20 bg-danger/10 px-4 py-2.5 text-xs text-danger`,children:[N(Ve,{className:`h-3.5 w-3.5 shrink-0`}),n(`login.primaryMethods.loadFailed`)]}):N(r,{instanceId:e.id,host:`dashboard`,config:t})}function Tf(e){return e===`totp`||e===`passkey`}function Ef(e){if(!e.startsWith(`#`))return null;let t=new URLSearchParams(e.slice(1)),n=t.get(`challenge`);if(n!==null){if(n.length===0)return null;let e=(t.get(`factors`)??``).split(`,`).filter(Tf);return e.length===0?null:{kind:`challenge`,challengeToken:n,factors:e}}let r=t.get(`error`);return r===`sso-not-linked`||r===`sso-state`?{kind:`error`,code:r,provider:t.get(`provider`)}:null}function Df(e,t){switch(e){case`sso-not-linked`:return B.t(`helpers.ssoReturn.notLinked`,{provider:t??B.t(`helpers.ssoReturn.signInFallback`)});case`sso-state`:return B.t(`helpers.ssoReturn.state`)}}var Of={expired:`helpers.ssoReturn.link.expired`,provider:`helpers.ssoReturn.link.provider`,session:`helpers.ssoReturn.link.session`,conflict:`helpers.ssoReturn.link.conflict`,state:`helpers.ssoReturn.link.state`};function kf(e){let t=new URLSearchParams(e),n=t.get(`linked`);if(n!==null&&n.length>0)return{kind:`linked`,provider:n};let r=t.get(`linkError`);return r===null?null:{kind:`error`,message:B.t(Of[r]??`helpers.ssoReturn.link.failed`)}}var Af=`camstack:sso-return`,jf=`camstack:sso-ack`,Mf=`/sso-complete`,Nf=1500,Pf=520,Ff=680;function If(e){if(!e.startsWith(`#`))return null;let t=new URLSearchParams(e.slice(1)),n=t.get(`return`);t.delete(`return`);let r=t.toString();return n===`login`?r.length>0?{target:n,fragment:r}:null:n===`profile`&&r.length>0?{target:n,query:r}:null}function Lf(e){return e.target===`login`?`/login#${e.fragment}`:`/system/my-access?${e.query}`}function Rf(e){let t=new URL(e,`http://placeholder.invalid`);return t.searchParams.set(`popup`,`1`),/^[a-z][a-z0-9+.-]*:/i.test(e)?t.toString():`${t.pathname}${t.search}${t.hash}`}function zf(e=window){let t=Math.max(0,Math.round(e.screenX+(e.outerWidth-Pf)/2)),n=Math.max(0,Math.round(e.screenY+(e.outerHeight-Ff)/2));return[`popup=yes`,`width=${Pf}`,`height=${Ff}`,`left=${t}`,`top=${n}`,`toolbar=no`,`menubar=no`,`location=no`,`status=no`,`resizable=yes`,`scrollbars=yes`].join(`,`)}function Bf(e){try{return window.open(e??`about:blank`,`camstack-sso`,zf())??null}catch{return null}}function Vf(e){if(typeof e!=`object`||!e)return!1;let t=e;return t.target===`login`?typeof t.fragment==`string`:t.target===`profile`?typeof t.query==`string`:!1}function Hf(e){if(typeof e!=`object`||!e)return!1;let t=e;return t.type===`camstack:sso-return`&&Vf(t.completion)}function Uf(e,t,n){return t===null||e.source!==t||e.origin!==n?null:Hf(e.data)?e.data.completion:null}var Wf=`camstack-sso`,Gf=`camstack:sso-done`;function Kf(e,t){return e.target===`profile`?{target:`profile`,query:e.query}:t?{target:`login`}:null}function qf(e){if(typeof e!=`object`||!e)return null;let t=e;if(t.type!==`camstack:sso-done`)return null;let n=Object.keys(t).sort().join(`,`);return t.target===`login`&&n===`target,type`?{target:`login`}:t.target===`profile`&&typeof t.query==`string`&&n===`query,target,type`?{target:`profile`,query:t.query}:null}function Jf(e){return typeof e==`object`&&!!e&&e.type===`camstack:sso-done-ack`}function Yf(e){try{let t=e.location.origin;return typeof t==`string`?t:null}catch{return null}}function Xf(){if(typeof BroadcastChannel>`u`)return null;try{let e=new BroadcastChannel(Wf);return{post:t=>e.postMessage(t),subscribe:t=>{let n=e=>t(e.data);return e.addEventListener(`message`,n),()=>e.removeEventListener(`message`,n)},close:()=>e.close()}}catch{return null}}var Zf=500;function Qf(e,t,n=window,r={}){let i=n.location.origin,a=r.channel===void 0?Xf():null,o=r.channel===void 0?a:r.channel,s=r.setInterval??((e,t)=>window.setInterval(e,t)),c=r.clearInterval??(e=>window.clearInterval(e)),l=!1,u=!1,d=r=>{let a=Uf(r,e,i);a===null||l||(l=!0,n.removeEventListener(`message`,d),e.postMessage({type:jf},i),t.onReturn(a))};n.addEventListener(`message`,d);let f=o?.subscribe(e=>{let n=qf(e);n===null||l||(l=!0,o.post({type:`camstack:sso-done-ack`}),t.onDone?.(n))})??null,p=s(()=>{u||!e.closed||(u=!0,c(p),t.onClosed?.())},Zf);return()=>{n.removeEventListener(`message`,d),f?.(),a?.close(),c(p)}}function $f(e,t,n){if(t===null||e.source!==t||e.origin!==n)return!1;let r=e.data;return typeof r==`object`&&!!r&&r.type===`camstack:sso-ack`}function ep(e,t){return new Promise(n=>{let r=!1,i=t(()=>{r||(r=!0,i(),n(!0))});e.setTimeout(()=>{r||(r=!0,i(),n(!1))},Nf)})}function tp(e,t,n){let r=ep(n,e=>{let r=r=>{$f(r,t,n.origin)&&e()};return n.addEventListener(`message`,r),()=>n.removeEventListener(`message`,r)});try{let r={type:Af,completion:e};t.postMessage(r,n.origin)}catch{}return r}function np(e,t,n){let r=ep(n,e=>t.subscribe(t=>{Jf(t)&&e()}));return t.post({type:Gf,...e}),r}async function rp(e,t){let n=t.opener!==null&&!t.opener.closed?t.opener:null;if(n!==null&&Yf(n)===t.origin&&await tp(e,n,t)){t.close();return}let r=e.target===`login`?new URLSearchParams(e.fragment).get(`token`):null,i=r!==null&&r.length>0,a=Kf(e,i);if(a!==null&&t.channel!==null&&(r!==null&&i&&await t.persistSession(r),await np(a,t.channel,t))){t.close();return}if(n!==null&&e.target===`profile`){let n=kf(`?${e.query}`);if(n?.kind===`error`){t.showResult({kind:`link-error`,message:n.message});return}t.close();return}t.continueAt(Lf(e))}function ip(e,t){return(t.length>0&&e.startsWith(t)?e.slice(t.length):e).replace(/\/+$/,``)===Mf}var ap=`Done — you can close this window.`,op=500,sp=`camstack_admin_token`;async function cp(e,t=``){try{let n=zs(new URLSearchParams(t));n!==null&&n.token===e?Ls(n):localStorage.setItem(sp,e)}catch{}await fetch(z(`/api/auth/session`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({token:e})}).catch(()=>{})}function lp(){try{let e=localStorage.getItem(sp);return e!==null&&e.length>0?e:null}catch{return null}}function up(e){let t=If(window.location.hash);window.history.replaceState(null,``,window.location.pathname);let n=n=>e.render(N(dp,{completion:t,result:n}));if(n(null),t===null)return;let r=Xf();rp(t,{opener:window.opener,origin:window.location.origin,channel:r,addEventListener:(e,t)=>window.addEventListener(e,t),removeEventListener:(e,t)=>window.removeEventListener(e,t),close:()=>{window.close(),window.setTimeout(()=>n({kind:`done`,message:ap}),op)},continueAt:e=>window.location.replace(z(e)),persistSession:e=>cp(e,t.target===`login`?t.fragment:``),showResult:n,setTimeout:(e,t)=>window.setTimeout(e,t)})}function dp({completion:e,result:t}){let{t:n}=V();return N(`div`,{className:`flex min-h-screen items-center justify-center bg-background p-4`,children:N(`div`,{className:`flex flex-col items-center gap-3 text-sm text-foreground-subtle`,children:e===null?N(`a`,{className:`text-primary underline`,href:z(`/login`),children:n(`ssoComplete.nothingToFinishHereGo`,`Nothing to finish here — go to sign-in`)}):t===null?y(`span`,{className:`flex items-center gap-3`,children:[N(`span`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-primary/30 border-t-primary`}),n(`ssoComplete.finishingSignIn`,`Finishing sign-in…`)]}):y(E,{children:[N(`span`,{"data-testid":`sso-complete-result`,className:t.kind===`link-error`?`text-danger`:`text-foreground`,children:t.message}),N(`button`,{type:`button`,className:`rounded-md border border-border px-3 py-1.5 text-foreground hover:bg-surface-hover`,onClick:()=>window.close(),children:n(`ssoComplete.closeThisWindow`,`Close this window`)})]})})})}a();function fp(e){if(typeof e!=`object`||!e)return!1;let t=Reflect.get(e,`message`),n=Reflect.get(e,`data`);return(typeof n==`object`&&n?Reflect.get(n,`code`):void 0)===`FORBIDDEN`||typeof t==`string`&&/sign in again first/i.test(t)}function pp(){let e=new URLSearchParams(window.location.search);return Xs({codeChallenge:e.get(`code_challenge`),codeChallengeMethod:e.get(`code_challenge_method`),state:e.get(`state`),purpose:e.get(`purpose`)})}function mp(){let{t:e}=V(),{login:t,verifyTotp:n,finalizePasskeyLogin:r,user:i}=Tc(),{i18n:a}=V(),o=Ft(),c=Ii(),l=J(),u=new URLSearchParams(window.location.search).get(`next`);s(()=>{ac(u)},[u]);let d=new URLSearchParams(window.location.search).get(`redirect`);s(()=>{mc(d)},[d]);let p=pp();s(()=>{$s(p)},[p?.codeChallenge,p?.state,p?.purpose]);let m=l.state?.from??Dd()??`/devices`,[h,g]=f(``),[_,v]=f(``),[b,x]=f(!1),[S,C]=f(``),[w,T]=f(!1),[D,O]=f(`credentials`),[k,A]=f(``),[M,P]=f([]),[F,I]=f(``),[ee,L]=f(void 0),[ne,re]=f(`sso-not-linked`),ae=(tr.auth.listLoginMethods.useQuery().data??[]).filter(e=>e.kind!==`device-certificate`),oe=tr.auth.getServerName.useQuery().data,R=ae.filter(e=>e.stage===`primary`),se=bf(ae);s(()=>{let e=Ef(window.location.hash);if(e!==null){if(window.history.replaceState({},``,window.location.pathname+window.location.search),e.kind===`challenge`){A(e.challengeToken),P(e.factors),I(``),O(`second-factor`);return}re(e.code),L(e.provider)}},[]);let ce=ee==null?null:ae.find(e=>e.id===ee&&`label`in e)?.label??null,le=S||(ee===void 0?``:Df(ne,ce)),{passkeyMethods:de,widgetMethods:fe}=se,pe=j(!1),me=async()=>{if(pe.current)return;pe.current=!0;let e=nc(d);if(e?.kind===`app-callback`){await _e(e.url);return}else if(e){window.location.assign(z(e.path));return}let t=sc(u);t?window.location.assign(z(t)):c(m,{replace:!0})},[he,ge]=f(null),_e=async e=>{ge({callbackBase:e,mintedUrl:null,failed:!1});try{let t=pp()??ec();if(t===null)throw Error(`The app sent no PKCE challenge and state`);let{code:n}=await Q().trpcClient.auth.createHandoffCode.mutate({purpose:t.purpose,codeChallenge:t.codeChallenge,state:t.state}),r=tc(e,n,t.state);ge({callbackBase:e,mintedUrl:r,failed:!1}),window.location.assign(r)}catch(t){if(fp(t)){pe.current=!1,ge(null),C(`Sign in again to confirm it is you.`);return}ge({callbackBase:e,mintedUrl:null,failed:!0})}},ve=i!==null,[ye,be]=f(!1);s(()=>{!ve||!d&&!u||ye||(be(!0),me())},[ve,d,u,ye]);let xe=async e=>{e.preventDefault(),C(``),L(void 0),T(!0);try{let e=await t(h,_);if(e.kind===`second-factor`){A(e.challengeToken),P(e.factors),O(`second-factor`);return}_===`changeme`?c(`/change-password`,{replace:!0}):await me()}catch(e){C(e instanceof Error?e.message:`Login failed`)}finally{T(!1)}},Se=async e=>{e.preventDefault(),C(``),T(!0);try{await n(k,F.trim()),await me()}catch(e){C(e instanceof Error?e.message:`TOTP verification failed`),I(``)}finally{T(!1)}},Ce=async(e,t)=>{try{await r(e,t),await me()}catch(e){C(e instanceof Error?e.message:`Passkey sign-in failed`)}},we=j(null);s(()=>()=>we.current?.(),[]);let Te=async e=>{if(e.target!==`login`)return;let t=zs(new URLSearchParams(e.fragment));if(t!==null){try{await r(t.token,t),await me()}catch(e){C(e instanceof Error?e.message:`Sign-in failed`)}return}let n=Ef(`#${e.fragment}`);if(n!==null){if(n.kind===`challenge`){De({challengeToken:n.challengeToken,factors:n.factors});return}re(n.code),L(n.provider)}},Ee=e=>{if(qs(d)?.kind===`app-callback`)return!1;let t=Bf(z(Rf(e.startUrl)));return t===null?!1:(C(``),L(void 0),we.current?.(),we.current=Qf(t,{onReturn:e=>{we.current?.(),we.current=null,Te(e)},onDone:e=>{if(we.current?.(),we.current=null,e.target!==`login`)return;let t=lp()===null?null:Is();t!==null&&Te({target:`login`,fragment:new URLSearchParams({token:t.token,...t.refreshToken===void 0?{}:{refreshToken:t.refreshToken},...t.expiresAt===void 0?{}:{expiresAt:String(t.expiresAt)}}).toString()})}}),!0)},De=e=>{let t=e.factors.filter(e=>e===`totp`||e===`passkey`);A(e.challengeToken),P(t),I(``),C(``),O(`second-factor`)};return he===null?N(`div`,{className:`flex min-h-screen items-center justify-center bg-background p-4`,children:y(`div`,{className:`w-full max-w-sm`,children:[N(`div`,{className:`flex justify-center mb-8`,children:N(`img`,{src:o?.resolvedMode===`light`?z(`/brand/logo-horizontal-light.svg`):z(`/brand/logo-horizontal-dark.svg`),alt:e(`login.camstackAdmin`,`CamStack Admin`),className:`h-12`})}),oe!==void 0&&!oe.isDefault&&N(`p`,{"data-testid":`login-server-name`,className:`-mt-4 mb-6 text-center text-sm text-foreground-muted`,children:N(Go,{i18nKey:`login.signInTo`,values:{name:oe.name},components:{b:N(`span`,{className:`font-semibold text-foreground`})}})}),D===`credentials`?y(`form`,{onSubmit:xe,className:`space-y-4 rounded-xl border border-border bg-surface p-6 shadow-xl shadow-black/10`,children:[le&&N(`div`,{"data-testid":`login-error`,className:`rounded-md bg-danger/10 border border-danger/20 px-3 py-2 text-xs text-danger`,children:le}),y(`div`,{className:`space-y-1.5`,children:[N(`label`,{className:`text-xs font-medium text-foreground-subtle`,children:e(`login.username`,`Username`)}),N(`input`,{"data-testid":`login-username`,type:`text`,placeholder:e(`login.username`,`Username`),value:h,onChange:e=>g(e.target.value),className:`w-full rounded-lg border border-border bg-background px-3 py-2.5 text-sm text-foreground placeholder:text-foreground-disabled focus:border-primary focus:ring-1 focus:ring-primary/30 outline-none transition-all`,autoFocus:!0})]}),y(`div`,{className:`space-y-1.5`,children:[N(`label`,{className:`text-xs font-medium text-foreground-subtle`,children:e(`login.password`,`Password`)}),y(`div`,{className:`relative`,children:[N(`input`,{"data-testid":`login-password`,type:b?`text`:`password`,placeholder:e(`login.password`,`Password`),value:_,onChange:e=>v(e.target.value),className:`w-full rounded-lg border border-border bg-background px-3 py-2.5 pr-10 text-sm text-foreground placeholder:text-foreground-disabled focus:border-primary focus:ring-1 focus:ring-primary/30 outline-none transition-all`}),N(`button`,{type:`button`,onClick:()=>x(!b),className:`absolute right-2.5 top-1/2 -translate-y-1/2 text-foreground-subtle hover:text-foreground transition-colors`,tabIndex:-1,children:N(b?ie:te,{className:`h-4 w-4`})})]})]}),N(`button`,{"data-testid":`login-submit`,type:`submit`,disabled:w||!h||!_,className:`w-full rounded-lg bg-primary px-4 py-2.5 text-sm font-semibold text-primary-foreground shadow-md shadow-primary/20 hover:shadow-lg hover:shadow-primary/30 disabled:opacity-50 disabled:shadow-none transition-all`,children:w?y(`span`,{className:`flex items-center justify-center gap-2`,children:[N(`span`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-primary-foreground/30 border-t-primary-foreground`}),e(`login.loggingIn`,`Logging in...`)]}):e(`login.logIn`,`Log in`)})]}):y(`div`,{className:`space-y-4 rounded-xl border border-border bg-surface p-6 shadow-xl shadow-black/10`,children:[y(`div`,{className:`flex items-center gap-2 pb-1 border-b border-border`,children:[N(ue,{className:`h-4 w-4 text-primary`}),N(`div`,{className:`text-sm font-medium text-foreground`,children:e(`login.twoFactorAuthentication`,`Two-factor authentication`)})]}),N(`p`,{className:`text-xs text-foreground-subtle`,children:h?N(E,{children:N(Go,{i18nKey:`login.finishSigningInAs`,values:{username:h},components:{mono:N(`span`,{className:`font-mono text-foreground`})}})}):e(`login.finishSigningInAs`,`Finish signing in.`)}),S&&N(`div`,{className:`rounded-md bg-danger/10 border border-danger/20 px-3 py-2 text-xs text-danger`,children:S}),M.includes(`passkey`)&&de.map(e=>N(_f,{method:e,challengeToken:k,onComplete:Ce},e.id)),M.includes(`passkey`)&&fe.map(e=>N(wf,{method:e,config:{challengeToken:k,onComplete:Ce}},e.id)),xf(M,se)&&N(`div`,{className:`rounded-md border border-border bg-background px-3 py-2 text-xs text-foreground-subtle`,children:e(`login.passkeyVerificationIsnTAvailable`,`Passkey verification isn't available on this address. Open the hub via its domain URL to complete sign-in.`)}),M.includes(`passkey`)&&M.includes(`totp`)&&y(`div`,{className:`flex items-center gap-3`,children:[N(`div`,{className:`h-px flex-1 bg-border`}),N(`span`,{className:`text-[10px] uppercase tracking-wider text-foreground-subtle`,children:`or`}),N(`div`,{className:`h-px flex-1 bg-border`})]}),M.includes(`totp`)&&y(`form`,{onSubmit:Se,className:`space-y-4`,children:[y(`div`,{className:`space-y-1.5`,children:[N(`label`,{className:`text-xs font-medium text-foreground-subtle`,children:e(`login.authenticationCode`,`Authentication code`)}),N(`input`,{"data-testid":`login-totp`,type:`text`,inputMode:`numeric`,autoComplete:`one-time-code`,placeholder:`123456`,value:F,onChange:e=>I(e.target.value.replace(/\D/g,``).slice(0,6)),className:`w-full rounded-lg border border-border bg-background px-3 py-3 text-center text-2xl font-mono tracking-widest text-foreground placeholder:text-foreground-disabled focus:border-primary focus:ring-1 focus:ring-primary/30 outline-none transition-all`,autoFocus:!0})]}),N(`button`,{"data-testid":`login-totp-submit`,type:`submit`,disabled:w||F.length!==6,className:`w-full rounded-lg bg-primary px-4 py-2.5 text-sm font-semibold text-primary-foreground shadow-md shadow-primary/20 hover:shadow-lg hover:shadow-primary/30 disabled:opacity-50 disabled:shadow-none transition-all`,children:w?y(`span`,{className:`flex items-center justify-center gap-2`,children:[N(`span`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-primary-foreground/30 border-t-primary-foreground`}),e(`login.verifying`,`Verifying...`)]}):e(`login.verifyAndSignIn`,`Verify and sign in`)})]}),y(`button`,{type:`button`,onClick:()=>{O(`credentials`),A(``),P([]),I(``),C(``)},className:`w-full flex items-center justify-center gap-1.5 text-xs text-foreground-subtle hover:text-foreground transition-colors`,children:[N(Ue,{className:`h-3 w-3`}),e(`login.backToUsernamePassword`,`Back to username + password`)]})]}),D===`credentials`&&N(Cf,{methods:R,widgetConfig:{onComplete:Ce,onSecondFactor:De,locale:a.language},onRedirect:Ee}),N(`p`,{className:`mt-6 text-center text-[10px] text-foreground-subtle/50`,children:e(`login.version`,{version:`1.2.433`})})]})}):N(`div`,{className:`flex min-h-screen items-center justify-center bg-background p-4`,children:y(`div`,{className:`w-full max-w-sm rounded-xl border border-border bg-surface p-6 text-center space-y-4`,children:[N(`h1`,{className:`text-sm font-semibold text-foreground`,children:e(`login.returningToTheApp`,`Returning to the app…`)}),he.failed?y(E,{children:[N(`p`,{className:`text-xs text-danger`,children:e(`login.couldNotPrepareTheSign`,`Could not prepare the sign-in handoff. You are logged in — retry below.`)}),N(`button`,{onClick:()=>void _e(he.callbackBase),className:`inline-flex rounded-lg bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90`,children:e(`common.retry`,`Retry`)})]}):he.mintedUrl===null?N(`p`,{className:`text-xs text-foreground-subtle`,children:e(`login.preparingAOneTimeSign`,`Preparing a one-time sign-in code…`)}):y(E,{children:[N(`p`,{className:`text-xs text-foreground-subtle`,children:e(`login.ifTheAppDoesNot`,`If the app does not open automatically, tap below (the code expires in 60s).`)}),N(`a`,{href:he.mintedUrl,className:`inline-flex rounded-lg bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90`,children:e(`login.openCamstack`,`Open CamStack`)})]})]})})}a();function hp(){let{pathname:e,search:t,hash:n}=J();return N(Y,{to:`${$d(e)}${t}${n}`,replace:!0})}function gp(){return N(Y,{to:Dd()??`/devices`,replace:!0})}var _p=m(()=>i(()=>import(`./Devices-DJLRZ1gB.js`).then(e=>({default:e.DevicesPage})),__vite__mapDeps([0,1,2,3,4,5,6,7,8]),import.meta.url)),vp=m(()=>i(()=>import(`./Integrations-CWLFbroL.js`).then(e=>({default:e.IntegrationsPage})),__vite__mapDeps([9,1,2,3,4,10,5,6,11,12,13,7,8]),import.meta.url)),yp=m(()=>i(()=>import(`./IntegrationDetail-ClLd4MXh.js`).then(e=>({default:e.IntegrationDetailPage})),__vite__mapDeps([14,1,2,3,4,15,5,16,11,12,13,7,17]),import.meta.url)),bp=m(()=>i(()=>import(`./ClusterStepModel-Bdu1erTg.js`).then(e=>e.r).then(e=>({default:e.PipelinePage})),__vite__mapDeps([18,1,2,3,4,10,5,19,20,21,22,16,23,8]),import.meta.url)),xp=m(()=>i(()=>import(`./DeviceDetail-O6lp6wGS.js`).then(e=>({default:e.DeviceDetailPage})),__vite__mapDeps([24,1,2,3,4,10,5,25,26,27,28,19,29,22,30,31,32,33,18,20,21,16,23,8,34,13]),import.meta.url)),Sp=m(()=>i(()=>import(`./Showroom-m2vZPqGf.js`).then(e=>({default:e.ShowroomPage})),__vite__mapDeps([35,1,2,3,4]),import.meta.url)),Cp=m(()=>i(()=>import(`./EmbedPlayerPage-BS7XG8ND.js`).then(e=>({default:e.EmbedPlayerPage})),__vite__mapDeps([36,1,2,3,4,5]),import.meta.url)),wp=m(()=>i(()=>import(`./Library-CLDkRGXt.js`).then(e=>({default:e.LibraryPage})),__vite__mapDeps([37,1,2,3,4,10,5,38,19,21,39,40,31,41,34,13]),import.meta.url)),Tp=m(()=>i(()=>import(`./Recordings-BuuW-Zcu.js`).then(e=>({default:e.RecordingsPage})),__vite__mapDeps([42,1,2,3,4,10,5,43,40,44,25,45,46,47,34,13]),import.meta.url)),Ep=m(()=>i(()=>import(`./Viewer-Dsadw_E6.js`).then(e=>({default:e.ViewerPage})),__vite__mapDeps([48,2,3,4,49,5,13,1]),import.meta.url)),Dp=m(()=>i(()=>import(`./Build-Cu6tKrLQ.js`).then(e=>({default:e.BuildPage})),__vite__mapDeps([50,1,2,3,4,10,5,28,51,19,40,30,52,53]),import.meta.url)),Op=m(()=>i(()=>import(`./CompositionEditorPage-C439CHpw.js`).then(e=>({default:e.CompositionEditorPage})),__vite__mapDeps([54,1,2,3,4,28,5,6,30,10]),import.meta.url)),kp=m(()=>i(()=>import(`./Locations-B0gmUpSi.js`).then(e=>({default:e.LocationsPage})),__vite__mapDeps([55,1,2,3,4,10,5,28,56,39,40,32,33]),import.meta.url)),Ap=m(()=>i(()=>import(`./Addons-IVSrpQ1E.js`).then(e=>({default:e.AddonsPage})),__vite__mapDeps([57,1,2,3,4,19,58,5,6,16,59,13]),import.meta.url)),jp=m(()=>i(()=>import(`./AiProfiles-0jvT_Qwx.js`).then(e=>({default:e.AiProfilesPage})),__vite__mapDeps([60,1,2,3,4,10,5,61,62,6,40,13]),import.meta.url)),Mp=m(()=>i(()=>import(`./MyAccess-B3zd07Xt.js`).then(e=>({default:e.MyAccessPage})),__vite__mapDeps([63,1,2,3,4,10,5,19,64,65,66,6,67,58,13]),import.meta.url)),Np=m(()=>i(()=>import(`./Logs-BrWt8ZO7.js`).then(e=>({default:e.LogsPage})),__vite__mapDeps([68,1,2,3,4,69,22,5,6,40,70,71,16,72,17,13,73]),import.meta.url)),Pp=m(()=>i(()=>import(`./Identity-CBJqopOJ.js`).then(e=>({default:e.IdentityPage})),__vite__mapDeps([74,1,2,3,4,10,5,75,19,76,64,65,66,6,40,70,71,16,72,17,13,67,58,73]),import.meta.url)),Fp=m(()=>i(()=>import(`./Network-DWFicIZW.js`).then(e=>({default:e.NetworkPage})),__vite__mapDeps([77,1,2,3,4,10,5,28,19,78,6,40,70,71,16,72,17,13,73]),import.meta.url)),Ip=m(()=>i(()=>import(`./Integrations-DwGGLX0o.js`).then(e=>({default:e.IntegrationsPage})),__vite__mapDeps([79,1,2,3,4,10,5,19,78,65,80,40,70,71,6,16,72,17,13,12]),import.meta.url)),Lp=m(()=>i(()=>import(`./Data-BwCbkEKL.js`).then(e=>({default:e.DataPage})),__vite__mapDeps([81,1,2,3,4,10,5,82,29,46,6,40,44,25,45,47,34,13]),import.meta.url)),Rp=m(()=>i(()=>import(`./System-BXLdiSS2.js`).then(e=>({default:e.SystemPage})),__vite__mapDeps([83,1,2,3,4,10,5,64,58,6,40,16,72,17,13]),import.meta.url)),zp=m(()=>i(()=>import(`./Cluster-BdEsq5J1.js`).then(e=>({default:e.ClusterPage})),__vite__mapDeps([84,1,2,3,4,10,5,46,85,66,6,16,23,59,47]),import.meta.url)),Bp=m(()=>i(()=>import(`./Terminal-Dhk0sGr6.js`).then(e=>({default:e.TerminalPage})),__vite__mapDeps([86,1,2,3,4,19,5,6,16,87]),import.meta.url)),Vp=m(()=>i(()=>import(`./Notifications-CWachKDI.js`).then(e=>({default:e.NotificationsPage})),__vite__mapDeps([88,1,2,3,4,10,5,27,19,76,89,62,6,40,52,53,41,13,33]),import.meta.url)),Hp=m(()=>i(()=>import(`./Calendars-Bk15Hwva.js`).then(e=>({default:e.CalendarsPage})),__vite__mapDeps([90,1,2,3,4,10,5,19,6]),import.meta.url)),Up=new D({defaultOptions:{queries:{gcTime:0,staleTime:0,retry:!1,refetchOnWindowFocus:!1}}});Rt(Up);function Wp({field:e,value:t,onChange:n,disabled:r}){return N(Pl,{field:e,value:t,onChange:n,disabled:r})}var Gp={"model-selector":Wp};function Kp({children:e}){let{t}=V(),{user:n,logout:r}=Tc(),[i,a]=f(0),o=j(n?.username??null);s(()=>{let e=n?.username??null;e!==o.current&&(o.current=e,As(),a(e=>e+1))},[n]);let c=d(()=>Q(),[i]),{bootReady:l,bootError:u}=tu(c,n??null,r);return ru(p(()=>{Q().reconnect(),a(e=>e+1),Up.invalidateQueries()},[])),N(Ql,{children:N(Fe,{system:c,children:N(tr.Provider,{client:c.trpcClient,queryClient:Up,children:y(Wt,{children:[N(Yn,{children:l?e:N(qp,{})}),l&&N(Bl,{}),u!==null&&l&&y(`div`,{className:`fixed bottom-[calc(env(safe-area-inset-bottom)+1rem)] right-[calc(env(safe-area-inset-right)+1rem)] z-50 max-w-sm rounded-lg border border-warning/30 bg-warning/10 px-3 py-2 text-xs text-warning shadow-lg`,children:[t(`app.bootProbeFailed`,`Boot probe failed:`),` `,u,`. Retrying in background.`]})]})})})})}function qp(){let{t:e}=V();return N(`div`,{className:`flex min-h-screen items-center justify-center bg-background`,children:y(`div`,{className:`flex items-center gap-3 text-sm text-foreground-subtle`,children:[N(`span`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-primary/30 border-t-primary`}),e(`app.connecting`,`Connecting…`)]})})}function Jp(){return N(`div`,{className:`flex min-h-screen items-center justify-center bg-background`,children:N(`span`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-primary/30 border-t-primary`})})}function Yp(){return N(Qt,{defaultMode:`dark`,children:N(M,{client:Up,children:N(wc,{children:N(Kp,{children:N(un,{children:N(zl,{children:y(Et,{renderers:Gp,children:[N(eo,{basename:We(),children:N(Ol,{children:N(w,{fallback:N(Jp,{}),children:y(da,{children:[N(X,{path:`/login`,element:N(mp,{})}),N(X,{path:`/admin/*`,element:N(hp,{})}),N(X,{path:`/admin`,element:N(hp,{})}),N(X,{path:`/change-password`,element:N($,{children:N(nf,{})})}),N(X,{path:`/showroom`,element:N(Sp,{})}),N(X,{path:`/embed/player`,element:N(Cp,{})}),y(X,{element:N($,{children:N(hr,{children:N(Pd,{})})}),children:[N(X,{index:!0,element:N(gp,{})}),N(X,{path:`/access-denied`,element:N(ef,{})}),N(X,{path:`/dashboard`,element:N(Y,{to:`/devices`,replace:!0})}),N(X,{path:`/devices`,element:N(_p,{})}),N(X,{path:`/cameras`,element:N(Y,{to:`/devices`,replace:!0})}),N(X,{path:`/integrations`,element:N(vp,{})}),N(X,{path:`/integrations/:integrationId`,element:N(yp,{})}),N(X,{path:`/system/pipeline`,element:N(bp,{})}),N(X,{path:`/pipeline`,element:N(Y,{to:`/system/pipeline`,replace:!0})}),N(X,{path:`/live`,element:N(Ep,{})}),N(X,{path:`/devices/:deviceId`,element:N(xp,{})}),N(X,{path:`/system/logs`,element:N($,{requireAdmin:!0,children:N(Np,{})})}),N(X,{path:`/system/addons`,element:N($,{requireAdmin:!0,children:N(Ap,{})})}),N(X,{path:`/system/ai`,element:N($,{requireAdmin:!0,children:N(jp,{})})}),N(X,{path:`/system/settings`,element:N($,{requireAdmin:!0,children:N(Rp,{})})}),N(X,{path:`/system/nodes`,element:N($,{requireAdmin:!0,children:N(zp,{})})}),N(X,{path:`/system/notifications`,element:N($,{requireAdmin:!0,children:N(Vp,{})})}),N(X,{path:`/system/calendars`,element:N($,{requireAdmin:!0,children:N(Hp,{})})}),N(X,{path:`/system/identity`,element:N($,{requireAdmin:!0,children:N(Pp,{})})}),N(X,{path:`/system/my-access`,element:N(Mp,{})}),N(X,{path:`/system/network`,element:N($,{requireAdmin:!0,children:N(Fp,{})})}),N(X,{path:`/system/integrations`,element:N($,{requireAdmin:!0,children:N(Ip,{})})}),N(X,{path:`/system/data`,element:N($,{requireAdmin:!0,children:N(Lp,{})})}),N(X,{path:`/system`,element:N(Y,{to:Ul,replace:!0})}),N(X,{path:`/system/terminal`,element:N($,{requireAdmin:!0,children:N(Bp,{})})}),Wl.map(e=>N(X,{path:e.path,element:N(Kl,{tab:e.tab})},e.path)),N(X,{path:`/system/users`,element:N(Y,{to:`/system/identity?tab=users`,replace:!0})}),N(X,{path:`/system/api-keys`,element:N(Y,{to:`/system/identity?tab=api-keys`,replace:!0})}),N(X,{path:`/system/authentication`,element:N(Y,{to:Xd(`authentication`),replace:!0})}),N(X,{path:`/system/linked-sessions`,element:N(Y,{to:`/system/identity?tab=linked-sessions`,replace:!0})}),N(X,{path:`/system/remote-access`,element:N(Y,{to:Xd(`remoteAccess`),replace:!0})}),N(X,{path:`/system/turn`,element:N(Y,{to:Xd(`turn`),replace:!0})}),N(X,{path:`/system/storage`,element:N(Y,{to:`/system/data?tab=storage`,replace:!0})}),N(X,{path:`/system/backup`,element:N(Y,{to:`/system/data?tab=backup`,replace:!0})}),N(X,{path:`/library`,element:N($,{requireAdmin:!0,children:N(wp,{})})}),N(X,{path:`/retrain`,element:N(Y,{to:`/addon/training`,replace:!0})}),N(X,{path:`/recordings`,element:N($,{requireAdmin:!0,children:N(Tp,{})})}),N(X,{path:`/build`,element:N($,{requireAdmin:!0,children:N(Dp,{})})}),N(X,{path:Rd,element:N($,{requireAdmin:!0,children:N(Op,{})})}),N(X,{path:zd,element:N($,{requireAdmin:!0,children:N(Op,{})})}),N(X,{path:`/locations`,element:N($,{requireAdmin:!0,children:N(kp,{})})}),N(X,{path:`/automation`,element:N(Fl,{to:`/build`})}),N(X,{path:`/addon/:pagePath`,element:N($,{requireAdmin:!0,children:N(uu,{})})}),N(X,{path:`*`,element:N(Y,{to:`/devices`,replace:!0})})]})]})})})}),N(Yl,{})]})})})})})})})}a(),window.__camstackUiLibrary=Ln,window.__camstackSdk=kn,window.__camstackTypes=wt;var Xp=ir(document.getElementById(`root`));ip(window.location.pathname,We())?up(Xp):Xp.render(N(S,{children:N(Yp,{})}));export{Bi as $,Qc as A,fs as B,Pu as C,Rl as D,Ul as E,Bc as F,ts as G,ss as H,zc as I,Jo as J,Z as K,Rc as L,Uc as M,Wc as N,El as O,Kc as P,Ii as Q,Dc as R,ed as S,Zl as T,rs as U,is as V,ns as W,no as X,Go as Y,Y as Z,Id as _,hf as a,Hd as b,qd as c,Jd as d,uo as et,Xd as f,Ld as g,Bd as h,kf as i,Xc as j,pl as k,Wd as l,Qd as m,Qf as n,Yd as o,Zd as p,es as q,Rf as r,Kd as s,Bf as t,Gd as u,Fd as v,ku as w,Vd as x,Ud as y,Tc as z};
|