@camstack/addon-admin-ui 1.2.437 → 1.2.439

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/dist/assets/{AddonAssetIcon-C3Ltt0yX.js → AddonAssetIcon-BDSwFXgm.js} +1 -1
  2. package/dist/assets/{Addons-CkBmnKjV.js → Addons-BNdKgh4A.js} +1 -1
  3. package/dist/assets/{AdminPage-B7Z1OWO3.js → AdminPage-CgbWYJ_a.js} +1 -1
  4. package/dist/assets/{AdminSectionedPage-USP4OV_Y.js → AdminSectionedPage-Cx5lBMEy.js} +1 -1
  5. package/dist/assets/{AiProfiles-QWD8PlMr.js → AiProfiles-Bcw_Zupz.js} +1 -1
  6. package/dist/assets/{BrokerForm-BxmxiIRw.js → BrokerForm-vhYWxL3G.js} +1 -1
  7. package/dist/assets/{Build-CXn4HT3p.js → Build-DU8TYYdP.js} +1 -1
  8. package/dist/assets/{Calendars-DN9ln21d.js → Calendars-nXT3Wrbf.js} +1 -1
  9. package/dist/assets/{Cluster-tgWdVHND.js → Cluster-i581brrb.js} +1 -1
  10. package/dist/assets/{ClusterStepModel-BizBdfIU.js → ClusterStepModel-COT7-UPr.js} +1 -1
  11. package/dist/assets/{CompositionEditor-GiDCG4Aj.js → CompositionEditor-ChpgaVIC.js} +1 -1
  12. package/dist/assets/{CompositionEditorPage-wfYMLlvy.js → CompositionEditorPage-ChGD20-A.js} +1 -1
  13. package/dist/assets/{Data-CmT5GPx9.js → Data-NVQyqefj.js} +1 -1
  14. package/dist/assets/{DeviceDetail-moNYFDGE.js → DeviceDetail-UQPY3O77.js} +1 -1
  15. package/dist/assets/{DeviceDoActionFields-C1LG9nW0.js → DeviceDoActionFields-B1mTzp5D.js} +1 -1
  16. package/dist/assets/{Devices-837Dt931.js → Devices-DNkljEPT.js} +1 -1
  17. package/dist/assets/{EmbedPlayerPage-Crrh_6YT.js → EmbedPlayerPage-BPwqAqDS.js} +1 -1
  18. package/dist/assets/{Identity-CNNb8wrU.js → Identity-SFG32MYD.js} +1 -1
  19. package/dist/assets/{IntegrationDetail-BER_0Zaz.js → IntegrationDetail-DOpZe3Ca.js} +1 -1
  20. package/dist/assets/{IntegrationHub-BEu0isNR.js → IntegrationHub-DbxSPB_Z.js} +1 -1
  21. package/dist/assets/{Integrations-CuZucOyR.js → Integrations--ssC4t1F.js} +1 -1
  22. package/dist/assets/{Integrations-Sjh868gF.js → Integrations-6eDOiK1G.js} +1 -1
  23. package/dist/assets/{Library-B4Nw3n28.js → Library-Bi_LuV1_.js} +1 -1
  24. package/dist/assets/{Locations-B7dC2DyF.js → Locations-Cg0m1b4l.js} +1 -1
  25. package/dist/assets/{Logs-4XWMmfpD.js → Logs-DQzkH4DL.js} +1 -1
  26. package/dist/assets/{MaskShapeCanvas-Bwqusno0.js → MaskShapeCanvas-B01TLLz0.js} +1 -1
  27. package/dist/assets/{MotionZonesSettings-CZbGV_dv.js → MotionZonesSettings-Ccp-7wRO.js} +1 -1
  28. package/dist/assets/{MyAccess-TAG05L5N.js → MyAccess-d8Soqp8x.js} +1 -1
  29. package/dist/assets/{Network-ReY1qUoQ.js → Network-DUXIj2Zk.js} +1 -1
  30. package/dist/assets/{NodeAddonsSettingsPanel-DIKEaj5p.js → NodeAddonsSettingsPanel-BfK00QUN.js} +1 -1
  31. package/dist/assets/{Notifications-CqTEfaZ_.js → Notifications-M4WZNbHV.js} +1 -1
  32. package/dist/assets/{PrivacyMaskSettings-CTKUYU5o.js → PrivacyMaskSettings-BnmGNc7h.js} +1 -1
  33. package/dist/assets/{Recordings-EMQC9iqz.js → Recordings-DalG2LLq.js} +1 -1
  34. package/dist/assets/{ScanNetworkModal-DK98Sjd4.js → ScanNetworkModal-BuYymusi.js} +1 -1
  35. package/dist/assets/{SceneMonitorEditor-CG4pADlP.js → SceneMonitorEditor-COIi86yu.js} +1 -1
  36. package/dist/assets/{SessionsList-B1Ni2lo_.js → SessionsList-CoUCGhgk.js} +1 -1
  37. package/dist/assets/{Showroom-BKLoHB4Z.js → Showroom-B-HvuRyq.js} +1 -1
  38. package/dist/assets/{System-DEOHPmr3.js → System-D1S9FZIN.js} +1 -1
  39. package/dist/assets/{Terminal-dVu7TTAE.js → Terminal-VExSxhFn.js} +1 -1
  40. package/dist/assets/{Viewer-B9mEIKqz.js → Viewer-CNtlq-6t.js} +1 -1
  41. package/dist/assets/{_virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-BX43JXOX.js → _virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-B5lRPMSE.js} +1 -1
  42. package/dist/assets/{addon-icons-context-BjcmJD_J.js → addon-icons-context-O3QiZWCa.js} +1 -1
  43. package/dist/assets/{archive-Bcg0gLgY.js → archive-NnMWQRLb.js} +1 -1
  44. package/dist/assets/{authed-media-Cf82_ejX.js → authed-media-B64j5Vsu.js} +1 -1
  45. package/dist/assets/{bell-off-BnByNJjy.js → bell-off-DR6rLD11.js} +1 -1
  46. package/dist/assets/{board-model-D8m2YmcS.js → board-model-CUEDqTvL.js} +1 -1
  47. package/dist/assets/{boxes-V2c7jrxe.js → boxes-B64NRkVe.js} +1 -1
  48. package/dist/assets/circle-slash-CEYz4tuU.js +1 -0
  49. package/dist/assets/client-Ca-96r9I.js +358 -0
  50. package/dist/assets/{cloud-upload-aziKggfg.js → cloud-upload-Ck1AcqSa.js} +1 -1
  51. package/dist/assets/crop-C-IooyeF.js +1 -0
  52. package/dist/assets/{device-integration-icon-3UfBj_i6.js → device-integration-icon-CdWFmoUD.js} +1 -1
  53. package/dist/assets/device-picker-model-Dep-E57-.js +1 -0
  54. package/dist/assets/dist-BSOkO07t.js +1 -0
  55. package/dist/assets/dist-vJSNSRqs.js +358 -0
  56. package/dist/assets/{eraser-CsYhDDbY.js → eraser-CHm7ildU.js} +1 -1
  57. package/dist/assets/{hard-drive-download-CWqd_JKb.js → hard-drive-download-DVmQAuw3.js} +1 -1
  58. package/dist/assets/{history-DOf9zSG-.js → history-2q2gbNuR.js} +1 -1
  59. package/dist/assets/{hostInit-BCqJwB4Y.js → hostInit-BJE3f_CH.js} +1 -1
  60. package/dist/assets/i18n-ATfMbes1.js +1 -0
  61. package/dist/assets/{icons-BrAHwVJD.js → icons-DQaWDMUW.js} +1 -1
  62. package/dist/assets/index-CIQcOfrF.js +4 -0
  63. package/dist/assets/{key-D0VHbthb.js → key-N9xPL69Y.js} +1 -1
  64. package/dist/assets/{key-round-CasJ848Z.js → key-round-DetnHyGS.js} +1 -1
  65. package/dist/assets/{layers-CFb4zoU6.js → layers-DdcQNtFW.js} +1 -1
  66. package/dist/assets/{linked-devices-model-DbkbB7KM.js → linked-devices-model-Ca0JeX-b.js} +1 -1
  67. package/dist/assets/{list-ordered-B14sQnH2.js → list-ordered-CG0tknH1.js} +1 -1
  68. package/dist/assets/{location-owned-usage-C21QUrwl.js → location-owned-usage-CPVIHMbS.js} +1 -1
  69. package/dist/assets/{log-in-UZRiT8Rq.js → log-in-eXylJY9j.js} +1 -1
  70. package/dist/assets/{memory-stick-l6hXPEuG.js → memory-stick-DASwwt0F.js} +1 -1
  71. package/dist/assets/{message-square-plus-C3grB9GT.js → message-square-plus-DqkHZSG8.js} +1 -1
  72. package/dist/assets/{mf-entry-bootstrap-0-5e54ea5d.js → mf-entry-bootstrap-0-3bcba670.js} +2 -2
  73. package/dist/assets/{mic-off-wol-RBiS.js → mic-off-Dn3D8U5T.js} +1 -1
  74. package/dist/assets/{monitor-off-BUehkWHc.js → monitor-off-BFFE28-j.js} +1 -1
  75. package/dist/assets/{monitor-smartphone-CCDiXDn-.js → monitor-smartphone-Df6JhoUF.js} +1 -1
  76. package/dist/assets/mount-Dep-E57-.js +1 -0
  77. package/dist/assets/{notification-schedule-field-DiZ-TJBp.js → notification-schedule-field-DX8l1Z0c.js} +1 -1
  78. package/dist/assets/{player-overlays-Db_o1Zm2.js → player-overlays-CikRdqm6.js} +1 -1
  79. package/dist/assets/{recycle-BVxTT0po.js → recycle-CeQJmMoH.js} +1 -1
  80. package/dist/assets/remoteEntry-B_6E82lR.js +1 -0
  81. package/dist/assets/{scan-eye-C5EKCLMY.js → scan-eye-uX_isL7a.js} +1 -1
  82. package/dist/assets/{scissors-DjP6Unuk.js → scissors-Bi6HP2Jp.js} +1 -1
  83. package/dist/assets/{search-x-gjRI7PKB.js → search-x-CScyd-pU.js} +1 -1
  84. package/dist/assets/{send-CV6GWVOX.js → send-D2QbbJQk.js} +1 -1
  85. package/dist/assets/{settings-2--KyzHb5N.js → settings-2-CkjM7VHr.js} +1 -1
  86. package/dist/assets/{speaker-CnmwOCLp.js → speaker-C3Z3o0NO.js} +1 -1
  87. package/dist/assets/src-Bt0KiIin.js +67 -0
  88. package/dist/assets/{timer-reset-nORqwwje.js → timer-reset-C_TvCMnb.js} +1 -1
  89. package/dist/assets/{ungroup-BQTGGbbf.js → ungroup-IELE1M3H.js} +1 -1
  90. package/dist/assets/{unlink-669jprEf.js → unlink-CLHtJAsY.js} +1 -1
  91. package/dist/assets/{usb-BT4hzhxS.js → usb-DncvObAi.js} +1 -1
  92. package/dist/assets/{use-scenes-feed-DCExYbbk.js → use-scenes-feed-BgX1JX4l.js} +1 -1
  93. package/dist/assets/{use-stationary-objects-DPwgtmOw.js → use-stationary-objects-BzSycd9M.js} +1 -1
  94. package/dist/assets/useEventInvalidation-Dep-E57-.js +1 -0
  95. package/dist/assets/{useNodeUrlSelection-ibxCoFYh.js → useNodeUrlSelection-D3zWAXku.js} +1 -1
  96. package/dist/assets/user-round-BCHxFTod.js +1 -0
  97. package/dist/assets/{user-x-Drhirj9Y.js → user-x-B-NhZXl-.js} +1 -1
  98. package/dist/assets/{video-Dzs93Xor.js → video-IXUGebu2.js} +1 -1
  99. package/dist/assets/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-DVRZb8h3.js → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-5Br3X_S3.js} +2 -2
  100. package/dist/index.html +10 -10
  101. package/dist/server/addon.js +83 -3
  102. package/package.json +1 -1
  103. package/dist/assets/circle-slash-B_FzZotu.js +0 -1
  104. package/dist/assets/client-CUuI767h.js +0 -358
  105. package/dist/assets/crop-DzZyuK_f.js +0 -1
  106. package/dist/assets/device-picker-model-DJj6igTj.js +0 -1
  107. package/dist/assets/dist-DsAwO6-i.js +0 -358
  108. package/dist/assets/dist-t-gGaOd0.js +0 -1
  109. package/dist/assets/i18n-RHwbGLC0.js +0 -1
  110. package/dist/assets/index-CeO2wVZi.js +0 -4
  111. package/dist/assets/mount-DJj6igTj.js +0 -1
  112. package/dist/assets/remoteEntry-DSZ__m0a.js +0 -1
  113. package/dist/assets/src-CL0G8g2V.js +0 -67
  114. package/dist/assets/useEventInvalidation-DJj6igTj.js +0 -1
  115. package/dist/assets/user-round-NWWWc7PC.js +0 -1
@@ -1,4 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./Devices-837Dt931.js","./src-CL0G8g2V.js","./player-overlays-Db_o1Zm2.js","./client-CUuI767h.js","./__vite-browser-external-BlMfPwfH.js","./useTranslation-D3Is_4B6.js","./AdminPage-B7Z1OWO3.js","./device-integration-icon-3UfBj_i6.js","./useEventInvalidation-DJj6igTj.js","./Integrations-Sjh868gF.js","./i18n-RHwbGLC0.js","./ScanNetworkModal-DK98Sjd4.js","./BrokerForm-BxmxiIRw.js","./mount-DJj6igTj.js","./IntegrationDetail-BER_0Zaz.js","./search-x-gjRI7PKB.js","./NodeAddonsSettingsPanel-DIKEaj5p.js","./addon-icons-context-BjcmJD_J.js","./ClusterStepModel-BizBdfIU.js","./video-Dzs93Xor.js","./usb-BT4hzhxS.js","./crop-DzZyuK_f.js","./layers-CFb4zoU6.js","./board-model-D8m2YmcS.js","./DeviceDetail-moNYFDGE.js","./archive-Bcg0gLgY.js","./scan-eye-C5EKCLMY.js","./bell-off-BnByNJjy.js","./boxes-V2c7jrxe.js","./circle-slash-B_FzZotu.js","./CompositionEditor-GiDCG4Aj.js","./use-stationary-objects-DPwgtmOw.js","./linked-devices-model-DbkbB7KM.js","./device-picker-model-DJj6igTj.js","./authed-media-Cf82_ejX.js","./Showroom-BKLoHB4Z.js","./EmbedPlayerPage-Crrh_6YT.js","./Library-B4Nw3n28.js","./user-x-Drhirj9Y.js","./user-round-NWWWc7PC.js","./AdminSectionedPage-USP4OV_Y.js","./use-scenes-feed-DCExYbbk.js","./Recordings-EMQC9iqz.js","./scissors-DjP6Unuk.js","./location-owned-usage-C21QUrwl.js","./eraser-CsYhDDbY.js","./hard-drive-download-CWqd_JKb.js","./format-size-DIxKXxtj.js","./Viewer-B9mEIKqz.js","./monitor-off-BUehkWHc.js","./Build-CXn4HT3p.js","./ungroup-BQTGGbbf.js","./DeviceDoActionFields-C1LG9nW0.js","./notification-schedule-field-DiZ-TJBp.js","./CompositionEditorPage-wfYMLlvy.js","./Locations-B7dC2DyF.js","./speaker-CnmwOCLp.js","./Addons-CkBmnKjV.js","./useNodeUrlSelection-ibxCoFYh.js","./AiProfiles-QWD8PlMr.js","./message-square-plus-C3grB9GT.js","./send-CV6GWVOX.js","./MyAccess-TAG05L5N.js","./key-round-CasJ848Z.js","./monitor-smartphone-CCDiXDn-.js","./unlink-669jprEf.js","./SessionsList-B1Ni2lo_.js","./Logs-4XWMmfpD.js","./timer-reset-nORqwwje.js","./IntegrationHub-BEu0isNR.js","./settings-2--KyzHb5N.js","./AddonAssetIcon-C3Ltt0yX.js","./addon-display-names-BkwMrExv.js","./Identity-CNNb8wrU.js","./key-D0VHbthb.js","./history-DOf9zSG-.js","./Network-ReY1qUoQ.js","./log-in-UZRiT8Rq.js","./Integrations-CuZucOyR.js","./recycle-BVxTT0po.js","./Data-CmT5GPx9.js","./cloud-upload-aziKggfg.js","./System-DEOHPmr3.js","./Cluster-tgWdVHND.js","./memory-stick-l6hXPEuG.js","./Terminal-dVu7TTAE.js","./Terminal-kHJ-D0s7.css","./Notifications-CqTEfaZ_.js","./list-ordered-B14sQnH2.js","./Calendars-DN9ln21d.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_-DVRZb8h3.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{$t as P,Ai as F,Br as I,Cr as L,Dr as R,Ei as ee,Er as te,Fn as ne,Fr as re,Hi as ie,Ii as ae,Jr as z,Kn as oe,Kt as se,Nt as ce,On as le,Q as B,Qn as ue,Rr as de,Si as fe,T as pe,Tn as me,Tr as he,Xn as ge,Xr as _e,Yi as ve,Z as ye,Zt as be,_t as xe,an as Se,bi as Ce,bn as we,dn as Te,dt as Ee,ea as De,fi as Oe,fn as ke,ft as Ae,hi as je,ht as Me,it as Ne,ji as Pe,mr as Fe,na as Ie,oa as Le,or as Re,ot as ze,pi as Be,pn as Ve,rr as He,rt as Ue,sn as We,tr as Ge,un as Ke,ut as qe,vr as Je,xn as Ye,yi as Xe,zn as Ze,zr as Qe}from"./player-overlays-Db_o1Zm2.js";import{Hr as $e,Mr as et,Xn as tt,fn as nt,lr as rt,mi as it,mn as at,n as ot,qr as st,rr as ct,t as lt}from"./client-CUuI767h.js";import{a as ut,c as dt,d as ft,f as pt,h as mt,i as ht,l as gt,m as _t,n as vt,o as yt,p as bt,r as xt,s as St,t as Ct,u as wt}from"./video-Dzs93Xor.js";import{Al as Tt,An as Et,At as Dt,Cu as Ot,Dn as kt,Do as At,Er as jt,Ga as Mt,Gn as Nt,Gr as Pt,J as Ft,Jn as It,Jr as Lt,Kn as Rt,Kr as zt,Ma as Bt,Mn as Vt,Mt as Ht,Na as Ut,Nn as Wt,Nr as Gt,Nt as Kt,On as qt,Pa as Jt,Pn as Yt,Pt as Xt,Qn as Zt,Ra as Qt,Sa as $t,Su as en,Tn as tn,Tt as nn,Un as rn,Va as an,Vl as on,W as sn,Wa as cn,Xn as ln,Yn as un,Yr as dn,Zl as fn,Zn as pn,_t as mn,_u as hn,au as gn,br as _n,cl as vn,da as yn,fa as bn,fo as xn,fu as Sn,ga as Cn,gu as wn,ha as Tn,hr as En,hu as Dn,ir as On,it as kn,iu as An,jn,jt as Mn,kn as Nn,kt as Pn,l as Fn,lu as In,ma as Ln,n as Rn,nn as zn,nr as Bn,pl as Vn,pt as Hn,pu as Un,qn as Wn,qr as Gn,ru as Kn,s as qn,sl as Jn,ut as Yn,uu as Xn,va as Zn,vu as Qn,wn as $n,yn as er,yt as tr,za as nr}from"./src-CL0G8g2V.js";import{r as rr,t as ir}from"./_virtual_mf___mfe_internal__admin_ui_host__loadShare__react_mf_2_dom__loadShare__.js-DPkvGqVU.js";import{t as ar}from"./_virtual_mf___mfe_internal__admin_ui_host__loadShare__react_mf_2_dom_mf_1_client__loadShare__.js-Cb2QlpvS.js";import{n as or,t as V}from"./i18n-RHwbGLC0.js";import{a as sr,c as cr,i as lr,l as ur,n as dr,o as fr,s as pr,t as H,u as mr}from"./useTranslation-D3Is_4B6.js";import"./mount-DJj6igTj.js";import{n as hr,t as gr}from"./addon-icons-context-BjcmJD_J.js";import{t as _r}from"./notification-schedule-field-DiZ-TJBp.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 vr=/^(?:[a-z][a-z0-9+.-]*:|[\\/]{2})/i,yr=/^[\\/]{2}/;function br(e,t){return t+e.replace(/\\/g,`/`)}var xr=`popstate`;function Sr(e){return typeof e==`object`&&!!e&&`pathname`in e&&`search`in e&&`hash`in e&&`state`in e&&`key`in e}function Cr(e={}){function t(e,t){let n=t.state?.masked,{pathname:r,search:i,hash:a}=n||e.location;return Er(``,{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:Dr(t)}return kr(t,n,null,e)}function U(e,t){if(e===!1||e==null)throw Error(t)}function W(e,t){if(!e){typeof console<`u`&&console.warn(t);try{throw Error(t)}catch{}}}function wr(){return Math.random().toString(36).substring(2,10)}function Tr(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 Er(e,t,n=null,r,i){return{pathname:typeof e==`string`?e:e.pathname,search:``,hash:``,...typeof t==`string`?Or(t):t,state:n,key:t&&t.key||r||wr(),mask:i}}function Dr({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 Or(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 kr(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=Sr(e)?e:Er(h.location,e,t);n&&n(r,e),l=u()+1;let d=Tr(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=Sr(e)?e:Er(h.location,e,t);n&&n(r,e),l=u();let i=Tr(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 Ar(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(xr,d),c=e,()=>{i.removeEventListener(xr,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 Ar(e,t,n=!1){let r=`http://localhost`;e&&(r=e.location.origin===`null`?e.location.href:e.location.origin),U(r,`No window.location.(origin|href) available to create URL`);let i=typeof t==`string`?t:Dr(t);return i=i.replace(/ $/,`%20`),!n&&yr.test(i)&&(i=r+i),new URL(i,r)}function jr(e,t,n=`/`){return Mr(e,t,n,!1)}function Mr(e,t,n,r,i){let a=Qr((typeof t==`string`?Or(t):t).pathname||`/`,n);if(a==null)return null;let o=i??Pr(e),s=null,c=Zr(a);for(let e=0;s==null&&e<o.length;++e)s=qr(o[e],c,r);return s}function Nr(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 Pr(e){let t=Fr(e);return Lr(t),t}function Fr(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;U(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&&(U(e.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${l}".`),Fr(e.children,t,u,l,o)),!(e.path==null&&!e.index)&&t.push({path:l,score:Gr(l,e.index),routesMeta:u.map((e,t)=>{let[n,r]=Xr(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 Ir(e.path))a(e,t,!0,n)}),t}function Ir(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=Ir(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 Lr(e){e.sort((e,t)=>e.score===t.score?Kr(e.routesMeta.map(e=>e.childrenIndex),t.routesMeta.map(e=>e.childrenIndex)):t.score-e.score)}var Rr=/^:[\w-]+$/,zr=3,Br=2,Vr=1,Hr=10,Ur=-2,Wr=e=>e===`*`;function Gr(e,t){let n=e.split(`/`),r=n.length;return n.some(Wr)&&(r+=Ur),t&&(r+=Br),n.filter(e=>!Wr(e)).reduce((e,t)=>e+(Rr.test(t)?zr:t===``?Vr:Hr),r)}function Kr(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 qr(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?Yr(u,l,s.matcher,s.compiledParams):Jr(u,l),f=s.route;if(!d&&c&&n&&!r[r.length-1].route.index&&(d=Jr({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:si(G([a,d.pathnameBase])),route:f}),d.pathnameBase!==`/`&&(a=G([a,d.pathnameBase]))}return o}function Jr(e,t){typeof e==`string`&&(e={path:e,caseSensitive:!1,end:!0});let[n,r]=Xr(e.path,e.caseSensitive,e.end);return Yr(e,t,n,r)}function Yr(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 Xr(e,t=!1,n=!0){W(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 Zr(e){try{return e.split(`/`).map(e=>decodeURIComponent(e).replace(/\//g,`%2F`)).join(`/`)}catch(t){return W(!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 Qr(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 $r(e,t=`/`){let{pathname:n,search:r=``,hash:i=``}=typeof e==`string`?Or(e):e,a;return n?(n=ai(n),a=n.startsWith(`/`)?ei(n.substring(1),`/`):ei(n,t)):a=t,{pathname:a,search:ci(r),hash:li(i)}}function ei(e,t){let n=oi(t).split(`/`);return e.split(`/`).forEach(e=>{e===`..`?n.length>1&&n.pop():e!==`.`&&n.push(e)}),n.length>1?n.join(`/`):`/`}function ti(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 ni(e){return e.filter((e,t)=>t===0||e.route.path&&e.route.path.length>0)}function ri(e){let t=ni(e);return t.map((e,n)=>n===t.length-1?e.pathname:e.pathnameBase)}function ii(e,t,n,r=!1){let i;typeof e==`string`?i=Or(e):(i={...e},U(!i.pathname||!i.pathname.includes(`?`),ti(`?`,`pathname`,`search`,i)),U(!i.pathname||!i.pathname.includes(`#`),ti(`#`,`pathname`,`hash`,i)),U(!i.search||!i.search.includes(`#`),ti(`#`,`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=$r(i,s),l=o&&o!==`/`&&o.endsWith(`/`),u=(a||o===`.`)&&n.endsWith(`/`);return!c.pathname.endsWith(`/`)&&(l||u)&&(c.pathname+=`/`),c}var ai=e=>e.replace(/[\\/]{2,}/g,`/`),G=e=>ai(e.join(`/`)),oi=e=>e.replace(/\/+$/,``),si=e=>oi(e).replace(/^\/*/,`/`),ci=e=>!e||e===`?`?``:e.startsWith(`?`)?e:`?`+e,li=e=>!e||e===`#`?``:e.startsWith(`#`)?e:`#`+e,ui=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 di(e){return e!=null&&typeof e.status==`number`&&typeof e.statusText==`string`&&typeof e.internal==`boolean`&&`data`in e}function fi(e){return G(e.map(e=>e.route.path).filter(Boolean))||`/`}var pi=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;function mi(e,t){let n=e;if(typeof n!=`string`||!vr.test(n))return{absoluteURL:void 0,isExternal:!1,to:n};let r=n,i=!1;if(pi)try{let e=new URL(window.location.href),r=yr.test(n)?new URL(br(n,e.protocol)):new URL(n),a=Qr(r.pathname,t);r.origin===e.origin&&a!=null?n=a+r.search+r.hash:i=!0}catch{W(!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 hi=[`POST`,`PUT`,`PATCH`,`DELETE`];new Set(hi);var gi=[`GET`,...hi];new Set(gi);var _i=[`about:`,`blob:`,`chrome:`,`chrome-untrusted:`,`content:`,`data:`,`devtools:`,`file:`,`filesystem:`,`javascript:`];function vi(e){try{return _i.includes(new URL(e).protocol)}catch{return!1}}var yi=g(null);yi.displayName=`DataRouter`;var bi=g(null);bi.displayName=`DataRouterState`;var xi=g(!1);function Si(){return v(xi)}var Ci=g({isTransitioning:!1});Ci.displayName=`ViewTransition`;var wi=g(new Map);wi.displayName=`Fetchers`;var Ti=g(null);Ti.displayName=`Await`;var K=g(null);K.displayName=`Navigation`;var Ei=g(null);Ei.displayName=`Location`;var q=g({outlet:null,matches:[],isDataRoute:!1});q.displayName=`Route`;var Di=g(null);Di.displayName=`RouteError`;var Oi=`REACT_ROUTER_ERROR`,ki=`REDIRECT`,Ai=`ROUTE_ERROR_RESPONSE`;function ji(e){if(e.startsWith(`${Oi}:${ki}:{`))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 Mi(e){if(e.startsWith(`${Oi}:${Ai}:{`))try{let t=JSON.parse(e.slice(40));if(typeof t==`object`&&t&&typeof t.status==`number`&&typeof t.statusText==`string`)return new ui(t.status,t.statusText,t.data)}catch{}}function Ni(e,{relative:t}={}){U(Pi(),`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}=Ui(e,{relative:t}),s=a;return n!==`/`&&(s=a===`/`?n:G([n,a])),r.createHref({pathname:s,search:o,hash:i})}function Pi(){return v(Ei)!=null}function J(){return U(Pi(),`useLocation() may be used only in the context of a <Router> component.`),v(Ei).location}function Fi(){return v(Ei).navigationType}var Ii=`You should call navigate() in a React.useEffect(), not when your component is first rendered.`;function Li(e){v(K).static||x(e)}function Ri(){let{isDataRoute:e}=v(q);return e?ca():zi()}function zi(){U(Pi(),`useNavigate() may be used only in the context of a <Router> component.`);let e=v(yi),{basename:t,navigator:n}=v(K),{matches:r}=v(q),{pathname:i}=J(),a=JSON.stringify(ri(r)),o=j(!1);return Li(()=>{o.current=!0}),p((r,s={})=>{if(W(o.current,Ii),!o.current)return;if(typeof r==`number`){n.go(r);return}let c=ii(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 Bi=g(null);function Vi(e){let t=v(q).outlet;return d(()=>t&&k(Bi.Provider,{value:e},t),[t,e])}function Hi(){let{matches:e}=v(q);return e[e.length-1]?.params??{}}function Ui(e,{relative:t}={}){let{matches:n}=v(q),{pathname:r}=J(),i=JSON.stringify(ri(n));return d(()=>ii(e,JSON.parse(i),r,t===`path`),[e,i,r,t])}function Wi(e,t){return Gi(e,t)}function Gi(e,t,n){U(Pi(),`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||``;ua(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
-
4
- Please change the parent <Route path="${e}"> to <Route path="${e===`/`?`*`:`${e}/*`}">.`)}let u=J(),d;if(t){let e=typeof t==`string`?Or(t):t;U(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})):jr(e,{pathname:p});W(l||m!=null,`No routes matched location "${d.pathname}${d.search}${d.hash}" `),W(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=Qi(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(Ei.Provider,{value:{location:{pathname:`/`,search:``,hash:``,state:null,key:`default`,mask:void 0,...d},navigationType:`POP`}},h):h}function Ki(){let e=sa(),t=di(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 qi=k(Ki,null),Ji=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=Mi(e.digest);t&&(e=t)}let t=e===void 0?this.props.children:k(q.Provider,{value:this.props.routeContext},k(Di.Provider,{value:e,children:this.props.component}));return this.context?k(Xi,{error:e},t):t}};Ji.contextType=xi;var Yi=new WeakMap;function Xi({children:e,error:t}){let{basename:n}=v(K);if(typeof t==`object`&&t&&`digest`in t&&typeof t.digest==`string`){let e=ji(t.digest);if(e){let r=Yi.get(t);if(r)throw r;let i=mi(e.location,n),a=i.absoluteURL||i.to;if(vi(a))throw Error(`Invalid redirect location`);if(pi&&!Yi.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 Yi.set(t,n),n}return k(`meta`,{httpEquiv:`refresh`,content:`0;url=${a}`})}}return e}function Zi({routeContext:e,match:t,children:n}){let r=v(yi);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 Qi(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);U(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:fi(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||qi,o&&(s<0&&c===0?(ua(`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(Zi,{match:n,routeContext:{outlet:e,matches:m,isDataRoute:r!=null},children:t})};return r&&(n.route.ErrorBoundary||n.route.errorElement||c===0)?k(Ji,{location:r.location,revalidation:r.revalidation,component:f,error:u,children:h(),routeContext:{outlet:null,matches:m,isDataRoute:!0},onError:l}):h()},null)}function $i(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function ea(e){let t=v(yi);return U(t,$i(e)),t}function ta(e){let t=v(bi);return U(t,$i(e)),t}function na(e){let t=v(q);return U(t,$i(e)),t}function ra(e){let t=na(e),n=t.matches[t.matches.length-1];return U(n.route.id,`${e} can only be used on routes that contain a unique "id"`),n.route.id}function ia(){return ra(`useRouteId`)}function aa(){let e=ta(`useNavigation`);return d(()=>{let{matches:t,historyAction:n,...r}=e.navigation;return r},[e.navigation])}function oa(){let{matches:e,loaderData:t}=ta(`useMatches`);return d(()=>e.map(e=>Nr(e,t)),[e,t])}function sa(){let e=v(Di),t=ta(`useRouteError`),n=ra(`useRouteError`);return e===void 0?t.errors?.[n]:e}function ca(){let{router:e}=ea(`useNavigate`),t=ra(`useNavigate`),n=j(!1);return Li(()=>{n.current=!0}),p(async(r,i={})=>{W(n.current,Ii),n.current&&(typeof r==`number`?await e.navigate(r):await e.navigate(r,{fromRouteId:t,...i}))},[e,t])}var la={};function ua(e,t,n){!t&&!la[e]&&(la[e]=!0,W(!1,n))}h(da);function da({routes:e,manifest:t,future:n,state:r,isStatic:i,onError:a}){return Gi(e,void 0,{manifest:t,state:r,isStatic:i,onError:a,future:n})}function Y({to:e,replace:t,state:n,relative:r}){U(Pi(),`<Navigate> may be used only in the context of a <Router> component.`);let{static:i}=v(K);W(!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=Ri(),l=ii(e,ri(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){U(!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 fa({basename:e=`/`,children:t=null,location:n,navigationType:r=`POP`,navigator:i,static:a=!1,useTransitions:o}){U(!Pi(),`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=Or(n));let{pathname:l=`/`,search:u=``,hash:f=``,state:p=null,key:m=`default`,mask:h}=n,g=d(()=>{let e=Qr(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 W(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(Ei.Provider,{children:t,value:g}))}function pa({children:e,location:t}){return Wi(ma(e),t)}function ma(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,ma(e.props.children,i));return}U(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>`),U(!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=ma(e.props.children,i)),n.push(a)}),n}var ha=`get`,ga=`application/x-www-form-urlencoded`;function _a(e){return typeof HTMLElement<`u`&&e instanceof HTMLElement}function va(e){return _a(e)&&e.tagName.toLowerCase()===`button`}function ya(e){return _a(e)&&e.tagName.toLowerCase()===`form`}function ba(e){return _a(e)&&e.tagName.toLowerCase()===`input`}function xa(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function Sa(e,t){return e.button===0&&(!t||t===`_self`)&&!xa(e)}function Ca(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 wa(e,t){let n=Ca(e);return t&&t.forEach((e,r)=>{n.has(r)||t.getAll(r).forEach(e=>{n.append(r,e)})}),n}var Ta=null;function Ea(){if(Ta===null)try{new FormData(document.createElement(`form`),0),Ta=!1}catch{Ta=!0}return Ta}var Da=new Set([`application/x-www-form-urlencoded`,`multipart/form-data`,`text/plain`]);function Oa(e){return e!=null&&!Da.has(e)?(W(!1,`"${e}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${ga}"`),null):e}function ka(e,t){let n,r,i,a,o;if(ya(e)){let o=e.getAttribute(`action`);r=o?Qr(o,t):null,n=e.getAttribute(`method`)||ha,i=Oa(e.getAttribute(`enctype`))||ga,a=new FormData(e)}else if(va(e)||ba(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?Qr(s,t):null,n=e.getAttribute(`formmethod`)||o.getAttribute(`method`)||ha,i=Oa(e.getAttribute(`formenctype`))||Oa(o.getAttribute(`enctype`))||ga,a=new FormData(o,e),!Ea()){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(_a(e))throw Error(`Cannot submit element that is not <form>, <button>, or <input type="submit|image">`);else n=ha,r=null,i=ga,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 Aa={"&":`\\u0026`,">":`\\u003e`,"<":`\\u003c`,"\u2028":`\\u2028`,"\u2029":`\\u2029`},ja=/[&><\u2028\u2029]/g;function Ma(e){return e.replace(ja,e=>Aa[e])}function Na(e,t){if(e===!1||e==null)throw Error(t)}function Pa(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&&Qr(i.pathname,t)===`/`?i.pathname=`${oi(t)}/_root.${r}`:i.pathname=`${oi(i.pathname)}.${r}`,i}async function Fa(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 Ia(e){return e!=null&&typeof e.page==`string`}function La(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 Ra(e,t,n){return Ua((await Promise.all(e.map(async e=>{let r=t.routes[e.route.id];if(r){let e=await Fa(r,n);return e.links?e.links():[]}return[]}))).flat(1).filter(La).filter(e=>e.rel===`stylesheet`||e.rel===`preload`).map(e=>e.rel===`stylesheet`?{...e,rel:`prefetch`,as:`style`}:{...e,rel:`prefetch`}))}function za(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 Ba(e,t,{includeHydrateFallback:n}={}){return Va(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 Va(e){return[...new Set(e)]}function Ha(e){let t={},n=Object.keys(e).sort();for(let r of n)t[r]=e[r];return t}function Ua(e,t){let n=new Set,r=new Set(t);return e.reduce((e,i)=>{if(t&&!Ia(i)&&i.as===`script`&&i.href&&r.has(i.href))return e;let a=JSON.stringify(Ha(i));return n.has(a)||(n.add(a),e.push({key:a,link:i})),e},[])}function Wa(){let e=v(yi);return Na(e,`You must render this element inside a <DataRouterContext.Provider> element`),e}function Ga(){let e=v(bi);return Na(e,`You must render this element inside a <DataRouterStateContext.Provider> element`),e}var Ka=g(void 0);Ka.displayName=`FrameworkContext`;function qa(){let e=v(Ka);return Na(e,`You must render this element inside a <HydratedRouter> element`),e}function Ja(e,t){let n=v(Ka),[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:Ya(c,h),onBlur:Ya(l,g),onMouseEnter:Ya(u,h),onMouseLeave:Ya(d,g),onTouchStart:Ya(p,h)}]:[a,m,{}]:[!1,m,{}]}function Ya(e,t){return n=>{e&&e(n),n.defaultPrevented||t(n)}}function Xa({page:e,...t}){let n=Si(),{nonce:r}=qa(),{router:i}=Wa(),a=d(()=>jr(i.routes,e,i.basename),[i.routes,e,i.basename]);return a?(t.nonce==null&&r&&(t={...t,nonce:r}),k(n?Qa:$a,{page:e,matches:a,...t})):null}function Za(e){let{manifest:t,routeModules:n}=qa(),[r,i]=f([]);return s(()=>{let r=!1;return Ra(e,t,n).then(e=>{r||i(e)}),()=>{r=!0}},[e,t,n]),r}function Qa({page:e,matches:t,...n}){let r=J(),{future:i}=qa(),{basename:a}=Wa();return k(b,null,d(()=>{if(e===r.pathname+r.search+r.hash)return[];let n=Pa(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 $a({page:e,matches:t,...n}){let r=J(),{future:i,manifest:a,routeModules:o}=qa(),{basename:s}=Wa(),{loaderData:c,matches:l}=Ga(),u=d(()=>za(e,t,l,a,r,`data`),[e,t,l,a,r]),f=d(()=>za(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=Pa(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(()=>Ba(f,a),[f,a]),h=Za(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 eo(...e){return t=>{e.forEach(e=>{typeof e==`function`?e(t):e!=null&&(e.current=t)})}}var to=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;try{to&&(window.__reactRouterVersion=`7.18.0`)}catch{}function no({basename:e,children:t,useTransitions:n,window:r}){let i=j();i.current??=Cr({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(fa,{basename:e,children:t,location:o.location,navigationType:o.action,navigator:a,useTransitions:n})}function ro({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(fa,{basename:e,children:t,location:i.location,navigationType:i.action,navigator:n,useTransitions:r})}ro.displayName=`unstable_HistoryRouter`;var io=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`&&vr.test(l),x=mi(l,h);l=x.to;let S=Ni(l,{relative:r}),C=J(),w=null;if(o){let e=ii(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]=Ja(n,p),O=fo(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:eo(m,E),target:c,"data-discover":!y&&t===`render`?`true`:void 0});return T&&!y?k(b,null,M,k(Xa,{page:S})):M});io.displayName=`Link`;var ao=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=Ui(a,{relative:c.relative}),d=J(),f=v(bi),{navigator:p,basename:m}=v(K),h=f!=null&&Co(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=Qr(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(io,{...c,"aria-current":w,className:T,ref:l,style:E,to:a,viewTransition:o},typeof s==`function`?s(C):s)});ao.displayName=`NavLink`;var oo=o(({discover:e=`render`,fetcherKey:t,navigate:n,reloadDocument:r,replace:i,state:a,method:o=ha,action:s,onSubmit:c,relative:l,preventScrollReset:d,viewTransition:f,defaultShouldRevalidate:p,...m},h)=>{let{useTransitions:g}=v(K),_=go(),y=_o(s,{relative:l}),b=o.toLowerCase()===`get`?`get`:`post`,x=typeof s==`string`&&vr.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})});oo.displayName=`Form`;function so({getKey:e,storageKey:t,...n}){let r=v(Ka),{basename:i}=v(K),a=J(),o=oa();xo({getKey:e,storageKey:t});let s=d(()=>{if(!r||!e)return null;let t=bo(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})(${Ma(JSON.stringify(t||vo))}, ${Ma(JSON.stringify(s))})`}})}so.displayName=`ScrollRestoration`;function co(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function lo(e){let t=v(yi);return U(t,co(e)),t}function uo(e){let t=v(bi);return U(t,co(e)),t}function fo(e,{target:t,replace:n,mask:r,state:i,preventScrollReset:a,relative:o,viewTransition:s,defaultShouldRevalidate:c,useTransitions:l}={}){let d=Ri(),f=J(),m=Ui(e,{relative:o});return p(p=>{if(Sa(p,t)){p.preventDefault();let t=n===void 0?Dr(f)===Dr(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 po(e){W(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(Ca(e)),n=j(!1),r=J(),i=d(()=>wa(r.search,n.current?null:t.current),[r.search]),a=Ri();return[i,p((e,t)=>{let r=Ca(typeof e==`function`?e(new URLSearchParams(i)):e);n.current=!0,a(`?`+r,t)},[a,i])]}var mo=0,ho=()=>`__${String(++mo)}__`;function go(){let{router:e}=lo(`useSubmit`),{basename:t}=v(K),n=ia(),r=e.fetch,i=e.navigate;return p(async(e,a={})=>{let{action:o,method:s,encType:c,formData:l,body:u}=ka(e,t);a.navigate===!1?await r(a.fetcherKey||ho(),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 _o(e,{relative:t}={}){let{basename:n}=v(K),r=v(q);U(r,`useFormAction must be used inside a RouteContext`);let[i]=r.matches.slice(-1),a={...Ui(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])),Dr(a)}var vo=`react-router-scroll-positions`,yo={};function bo(e,t,n,r){let i=null;return r&&(i=r(n===`/`?e:{...e,pathname:Qr(e.pathname,n)||e.pathname},t)),i??=e.key,i}function xo({getKey:e,storageKey:t}={}){let{router:n}=lo(`useScrollRestoration`),{restoreScrollPosition:r,preventScrollReset:i}=uo(`useScrollRestoration`),{basename:a}=v(K),o=J(),c=oa(),l=aa();s(()=>(window.history.scrollRestoration=`manual`,()=>{window.history.scrollRestoration=`auto`}),[]),So(p(()=>{if(l.state===`idle`){let t=bo(o,c,a,e);yo[t]=window.scrollY}try{sessionStorage.setItem(t||vo,JSON.stringify(yo))}catch(e){W(!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||vo);e&&(yo=JSON.parse(e))}catch{}},[t]),x(()=>{let t=n?.enableScrollRestoration(yo,()=>window.scrollY,e?(t,n)=>bo(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{W(!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 So(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 Co(e,{relative:t}={}){let n=v(Ci);U(n!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:r}=lo(`useViewTransitionState`),i=Ui(e,{relative:t});if(!n.isTransitioning)return!1;let a=Qr(n.currentLocation.pathname,r)||n.currentLocation.pathname,o=Qr(n.nextLocation.pathname,r)||n.nextLocation.pathname;return Jr(i.pathname,o)!=null||Jr(i.pathname,a)!=null}var wo=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}}))()),To=/\s([^'"/\s><]+?)[\s/>]|([^\s=]+)=\s?(".*?"|'.*?')/g;function Eo(e){var t={type:`tag`,name:``,voidElement:!1,attrs:{},children:[]},n=e.match(/<\/?([^\s]+?)[/\s>]/);if(n&&(t.name=n[1],(wo.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(To),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 Do=/<[a-zA-Z0-9\-\!\/](?:"[^"]*"|'[^']*'|[^'">])*>/g,Oo=/^\s*$/,ko=Object.create(null);function Ao(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(Ao,``)+`</`+t.name+`>`;case`comment`:return e+`<!--`+t.comment+`-->`}}var jo={parse:function(e,t){t||={},t.components||=ko;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(Do,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=Eo(s);return a<0?(r.push(m),r):((l=i[a]).children.push(m),r)}if(u&&(a++,(n=Eo(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);Oo.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+Ao(``,t)},``)}};a();var Mo=(e,t)=>{if(!e)return!1;let n=e.props?.children??e.children;return t?n.length>0:!!n},No=e=>{if(!e)return[];let t=e.props?.children??e.children;return e.props?.i18nIsDynamicList?Fo(t):t},Po=e=>Array.isArray(e)&&e.every(O),Fo=e=>Array.isArray(e)?e:[e],Io=(e,t)=>{let n={...t};return n.props={...t.props,...e.props},n},Lo=e=>{let t={};if(!e)return t;let n=e=>{Fo(e).forEach(e=>{cr(e)||(Mo(e)?n(No(e)):pr(e)&&!O(e)&&Object.assign(t,e))})};return n(e),t},Ro=(e,t,n,r)=>{if(!e)return``;let i=``,a=Fo(e),o=t?.transSupportBasicHtmlNodes?t.transKeepBasicHtmlNodesFor??[]:[];return a.forEach((e,a)=>{if(cr(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=cr(d)?d:Ro(d,t,n,r);i+=`<${c}>${e}</${c}>`;return}let f=Ro(d,t,n,r);i+=`<${a}>${f}</${a}>`;return}if(e===null){ur(n,`TRANS_NULL_VALUE`,`Passed in a null value as child`,{i18nKey:r});return}if(pr(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}ur(n,`TRANS_INVALID_OBJ`,`Invalid child - Object should only have keys {{ value, format }} (format is optional).`,{i18nKey:r,child:e});return}ur(n,`TRANS_INVALID_VAR`,`Passed in a variable like {number} - pass variables for interpolation as full objects like {{number}}.`,{i18nKey:r,child:e})}),i},zo=(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+=`&lt;`,o+=1)}else a+=e[o],o+=1;return a},Bo=(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=>{Fo(e).forEach(e=>{cr(e)||(Mo(e)?f(No(e)):pr(e)&&!O(e)&&Object.assign(d,e))})};f(e);let p=zo(n,s,d),m=jo.parse(`<0>${p}</0>`),h={...d,...a},g=(e,t,n)=>{let r=No(e),i=v(r,t.children,n);return Po(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=Fo(e),l=Fo(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];cr(t)&&(m[e]=fr(t))});let y=Object.keys(m).length===0?p:Io({props:m},p),b=O(y),x=b&&Mo(n,!0)&&!n.voidElement,S=u&&pr(y)&&y.dummy&&!b,C=pr(t)&&Object.hasOwnProperty.call(t,n.name);if(cr(y)){let t=r.services.interpolator.interpolate(y,h,r.language);e.push(t)}else if(Mo(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?Fo(No(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(pr(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:sr().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 No(v([{dummy:!0,children:e||[]}],m,Fo(e||[]))[0])},Vo=(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})},Ho=(e,t)=>e.map((e,n)=>Vo(e,n,t)),Uo=(e,t)=>{let n={};return Object.keys(e).forEach(r=>{Object.assign(n,{[r]:Vo(e[r],r,t)})}),n},Wo=(e,t,n,r)=>e?Array.isArray(e)?Ho(e,t):pr(e)?Uo(e,t):(mr(n,`TRANS_INVALID_COMPONENTS`,`<Trans /> "components" prop expects an object or array`,{i18nKey:r}),null):null,Go=e=>!pr(e)||Array.isArray(e)?!1:Object.keys(e).reduce((e,t)=>e&&Number.isNaN(Number.parseFloat(t)),!0);function Ko({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||lr();if(!m)return mr(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={...sr(),...m.options?.react},_=l||h.ns||m.options?.defaultNS;_=cr(_)?[_]:_||[`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=Ro(e,g,m,r),w=s||y?.defaultValue||C||g.transEmptyNodeValue||(typeof r==`function`?or(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=Lo(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=Wo(S,j,m,r),N=M||e,P=null;Go(M)&&(P=M,N=e);let F=Bo(N,P,j,m,g,A,b),I=n??g.defaultTransParent;return I?k(I,p,F):F}a();function qo({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(dr)||{},g=u||m||lr(),_=d||g?.t.bind(g);return Ko({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 Jo={streaming:{icon:Ct,labelKey:`capabilityBadges.streaming`},detection:{icon:de,labelKey:`capabilityBadges.detection`},recording:{icon:Oe,labelKey:`capabilityBadges.recording`},audio:{icon:ge,labelKey:`capabilityBadges.audio`},snapshot:{icon:ee,labelKey:`capabilityBadges.snapshot`},motion:{icon:qe,labelKey:`capabilityBadges.motion`},ptz:{icon:Ke,labelKey:`capabilityBadges.ptz`},webrtc:{icon:Ye,labelKey:`capabilityBadges.webrtc`},onvif:{icon:Se,labelKey:`capabilityBadges.onvif`},analytics:{icon:_e,labelKey:`capabilityBadges.analytics`},"battery-operated":{icon:ie,labelKey:`capabilityBadges.battery`},"native-snapshot":{icon:ee,labelKey:`capabilityBadges.nativeSnapshot`},"pan-tilt-zoom":{icon:Ke,labelKey:`capabilityBadges.ptz`},"two-way-audio":{icon:ge,labelKey:`capabilityBadges.twoWayAudio`},"doorbell-button":{icon:ae,labelKey:`capabilityBadges.doorbell`},rebootable:{icon:we,labelKey:`capabilityBadges.rebootable`},"vacuum-has-map":{icon:yt,labelKey:`capabilityBadges.map`},"vacuum-has-ai":{icon:be,labelKey:`capabilityBadges.aiObstacle`},"mower-has-map":{icon:yt,labelKey:`capabilityBadges.map`},"mower-has-targeted-mowing":{icon:he,labelKey:`capabilityBadges.targetedMowing`}},Yo=F;function Xo({capabilities:e,showLabels:t=!1}){let{t:n}=H();return N(`div`,{className:`flex items-center gap-1 flex-wrap`,children:e.map(e=>{let r=Jo[e],i=r?.icon??Yo,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 Zo={amcrest:{icon:_t,color:`#3b82f6`,label:`Amcrest`},hikvision:{icon:Te,color:`#a855f7`,label:`Hikvision`},reolink:{icon:Ye,color:`#06b6d4`,label:`Reolink`},homeassistant:{icon:Je,color:`#22d3ee`,label:`Home Assistant`},rtsp:{icon:Me,color:`#78716c`,label:`RTSP`},onvif:{icon:Me,color:`#78716c`,label:`ONVIF`}},Qo={sm:`h-4 w-4`,md:`h-5 w-5`,lg:`h-6 w-6`},$o={sm:`h-7 w-7`,md:`h-8 w-8`,lg:`h-10 w-10`};function es(e){let t=e.toLowerCase();return t.startsWith(`provider-`)?t.slice(9):t}function ts(e){return Zo[es(e)]??{icon:_t,color:`#78716c`,label:e}}function ns({type:e,size:t=`md`,showLabel:n}){let r=ts(e),i=r.icon,[a,o]=f(!1),s=hr(e);return y(`div`,{className:`flex items-center gap-2`,children:[N(`div`,{className:`flex items-center justify-center rounded-lg ${$o[t]}`,style:{backgroundColor:`${r.color}15`},children:a||!s?N(i,{className:Qo[t],style:{color:r.color}}):N(`img`,{src:s,alt:r.label,className:Qo[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 rs({deviceId:e,initialName:t,label:n=`Name`,layout:r=`inline`,onError:i,onSaved:a,onCancel:o}){let{t:c}=H(),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=Qt({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(fe,{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(Ee,{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(ne,{className:`h-3.5 w-3.5`})})]})})}a();function is({deviceId:e,initialLocation:t,label:n=`Location`,layout:r=`inline`,onError:i,onSaved:a,onCancel:o}){let{t:c}=H(),l=A(),[u,p]=f(!1),[m,h]=f(t??``),[g,_]=f(!1),v=j(null),{data:b}=$t(void 0,{enabled:u}),x=b??[];s(()=>{u||h(t??``)},[t,u]),s(()=>{u&&v.current?.focus()},[u]);let S=Jt({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(fe,{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(Ee,{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(Ge,{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(ne,{className:`h-3.5 w-3.5`})})]})})}a();function as(e){return Zn({addonId:e,projection:`slim`})}function os(e){return Ln({deviceId:e},{enabled:Number.isFinite(e)})}var ss=3e4,cs=2e3;function ls(e){let t=j(0);return t.current===0&&(t.current=Date.now()),bn({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>=ss?!1:cs}})}a();function us({deviceId:e}){let{t}=H(),n=A(),{data:r}=os(e),{data:i}=ls(e),[a,o]=f(null),s=nr({onSuccess:()=>{o(null),n.invalidateQueries({queryKey:[[`deviceManager`]]})},onError:e=>{o(`Could not change primary child: ${e.message}`)}});if(r==null||String(r.type??``)!==et.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=tr(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(mn,{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 ds=[`manufacturer`,`model`,`hardware`,`firmware`,`serialNumber`,`uid`,`mac`,`itemNo`];function fs(e){return e.replace(/([a-z])([A-Z])/g,`$1 $2`).replace(/^./,e=>e.toUpperCase())}function ps(e){return e==null?`—`:typeof e==`string`||typeof e==`number`||typeof e==`boolean`?String(e):JSON.stringify(e)}function ms(){let{t:e}=H(),t=ln(),n=pn(),{data:r}=Ln({deviceId:t??0},{enabled:t!==null}),{data:i}=yn({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(hs,{active:o===`identity`,onClick:()=>s(`identity`),label:e(`overviewAdapters.deviceInfoAdapter.identity`,`Identity`)}),N(hs,{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(rs,{deviceId:t,initialName:l}),N(is,{deviceId:t,initialLocation:_}),N(us,{deviceId:t}),N(Z,{label:e(`overviewAdapters.deviceInfoAdapter.type`,`Type`),value:u}),N(Z,{label:e(`overviewAdapters.deviceInfoAdapter.provider`,`Provider`),value:N(ns,{type:d,size:`sm`,showLabel:!0})}),N(Z,{label:e(`overviewAdapters.deviceInfoAdapter.capabilities`,`Capabilities`),value:g.length>0?N(Xo,{capabilities:g,showLabels:!0}):N(`span`,{className:`text-[11px] text-foreground-subtle`,children:e(`overviewAdapters.deviceInfoAdapter.none`,`None`)})})]}),b&&o===`hardware`&&N(gs,{metadata:v})]})}function hs({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 gs({metadata:e}){let{t}=H(),n=ds.filter(t=>t in e),r=Object.keys(e).filter(e=>!ds.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:fs(t),value:N(`span`,{className:`font-mono text-[11px] text-foreground break-all`,children:ps(e[t])})},t))})]})}function _s(e){return e.hubReachable?e.authOk===!1?{kind:`auth-expired`}:{kind:`cluster-degraded`,offlineAgents:e.offlineAgents,offlineAgentIds:e.offlineAgentIds}:{kind:`hub-unreachable`}}function vs(e){switch(e.kind){case`connected`:return null;case`reconnecting`:return{severity:`warning`,message:V.t(`connection.reconnecting`),i18nKey:`connection.reconnecting`,showSpinner:!0};case`cluster-degraded`:{let t=e.offlineAgentIds??[];return t.length>0?{severity:`warning`,message:V.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:V.t(`connection.degradedCount`,{count:e.offlineAgents}),i18nKey:`connection.degradedCount`,i18nParams:{count:e.offlineAgents},showSpinner:!0}:{severity:`warning`,message:V.t(`connection.degraded`),i18nKey:`connection.degraded`,showSpinner:!0}}case`hub-unreachable`:return{severity:`danger`,message:V.t(`connection.disconnected`),i18nKey:`connection.disconnected`,showSpinner:!0};case`auth-expired`:return{severity:`danger`,message:V.t(`connection.sessionExpired`),i18nKey:`connection.sessionExpired`,showSpinner:!1,action:`sign-in`}}}var ys=4e3,bs=5e3;function xs(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 Ss(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 Cs(e){let t=e.fetchFn??fetch,n=e.timeoutMs??ys,r=e.origin.replace(/\/+$/,``),i;try{i=await Ss(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 Ss(t,`${r}/health/details`,n,{Authorization:`Bearer ${o}`});e.ok&&(a=await e.json())}catch{}let s;try{s=xs(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 Ss(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 ws={kind:`connected`},Ts={kind:`reconnecting`};function Es(e){let t=e.probeIntervalMs??bs,n=new Set,r=ws,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(_s(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(ws);return}if(e===`connecting`){c(),s(Ts);return}(r.kind===`connected`||r.kind===`reconnecting`)&&s(Ts),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 Ds=null;function Os(){return Ds===null&&(Ds=Es({probe:()=>Cs({origin:ye(),getToken:()=>localStorage.getItem(`camstack_admin_token`)})})),Ds}function ks(e){Os().onSdkConnectionState(e)}var As=null,js=0;function Q(){if(!As){let e=js;As=Xt({serverUrl:ye(),token:localStorage.getItem(`camstack_admin_token`)??void 0,getLanguage:()=>V.language,onConnectionChange:t=>{e===js&&ks(t)}})}return As}function Ms(){let e=As;As=null,js+=1,e?.close()}var Ns=`camstack_admin_token`,Ps=`camstack_admin_refresh`,Fs=`camstack_admin_token_expires`;function Is(e){try{let t=localStorage.getItem(e);return t!==null&&t.length>0?t:null}catch{return null}}function Ls(e,t){try{t===null?localStorage.removeItem(e):localStorage.setItem(e,t)}catch{}}function Rs(){let e=Is(Ns);if(e===null)return null;let t=Is(Ps),n=Number(Is(Fs));return{token:e,...t===null?{}:{refreshToken:t},...Number.isFinite(n)&&n>0?{expiresAt:n}:{}}}function zs(e){Ls(Ns,e.token),Ls(Ps,e.refreshToken??null),Ls(Fs,e.expiresAt===void 0?null:String(e.expiresAt))}function Bs(){Ls(Ns,null),Ls(Ps,null),Ls(Fs,null)}function Vs(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 Hs(e){await fetch(B(`/api/auth/session`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({token:e})}).catch(()=>{})}var Us=new Set;function Ws(e){return Us.add(e),()=>Us.delete(e)}var Gs=null;function Ks(){return Gs===null&&(Gs=new Kt({refresh:async e=>{let t=Rs();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=>{zs(e),Q().setToken(e.token),Hs(e.token)},onExpired:()=>{Bs();for(let e of Us)e()}})),Gs}function qs(e){zs(e),Ks().adopt(e)}var Js=512;function Ys(e){if(!e||e.length>Js)return null;let t=$e(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 Xs=/^[A-Za-z0-9_-]{43,128}$/,Zs=/^[A-Za-z0-9._~-]{1,256}$/;function Qs(e){let{codeChallenge:t,state:n}=e;return!t||!Xs.test(t)||(e.codeChallengeMethod??`S256`)!==`S256`||!n||!Zs.test(n)?null:{codeChallenge:t,state:n,purpose:e.purpose===`step-up`?`step-up`:`new-session`}}var $s=`camstack:login-app-handoff`;function ec(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 Qs({codeChallenge:n(`codeChallenge`),state:n(`state`),purpose:n(`purpose`)})}catch{return null}}function tc(e,t=Date.now()){e!==null&&pc($s,JSON.stringify(e),ec,t)}function nc(e=Date.now()){return mc($s,ec,e)}function rc(e,t,n){return`${e}?${`code=${encodeURIComponent(t)}`}${n===void 0?``:`&state=${encodeURIComponent(n)}`}`}function ic(e,t=Date.now()){return _c(t)??Ys(e)}var ac=2048;function oc(e){return!e||e.length>ac||!e.startsWith(`/`)||e.startsWith(`//`)||e.includes(`\\`)||e.includes(`://`)||e.includes(`..`)||e===`/login`||e.startsWith(`/login?`)||e.startsWith(`/login/`)?null:e}function sc(e,t=Date.now()){pc(dc,e,oc,t)}function cc(e=Date.now()){return mc(dc,oc,e)}function lc(e,t=Date.now()){return cc(t)??oc(e)}var uc=`camstack:login-redirect`,dc=`camstack:login-next`,fc=10*6e4;function pc(e,t,n,r){let i=hc();if(!i||!n(t))return;let a={raw:t??``,at:r};try{i.setItem(e,JSON.stringify(a))}catch{}}function mc(e,t,n){let r=hc();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>fc?null:t(a)}catch{return null}}function hc(){if(typeof window>`u`)return null;try{return window.sessionStorage}catch{return null}}function gc(e,t=Date.now()){pc(uc,e,Ys,t)}function _c(e=Date.now()){return mc(uc,Ys,e)}function vc(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:yc(n.scopes)}}catch{return null}}function yc(e){return ot(e)}function bc(e){let t=vc(e);return t?t.exp*1e3<Date.now():!0}a();var xc=`changeme`;function Sc(e){return{token:e.token,...e.refreshToken===void 0?{}:{refreshToken:e.refreshToken},...e.expiresAt===void 0?{}:{expiresAt:e.expiresAt}}}async function Cc(e,t){if(await Hs(e),t.kind===`path`){window.location.replace(B(t.path));return}try{Ms();let e=nc();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(rc(t.url,n,e.state))}catch{window.location.replace(B(`/`))}}async function wc(e,t){await Hs(e),window.location.replace(B(t))}var Tc=g(null);function Ec({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=Vs(e),n=t?.token??null;if(t!==null&&n!==null){qs(t);let r=_c();if(r){Cc(n,r);return}let i=cc()??oc(e.get(`next`));if(i){wc(n,i);return}window.history.replaceState({},``,B(`/`))}}c()},[]);let c=async()=>{let e=Rs();if(e===null){i(!1);return}let t=e.token;if(e.refreshToken!==void 0){let n=Ks();n.adopt(e),await n.ensureFresh();let r=Rs();if(r===null){i(!1);return}t=r.token}if(bc(t)){Bs(),i(!1);return}let r=vc(t);if(!r){Bs(),i(!1);return}Hs(t),Q().trpcClient.system.info.query().then(()=>n(r)).catch(e=>{let t=e?.data?.code;t===`UNAUTHORIZED`||t===`FORBIDDEN`?(Ks().stop(),Bs(),Ms()):n(r)}).finally(()=>i(!1))};s(()=>Ws(()=>{Ms(),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 qs(Sc(r)),await Hs(a),Ms(),n(vc(a)),o(t===xc),{kind:`ok`}},[]),u=p(async(e,t)=>{let r=await Q().loginVerifyTotp(e,t,{refreshable:!0}),i=r.token;qs(Sc(r)),await Hs(i),Ms(),n(vc(i)),o(!1)},[]),d=p(async(e,t)=>{qs({token:e,...t}),await Hs(e),Ms(),n(vc(e)),o(!1)},[]),m=p(()=>{Q().logout().catch(()=>{}),Ks().stop(),Bs(),fetch(B(`/api/auth/session`),{method:`DELETE`}).catch(()=>{}),Ms(),n(null),o(!1)},[]),h=p(()=>{o(!1)},[]);return N(Tc.Provider,{value:{user:t,loading:r,mustChangePassword:a,login:l,verifyTotp:u,finalizePasskeyLogin:d,logout:m,clearMustChangePassword:h},children:e})}function Dc(){let e=v(Tc);if(!e)throw Error(`useAuth must be used within AuthProvider`);return e}a();function Oc(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 kc({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&&(Oc(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 Ac(e){return e>=8}a();function jc(e){if(typeof e!=`object`||!e)return;let t=Reflect.get(e,`windows`);if(!(!Array.isArray(t)||t.length===0))return e}function Mc(e){return e.type===`multiselect`}function Nc(e){let t=e.suggestions;return t===void 0||t.length===0?[]:t.map(e=>({value:e,label:e}))}function Pc(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 Fc(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`):[]}function Ic({field:e,values:t,onChange:n,onChangeMany:r,disabled:i,translationFn:a,onTestField:o,externalProbe:s,allFields:c,onAction:l}){let{t:u}=H();if(e.type===`tags`){if(!tn(e,t,c))return null;let r=e.creatable!==!1;return N(On,{mode:`multi`,options:Nc(e),value:Fc(t[e.key]),onChange:t=>n(e.key,t),disabled:i===!0||e.disabled===!0,creatable:r,...e.createLabel===void 0?{}:{createLabel:e.createLabel},...e.maxTags===void 0?{}:{maxItems:e.maxTags},label:Rc(e.label,a),description:e.description===void 0?void 0:Rc(e.description,a),placeholder:e.placeholder??u(`formBuilder.formBuilder.searchOrAdd`,`Search or add…`),testId:`config-tags-${e.key}`})}if(e.type===`schedule`){if(!tn(e,t,c))return null;let r=Rc(e.label,a),i=e.description===void 0?void 0:Rc(e.description,a),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}),i!==void 0&&N(`p`,{className:`text-[10px] text-foreground-subtle`,children:i}),N(_r,{mode:o,value:jc(t[e.key]),onChange:t=>n(e.key,t)})]})}return Mc(e)&&(Ac(e.options.length)||e.creatable===!0)?tn(e,t,c)?N(On,{mode:`multi`,options:Pc(e.options),value:Fc(t[e.key]),onChange:t=>n(e.key,t),disabled:i===!0||e.disabled===!0,creatable:e.creatable===!0,...e.createLabel===void 0?{}:{createLabel:e.createLabel},...e.maxItems===void 0?{}:{maxItems:e.maxItems},label:Rc(e.label,a),description:e.description===void 0?void 0:Rc(e.description,a),placeholder:e.placeholder??u(`formBuilder.formBuilder.searchToAdd`,`Search to add…`),testId:`config-multiselect-${e.key}`,listboxId:`msel-${e.key}`}):null:N($n,{field:e,values:t,onChange:n,onChangeMany:r,disabled:i,translationFn:a,onTestField:o,externalProbe:s,allFields:c,onAction:l})}function Lc(e){return/^[a-zA-Z0-9_]+(\.[a-zA-Z0-9_]+)+$/.test(e)}function Rc(e,t){if(e!==void 0)return t&&Lc(e)?t(e):e}function zc({section:e,values:t,onChange:n,onChangeMany:r,disabled:i,translationFn:a,onTestField:o,probeResults:s,onAction:c}){let[l,u]=f(e.defaultCollapsed??!1),d=e.style===`accordion`;if(e.fields.reduce((n,r)=>n+ +!!tn(r,t,e.fields),0)===0)return null;let p=e.fields,m=e.columns??2,h=m===1?`grid-cols-1`:m===3?`grid-cols-1 @[480px]:grid-cols-2 @[880px]:grid-cols-3`:m===4?`grid-cols-1 @[480px]:grid-cols-2 @[1140px]:grid-cols-4`:`grid-cols-1 @[480px]:grid-cols-2`,g=e.fields.length===1&&e.fields[0]?.type===`widget`?e.fields[0]:void 0,_=g!==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:[!_&&y(`div`,{className:[`flex items-center justify-between mb-2`,d?`cursor-pointer`:``].join(` `),onClick:d?()=>u(e=>!e):void 0,children:[y(`div`,{children:[e.title&&N(`h3`,{className:`text-[11px] font-semibold text-foreground-subtle uppercase tracking-wider`,children:Rc(e.title,a)}),e.description&&N(`p`,{className:`text-[10px] text-foreground-subtle mt-0.5`,children:Rc(e.description,a)})]}),d&&N(`span`,{className:`text-foreground-subtle text-xs ml-2`,children:l?`▸`:`▾`})]}),!(l&&!_)&&(g===void 0?N(E,{children:N(`div`,{className:`grid ${h} gap-x-3 gap-y-2.5`,children:p.map(l=>N(Ic,{field:l,values:t,onChange:n,onChangeMany:r,disabled:i,translationFn:a,onTestField:o,externalProbe:s?.[l.key],allFields:e.fields,onAction:c},l.key))})}):N($n,{field:g,values:t,onChange:n,onChangeMany:r,disabled:i,translationFn:a,onTestField:o,externalProbe:s?.[g.key],allFields:e.fields,onAction:c},g.key))]})}function Bc({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)},f=e=>{n({...t,...e});for(let t of Object.keys(e))s?.(t)};return N(`div`,{className:`space-y-4`,children:e.sections.map((e,t)=>N(zc,{section:e,values:u,onChange:d,onChangeMany:f,disabled:r,translationFn:i,onTestField:a,probeResults:o,onAction:c},`${e.id}-${t}`))})}function Vc({pendingCount:e,onSave:t,onDiscard:n,saving:r=!1,saveLabel:i=`Save`,discardLabel:a=`Discard`}){let{t:o}=H();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 Hc({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 Uc({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(Vc,{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(Bc,{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(Hc,{tabs:_.map(e=>({id:e.id,label:e.label})),activeId:E,onChange:D,countByTab:M,pendingByTab:P}),N(sn,{tabKey:E,children:N(Bc,{schema:k,values:t,onChange:r,onAction:i,disabled:s,visibilityContext:p})}),A]})}var Wc=`device-export`,Gc=`export`,Kc=`Export`;function qc(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(qc):e.type===`sub-tabs`?e.tabs.some(e=>e.fields.some(qc)):e.writerCapName===Wc}function Jc(e){return e.tab===`export`?!0:e.fields.some(qc)}var Yc=`host/extensions-panel`;function Xc(e){return e.type===`widget`?e.widgetId===Yc:e.type===`group`?e.fields.some(Xc):e.type===`sub-tabs`?e.tabs.some(e=>e.fields.some(Xc)):!1}function Zc(e){return e.fields.some(Xc)}function Qc(e,t){return!t&&e!==void 0&&tt.includes(e)}function $c(e){return e.location!==`top-tab`&&!Jc(e)&&!Zc(e)}function el(e,t,n,r){return!r||Qc(t,n)?!0:(e??[]).some($c)}function tl(e,t){for(let n of e){if(n.type===`group`){tl(n.fields,t);continue}if(n.type===`sub-tabs`){for(let e of n.tabs)tl(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 nl(e){let t={};for(let n of e)tl(n.fields,t);return t}a();function rl(e,t){return t&&t===`admin`?e:!0}function il(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?Jc(e)&&Jc(t)?e.id.localeCompare(t.id):(e.order??0)-(t.order??0):n.localeCompare(r)})};return e.tabs?{...t,tabs:e.tabs}:t}function al(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 ol(e){return e.key}function sl(e){if(!al(e))return e.value}function cl(e){return al(e)?null:e}function ll(e,t){for(let n of e)if(t(n),n.type===`group`)ll(n.fields,t);else if(n.type===`sub-tabs`)for(let e of n.tabs)ll(e.fields,t)}function ul(e){if(!e)return{};let t={};for(let n of e.sections)ll(n.fields,e=>{let n=ol(e);n!==null&&(t[n]=sl(e))});return t}function dl(e,t){if(!e)return null;let n=null;for(let r of e.sections)if(ll(r.fields,e=>{if(n!==null||ol(e)!==t)return;let r=cl(e);r&&r.writerCapName&&r.writerAddonId&&(n={capName:r.writerCapName,addonId:r.writerAddonId})}),n!==null)break;return n}function fl(e){return{...e,fields:e.fields.map(pl)}}function pl(e){return e.type===`separator`||e.type===`info`||e.type===`button`||e.type===`object-array`?e:{...e,readonlyField:!0}}function ml(e,t){return e&&{...e,sections:e.sections.map(e=>({...e,fields:e.fields.map(e=>{let n=cl(e);return n?rl(t,n.minRole)?e:pl(e):e})}))}}function hl({deviceId:e,sectionFilter:t,activeSubTab:n,onSubTabChange:r,flattenSubTabs:i,subTabGrouping:a}){let{t:o}=H(),s=A(),{user:c}=Dc(),l=c?.isAdmin===!0,u=j(!1),{data:f,isLoading:m}=Tn({deviceId:e},{refetchInterval:()=>u.current?!1:2500,enabled:Number.isFinite(e)}),{data:h}=Ln({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(fl),r=[...e,...n],i=t?r.filter(t):r.filter($c);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(()=>nl([...g?.sections??[],..._?.sections??[]]),[g,_]),x=d(()=>il(v),[v]),S=d(()=>ml(x,l),[x,l]),C=d(()=>ul(S),[S]),w=vn(),T=Jn(),E=cn(),D=Bt(),O=Mt({onSuccess:()=>{s.invalidateQueries({queryKey:[[`deviceManager`,`getDeviceAggregate`]]})}}),k={isPending:O.isPending,mutate:t=>{O.mutate({deviceId:e,changes:[...t]})}},M=kc({schema:S,serverValues:C,onImmediateSave:p(e=>{let t=Object.entries(e).map(([e,t])=>{let n=dl(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=dl(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:L,handleDiscard:R}=M;if(u.current=M.editingPaused,m)return y(`div`,{className:`flex items-center justify-center py-12 text-foreground-subtle`,children:[N(Re,{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 ee(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=it(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=it(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(Uc,{schema:S,values:P,pendingKeys:F,onChange:I,onAction:ee,onSave:L,onDiscard:R,disabled:k.isPending,activeSubTab:n,onSubTabChange:r,flattenTabs:i,visibilityContext:b})}var gl=`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`,_l=0,vl=10;function yl(e){if(e.trim()===``)return``;let t=Number.parseInt(e,10);return Number.isFinite(t)?String(t<_l?_l:t>vl?vl:t):``}function bl({value:e,onChange:t,disabled:n=!1,placeholder:r,className:i,id:a,"aria-label":o}){return N(`input`,{type:`number`,min:_l,max:vl,step:1,id:a,className:i??gl,"aria-label":o,placeholder:r,value:e,onChange:e=>{t(yl(e.target.value))},disabled:n})}function xl({deviceName:e,value:t,inheritedIcon:n,inheritedLabel:r,disabled:i,onChange:a}){let{t:o}=H(),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(gn,{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 Sl=`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`,Cl={icon:``,label:``,unit:``,precision:``,hidden:!1};function wl(e){return{icon:e?.icon??``,label:e?.label??``,unit:e?.unit??``,precision:e?.precision===void 0?``:String(e.precision),hidden:e?.hidden===!0}}function Tl(e){if(typeof e!=`object`||!e)return;let t=e.unit;return typeof t==`string`?t:void 0}function El(e){if(e.trim()===``)return;let t=Number.parseInt(e,10);return Number.isFinite(t)?t:void 0}function Dl(e,t){let n=El(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 Ol({deviceId:e}){let t=Le();Un();let{t:n}=H(),r=ze(),i=A(),{data:a}=Ln({deviceId:e},{enabled:e>0}),o=typeof a?.role==`string`&&a.role.length>0?a.role:null,s=o===null?void 0:nn[o],c=s?.kind===`numeric`,l=String(a?.type??``),u=o!==null||a?.parentDeviceId!==null&&a?.parentDeviceId!==void 0,d=qn(r.trpcClient,e,o??``),p=s?.kind===`numeric`?s.canonicalUnit:void 0,m=Tl(d)??p,h=m===void 0?void 0:rt(m)??m,g=h===void 0?void 0:nt(h),[_,v]=f(null),b=_??wl(a?.display),x=Ut({onSuccess:()=>{i.invalidateQueries({queryKey:[[`deviceManager`]]})}}),{data:S}=Cn({},{staleTime:6e4,enabled:o!==null}),C=an({onSuccess:()=>{i.invalidateQueries({queryKey:[[`deviceManager`]]})}});if(a==null)return null;let w=e=>{v({...b,...e})},T=()=>{x.mutate({deviceId:e,display:Dl(b,a.display)})},D=()=>{v(Cl),x.mutate({deviceId:e,display:null})},O=()=>{if(o===null)return;let e=El(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:Sn(k),M=o===null?hn(l,t):Dn(o,t),P={icon:j??M.icon,label:j===void 0?M.label:String(k)},F=o===null&&l===et.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)}`,L=o===null?``:Dn(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(xl,{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:Sl,"aria-label":n(`deviceDisplay.label`),placeholder:o===null?I:L,value:b.label,onChange:e=>w({label:e.target.value})})}),c&&y(E,{children:[N(Z,{label:n(`deviceDisplay.unit`),value:N(Fn,{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(bl,{"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:L}),children:n(`deviceDisplay.setRoleDefault`,{role:L})})]})]})}a();function kl({deviceId:e,onClose:t}){let{t:n}=H(),[r,i]=f(`info`),{data:a}=Ln({deviceId:e},{enabled:e>0});return N(qt,{open:!0,onOpenChange:e=>!e&&t(),children:y(Et,{width:`lg`,scroll:`body`,children:[y(Wt,{children:[N(Yt,{children:typeof a?.name==`string`&&a.name.length>0?a.name:`#${String(e)}`}),y(jn,{children:[n(`deviceQuickDetail.description`,{defaultValue:`Device info, display and export — same surfaces as the detail page.`}),` `,N(io,{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(Nn,{className:`mt-3`,children:y(un,{deviceId:e,device:a??void 0,children:[r===`info`&&N(ms,{}),r===`display`&&N(Ol,{deviceId:e}),r===`export`&&N(hl,{deviceId:e,sectionFilter:Jc})]})})]})})}function Al({children:e}){let[t,n]=f(null),r=p(e=>n(e),[]),i=p(()=>n(null),[]);return y(Yn,{open:r,children:[e,t===null?null:N(kl,{deviceId:t,onClose:i})]})}a();function jl({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 Ml(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 Nl(e){return`${e.inputSize.width}x${e.inputSize.height}`}function Pl(e){return e.formats?Object.keys(e.formats).filter(t=>e.formats[t]!==void 0):[]}function Fl({entry:e,selected:t,onSelect:n,disabled:r}){let{t:i}=H(),a=Ml(e),o=Nl(e),s=Pl(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(fe,{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(_e,{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 Il({field:e,value:t,onChange:n,disabled:r}){let{t:i}=H(),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(jl,{tabs:l,active:u,onChange:d}),u===`catalog`&&o&&s&&N(er,{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(Fl,{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(Fe,{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(Fe,{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(I,{className:`h-3 w-3`})]})]})]})}function Ll({to:e}){let{search:t}=J();return N(Y,{to:`${e}${t}`,replace:!0})}a();function Rl(){return V.t(`helpers.keychainRevealHost.forbidden`)}function zl(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 Bl(e){let t=zl(e);if(t===`FORBIDDEN`||t===`UNAUTHORIZED`)return Rl();let n=e instanceof Error?e.message:String(e);return n.length>0?V.t(`helpers.keychainRevealHost.failedWith`,{message:n}):V.t(`helpers.keychainRevealHost.failed`)}function Vl({children:e}){let t=At();return N(fn,{reveal:p(async e=>{try{return(await t.mutateAsync({ref:e})).value}catch(e){throw Error(Bl(e))}},[t]),children:e})}a();function Hl(){let e=ze(),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}=jt(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=Wl(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(Ul,{toasts:c})})}function Ul({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(Be,{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 Wl(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:V.t(`system.reconnectOverlay.frameworkUpdated`,`Framework updated`),message:V.t(`system.reconnectOverlay.isNow`,`{{packageName}} is now {{fromTo}}.`,{packageName:e.packageName,fromTo:n})}}return{id:t,title:V.t(`system.reconnectOverlay.serverRestarted`,`Server restarted`),message:e.requestedBy===void 0?V.t(`system.reconnectOverlay.manualRestartCompleted`,`Manual restart completed.`):V.t(`system.reconnectOverlay.manualRestartByCompleted`,`Manual restart by {{requestedBy}} completed.`,{requestedBy:e.requestedBy})}}var Gl=`/system/settings`,Kl=[{path:`/system/secrets`,tab:`secrets`},{path:`/system/capabilities`,tab:`capabilities`}];function ql(e,t=``){let n=new URLSearchParams(t);return n.delete(`tab`),n.set(`tab`,e),`${Gl}?${n.toString()}`}function Jl({tab:e}){let{search:t,hash:n}=J();return N(Y,{to:`${ql(e,t)}${n}`,replace:!0})}a();var Yl={info:{bg:`bg-info/10`,border:`border-info/30`,icon:Fe},warning:{bg:`bg-warning/10`,border:`border-warning/30`,icon:ce},critical:{bg:`bg-danger/10`,border:`border-danger/30`,icon:je}};function Xl({toast:e,onDismiss:t}){let n=Yl[e.severity]??Yl.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(Ee,{className:`h-3.5 w-3.5 text-foreground-subtle`})})]})}function Zl(){let[e,t]=f([]),n=p(e=>{t(t=>t.filter(t=>t.id!==e))},[]);return Tt(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(Xl,{toast:e,onDismiss:n})},e.id))})}function Ql(e){return(t,n,r)=>e(t,{...typeof n==`string`?{defaultValue:n}:{defaultValue_one:n.one,defaultValue_other:n.other},...r})}var $l=(e,t,n)=>Ql(V.t.bind(V))(e,t,n);a();function eu({children:e}){let{t}=H();return N(Ie,{t:d(()=>Ql(t),[t]),children:e})}a();function tu(e){if(typeof e!=`object`||!e)return;let{data:t}=e;return t?.code}function nu(e,t){let n=tu(e);return n===`UNAUTHORIZED`||n===`FORBIDDEN`?!0:/UNAUTHORIZED|FORBIDDEN/.test(t)}function ru(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(nu(e,t)){n();return}o(t),i(!0)}),()=>{r=!0}},[e,t,n]),{bootReady:r,bootError:a}}a();var iu=3e4;function au(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>=iu&&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 ou(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 su=new Map,cu=new Map,lu=new Set;function uu(e){return!e||typeof e!=`object`?!1:typeof e.default==`function`}async function du(e,t){let i=su.get(e);if(i)return i;let a=cu.get(e);if(a)return a;lu.has(e)||(It(),r([{name:e,entry:B(t),type:`module`}],{force:!1}),lu.add(e));let o=n(`${e}/page`).then(n=>{if(!uu(n))throw Error(`Addon page remote ${e} (${t}) does not expose a default React component on './page'`);return su.set(e,n.default),cu.delete(e),n.default}).catch(t=>{throw cu.delete(e),t});return cu.set(e,o),o}function fu(){let{t:e}=H(),{pagePath:t}=Hi(),n=Ri(),r=ze(),{data:i}=En(void 0),a=d(()=>i?ou(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=su.get(c);if(e){p(()=>e);return}p(null);let t=!1;return du(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`})})}rr();var pu=/\p{Mn}/gu;function mu(e){return e.normalize(`NFD`).replace(pu,``).toLowerCase().trim()}var hu=[`device`,`page`,`integration`],gu=0,_u=1,vu=2,yu=3,bu=4,xu=5,Su=6,Cu=7;function wu(e,t,n,r){return n.includes(r)?gu:e===r?_u:e.startsWith(r)?vu:e.split(/\s+/).some(e=>e.startsWith(r))?yu:e.includes(r)?bu:t.some(e=>e.includes(r))?xu:null}function Tu(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 Eu(e){return e<4?0:e<=7?1:e<=12?2:3}function Du(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 Ou(e,t){if(Tu(e,t))return Su;let n=Eu(t.length);if(n>0){for(let r of e.split(/\s+/))if(Du(r,t,n)!==null)return Cu}return null}function ku(e,t,n=200){let r=mu(t);if(r.length===0)return{groups:[],totalMatched:0,truncated:!1};let i=new Map;for(let t of e){let e=mu(t.label),n=wu(e,(t.keywords??[]).map(mu),(t.identifiers??[]).map(mu),r)??Ou(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 hu){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 Au(e){return e.flatMap(e=>e.items)}function ju(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 Mu(e,t){return e.filter(e=>!e.adminOnly||t)}function Nu({t:e,isAdmin:t}){let n=Mu([{label:e(`nav.devices`,`Devices`),icon:ee,path:`/devices`},{label:e(`nav.integrations`),icon:le,path:`/integrations`},{label:e(`nav.build`,`Build-your-self`),icon:L,path:`/build`,adminOnly:!0},{label:e(`nav.locations`,`Locations`),icon:Ge,path:`/locations`,adminOnly:!0},{label:e(`nav.viewer`,`Viewer`),icon:ut,path:`/live`}],t),r=Mu([{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:re,path:`/recordings`,adminOnly:!0}],t),i=Mu([{label:e(`nav.nodes`,`Nodes`),icon:Ze,path:`/system/nodes`,adminOnly:!0},{label:e(`nav.pipeline`,`Pipeline`),icon:wt,path:`/system/pipeline`},{label:e(`system.addons`),icon:me,path:`/system/addons`,adminOnly:!0},{label:e(`system.ai`,`AI`),icon:be,path:`/system/ai`,adminOnly:!0}],t),a=Mu([{label:e(`system.identity`,`Identity & Access`),icon:He,path:`/system/identity`,adminOnly:!0},{label:e(`system.network`,`Network`),icon:gt,path:`/system/network`,adminOnly:!0},{label:e(`system.integrations`,`Connectivity`),icon:le,path:`/system/integrations`,adminOnly:!0},{label:e(`system.data`,`Data`),icon:z,path:`/system/data`,adminOnly:!0},{label:e(`system.notifications`,`Notifications`),icon:ae,path:`/system/notifications`,adminOnly:!0},{label:e(`system.calendars`,`Calendars`),icon:mt,path:`/system/calendars`,adminOnly:!0},{label:e(`system.systemNav`,`System`),icon:Ke,path:Gl,adminOnly:!0},{label:e(`system.logs`,`Logs`),icon:Ve,path:`/system/logs`,adminOnly:!0},{label:e(`system.terminal`,`Terminal`),icon:vt,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 Pu={gauge:R,puzzle:me,bot:Pe,cpu:_e,terminal:vt,box:F,boxes:F,monitor:ut,wrench:Ae,activity:De,plug:le,"graduation-cap":te};function Fu(e){return Pu[e]??me}function Iu(e,t){for(let n of Nu(t))for(let t of n.items)if(t.path===e)return{icon:t.icon,title:t.label,path:t.path};return null}var Lu=` · `;function Ru(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(Lu)}function zu(e,t=null){let n=ju(e),r=kn(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:Ru(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:wn(e.type).icon}})}function Bu(e){return e.map(e=>({key:`integration:${e.id}`,domain:`integration`,label:e.name||e.addonId,subtitle:e.enabled?e.addonId:V.t(`helpers.searchItems.disabled`,{addonId:e.addonId}),keywords:[e.addonId,e.processState],path:`/integrations/${e.id}`}))}function Vu(e,t,n){let r=e.section?.trim();return r?t[r]??e.sectionLabel?.trim()??r:n}function Hu(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:Vu(e,i,n.ungrouped),keywords:[e.addonId],path:e.path,icon:Fu(e.icon)}));return[...r,...a]}a();var Uu={device:{labelKey:`search.resultsList.devices`,icon:ee},page:{labelKey:`search.resultsList.pages`,icon:pt},integration:{labelKey:`search.resultsList.integrations`,icon:le}};function Wu({groups:e,activeKey:t,query:n,totalMatched:r,truncated:i,onSelect:a,onHover:o}){let{t:c}=H(),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=Uu[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 Gu({navSections:e,addonPages:t,compact:n,onNavigated:r}){let{t:i}=H(),a=Ri(),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}=Zn({projection:`slim`}),{data:C}=xn(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[...zu(S??[],C??null),...Hu(e,t,n),...Bu(C??[])]},[S,C,e,t,i]),{groups:T,totalMatched:E,truncated:D}=d(()=>ku(w,h),[w,h]),O=d(()=>Au(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(ke,{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(Ee,{className:`h-3 w-3`})}),M&&u!==null&&ir(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(Wu,{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(ke,{className:`h-3.5 w-3.5 shrink-0`})})}):N(`div`,{ref:c,className:`px-2 pb-2`,children:I})}var Ku=/^(\d{1,3}\.){3}\d{1,3}$/;function qu(e){let t=e.startsWith(`[`)&&e.endsWith(`]`)?e.slice(1,-1):e;return!!(Ku.test(t)||t.includes(`:`))}function Ju(e,t){return!t||qu(e)?!1:e===t||e.endsWith(`.${t}`)}a();var Yu=`auth-webauthn/passkey-enrollment`,Xu=`camstack_passkey_prompt_dismissed:`,Zu=720*60*60*1e3;function Qu(e){try{let t=localStorage.getItem(`${Xu}${e}`);if(!t)return!1;let n=Number(t);return Number.isFinite(n)?Date.now()-n<Zu:!1}catch{return!1}}function $u(e){try{localStorage.setItem(`${Xu}${e}`,String(Date.now()))}catch{}}function ed(){let{user:e}=Dc(),{t}=H(),n=ze(),r=Wn(Yu),[i,a]=f(!1),[o,s]=f(!1),c=d(()=>e?Qu(e.id):!0,[e]),l=Ot.auth.listLoginMethods.useQuery().data?.find(e=>e.kind===`passkey`),u=l!==void 0&&Ju(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&&$u(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(ft,{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(Ee,{className:`h-3.5 w-3.5`})})]}),o&&N(`div`,{className:`px-3 pb-3`,children:y(`div`,{className:`max-w-xl`,children:[N(kt,{widgetId:Yu,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 td=6e4;function nd(){let e=Vn(void 0,{staleTime:td});return{info:e.data?.serverName??null,isLoading:e.isLoading}}a();var rd=`system-config`,id=`hub`,ad=`camstack_server_name_prompt_dismissed`;function od(){try{return sessionStorage.getItem(ad)===`1`}catch{return!1}}function sd(){try{sessionStorage.setItem(ad,`1`)}catch{}}function cd(e){return e.isAdmin&&e.info!==null&&e.info.isDefault&&!e.dismissed}function ld(){let{user:e}=Dc(),{info:t}=nd(),[n,r]=f(od);return cd({isAdmin:e?.isAdmin===!0,info:t,dismissed:n})?N(ud,{suggestion:t?.name??``,onLater:()=>{sd(),r(!0)}}):null}function ud({suggestion:e,onLater:t}){let{t:n}=H(),r=A(),i=_n(),[a,o]=f(e),[c,l]=f(null),u=j(null);s(()=>u.current?.focus(),[]);let d=p(async()=>{let e=at.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:rd,nodeId:id,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(qt,{open:!0,onOpenChange:e=>!e&&t(),children:N(Et,{children:y(`form`,{onSubmit:e=>{e.preventDefault(),i.isPending||d()},children:[y(Wt,{children:[N(Yt,{children:n(`serverName.title`,`Name this server`)}),N(jn,{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(Nn,{children:N(Ft,{label:n(`serverName.label`,`Server name`),...c===null?{}:{error:c},children:N(Kn,{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(Vt,{children:[N(rn,{type:`button`,variant:`ghost`,onClick:t,disabled:i.isPending,children:n(`serverName.later`,`Later`)}),y(rn,{type:`submit`,disabled:i.isPending||a.trim().length===0,children:[i.isPending&&N(Re,{className:`h-4 w-4 animate-spin`}),n(`common.save`,`Save`)]})]})]})})})}var dd=!1;function fd(){return dd}function pd(){dd=!0}function md(e){return!e.read&&e.severity===`critical`}function hd(e){return e.filter(md)}function gd(e){return e!==void 0&&typeof e.href==`string`&&e.href.length>0}a(),rr();var _d={info:Fe,success:Be,warning:ce,error:je,critical:ht},vd={info:`text-info`,success:`text-success`,warning:`text-warning`,error:`text-danger`,critical:`text-danger`},yd={active:`border-l-info`,"in-progress":`border-l-warning`,completed:`border-l-success`,failed:`border-l-danger`,dismissed:`border-l-foreground-subtle/30`};function bd(e){let t=Math.floor((Date.now()-e)/1e3);if(t<60)return V.t(`helpers.relativeTime.justNow`);let n=Math.floor(t/60);if(n<60)return V.t(`helpers.relativeTime.minutesAgo`,{count:n});let r=Math.floor(n/60);if(r<24)return V.t(`helpers.relativeTime.hoursAgo`,{count:r});let i=Math.floor(r/24);return V.t(`helpers.relativeTime.daysAgo`,{count:i})}function xd(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Sd(e){return typeof e==`string`&&e.length>0?e:void 0}function Cd(e){if(xd(e.metadata)){let t=Sd(e.metadata.nodeId)??Sd(e.metadata.agentId);if(t!==void 0)return t}let t=e.source;if(t!==void 0&&!(t.type!==`node`&&t.type!==`agent`))return Sd(t.id)}function wd({alert:e,onMarkRead:t,onDismiss:n}){let{t:r}=H(),i=e.severity in _d?e.severity:`info`,a=gd(e.action)?e.action:void 0,o=e.status in yd?e.status:`active`,s=_d[i],c=vd[i],l=yd[o],{nodes:u}=Qn(),d=Cd(e),f=d===void 0?void 0:u.find(e=>e.id===d),p=d===void 0?void 0:f?.name??d;return y(`div`,{className:`flex items-start gap-2.5 px-3 py-2.5 border-l-2 ${l} ${e.read?`opacity-60`:``} hover:bg-surface-hover transition-colors`,children:[N(s,{className:`h-3.5 w-3.5 shrink-0 mt-0.5 ${c}`}),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`})]}),p!==void 0&&N(`div`,{className:`text-foreground-subtle text-[10px] mt-0.5 truncate`,children:p}),N(`div`,{className:`text-[10px] text-foreground-subtle mt-0.5 line-clamp-2`,children:e.message}),a!==void 0&&N(io,{to:a.href,className:`inline-flex mt-1.5 items-center rounded-md bg-primary px-2 py-0.5 text-[10px] font-medium text-primary-foreground hover:bg-primary/90 transition-colors`,onClick:e=>e.stopPropagation(),children:a.label}),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:bd(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(fe,{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(Ee,{className:`h-3 w-3 text-foreground-subtle`})})]})]})}function Td({variant:e=`icon`,compact:t=!1}={}){let{t:n}=H(),[r,i]=f(!1),[a,o]=f(!1),c=j(null),l=j(null),u=A(),{data:d=0}=zt(void 0,{refetchInterval:3e4}),{data:m=[],isLoading:h}=Gn({limit:50},{enabled:r}),g=a?m:m.filter(e=>!e.read),_=m.filter(e=>e.read).length,v=()=>{u.invalidateQueries({queryKey:[[`alerts`]]})},b=dn({onSuccess:v}),x=Lt({onSuccess:v}),S=Pt({onSuccess:v});en(`alert.created`,()=>{u.invalidateQueries({queryKey:[[`alerts`]]})}),en(`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(md),D=new Set(E.map(e=>e.id)),O=g.filter(e=>e.status===`in-progress`&&!D.has(e.id)),k=g.filter(e=>e.status!==`in-progress`&&!D.has(e.id)),[M,P]=f({}),F=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)),P(c)},[]);return s(()=>{if(!r)return;F();let e=()=>F();return window.addEventListener(`resize`,e),window.addEventListener(`scroll`,e,!0),()=>{window.removeEventListener(`resize`,e),window.removeEventListener(`scroll`,e,!0)}},[r,F]),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(Ve,{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(Ve,{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&&ir(y(`div`,{ref:c,style:M,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(bt,{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(Re,{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(Ve,{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-danger/5`,children:N(`span`,{className:`text-[9px] font-semibold uppercase tracking-widest text-danger`,children:n(`ui.alertBell.urgent`,`Urgent`)})}),E.map(e=>N(wd,{alert:e,onMarkRead:C,onDismiss:w},e.id))]}),O.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`)})}),O.map(e=>N(wd,{alert:e,onMarkRead:C,onDismiss:w},e.id))]}),k.map(e=>N(wd,{alert:e,onMarkRead:C,onDismiss:w},e.id))]})]}),document.body)]})}a(),rr();function Ed({alert:e,onMarkRead:t}){let{t:n}=H(),r=gd(e.action)?e.action:void 0;return y(`div`,{className:`border-b border-border last:border-b-0 px-3 py-2.5`,children:[N(`div`,{className:`text-[12px] font-semibold text-foreground`,children:e.title}),N(`div`,{className:`text-[11px] text-foreground-muted mt-0.5`,children:e.message}),y(`div`,{className:`mt-2 flex flex-wrap items-center gap-2`,children:[r!==void 0&&N(io,{to:r.href,className:`inline-flex items-center justify-center rounded-md bg-primary px-2.5 py-1 text-[11px] font-medium text-primary-foreground hover:bg-primary/90 transition-colors`,children:r.label}),N(rn,{type:`button`,variant:`ghost`,size:`sm`,onClick:()=>t(e.id),children:n(`ui.alertBell.markAsRead`,`Mark as read`)})]})]})}function Dd(){let{t:e}=H(),t=A(),[n,r]=f(fd()),{data:i=[],isLoading:a}=Gn({limit:50}),o=d(()=>hd(i),[i]),s=dn({onSuccess:p(()=>{t.invalidateQueries({queryKey:[[`alerts`]]})},[t])}),c=p(e=>{s.mutate({alertId:e})},[s]),l=p(()=>{pd(),r(!0)},[]);return a||n||o.length===0?null:ir(N(`div`,{className:`fixed inset-x-0 bottom-0 z-[10000] flex justify-center p-2 sm:p-4 pb-[max(0.5rem,env(safe-area-inset-bottom))] pointer-events-none`,"data-testid":`critical-alerts-on-load-panel`,children:y(`div`,{className:`pointer-events-auto w-full max-w-lg bg-surface border border-danger/30 rounded-lg shadow-xl flex flex-col max-h-[min(70dvh,32rem)] overflow-hidden`,role:`region`,"aria-labelledby":`critical-alerts-panel-title`,children:[y(`div`,{className:`flex items-start justify-between gap-2 px-3 py-2.5 border-b border-border shrink-0 bg-danger/5`,children:[y(`div`,{children:[N(`h2`,{id:`critical-alerts-panel-title`,className:`text-[12px] font-semibold text-foreground`,children:e(`ui.criticalAlertsPanel.title`,`Urgent alerts`)}),N(`p`,{className:`text-[10px] text-foreground-muted mt-0.5`,children:e(`ui.criticalAlertsPanel.subtitle`,`These need your attention.`)})]}),N(An,{type:`button`,variant:`ghost`,onClick:l,"aria-label":e(`ui.criticalAlertsPanel.close`,`Close`),"data-testid":`critical-alerts-panel-close`,icon:Ee})]}),N(`div`,{className:`flex-1 overflow-y-auto`,children:o.map(e=>N(Ed,{alert:e,onMarkRead:c},e.id))})]})}),document.body)}a();function Od(){let e=Os();return C(e.subscribe,e.getSnapshot,e.getSnapshot)}var kd=[`detection`,`cluster`,`administration`];function Ad(e){return kd.includes(e)}function jd(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(Ad(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 Md=`camstack:last-path`,Nd=512,Pd=[`/login`,`/change-password`,`/access-denied`,`/logout`];function Fd(e){return!e.startsWith(`/`)||e.startsWith(`//`)||e.length>Nd?!1:!Pd.some(t=>e===t||e.startsWith(t+`/`))}function Id(e){if(!(typeof window>`u`)&&Fd(e))try{window.localStorage.setItem(Md,e)}catch{}}function Ld(){if(typeof window>`u`)return null;try{let e=window.localStorage.getItem(Md);return e===null?null:Fd(e)?e:null}catch{return null}}a();var Rd=g(!0);function zd(e){return e===`/addon`||e.startsWith(`/addon/`)}function Bd(e,t,n){let r=[...e.filter(e=>e!==t),t];return r.length<=n?r:r.slice(r.length-n)}function Vd({maxCached:e=6}){let t=Vi(),n=J(),r=Fi(),i=v(q),a=n.pathname,o=zd(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=Bd(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(Rd.Provider,{value:n,children:N(Ei.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 Hd={dark:oe,light:se,system:ut};function Ud(){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 Wd(){let e=J(),t=Ri(),{user:n,logout:r}=Dc(),i=Dt(),{t:a}=H(),o=Xn(),c=In(),{info:l}=nd();s(()=>{document.title=l===null?`CamStack Admin`:`${l.name} \u00b7 CamStack Admin`},[l]);let u=vs(Od()),[p,m]=f(!1);s(()=>{Id(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=[]}=Gt({nodeId:`hub`},{refetchInterval:3e4}),b=v.length,x=A(),S=j(Date.now()),{data:C}=En(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?ou(C):[],[C,n?.isAdmin]),D=d(()=>jd(T),[T]),O=D.known.get(`detection`)??[],k=D.known.get(`cluster`)??[],M=D.known.get(`administration`)??[];en(`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+`/`)),L=n?.isAdmin===!0,R=d(()=>Nu({t:a,isAdmin:L}),[a,L]),ee=R[0]?.items??[],te=R[1]?.items??[],ne=R[2]?.items??[],re=R[3]?.items??[],ie=i?.mode??`system`,ae={dark:a(`theme.dark`),light:a(`theme.light`),system:a(`theme.system`)},z=h&&!o,oe=(e,t=`md`)=>`flex w-full items-center gap-2.5 rounded-md ${z?`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`}`,se=(e,t)=>e===0?null:z?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}`),ce=e=>{let n=F(e.path),r=Fu(e.icon);return y(`button`,{onClick:()=>{t(e.path),m(!1)},className:oe(n),title:z?e.label:void 0,children:[N(r,{className:`h-3.5 w-3.5 shrink-0 ${n?`text-primary`:``}`}),!z&&e.label]},`${e.addonId}::${e.id}`)},le=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:oe(r),title:z?e.label:void 0,children:[N(n,{className:`h-3.5 w-3.5 shrink-0 ${r?`text-primary`:``}`}),!z&&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})]}),z&&i&&b>0&&N(`span`,{className:`absolute mt-[-14px] ml-3 h-2 w-2 rounded-full bg-primary`})]},e.path)},de=y(E,{children:[y(`div`,{className:`flex h-14 items-center border-b border-border ${z?`justify-center px-1`:`pl-3 pr-4 gap-2`}`,children:[!z&&N(`img`,{src:i?.resolvedMode===`light`?B(`/brand/logo-horizontal-light.svg`):B(`/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 ${z?``:`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?Xe:Ce,{className:`h-4 w-4`})})]}),!z&&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(Gu,{navSections:R,addonPages:T,compact:z,onNavigated:()=>m(!1)})}),y(`nav`,{className:`flex-1 overflow-y-auto py-3 ${z?`px-1.5`:`px-2`} space-y-0.5`,children:[ee.map(e=>le(e)),se(te.length+O.length,a(`nav.detectionSection`,`Detection`)),te.map(e=>le(e)),O.map(e=>ce(e)),se(ne.length+k.length,a(`nav.clusterSection`,`Cluster`)),ne.map(e=>le(e)),k.map(e=>ce(e)),se(re.length+M.length,a(`system.title`,`Administration`)),re.map(e=>le(e)),M.map(e=>ce(e)),D.custom.map(e=>y(`div`,{className:`contents`,children:[se(e.pages.length,e.label),e.pages.map(e=>ce(e))]},`custom-${e.id}`)),se(D.ungrouped.length,a(`nav.addonPages`,`Addon Pages`)),D.ungrouped.map(e=>ce(e))]}),y(`div`,{className:`border-t border-border ${z?`p-1.5`:`p-2`} space-y-0.5`,children:[y(`button`,{onClick:()=>i?.toggleMode(),className:oe(!1),title:z?ae[ie]:void 0,children:[(()=>{let e=Hd[ie];return N(e,{className:`h-3.5 w-3.5 shrink-0`})})(),!z&&N(`span`,{children:ae[ie]})]}),N(Td,{variant:`sidebar`,compact:z}),y(`button`,{type:`button`,onClick:()=>t(`/system/my-access`),className:oe(F(`/system/my-access`)),title:z?a(`system.myAccess`,`My access`):void 0,children:[N(We,{className:`h-3.5 w-3.5 shrink-0`}),!z&&N(`span`,{className:`truncate`,children:a(`system.myAccess`,`My access`)})]}),y(`button`,{onClick:P,className:oe(!1).replace(`hover:text-foreground`,`hover:text-danger`),title:z?n?.username??a(`layouts.appLayout.logout`,`Logout`):void 0,children:[N(St,{className:`h-3.5 w-3.5 shrink-0`}),!z&&N(`span`,{className:`truncate`,children:n?.username??a(`layouts.appLayout.user`,`User`)})]}),N(`div`,{className:`pt-1 text-[10px] text-foreground-disabled select-none ${z?`text-center`:`px-2`}`,title:a(`layouts.appLayout.adminUiV`,`admin-ui v{{__APP_VERSION__}}`,{__APP_VERSION__:`1.2.437`}),children:z?`1.2.437`:`v1.2.437`})]})]});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 ${z?`w-12`:`w-48`}`,children:de}),o&&N(zn,{open:p,onClose:()=>m(!1),width:`w-64`,children:de}),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(De,{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(Re,{className:`h-3.5 w-3.5 animate-spin`})]}),N(ed,{}),N(ld,{}),N(Dd,{}),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(ue,{className:`h-5 w-5`})}),N(`div`,{className:`flex-1 flex justify-center`,children:N(`img`,{src:i?.resolvedMode===`light`?B(`/brand/logo-horizontal-light.svg`):B(`/brand/logo-horizontal-dark.svg`),alt:a(`layouts.appLayout.camstack`,`CamStack`),className:`h-7`})}),N(Td,{})]}),N(`main`,{className:`relative flex-1 min-h-0 overscroll-contain bg-background ${I?`overflow-hidden`:`overflow-auto`}`,children:N(w,{fallback:N(Ud,{}),children:N(Vd,{})})})]})]})}function $({children:e,requireAdmin:t}){let{t:n}=H(),{user:r,loading:i,mustChangePassword:a}=Dc(),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 Gd=`customize`,Kd=`main`,qd=`advanced`,Jd=`/build/compositions/new`,Yd=`/build/compositions/:blockId`,Xd=`/build?tab=custom-device`;function Zd(e){return`/devices/${e}?tab=${Gd}`}function Qd(e){return`${Zd(e)}&sub=${qd}`}function $d(e){return`/build/compositions/${encodeURIComponent(e)}`}var ef=`integration`,tf=`section`,nf=[ef,tf],rf={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`}},af=`settings`,of=`activity`;function sf(e,t={}){let{path:n,tab:r}=rf[e],i=new URLSearchParams;r!==null&&i.set(`tab`,r),t.integration!==void 0&&i.set(ef,t.integration),t.section!==void 0&&i.set(tf,t.section);let a=i.toString();return a.length>0?`${n}?${a}`:n}function cf(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 lf(e,t,n=null,r=null){let i=new URLSearchParams(e);return i.set(ef,t),r===null?i.delete(tf):i.set(tf,r),n!==null&&i.delete(n),i}function uf(e){return e===`/admin`||e===`/admin/`?`/`:e.startsWith(`/admin/`)?e.slice(6):e}function df(){let{t:e}=H(),t=Ri();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(xt,{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 ff=8;function pf(){let{t:e}=H(),{user:t,mustChangePassword:n,clearMustChangePassword:r,logout:i}=Dc(),a=Dt(),o=Ri(),[s,c]=f(``),[l,u]=f(``),[d,p]=f(!1),[m,h]=f(``),g=on({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`?B(`/brand/logo-horizontal-light.svg`):B(`/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<ff){h(`Password must be at least ${ff} 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?Qe:de,{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 mf(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 hf(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 gf(){return window?.PublicKeyCredential!==void 0&&typeof window.PublicKeyCredential==`function`}function _f(e){let{id:t}=e;return{...e,id:hf(t),transports:e.transports}}function vf(e){return e===`localhost`||/^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$/i.test(e)}var yf=class extends Error{constructor({message:e,code:t,cause:n,name:r}){super(e,{cause:n}),this.name=r??n.name,this.code=t}},bf=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}}},xf=[`cross-platform`,`platform`];function Sf(e){if(e&&!(xf.indexOf(e)<0))return e}function Cf(){if(!gf())return new Promise(e=>e(!1));let e=window.PublicKeyCredential;return e.isConditionalMediationAvailable===void 0?new Promise(e=>e(!1)):e.isConditionalMediationAvailable()}function wf({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 yf({message:`Authentication ceremony was sent an abort signal`,code:`ERROR_CEREMONY_ABORTED`,cause:e})}else if(e.name===`NotAllowedError`)return new yf({message:e.message,code:`ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY`,cause:e});else if(e.name===`SecurityError`){let t=window.location.hostname;if(!vf(t))return new yf({message:`${window.location.hostname} is an invalid domain`,code:`ERROR_INVALID_DOMAIN`,cause:e});if(n.rpId!==t)return new yf({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 yf({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 Tf(e){let{optionsJSON:t,useBrowserAutofill:n=!1,verifyBrowserAutofillInput:r=!0}=e;if(!gf())throw Error(`WebAuthn is not supported in this browser`);let i;t.allowCredentials?.length!==0&&(i=t.allowCredentials?.map(_f));let a={...t,challenge:hf(t.challenge),allowCredentials:i},o={};if(n){if(!await Cf())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=bf.createNewAbortSignal();let s;try{s=await navigator.credentials.get(o)}catch(e){throw wf({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=mf(u.userHandle)),{id:c,rawId:mf(l),response:{authenticatorData:mf(u.authenticatorData),clientDataJSON:mf(u.clientDataJSON),signature:mf(u.signature),userHandle:f},type:d,clientExtensionResults:s.getClientExtensionResults(),authenticatorAttachment:Sf(s.authenticatorAttachment)}}function Ef(e){return typeof e==`object`&&!!e}function Df(e){return Ef(e)&&typeof e.challenge==`string`}a();async function Of(e){if(!Df(e))throw Error(`passkey authentication options missing challenge`);let t=await Tf({optionsJSON:e});return Object.fromEntries(Object.entries(t))}function kf({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 Of((await e.loginBeginPasskey(t)).optionsJSON),i=await e.loginVerifyPasskey(t,r,{refreshable:!0});n(i.token,i);return}let a=await Of((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(Re,{className:`h-4 w-4 animate-spin text-primary`}):N(ft,{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 Af=()=>window.location.hostname;function jf(e,t=Af){return gf()&&Ju(t(),e.rpId)}function Mf(e,t=Af){let n=e.filter(e=>e.kind===`passkey`&&e.stage===`second-factor`).filter(e=>jf(e,t));return{passkeyMethods:n,widgetMethods:n.length>0?[]:e.filter(e=>e.kind===`widget`&&e.stage===`second-factor`)}}function Nf(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 Pf(e){let t=e.onComplete,n=e.onSecondFactor;return typeof t==`function`?{onComplete:t,onSecondFactor:typeof n==`function`?n:void 0}:null}function Ff({methods:e,widgetConfig:t,onRedirect:n}){let{t:r}=H();Un();let i=e.filter(e=>e.kind!==`passkey`||jf(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:Sn(e.icon))??We;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=Pf(t);return n?N(kf,{method:e,onComplete:n.onComplete,onSecondFactor:n.onSecondFactor},e.id):null}return N(If,{method:e,config:t},e.id)})})]})}function If({method:e,config:t}){let{t:n}=H(),r=Rt(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(Re,{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(je,{className:`h-3.5 w-3.5 shrink-0`}),n(`login.primaryMethods.loadFailed`)]}):N(r,{instanceId:e.id,host:`dashboard`,config:t})}function Lf(e){return e===`totp`||e===`passkey`}function Rf(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(Lf);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 zf(e,t){switch(e){case`sso-not-linked`:return V.t(`helpers.ssoReturn.notLinked`,{provider:t??V.t(`helpers.ssoReturn.signInFallback`)});case`sso-state`:return V.t(`helpers.ssoReturn.state`)}}var Bf={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 Vf(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:V.t(Bf[r]??`helpers.ssoReturn.link.failed`)}}var Hf=`camstack:sso-return`,Uf=`camstack:sso-ack`,Wf=`/sso-complete`,Gf=1500,Kf=520,qf=680;function Jf(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 Yf(e){return e.target===`login`?`/login#${e.fragment}`:`/system/my-access?${e.query}`}function Xf(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-Kf)/2)),n=Math.max(0,Math.round(e.screenY+(e.outerHeight-qf)/2));return[`popup=yes`,`width=${Kf}`,`height=${qf}`,`left=${t}`,`top=${n}`,`toolbar=no`,`menubar=no`,`location=no`,`status=no`,`resizable=yes`,`scrollbars=yes`].join(`,`)}function Qf(e){try{return window.open(e??`about:blank`,`camstack-sso`,Zf())??null}catch{return null}}function $f(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 ep(e){if(typeof e!=`object`||!e)return!1;let t=e;return t.type===`camstack:sso-return`&&$f(t.completion)}function tp(e,t,n){return t===null||e.source!==t||e.origin!==n?null:ep(e.data)?e.data.completion:null}var np=`camstack-sso`,rp=`camstack:sso-done`;function ip(e,t){return e.target===`profile`?{target:`profile`,query:e.query}:t?{target:`login`}:null}function ap(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 op(e){return typeof e==`object`&&!!e&&e.type===`camstack:sso-done-ack`}function sp(e){try{let t=e.location.origin;return typeof t==`string`?t:null}catch{return null}}function cp(){if(typeof BroadcastChannel>`u`)return null;try{let e=new BroadcastChannel(np);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 lp=500;function up(e,t,n=window,r={}){let i=n.location.origin,a=r.channel===void 0?cp():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=tp(r,e,i);a===null||l||(l=!0,n.removeEventListener(`message`,d),e.postMessage({type:Uf},i),t.onReturn(a))};n.addEventListener(`message`,d);let f=o?.subscribe(e=>{let n=ap(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?.())},lp);return()=>{n.removeEventListener(`message`,d),f?.(),a?.close(),c(p)}}function dp(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 fp(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))},Gf)})}function pp(e,t,n){let r=fp(n,e=>{let r=r=>{dp(r,t,n.origin)&&e()};return n.addEventListener(`message`,r),()=>n.removeEventListener(`message`,r)});try{let r={type:Hf,completion:e};t.postMessage(r,n.origin)}catch{}return r}function mp(e,t,n){let r=fp(n,e=>t.subscribe(t=>{op(t)&&e()}));return t.post({type:rp,...e}),r}async function hp(e,t){let n=t.opener!==null&&!t.opener.closed?t.opener:null;if(n!==null&&sp(n)===t.origin&&await pp(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=ip(e,i);if(a!==null&&t.channel!==null&&(r!==null&&i&&await t.persistSession(r),await mp(a,t.channel,t))){t.close();return}if(n!==null&&e.target===`profile`){let n=Vf(`?${e.query}`);if(n?.kind===`error`){t.showResult({kind:`link-error`,message:n.message});return}t.close();return}t.continueAt(Yf(e))}function gp(e,t){return(t.length>0&&e.startsWith(t)?e.slice(t.length):e).replace(/\/+$/,``)===Wf}var _p=`Done — you can close this window.`,vp=500,yp=`camstack_admin_token`;async function bp(e,t=``){try{let n=Vs(new URLSearchParams(t));n!==null&&n.token===e?zs(n):localStorage.setItem(yp,e)}catch{}await fetch(B(`/api/auth/session`),{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({token:e})}).catch(()=>{})}function xp(){try{let e=localStorage.getItem(yp);return e!==null&&e.length>0?e:null}catch{return null}}function Sp(e){let t=Jf(window.location.hash);window.history.replaceState(null,``,window.location.pathname);let n=n=>e.render(N(Cp,{completion:t,result:n}));if(n(null),t===null)return;let r=cp();hp(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:_p}),vp)},continueAt:e=>window.location.replace(B(e)),persistSession:e=>bp(e,t.target===`login`?t.fragment:``),showResult:n,setTimeout:(e,t)=>window.setTimeout(e,t)})}function Cp({completion:e,result:t}){let{t:n}=H();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:B(`/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 wp(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 Tp(){let e=new URLSearchParams(window.location.search);return Qs({codeChallenge:e.get(`code_challenge`),codeChallengeMethod:e.get(`code_challenge_method`),state:e.get(`state`),purpose:e.get(`purpose`)})}function Ep(){let{t:e}=H(),{login:t,verifyTotp:n,finalizePasskeyLogin:r,user:i}=Dc(),{i18n:a}=H(),o=Dt(),c=Ri(),l=J(),u=new URLSearchParams(window.location.search).get(`next`);s(()=>{sc(u)},[u]);let d=new URLSearchParams(window.location.search).get(`redirect`);s(()=>{gc(d)},[d]);let p=Tp();s(()=>{tc(p)},[p?.codeChallenge,p?.state,p?.purpose]);let m=l.state?.from??Ld()??`/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,F]=f([]),[I,L]=f(``),[R,ee]=f(void 0),[te,ne]=f(`sso-not-linked`),re=(Ot.auth.listLoginMethods.useQuery().data??[]).filter(e=>e.kind!==`device-certificate`),ie=Ot.auth.getServerName.useQuery().data,ae=re.filter(e=>e.stage===`primary`),z=Mf(re);s(()=>{let e=Rf(window.location.hash);if(e!==null){if(window.history.replaceState({},``,window.location.pathname+window.location.search),e.kind===`challenge`){A(e.challengeToken),F(e.factors),L(``),O(`second-factor`);return}ne(e.code),ee(e.provider)}},[]);let oe=R==null?null:re.find(e=>e.id===R&&`label`in e)?.label??null,se=S||(R===void 0?``:zf(te,oe)),{passkeyMethods:ce,widgetMethods:le}=z,ue=j(!1),fe=async()=>{if(ue.current)return;ue.current=!0;let e=ic(d);if(e?.kind===`app-callback`){await he(e.url);return}else if(e){window.location.assign(B(e.path));return}let t=lc(u);t?window.location.assign(B(t)):c(m,{replace:!0})},[pe,me]=f(null),he=async e=>{me({callbackBase:e,mintedUrl:null,failed:!1});try{let t=Tp()??nc();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=rc(e,n,t.state);me({callbackBase:e,mintedUrl:r,failed:!1}),window.location.assign(r)}catch(t){if(wp(t)){ue.current=!1,me(null),C(`Sign in again to confirm it is you.`);return}me({callbackBase:e,mintedUrl:null,failed:!0})}},ge=i!==null,[_e,ye]=f(!1);s(()=>{!ge||!d&&!u||_e||(ye(!0),fe())},[ge,d,u,_e]);let be=async e=>{e.preventDefault(),C(``),ee(void 0),T(!0);try{let e=await t(h,_);if(e.kind===`second-factor`){A(e.challengeToken),F(e.factors),O(`second-factor`);return}_===`changeme`?c(`/change-password`,{replace:!0}):await fe()}catch(e){C(e instanceof Error?e.message:`Login failed`)}finally{T(!1)}},xe=async e=>{e.preventDefault(),C(``),T(!0);try{await n(k,I.trim()),await fe()}catch(e){C(e instanceof Error?e.message:`TOTP verification failed`),L(``)}finally{T(!1)}},Se=async(e,t)=>{try{await r(e,t),await fe()}catch(e){C(e instanceof Error?e.message:`Passkey sign-in failed`)}},Ce=j(null);s(()=>()=>Ce.current?.(),[]);let we=async e=>{if(e.target!==`login`)return;let t=Vs(new URLSearchParams(e.fragment));if(t!==null){try{await r(t.token,t),await fe()}catch(e){C(e instanceof Error?e.message:`Sign-in failed`)}return}let n=Rf(`#${e.fragment}`);if(n!==null){if(n.kind===`challenge`){Ee({challengeToken:n.challengeToken,factors:n.factors});return}ne(n.code),ee(n.provider)}},Te=e=>{if(Ys(d)?.kind===`app-callback`)return!1;let t=Qf(B(Xf(e.startUrl)));return t===null?!1:(C(``),ee(void 0),Ce.current?.(),Ce.current=up(t,{onReturn:e=>{Ce.current?.(),Ce.current=null,we(e)},onDone:e=>{if(Ce.current?.(),Ce.current=null,e.target!==`login`)return;let t=xp()===null?null:Rs();t!==null&&we({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)},Ee=e=>{let t=e.factors.filter(e=>e===`totp`||e===`passkey`);A(e.challengeToken),F(t),L(``),C(``),O(`second-factor`)};return pe===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`?B(`/brand/logo-horizontal-light.svg`):B(`/brand/logo-horizontal-dark.svg`),alt:e(`login.camstackAdmin`,`CamStack Admin`),className:`h-12`})}),ie!==void 0&&!ie.isDefault&&N(`p`,{"data-testid":`login-server-name`,className:`-mt-4 mb-6 text-center text-sm text-foreground-muted`,children:N(qo,{i18nKey:`login.signInTo`,values:{name:ie.name},components:{b:N(`span`,{className:`font-semibold text-foreground`})}})}),D===`credentials`?y(`form`,{onSubmit:be,className:`space-y-4 rounded-xl border border-border bg-surface p-6 shadow-xl shadow-black/10`,children:[se&&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:se}),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?Qe:de,{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(P,{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(qo,{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`)&&ce.map(e=>N(kf,{method:e,challengeToken:k,onComplete:Se},e.id)),M.includes(`passkey`)&&le.map(e=>N(If,{method:e,config:{challengeToken:k,onComplete:Se}},e.id)),Nf(M,z)&&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:xe,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:I,onChange:e=>L(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||I.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(``),F([]),L(``),C(``)},className:`w-full flex items-center justify-center gap-1.5 text-xs text-foreground-subtle hover:text-foreground transition-colors`,children:[N(ve,{className:`h-3 w-3`}),e(`login.backToUsernamePassword`,`Back to username + password`)]})]}),D===`credentials`&&N(Ff,{methods:ae,widgetConfig:{onComplete:Se,onSecondFactor:Ee,locale:a.language},onRedirect:Te}),N(`p`,{className:`mt-6 text-center text-[10px] text-foreground-subtle/50`,children:e(`login.version`,{version:`1.2.437`})})]})}):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…`)}),pe.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 he(pe.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`)})]}):pe.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:pe.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 Dp(){let{pathname:e,search:t,hash:n}=J();return N(Y,{to:`${uf(e)}${t}${n}`,replace:!0})}function Op(){return N(Y,{to:Ld()??`/devices`,replace:!0})}var kp=m(()=>i(()=>import(`./Devices-837Dt931.js`).then(e=>({default:e.DevicesPage})),__vite__mapDeps([0,1,2,3,4,5,6,7,8]),import.meta.url)),Ap=m(()=>i(()=>import(`./Integrations-Sjh868gF.js`).then(e=>({default:e.IntegrationsPage})),__vite__mapDeps([9,1,2,3,4,10,5,6,11,12,13,7,8]),import.meta.url)),jp=m(()=>i(()=>import(`./IntegrationDetail-BER_0Zaz.js`).then(e=>({default:e.IntegrationDetailPage})),__vite__mapDeps([14,1,2,3,4,15,5,16,11,12,13,7,17]),import.meta.url)),Mp=m(()=>i(()=>import(`./ClusterStepModel-BizBdfIU.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)),Np=m(()=>i(()=>import(`./DeviceDetail-moNYFDGE.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)),Pp=m(()=>i(()=>import(`./Showroom-BKLoHB4Z.js`).then(e=>({default:e.ShowroomPage})),__vite__mapDeps([35,1,2,3,4]),import.meta.url)),Fp=m(()=>i(()=>import(`./EmbedPlayerPage-Crrh_6YT.js`).then(e=>({default:e.EmbedPlayerPage})),__vite__mapDeps([36,1,2,3,4,5]),import.meta.url)),Ip=m(()=>i(()=>import(`./Library-B4Nw3n28.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)),Lp=m(()=>i(()=>import(`./Recordings-EMQC9iqz.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)),Rp=m(()=>i(()=>import(`./Viewer-B9mEIKqz.js`).then(e=>({default:e.ViewerPage})),__vite__mapDeps([48,2,3,4,49,5,13,1]),import.meta.url)),zp=m(()=>i(()=>import(`./Build-CXn4HT3p.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)),Bp=m(()=>i(()=>import(`./CompositionEditorPage-wfYMLlvy.js`).then(e=>({default:e.CompositionEditorPage})),__vite__mapDeps([54,1,2,3,4,28,5,6,30,10]),import.meta.url)),Vp=m(()=>i(()=>import(`./Locations-B7dC2DyF.js`).then(e=>({default:e.LocationsPage})),__vite__mapDeps([55,1,2,3,4,10,5,28,56,39,40,32,33]),import.meta.url)),Hp=m(()=>i(()=>import(`./Addons-CkBmnKjV.js`).then(e=>({default:e.AddonsPage})),__vite__mapDeps([57,1,2,3,4,19,5,6,16,58,13]),import.meta.url)),Up=m(()=>i(()=>import(`./AiProfiles-QWD8PlMr.js`).then(e=>({default:e.AiProfilesPage})),__vite__mapDeps([59,1,2,3,4,10,5,60,61,6,40,13]),import.meta.url)),Wp=m(()=>i(()=>import(`./MyAccess-TAG05L5N.js`).then(e=>({default:e.MyAccessPage})),__vite__mapDeps([62,1,2,3,4,10,5,19,63,64,65,6,66,13]),import.meta.url)),Gp=m(()=>i(()=>import(`./Logs-4XWMmfpD.js`).then(e=>({default:e.LogsPage})),__vite__mapDeps([67,1,2,3,4,68,22,5,6,40,69,70,16,71,17,13,72]),import.meta.url)),Kp=m(()=>i(()=>import(`./Identity-CNNb8wrU.js`).then(e=>({default:e.IdentityPage})),__vite__mapDeps([73,1,2,3,4,10,5,74,19,75,63,64,65,6,40,69,70,16,71,17,13,66,72]),import.meta.url)),qp=m(()=>i(()=>import(`./Network-ReY1qUoQ.js`).then(e=>({default:e.NetworkPage})),__vite__mapDeps([76,1,2,3,4,10,5,28,19,77,6,40,69,70,16,71,17,13,72]),import.meta.url)),Jp=m(()=>i(()=>import(`./Integrations-CuZucOyR.js`).then(e=>({default:e.IntegrationsPage})),__vite__mapDeps([78,1,2,3,4,10,5,19,77,64,79,40,69,70,6,16,71,17,13,12]),import.meta.url)),Yp=m(()=>i(()=>import(`./Data-CmT5GPx9.js`).then(e=>({default:e.DataPage})),__vite__mapDeps([80,1,2,3,4,10,5,81,29,46,6,40,44,25,45,47,34,13]),import.meta.url)),Xp=m(()=>i(()=>import(`./System-DEOHPmr3.js`).then(e=>({default:e.SystemPage})),__vite__mapDeps([82,1,2,3,4,10,5,19,63,6,40,16,71,17,13]),import.meta.url)),Zp=m(()=>i(()=>import(`./Cluster-tgWdVHND.js`).then(e=>({default:e.ClusterPage})),__vite__mapDeps([83,1,2,3,4,10,5,46,84,65,6,16,23,58,47]),import.meta.url)),Qp=m(()=>i(()=>import(`./Terminal-dVu7TTAE.js`).then(e=>({default:e.TerminalPage})),__vite__mapDeps([85,1,2,3,4,19,5,6,16,86]),import.meta.url)),$p=m(()=>i(()=>import(`./Notifications-CqTEfaZ_.js`).then(e=>({default:e.NotificationsPage})),__vite__mapDeps([87,1,2,3,4,10,5,27,19,75,88,61,6,40,52,53,41,13,33]),import.meta.url)),em=m(()=>i(()=>import(`./Calendars-DN9ln21d.js`).then(e=>({default:e.CalendarsPage})),__vite__mapDeps([89,1,2,3,4,10,5,19,6]),import.meta.url)),tm=new D({defaultOptions:{queries:{gcTime:0,staleTime:0,retry:!1,refetchOnWindowFocus:!1}}});Pn(tm);function nm({field:e,value:t,onChange:n,disabled:r}){return N(Il,{field:e,value:t,onChange:n,disabled:r})}var rm={"model-selector":nm};function im({children:e}){let{t}=H(),{user:n,logout:r}=Dc(),[i,a]=f(0),o=j(n?.username??null);s(()=>{let e=n?.username??null;e!==o.current&&(o.current=e,Ms(),a(e=>e+1))},[n]);let c=d(()=>Q(),[i]),{bootReady:l,bootError:u}=ru(c,n??null,r);return au(p(()=>{Q().reconnect(),a(e=>e+1),tm.invalidateQueries()},[])),N(eu,{children:N(Ne,{system:c,children:N(Ot.Provider,{client:c.trpcClient,queryClient:tm,children:y(Nt,{children:[N(Hn,{children:l?e:N(am,{})}),l&&N(Hl,{}),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 am(){let{t:e}=H();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 om(){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 sm(){return N(Mn,{defaultMode:`dark`,children:N(M,{client:tm,children:N(Ec,{children:N(im,{children:N(Zt,{children:N(Vl,{children:y(Bn,{renderers:rm,children:[N(no,{basename:Ue(),children:N(Al,{children:N(w,{fallback:N(om,{}),children:y(pa,{children:[N(X,{path:`/login`,element:N(Ep,{})}),N(X,{path:`/admin/*`,element:N(Dp,{})}),N(X,{path:`/admin`,element:N(Dp,{})}),N(X,{path:`/change-password`,element:N($,{children:N(pf,{})})}),N(X,{path:`/showroom`,element:N(Pp,{})}),N(X,{path:`/embed/player`,element:N(Fp,{})}),y(X,{element:N($,{children:N(gr,{children:N(Wd,{})})}),children:[N(X,{index:!0,element:N(Op,{})}),N(X,{path:`/access-denied`,element:N(df,{})}),N(X,{path:`/dashboard`,element:N(Y,{to:`/devices`,replace:!0})}),N(X,{path:`/devices`,element:N(kp,{})}),N(X,{path:`/cameras`,element:N(Y,{to:`/devices`,replace:!0})}),N(X,{path:`/integrations`,element:N(Ap,{})}),N(X,{path:`/integrations/:integrationId`,element:N(jp,{})}),N(X,{path:`/system/pipeline`,element:N(Mp,{})}),N(X,{path:`/pipeline`,element:N(Y,{to:`/system/pipeline`,replace:!0})}),N(X,{path:`/live`,element:N(Rp,{})}),N(X,{path:`/devices/:deviceId`,element:N(Np,{})}),N(X,{path:`/system/logs`,element:N($,{requireAdmin:!0,children:N(Gp,{})})}),N(X,{path:`/system/addons`,element:N($,{requireAdmin:!0,children:N(Hp,{})})}),N(X,{path:`/system/ai`,element:N($,{requireAdmin:!0,children:N(Up,{})})}),N(X,{path:`/system/settings`,element:N($,{requireAdmin:!0,children:N(Xp,{})})}),N(X,{path:`/system/nodes`,element:N($,{requireAdmin:!0,children:N(Zp,{})})}),N(X,{path:`/system/notifications`,element:N($,{requireAdmin:!0,children:N($p,{})})}),N(X,{path:`/system/calendars`,element:N($,{requireAdmin:!0,children:N(em,{})})}),N(X,{path:`/system/identity`,element:N($,{requireAdmin:!0,children:N(Kp,{})})}),N(X,{path:`/system/my-access`,element:N(Wp,{})}),N(X,{path:`/system/network`,element:N($,{requireAdmin:!0,children:N(qp,{})})}),N(X,{path:`/system/integrations`,element:N($,{requireAdmin:!0,children:N(Jp,{})})}),N(X,{path:`/system/data`,element:N($,{requireAdmin:!0,children:N(Yp,{})})}),N(X,{path:`/system`,element:N(Y,{to:Gl,replace:!0})}),N(X,{path:`/system/terminal`,element:N($,{requireAdmin:!0,children:N(Qp,{})})}),Kl.map(e=>N(X,{path:e.path,element:N(Jl,{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:sf(`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:sf(`remoteAccess`),replace:!0})}),N(X,{path:`/system/turn`,element:N(Y,{to:sf(`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(Ip,{})})}),N(X,{path:`/retrain`,element:N(Y,{to:`/addon/training`,replace:!0})}),N(X,{path:`/recordings`,element:N($,{requireAdmin:!0,children:N(Lp,{})})}),N(X,{path:`/build`,element:N($,{requireAdmin:!0,children:N(zp,{})})}),N(X,{path:Jd,element:N($,{requireAdmin:!0,children:N(Bp,{})})}),N(X,{path:Yd,element:N($,{requireAdmin:!0,children:N(Bp,{})})}),N(X,{path:`/locations`,element:N($,{requireAdmin:!0,children:N(Vp,{})})}),N(X,{path:`/automation`,element:N(Ll,{to:`/build`})}),N(X,{path:`/addon/:pagePath`,element:N($,{requireAdmin:!0,children:N(fu,{})})}),N(X,{path:`*`,element:N(Y,{to:`/devices`,replace:!0})})]})]})})})}),N(Zl,{})]})})})})})})})}a(),window.__camstackUiLibrary=Rn,window.__camstackSdk=Ht,window.__camstackTypes=lt;var cm=ar(document.getElementById(`root`));gp(window.location.pathname,Ue())?Sp(cm):cm.render(N(S,{children:N(sm,{})}));export{Ri as $,hl as A,Dc as B,nd as C,Gl as D,$l as E,Jc as F,is as G,os as H,Hc as I,ns as J,rs as K,Vc as L,Qc as M,Gc as N,Bl as O,Kc as P,Y as Q,Bc as R,Zd as S,ju as T,ls as U,ms as V,as as W,qo as X,Xo as Y,io as Z,qd as _,Df as a,$d as b,nf as c,tf as d,Hi as et,af as f,Xd as g,lf as h,Vf as i,el as j,Ol as k,rf as l,cf as m,up as n,Tf as o,sf as p,Z as q,Xf as r,of as s,Qf as t,po as tt,ef as u,Kd as v,Iu as w,Qd as x,Gd as y,kc as z};
@@ -1 +0,0 @@
1
- import"./src-CL0G8g2V.js";
@@ -1 +0,0 @@
1
- import{n as e,t}from"./virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-DVRZb8h3.js";export{t as get,e as init};