@camstack/addon-admin-ui 1.1.18 → 1.1.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{AddLocationWizard-BSAorNxx.js → AddLocationWizard-DlIuy7PK.js} +1 -1
- package/dist/assets/{AddonCollectionPage-wr63l6CJ.js → AddonCollectionPage-B4YZsZ2N.js} +1 -1
- package/dist/assets/{Addons-CCu9KkD9.js → Addons-CF3JeZJs.js} +1 -1
- package/dist/assets/{AdminTabs-m8tLAejz.js → AdminTabs-Cyrx86NX.js} +1 -1
- package/dist/assets/{BrokerForm-D5X7ElT-.js → BrokerForm-BU7fpWoT.js} +1 -1
- package/dist/assets/{Capabilities-DC_JRuiW.js → Capabilities-BEyROSgm.js} +1 -1
- package/dist/assets/{CapabilityBadges-DH4Q-Etp.js → CapabilityBadges-C7OuLfh8.js} +1 -1
- package/dist/assets/{Cluster-R47NhOdT.js → Cluster-tcDpGJRa.js} +1 -1
- package/dist/assets/{Dashboard-99pp6GEH.js → Dashboard-DOxZXqyK.js} +1 -1
- package/dist/assets/{Data-CjGyMZA8.js → Data-t_YbtZxL.js} +1 -1
- package/dist/assets/{DetectionIntelligence-PgT0GEOx.js → DetectionIntelligence-DqOJ15Er.js} +1 -1
- package/dist/assets/{DeviceDetail-D5VfOgmh.js → DeviceDetail-DQbwOLvC.js} +1 -1
- package/dist/assets/{Devices-D3L0VfVU.js → Devices-C3jy25Bw.js} +1 -1
- package/dist/assets/{EmbedPlayerPage-CG-ioO0R.js → EmbedPlayerPage-C4PqItRF.js} +1 -1
- package/dist/assets/{FormBuilder-zyMCOhuI.js → FormBuilder-B7tUioUm.js} +1 -1
- package/dist/assets/{Identity-D1JnXext.js → Identity-BEvc1UzE.js} +1 -1
- package/dist/assets/{IntegrationDetail-BrPHapeM.js → IntegrationDetail-lPxvINqs.js} +1 -1
- package/dist/assets/{Integrations-DayJSTiK.js → Integrations-CNJgYeN5.js} +1 -1
- package/dist/assets/{Integrations-DTGXl1Ur.js → Integrations-DsYPT3r2.js} +1 -1
- package/dist/assets/{Logs-CpG3Oq7W.js → Logs-5bYEoeMq.js} +1 -1
- package/dist/assets/{MyAccess-BfsppvsN.js → MyAccess-0WTyoQQ1.js} +1 -1
- package/dist/assets/{Network-CjIhXL12.js → Network-BggdRVzo.js} +1 -1
- package/dist/assets/{NodeAddonsSettingsPanel-DBNKikBW.js → NodeAddonsSettingsPanel-oVi7MC28.js} +1 -1
- package/dist/assets/{NotificationTargets-ip8v0_gg.js → NotificationTargets-CI-nn-rf.js} +1 -1
- package/dist/assets/Pipeline-BI2SWq0a.js +1 -0
- package/dist/assets/{PrivacyMaskSettings-BaWtZUaS.js → PrivacyMaskSettings-CrOgd9eg.js} +1 -1
- package/dist/assets/{ProviderIcon-r37coe5_.js → ProviderIcon-BlnoCop3.js} +1 -1
- package/dist/assets/{ScanNetworkModal-BM4LZZGz.js → ScanNetworkModal-CxjeMDho.js} +1 -1
- package/dist/assets/{Settings-JgMgqfxb.js → Settings-5VzV0eVZ.js} +1 -1
- package/dist/assets/{Showroom-DD4nO3bB.js → Showroom-DrEy5G_m.js} +1 -1
- package/dist/assets/{_virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-DZuPeYa3.js → _virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-CLDXRGbV.js} +1 -1
- package/dist/assets/circle-check-big-MfDWxk9K.js +1 -0
- package/dist/assets/{copy-D905mbwE.js → copy-C4G6c4Ys.js} +1 -1
- package/dist/assets/{download-CRt3yUK3.js → download-BXqeElYK.js} +1 -1
- package/dist/assets/{esm-B4H3LqM1.js → esm-C86u2nhh.js} +1 -1
- package/dist/assets/{hostInit-qaKjJotG.js → hostInit-eCexcRoY.js} +1 -1
- package/dist/assets/{index-NMHNU-e8.js → index-idVLv2oj.js} +3 -3
- package/dist/assets/{key-round-p2A3Fbuu.js → key-round-BNduVRhj.js} +1 -1
- package/dist/assets/{mf-entry-bootstrap-0-dd1b0e8c.js → mf-entry-bootstrap-0-62a708e5.js} +2 -2
- package/dist/assets/{pencil-CpJIJ9Uy.js → pencil-x4bNLykx.js} +1 -1
- package/dist/assets/plus-ByEqM_KR.js +1 -0
- package/dist/assets/{radio-RcoVZmtM.js → radio-D7QKOm_q.js} +1 -1
- package/dist/assets/{refresh-cw-D6BYsgNx.js → refresh-cw-sAaM2a8A.js} +1 -1
- package/dist/assets/remoteEntry-CorFK6mn.js +1 -0
- package/dist/assets/{rotate-ccw-wFxrc6l5.js → rotate-ccw-DmmfCbwP.js} +1 -1
- package/dist/assets/rotate-cw-Dq3dsGth.js +1 -0
- package/dist/assets/search-Cbx2Urnx.js +1 -0
- package/dist/assets/{server-DOFYQi_I.js → server-9jJq82Vu.js} +1 -1
- package/dist/assets/{sparkles-DBG9vp4A.js → sparkles-Cf43SJhp.js} +1 -1
- package/dist/assets/square-C0pQT5rA.js +1 -0
- package/dist/assets/{square-check-big-rAJ2A2-o.js → square-check-big-CKe1iFeG.js} +1 -1
- package/dist/assets/{src-1618avTR.js → src-B7BVQkY2.js} +4 -4
- package/dist/assets/{upload-5GQoWO_K.js → upload-DeGWObu4.js} +1 -1
- package/dist/assets/{useDevice-DHi9vYPM.js → useDevice-D_sz9YbZ.js} +1 -1
- package/dist/assets/{useEventInvalidation-orMzg97E.js → useEventInvalidation-BMv3kB-_.js} +1 -1
- package/dist/assets/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-Bj4tGzk2.js → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_--tYWwZy7.js} +2 -2
- package/dist/assets/{wifi-5-JmPgz2.js → wifi-dLfxxYcz.js} +1 -1
- package/dist/assets/{zap--D6I-5eT.js → zap-lXnTrd14.js} +1 -1
- package/dist/index.html +3 -3
- package/dist/server/addon.js +1 -1
- package/package.json +1 -1
- package/dist/assets/Pipeline-DHnGCOi7.js +0 -1
- package/dist/assets/circle-check-big-qiIAVDDz.js +0 -1
- package/dist/assets/plus-OLMgcI14.js +0 -1
- package/dist/assets/remoteEntry-BYprJ3Bc.js +0 -1
- package/dist/assets/rotate-cw-CxsIcHYk.js +0 -1
- package/dist/assets/search-5vt1VPCs.js +0 -1
- package/dist/assets/square-BY1YswJx.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/Dashboard-
|
|
2
|
-
import{i 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_-Bj4tGzk2.js";import{t as i}from"./vite-preload-helper-zJ_50EbN.js";import{Aa as a,Ai as o,Ct as s,F as c,I as l,Jr as u,N as d,O as f,P as p,Qr as m,Rr as h,St as g,Ta as _,Tt as v,Vi as y,Vr as b,Xi as x,Y as S,Yi as ee,aa as te,ia as C,ka as w,lt as ne,oa as re,ri as ie,rt as ae,t as oe,ti as se,wt as ce,xt as le,yi as ue}from"./src-1618avTR.js";import{A as de,B as fe,D as T,E,G as D,I as O,J as pe,K as k,L as A,M as me,N as he,O as j,P as ge,S as M,U as _e,W as N,X as ve,Y as ye,Z as P,a as be,b as xe,d as Se,j as F,k as Ce,o as we,q as Te,u as Ee,x as I,z as L}from"./_virtual_mf___mfe_internal__admin_ui_host__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-CCjPq1YD.js";import{d as De,p as Oe}from"./player-overlays-BK-_BrgW.js";import{r as ke,t as Ae}from"./_virtual_mf___mfe_internal__admin_ui_host__loadShare__react_mf_2_dom__loadShare__.js-DcnMG4y9.js";import{t as je}from"./_virtual_mf___mfe_internal__admin_ui_host__loadShare__react_mf_2_dom_mf_1_client__loadShare__.js-CUURKTLp.js";import{t as Me}from"./src-D7qnpDWK.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)}})(),P();var Ne=/^(?:[a-z][a-z0-9+.-]*:|[\\/]{2})/i,Pe=/^[\\/]{2}/;function Fe(e,t){return t+e.replace(/\\/g,`/`)}var Ie=`popstate`;function Le(e){return typeof e==`object`&&!!e&&`pathname`in e&&`search`in e&&`hash`in e&&`state`in e&&`key`in e}function Re(e={}){function t(e,t){let n=t.state?.masked,{pathname:r,search:i,hash:a}=n||e.location;return Ve(``,{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:He(t)}return We(t,n,null,e)}function R(e,t){if(e===!1||e==null)throw Error(t)}function z(e,t){if(!e){typeof console<`u`&&console.warn(t);try{throw Error(t)}catch{}}}function ze(){return Math.random().toString(36).substring(2,10)}function Be(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 Ve(e,t,n=null,r,i){return{pathname:typeof e==`string`?e:e.pathname,search:``,hash:``,...typeof t==`string`?Ue(t):t,state:n,key:t&&t.key||r||ze(),mask:i}}function He({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 Ue(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 We(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=Le(e)?e:Ve(h.location,e,t);n&&n(r,e),l=u()+1;let d=Be(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=Le(e)?e:Ve(h.location,e,t);n&&n(r,e),l=u();let i=Be(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 Ge(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(Ie,d),c=e,()=>{i.removeEventListener(Ie,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 Ge(e,t,n=!1){let r=`http://localhost`;e&&(r=e.location.origin===`null`?e.location.href:e.location.origin),R(r,`No window.location.(origin|href) available to create URL`);let i=typeof t==`string`?t:He(t);return i=i.replace(/ $/,`%20`),!n&&Pe.test(i)&&(i=r+i),new URL(i,r)}function Ke(e,t,n=`/`){return qe(e,t,n,!1)}function qe(e,t,n,r,i){let a=B((typeof t==`string`?Ue(t):t).pathname||`/`,n);if(a==null)return null;let o=i??Ye(e),s=null,c=ft(a);for(let e=0;s==null&&e<o.length;++e)s=ct(o[e],c,r);return s}function Je(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 Ye(e){let t=Xe(e);return Qe(t),t}function Xe(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;R(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=V([r,c.relativePath]),u=n.concat(c);e.children&&e.children.length>0&&(R(e.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${l}".`),Xe(e.children,t,u,l,o)),!(e.path==null&&!e.index)&&t.push({path:l,score:ot(l,e.index),routesMeta:u.map((e,t)=>{let[n,r]=dt(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 Ze(e.path))a(e,t,!0,n)}),t}function Ze(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=Ze(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 Qe(e){e.sort((e,t)=>e.score===t.score?st(e.routesMeta.map(e=>e.childrenIndex),t.routesMeta.map(e=>e.childrenIndex)):t.score-e.score)}var $e=/^:[\w-]+$/,et=3,tt=2,nt=1,rt=10,it=-2,at=e=>e===`*`;function ot(e,t){let n=e.split(`/`),r=n.length;return n.some(at)&&(r+=it),t&&(r+=tt),n.filter(e=>!at(e)).reduce((e,t)=>e+($e.test(t)?et:t===``?nt:rt),r)}function st(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 ct(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?ut(u,l,s.matcher,s.compiledParams):lt(u,l),f=s.route;if(!d&&c&&n&&!r[r.length-1].route.index&&(d=lt({path:s.relativePath,caseSensitive:s.caseSensitive,end:!1},l)),!d)return null;Object.assign(i,d.params),o.push({params:i,pathname:V([a,d.pathname]),pathnameBase:xt(V([a,d.pathnameBase])),route:f}),d.pathnameBase!==`/`&&(a=V([a,d.pathnameBase]))}return o}function lt(e,t){typeof e==`string`&&(e={path:e,caseSensitive:!1,end:!0});let[n,r]=dt(e.path,e.caseSensitive,e.end);return ut(e,t,n,r)}function ut(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 dt(e,t=!1,n=!0){z(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 ft(e){try{return e.split(`/`).map(e=>decodeURIComponent(e).replace(/\//g,`%2F`)).join(`/`)}catch(t){return z(!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 B(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 pt(e,t=`/`){let{pathname:n,search:r=``,hash:i=``}=typeof e==`string`?Ue(e):e,a;return n?(n=yt(n),a=n.startsWith(`/`)?mt(n.substring(1),`/`):mt(n,t)):a=t,{pathname:a,search:St(r),hash:Ct(i)}}function mt(e,t){let n=bt(t).split(`/`);return e.split(`/`).forEach(e=>{e===`..`?n.length>1&&n.pop():e!==`.`&&n.push(e)}),n.length>1?n.join(`/`):`/`}function ht(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 gt(e){return e.filter((e,t)=>t===0||e.route.path&&e.route.path.length>0)}function _t(e){let t=gt(e);return t.map((e,n)=>n===t.length-1?e.pathname:e.pathnameBase)}function vt(e,t,n,r=!1){let i;typeof e==`string`?i=Ue(e):(i={...e},R(!i.pathname||!i.pathname.includes(`?`),ht(`?`,`pathname`,`search`,i)),R(!i.pathname||!i.pathname.includes(`#`),ht(`#`,`pathname`,`hash`,i)),R(!i.search||!i.search.includes(`#`),ht(`#`,`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=pt(i,s),l=o&&o!==`/`&&o.endsWith(`/`),u=(a||o===`.`)&&n.endsWith(`/`);return!c.pathname.endsWith(`/`)&&(l||u)&&(c.pathname+=`/`),c}var yt=e=>e.replace(/[\\/]{2,}/g,`/`),V=e=>yt(e.join(`/`)),bt=e=>e.replace(/\/+$/,``),xt=e=>bt(e).replace(/^\/*/,`/`),St=e=>!e||e===`?`?``:e.startsWith(`?`)?e:`?`+e,Ct=e=>!e||e===`#`?``:e.startsWith(`#`)?e:`#`+e,wt=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 Tt(e){return e!=null&&typeof e.status==`number`&&typeof e.statusText==`string`&&typeof e.internal==`boolean`&&`data`in e}function Et(e){return V(e.map(e=>e.route.path).filter(Boolean))||`/`}var Dt=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;function Ot(e,t){let n=e;if(typeof n!=`string`||!Ne.test(n))return{absoluteURL:void 0,isExternal:!1,to:n};let r=n,i=!1;if(Dt)try{let e=new URL(window.location.href),r=Pe.test(n)?new URL(Fe(n,e.protocol)):new URL(n),a=B(r.pathname,t);r.origin===e.origin&&a!=null?n=a+r.search+r.hash:i=!0}catch{z(!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 kt=[`POST`,`PUT`,`PATCH`,`DELETE`];new Set(kt);var At=[`GET`,...kt];new Set(At);var jt=[`about:`,`blob:`,`chrome:`,`chrome-untrusted:`,`content:`,`data:`,`devtools:`,`file:`,`filesystem:`,`javascript:`];function Mt(e){try{return jt.includes(new URL(e).protocol)}catch{return!1}}var Nt=T(null);Nt.displayName=`DataRouter`;var Pt=T(null);Pt.displayName=`DataRouterState`;var Ft=T(!1);function It(){return A(Ft)}var Lt=T({isTransitioning:!1});Lt.displayName=`ViewTransition`;var Rt=T(new Map);Rt.displayName=`Fetchers`;var zt=T(null);zt.displayName=`Await`;var H=T(null);H.displayName=`Navigation`;var Bt=T(null);Bt.displayName=`Location`;var U=T({outlet:null,matches:[],isDataRoute:!1});U.displayName=`Route`;var Vt=T(null);Vt.displayName=`RouteError`;var Ht=`REACT_ROUTER_ERROR`,Ut=`REDIRECT`,Wt=`ROUTE_ERROR_RESPONSE`;function Gt(e){if(e.startsWith(`${Ht}:${Ut}:{`))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 Kt(e){if(e.startsWith(`${Ht}:${Wt}:{`))try{let t=JSON.parse(e.slice(40));if(typeof t==`object`&&t&&typeof t.status==`number`&&typeof t.statusText==`string`)return new wt(t.status,t.statusText,t.data)}catch{}}function qt(e,{relative:t}={}){R(Jt(),`useHref() may be used only in the context of a <Router> component.`);let{basename:n,navigator:r}=A(H),{hash:i,pathname:a,search:o}=tn(e,{relative:t}),s=a;return n!==`/`&&(s=a===`/`?n:V([n,a])),r.createHref({pathname:s,search:o,hash:i})}function Jt(){return A(Bt)!=null}function W(){return R(Jt(),`useLocation() may be used only in the context of a <Router> component.`),A(Bt).location}var Yt=`You should call navigate() in a React.useEffect(), not when your component is first rendered.`;function Xt(e){A(H).static||_e(e)}function G(){let{isDataRoute:e}=A(U);return e?xn():Zt()}function Zt(){R(Jt(),`useNavigate() may be used only in the context of a <Router> component.`);let e=A(Nt),{basename:t,navigator:n}=A(H),{matches:r}=A(U),{pathname:i}=W(),a=JSON.stringify(_t(r)),o=D(!1);return Xt(()=>{o.current=!0}),O((r,s={})=>{if(z(o.current,Yt),!o.current)return;if(typeof r==`number`){n.go(r);return}let c=vt(r,JSON.parse(a),i,s.relative===`path`);e==null&&t!==`/`&&(c.pathname=c.pathname===`/`?t:V([t,c.pathname])),(s.replace?n.replace:n.push)(c,s.state,s)},[t,n,a,i,e])}var Qt=T(null);function $t(e){let t=A(U).outlet;return N(()=>t&&j(Qt.Provider,{value:e},t),[t,e])}function en(){let{matches:e}=A(U);return e[e.length-1]?.params??{}}function tn(e,{relative:t}={}){let{matches:n}=A(U),{pathname:r}=W(),i=JSON.stringify(_t(n));return N(()=>vt(e,JSON.parse(i),r,t===`path`),[e,i,r,t])}function nn(e,t){return rn(e,t)}function rn(e,t,n){R(Jt(),`useRoutes() may be used only in the context of a <Router> component.`);let{navigator:r}=A(H),{matches:i}=A(U),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||``;Cn(s,!l||e.endsWith(`*`)||e.endsWith(`*?`),`You rendered descendant <Routes> (or called \`useRoutes()\`) at "${s}" (under <Route path="${e}">) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render.
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/Dashboard-DOxZXqyK.js","assets/src-B7BVQkY2.js","assets/schemas-CuE8EXQ7.js","assets/src-D7qnpDWK.js","assets/player-overlays-BK-_BrgW.js","assets/plus-ByEqM_KR.js","assets/Devices-C3jy25Bw.js","assets/ProviderIcon-BlnoCop3.js","assets/radio-D7QKOm_q.js","assets/server-9jJq82Vu.js","assets/wifi-dLfxxYcz.js","assets/AdminPage-vtcsGqRq.js","assets/useEventInvalidation-BMv3kB-_.js","assets/Integrations-DsYPT3r2.js","assets/ScanNetworkModal-CxjeMDho.js","assets/download-BXqeElYK.js","assets/refresh-cw-sAaM2a8A.js","assets/BrokerForm-BU7fpWoT.js","assets/FormBuilder-B7tUioUm.js","assets/StatusBadge-BSsUNFG6.js","assets/useBodyScrollLock-B2OWVaf_.js","assets/IntegrationDetail-lPxvINqs.js","assets/rotate-cw-Dq3dsGth.js","assets/Pipeline-BI2SWq0a.js","assets/esm-C86u2nhh.js","assets/AddLocationWizard-DlIuy7PK.js","assets/pencil-x4bNLykx.js","assets/zap-lXnTrd14.js","assets/search-Cbx2Urnx.js","assets/square-check-big-CKe1iFeG.js","assets/square-C0pQT5rA.js","assets/NodeAddonsSettingsPanel-oVi7MC28.js","assets/SchemaTabBar-DRo5sGP1.js","assets/useDevice-D_sz9YbZ.js","assets/format-size-CO9d3C3-.js","assets/DeviceDetail-DQbwOLvC.js","assets/CapabilityBadges-C7OuLfh8.js","assets/sparkles-Cf43SJhp.js","assets/rotate-ccw-DmmfCbwP.js","assets/Showroom-DrEy5G_m.js","assets/EmbedPlayerPage-C4PqItRF.js","assets/DetectionIntelligence-DqOJ15Er.js","assets/Addons-CF3JeZJs.js","assets/upload-DeGWObu4.js","assets/MyAccess-0WTyoQQ1.js","assets/circle-check-big-MfDWxk9K.js","assets/copy-C4G6c4Ys.js","assets/key-round-BNduVRhj.js","assets/Logs-5bYEoeMq.js","assets/Identity-BEvc1UzE.js","assets/AddonCollectionPage-B4YZsZ2N.js","assets/AdminTabs-Cyrx86NX.js","assets/Network-BggdRVzo.js","assets/Integrations-CNJgYeN5.js","assets/Data-t_YbtZxL.js","assets/Settings-5VzV0eVZ.js","assets/Cluster-tcDpGJRa.js","assets/Capabilities-BEyROSgm.js","assets/NotificationTargets-CI-nn-rf.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{i 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_--tYWwZy7.js";import{t as i}from"./vite-preload-helper-zJ_50EbN.js";import{Aa as a,Ai as o,Ct as s,F as c,I as l,Jr as u,N as d,O as f,P as p,Qr as m,Rr as h,St as g,Ta as _,Tt as v,Vi as y,Vr as b,Xi as x,Y as S,Yi as ee,aa as te,ia as C,ka as w,lt as ne,oa as re,ri as ie,rt as ae,t as oe,ti as se,wt as ce,xt as le,yi as ue}from"./src-B7BVQkY2.js";import{A as de,B as fe,D as T,E,G as D,I as O,J as pe,K as k,L as A,M as me,N as he,O as j,P as ge,S as M,U as _e,W as N,X as ve,Y as ye,Z as P,a as be,b as xe,d as Se,j as F,k as Ce,o as we,q as Te,u as Ee,x as I,z as L}from"./_virtual_mf___mfe_internal__admin_ui_host__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-CCjPq1YD.js";import{d as De,p as Oe}from"./player-overlays-BK-_BrgW.js";import{r as ke,t as Ae}from"./_virtual_mf___mfe_internal__admin_ui_host__loadShare__react_mf_2_dom__loadShare__.js-DcnMG4y9.js";import{t as je}from"./_virtual_mf___mfe_internal__admin_ui_host__loadShare__react_mf_2_dom_mf_1_client__loadShare__.js-CUURKTLp.js";import{t as Me}from"./src-D7qnpDWK.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)}})(),P();var Ne=/^(?:[a-z][a-z0-9+.-]*:|[\\/]{2})/i,Pe=/^[\\/]{2}/;function Fe(e,t){return t+e.replace(/\\/g,`/`)}var Ie=`popstate`;function Le(e){return typeof e==`object`&&!!e&&`pathname`in e&&`search`in e&&`hash`in e&&`state`in e&&`key`in e}function Re(e={}){function t(e,t){let n=t.state?.masked,{pathname:r,search:i,hash:a}=n||e.location;return Ve(``,{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:He(t)}return We(t,n,null,e)}function R(e,t){if(e===!1||e==null)throw Error(t)}function z(e,t){if(!e){typeof console<`u`&&console.warn(t);try{throw Error(t)}catch{}}}function ze(){return Math.random().toString(36).substring(2,10)}function Be(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 Ve(e,t,n=null,r,i){return{pathname:typeof e==`string`?e:e.pathname,search:``,hash:``,...typeof t==`string`?Ue(t):t,state:n,key:t&&t.key||r||ze(),mask:i}}function He({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 Ue(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 We(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=Le(e)?e:Ve(h.location,e,t);n&&n(r,e),l=u()+1;let d=Be(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=Le(e)?e:Ve(h.location,e,t);n&&n(r,e),l=u();let i=Be(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 Ge(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(Ie,d),c=e,()=>{i.removeEventListener(Ie,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 Ge(e,t,n=!1){let r=`http://localhost`;e&&(r=e.location.origin===`null`?e.location.href:e.location.origin),R(r,`No window.location.(origin|href) available to create URL`);let i=typeof t==`string`?t:He(t);return i=i.replace(/ $/,`%20`),!n&&Pe.test(i)&&(i=r+i),new URL(i,r)}function Ke(e,t,n=`/`){return qe(e,t,n,!1)}function qe(e,t,n,r,i){let a=B((typeof t==`string`?Ue(t):t).pathname||`/`,n);if(a==null)return null;let o=i??Ye(e),s=null,c=ft(a);for(let e=0;s==null&&e<o.length;++e)s=ct(o[e],c,r);return s}function Je(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 Ye(e){let t=Xe(e);return Qe(t),t}function Xe(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;R(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=V([r,c.relativePath]),u=n.concat(c);e.children&&e.children.length>0&&(R(e.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${l}".`),Xe(e.children,t,u,l,o)),!(e.path==null&&!e.index)&&t.push({path:l,score:ot(l,e.index),routesMeta:u.map((e,t)=>{let[n,r]=dt(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 Ze(e.path))a(e,t,!0,n)}),t}function Ze(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=Ze(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 Qe(e){e.sort((e,t)=>e.score===t.score?st(e.routesMeta.map(e=>e.childrenIndex),t.routesMeta.map(e=>e.childrenIndex)):t.score-e.score)}var $e=/^:[\w-]+$/,et=3,tt=2,nt=1,rt=10,it=-2,at=e=>e===`*`;function ot(e,t){let n=e.split(`/`),r=n.length;return n.some(at)&&(r+=it),t&&(r+=tt),n.filter(e=>!at(e)).reduce((e,t)=>e+($e.test(t)?et:t===``?nt:rt),r)}function st(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 ct(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?ut(u,l,s.matcher,s.compiledParams):lt(u,l),f=s.route;if(!d&&c&&n&&!r[r.length-1].route.index&&(d=lt({path:s.relativePath,caseSensitive:s.caseSensitive,end:!1},l)),!d)return null;Object.assign(i,d.params),o.push({params:i,pathname:V([a,d.pathname]),pathnameBase:xt(V([a,d.pathnameBase])),route:f}),d.pathnameBase!==`/`&&(a=V([a,d.pathnameBase]))}return o}function lt(e,t){typeof e==`string`&&(e={path:e,caseSensitive:!1,end:!0});let[n,r]=dt(e.path,e.caseSensitive,e.end);return ut(e,t,n,r)}function ut(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 dt(e,t=!1,n=!0){z(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 ft(e){try{return e.split(`/`).map(e=>decodeURIComponent(e).replace(/\//g,`%2F`)).join(`/`)}catch(t){return z(!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 B(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 pt(e,t=`/`){let{pathname:n,search:r=``,hash:i=``}=typeof e==`string`?Ue(e):e,a;return n?(n=yt(n),a=n.startsWith(`/`)?mt(n.substring(1),`/`):mt(n,t)):a=t,{pathname:a,search:St(r),hash:Ct(i)}}function mt(e,t){let n=bt(t).split(`/`);return e.split(`/`).forEach(e=>{e===`..`?n.length>1&&n.pop():e!==`.`&&n.push(e)}),n.length>1?n.join(`/`):`/`}function ht(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 gt(e){return e.filter((e,t)=>t===0||e.route.path&&e.route.path.length>0)}function _t(e){let t=gt(e);return t.map((e,n)=>n===t.length-1?e.pathname:e.pathnameBase)}function vt(e,t,n,r=!1){let i;typeof e==`string`?i=Ue(e):(i={...e},R(!i.pathname||!i.pathname.includes(`?`),ht(`?`,`pathname`,`search`,i)),R(!i.pathname||!i.pathname.includes(`#`),ht(`#`,`pathname`,`hash`,i)),R(!i.search||!i.search.includes(`#`),ht(`#`,`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=pt(i,s),l=o&&o!==`/`&&o.endsWith(`/`),u=(a||o===`.`)&&n.endsWith(`/`);return!c.pathname.endsWith(`/`)&&(l||u)&&(c.pathname+=`/`),c}var yt=e=>e.replace(/[\\/]{2,}/g,`/`),V=e=>yt(e.join(`/`)),bt=e=>e.replace(/\/+$/,``),xt=e=>bt(e).replace(/^\/*/,`/`),St=e=>!e||e===`?`?``:e.startsWith(`?`)?e:`?`+e,Ct=e=>!e||e===`#`?``:e.startsWith(`#`)?e:`#`+e,wt=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 Tt(e){return e!=null&&typeof e.status==`number`&&typeof e.statusText==`string`&&typeof e.internal==`boolean`&&`data`in e}function Et(e){return V(e.map(e=>e.route.path).filter(Boolean))||`/`}var Dt=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;function Ot(e,t){let n=e;if(typeof n!=`string`||!Ne.test(n))return{absoluteURL:void 0,isExternal:!1,to:n};let r=n,i=!1;if(Dt)try{let e=new URL(window.location.href),r=Pe.test(n)?new URL(Fe(n,e.protocol)):new URL(n),a=B(r.pathname,t);r.origin===e.origin&&a!=null?n=a+r.search+r.hash:i=!0}catch{z(!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 kt=[`POST`,`PUT`,`PATCH`,`DELETE`];new Set(kt);var At=[`GET`,...kt];new Set(At);var jt=[`about:`,`blob:`,`chrome:`,`chrome-untrusted:`,`content:`,`data:`,`devtools:`,`file:`,`filesystem:`,`javascript:`];function Mt(e){try{return jt.includes(new URL(e).protocol)}catch{return!1}}var Nt=T(null);Nt.displayName=`DataRouter`;var Pt=T(null);Pt.displayName=`DataRouterState`;var Ft=T(!1);function It(){return A(Ft)}var Lt=T({isTransitioning:!1});Lt.displayName=`ViewTransition`;var Rt=T(new Map);Rt.displayName=`Fetchers`;var zt=T(null);zt.displayName=`Await`;var H=T(null);H.displayName=`Navigation`;var Bt=T(null);Bt.displayName=`Location`;var U=T({outlet:null,matches:[],isDataRoute:!1});U.displayName=`Route`;var Vt=T(null);Vt.displayName=`RouteError`;var Ht=`REACT_ROUTER_ERROR`,Ut=`REDIRECT`,Wt=`ROUTE_ERROR_RESPONSE`;function Gt(e){if(e.startsWith(`${Ht}:${Ut}:{`))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 Kt(e){if(e.startsWith(`${Ht}:${Wt}:{`))try{let t=JSON.parse(e.slice(40));if(typeof t==`object`&&t&&typeof t.status==`number`&&typeof t.statusText==`string`)return new wt(t.status,t.statusText,t.data)}catch{}}function qt(e,{relative:t}={}){R(Jt(),`useHref() may be used only in the context of a <Router> component.`);let{basename:n,navigator:r}=A(H),{hash:i,pathname:a,search:o}=tn(e,{relative:t}),s=a;return n!==`/`&&(s=a===`/`?n:V([n,a])),r.createHref({pathname:s,search:o,hash:i})}function Jt(){return A(Bt)!=null}function W(){return R(Jt(),`useLocation() may be used only in the context of a <Router> component.`),A(Bt).location}var Yt=`You should call navigate() in a React.useEffect(), not when your component is first rendered.`;function Xt(e){A(H).static||_e(e)}function G(){let{isDataRoute:e}=A(U);return e?xn():Zt()}function Zt(){R(Jt(),`useNavigate() may be used only in the context of a <Router> component.`);let e=A(Nt),{basename:t,navigator:n}=A(H),{matches:r}=A(U),{pathname:i}=W(),a=JSON.stringify(_t(r)),o=D(!1);return Xt(()=>{o.current=!0}),O((r,s={})=>{if(z(o.current,Yt),!o.current)return;if(typeof r==`number`){n.go(r);return}let c=vt(r,JSON.parse(a),i,s.relative===`path`);e==null&&t!==`/`&&(c.pathname=c.pathname===`/`?t:V([t,c.pathname])),(s.replace?n.replace:n.push)(c,s.state,s)},[t,n,a,i,e])}var Qt=T(null);function $t(e){let t=A(U).outlet;return N(()=>t&&j(Qt.Provider,{value:e},t),[t,e])}function en(){let{matches:e}=A(U);return e[e.length-1]?.params??{}}function tn(e,{relative:t}={}){let{matches:n}=A(U),{pathname:r}=W(),i=JSON.stringify(_t(n));return N(()=>vt(e,JSON.parse(i),r,t===`path`),[e,i,r,t])}function nn(e,t){return rn(e,t)}function rn(e,t,n){R(Jt(),`useRoutes() may be used only in the context of a <Router> component.`);let{navigator:r}=A(H),{matches:i}=A(U),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||``;Cn(s,!l||e.endsWith(`*`)||e.endsWith(`*?`),`You rendered descendant <Routes> (or called \`useRoutes()\`) at "${s}" (under <Route path="${e}">) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render.
|
|
3
3
|
|
|
4
|
-
Please change the parent <Route path="${e}"> to <Route path="${e===`/`?`*`:`${e}/*`}">.`)}let u=W(),d;if(t){let e=typeof t==`string`?Ue(t):t;R(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})):Ke(e,{pathname:p});z(l||m!=null,`No routes matched location "${d.pathname}${d.search}${d.hash}" `),z(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=dn(m&&m.map(e=>Object.assign({},e,{params:Object.assign({},o,e.params),pathname:V([c,r.encodeLocation?r.encodeLocation(e.pathname.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathname]),pathnameBase:e.pathnameBase===`/`?c:V([c,r.encodeLocation?r.encodeLocation(e.pathnameBase.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathnameBase])})),i,n);return t&&h?j(Bt.Provider,{value:{location:{pathname:`/`,search:``,hash:``,state:null,key:`default`,mask:void 0,...d},navigationType:`POP`}},h):h}function an(){let e=bn(),t=Tt(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=j(fe,null,j(`p`,null,`💿 Hey developer 👋`),j(`p`,null,`You can provide a way better UX than this when your app throws errors by providing your own `,j(`code`,{style:a},`ErrorBoundary`),` or`,` `,j(`code`,{style:a},`errorElement`),` prop on your route.`)),j(fe,null,j(`h2`,null,`Unexpected Application Error!`),j(`h3`,{style:{fontStyle:`italic`}},t),n?j(`pre`,{style:i},n):null,o)}var on=j(an,null),sn=class extends he{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=Kt(e.digest);t&&(e=t)}let t=e===void 0?this.props.children:j(U.Provider,{value:this.props.routeContext},j(Vt.Provider,{value:e,children:this.props.component}));return this.context?j(ln,{error:e},t):t}};sn.contextType=Ft;var cn=new WeakMap;function ln({children:e,error:t}){let{basename:n}=A(H);if(typeof t==`object`&&t&&`digest`in t&&typeof t.digest==`string`){let e=Gt(t.digest);if(e){let r=cn.get(t);if(r)throw r;let i=Ot(e.location,n),a=i.absoluteURL||i.to;if(Mt(a))throw Error(`Invalid redirect location`);if(Dt&&!cn.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 cn.set(t,n),n}return j(`meta`,{httpEquiv:`refresh`,content:`0;url=${a}`})}}return e}function un({routeContext:e,match:t,children:n}){let r=A(Nt);return r&&r.static&&r.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=t.route.id),j(U.Provider,{value:e},n)}function dn(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);R(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:Et(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||on,o&&(s<0&&c===0?(Cn(`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?j(n.route.Component,null):n.route.element?n.route.element:e,j(un,{match:n,routeContext:{outlet:e,matches:m,isDataRoute:r!=null},children:t})};return r&&(n.route.ErrorBoundary||n.route.errorElement||c===0)?j(sn,{location:r.location,revalidation:r.revalidation,component:f,error:u,children:h(),routeContext:{outlet:null,matches:m,isDataRoute:!0},onError:l}):h()},null)}function fn(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function pn(e){let t=A(Nt);return R(t,fn(e)),t}function mn(e){let t=A(Pt);return R(t,fn(e)),t}function hn(e){let t=A(U);return R(t,fn(e)),t}function gn(e){let t=hn(e),n=t.matches[t.matches.length-1];return R(n.route.id,`${e} can only be used on routes that contain a unique "id"`),n.route.id}function _n(){return gn(`useRouteId`)}function vn(){let e=mn(`useNavigation`);return N(()=>{let{matches:t,historyAction:n,...r}=e.navigation;return r},[e.navigation])}function yn(){let{matches:e,loaderData:t}=mn(`useMatches`);return N(()=>e.map(e=>Je(e,t)),[e,t])}function bn(){let e=A(Vt),t=mn(`useRouteError`),n=gn(`useRouteError`);return e===void 0?t.errors?.[n]:e}function xn(){let{router:e}=pn(`useNavigate`),t=gn(`useNavigate`),n=D(!1);return Xt(()=>{n.current=!0}),O(async(r,i={})=>{z(n.current,Yt),n.current&&(typeof r==`number`?await e.navigate(r):await e.navigate(r,{fromRouteId:t,...i}))},[e,t])}var Sn={};function Cn(e,t,n){!t&&!Sn[e]&&(Sn[e]=!0,z(!1,n))}me(wn);function wn({routes:e,manifest:t,future:n,state:r,isStatic:i,onError:a}){return rn(e,void 0,{manifest:t,state:r,isStatic:i,onError:a,future:n})}function K({to:e,replace:t,state:n,relative:r}){R(Jt(),`<Navigate> may be used only in the context of a <Router> component.`);let{static:i}=A(H);z(!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}=A(U),{pathname:o}=W(),s=G(),c=vt(e,_t(a),o,r===`path`),l=JSON.stringify(c);return L(()=>{s(JSON.parse(l),{replace:t,state:n,relative:r})},[s,l,r,t,n]),null}function Tn(e){return $t(e.context)}function q(e){R(!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 En({basename:e=`/`,children:t=null,location:n,navigationType:r=`POP`,navigator:i,static:a=!1,useTransitions:o}){R(!Jt(),`You cannot render a <Router> inside another <Router>. You should never have more than one in your app.`);let s=e.replace(/^\/*/,`/`),c=N(()=>({basename:s,navigator:i,static:a,useTransitions:o,future:{}}),[s,i,a,o]);typeof n==`string`&&(n=Ue(n));let{pathname:l=`/`,search:u=``,hash:d=``,state:f=null,key:p=`default`,mask:m}=n,h=N(()=>{let e=B(l,s);return e==null?null:{location:{pathname:e,search:u,hash:d,state:f,key:p,mask:m},navigationType:r}},[s,l,u,d,f,p,r,m]);return z(h!=null,`<Router basename="${s}"> is not able to match the URL "${l}${u}${d}" because it does not start with the basename, so the <Router> won't render anything.`),h==null?null:j(H.Provider,{value:c},j(Bt.Provider,{children:t,value:h}))}function Dn({children:e,location:t}){return nn(On(e),t)}function On(e,t=[]){let n=[];return E.forEach(e,(e,r)=>{if(!de(e))return;let i=[...t,r];if(e.type===fe){n.push.apply(n,On(e.props.children,i));return}R(e.type===q,`[${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>`),R(!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=On(e.props.children,i)),n.push(a)}),n}var kn=`get`,An=`application/x-www-form-urlencoded`;function jn(e){return typeof HTMLElement<`u`&&e instanceof HTMLElement}function Mn(e){return jn(e)&&e.tagName.toLowerCase()===`button`}function Nn(e){return jn(e)&&e.tagName.toLowerCase()===`form`}function Pn(e){return jn(e)&&e.tagName.toLowerCase()===`input`}function Fn(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function In(e,t){return e.button===0&&(!t||t===`_self`)&&!Fn(e)}function Ln(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 Rn(e,t){let n=Ln(e);return t&&t.forEach((e,r)=>{n.has(r)||t.getAll(r).forEach(e=>{n.append(r,e)})}),n}var zn=null;function Bn(){if(zn===null)try{new FormData(document.createElement(`form`),0),zn=!1}catch{zn=!0}return zn}var Vn=new Set([`application/x-www-form-urlencoded`,`multipart/form-data`,`text/plain`]);function Hn(e){return e!=null&&!Vn.has(e)?(z(!1,`"${e}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${An}"`),null):e}function Un(e,t){let n,r,i,a,o;if(Nn(e)){let o=e.getAttribute(`action`);r=o?B(o,t):null,n=e.getAttribute(`method`)||kn,i=Hn(e.getAttribute(`enctype`))||An,a=new FormData(e)}else if(Mn(e)||Pn(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?B(s,t):null,n=e.getAttribute(`formmethod`)||o.getAttribute(`method`)||kn,i=Hn(e.getAttribute(`formenctype`))||Hn(o.getAttribute(`enctype`))||An,a=new FormData(o,e),!Bn()){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(jn(e))throw Error(`Cannot submit element that is not <form>, <button>, or <input type="submit|image">`);else n=kn,r=null,i=An,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 Wn={"&":`\\u0026`,">":`\\u003e`,"<":`\\u003c`,"\u2028":`\\u2028`,"\u2029":`\\u2029`},Gn=/[&><\u2028\u2029]/g;function Kn(e){return e.replace(Gn,e=>Wn[e])}function qn(e,t){if(e===!1||e==null)throw Error(t)}function Jn(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&&B(i.pathname,t)===`/`?i.pathname=`${bt(t)}/_root.${r}`:i.pathname=`${bt(i.pathname)}.${r}`,i}async function Yn(e,t){if(e.id in t)return t[e.id];try{let n=await i(()=>import(e.module),[]);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 Xn(e){return e!=null&&typeof e.page==`string`}function Zn(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 Qn(e,t,n){return rr((await Promise.all(e.map(async e=>{let r=t.routes[e.route.id];if(r){let e=await Yn(r,n);return e.links?e.links():[]}return[]}))).flat(1).filter(Zn).filter(e=>e.rel===`stylesheet`||e.rel===`preload`).map(e=>e.rel===`stylesheet`?{...e,rel:`prefetch`,as:`style`}:{...e,rel:`prefetch`}))}function $n(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 er(e,t,{includeHydrateFallback:n}={}){return tr(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 tr(e){return[...new Set(e)]}function nr(e){let t={},n=Object.keys(e).sort();for(let r of n)t[r]=e[r];return t}function rr(e,t){let n=new Set,r=new Set(t);return e.reduce((e,i)=>{if(t&&!Xn(i)&&i.as===`script`&&i.href&&r.has(i.href))return e;let a=JSON.stringify(nr(i));return n.has(a)||(n.add(a),e.push({key:a,link:i})),e},[])}function ir(){let e=A(Nt);return qn(e,`You must render this element inside a <DataRouterContext.Provider> element`),e}function ar(){let e=A(Pt);return qn(e,`You must render this element inside a <DataRouterStateContext.Provider> element`),e}var or=T(void 0);or.displayName=`FrameworkContext`;function sr(){let e=A(or);return qn(e,`You must render this element inside a <HydratedRouter> element`),e}function cr(e,t){let n=A(or),[r,i]=k(!1),[a,o]=k(!1),{onFocus:s,onBlur:c,onMouseEnter:l,onMouseLeave:u,onTouchStart:d}=t,f=D(null);L(()=>{if(e===`render`&&o(!0),e===`viewport`){let e=new IntersectionObserver(e=>{e.forEach(e=>{o(e.isIntersecting)})},{threshold:.5});return f.current&&e.observe(f.current),()=>{e.disconnect()}}},[e]),L(()=>{if(r){let e=setTimeout(()=>{o(!0)},100);return()=>{clearTimeout(e)}}},[r]);let p=()=>{i(!0)},m=()=>{i(!1),o(!1)};return n?e===`intent`?[a,f,{onFocus:lr(s,p),onBlur:lr(c,m),onMouseEnter:lr(l,p),onMouseLeave:lr(u,m),onTouchStart:lr(d,p)}]:[a,f,{}]:[!1,f,{}]}function lr(e,t){return n=>{e&&e(n),n.defaultPrevented||t(n)}}function ur({page:e,...t}){let n=It(),{nonce:r}=sr(),{router:i}=ir(),a=N(()=>Ke(i.routes,e,i.basename),[i.routes,e,i.basename]);return a?(t.nonce==null&&r&&(t={...t,nonce:r}),j(n?fr:pr,{page:e,matches:a,...t})):null}function dr(e){let{manifest:t,routeModules:n}=sr(),[r,i]=k([]);return L(()=>{let r=!1;return Qn(e,t,n).then(e=>{r||i(e)}),()=>{r=!0}},[e,t,n]),r}function fr({page:e,matches:t,...n}){let r=W(),{future:i}=sr(),{basename:a}=ir();return j(fe,null,N(()=>{if(e===r.pathname+r.search+r.hash)return[];let n=Jn(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=>j(`link`,{key:e,rel:`prefetch`,as:`fetch`,href:e,...n})))}function pr({page:e,matches:t,...n}){let r=W(),{future:i,manifest:a,routeModules:o}=sr(),{basename:s}=ir(),{loaderData:c,matches:l}=ar(),u=N(()=>$n(e,t,l,a,r,`data`),[e,t,l,a,r]),d=N(()=>$n(e,t,l,a,r,`assets`),[e,t,l,a,r]),f=N(()=>{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=Jn(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]),p=N(()=>er(d,a),[d,a]),m=dr(d);return j(fe,null,f.map(e=>j(`link`,{key:e,rel:`prefetch`,as:`fetch`,href:e,...n})),p.map(e=>j(`link`,{key:e,rel:`modulepreload`,href:e,...n})),m.map(({key:e,link:t})=>j(`link`,{key:e,nonce:n.nonce,...t,crossOrigin:t.crossOrigin??n.crossOrigin})))}function mr(...e){return t=>{e.forEach(e=>{typeof e==`function`?e(t):e!=null&&(e.current=t)})}}var hr=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;try{hr&&(window.__reactRouterVersion=`7.18.0`)}catch{}function gr({basename:e,children:t,useTransitions:n,window:r}){let i=D();i.current??=Re({window:r,v5Compat:!0});let a=i.current,[o,s]=k({action:a.action,location:a.location}),c=O(e=>{n===!1?s(e):ge(()=>s(e))},[n]);return _e(()=>a.listen(c),[a,c]),j(En,{basename:e,children:t,location:o.location,navigationType:o.action,navigator:a,useTransitions:n})}function _r({basename:e,children:t,history:n,useTransitions:r}){let[i,a]=k({action:n.action,location:n.location}),o=O(e=>{r===!1?a(e):ge(()=>a(e))},[r]);return _e(()=>n.listen(o),[n,o]),j(En,{basename:e,children:t,location:i.location,navigationType:i.action,navigator:n,useTransitions:r})}_r.displayName=`unstable_HistoryRouter`;var vr=Ce(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:_}=A(H),v=typeof l==`string`&&Ne.test(l),y=Ot(l,h);l=y.to;let b=qt(l,{relative:r}),x=W(),S=null;if(o){let e=vt(o,[],x.mask?x.mask.pathname:`/`,!0);h!==`/`&&(e.pathname=e.pathname===`/`?h:V([h,e.pathname])),S=g.createHref(e)}let[ee,te,C]=cr(n,p),w=Tr(l,{replace:a,mask:o,state:s,target:c,preventScrollReset:u,relative:r,viewTransition:d,defaultShouldRevalidate:f,useTransitions:_});function ne(t){e&&e(t),t.defaultPrevented||w(t)}let re=!(y.isExternal||i),ie=j(`a`,{...p,...C,href:(re?S:void 0)||y.absoluteURL||b,onClick:re?ne:e,ref:mr(m,te),target:c,"data-discover":!v&&t===`render`?`true`:void 0});return ee&&!v?j(fe,null,ie,j(ur,{page:b})):ie});vr.displayName=`Link`;var yr=Ce(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=tn(a,{relative:c.relative}),d=W(),f=A(Pt),{navigator:p,basename:m}=A(H),h=f!=null&&Ir(u)&&o===!0,g=p.encodeLocation?p.encodeLocation(u).pathname:u.pathname,_=d.pathname,v=f&&f.navigation&&f.navigation.location?f.navigation.location.pathname:null;t||(_=_.toLowerCase(),v=v?v.toLowerCase():null,g=g.toLowerCase()),v&&m&&(v=B(v,m)||v);let y=g!==`/`&&g.endsWith(`/`)?g.length-1:g.length,b=_===g||!r&&_.startsWith(g)&&_.charAt(y)===`/`,x=v!=null&&(v===g||!r&&v.startsWith(g)&&v.charAt(g.length)===`/`),S={isActive:b,isPending:x,isTransitioning:h},ee=b?e:void 0,te;te=typeof n==`function`?n(S):[n,b?`active`:null,x?`pending`:null,h?`transitioning`:null].filter(Boolean).join(` `);let C=typeof i==`function`?i(S):i;return j(vr,{...c,"aria-current":ee,className:te,ref:l,style:C,to:a,viewTransition:o},typeof s==`function`?s(S):s)});yr.displayName=`NavLink`;var br=Ce(({discover:e=`render`,fetcherKey:t,navigate:n,reloadDocument:r,replace:i,state:a,method:o=kn,action:s,onSubmit:c,relative:l,preventScrollReset:u,viewTransition:d,defaultShouldRevalidate:f,...p},m)=>{let{useTransitions:h}=A(H),g=kr(),_=Ar(s,{relative:l}),v=o.toLowerCase()===`get`?`get`:`post`,y=typeof s==`string`&&Ne.test(s);return j(`form`,{ref:m,method:v,action:_,onSubmit:r?c:e=>{if(c&&c(e),e.defaultPrevented)return;e.preventDefault();let r=e.nativeEvent.submitter,s=r?.getAttribute(`formmethod`)||o,p=()=>g(r||e.currentTarget,{fetcherKey:t,method:s,navigate:n,replace:i,state:a,relative:l,preventScrollReset:u,viewTransition:d,defaultShouldRevalidate:f});h&&n!==!1?ge(()=>p()):p()},...p,"data-discover":!y&&e===`render`?`true`:void 0})});br.displayName=`Form`;function xr({getKey:e,storageKey:t,...n}){let r=A(or),{basename:i}=A(H),a=W(),o=yn();Pr({getKey:e,storageKey:t});let s=N(()=>{if(!r||!e)return null;let t=Nr(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),j(`script`,{...n,suppressHydrationWarning:!0,dangerouslySetInnerHTML:{__html:`(${c})(${Kn(JSON.stringify(t||jr))}, ${Kn(JSON.stringify(s))})`}})}xr.displayName=`ScrollRestoration`;function Sr(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Cr(e){let t=A(Nt);return R(t,Sr(e)),t}function wr(e){let t=A(Pt);return R(t,Sr(e)),t}function Tr(e,{target:t,replace:n,mask:r,state:i,preventScrollReset:a,relative:o,viewTransition:s,defaultShouldRevalidate:c,useTransitions:l}={}){let u=G(),d=W(),f=tn(e,{relative:o});return O(p=>{if(In(p,t)){p.preventDefault();let t=n===void 0?He(d)===He(f):n,m=()=>u(e,{replace:t,mask:r,state:i,preventScrollReset:a,relative:o,viewTransition:s,defaultShouldRevalidate:c});l?ge(()=>m()):m()}},[d,u,f,n,r,i,t,e,a,o,s,c,l])}function Er(e){z(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=D(Ln(e)),n=D(!1),r=W(),i=N(()=>Rn(r.search,n.current?null:t.current),[r.search]),a=G();return[i,O((e,t)=>{let r=Ln(typeof e==`function`?e(new URLSearchParams(i)):e);n.current=!0,a(`?`+r,t)},[a,i])]}var Dr=0,Or=()=>`__${String(++Dr)}__`;function kr(){let{router:e}=Cr(`useSubmit`),{basename:t}=A(H),n=_n(),r=e.fetch,i=e.navigate;return O(async(e,a={})=>{let{action:o,method:s,encType:c,formData:l,body:u}=Un(e,t);a.navigate===!1?await r(a.fetcherKey||Or(),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 Ar(e,{relative:t}={}){let{basename:n}=A(H),r=A(U);R(r,`useFormAction must be used inside a RouteContext`);let[i]=r.matches.slice(-1),a={...tn(e||`.`,{relative:t})},o=W();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:V([n,a.pathname])),He(a)}var jr=`react-router-scroll-positions`,Mr={};function Nr(e,t,n,r){let i=null;return r&&(i=r(n===`/`?e:{...e,pathname:B(e.pathname,n)||e.pathname},t)),i??=e.key,i}function Pr({getKey:e,storageKey:t}={}){let{router:n}=Cr(`useScrollRestoration`),{restoreScrollPosition:r,preventScrollReset:i}=wr(`useScrollRestoration`),{basename:a}=A(H),o=W(),s=yn(),c=vn();L(()=>(window.history.scrollRestoration=`manual`,()=>{window.history.scrollRestoration=`auto`}),[]),Fr(O(()=>{if(c.state===`idle`){let t=Nr(o,s,a,e);Mr[t]=window.scrollY}try{sessionStorage.setItem(t||jr,JSON.stringify(Mr))}catch(e){z(!1,`Failed to save scroll positions in sessionStorage, <ScrollRestoration /> will not work properly (${e}).`)}window.history.scrollRestoration=`auto`},[c.state,e,a,o,s,t])),typeof document<`u`&&(_e(()=>{try{let e=sessionStorage.getItem(t||jr);e&&(Mr=JSON.parse(e))}catch{}},[t]),_e(()=>{let t=n?.enableScrollRestoration(Mr,()=>window.scrollY,e?(t,n)=>Nr(t,n,a,e):void 0);return()=>t&&t()},[n,a,e]),_e(()=>{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{z(!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 Fr(e,t){let{capture:n}=t||{};L(()=>{let t=n==null?void 0:{capture:n};return window.addEventListener(`pagehide`,e,t),()=>{window.removeEventListener(`pagehide`,e,t)}},[e,n])}function Ir(e,{relative:t}={}){let n=A(Lt);R(n!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:r}=Cr(`useViewTransitionState`),i=tn(e,{relative:t});if(!n.isTransitioning)return!1;let a=B(n.currentLocation.pathname,r)||n.currentLocation.pathname,o=B(n.nextLocation.pathname,r)||n.nextLocation.pathname;return lt(i.pathname,o)!=null||lt(i.pathname,a)!=null}var Lr=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),Rr=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase()),zr=e=>{let t=Rr(e);return t.charAt(0).toUpperCase()+t.slice(1)},Br=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),Vr=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0},Hr={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`};P();var Ur=Ce(({color:e=`currentColor`,size:t=24,strokeWidth:n=2,absoluteStrokeWidth:r,className:i=``,children:a,iconNode:o,...s},c)=>j(`svg`,{ref:c,...Hr,width:t,height:t,stroke:e,strokeWidth:r?Number(n)*24/Number(t):n,className:Br(`lucide`,i),...!a&&!Vr(s)&&{"aria-hidden":`true`},...s},[...o.map(([e,t])=>j(e,t)),...Array.isArray(a)?a:[a]]));P();var J=(e,t)=>{let n=Ce(({className:n,...r},i)=>j(Ur,{ref:i,iconNode:t,className:Br(`lucide-${Lr(zr(e))}`,`lucide-${e}`,n),...r}));return n.displayName=zr(e),n},Wr=J(`activity`,[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2`,key:`169zse`}]]),Gr=J(`arrow-left`,[[`path`,{d:`m12 19-7-7 7-7`,key:`1l729n`}],[`path`,{d:`M19 12H5`,key:`x3x0zl`}]]),Kr=J(`bell`,[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}]]),qr=J(`bot`,[[`path`,{d:`M12 8V4H8`,key:`hb8ula`}],[`rect`,{width:`16`,height:`12`,x:`4`,y:`8`,rx:`2`,key:`enze0r`}],[`path`,{d:`M2 14h2`,key:`vft8re`}],[`path`,{d:`M20 14h2`,key:`4cs60a`}],[`path`,{d:`M15 13v2`,key:`1xurst`}],[`path`,{d:`M9 13v2`,key:`rq6x2g`}]]),Jr=J(`box`,[[`path`,{d:`M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z`,key:`hh9hay`}],[`path`,{d:`m3.3 7 8.7 5 8.7-5`,key:`g66t2b`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}]]),Yr=J(`camera`,[[`path`,{d:`M14.5 4h-5L7 7H4a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-3l-2.5-3z`,key:`1tc9qg`}],[`circle`,{cx:`12`,cy:`13`,r:`3`,key:`1vg3eu`}]]),Xr=J(`check-check`,[[`path`,{d:`M18 6 7 17l-5-5`,key:`116fxf`}],[`path`,{d:`m22 10-7.5 7.5L13 16`,key:`ke71qq`}]]),Zr=J(`check`,[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]),Qr=J(`chevron-down`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]),$r=J(`chevron-left`,[[`path`,{d:`m15 18-6-6 6-6`,key:`1wnfg3`}]]),ei=J(`chevron-right`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]),ti=J(`circle-alert`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`12`,x2:`12`,y1:`8`,y2:`12`,key:`1pkeuh`}],[`line`,{x1:`12`,x2:`12.01`,y1:`16`,y2:`16`,key:`4dfq90`}]]),ni=J(`circle-check`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),ri=J(`cpu`,[[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M17 20v2`,key:`1rnc9c`}],[`path`,{d:`M17 2v2`,key:`11trls`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M2 17h2`,key:`7oei6x`}],[`path`,{d:`M2 7h2`,key:`asdhe0`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`M20 17h2`,key:`1fpfkl`}],[`path`,{d:`M20 7h2`,key:`1o8tra`}],[`path`,{d:`M7 20v2`,key:`4gnj0m`}],[`path`,{d:`M7 2v2`,key:`1i4yhu`}],[`rect`,{x:`4`,y:`4`,width:`16`,height:`16`,rx:`2`,key:`1vbyd7`}],[`rect`,{x:`8`,y:`8`,width:`8`,height:`8`,rx:`1`,key:`z9xiuo`}]]),ii=J(`database`,[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`,key:`1wlel7`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`,key:`mv7ke4`}]]),ai=J(`external-link`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]),oi=J(`eye-off`,[[`path`,{d:`M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49`,key:`ct8e1f`}],[`path`,{d:`M14.084 14.158a3 3 0 0 1-4.242-4.242`,key:`151rxh`}],[`path`,{d:`M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143`,key:`13bj9a`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]),si=J(`eye`,[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`,key:`1nclc0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),ci=J(`gauge`,[[`path`,{d:`m12 14 4-4`,key:`9kzdfg`}],[`path`,{d:`M3.34 19a10 10 0 1 1 17.32 0`,key:`19p75a`}]]),li=J(`git-branch`,[[`line`,{x1:`6`,x2:`6`,y1:`3`,y2:`15`,key:`17qcm7`}],[`circle`,{cx:`18`,cy:`6`,r:`3`,key:`1h7g24`}],[`circle`,{cx:`6`,cy:`18`,r:`3`,key:`fqmcym`}],[`path`,{d:`M18 9a9 9 0 0 1-9 9`,key:`n2h4wq`}]]),ui=J(`globe`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20`,key:`13o1zl`}],[`path`,{d:`M2 12h20`,key:`9i4pu4`}]]),di=J(`info`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]),fi=J(`layout-dashboard`,[[`rect`,{width:`7`,height:`9`,x:`3`,y:`3`,rx:`1`,key:`10lvy0`}],[`rect`,{width:`7`,height:`5`,x:`14`,y:`3`,rx:`1`,key:`16une8`}],[`rect`,{width:`7`,height:`9`,x:`14`,y:`12`,rx:`1`,key:`1hutg5`}],[`rect`,{width:`7`,height:`5`,x:`3`,y:`16`,rx:`1`,key:`ldoo1y`}]]),pi=J(`loader-circle`,[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]]),mi=J(`lock`,[[`rect`,{width:`18`,height:`11`,x:`3`,y:`11`,rx:`2`,ry:`2`,key:`1w4ew1`}],[`path`,{d:`M7 11V7a5 5 0 0 1 10 0v4`,key:`fwvmzm`}]]),hi=J(`log-out`,[[`path`,{d:`m16 17 5-5-5-5`,key:`1bji2h`}],[`path`,{d:`M21 12H9`,key:`dn1m92`}],[`path`,{d:`M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4`,key:`1uf3rs`}]]),gi=J(`menu`,[[`path`,{d:`M4 12h16`,key:`1lakjw`}],[`path`,{d:`M4 18h16`,key:`19g7jn`}],[`path`,{d:`M4 6h16`,key:`1o0s65`}]]),_i=J(`monitor`,[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`,key:`48i651`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`,key:`1svkeh`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`,key:`vw1qmm`}]]),vi=J(`moon`,[[`path`,{d:`M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z`,key:`a7tn18`}]]),yi=J(`network`,[[`rect`,{x:`16`,y:`16`,width:`6`,height:`6`,rx:`1`,key:`4q2zg0`}],[`rect`,{x:`2`,y:`16`,width:`6`,height:`6`,rx:`1`,key:`8cvhb9`}],[`rect`,{x:`9`,y:`2`,width:`6`,height:`6`,rx:`1`,key:`1egb70`}],[`path`,{d:`M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3`,key:`1jsf9p`}],[`path`,{d:`M12 12V8`,key:`2874zd`}]]),bi=J(`plug`,[[`path`,{d:`M12 22v-5`,key:`1ega77`}],[`path`,{d:`M9 8V2`,key:`14iosj`}],[`path`,{d:`M15 8V2`,key:`18g5xt`}],[`path`,{d:`M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z`,key:`osxo6l`}]]),xi=J(`puzzle`,[[`path`,{d:`M15.39 4.39a1 1 0 0 0 1.68-.474 2.5 2.5 0 1 1 3.014 3.015 1 1 0 0 0-.474 1.68l1.683 1.682a2.414 2.414 0 0 1 0 3.414L19.61 15.39a1 1 0 0 1-1.68-.474 2.5 2.5 0 1 0-3.014 3.015 1 1 0 0 1 .474 1.68l-1.683 1.682a2.414 2.414 0 0 1-3.414 0L8.61 19.61a1 1 0 0 0-1.68.474 2.5 2.5 0 1 1-3.014-3.015 1 1 0 0 0 .474-1.68l-1.683-1.682a2.414 2.414 0 0 1 0-3.414L4.39 8.61a1 1 0 0 1 1.68.474 2.5 2.5 0 1 0 3.014-3.015 1 1 0 0 1-.474-1.68l1.683-1.682a2.414 2.414 0 0 1 3.414 0z`,key:`w46dr5`}]]),Si=J(`scan-face`,[[`path`,{d:`M3 7V5a2 2 0 0 1 2-2h2`,key:`aa7l1z`}],[`path`,{d:`M17 3h2a2 2 0 0 1 2 2v2`,key:`4qcy5o`}],[`path`,{d:`M21 17v2a2 2 0 0 1-2 2h-2`,key:`6vwrx8`}],[`path`,{d:`M7 21H5a2 2 0 0 1-2-2v-2`,key:`ioqczr`}],[`path`,{d:`M8 14s1.5 2 4 2 4-2 4-2`,key:`1y1vjs`}],[`path`,{d:`M9 9h.01`,key:`1q5me6`}],[`path`,{d:`M15 9h.01`,key:`x1ddxp`}]]),Ci=J(`scroll-text`,[[`path`,{d:`M15 12h-5`,key:`r7krc0`}],[`path`,{d:`M15 8h-5`,key:`1khuty`}],[`path`,{d:`M19 17V5a2 2 0 0 0-2-2H4`,key:`zz82l3`}],[`path`,{d:`M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3`,key:`1ph1d7`}]]),wi=J(`settings`,[[`path`,{d:`M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z`,key:`1qme2f`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),Ti=J(`shield-check`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),Ei=J(`shield-x`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m14.5 9.5-5 5`,key:`17q4r4`}],[`path`,{d:`m9.5 9.5 5 5`,key:`18nt4w`}]]),Di=J(`sliders-horizontal`,[[`line`,{x1:`21`,x2:`14`,y1:`4`,y2:`4`,key:`obuewd`}],[`line`,{x1:`10`,x2:`3`,y1:`4`,y2:`4`,key:`1q6298`}],[`line`,{x1:`21`,x2:`12`,y1:`12`,y2:`12`,key:`1iu8h1`}],[`line`,{x1:`8`,x2:`3`,y1:`12`,y2:`12`,key:`ntss68`}],[`line`,{x1:`21`,x2:`16`,y1:`20`,y2:`20`,key:`14d8ph`}],[`line`,{x1:`12`,x2:`3`,y1:`20`,y2:`20`,key:`m0wm8r`}],[`line`,{x1:`14`,x2:`14`,y1:`2`,y2:`6`,key:`14e1ph`}],[`line`,{x1:`8`,x2:`8`,y1:`10`,y2:`14`,key:`1i6ji0`}],[`line`,{x1:`16`,x2:`16`,y1:`18`,y2:`22`,key:`1lctlv`}]]),Oi=J(`smartphone`,[[`rect`,{width:`14`,height:`20`,x:`5`,y:`2`,rx:`2`,ry:`2`,key:`1yt0o3`}],[`path`,{d:`M12 18h.01`,key:`mhygvu`}]]),ki=J(`sun`,[[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`m4.93 4.93 1.41 1.41`,key:`149t6j`}],[`path`,{d:`m17.66 17.66 1.41 1.41`,key:`ptbguv`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`m6.34 17.66-1.41 1.41`,key:`1m8zz5`}],[`path`,{d:`m19.07 4.93-1.41 1.41`,key:`1shlcs`}]]),Ai=J(`terminal`,[[`path`,{d:`M12 19h8`,key:`baeox8`}],[`path`,{d:`m4 17 6-6-6-6`,key:`1yngyt`}]]),ji=J(`trash-2`,[[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6`,key:`4alrt4`}],[`path`,{d:`M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2`,key:`v07s0e`}],[`line`,{x1:`10`,x2:`10`,y1:`11`,y2:`17`,key:`1uufr5`}],[`line`,{x1:`14`,x2:`14`,y1:`11`,y2:`17`,key:`xtxkd`}]]),Mi=J(`triangle-alert`,[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),Ni=J(`wifi-off`,[[`path`,{d:`M12 20h.01`,key:`zekei9`}],[`path`,{d:`M8.5 16.429a5 5 0 0 1 7 0`,key:`1bycff`}],[`path`,{d:`M5 12.859a10 10 0 0 1 5.17-2.69`,key:`1dl1wf`}],[`path`,{d:`M19 12.859a10 10 0 0 0-2.007-1.523`,key:`4k23kn`}],[`path`,{d:`M2 8.82a15 15 0 0 1 4.177-2.643`,key:`1grhjp`}],[`path`,{d:`M22 8.82a15 15 0 0 0-11.288-3.764`,key:`z3jwby`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]),Pi=J(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]),Fi=J(`wrench`,[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z`,key:`cbrjhi`}]]);P();function Ii({tabs:e,active:t,onChange:n}){return I(`div`,{className:`flex rounded-lg border border-border bg-surface p-0.5 gap-0.5`,children:e.map(e=>I(`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 Li(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 Ri(e){return`${e.inputSize.width}x${e.inputSize.height}`}function zi(e){return e.formats?Object.keys(e.formats).filter(t=>e.formats[t]!==void 0):[]}function Bi({entry:e,selected:t,onSelect:n,disabled:r}){let i=Li(e),a=Ri(e),o=zi(e);return M(`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:[I(`div`,{className:`flex items-start justify-between gap-2`,children:M(`div`,{className:`flex-1 min-w-0`,children:[M(`div`,{className:`flex items-center gap-2`,children:[I(`span`,{className:`text-xs font-semibold text-foreground truncate`,children:e.name}),t&&I(Zr,{className:`h-3.5 w-3.5 text-primary shrink-0`})]}),I(`p`,{className:`text-[10px] text-foreground-subtle mt-0.5 line-clamp-2`,children:e.description})]})}),M(`div`,{className:`flex items-center gap-3 mt-2 flex-wrap`,children:[M(`span`,{className:`inline-flex items-center gap-1 text-[10px] text-foreground-subtle`,children:[I(ri,{className:`h-3 w-3`}),a]}),i&&I(`span`,{className:`text-[10px] text-foreground-subtle`,children:i}),o.length>0&&I(`div`,{className:`flex gap-1`,children:o.map(e=>I(`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&&M(`span`,{className:`text-[10px] text-foreground-subtle`,children:[e.labels.length,` label`,e.labels.length===1?``:`s`]})]})]})}function Vi({field:e,value:t,onChange:n,disabled:r}){let i=e.catalog??[],a=i.length>0,o=e.allowCustomPath!==!1||e.allowCustom===!0,s=[...a?[{id:`catalog`,label:`Models (${i.length})`}]:[],...o?[{id:`custom`,label:`Custom Path`}]:[]],[c,l]=k(a?`catalog`:`custom`),u=t==null?``:String(t);return M(`div`,{className:`space-y-3`,children:[s.length>1&&I(Ii,{tabs:s,active:c,onChange:l}),c===`catalog`&&a&&I(`div`,{className:`space-y-1.5 max-h-[320px] overflow-y-auto pr-1`,children:i.map(t=>I(Bi,{entry:t,selected:u===t.id,onSelect:()=>n(t.id),disabled:r||e.disabled},t.id))}),c===`catalog`&&!a&&M(`div`,{className:`rounded-md border border-info/30 bg-info/5 px-3 py-2 flex items-start gap-2`,children:[I(di,{className:`h-3.5 w-3.5 text-info shrink-0 mt-0.5`}),I(`p`,{className:`text-[11px] text-foreground-subtle leading-relaxed`,children:`No predefined models available. Use the Custom Path tab to specify a model file path or URL.`})]}),c===`custom`&&o&&M(`div`,{className:`space-y-2`,children:[I(`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:`Enter path like /data/models/custom.onnx or https://...`,value:u,disabled:r||e.disabled,onChange:e=>n(e.target.value)}),e.acceptFormats&&e.acceptFormats.length>0&&M(`p`,{className:`text-[10px] text-foreground-subtle`,children:[`Accepted formats: `,e.acceptFormats.join(`, `)]})]}),(e.compatibilityNote||e.conversionGuideUrl)&&M(`div`,{className:`flex items-start justify-between gap-3 pt-1`,children:[e.compatibilityNote&&M(`p`,{className:`flex items-start gap-1 text-[10px] text-foreground-subtle`,children:[I(di,{className:`h-3 w-3 mt-0.5 shrink-0`}),e.compatibilityNote]}),e.conversionGuideUrl&&M(`a`,{href:e.conversionGuideUrl,target:`_blank`,rel:`noopener noreferrer`,className:`flex items-center gap-1 text-[11px] text-primary hover:underline shrink-0`,children:[`How to convert your model`,I(ai,{className:`h-3 w-3`})]})]})]})}function Hi(e){let t=Oe();return be({queryKey:[`field-resolver`,e?.capName??`<none>`,e?.methodName??`<none>`,e?.input??{}],enabled:!!e,queryFn:async()=>{if(!e)throw Error(`useFieldResolver: resolver is null (enabled guard should have prevented this)`);let n=e=>e!==null&&(typeof e==`object`||typeof e==`function`),r=Reflect.get(t.trpcClient,e.capName);if(!n(r))throw Error(`useFieldResolver: no cap namespace '${e.capName}' on the tRPC client`);let i=Reflect.get(r,e.methodName);if(!n(i))throw Error(`useFieldResolver: no method '${e.methodName}' on cap '${e.capName}'`);let a=Reflect.get(i,`query`);if(typeof a!=`function`)throw Error(`useFieldResolver: '${e.capName}.${e.methodName}' has no .query() (resolvers must be query methods, not mutations)`);return await a(e.input??{})}})}P();function Ui(e){return typeof e==`string`&&e.length>0&&e!==`undefined`&&e!==`null`}function Wi(e={}){let t=we(),n=u(void 0,{enabled:e.enabled??!0}),r=N(()=>(n.data??[]).filter(e=>Ui(e.nodeId)),[n.data]),i=O(()=>{t.invalidateQueries({queryKey:[`pipelineOrchestrator`,`listAgentSettings`]})},[t]);return{agents:r,isLoading:n.isLoading,isError:n.isError,error:n.error,refetch:()=>{n.refetch()},invalidate:i}}P();function Gi({field:e,disabled:t}){let n=we(),r=e.deviceId,i=Hi(e.catalogResolver),a=h({agentNodeId:e.nodeId}),o=b({deviceId:r}),s=ie({onSuccess:()=>{n.invalidateQueries({queryKey:[[`pipelineOrchestrator`,`getCameraSettings`]]}),n.invalidateQueries({queryKey:[[`deviceManager`]]})}}),c=i.data,u=a.data??null,d=o.data??null,f=N(()=>c?qi(c,u,d):[],[c,u,d]),p=N(()=>{if(!u)return{};let e={};for(let[t,n]of Object.entries(u.addonDefaults))e[t]=n.enabled;return e},[u]);return i.error?M(`div`,{className:`text-xs text-red-400`,children:[`Failed to load pipeline catalog for `,I(`code`,{children:e.nodeId}),`:`,` `,String(i.error.message??i.error)]}):i.isLoading||!c||a.isLoading?M(`div`,{className:`text-xs text-foreground-subtle animate-pulse`,children:[`Loading pipeline for `,e.nodeId,`…`]}):M(`div`,{className:`col-span-full space-y-4`,children:[M(`div`,{className:`flex items-center gap-2 text-[11px] text-foreground-subtle`,children:[`Agent: `,I(`span`,{className:`text-foreground`,children:e.nodeId}),M(`span`,{className:`ml-2`,children:[`Engine:`,` `,I(`span`,{className:`text-foreground font-mono`,children:`${c.selectedEngine.runtime}/${c.selectedEngine.backend}`})]}),M(`span`,{className:`ml-auto text-[10px]`,children:[`Model + settings edited on Pipeline → `,e.nodeId,`.`]})]}),I(l,{schema:c,steps:f,onChange:()=>{},templates:[],selectedTemplateId:null,onSelectTemplate:()=>{},onSaveTemplate:()=>{},onUpdateTemplate:()=>{},onDeleteTemplate:()=>{},readOnly:t===!0,hideTemplates:!0,toggleMode:`threeState`,hideModelAndSettings:!0,overrides:d?.stepToggles??{},onOverrideChange:(e,t)=>s.mutate({deviceId:r,addonId:e,enabled:t}),inheritedEnabledByAddon:p}),I(Ki,{deviceId:r,currentAgentNodeId:e.nodeId,catalog:c,pipelineByAgent:d?.pipelineByAgent??{},disabled:t===!0})]})}function Ki({deviceId:e,currentAgentNodeId:t,catalog:n,pipelineByAgent:r,disabled:i}){let a=we(),[o,s]=k(!1),[c,u]=k(t),{agents:d}=Wi({enabled:o}),f=m({deviceId:e,agentNodeId:c},{enabled:o}),p=se({onSuccess:()=>{a.invalidateQueries({queryKey:[[`pipelineOrchestrator`,`getCameraSettings`]]}),a.invalidateQueries({queryKey:[[`pipelineOrchestrator`,`resolvePipeline`]]})}}),h=r[c]??null,g=d,_=N(()=>h?Ji(h.steps,n):[],[h,n]);return M(`section`,{className:`rounded-lg border border-border bg-surface overflow-hidden`,children:[M(`button`,{type:`button`,onClick:()=>s(e=>!e),className:`w-full px-4 py-2 flex items-center gap-2 hover:bg-surface-hover`,children:[I(o?Qr:ei,{className:`h-3 w-3`}),I(`h3`,{className:`text-xs font-semibold text-foreground uppercase tracking-wide`,children:`Advanced — custom pipeline per agent`}),I(`span`,{className:`ml-auto text-[10px] text-foreground-subtle`,children:Object.keys(r).length>0?`${Object.keys(r).length} override(s) active`:`None configured`})]}),o&&M(`div`,{className:`border-t border-border px-4 py-3 space-y-3`,children:[M(`div`,{className:`flex items-center gap-2 text-xs`,children:[I(`span`,{className:`text-foreground-subtle`,children:`Agent:`}),M(`select`,{value:c,disabled:i,onChange:e=>u(e.target.value),className:`rounded border border-border bg-surface-hover px-2 py-1 text-xs text-foreground focus:outline-none focus:border-primary`,children:[typeof t==`string`&&t.length>0&&t!==`undefined`&&M(`option`,{value:t,children:[t,` (current)`]}),g.filter(e=>e.nodeId!==t).map(e=>I(`option`,{value:e.nodeId,children:e.nodeId},e.nodeId))]}),r[c]&&M(`button`,{type:`button`,onClick:()=>{window.confirm(`Remove custom pipeline override for ${c}? The camera will revert to the agent default + step toggles.`)&&p.mutate({deviceId:e,agentNodeId:c,pipeline:null})},disabled:i||p.isPending,className:`ml-auto inline-flex items-center gap-1 px-2 py-1 text-[11px] text-red-400 hover:bg-red-500/10 rounded disabled:opacity-50`,children:[I(ji,{className:`h-3 w-3`}),`Remove override`]})]}),h?I(l,{schema:n,steps:_,onChange:t=>{let n=h?.audio??null;p.mutate({deviceId:e,agentNodeId:c,pipeline:{steps:Yi(t),audio:n?{modelId:n.modelId,enabled:n.enabled}:null}})},templates:[],selectedTemplateId:null,onSelectTemplate:()=>{},onSaveTemplate:()=>{},onUpdateTemplate:()=>{},onDeleteTemplate:()=>{},readOnly:i,hideTemplates:!0}):M(`div`,{className:`text-xs text-foreground-subtle space-y-2`,children:[M(`p`,{children:[`No custom pipeline for `,I(`code`,{children:c}),`. The camera uses the agent's default + step toggles.`]}),I(`button`,{type:`button`,onClick:()=>{let t=f.data;t&&p.mutate({deviceId:e,agentNodeId:c,pipeline:{steps:t.steps,audio:t.audio?{modelId:t.audio.modelId,enabled:t.audio.enabled}:null}})},disabled:i||p.isPending||!f.data,className:`inline-flex items-center gap-1 px-3 py-1.5 text-xs font-medium rounded bg-primary/15 text-primary hover:bg-primary/25 disabled:opacity-50`,children:`Create wholesale override from current default`})]})]})]})}function qi(e,t,n){let r=t=>{for(let n of e.slots)for(let e of n.addons)if(e.id===t)return e;return null},i=e=>{let r=t?.addonDefaults[e.id],i=r?.enabled??e.enabledByDefault??!0,a=n?.stepToggles?.[e.id],o=a===void 0?i:a;return{addonId:e.id,addonName:e.name,slot:e.slot,inputClasses:[...e.inputClasses],outputClasses:[...e.outputClasses],enabled:o,modelId:r?.modelId??e.defaultModelId,children:[],...r?.settings&&Object.keys(r.settings).length>0?{settings:r.settings}:{}}},a=new Map;for(let t of e.slots)for(let e of t.addons)a.set(e.id,i(e));let o=[],s=new Set;for(let[e,t]of a){let n=r(e);n&&n.inputClasses.length===0&&(o.push(t),s.add(e))}let c=!0;for(;c;){c=!1;for(let[e,t]of a){if(s.has(e))continue;let n=r(e);if(n)for(let[i,o]of a){if(i===e)continue;let a=r(i);if(a&&s.has(i)&&a.outputClasses.some(e=>n.inputClasses.includes(e))){o.children.push(t),s.add(e),c=!0;break}}}}return o}function Ji(e,t){let n=new Map;for(let e of t.slots)for(let t of e.addons)n.set(t.id,t);let r=e=>{let t=n.get(e.addonId);return{addonId:e.addonId,addonName:t?.name??e.addonId,slot:t?.slot??`detector`,inputClasses:t?.inputClasses?[...t.inputClasses]:[],outputClasses:t?.outputClasses?[...t.outputClasses]:[],enabled:e.enabled,modelId:e.modelId,children:(e.children??[]).map(r),...e.settings?{settings:{...e.settings}}:{}}};return[...e].map(r)}function Yi(e){let t=e=>({addonId:e.addonId,modelId:e.modelId,enabled:e.enabled,children:e.children.map(t),...e.settings?{settings:{...e.settings}}:{}});return e.map(t)}P();function Xi(){let e=Oe(),t=we(),[n,r]=k(()=>e.isConnected()?`connected`:`disconnected`),i=D(!1),[a,o]=k(0),[s,c]=k([]);L(()=>e.subscribeConnectionEvents(e=>{r(t=>(t!==`connected`&&e===`connected`&&i.current&&o(e=>e+1),e!==`connected`&&(i.current=!0),e))}),[e]),L(()=>{a!==0&&t.invalidateQueries({queryKey:[[`addons`,`getLastRestart`]]})},[a,t]);let{data:l}=ae(void 0,{enabled:n===`connected`&&a>0,staleTime:0,refetchOnMount:!1,refetchOnWindowFocus:!1}),u=D(null);return L(()=>{if(l==null||l.requestedAt===u.current)return;u.current=l.requestedAt;let e=Qi(l);c(t=>[...t,e]);let t=window.setTimeout(()=>{c(t=>t.filter(t=>t.id!==e.id))},6e3);return()=>window.clearTimeout(t)},[l]),I(xe,{children:s.length>0&&I(Zi,{toasts:s})})}function Zi({toasts:e}){return I(`div`,{className:`fixed top-4 right-4 z-50 flex flex-col gap-2 max-w-sm w-full pointer-events-none`,children:e.map(e=>M(`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:[I(ni,{className:`w-4 h-4 shrink-0 mt-0.5 text-green-400`}),M(`div`,{children:[I(`div`,{className:`text-[11px] font-semibold text-foreground`,children:e.title}),I(`div`,{className:`text-[10px] text-foreground-subtle mt-0.5`,children:e.message})]})]},e.id))})}function Qi(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:`Framework updated`,message:`${e.packageName} is now ${n}.`}}return{id:t,title:`Server restarted`,message:e.requestedBy===void 0?`Manual restart completed.`:`Manual restart by ${e.requestedBy} completed.`}}P();var $i={info:{bg:`bg-blue-500/10`,border:`border-blue-500/30`,icon:di},warning:{bg:`bg-orange-500/10`,border:`border-orange-500/30`,icon:Mi},critical:{bg:`bg-red-500/10`,border:`border-red-500/30`,icon:ti}};function ea({toast:e,onDismiss:t}){let n=$i[e.severity]??$i.info,r=n.icon;return L(()=>{let n=e.duration??5e3;if(n<=0)return;let r=setTimeout(()=>t(e.id),n);return()=>clearTimeout(r)},[e.id,e.duration,t]),M(`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:[I(r,{className:`h-4 w-4 shrink-0 mt-0.5 text-foreground-subtle`}),M(`div`,{className:`flex-1 min-w-0`,children:[I(`div`,{className:`text-xs font-semibold text-foreground`,children:e.title}),I(`div`,{className:`text-[11px] text-foreground-subtle mt-0.5`,children:e.message})]}),I(`button`,{type:`button`,onClick:()=>t(e.id),className:`shrink-0 p-0.5 rounded hover:bg-surface-hover transition-colors`,children:I(Pi,{className:`h-3.5 w-3.5 text-foreground-subtle`})})]})}function ta(){let[e,t]=k([]),n=O(e=>{t(t=>t.filter(t=>t.id!==e))},[]);return ue(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:I(`div`,{className:`fixed bottom-4 right-4 z-50 flex flex-col gap-2 max-w-sm w-full pointer-events-none`,children:e.map(e=>I(`div`,{className:`pointer-events-auto`,children:I(ea,{toast:e,onDismiss:n})},e.id))})}P();var na=`disconnected`,ra=new Set;function ia(){for(let e of ra)e()}function aa(e){na!==e&&(na=e,ia())}function oa(e){return ra.add(e),()=>{ra.delete(e)}}function sa(){return na}function ca(){return Te(oa,sa,sa)}var la=null;function ua(){if(!la){let e=window.location.origin;la=c({serverUrl:e,token:localStorage.getItem(`camstack_admin_token`)??void 0,onConnectionChange:e=>aa(e)})}return la}function da(){la?.close(),la=null}function fa(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:ha(n.scopes)}}catch{return null}}var pa=new Set([`view`,`create`,`delete`]),ma=new Set([`category`,`capability`,`addon`,`device`]);function ha(e){if(!Array.isArray(e))return[];let t=[];for(let n of e){if(typeof n!=`object`||!n)continue;let e=n,{type:r,access:i}=e;if(typeof r!=`string`||!ma.has(r)||!Array.isArray(i))continue;let a=i.filter(e=>typeof e==`string`&&pa.has(e));if(a.length===0)continue;if(r===`device`){let n=e.targets;if(!Array.isArray(n))continue;let r=n.filter(e=>typeof e==`string`&&e.length>0);if(r.length===0)continue;t.push({type:`device`,targets:r,access:a});continue}let o=e.target;if(typeof o==`string`)if(r===`category`){if(o!==`device`&&o!==`system`)continue;t.push({type:r,target:o,access:a})}else r===`capability`?t.push({type:r,target:o,access:a}):t.push({type:`addon`,target:o,access:a})}return t}function ga(e){let t=fa(e);return t?t.exp*1e3<Date.now():!0}P();var _a=`changeme`,va=T(null);function ya({children:e}){let[t,n]=k(null),[r,i]=k(!0),[a,o]=k(!1);L(()=>{if(typeof window<`u`&&window.location.hash.startsWith(`#token=`)){let e=new URLSearchParams(window.location.hash.slice(1)).get(`token`);e&&(localStorage.setItem(`camstack_admin_token`,e),window.history.replaceState({},``,`/admin`))}let e=localStorage.getItem(`camstack_admin_token`);if(!e){i(!1);return}if(ga(e)){localStorage.removeItem(`camstack_admin_token`),i(!1);return}let t=fa(e);if(!t){localStorage.removeItem(`camstack_admin_token`),i(!1);return}ua().trpcClient.system.info.query().then(()=>n(t)).catch(e=>{let r=e?.data?.code;r===`UNAUTHORIZED`||r===`FORBIDDEN`?(localStorage.removeItem(`camstack_admin_token`),da()):n(t)}).finally(()=>i(!1))},[]);let s=O(async(e,t)=>{let r=await ua().login(e,t);if(r.requiresTotp===!0)return{kind:`totp-required`,challengeToken:r.token};let i=r.token;return localStorage.setItem(`camstack_admin_token`,i),await fetch(`/api/auth/session`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({token:i})}).catch(()=>{}),da(),n(fa(i)),o(t===_a),{kind:`ok`}},[]),c=O(async(e,t)=>{let r=(await ua().loginVerifyTotp(e,t)).token;localStorage.setItem(`camstack_admin_token`,r),await fetch(`/api/auth/session`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({token:r})}).catch(()=>{}),da(),n(fa(r)),o(!1)},[]),l=O(()=>{localStorage.removeItem(`camstack_admin_token`),fetch(`/api/auth/session`,{method:`DELETE`}).catch(()=>{}),da(),n(null),o(!1)},[]),u=O(()=>{o(!1)},[]);return I(va.Provider,{value:{user:t,loading:r,mustChangePassword:a,login:s,verifyTotp:c,logout:l,clearMustChangePassword:u},children:e})}function ba(){let e=A(va);if(!e)throw Error(`useAuth must be used within AuthProvider`);return e}P();var xa=3e4;function Sa(e){let t=D(e);t.current=e,L(()=>{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>=xa&&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)}},[])}P();function Ca(e){let t=new Set,n=[];for(let r of e){let e=`${r.addonId}::${r.page.id}`;t.has(e)||(t.add(e),n.push({id:r.page.id,addonId:r.addonId,label:r.page.label,icon:r.page.icon,path:r.page.path,remoteName:r.page.remoteName,bundle:r.page.bundle,bundleUrl:r.bundleUrl}))}return n}var wa=new Map,Ta=new Map,Ea=new Set;function Da(e){return!e||typeof e!=`object`?!1:typeof e.default==`function`}async function Oa(e,t){let i=wa.get(e);if(i)return i;let a=Ta.get(e);if(a)return a;Ea.has(e)||(_(),r([{name:e,entry:t,type:`module`}],{force:!1}),Ea.add(e));let o=n(`${e}/page`).then(n=>{if(!Da(n))throw Error(`Addon page remote ${e} (${t}) does not expose a default React component on './page'`);return wa.set(e,n.default),Ta.delete(e),n.default}).catch(t=>{throw Ta.delete(e),t});return Ta.set(e,o),o}function ka(){let{pagePath:e}=en(),t=Oe(),{data:n}=S(void 0),r=N(()=>n?Ca(n):void 0,[n]),i=r?.find(t=>t.path===`/addon/${e}`),[a,o]=k(null),[s,c]=k(null);return L(()=>{if(!i)return;c(null),o(null);let e=!1;return Oa(i.remoteName,i.bundleUrl).then(t=>{e||o(()=>t)}).catch(t=>{e||c(`Failed to load addon page: ${t instanceof Error?t.message:String(t)}`)}),()=>{e=!0}},[i]),r?i?s?I(`div`,{className:`flex items-center justify-center h-full text-red-400 text-sm`,children:s}):a?I(a,{trpc:t.trpcClient,theme:{isDark:document.documentElement.classList.contains(`dark`)},navigate:e=>{window.location.href=e}}):I(`div`,{className:`flex items-center justify-center h-full`,children:I(`div`,{className:`animate-spin h-6 w-6 border-2 border-primary border-t-transparent rounded-full`})}):I(`div`,{className:`flex items-center justify-center h-full text-foreground-subtle`,children:`Addon page not found`}):I(`div`,{className:`flex items-center justify-center h-full`,children:I(`div`,{className:`animate-spin h-6 w-6 border-2 border-primary border-t-transparent rounded-full`})})}ke();var Y=e=>typeof e==`string`,Aa=()=>{let e,t,n=new Promise((n,r)=>{e=n,t=r});return n.resolve=e,n.reject=t,n},ja=e=>e==null?``:String(e),Ma=(e,t,n)=>{e.forEach(e=>{t[e]&&(n[e]=t[e])})},Na=/###/g,Pa=e=>e&&e.includes(`###`)?e.replace(Na,`.`):e,Fa=e=>!e||Y(e),Ia=(e,t,n)=>{let r=Y(t)?t.split(`.`):t,i=0;for(;i<r.length-1;){if(Fa(e))return{};let t=Pa(r[i]);!e[t]&&n&&(e[t]=new n),e=Object.prototype.hasOwnProperty.call(e,t)?e[t]:{},++i}return Fa(e)?{}:{obj:e,k:Pa(r[i])}},La=(e,t,n)=>{let{obj:r,k:i}=Ia(e,t,Object);if(r!==void 0||t.length===1){r[i]=n;return}let a=t[t.length-1],o=t.slice(0,t.length-1),s=Ia(e,o,Object);for(;s.obj===void 0&&o.length;)a=`${o[o.length-1]}.${a}`,o=o.slice(0,o.length-1),s=Ia(e,o,Object),s?.obj&&s.obj[`${s.k}.${a}`]!==void 0&&(s.obj=void 0);s.obj[`${s.k}.${a}`]=n},Ra=(e,t,n,r)=>{let{obj:i,k:a}=Ia(e,t,Object);i[a]=i[a]||[],i[a].push(n)},za=(e,t)=>{let{obj:n,k:r}=Ia(e,t);if(n&&Object.prototype.hasOwnProperty.call(n,r))return n[r]},Ba=(e,t,n)=>{let r=za(e,n);return r===void 0?za(t,n):r},Va=(e,t,n)=>{for(let r in t)r!==`__proto__`&&r!==`constructor`&&(r in e?Y(e[r])||e[r]instanceof String||Y(t[r])||t[r]instanceof String?n&&(e[r]=t[r]):Va(e[r],t[r],n):e[r]=t[r]);return e},X=e=>e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,`\\$&`),Ha={"&":`&`,"<":`<`,">":`>`,'"':`"`,"'":`'`,"/":`/`},Ua=e=>Y(e)?e.replace(/[&<>"'\/]/g,e=>Ha[e]):e,Wa=class{constructor(e){this.capacity=e,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(e){let t=this.regExpMap.get(e);if(t!==void 0)return t;let n=new RegExp(e);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(e,n),this.regExpQueue.push(e),n}},Ga=[` `,`,`,`?`,`!`,`;`],Ka=new Wa(20),qa=(e,t,n)=>{t||=``,n||=``;let r=Ga.filter(e=>!t.includes(e)&&!n.includes(e));if(r.length===0)return!0;let i=Ka.getRegExp(`(${r.map(e=>e===`?`?`\\?`:e).join(`|`)})`),a=!i.test(e);if(!a){let t=e.indexOf(n);t>0&&!i.test(e.substring(0,t))&&(a=!0)}return a},Ja=(e,t,n=`.`)=>{if(!e)return;if(e[t])return Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0;let r=t.split(n),i=e;for(let e=0;e<r.length;){if(!i||typeof i!=`object`)return;let t,a=``;for(let o=e;o<r.length;++o)if(o!==e&&(a+=n),a+=r[o],t=i[a],t!==void 0){if([`string`,`number`,`boolean`].includes(typeof t)&&o<r.length-1)continue;e+=o-e+1;break}i=t}return i},Ya=e=>e?.replace(/_/g,`-`),Xa={type:`logger`,log(e){this.output(`log`,e)},warn(e){this.output(`warn`,e)},error(e){this.output(`error`,e)},output(e,t){console?.[e]?.apply?.(console,t)}},Z=new class e{constructor(e,t={}){this.init(e,t)}init(e,t={}){this.prefix=t.prefix||`i18next:`,this.logger=e||Xa,this.options=t,this.debug=t.debug}log(...e){return this.forward(e,`log`,``,!0)}warn(...e){return this.forward(e,`warn`,``,!0)}error(...e){return this.forward(e,`error`,``)}deprecate(...e){return this.forward(e,`warn`,`WARNING DEPRECATED: `,!0)}forward(e,t,n,r){return r&&!this.debug?null:(e=e.map(e=>Y(e)?e.replace(/[\r\n\x00-\x1F\x7F]/g,` `):e),Y(e[0])&&(e[0]=`${n}${this.prefix} ${e[0]}`),this.logger[t](e))}create(t){return new e(this.logger,{prefix:`${this.prefix}:${t}:`,...this.options})}clone(t){return t||=this.options,t.prefix=t.prefix||this.prefix,new e(this.logger,t)}},Za=class{constructor(){this.observers={}}on(e,t){return e.split(` `).forEach(e=>{this.observers[e]||(this.observers[e]=new Map);let n=this.observers[e].get(t)||0;this.observers[e].set(t,n+1)}),this}off(e,t){if(this.observers[e]){if(!t){delete this.observers[e];return}this.observers[e].delete(t)}}once(e,t){let n=(...r)=>{t(...r),this.off(e,n)};return this.on(e,n),this}emit(e,...t){this.observers[e]&&Array.from(this.observers[e].entries()).forEach(([e,n])=>{for(let r=0;r<n;r++)e(...t)}),this.observers[`*`]&&Array.from(this.observers[`*`].entries()).forEach(([n,r])=>{for(let i=0;i<r;i++)n(e,...t)})}},Qa=class extends Za{constructor(e,t={ns:[`translation`],defaultNS:`translation`}){super(),this.data=e||{},this.options=t,this.options.keySeparator===void 0&&(this.options.keySeparator=`.`),this.options.ignoreJSONStructure===void 0&&(this.options.ignoreJSONStructure=!0)}addNamespaces(e){this.options.ns.includes(e)||this.options.ns.push(e)}removeNamespaces(e){let t=this.options.ns.indexOf(e);t>-1&&this.options.ns.splice(t,1)}getResource(e,t,n,r={}){let i=r.keySeparator===void 0?this.options.keySeparator:r.keySeparator,a=r.ignoreJSONStructure===void 0?this.options.ignoreJSONStructure:r.ignoreJSONStructure,o;e.includes(`.`)?o=e.split(`.`):(o=[e,t],n&&(Array.isArray(n)?o.push(...n):Y(n)&&i?o.push(...n.split(i)):o.push(n)));let s=za(this.data,o);return!s&&!t&&!n&&e.includes(`.`)&&(e=o[0],t=o[1],n=o.slice(2).join(`.`)),s||!a||!Y(n)?s:Ja(this.data?.[e]?.[t],n,i)}addResource(e,t,n,r,i={silent:!1}){let a=i.keySeparator===void 0?this.options.keySeparator:i.keySeparator,o=[e,t];n&&(o=o.concat(a?n.split(a):n)),e.includes(`.`)&&(o=e.split(`.`),r=t,t=o[1]),this.addNamespaces(t),La(this.data,o,r),i.silent||this.emit(`added`,e,t,n,r)}addResources(e,t,n,r={silent:!1}){for(let r in n)(Y(n[r])||Array.isArray(n[r]))&&this.addResource(e,t,r,n[r],{silent:!0});r.silent||this.emit(`added`,e,t,n)}addResourceBundle(e,t,n,r,i,a={silent:!1,skipCopy:!1}){let o=[e,t];e.includes(`.`)&&(o=e.split(`.`),r=n,n=t,t=o[1]),this.addNamespaces(t);let s=za(this.data,o)||{};a.skipCopy||(n=JSON.parse(JSON.stringify(n))),r?Va(s,n,i):s={...s,...n},La(this.data,o,s),a.silent||this.emit(`added`,e,t,n)}removeResourceBundle(e,t){this.hasResourceBundle(e,t)&&delete this.data[e][t],this.removeNamespaces(t),this.emit(`removed`,e,t)}hasResourceBundle(e,t){return this.getResource(e,t)!==void 0}getResourceBundle(e,t){return t||=this.options.defaultNS,this.getResource(e,t)}getDataByLanguage(e){return this.data[e]}hasLanguageSomeTranslations(e){let t=this.getDataByLanguage(e);return!!(t&&Object.keys(t)||[]).find(e=>t[e]&&Object.keys(t[e]).length>0)}toJSON(){return this.data}},$a={processors:{},addPostProcessor(e){this.processors[e.name]=e},handle(e,t,n,r,i){return e.forEach(e=>{t=this.processors[e]?.process(t,n,r,i)??t}),t}},eo=Symbol(`i18next/PATH_KEY`);function to(){let e=[],t=Object.create(null),n;return t.get=(r,i)=>(n?.revoke?.(),i===eo?e:(e.push(i),n=Proxy.revocable(r,t),n.proxy)),Proxy.revocable(Object.create(null),t).proxy}function no(e,t){let{[eo]:n}=e(to()),r=t?.keySeparator??`.`,i=t?.nsSeparator??`:`,a=t?.enableSelector===`strict`;if(n.length>1&&i){let e=t?.ns,o=a?Array.isArray(e)?e:e?[e]:null:Array.isArray(e)?e:null;if(o&&(a?o:o.length>1?o.slice(1):[]).includes(n[0]))return`${n[0]}${i}${n.slice(1).join(r)}`}return n.join(r)}var ro=e=>!Y(e)&&typeof e!=`boolean`&&typeof e!=`number`,io=class e extends Za{constructor(e,t={}){super(),Ma([`resourceStore`,`languageUtils`,`pluralResolver`,`interpolator`,`backendConnector`,`i18nFormat`,`utils`],e,this),this.options=t,this.options.keySeparator===void 0&&(this.options.keySeparator=`.`),this.logger=Z.create(`translator`),this.checkedLoadedFor={}}changeLanguage(e){e&&(this.language=e)}exists(e,t={interpolation:{}}){let n={...t};if(e==null)return!1;let r=this.resolve(e,n);if(r?.res===void 0)return!1;let i=ro(r.res);return!(n.returnObjects===!1&&i)}extractFromKey(e,t){let n=t.nsSeparator===void 0?this.options.nsSeparator:t.nsSeparator;n===void 0&&(n=`:`);let r=t.keySeparator===void 0?this.options.keySeparator:t.keySeparator,i=t.ns||this.options.defaultNS||[],a=n&&e.includes(n),o=!this.options.userDefinedKeySeparator&&!t.keySeparator&&!this.options.userDefinedNsSeparator&&!t.nsSeparator&&!qa(e,n,r);if(a&&!o){let t=e.match(this.interpolator.nestingRegexp);if(t&&t.length>0)return{key:e,namespaces:Y(i)?[i]:i};let a=e.split(n);(n!==r||n===r&&this.options.ns.includes(a[0]))&&(i=a.shift()),e=a.join(r)}return{key:e,namespaces:Y(i)?[i]:i}}translate(t,n,r){let i=typeof n==`object`?{...n}:n;if(typeof i!=`object`&&this.options.overloadTranslationOptionHandler&&(i=this.options.overloadTranslationOptionHandler(arguments)),typeof i==`object`&&(i={...i}),i||={},t==null)return``;typeof t==`function`&&(t=no(t,{...this.options,...i})),Array.isArray(t)||(t=[String(t)]),t=t.map(e=>typeof e==`function`?no(e,{...this.options,...i}):String(e));let a=i.returnDetails===void 0?this.options.returnDetails:i.returnDetails,o=i.keySeparator===void 0?this.options.keySeparator:i.keySeparator,{key:s,namespaces:c}=this.extractFromKey(t[t.length-1],i),l=c[c.length-1],u=i.nsSeparator===void 0?this.options.nsSeparator:i.nsSeparator;u===void 0&&(u=`:`);let d=i.lng||this.language,f=i.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(d?.toLowerCase()===`cimode`)return f?a?{res:`${l}${u}${s}`,usedKey:s,exactUsedKey:s,usedLng:d,usedNS:l,usedParams:this.getUsedParamsDetails(i)}:`${l}${u}${s}`:a?{res:s,usedKey:s,exactUsedKey:s,usedLng:d,usedNS:l,usedParams:this.getUsedParamsDetails(i)}:s;let p=this.resolve(t,i),m=p?.res,h=p?.usedKey||s,g=p?.exactUsedKey||s,_=[`[object Number]`,`[object Function]`,`[object RegExp]`],v=i.joinArrays===void 0?this.options.joinArrays:i.joinArrays,y=!this.i18nFormat||this.i18nFormat.handleAsObject,b=i.count!==void 0&&!Y(i.count),x=e.hasDefaultValue(i),S=b?this.pluralResolver.getSuffix(d,i.count,i):``,ee=i.ordinal&&b?this.pluralResolver.getSuffix(d,i.count,{ordinal:!1}):``,te=b&&!i.ordinal&&i.count===0,C=te&&i[`defaultValue${this.options.pluralSeparator}zero`]||i[`defaultValue${S}`]||i[`defaultValue${ee}`]||i.defaultValue,w=m;y&&!m&&x&&(w=C);let ne=ro(w),re=Object.prototype.toString.apply(w);if(y&&w&&ne&&!_.includes(re)&&!(Y(v)&&Array.isArray(w))){if(!i.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn(`accessing an object - but returnObjects options is not enabled!`);let e=this.options.returnedObjectHandler?this.options.returnedObjectHandler(h,w,{...i,ns:c}):`key '${s} (${this.language})' returned an object instead of string.`;return a?(p.res=e,p.usedParams=this.getUsedParamsDetails(i),p):e}if(o){let e=Array.isArray(w),t=e?[]:{},n=e?g:h;for(let e in w)if(Object.prototype.hasOwnProperty.call(w,e)){let r=`${n}${o}${e}`;x&&!m?t[e]=this.translate(r,{...i,defaultValue:ro(C)?C[e]:void 0,joinArrays:!1,ns:c}):t[e]=this.translate(r,{...i,joinArrays:!1,ns:c}),t[e]===r&&(t[e]=w[e])}m=t}}else if(y&&Y(v)&&Array.isArray(m))m=m.join(v),m&&=this.extendTranslation(m,t,i,r);else{let e=!1,n=!1;!this.isValidLookup(m)&&x&&(e=!0,m=C),this.isValidLookup(m)||(n=!0,m=s);let a=(i.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&n?void 0:m,c=x&&C!==m&&this.options.updateMissing;if(n||e||c){if(this.logger.log(c?`updateKey`:`missingKey`,d,l,b&&!c?`${s}${this.pluralResolver.getSuffix(d,i.count,i)}`:s,c?C:m),o){let e=this.resolve(s,{...i,keySeparator:!1});e&&e.res&&this.logger.warn(`Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.`)}let e=[],t=this.languageUtils.getFallbackCodes(this.options.fallbackLng,i.lng||this.language);if(this.options.saveMissingTo===`fallback`&&t&&t[0])for(let n=0;n<t.length;n++)e.push(t[n]);else this.options.saveMissingTo===`all`?e=this.languageUtils.toResolveHierarchy(i.lng||this.language):e.push(i.lng||this.language);let n=(e,t,n)=>{let r=x&&n!==m?n:a;this.options.missingKeyHandler?this.options.missingKeyHandler(e,l,t,r,c,i):this.backendConnector?.saveMissing&&this.backendConnector.saveMissing(e,l,t,r,c,i),this.emit(`missingKey`,e,l,t,m)};this.options.saveMissing&&(this.options.saveMissingPlurals&&b?e.forEach(e=>{let t=this.pluralResolver.getSuffixes(e,i);te&&i[`defaultValue${this.options.pluralSeparator}zero`]&&!t.includes(`${this.options.pluralSeparator}zero`)&&t.push(`${this.options.pluralSeparator}zero`),t.forEach(t=>{n([e],s+t,i[`defaultValue${t}`]||C)})}):n(e,s,C))}m=this.extendTranslation(m,t,i,p,r),n&&m===s&&this.options.appendNamespaceToMissingKey&&(m=`${l}${u}${s}`),(n||e)&&this.options.parseMissingKeyHandler&&(m=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${l}${u}${s}`:s,e?m:void 0,i))}return a?(p.res=m,p.usedParams=this.getUsedParamsDetails(i),p):m}extendTranslation(e,t,n,r,i){if(this.i18nFormat?.parse)e=this.i18nFormat.parse(e,{...this.options.interpolation.defaultVariables,...n},n.lng||this.language||r.usedLng,r.usedNS,r.usedKey,{resolved:r});else if(!n.skipInterpolation){n.interpolation&&this.interpolator.init({...n,interpolation:{...this.options.interpolation,...n.interpolation}});let a=Y(e)&&(n?.interpolation?.skipOnVariables===void 0?this.options.interpolation.skipOnVariables:n.interpolation.skipOnVariables),o;if(a){let t=e.match(this.interpolator.nestingRegexp);o=t&&t.length}let s=n.replace&&!Y(n.replace)?n.replace:n;if(this.options.interpolation.defaultVariables&&(s={...this.options.interpolation.defaultVariables,...s}),e=this.interpolator.interpolate(e,s,n.lng||this.language||r.usedLng,n),a){let t=e.match(this.interpolator.nestingRegexp),r=t&&t.length;o<r&&(n.nest=!1)}!n.lng&&r&&r.res&&(n.lng=this.language||r.usedLng),n.nest!==!1&&(e=this.interpolator.nest(e,(...e)=>i?.[0]===e[0]&&!n.context?(this.logger.warn(`It seems you are nesting recursively key: ${e[0]} in key: ${t[0]}`),null):this.translate(...e,t),n)),n.interpolation&&this.interpolator.reset()}let a=n.postProcess||this.options.postProcess,o=Y(a)?[a]:a;return e!=null&&o?.length&&n.applyPostProcessor!==!1&&(e=$a.handle(o,e,t,this.options&&this.options.postProcessPassResolved?{i18nResolved:{...r,usedParams:this.getUsedParamsDetails(n)},...n}:n,this)),e}resolve(e,t={}){let n,r,i,a,o;return Y(e)&&(e=[e]),Array.isArray(e)&&(e=e.map(e=>typeof e==`function`?no(e,{...this.options,...t}):e)),e.forEach(e=>{if(this.isValidLookup(n))return;let s=this.extractFromKey(e,t),c=s.key;r=c;let l=s.namespaces;this.options.fallbackNS&&(l=l.concat(this.options.fallbackNS));let u=t.count!==void 0&&!Y(t.count),d=u&&!t.ordinal&&t.count===0,f=t.context!==void 0&&(Y(t.context)||typeof t.context==`number`)&&t.context!==``,p=t.lngs?t.lngs:this.languageUtils.toResolveHierarchy(t.lng||this.language,t.fallbackLng);l.forEach(e=>{this.isValidLookup(n)||(o=e,!this.checkedLoadedFor[`${p[0]}-${e}`]&&this.utils?.hasLoadedNamespace&&!this.utils?.hasLoadedNamespace(o)&&(this.checkedLoadedFor[`${p[0]}-${e}`]=!0,this.logger.warn(`key "${r}" for languages "${p.join(`, `)}" won't get resolved as namespace "${o}" was not yet loaded`,`This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!`)),p.forEach(r=>{if(this.isValidLookup(n))return;a=r;let o=[c];if(this.i18nFormat?.addLookupKeys)this.i18nFormat.addLookupKeys(o,c,r,e,t);else{let e;u&&(e=this.pluralResolver.getSuffix(r,t.count,t));let n=`${this.options.pluralSeparator}zero`,i=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(u&&(t.ordinal&&e.startsWith(i)&&o.push(c+e.replace(i,this.options.pluralSeparator)),o.push(c+e),d&&o.push(c+n)),f){let r=`${c}${this.options.contextSeparator||`_`}${t.context}`;o.push(r),u&&(t.ordinal&&e.startsWith(i)&&o.push(r+e.replace(i,this.options.pluralSeparator)),o.push(r+e),d&&o.push(r+n))}}let s;for(;s=o.pop();)this.isValidLookup(n)||(i=s,n=this.getResource(r,e,s,t))}))})}),{res:n,usedKey:r,exactUsedKey:i,usedLng:a,usedNS:o}}isValidLookup(e){return e!==void 0&&!(!this.options.returnNull&&e===null)&&!(!this.options.returnEmptyString&&e===``)}getResource(e,t,n,r={}){return this.i18nFormat?.getResource?this.i18nFormat.getResource(e,t,n,r):this.resourceStore.getResource(e,t,n,r)}getUsedParamsDetails(e={}){let t=[`defaultValue`,`ordinal`,`context`,`replace`,`lng`,`lngs`,`fallbackLng`,`ns`,`keySeparator`,`nsSeparator`,`returnObjects`,`returnDetails`,`joinArrays`,`postProcess`,`interpolation`],n=e.replace&&!Y(e.replace),r=n?e.replace:e;if(n&&e.count!==void 0&&(r.count=e.count),this.options.interpolation.defaultVariables&&(r={...this.options.interpolation.defaultVariables,...r}),!n){r={...r};for(let e of t)delete r[e]}return r}static hasDefaultValue(e){for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&t.startsWith(`defaultValue`)&&e[t]!==void 0)return!0;return!1}},ao=class{constructor(e){this.options=e,this.supportedLngs=this.options.supportedLngs||!1,this.logger=Z.create(`languageUtils`)}getScriptPartFromCode(e){if(e=Ya(e),!e||!e.includes(`-`))return null;let t=e.split(`-`);return t.length===2||(t.pop(),t[t.length-1].toLowerCase()===`x`)?null:this.formatLanguageCode(t.join(`-`))}getLanguagePartFromCode(e){if(e=Ya(e),!e||!e.includes(`-`))return e;let t=e.split(`-`);return this.formatLanguageCode(t[0])}formatLanguageCode(e){if(Y(e)&&e.includes(`-`)){let t;try{t=Intl.getCanonicalLocales(e)[0]}catch{}return t&&this.options.lowerCaseLng&&(t=t.toLowerCase()),t||(this.options.lowerCaseLng?e.toLowerCase():e)}return this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():e}isSupportedCode(e){return(this.options.load===`languageOnly`||this.options.nonExplicitSupportedLngs)&&(e=this.getLanguagePartFromCode(e)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.includes(e)}getBestMatchFromCodes(e){if(!e)return null;let t;return e.forEach(e=>{if(t)return;let n=this.formatLanguageCode(e);(!this.options.supportedLngs||this.isSupportedCode(n))&&(t=n)}),!t&&this.options.supportedLngs&&e.forEach(e=>{if(t)return;let n=this.getScriptPartFromCode(e);if(this.isSupportedCode(n))return t=n;let r=this.getLanguagePartFromCode(e);if(this.isSupportedCode(r))return t=r;t=this.options.supportedLngs.find(e=>e===r?!0:!e.includes(`-`)&&!r.includes(`-`)?!1:!!(e.includes(`-`)&&!r.includes(`-`)&&e.slice(0,e.indexOf(`-`))===r||e.startsWith(r)&&r.length>1))}),t||=this.getFallbackCodes(this.options.fallbackLng)[0],t}getFallbackCodes(e,t){if(!e)return[];if(typeof e==`function`&&(e=e(t)),Y(e)&&(e=[e]),Array.isArray(e))return e;if(!t)return e.default||[];let n=e[t];return n||=e[this.getScriptPartFromCode(t)],n||=e[this.formatLanguageCode(t)],n||=e[this.getLanguagePartFromCode(t)],n||=e.default,n||[]}toResolveHierarchy(e,t){let n=this.getFallbackCodes((t===!1?[]:t)||this.options.fallbackLng||[],e),r=[],i=e=>{e&&(this.isSupportedCode(e)?r.push(e):this.logger.warn(`rejecting language code not found in supportedLngs: ${e}`))};return Y(e)&&(e.includes(`-`)||e.includes(`_`))?(this.options.load!==`languageOnly`&&i(this.formatLanguageCode(e)),this.options.load!==`languageOnly`&&this.options.load!==`currentOnly`&&i(this.getScriptPartFromCode(e)),this.options.load!==`currentOnly`&&i(this.getLanguagePartFromCode(e))):Y(e)&&i(this.formatLanguageCode(e)),n.forEach(e=>{r.includes(e)||i(this.formatLanguageCode(e))}),r}},oo={zero:0,one:1,two:2,few:3,many:4,other:5},so={select:e=>e===1?`one`:`other`,resolvedOptions:()=>({pluralCategories:[`one`,`other`]})},co=class{constructor(e,t={}){this.languageUtils=e,this.options=t,this.logger=Z.create(`pluralResolver`),this.pluralRulesCache={}}clearCache(){this.pluralRulesCache={}}getRule(e,t={}){let n=Ya(e===`dev`?`en`:e),r=t.ordinal?`ordinal`:`cardinal`,i=JSON.stringify({cleanedCode:n,type:r});if(i in this.pluralRulesCache)return this.pluralRulesCache[i];let a;try{a=new Intl.PluralRules(n,{type:r})}catch{if(typeof Intl>`u`)return this.logger.error(`No Intl support, please use an Intl polyfill!`),so;if(!e.match(/-|_/))return so;let n=this.languageUtils.getLanguagePartFromCode(e);a=this.getRule(n,t)}return this.pluralRulesCache[i]=a,a}needsPlural(e,t={}){let n=this.getRule(e,t);return n||=this.getRule(`dev`,t),n?.resolvedOptions().pluralCategories.length>1}getPluralFormsOfKey(e,t,n={}){return this.getSuffixes(e,n).map(e=>`${t}${e}`)}getSuffixes(e,t={}){let n=this.getRule(e,t);return n||=this.getRule(`dev`,t),n?n.resolvedOptions().pluralCategories.sort((e,t)=>oo[e]-oo[t]).map(e=>`${this.options.prepend}${t.ordinal?`ordinal${this.options.prepend}`:``}${e}`):[]}getSuffix(e,t,n={}){let r=this.getRule(e,n);return r?`${this.options.prepend}${n.ordinal?`ordinal${this.options.prepend}`:``}${r.select(t)}`:(this.logger.warn(`no plural rule found for: ${e}`),this.getSuffix(`dev`,t,n))}},lo=(e,t,n,r=`.`,i=!0)=>{let a=Ba(e,t,n);return!a&&i&&Y(n)&&(a=Ja(e,n,r),a===void 0&&(a=Ja(t,n,r))),a},uo=e=>e.replace(/\$/g,`$$$$`),fo=class{constructor(e={}){this.logger=Z.create(`interpolator`),this.options=e,this.format=e?.interpolation?.format||(e=>e),this.init(e)}init(e={}){e.interpolation||={escapeValue:!0};let{escape:t,escapeValue:n,useRawValueToEscape:r,prefix:i,prefixEscaped:a,suffix:o,suffixEscaped:s,formatSeparator:c,unescapeSuffix:l,unescapePrefix:u,nestingPrefix:d,nestingPrefixEscaped:f,nestingSuffix:p,nestingSuffixEscaped:m,nestingOptionsSeparator:h,maxReplaces:g,alwaysFormat:_}=e.interpolation;this.escape=t===void 0?Ua:t,this.escapeValue=n===void 0?!0:n,this.useRawValueToEscape=r===void 0?!1:r,this.prefix=i?X(i):a||`{{`,this.suffix=o?X(o):s||`}}`,this.formatSeparator=c||`,`,this.unescapePrefix=l?``:u?X(u):`-`,this.unescapeSuffix=this.unescapePrefix?``:l?X(l):``,this.nestingPrefix=d?X(d):f||X(`$t(`),this.nestingSuffix=p?X(p):m||X(`)`),this.nestingOptionsSeparator=h||`,`,this.maxReplaces=g||1e3,this.alwaysFormat=_===void 0?!1:_,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){let e=(e,t)=>e?.source===t?(e.lastIndex=0,e):new RegExp(t,`g`);this.regexp=e(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=e(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=e(this.nestingRegexp,`${this.nestingPrefix}((?:[^()"']+|"[^"]*"|'[^']*'|\\((?:[^()]|"[^"]*"|'[^']*')*\\))*?)${this.nestingSuffix}`)}interpolate(e,t,n,r){let i,a,o,s=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},c=e=>{if(!e.includes(this.formatSeparator)){let i=lo(t,s,e,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(i,void 0,n,{...r,...t,interpolationkey:e}):i}let i=e.split(this.formatSeparator),a=i.shift().trim(),o=i.join(this.formatSeparator).trim();return this.format(lo(t,s,a,this.options.keySeparator,this.options.ignoreJSONStructure),o,n,{...r,...t,interpolationkey:a})};this.resetRegExp(),!this.escapeValue&&typeof e==`string`&&/\$t\([^)]*\{[^}]*\{\{/.test(e)&&this.logger.warn(`nesting options string contains interpolated variables with escapeValue: false — if any of those values are attacker-controlled they can inject additional nesting options (e.g. redirect lng/ns). Sanitise untrusted input before passing it to t(), or keep escapeValue: true.`);let l=r?.missingInterpolationHandler||this.options.missingInterpolationHandler,u=r?.interpolation?.skipOnVariables===void 0?this.options.interpolation.skipOnVariables:r.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:e=>uo(e)},{regex:this.regexp,safeValue:e=>this.escapeValue?uo(this.escape(e)):uo(e)}].forEach(t=>{for(o=0;i=t.regex.exec(e);){let n=i[1].trim();if(a=c(n),a===void 0)if(typeof l==`function`){let t=l(e,i,r);a=Y(t)?t:``}else if(r&&Object.prototype.hasOwnProperty.call(r,n))a=``;else if(u){a=i[0];continue}else this.logger.warn(`missed to pass in variable ${n} for interpolating ${e}`),a=``;else !Y(a)&&!this.useRawValueToEscape&&(a=ja(a));let s=t.safeValue(a);if(e=e.replace(i[0],s),u?(t.regex.lastIndex+=a.length,t.regex.lastIndex-=i[0].length):t.regex.lastIndex=0,o++,o>=this.maxReplaces)break}}),e}nest(e,t,n={}){let r,i,a,o=(e,t)=>{let n=this.nestingOptionsSeparator;if(!e.includes(n))return e;let r=e.split(RegExp(`${X(n)}[ ]*{`)),i=`{${r[1]}`;e=r[0],i=this.interpolate(i,a);let o=i.match(/'/g),s=i.match(/"/g);((o?.length??0)%2==0&&!s||(s?.length??0)%2!=0)&&(i=i.replace(/'/g,`"`));try{a=JSON.parse(i),t&&(a={...t,...a})}catch(t){return this.logger.warn(`failed parsing options string in nesting for key ${e}`,t),`${e}${n}${i}`}return a.defaultValue&&a.defaultValue.includes(this.prefix)&&delete a.defaultValue,e};for(;r=this.nestingRegexp.exec(e);){let s=[];a={...n},a=a.replace&&!Y(a.replace)?a.replace:a,a.applyPostProcessor=!1,delete a.defaultValue;let c=/{.*}/.test(r[1])?r[1].lastIndexOf(`}`)+1:r[1].indexOf(this.formatSeparator);if(c!==-1&&(s=r[1].slice(c).split(this.formatSeparator).map(e=>e.trim()).filter(Boolean),r[1]=r[1].slice(0,c)),i=t(o.call(this,r[1].trim(),a),a),i&&r[0]===e&&!Y(i))return i;Y(i)||(i=ja(i)),i||=(this.logger.warn(`missed to resolve ${r[1]} for nesting ${e}`),``),s.length&&(i=s.reduce((e,t)=>this.format(e,t,n.lng,{...n,interpolationkey:r[1].trim()}),i.trim())),e=e.replace(r[0],i),this.regexp.lastIndex=0}return e}},po=e=>{let t=e.toLowerCase().trim(),n={};if(e.includes(`(`)){let r=e.split(`(`);t=r[0].toLowerCase().trim();let i=r[1].slice(0,-1);t===`currency`&&!i.includes(`:`)?n.currency||=i.trim():t===`relativetime`&&!i.includes(`:`)?n.range||=i.trim():i.split(`;`).forEach(e=>{if(e){let[t,...r]=e.split(`:`),i=r.join(`:`).trim().replace(/^'+|'+$/g,``),a=t.trim();n[a]||(n[a]=i),i===`false`&&(n[a]=!1),i===`true`&&(n[a]=!0),isNaN(i)||(n[a]=parseInt(i,10))}})}return{formatName:t,formatOptions:n}},mo=e=>{let t={};return(n,r,i)=>{let a=i;i&&i.interpolationkey&&i.formatParams&&i.formatParams[i.interpolationkey]&&i[i.interpolationkey]&&(a={...a,[i.interpolationkey]:void 0});let o=r+JSON.stringify(a),s=t[o];return s||(s=e(Ya(r),i),t[o]=s),s(n)}},ho=e=>(t,n,r)=>e(Ya(n),r)(t),go=class{constructor(e={}){this.logger=Z.create(`formatter`),this.options=e,this.init(e)}init(e,t={interpolation:{}}){this.formatSeparator=t.interpolation.formatSeparator||`,`;let n=t.cacheInBuiltFormats?mo:ho;this.formats={number:n((e,t)=>{let n=new Intl.NumberFormat(e,{...t});return e=>n.format(e)}),currency:n((e,t)=>{let n=new Intl.NumberFormat(e,{...t,style:`currency`});return e=>n.format(e)}),datetime:n((e,t)=>{let n=new Intl.DateTimeFormat(e,{...t});return e=>n.format(e)}),relativetime:n((e,t)=>{let n=new Intl.RelativeTimeFormat(e,{...t});return e=>n.format(e,t.range||`day`)}),list:n((e,t)=>{let n=new Intl.ListFormat(e,{...t});return e=>n.format(e)})}}add(e,t){this.formats[e.toLowerCase().trim()]=t}addCached(e,t){this.formats[e.toLowerCase().trim()]=mo(t)}format(e,t,n,r={}){if(!t||e==null)return e;let i=t.split(this.formatSeparator);if(i.length>1&&i[0].indexOf(`(`)>1&&!i[0].includes(`)`)&&i.find(e=>e.includes(`)`))){let e=i.findIndex(e=>e.includes(`)`));i[0]=[i[0],...i.splice(1,e)].join(this.formatSeparator)}return i.reduce((e,t)=>{let{formatName:i,formatOptions:a}=po(t);if(this.formats[i]){let t=e;try{let o=r?.formatParams?.[r.interpolationkey]||{},s=o.locale||o.lng||r.locale||r.lng||n;t=this.formats[i](e,s,{...a,...r,...o})}catch(e){this.logger.warn(e)}return t}else this.logger.warn(`there was no format function for ${i}`);return e},e)}},_o=(e,t)=>{e.pending[t]!==void 0&&(delete e.pending[t],e.pendingCount--)},vo=class extends Za{constructor(e,t,n,r={}){super(),this.backend=e,this.store=t,this.services=n,this.languageUtils=n.languageUtils,this.options=r,this.logger=Z.create(`backendConnector`),this.waitingReads=[],this.maxParallelReads=r.maxParallelReads||10,this.readingCalls=0,this.maxRetries=r.maxRetries>=0?r.maxRetries:5,this.retryTimeout=r.retryTimeout>=1?r.retryTimeout:350,this.state={},this.queue=[],this.backend?.init?.(n,r.backend,r)}queueLoad(e,t,n,r){let i={},a={},o={},s={};return e.forEach(e=>{let r=!0;t.forEach(t=>{let o=`${e}|${t}`;!n.reload&&this.store.hasResourceBundle(e,t)?this.state[o]=2:this.state[o]<0||(this.state[o]===1?a[o]===void 0&&(a[o]=!0):(this.state[o]=1,r=!1,a[o]===void 0&&(a[o]=!0),i[o]===void 0&&(i[o]=!0),s[t]===void 0&&(s[t]=!0)))}),r||(o[e]=!0)}),(Object.keys(i).length||Object.keys(a).length)&&this.queue.push({pending:a,pendingCount:Object.keys(a).length,loaded:{},errors:[],callback:r}),{toLoad:Object.keys(i),pending:Object.keys(a),toLoadLanguages:Object.keys(o),toLoadNamespaces:Object.keys(s)}}loaded(e,t,n){let r=e.split(`|`),i=r[0],a=r[1];t&&this.emit(`failedLoading`,i,a,t),!t&&n&&this.store.addResourceBundle(i,a,n,void 0,void 0,{skipCopy:!0}),this.state[e]=t?-1:2,t&&n&&(this.state[e]=0);let o={};this.queue.forEach(n=>{Ra(n.loaded,[i],a),_o(n,e),t&&n.errors.push(t),n.pendingCount===0&&!n.done&&(Object.keys(n.loaded).forEach(e=>{o[e]||(o[e]={});let t=n.loaded[e];t.length&&t.forEach(t=>{o[e][t]===void 0&&(o[e][t]=!0)})}),n.done=!0,n.errors.length?n.callback(n.errors):n.callback())}),this.emit(`loaded`,o),this.queue=this.queue.filter(e=>!e.done)}read(e,t,n,r=0,i=this.retryTimeout,a){if(!e.length)return a(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:e,ns:t,fcName:n,tried:r,wait:i,callback:a});return}this.readingCalls++;let o=(o,s)=>{if(this.readingCalls--,this.waitingReads.length>0){let e=this.waitingReads.shift();this.read(e.lng,e.ns,e.fcName,e.tried,e.wait,e.callback)}if(o&&s&&r<this.maxRetries){setTimeout(()=>{this.read(e,t,n,r+1,i*2,a)},i);return}a(o,s)},s=this.backend[n].bind(this.backend);if(s.length===2){try{let n=s(e,t);n&&typeof n.then==`function`?n.then(e=>o(null,e)).catch(o):o(null,n)}catch(e){o(e)}return}return s(e,t,o)}prepareLoading(e,t,n={},r){if(!this.backend)return this.logger.warn(`No backend was added via i18next.use. Will not load resources.`),r&&r();Y(e)&&(e=this.languageUtils.toResolveHierarchy(e)),Y(t)&&(t=[t]);let i=this.queueLoad(e,t,n,r);if(!i.toLoad.length)return i.pending.length||r(),null;i.toLoad.forEach(e=>{this.loadOne(e)})}load(e,t,n){this.prepareLoading(e,t,{},n)}reload(e,t,n){this.prepareLoading(e,t,{reload:!0},n)}loadOne(e,t=``){let n=e.split(`|`),r=n[0],i=n[1];this.read(r,i,`read`,void 0,void 0,(n,a)=>{n&&this.logger.warn(`${t}loading namespace ${i} for language ${r} failed`,n),!n&&a&&this.logger.log(`${t}loaded namespace ${i} for language ${r}`,a),this.loaded(e,n,a)})}saveMissing(e,t,n,r,i,a={},o=()=>{}){if(this.services?.utils?.hasLoadedNamespace&&!this.services?.utils?.hasLoadedNamespace(t)){this.logger.warn(`did not save key "${n}" as the namespace "${t}" was not yet loaded`,`This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!`);return}if(!(n==null||n===``)){if(this.backend?.create){let s={...a,isUpdate:i},c=this.backend.create.bind(this.backend);if(c.length<6)try{let i;i=c.length===5?c(e,t,n,r,s):c(e,t,n,r),i&&typeof i.then==`function`?i.then(e=>o(null,e)).catch(o):o(null,i)}catch(e){o(e)}else c(e,t,n,r,o,s)}!e||!e[0]||this.store.addResource(e[0],t,n,r)}}},yo=()=>({debug:!1,initAsync:!0,ns:[`translation`],defaultNS:[`translation`],fallbackLng:[`dev`],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:`all`,preload:!1,keySeparator:`.`,nsSeparator:`:`,pluralSeparator:`_`,contextSeparator:`_`,enableSelector:!1,partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:`fallback`,saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:e=>{let t={};if(typeof e[1]==`object`&&(t=e[1]),Y(e[1])&&(t.defaultValue=e[1]),Y(e[2])&&(t.tDescription=e[2]),typeof e[2]==`object`||typeof e[3]==`object`){let n=e[3]||e[2];Object.keys(n).forEach(e=>{t[e]=n[e]})}return t},interpolation:{escapeValue:!0,prefix:`{{`,suffix:`}}`,formatSeparator:`,`,unescapePrefix:`-`,nestingPrefix:`$t(`,nestingSuffix:`)`,nestingOptionsSeparator:`,`,maxReplaces:1e3,skipOnVariables:!0},cacheInBuiltFormats:!0}),bo=e=>(Y(e.ns)&&(e.ns=[e.ns]),Y(e.fallbackLng)&&(e.fallbackLng=[e.fallbackLng]),Y(e.fallbackNS)&&(e.fallbackNS=[e.fallbackNS]),e.supportedLngs&&!e.supportedLngs.includes(`cimode`)&&(e.supportedLngs=e.supportedLngs.concat([`cimode`])),e),xo=()=>{},So=e=>{Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach(t=>{typeof e[t]==`function`&&(e[t]=e[t].bind(e))})},Q=class e extends Za{constructor(e={},t){if(super(),this.options=bo(e),this.services={},this.logger=Z,this.modules={external:[]},So(this),t&&!this.isInitialized&&!e.isClone){if(!this.options.initAsync)return this.init(e,t),this;setTimeout(()=>{this.init(e,t)},0)}}init(e={},t){this.isInitializing=!0,typeof e==`function`&&(t=e,e={}),e.defaultNS==null&&e.ns&&(Y(e.ns)?e.defaultNS=e.ns:e.ns.includes(`translation`)||(e.defaultNS=e.ns[0]));let n=yo();this.options={...n,...this.options,...bo(e)},this.options.interpolation={...n.interpolation,...this.options.interpolation},e.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=e.keySeparator),e.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=e.nsSeparator),typeof this.options.overloadTranslationOptionHandler!=`function`&&(this.options.overloadTranslationOptionHandler=n.overloadTranslationOptionHandler);let r=e=>e?typeof e==`function`?new e:e:null;if(!this.options.isClone){this.modules.logger?Z.init(r(this.modules.logger),this.options):Z.init(null,this.options);let e;e=this.modules.formatter?this.modules.formatter:go;let t=new ao(this.options);this.store=new Qa(this.options.resources,this.options);let n=this.services;n.logger=Z,n.resourceStore=this.store,n.languageUtils=t,n.pluralResolver=new co(t,{prepend:this.options.pluralSeparator}),e&&(n.formatter=r(e),n.formatter.init&&n.formatter.init(n,this.options),this.options.interpolation.format=n.formatter.format.bind(n.formatter)),n.interpolator=new fo(this.options),n.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},n.backendConnector=new vo(r(this.modules.backend),n.resourceStore,n,this.options),n.backendConnector.on(`*`,(e,...t)=>{this.emit(e,...t)}),this.modules.languageDetector&&(n.languageDetector=r(this.modules.languageDetector),n.languageDetector.init&&n.languageDetector.init(n,this.options.detection,this.options)),this.modules.i18nFormat&&(n.i18nFormat=r(this.modules.i18nFormat),n.i18nFormat.init&&n.i18nFormat.init(this)),this.translator=new io(this.services,this.options),this.translator.on(`*`,(e,...t)=>{this.emit(e,...t)}),this.modules.external.forEach(e=>{e.init&&e.init(this)})}if(this.format=this.options.interpolation.format,t||=xo,this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){let e=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);e.length>0&&e[0]!==`dev`&&(this.options.lng=e[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn(`init: no languageDetector is used and no lng is defined`),[`getResource`,`hasResourceBundle`,`getResourceBundle`,`getDataByLanguage`].forEach(e=>{this[e]=(...t)=>this.store[e](...t)}),[`addResource`,`addResources`,`addResourceBundle`,`removeResourceBundle`].forEach(e=>{this[e]=(...t)=>(this.store[e](...t),this)});let i=Aa(),a=()=>{let e=(e,n)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn(`init: i18next is already initialized. You should call init just once!`),this.isInitialized=!0,this.options.isClone||this.logger.log(`initialized`,this.options),this.emit(`initialized`,this.options),i.resolve(n),t(e,n)};if((this.languages||this.isLanguageChangingTo)&&!this.isInitialized)return e(null,this.t.bind(this));this.changeLanguage(this.options.lng,e)};return this.options.resources||!this.options.initAsync?a():setTimeout(a,0),i}loadResources(e,t=xo){let n=t,r=Y(e)?e:this.language;if(typeof e==`function`&&(n=e),!this.options.resources||this.options.partialBundledLanguages){if(r?.toLowerCase()===`cimode`&&(!this.options.preload||this.options.preload.length===0))return n();let e=[],t=t=>{t&&t!==`cimode`&&this.services.languageUtils.toResolveHierarchy(t).forEach(t=>{t!==`cimode`&&(e.includes(t)||e.push(t))})};r?t(r):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(e=>t(e)),this.options.preload?.forEach?.(e=>t(e)),this.services.backendConnector.load(e,this.options.ns,e=>{!e&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),n(e)})}else n(null)}reloadResources(e,t,n){let r=Aa();return typeof e==`function`&&(n=e,e=void 0),typeof t==`function`&&(n=t,t=void 0),e||=this.languages,t||=this.options.ns,n||=xo,this.services.backendConnector.reload(e,t,e=>{r.resolve(),n(e)}),r}use(e){if(!e)throw Error(`You are passing an undefined module! Please check the object you are passing to i18next.use()`);if(!e.type)throw Error(`You are passing a wrong module! Please check the object you are passing to i18next.use()`);return e.type===`backend`&&(this.modules.backend=e),(e.type===`logger`||e.log&&e.warn&&e.error)&&(this.modules.logger=e),e.type===`languageDetector`&&(this.modules.languageDetector=e),e.type===`i18nFormat`&&(this.modules.i18nFormat=e),e.type===`postProcessor`&&$a.addPostProcessor(e),e.type===`formatter`&&(this.modules.formatter=e),e.type===`3rdParty`&&this.modules.external.push(e),this}setResolvedLanguage(e){if(!(!e||!this.languages)&&![`cimode`,`dev`].includes(e)){for(let e=0;e<this.languages.length;e++){let t=this.languages[e];if(![`cimode`,`dev`].includes(t)&&this.store.hasLanguageSomeTranslations(t)){this.resolvedLanguage=t;break}}!this.resolvedLanguage&&!this.languages.includes(e)&&this.store.hasLanguageSomeTranslations(e)&&(this.resolvedLanguage=e,this.languages.unshift(e))}}changeLanguage(e,t){this.isLanguageChangingTo=e;let n=Aa();this.emit(`languageChanging`,e);let r=e=>{this.language=e,this.languages=this.services.languageUtils.toResolveHierarchy(e),this.resolvedLanguage=void 0,this.setResolvedLanguage(e)},i=(i,a)=>{a?this.isLanguageChangingTo===e&&(r(a),this.translator.changeLanguage(a),this.isLanguageChangingTo=void 0,this.emit(`languageChanged`,a),this.logger.log(`languageChanged`,a)):this.isLanguageChangingTo=void 0,n.resolve((...e)=>this.t(...e)),t&&t(i,(...e)=>this.t(...e))},a=t=>{!e&&!t&&this.services.languageDetector&&(t=[]);let n=Y(t)?t:t&&t[0],a=this.store.hasLanguageSomeTranslations(n)?n:this.services.languageUtils.getBestMatchFromCodes(Y(t)?[t]:t);a&&(this.language||r(a),this.translator.language||this.translator.changeLanguage(a),this.services.languageDetector?.cacheUserLanguage?.(a)),this.loadResources(a,e=>{i(e,a)})};return!e&&this.services.languageDetector&&!this.services.languageDetector.async?a(this.services.languageDetector.detect()):!e&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(a):this.services.languageDetector.detect(a):a(e),n}getFixedT(e,t,n,r){let i=r?.scopeNs,a=(e,t,...r)=>{let o;o=typeof t==`object`?{...t}:this.options.overloadTranslationOptionHandler([e,t].concat(r)),o.lng=o.lng||a.lng,o.lngs=o.lngs||a.lngs;let s=o.ns!==void 0&&o.ns!==null;o.ns=o.ns||a.ns,o.keyPrefix!==``&&(o.keyPrefix=o.keyPrefix||n||a.keyPrefix);let c={...this.options,...o};Array.isArray(i)&&!s&&(c.ns=i),typeof o.keyPrefix==`function`&&(o.keyPrefix=no(o.keyPrefix,c));let l=this.options.keySeparator||`.`,u;return o.keyPrefix&&Array.isArray(e)?u=e.map(e=>(typeof e==`function`&&(e=no(e,c)),`${o.keyPrefix}${l}${e}`)):(typeof e==`function`&&(e=no(e,c)),u=o.keyPrefix?`${o.keyPrefix}${l}${e}`:e),this.t(u,o)};return Y(e)?a.lng=e:a.lngs=e,a.ns=t,a.keyPrefix=n,a}t(...e){return this.translator?.translate(...e)}exists(...e){return this.translator?.exists(...e)}setDefaultNamespace(e){this.options.defaultNS=e}hasLoadedNamespace(e,t={}){if(!this.isInitialized)return this.logger.warn(`hasLoadedNamespace: i18next was not initialized`,this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn(`hasLoadedNamespace: i18n.languages were undefined or empty`,this.languages),!1;let n=t.lng||this.resolvedLanguage||this.languages[0],r=this.options?this.options.fallbackLng:!1,i=this.languages[this.languages.length-1];if(n.toLowerCase()===`cimode`)return!0;let a=(e,t)=>{let n=this.services.backendConnector.state[`${e}|${t}`];return n===-1||n===0||n===2};if(t.precheck){let e=t.precheck(this,a);if(e!==void 0)return e}return!!(this.hasResourceBundle(n,e)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||a(n,e)&&(!r||a(i,e)))}loadNamespaces(e,t){let n=Aa();return this.options.ns?(Y(e)&&(e=[e]),e.forEach(e=>{this.options.ns.includes(e)||this.options.ns.push(e)}),this.loadResources(e=>{n.resolve(),t&&t(e)}),n):(t&&t(),Promise.resolve())}loadLanguages(e,t){let n=Aa();Y(e)&&(e=[e]);let r=this.options.preload||[],i=e.filter(e=>!r.includes(e)&&this.services.languageUtils.isSupportedCode(e));return i.length?(this.options.preload=r.concat(i),this.loadResources(e=>{n.resolve(),t&&t(e)}),n):(t&&t(),Promise.resolve())}dir(e){if(e||=this.resolvedLanguage||(this.languages?.length>0?this.languages[0]:this.language),!e)return`rtl`;try{let t=new Intl.Locale(e);if(t&&t.getTextInfo){let e=t.getTextInfo();if(e&&e.direction)return e.direction}}catch{}let t=`ar.shu.sqr.ssh.xaa.yhd.yud.aao.abh.abv.acm.acq.acw.acx.acy.adf.ads.aeb.aec.afb.ajp.apc.apd.arb.arq.ars.ary.arz.auz.avl.ayh.ayl.ayn.ayp.bbz.pga.he.iw.ps.pbt.pbu.pst.prp.prd.ug.ur.ydd.yds.yih.ji.yi.hbo.men.xmn.fa.jpr.peo.pes.prs.dv.sam.ckb`.split(`.`),n=this.services?.languageUtils||new ao(yo());return e.toLowerCase().indexOf(`-latn`)>1?`ltr`:t.includes(n.getLanguagePartFromCode(e))||e.toLowerCase().indexOf(`-arab`)>1?`rtl`:`ltr`}static createInstance(t={},n){let r=new e(t,n);return r.createInstance=e.createInstance,r}cloneInstance(t={},n=xo){let r=t.forkResourceStore;r&&delete t.forkResourceStore;let i={...this.options,...t,isClone:!0},a=new e(i);if((t.debug!==void 0||t.prefix!==void 0)&&(a.logger=a.logger.clone(t)),[`store`,`services`,`language`].forEach(e=>{a[e]=this[e]}),a.services={...this.services},a.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},r&&(a.store=new Qa(Object.keys(this.store.data).reduce((e,t)=>(e[t]={...this.store.data[t]},e[t]=Object.keys(e[t]).reduce((n,r)=>(n[r]={...e[t][r]},n),e[t]),e),{}),i),a.services.resourceStore=a.store),t.interpolation){let e={...yo().interpolation,...this.options.interpolation,...t.interpolation},n={...i,interpolation:e};a.services.interpolator=new fo(n)}return a.translator=new io(a.services,i),a.translator.on(`*`,(e,...t)=>{a.emit(e,...t)}),a.init(i,n),a.translator.options=i,a.translator.backendConnector.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},a}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}.createInstance();Q.createInstance,Q.dir,Q.init,Q.loadResources,Q.reloadResources,Q.use,Q.changeLanguage,Q.getFixedT,Q.t,Q.exists,Q.setDefaultNamespace,Q.hasLoadedNamespace,Q.loadNamespaces,Q.loadLanguages;var Co=(e,t,n,r)=>{let i=[n,{code:t,...r||{}}];if(e?.services?.logger?.forward)return e.services.logger.forward(i,`warn`,`react-i18next::`,!0);Ao(i[0])&&(i[0]=`react-i18next:: ${i[0]}`),e?.services?.logger?.warn?e.services.logger.warn(...i):console?.warn&&console.warn(...i)},wo={},To=(e,t,n,r)=>{Ao(n)&&wo[n]||(Ao(n)&&(wo[n]=new Date),Co(e,t,n,r))},Eo=(e,t)=>()=>{if(e.isInitialized)t();else{let n=()=>{setTimeout(()=>{e.off(`initialized`,n)},0),t()};e.on(`initialized`,n)}},Do=(e,t,n)=>{e.loadNamespaces(t,Eo(e,n))},Oo=(e,t,n,r)=>{if(Ao(n)&&(n=[n]),e.options.preload&&e.options.preload.indexOf(t)>-1)return Do(e,n,r);n.forEach(t=>{e.options.ns.indexOf(t)<0&&e.options.ns.push(t)}),e.loadLanguages(t,Eo(e,r))},ko=(e,t,n={})=>!t.languages||!t.languages.length?(To(t,`NO_LANGUAGES`,`i18n.languages were undefined or empty`,{languages:t.languages}),!0):t.hasLoadedNamespace(e,{lng:n.lng,precheck:(t,r)=>{if(n.bindI18n&&n.bindI18n.indexOf(`languageChanging`)>-1&&t.services.backendConnector.backend&&t.isLanguageChangingTo&&!r(t.isLanguageChangingTo,e))return!1}}),Ao=e=>typeof e==`string`,jo=e=>typeof e==`object`&&!!e,Mo=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,No={"&":`&`,"&":`&`,"<":`<`,"<":`<`,">":`>`,">":`>`,"'":`'`,"'":`'`,""":`"`,""":`"`," ":` `," ":` `,"©":`©`,"©":`©`,"®":`®`,"®":`®`,"…":`…`,"…":`…`,"/":`/`,"/":`/`},Po=e=>No[e],Fo={bindI18n:`languageChanged`,bindI18nStore:``,transEmptyNodeValue:``,transSupportBasicHtmlNodes:!0,transWrapTextNodes:``,transKeepBasicHtmlNodesFor:[`br`,`strong`,`i`,`p`],useSuspense:!0,unescape:e=>e.replace(Mo,Po),transDefaultProps:void 0},Io=(e={})=>{Fo={...Fo,...e}},Lo=()=>Fo,Ro,zo=e=>{Ro=e},Bo=()=>Ro,Vo={type:`3rdParty`,init(e){Io(e.options.react),zo(e)}};P();var Ho=T(),Uo=class{constructor(){this.usedNamespaces={}}addUsedNamespaces(e){e.forEach(e=>{this.usedNamespaces[e]||(this.usedNamespaces[e]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}},Wo=t((t=>{var n=(P(),e(ve));function r(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var i=typeof Object.is==`function`?Object.is:r,a=n.useState,o=n.useEffect,s=n.useLayoutEffect,c=n.useDebugValue;function l(e,t){var n=t(),r=a({inst:{value:n,getSnapshot:t}}),i=r[0].inst,l=r[1];return s(function(){i.value=n,i.getSnapshot=t,u(i)&&l({inst:i})},[e,n,t]),o(function(){return u(i)&&l({inst:i}),e(function(){u(i)&&l({inst:i})})},[e]),c(n),n}function u(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!i(e,n)}catch{return!0}}function d(e,t){return t()}var f=typeof window>`u`||window.document===void 0||window.document.createElement===void 0?d:l;t.useSyncExternalStore=n.useSyncExternalStore===void 0?f:n.useSyncExternalStore})),Go=t(((e,t)=>{t.exports=Wo()}));P();var Ko=Go(),qo={t:(e,t)=>{if(Ao(t))return t;if(jo(t)&&Ao(t.defaultValue))return t.defaultValue;if(typeof e==`function`)return``;if(Array.isArray(e)){let t=e[e.length-1];return typeof t==`function`?``:t}return e},ready:!1},Jo=()=>()=>{},Yo=(e,t={})=>{let{i18n:n}=t,{i18n:r,defaultNS:i}=A(Ho)||{},a=n||r||Bo();a&&!a.reportNamespaces&&(a.reportNamespaces=new Uo),a||To(a,`NO_I18NEXT_INSTANCE`,`useTranslation: You will need to pass in an i18next instance by using initReactI18next`);let o=N(()=>({...Lo(),...a?.options?.react,...t}),[a,t]),{useSuspense:s,keyPrefix:c}=o,l=e||i||a?.options?.defaultNS,u=Ao(l)?[l]:l||[`translation`],d=N(()=>u,u);a?.reportNamespaces?.addUsedNamespaces?.(d);let f=D(0),p=O(e=>{if(!a)return Jo;let{bindI18n:t,bindI18nStore:n}=o,r=()=>{f.current+=1,e()};return t&&a.on(t,r),n&&a.store.on(n,r),()=>{t&&t.split(` `).forEach(e=>a.off(e,r)),n&&n.split(` `).forEach(e=>a.store.off(e,r))}},[a,o]),m=D(),h=O(()=>{if(!a)return qo;let e=!!(a.isInitialized||a.initializedStoreOnce)&&d.every(e=>ko(e,a,o)),n=t.lng||a.language,r=f.current,i=m.current;if(i&&i.ready===e&&i.lng===n&&i.keyPrefix===c&&i.revision===r)return i;let s={t:a.getFixedT(n,o.nsMode===`fallback`?d:d[0],c,{scopeNs:d}),ready:e,lng:n,keyPrefix:c,revision:r};return m.current=s,s},[a,d,c,o,t.lng]),[g,_]=k(0),{t:v,ready:y}=(0,Ko.useSyncExternalStore)(p,h,h);L(()=>{if(a&&!y&&!s){let e=()=>_(e=>e+1);t.lng?Oo(a,t.lng,d,e):Do(a,d,e)}},[a,t.lng,d,y,s,g]);let b=a||{},x=D(null),S=D(),ee=e=>{let t=Object.getOwnPropertyDescriptors(e);t.__original&&delete t.__original;let n=Object.create(Object.getPrototypeOf(e),t);if(!Object.prototype.hasOwnProperty.call(n,`__original`))try{Object.defineProperty(n,"__original",{value:e,writable:!1,enumerable:!1,configurable:!1})}catch{}return n},te=N(()=>{let e=b,t=e?.language,n=e;e&&(x.current&&x.current.__original===e&&S.current===t?n=x.current:(n=ee(e),x.current=n,S.current=t));let r=!y&&!s?(...e)=>(To(a,`USE_T_BEFORE_READY`,`useTranslation: t was called before ready. When using useSuspense: false, make sure to check the ready flag before using t.`),v(...e)):v,i=[r,n,y];return i.t=r,i.i18n=n,i.ready=y,i},[v,b,y,b.resolvedLanguage,b.language,b.languages]);if(a&&s&&!y)throw new Promise(e=>{let n=()=>e();t.lng?Oo(a,t.lng,d,n):Do(a,d,n)});return te};P();var Xo={info:di,success:ni,warning:Mi,error:ti},Zo={info:`text-blue-400`,success:`text-green-400`,warning:`text-amber-400`,error:`text-red-400`},Qo={active:`border-l-blue-400`,"in-progress":`border-l-amber-400`,completed:`border-l-green-400`,failed:`border-l-red-400`,dismissed:`border-l-foreground-subtle/30`};function $o(e){let t=Math.floor((Date.now()-e)/1e3);if(t<60)return`just now`;let n=Math.floor(t/60);if(n<60)return`${String(n)}m ago`;let r=Math.floor(n/60);if(r<24)return`${String(r)}h ago`;let i=Math.floor(r/24);return`${String(i)}d ago`}function es({alert:e,onMarkRead:t,onDismiss:n}){let r=e.severity in Xo?e.severity:`info`,i=e.status in Qo?e.status:`active`,a=Xo[r],o=Zo[r],s=Qo[i];return M(`div`,{className:`flex items-start gap-2.5 px-3 py-2.5 border-l-2 ${s} ${e.read?`opacity-60`:``} hover:bg-surface-hover transition-colors`,children:[I(a,{className:`h-3.5 w-3.5 shrink-0 mt-0.5 ${o}`}),M(`div`,{className:`flex-1 min-w-0`,children:[M(`div`,{className:`flex items-center gap-1.5`,children:[I(`span`,{className:`text-[11px] font-semibold ${e.read?`text-foreground-subtle`:`text-foreground`}`,children:e.title}),!e.read&&I(`span`,{className:`h-1.5 w-1.5 rounded-full bg-primary shrink-0`})]}),I(`div`,{className:`text-[10px] text-foreground-subtle mt-0.5 line-clamp-2`,children:e.message}),e.status===`in-progress`&&e.progress!==void 0&&M(`div`,{className:`mt-1.5 flex items-center gap-2`,children:[I(`div`,{className:`flex-1 h-1 bg-surface-hover rounded-full overflow-hidden`,children:I(`div`,{className:`h-full bg-primary rounded-full transition-all duration-300`,style:{width:`${String(Math.min(100,Math.max(0,e.progress)))}%`}})}),M(`span`,{className:`text-[9px] text-foreground-subtle font-mono shrink-0`,children:[String(Math.round(e.progress)),`%`]})]}),I(`div`,{className:`text-[9px] text-foreground-subtle/60 mt-1`,children:$o(e.updatedAt)})]}),M(`div`,{className:`flex items-center gap-0.5 shrink-0`,children:[!e.read&&I(`button`,{type:`button`,onClick:n=>{n.stopPropagation(),t(e.id)},className:`p-1 rounded hover:bg-surface-hover transition-colors`,title:`Mark as read`,children:I(Zr,{className:`h-3 w-3 text-foreground-subtle`})}),e.status!==`in-progress`&&I(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),n(e.id)},className:`p-1 rounded hover:bg-surface-hover transition-colors`,title:`Dismiss`,children:I(Pi,{className:`h-3 w-3 text-foreground-subtle`})})]})]})}function ts({variant:e=`icon`,compact:t=!1}={}){let[n,r]=k(!1),[i,a]=k(!1),o=D(null),c=D(null),l=we(),{data:u=0}=g(void 0,{refetchInterval:3e4}),{data:d=[],isLoading:f}=s({limit:50},{enabled:n}),p=i?d:d.filter(e=>!e.read),m=d.filter(e=>e.read).length,h=()=>{l.invalidateQueries({queryKey:[[`alerts`]]})},_=v({onSuccess:h}),y=ce({onSuccess:h}),b=le({onSuccess:h});ee(`alert.created`,()=>{l.invalidateQueries({queryKey:[[`alerts`]]})}),ee(`alert.updated`,()=>{l.invalidateQueries({queryKey:[[`alerts`]]})}),L(()=>{if(!n)return;let e=e=>{let t=e.target;o.current&&!o.current.contains(t)&&c.current&&!c.current.contains(t)&&r(!1)};return document.addEventListener(`mousedown`,e),document.addEventListener(`touchstart`,e),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`touchstart`,e)}},[n]);let x=O(e=>{_.mutate({alertId:e})},[_]),S=O(e=>{e&&b.mutate({alertId:e})},[b]),te=O(()=>{y.mutate(void 0),r(!1)},[y]),C=p.filter(e=>e.status===`in-progress`),w=p.filter(e=>e.status!==`in-progress`),[ne,re]=k({}),ie=O(()=>{let e=c.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,l={position:`fixed`,left:a,width:i,zIndex:9999};o>=s?(l.top=t.bottom+4,l.maxHeight=Math.max(160,o-8-4)):(l.bottom=r-t.top+4,l.maxHeight=Math.max(160,s-8-4)),re(l)},[]);return L(()=>{if(!n)return;ie();let e=()=>ie();return window.addEventListener(`resize`,e),window.addEventListener(`scroll`,e,!0),()=>{window.removeEventListener(`resize`,e),window.removeEventListener(`scroll`,e,!0)}},[n,ie]),M(`div`,{children:[e===`sidebar`?M(`button`,{ref:c,type:`button`,onClick:()=>r(!n),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?`Alerts${u>0?` (${u})`:``}`:void 0,children:[M(`span`,{className:`relative inline-flex shrink-0`,children:[I(Ci,{className:`h-3.5 w-3.5`}),t&&u>0&&I(`span`,{className:`absolute -top-1 -right-1 h-2 w-2 rounded-full bg-primary`})]}),!t&&I(`span`,{className:`flex-1 text-left`,children:`Alerts`}),!t&&u>0&&I(`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:u>99?`99+`:String(u)})]}):M(`button`,{ref:c,type:`button`,onClick:()=>r(!n),className:`relative p-1.5 rounded-md hover:bg-surface-hover text-foreground-subtle hover:text-foreground transition-colors`,"aria-label":`Alerts`,children:[I(Ci,{className:`h-4.5 w-4.5`}),u>0&&I(`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:u>99?`99+`:String(u)})]}),n&&Ae(M(`div`,{ref:o,style:ne,className:`bg-surface border border-border rounded-lg shadow-xl flex flex-col overflow-hidden`,children:[M(`div`,{className:`flex items-center justify-between px-3 py-2 border-b border-border shrink-0`,children:[I(`span`,{className:`text-[12px] font-semibold text-foreground`,children:`Alerts`}),M(`div`,{className:`flex items-center gap-2`,children:[m>0&&M(`label`,{className:`flex items-center gap-1 text-[10px] text-foreground-subtle cursor-pointer select-none`,children:[I(`input`,{type:`checkbox`,checked:i,onChange:e=>a(e.target.checked),className:`h-3 w-3 rounded border-border accent-primary cursor-pointer`}),`Show read`]}),u>0&&M(`button`,{type:`button`,onClick:te,className:`flex items-center gap-1 text-[10px] text-primary hover:text-primary/80 transition-colors`,children:[I(Xr,{className:`h-3 w-3`}),`Mark all read`]})]})]}),M(`div`,{className:`flex-1 overflow-y-auto`,children:[f&&I(`div`,{className:`flex items-center justify-center py-8`,children:I(pi,{className:`h-4 w-4 animate-spin text-foreground-subtle`})}),!f&&p.length===0&&M(`div`,{className:`flex flex-col items-center justify-center py-8 text-foreground-subtle`,children:[I(Ci,{className:`h-6 w-6 mb-2 opacity-40`}),I(`span`,{className:`text-[11px]`,children:d.length>0?`No unread alerts`:`No alerts`}),d.length>0&&!i&&M(`button`,{type:`button`,onClick:()=>a(!0),className:`text-[10px] text-primary mt-1 hover:underline`,children:[`Show `,m,` read alert`,m===1?``:`s`]})]}),C.length>0&&M(`div`,{className:`border-b border-border`,children:[I(`div`,{className:`px-3 py-1.5 bg-surface-hover/50`,children:I(`span`,{className:`text-[9px] font-semibold uppercase tracking-widest text-foreground-subtle/60`,children:`In Progress`})}),C.map(e=>I(es,{alert:e,onMarkRead:x,onDismiss:S},e.id))]}),w.map(e=>I(es,{alert:e,onMarkRead:x,onDismiss:S},e.id))]})]}),document.body)]})}P();var ns={dark:vi,light:ki,system:_i},rs={gauge:ci,puzzle:xi,bot:qr,cpu:ri,terminal:Ai,box:Jr,wrench:Fi,activity:Wr,plug:bi};function is(){let e=W(),t=G(),{user:n,logout:r}=ba(),i=w(),{t:a}=Yo(),o=re(),s=te(),c=ca(),l=c!==`connected`,u=c===`connecting`,[d,f]=k(!1),[p,m]=k(()=>typeof window>`u`?!1:window.localStorage.getItem(`camstack:sidebar-collapsed`)===`1`);L(()=>{typeof window>`u`||window.localStorage.setItem(`camstack:sidebar-collapsed`,p?`1`:`0`)},[p]);let[h]=k(()=>{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}});L(()=>{typeof window>`u`||window.localStorage.setItem(`camstack:sidebar-collapsed-groups`,JSON.stringify([...h]))},[h]),L(()=>{s&&window.localStorage.getItem(`camstack:sidebar-collapsed`)===null&&m(!0)},[s]);let{data:g=[]}=ne({nodeId:`hub`},{refetchInterval:3e4}),_=g.length,v=we(),y=D(Date.now()),{data:b}=S(void 0,{staleTime:0,refetchOnMount:`always`,refetchInterval:e=>{let t=e.state.data;return t&&t.length>0||Date.now()-y.current>=3e4?!1:2e3}}),x=N(()=>b&&n?.isAdmin?Ca(b):[],[b,n?.isAdmin]);ee(`addon.page-ready`,()=>{v.invalidateQueries({queryKey:[[`addonPages`,`listPages`]]})});let ie=()=>{r(),t(`/login`)},ae=t=>!!(e.pathname===t||e.pathname.startsWith(t+`/`)),oe=[`/pipeline`].some(t=>e.pathname===t||e.pathname.startsWith(t+`/`)),se=n?.isAdmin===!0,ce=[{label:a(`nav.devices`,`Devices`),icon:Yr,path:`/devices`},{label:a(`nav.integrations`),icon:bi,path:`/integrations`},{label:a(`nav.pipeline`,`Pipeline`),icon:li,path:`/pipeline`}].filter(Boolean),le=[{label:a(`nav.detectionIntelligence`,`Detection Intelligence`),icon:Si,path:`/detection-intelligence`,adminOnly:!0}].filter(e=>!e.adminOnly||se),ue=[{label:a(`system.identity`,`Identity & Access`),icon:mi,path:`/system/identity`,adminOnly:!0},{label:a(`system.network`,`Network`),icon:ui,path:`/system/network`,adminOnly:!0},{label:a(`system.integrations`,`Integrations`),icon:bi,path:`/system/integrations`,adminOnly:!0},{label:a(`system.data`,`Data`),icon:ii,path:`/system/data`,adminOnly:!0},{label:a(`system.cluster`,`Cluster`),icon:yi,path:`/system/cluster`,adminOnly:!0},{label:a(`system.capabilities`,`Capabilities`),icon:Di,path:`/system/capabilities`,adminOnly:!0},{label:a(`system.notifications`,`Notifications`),icon:Kr,path:`/system/notifications`,adminOnly:!0},{label:a(`system.addons`),icon:xi,path:`/system/addons`,adminOnly:!0},{label:a(`system.addonSettings`,`Addon Settings`),icon:wi,path:`/system/settings`,adminOnly:!0},{label:a(`system.logs`,`Logs`),icon:Ci,path:`/system/logs`,adminOnly:!0}].filter(e=>!e.adminOnly||se),de=i?.mode??`system`,fe={dark:a(`theme.dark`),light:a(`theme.light`),system:a(`theme.system`)},T=p&&!o,E=(e,t=`md`)=>`flex w-full items-center gap-2.5 rounded-md ${T?`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`}`,O=M(xe,{children:[M(`div`,{className:`flex h-14 items-center border-b border-border ${T?`justify-center px-1`:`pl-3 pr-4 gap-2`}`,children:[!T&&I(`img`,{src:i?.resolvedMode===`light`?`/brand/logo-horizontal-light.svg`:`/brand/logo-horizontal-dark.svg`,alt:`CamStack Admin`,className:`h-9 flex-1 min-w-0`}),!o&&I(`button`,{onClick:()=>m(e=>!e),className:`p-1.5 rounded-md hover:bg-surface-hover text-foreground-subtle transition-colors flex-shrink-0 ${T?``:`mr-2`}`,"aria-label":p?`Expand sidebar`:`Collapse sidebar`,title:p?`Expand sidebar`:`Collapse sidebar`,children:I(p?ei:$r,{className:`h-4 w-4`})})]}),M(`nav`,{className:`flex-1 overflow-y-auto py-3 ${T?`px-1.5`:`px-2`} space-y-0.5`,children:[(()=>{let e=ae(`/dashboard`);return M(`button`,{"data-testid":`nav-dashboard`,onClick:()=>{t(`/dashboard`),f(!1)},className:E(e,`lg`),title:T?a(`nav.dashboard`):void 0,children:[I(fi,{className:`h-4 w-4 shrink-0 ${e?`text-primary`:``}`}),!T&&a(`nav.dashboard`)]})})(),!T&&I(`div`,{className:`pt-4 pb-1.5 px-2.5`,children:I(`span`,{className:`text-[10px] font-semibold uppercase tracking-widest text-foreground-subtle/60`,children:a(`nav.camerasSection`,`Input systems`)})}),T&&I(`div`,{className:`pt-3 mb-1 mx-2 border-t border-border/60`}),ce.map(e=>{let n=e.icon,r=ae(e.path);return M(`button`,{"data-testid":`nav-${e.path.replace(/^\//,``).replace(/\//g,`-`)}`,onClick:()=>{t(e.path),f(!1)},className:E(r),title:T?e.label:void 0,children:[I(n,{className:`h-3.5 w-3.5 shrink-0 ${r?`text-primary`:``}`}),!T&&e.label]},e.path)}),le.length>0&&!T&&I(`div`,{className:`pt-4 pb-1.5 px-2.5`,children:I(`span`,{className:`text-[10px] font-semibold uppercase tracking-widest text-foreground-subtle/60`,children:a(`nav.intelligenceSection`,`Intelligence`)})}),le.length>0&&T&&I(`div`,{className:`pt-3 mb-1 mx-2 border-t border-border/60`}),le.map(e=>{let n=e.icon,r=ae(e.path);return M(`button`,{"data-testid":`nav-${e.path.replace(/^\//,``).replace(/\//g,`-`)}`,onClick:()=>{t(e.path),f(!1)},className:E(r),title:T?e.label:void 0,children:[I(n,{className:`h-3.5 w-3.5 shrink-0 ${r?`text-primary`:``}`}),!T&&e.label]},e.path)}),!T&&I(`div`,{className:`pt-4 pb-1.5 px-2.5`,children:I(`span`,{className:`text-[10px] font-semibold uppercase tracking-widest text-foreground-subtle/60`,children:a(`system.title`)})}),T&&I(`div`,{className:`pt-3 mb-1 mx-2 border-t border-border/60`}),ue.map(e=>{let n=e.icon,r=ae(e.path),i=e.path===`/system/addons`;return M(`button`,{"data-testid":`nav-${e.path.replace(/^\//,``).replace(/\//g,`-`)}`,onClick:()=>{t(e.path),f(!1)},className:E(r),title:T?e.label:void 0,children:[I(n,{className:`h-3.5 w-3.5 shrink-0 ${r?`text-primary`:``}`}),!T&&M(xe,{children:[I(`span`,{className:`flex-1 text-left`,children:e.label}),i&&_>0&&I(`span`,{className:`ml-auto rounded-full bg-primary px-1.5 py-0.5 text-[9px] font-bold text-primary-foreground leading-none`,children:_})]}),T&&i&&_>0&&I(`span`,{className:`absolute mt-[-14px] ml-3 h-2 w-2 rounded-full bg-primary`})]},e.path)}),x&&x.length>0&&!T&&I(`div`,{className:`pt-4 pb-1.5 px-2.5`,children:I(`span`,{className:`text-[10px] font-semibold uppercase tracking-widest text-foreground-subtle/60`,children:a(`nav.addonPages`,`Addon Pages`)})}),T&&x&&x.length>0&&I(`div`,{className:`pt-3 mb-1 mx-2 border-t border-border/60`}),x?.map(e=>{let n=ae(e.path),r=rs[e.icon]??xi;return M(`button`,{onClick:()=>{t(e.path),f(!1)},className:E(n),title:T?e.label:void 0,children:[I(r,{className:`h-3.5 w-3.5 shrink-0 ${n?`text-primary`:``}`}),!T&&e.label]},e.id)})]}),M(`div`,{className:`border-t border-border ${T?`p-1.5`:`p-2`} space-y-0.5`,children:[M(`button`,{onClick:()=>i?.toggleMode(),className:E(!1),title:T?fe[de]:void 0,children:[(()=>{let e=ns[de];return I(e,{className:`h-3.5 w-3.5 shrink-0`})})(),!T&&I(`span`,{children:fe[de]})]}),I(ts,{variant:`sidebar`,compact:T}),M(`button`,{type:`button`,onClick:()=>t(`/system/my-access`),className:E(ae(`/system/my-access`)),title:T?a(`system.myAccess`,`My access`):void 0,children:[I(Ti,{className:`h-3.5 w-3.5 shrink-0`}),!T&&I(`span`,{className:`truncate`,children:a(`system.myAccess`,`My access`)})]}),M(`button`,{onClick:ie,className:E(!1).replace(`hover:text-foreground`,`hover:text-danger`),title:T?n?.username??`Logout`:void 0,children:[I(hi,{className:`h-3.5 w-3.5 shrink-0`}),!T&&I(`span`,{className:`truncate`,children:n?.username??`User`})]}),I(`div`,{className:`pt-1 text-[10px] text-foreground-disabled select-none ${T?`text-center`:`px-2`}`,title:`admin-ui v1.1.18`,children:T?`1.1.18`:`v1.1.18`})]})]});return M(`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&&I(`aside`,{className:`flex flex-col border-r border-border bg-surface/80 backdrop-blur-sm shrink-0 transition-[width] duration-150 ease-out ${T?`w-12`:`w-48`}`,children:O}),o&&I(C,{open:d,onClose:()=>f(!1),width:`w-64`,children:O}),M(`div`,{className:`flex flex-1 flex-col min-w-0`,children:[l&&M(`div`,{className:`flex items-center justify-center gap-2 bg-danger/90 px-3 py-2 text-[12px] font-medium text-white shrink-0`,children:[I(Ni,{className:`h-3.5 w-3.5`}),I(`span`,{children:u?a(`connection.reconnecting`,`Reconnecting…`):a(`connection.disconnected`,`Server unreachable — reconnecting…`)}),I(pi,{className:`h-3.5 w-3.5 animate-spin`})]}),o&&M(`header`,{className:`flex items-center h-12 border-b border-border px-3 shrink-0 bg-surface/80 backdrop-blur-sm`,children:[I(`button`,{onClick:()=>f(!0),className:`p-1.5 -ml-1.5 rounded-md hover:bg-surface-hover text-foreground-muted transition-colors`,"aria-label":`Open menu`,children:I(gi,{className:`h-5 w-5`})}),I(`div`,{className:`flex-1 flex justify-center`,children:I(`img`,{src:i?.resolvedMode===`light`?`/brand/logo-horizontal-light.svg`:`/brand/logo-horizontal-dark.svg`,alt:`CamStack`,className:`h-7`})}),I(ts,{})]}),I(`main`,{className:`relative flex-1 min-h-0 overscroll-contain bg-background ${oe?`overflow-hidden`:`overflow-auto`}`,children:I(Tn,{})})]})]})}function $({children:e,requireAdmin:t}){let{user:n,loading:r,mustChangePassword:i}=ba(),a=W();return r?I(`div`,{className:`flex h-screen items-center justify-center bg-background text-foreground-subtle`,children:`Loading...`}):n?i&&a.pathname!==`/change-password`?I(K,{to:`/change-password`,replace:!0}):t&&!n.isAdmin?I(K,{to:`/access-denied`,replace:!0}):I(xe,{children:e}):I(K,{to:`/login`,replace:!0})}function as(){let e=G();return M(`div`,{className:`flex flex-col items-center justify-center text-foreground py-16 px-4`,children:[I(`div`,{className:`flex h-16 w-16 items-center justify-center rounded-2xl bg-danger/10 mb-4`,children:I(Ei,{className:`h-8 w-8 text-danger`})}),I(`h1`,{className:`text-xl font-bold`,children:`Access Denied`}),I(`p`,{className:`mt-2 text-sm text-foreground-subtle`,children:`You don't have permission to access this page.`}),I(`button`,{onClick:()=>e(`/dashboard`),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:`Go to Dashboard`})]})}P();var os=8;function ss(){let{user:e,mustChangePassword:t,clearMustChangePassword:n,logout:r}=ba(),i=w(),a=G(),[s,c]=k(``),[l,u]=k(``),[d,f]=k(!1),[p,m]=k(``),h=o({onSuccess:()=>{n(),a(`/dashboard`,{replace:!0})},onError:e=>{m(e instanceof Error?e.message:`Could not change password`)}});return I(`div`,{className:`flex min-h-screen items-center justify-center bg-background p-4`,children:M(`div`,{className:`w-full max-w-sm`,children:[I(`div`,{className:`flex justify-center mb-8`,children:I(`img`,{src:i?.resolvedMode===`light`?`/brand/logo-horizontal-light.svg`:`/brand/logo-horizontal-dark.svg`,alt:`CamStack Admin`,className:`h-12`})}),M(`form`,{onSubmit:async t=>{if(t.preventDefault(),m(``),!e){m(`Not signed in`);return}if(s.length<os){m(`Password must be at least ${os} characters`);return}if(s!==l){m(`The two passwords do not match`);return}if(s===`changeme`){m(`Choose a password different from the seed default`);return}h.mutate({id:e.id,newPassword:s})},className:`space-y-4 rounded-xl border border-border bg-surface p-6 shadow-xl shadow-black/10`,children:[M(`div`,{className:`space-y-1`,children:[I(`h1`,{className:`text-sm font-semibold text-foreground`,children:`Set a new password`}),I(`p`,{className:`text-xs text-foreground-subtle`,children:t?`You must rotate the seed password before continuing.`:`Choose a new password for your account.`})]}),p&&I(`div`,{className:`rounded-md bg-danger/10 border border-danger/20 px-3 py-2 text-xs text-danger`,children:p}),M(`div`,{className:`space-y-1.5`,children:[I(`label`,{className:`text-xs font-medium text-foreground-subtle`,children:`New password`}),M(`div`,{className:`relative`,children:[I(`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}),I(`button`,{type:`button`,onClick:()=>f(!d),className:`absolute right-2.5 top-1/2 -translate-y-1/2 text-foreground-subtle hover:text-foreground transition-colors`,tabIndex:-1,children:I(d?oi:si,{className:`h-4 w-4`})})]})]}),M(`div`,{className:`space-y-1.5`,children:[I(`label`,{className:`text-xs font-medium text-foreground-subtle`,children:`Confirm new password`}),I(`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`})]}),I(`button`,{"data-testid":`change-password-submit`,type:`submit`,disabled:h.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:h.isPending?`Saving…`:`Save and continue`}),t&&I(`button`,{type:`button`,onClick:()=>{r(),a(`/login`,{replace:!0})},className:`w-full text-xs text-foreground-subtle hover:text-foreground transition-colors`,children:`Sign out instead`})]})]})})}P();function cs(){let{login:e,verifyTotp:t}=ba(),n=w(),r=G(),i=new URLSearchParams(window.location.search).get(`next`),[a,o]=k(``),[s,c]=k(``),[l,u]=k(!1),[d,f]=k(``),[p,m]=k(!1),[h,g]=k(`credentials`),[_,v]=k(``),[y,b]=k(``);return I(`div`,{className:`flex min-h-screen items-center justify-center bg-background p-4`,children:M(`div`,{className:`w-full max-w-sm`,children:[I(`div`,{className:`flex justify-center mb-8`,children:I(`img`,{src:n?.resolvedMode===`light`?`/brand/logo-horizontal-light.svg`:`/brand/logo-horizontal-dark.svg`,alt:`CamStack Admin`,className:`h-12`})}),h===`credentials`?M(`form`,{onSubmit:async t=>{t.preventDefault(),f(``),m(!0);try{let t=await e(a,s);if(t.kind===`totp-required`){v(t.challengeToken),g(`totp`);return}s===`changeme`?r(`/change-password`,{replace:!0}):i?window.location.assign(i):r(`/dashboard`,{replace:!0})}catch(e){f(e instanceof Error?e.message:`Login failed`)}finally{m(!1)}},className:`space-y-4 rounded-xl border border-border bg-surface p-6 shadow-xl shadow-black/10`,children:[d&&I(`div`,{className:`rounded-md bg-danger/10 border border-danger/20 px-3 py-2 text-xs text-danger`,children:d}),M(`div`,{className:`space-y-1.5`,children:[I(`label`,{className:`text-xs font-medium text-foreground-subtle`,children:`Username`}),I(`input`,{"data-testid":`login-username`,type:`text`,placeholder:`Username`,value:a,onChange:e=>o(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})]}),M(`div`,{className:`space-y-1.5`,children:[I(`label`,{className:`text-xs font-medium text-foreground-subtle`,children:`Password`}),M(`div`,{className:`relative`,children:[I(`input`,{"data-testid":`login-password`,type:l?`text`:`password`,placeholder:`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`}),I(`button`,{type:`button`,onClick:()=>u(!l),className:`absolute right-2.5 top-1/2 -translate-y-1/2 text-foreground-subtle hover:text-foreground transition-colors`,tabIndex:-1,children:I(l?oi:si,{className:`h-4 w-4`})})]})]}),I(`button`,{"data-testid":`login-submit`,type:`submit`,disabled:p||!a||!s,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:p?M(`span`,{className:`flex items-center justify-center gap-2`,children:[I(`span`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-primary-foreground/30 border-t-primary-foreground`}),`Logging in...`]}):`Log in`})]}):M(`form`,{onSubmit:async e=>{e.preventDefault(),f(``),m(!0);try{await t(_,y.trim()),i?window.location.assign(i):r(`/dashboard`,{replace:!0})}catch(e){f(e instanceof Error?e.message:`TOTP verification failed`),b(``)}finally{m(!1)}},className:`space-y-4 rounded-xl border border-border bg-surface p-6 shadow-xl shadow-black/10`,children:[M(`div`,{className:`flex items-center gap-2 pb-1 border-b border-border`,children:[I(Oi,{className:`h-4 w-4 text-primary`}),I(`div`,{className:`text-sm font-medium text-foreground`,children:`Two-factor authentication`})]}),M(`p`,{className:`text-xs text-foreground-subtle`,children:[`Enter the 6-digit code from your authenticator app to finish signing in as`,` `,I(`span`,{className:`font-mono text-foreground`,children:a}),`.`]}),d&&I(`div`,{className:`rounded-md bg-danger/10 border border-danger/20 px-3 py-2 text-xs text-danger`,children:d}),M(`div`,{className:`space-y-1.5`,children:[I(`label`,{className:`text-xs font-medium text-foreground-subtle`,children:`Authentication code`}),I(`input`,{"data-testid":`login-totp`,type:`text`,inputMode:`numeric`,autoComplete:`one-time-code`,placeholder:`123456`,value:y,onChange:e=>b(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})]}),I(`button`,{"data-testid":`login-totp-submit`,type:`submit`,disabled:p||y.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:p?M(`span`,{className:`flex items-center justify-center gap-2`,children:[I(`span`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-primary-foreground/30 border-t-primary-foreground`}),`Verifying...`]}):`Verify and sign in`}),M(`button`,{type:`button`,onClick:()=>{g(`credentials`),v(``),b(``),f(``)},className:`w-full flex items-center justify-center gap-1.5 text-xs text-foreground-subtle hover:text-foreground transition-colors`,children:[I(Gr,{className:`h-3 w-3`}),`Back to username + password`]})]}),h===`credentials`&&I(ls,{}),M(`p`,{className:`mt-6 text-center text-[10px] text-foreground-subtle/50`,children:[`CamStack v`,`1.1.18`]})]})})}function ls(){let e=(x.auth.listProviders.useQuery().data??[]).filter(e=>e.flowType===`redirect`);return e.length===0?null:M(`div`,{className:`mt-6 space-y-3`,children:[M(`div`,{className:`flex items-center gap-3`,children:[I(`div`,{className:`h-px flex-1 bg-border`}),I(`span`,{className:`text-[10px] uppercase tracking-wider text-foreground-subtle`,children:`Or continue with`}),I(`div`,{className:`h-px flex-1 bg-border`})]}),I(`div`,{className:`space-y-2`,children:e.map(e=>M(`a`,{href:`/addon/${encodeURIComponent(e.id)}/start`,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:[I(Ti,{className:`h-4 w-4 text-primary`}),e.name]},e.id))})]})}P();var us=F(()=>i(()=>import(`./Dashboard-99pp6GEH.js`).then(e=>({default:e.DashboardPage})),__vite__mapDeps([0,1,2,3,4,5]))),ds=F(()=>i(()=>import(`./Devices-D3L0VfVU.js`).then(e=>({default:e.DevicesPage})),__vite__mapDeps([6,1,2,3,4,7,8,9,10,11,12]))),fs=F(()=>i(()=>import(`./Integrations-DTGXl1Ur.js`).then(e=>({default:e.IntegrationsPage})),__vite__mapDeps([13,1,2,3,4,7,8,9,10,5,14,15,16,17,18,11,19,20,12]))),ps=F(()=>i(()=>import(`./IntegrationDetail-BrPHapeM.js`).then(e=>({default:e.IntegrationDetailPage})),__vite__mapDeps([21,1,2,3,4,7,8,9,10,5,14,15,16,17,18,22]))),ms=F(()=>i(()=>import(`./Pipeline-DHnGCOi7.js`).then(e=>({default:e.PipelinePage})),__vite__mapDeps([23,24,1,2,3,4,15,25,26,5,18,27,16,28,9,29,30,11,31,32,33,12,34]))),hs=F(()=>i(()=>import(`./DeviceDetail-D5VfOgmh.js`).then(e=>({default:e.DeviceDetailPage})),__vite__mapDeps([35,1,2,3,4,36,27,8,16,37,38,7,9,10,26,5,22,18,32,19,33,12]))),gs=F(()=>i(()=>import(`./Showroom-DD4nO3bB.js`).then(e=>({default:e.ShowroomPage})),__vite__mapDeps([39,36,27,8,16,37,7,9,10,18,1,2,3,4,19]))),_s=F(()=>i(()=>import(`./EmbedPlayerPage-CG-ioO0R.js`).then(e=>({default:e.EmbedPlayerPage})),__vite__mapDeps([40,1,2,3,4]))),vs=F(()=>i(()=>import(`./DetectionIntelligence-PgT0GEOx.js`).then(e=>({default:e.DetectionIntelligencePage})),__vite__mapDeps([41,1,2,3,4,26,5,37,29,30,11]))),ys=F(()=>i(()=>import(`./Addons-CCu9KkD9.js`).then(e=>({default:e.AddonsPage})),__vite__mapDeps([42,1,2,3,4,15,5,16,28,43,11,31,18,32]))),bs=F(()=>i(()=>import(`./MyAccess-BfsppvsN.js`).then(e=>({default:e.MyAccessPage})),__vite__mapDeps([44,1,2,3,4,45,46,47,26,11]))),xs=F(()=>i(()=>import(`./Logs-CpG3Oq7W.js`).then(e=>({default:e.LogsPage})),__vite__mapDeps([48,1,2,3,4,11]))),Ss=F(()=>i(()=>import(`./Identity-D1JnXext.js`).then(e=>({default:e.IdentityPage})),__vite__mapDeps([49,1,2,3,4,45,46,47,50,5,16,30,11,31,18,32,51]))),Cs=F(()=>i(()=>import(`./Network-CjIhXL12.js`).then(e=>({default:e.NetworkPage})),__vite__mapDeps([52,1,2,3,4,38,46,50,5,16,30,11,31,18,32,9,37,10,51]))),ws=F(()=>i(()=>import(`./Integrations-DayJSTiK.js`).then(e=>({default:e.IntegrationsPage})),__vite__mapDeps([53,1,2,3,4,26,50,5,16,30,11,31,18,32,8,10,51,17,20]))),Ts=F(()=>i(()=>import(`./Data-CjGyMZA8.js`).then(e=>({default:e.DataPage})),__vite__mapDeps([54,1,2,3,4,15,25,26,5,18,22,11,51,34]))),Es=F(()=>i(()=>import(`./Settings-JgMgqfxb.js`).then(e=>({default:e.SettingsPage})),__vite__mapDeps([55,1,2,3,4,11,31,18,32]))),Ds=F(()=>i(()=>import(`./Cluster-R47NhOdT.js`).then(e=>({default:e.ClusterPage})),__vite__mapDeps([56,24,1,2,3,4,26,8,16,22,9,43,31,18,32,34]))),Os=F(()=>i(()=>import(`./Capabilities-DC_JRuiW.js`).then(e=>({default:e.CapabilitiesPage})),__vite__mapDeps([57,1,2,3,4,45,11]))),ks=F(()=>i(()=>import(`./NotificationTargets-ip8v0_gg.js`).then(e=>({default:e.NotificationTargetsPage})),__vite__mapDeps([58,1,2,3,4,45,26,5,28,11]))),As=new Se({defaultOptions:{queries:{gcTime:0,staleTime:0,retry:!1,refetchOnWindowFocus:!1}}});function js({field:e,value:t,onChange:n,disabled:r}){return I(Gi,{field:e,value:t,onChange:n,disabled:r})}function Ms({field:e,value:t,onChange:n,disabled:r}){return I(Vi,{field:e,value:t,onChange:n,disabled:r})}var Ns={"pipeline-editor":js,"model-selector":Ms};function Ps({children:e}){let{user:t,logout:n}=ba(),[r,i]=k(0),a=D(t?.username??null);L(()=>{let e=t?.username??null;e!==a.current&&(a.current=e,da(),i(e=>e+1))},[t]);let o=N(()=>ua(),[r]),[s,c]=k(!1),[l,u]=k(null);return L(()=>{if(c(!1),u(null),!t){c(!0);return}let e=!1;return o.init().then(()=>{e||c(!0)},t=>{if(e)return;let r=t instanceof Error?t.message:String(t),i=t?.data?.code;if(i===`UNAUTHORIZED`||i===`FORBIDDEN`||/UNAUTHORIZED|FORBIDDEN/.test(r)){n();return}u(r),c(!0)}),()=>{e=!0}},[o,t,n]),Sa(O(()=>{da(),i(e=>e+1),As.invalidateQueries()},[])),I(De,{system:o,children:I(x.Provider,{client:o.trpcClient,queryClient:As,children:M(f,{children:[s?e:I(Fs,{}),s&&I(Xi,{}),l!==null&&s&&M(`div`,{className:`fixed bottom-4 right-4 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:[`Boot probe failed: `,l,`. Retrying in background.`]})]})})})}function Fs(){return I(`div`,{className:`flex min-h-screen items-center justify-center bg-background`,children:M(`div`,{className:`flex items-center gap-3 text-sm text-foreground-subtle`,children:[I(`span`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-primary/30 border-t-primary`}),`Connecting…`]})})}function Is(){return I(`div`,{className:`flex min-h-screen items-center justify-center bg-background`,children:I(`span`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-primary/30 border-t-primary`})})}function Ls(){return I(a,{defaultMode:`dark`,children:I(Ee,{client:As,children:I(ya,{children:I(Ps,{children:I(y,{children:M(d,{renderers:Ns,children:[I(gr,{children:I(ye,{fallback:I(Is,{}),children:M(Dn,{children:[I(q,{path:`/login`,element:I(cs,{})}),I(q,{path:`/change-password`,element:I($,{children:I(ss,{})})}),I(q,{path:`/showroom`,element:I(gs,{})}),I(q,{path:`/embed/player`,element:I(_s,{})}),M(q,{element:I($,{children:I(is,{})}),children:[I(q,{index:!0,element:I(K,{to:`/dashboard`,replace:!0})}),I(q,{path:`/access-denied`,element:I(as,{})}),I(q,{path:`/dashboard`,element:I(us,{})}),I(q,{path:`/devices`,element:I(ds,{})}),I(q,{path:`/cameras`,element:I(K,{to:`/devices`,replace:!0})}),I(q,{path:`/integrations`,element:I(fs,{})}),I(q,{path:`/integrations/:integrationId`,element:I(ps,{})}),I(q,{path:`/pipeline`,element:I(ms,{})}),I(q,{path:`/devices/:deviceId`,element:I(hs,{})}),I(q,{path:`/system/logs`,element:I($,{requireAdmin:!0,children:I(xs,{})})}),I(q,{path:`/system/addons`,element:I($,{requireAdmin:!0,children:I(ys,{})})}),I(q,{path:`/system/settings`,element:I($,{requireAdmin:!0,children:I(Es,{})})}),I(q,{path:`/system/cluster`,element:I($,{requireAdmin:!0,children:I(Ds,{})})}),I(q,{path:`/system/capabilities`,element:I($,{requireAdmin:!0,children:I(Os,{})})}),I(q,{path:`/system/notifications`,element:I($,{requireAdmin:!0,children:I(ks,{})})}),I(q,{path:`/system/identity`,element:I($,{requireAdmin:!0,children:I(Ss,{})})}),I(q,{path:`/system/my-access`,element:I(bs,{})}),I(q,{path:`/system/network`,element:I($,{requireAdmin:!0,children:I(Cs,{})})}),I(q,{path:`/system/integrations`,element:I($,{requireAdmin:!0,children:I(ws,{})})}),I(q,{path:`/system/data`,element:I($,{requireAdmin:!0,children:I(Ts,{})})}),I(q,{path:`/system/users`,element:I(K,{to:`/system/identity?tab=users`,replace:!0})}),I(q,{path:`/system/api-keys`,element:I(K,{to:`/system/identity?tab=api-keys`,replace:!0})}),I(q,{path:`/system/authentication`,element:I(K,{to:`/system/identity?tab=authentication`,replace:!0})}),I(q,{path:`/system/linked-sessions`,element:I(K,{to:`/system/identity?tab=linked-sessions`,replace:!0})}),I(q,{path:`/system/remote-access`,element:I(K,{to:`/system/network?tab=remote-access`,replace:!0})}),I(q,{path:`/system/turn`,element:I(K,{to:`/system/network?tab=turn`,replace:!0})}),I(q,{path:`/system/storage`,element:I(K,{to:`/system/data?tab=storage`,replace:!0})}),I(q,{path:`/system/backup`,element:I(K,{to:`/system/data?tab=backup`,replace:!0})}),I(q,{path:`/detection-intelligence`,element:I($,{requireAdmin:!0,children:I(vs,{})})}),I(q,{path:`/addon/:pagePath`,element:I($,{requireAdmin:!0,children:I(ka,{})})})]})]})})}),I(ta,{})]})})})})})})}var Rs={nav:{dashboard:`Dashboard`,integrations:`Integrations`,metrics:`Metrics`,camerasSection:`Input systems`},system:{title:`System`,addons:`Addons`,agents:`Agents`,processes:`Processes`,logs:`Logs`,users:`Users`,settings:`Settings`,repl:`REPL`,models:`Models`,integrations:`External systems`},common:{save:`Save`,cancel:`Cancel`,delete:`Delete`,enable:`Enable`,disable:`Disable`,edit:`Edit`,add:`Add`,remove:`Remove`,confirm:`Confirm`,close:`Close`,back:`Back`,next:`Next`,search:`Search`,filter:`Filter`,reset:`Reset`,apply:`Apply`,submit:`Submit`,loading:`Loading…`,error:`Error`,success:`Success`,warning:`Warning`,info:`Info`,noData:`No data available`,noResults:`No results found`,retry:`Retry`,refresh:`Refresh`,copy:`Copy`,copied:`Copied!`,yes:`Yes`,no:`No`},connection:{disconnected:`Server unreachable — reconnecting…`,connected:`Connected`},status:{online:`Online`,offline:`Offline`,connecting:`Connecting`,error:`Error`,disabled:`Disabled`,enabled:`Enabled`,active:`Active`,inactive:`Inactive`,running:`Running`,stopped:`Stopped`,pending:`Pending`,unknown:`Unknown`},auth:{login:`Login`,logout:`Logout`,username:`Username`,password:`Password`,signIn:`Sign In`,invalidCredentials:`Invalid username or password`},theme:{dark:`Dark`,light:`Light`,system:`System`},language:{select:`Language`,en:`English`,it:`Italian`},pages:{dashboard:{title:`Dashboard`,subtitle:`Overview of all devices and their status`},integrations:{title:`Integrations`,subtitle:`Manage camera sources and provider connections`},metrics:{title:`Metrics`,subtitle:`System performance and usage statistics`},agents:{title:`Agents`,subtitle:`Manage distributed processing agents`},addons:{title:`Addons`,subtitle:`Extend functionality with addon modules`},settings:{title:`Settings`,subtitle:`Configure system-wide preferences`},users:{title:`Users`,subtitle:`Manage user accounts and permissions`},logs:{title:`Logs`,subtitle:`View system and device logs`}},integrations:{preview:`Preview`,snapshotUnavailable:`Snapshot unavailable`,noSnapshot:`No snapshot`,lastSnapshot:`Last snapshot:`,offline:`Offline`,active:`Active`,available:`Available`,noDevices:`No devices.`,addFirstDevice:`Add your first device to get started.`,import:`+ Import`,noProviders:`No providers available. Install a provider addon.`,manage:`Manage`,integrationName:`Integration name`,integrationNamePlaceholder:`e.g. Garage Server`,connectionSuccess:`Connection successful!`,errorPrefix:`Error:`,back:`Back`,testing:`Testing...`,testConnection:`Test connection`,forward:`Next`,searchingDevices:`Searching for devices...`,foundDevices:`Found {{count}} devices. Select the ones to import.`,noDevicesFound:`No devices found.`,skip:`Skip`,importSelected:`Import selected`,newIntegration:`New Integration`,configureIntegration:`Configure Integration`,importDevices:`Import Devices`,addDevice:`Add device`,name:`Name`,namePlaceholder:`e.g. Entrance Camera`,snapshotUrlOptional:`Snapshot URL (optional)`,streamUrls:`Stream URLs`,addStream:`Add stream`,cancel:`Cancel`,saving:`Saving...`,save:`Save`,saveAndNew:`Save and new`,test:`Test`,stream:`Stream {{number}}:`,devices:`devices`,rediscover:`Rediscover`,config:`Config`,integrationNotFound:`Integration not found.`,configComingSoon:`Config coming soon.`,providerConfig:`Provider Config`,editConfig:`Edit configuration`,relinkBrokerHelp:`Choose the broker this integration connects through. Picking a different broker re-points it and restarts the addon.`,currentBroker:`Current broker`,relinkFailed:`Failed to update broker link.`,noBrokerKind:`This integration declares device-adoption but its addon manifest has no brokerKind.`}},zs={nav:{dashboard:`Dashboard`,integrations:`Integrazioni`,metrics:`Metriche`,camerasSection:`Sistemi in input`},system:{title:`Sistema`,addons:`Addon`,agents:`Agenti`,processes:`Processi`,logs:`Log`,users:`Utenti`,settings:`Impostazioni`,repl:`REPL`,models:`Modelli`,integrations:`Sistemi esterni`},common:{save:`Salva`,cancel:`Annulla`,delete:`Elimina`,enable:`Abilita`,disable:`Disabilita`,edit:`Modifica`,add:`Aggiungi`,remove:`Rimuovi`,confirm:`Conferma`,close:`Chiudi`,back:`Indietro`,next:`Avanti`,search:`Cerca`,filter:`Filtra`,reset:`Reimposta`,apply:`Applica`,submit:`Invia`,loading:`Caricamento…`,error:`Errore`,success:`Successo`,warning:`Avviso`,info:`Info`,noData:`Nessun dato disponibile`,noResults:`Nessun risultato trovato`,retry:`Riprova`,refresh:`Aggiorna`,copy:`Copia`,copied:`Copiato!`,yes:`Sì`,no:`No`},connection:{disconnected:`Server non raggiungibile — riconnessione in corso…`,connected:`Connesso`},status:{online:`Online`,offline:`Offline`,connecting:`Connessione in corso`,error:`Errore`,disabled:`Disabilitato`,enabled:`Abilitato`,active:`Attivo`,inactive:`Inattivo`,running:`In esecuzione`,stopped:`Fermato`,pending:`In attesa`,unknown:`Sconosciuto`},auth:{login:`Accesso`,logout:`Esci`,username:`Nome utente`,password:`Password`,signIn:`Accedi`,invalidCredentials:`Nome utente o password non validi`},theme:{dark:`Scuro`,light:`Chiaro`,system:`Sistema`},language:{select:`Lingua`,en:`Inglese`,it:`Italiano`},pages:{dashboard:{title:`Dashboard`,subtitle:`Panoramica di tutti i dispositivi e il loro stato`},integrations:{title:`Integrazioni`,subtitle:`Gestisci le sorgenti video e le connessioni ai provider`},metrics:{title:`Metriche`,subtitle:`Statistiche di prestazioni e utilizzo del sistema`},agents:{title:`Agenti`,subtitle:`Gestisci gli agenti di elaborazione distribuita`},addons:{title:`Addon`,subtitle:`Estendi le funzionalità con moduli addon`},settings:{title:`Impostazioni`,subtitle:`Configura le preferenze di sistema`},users:{title:`Utenti`,subtitle:`Gestisci gli account utente e i permessi`},logs:{title:`Log`,subtitle:`Visualizza i log di sistema e dei dispositivi`}},integrations:{preview:`Anteprima`,snapshotUnavailable:`Snapshot non disponibile`,noSnapshot:`Nessuno snapshot`,lastSnapshot:`Ultimo snapshot:`,offline:`Offline`,active:`Attivi`,available:`Disponibili`,noDevices:`Nessun dispositivo.`,addFirstDevice:`Aggiungi il primo dispositivo per iniziare.`,import:`+ Importa`,noProviders:`Nessun provider disponibile. Installa un addon provider.`,manage:`Gestisci`,integrationName:`Nome integrazione`,integrationNamePlaceholder:`es. Server Garage`,connectionSuccess:`Connessione riuscita!`,errorPrefix:`Errore:`,back:`Indietro`,testing:`Test...`,testConnection:`Test connessione`,forward:`Avanti`,searchingDevices:`Ricerca dispositivi in corso...`,foundDevices:`Trovati {{count}} dispositivi. Seleziona quelli da importare.`,noDevicesFound:`Nessun dispositivo trovato.`,skip:`Salta`,importSelected:`Importa selezionati`,newIntegration:`Nuova Integrazione`,configureIntegration:`Configura Integrazione`,importDevices:`Importa Dispositivi`,addDevice:`Aggiungi dispositivo`,name:`Nome`,namePlaceholder:`es. Camera Ingresso`,snapshotUrlOptional:`Snapshot URL (opzionale)`,streamUrls:`Stream URLs`,addStream:`Aggiungi stream`,cancel:`Annulla`,saving:`Salvataggio...`,save:`Salva`,saveAndNew:`Salva e nuova`,test:`Test`,stream:`Stream {{number}}:`,devices:`dispositivi`,rediscover:`Riscopri`,config:`Config`,integrationNotFound:`Integrazione non trovata.`,configComingSoon:`Config coming soon.`,providerConfig:`Provider Config`,editConfig:`Modifica configurazione`,relinkBrokerHelp:`Scegli il broker tramite cui questa integrazione si connette. Selezionando un broker diverso la si ricollega e riavvia l’addon.`,currentBroker:`Broker attuale`,relinkFailed:`Aggiornamento del collegamento al broker non riuscito.`,noBrokerKind:`Questa integrazione dichiara device-adoption ma il manifest dell’addon non ha un brokerKind.`}},Bs=`camstack_language`,Vs=localStorage.getItem(Bs)??`en`;Q.use(Vo).init({resources:{en:{translation:Rs},it:{translation:zs}},lng:Vs,fallbackLng:`en`,interpolation:{escapeValue:!1}}),Q.on(`languageChanged`,e=>{localStorage.setItem(Bs,e)}),P(),window.__camstackUiLibrary=oe,window.__camstackSdk=p,window.__camstackTypes=Me,je(document.getElementById(`root`)).render(I(pe,{children:I(Ls,{})}));export{ni as A,Wr as B,di as C,ai as D,oi as E,Zr as F,Er as G,vr as H,Yr as I,Jr as L,ei as M,$r as N,ii as O,Qr as P,Kr as R,fi as S,si as T,G as U,J as V,en as W,yi as _,Ni as a,mi as b,Ai as c,Ti as d,wi as f,bi as g,xi as h,Pi as i,ti as j,ri as k,Oi as l,Si as m,Go as n,Mi as o,Ci as p,ba as r,ji as s,Yo as t,Di as u,vi as v,ui as w,pi as x,hi as y,Gr as z};
|
|
4
|
+
Please change the parent <Route path="${e}"> to <Route path="${e===`/`?`*`:`${e}/*`}">.`)}let u=W(),d;if(t){let e=typeof t==`string`?Ue(t):t;R(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})):Ke(e,{pathname:p});z(l||m!=null,`No routes matched location "${d.pathname}${d.search}${d.hash}" `),z(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=dn(m&&m.map(e=>Object.assign({},e,{params:Object.assign({},o,e.params),pathname:V([c,r.encodeLocation?r.encodeLocation(e.pathname.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathname]),pathnameBase:e.pathnameBase===`/`?c:V([c,r.encodeLocation?r.encodeLocation(e.pathnameBase.replace(/%/g,`%25`).replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathnameBase])})),i,n);return t&&h?j(Bt.Provider,{value:{location:{pathname:`/`,search:``,hash:``,state:null,key:`default`,mask:void 0,...d},navigationType:`POP`}},h):h}function an(){let e=bn(),t=Tt(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=j(fe,null,j(`p`,null,`💿 Hey developer 👋`),j(`p`,null,`You can provide a way better UX than this when your app throws errors by providing your own `,j(`code`,{style:a},`ErrorBoundary`),` or`,` `,j(`code`,{style:a},`errorElement`),` prop on your route.`)),j(fe,null,j(`h2`,null,`Unexpected Application Error!`),j(`h3`,{style:{fontStyle:`italic`}},t),n?j(`pre`,{style:i},n):null,o)}var on=j(an,null),sn=class extends he{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=Kt(e.digest);t&&(e=t)}let t=e===void 0?this.props.children:j(U.Provider,{value:this.props.routeContext},j(Vt.Provider,{value:e,children:this.props.component}));return this.context?j(ln,{error:e},t):t}};sn.contextType=Ft;var cn=new WeakMap;function ln({children:e,error:t}){let{basename:n}=A(H);if(typeof t==`object`&&t&&`digest`in t&&typeof t.digest==`string`){let e=Gt(t.digest);if(e){let r=cn.get(t);if(r)throw r;let i=Ot(e.location,n),a=i.absoluteURL||i.to;if(Mt(a))throw Error(`Invalid redirect location`);if(Dt&&!cn.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 cn.set(t,n),n}return j(`meta`,{httpEquiv:`refresh`,content:`0;url=${a}`})}}return e}function un({routeContext:e,match:t,children:n}){let r=A(Nt);return r&&r.static&&r.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=t.route.id),j(U.Provider,{value:e},n)}function dn(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);R(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:Et(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||on,o&&(s<0&&c===0?(Cn(`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?j(n.route.Component,null):n.route.element?n.route.element:e,j(un,{match:n,routeContext:{outlet:e,matches:m,isDataRoute:r!=null},children:t})};return r&&(n.route.ErrorBoundary||n.route.errorElement||c===0)?j(sn,{location:r.location,revalidation:r.revalidation,component:f,error:u,children:h(),routeContext:{outlet:null,matches:m,isDataRoute:!0},onError:l}):h()},null)}function fn(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function pn(e){let t=A(Nt);return R(t,fn(e)),t}function mn(e){let t=A(Pt);return R(t,fn(e)),t}function hn(e){let t=A(U);return R(t,fn(e)),t}function gn(e){let t=hn(e),n=t.matches[t.matches.length-1];return R(n.route.id,`${e} can only be used on routes that contain a unique "id"`),n.route.id}function _n(){return gn(`useRouteId`)}function vn(){let e=mn(`useNavigation`);return N(()=>{let{matches:t,historyAction:n,...r}=e.navigation;return r},[e.navigation])}function yn(){let{matches:e,loaderData:t}=mn(`useMatches`);return N(()=>e.map(e=>Je(e,t)),[e,t])}function bn(){let e=A(Vt),t=mn(`useRouteError`),n=gn(`useRouteError`);return e===void 0?t.errors?.[n]:e}function xn(){let{router:e}=pn(`useNavigate`),t=gn(`useNavigate`),n=D(!1);return Xt(()=>{n.current=!0}),O(async(r,i={})=>{z(n.current,Yt),n.current&&(typeof r==`number`?await e.navigate(r):await e.navigate(r,{fromRouteId:t,...i}))},[e,t])}var Sn={};function Cn(e,t,n){!t&&!Sn[e]&&(Sn[e]=!0,z(!1,n))}me(wn);function wn({routes:e,manifest:t,future:n,state:r,isStatic:i,onError:a}){return rn(e,void 0,{manifest:t,state:r,isStatic:i,onError:a,future:n})}function K({to:e,replace:t,state:n,relative:r}){R(Jt(),`<Navigate> may be used only in the context of a <Router> component.`);let{static:i}=A(H);z(!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}=A(U),{pathname:o}=W(),s=G(),c=vt(e,_t(a),o,r===`path`),l=JSON.stringify(c);return L(()=>{s(JSON.parse(l),{replace:t,state:n,relative:r})},[s,l,r,t,n]),null}function Tn(e){return $t(e.context)}function q(e){R(!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 En({basename:e=`/`,children:t=null,location:n,navigationType:r=`POP`,navigator:i,static:a=!1,useTransitions:o}){R(!Jt(),`You cannot render a <Router> inside another <Router>. You should never have more than one in your app.`);let s=e.replace(/^\/*/,`/`),c=N(()=>({basename:s,navigator:i,static:a,useTransitions:o,future:{}}),[s,i,a,o]);typeof n==`string`&&(n=Ue(n));let{pathname:l=`/`,search:u=``,hash:d=``,state:f=null,key:p=`default`,mask:m}=n,h=N(()=>{let e=B(l,s);return e==null?null:{location:{pathname:e,search:u,hash:d,state:f,key:p,mask:m},navigationType:r}},[s,l,u,d,f,p,r,m]);return z(h!=null,`<Router basename="${s}"> is not able to match the URL "${l}${u}${d}" because it does not start with the basename, so the <Router> won't render anything.`),h==null?null:j(H.Provider,{value:c},j(Bt.Provider,{children:t,value:h}))}function Dn({children:e,location:t}){return nn(On(e),t)}function On(e,t=[]){let n=[];return E.forEach(e,(e,r)=>{if(!de(e))return;let i=[...t,r];if(e.type===fe){n.push.apply(n,On(e.props.children,i));return}R(e.type===q,`[${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>`),R(!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=On(e.props.children,i)),n.push(a)}),n}var kn=`get`,An=`application/x-www-form-urlencoded`;function jn(e){return typeof HTMLElement<`u`&&e instanceof HTMLElement}function Mn(e){return jn(e)&&e.tagName.toLowerCase()===`button`}function Nn(e){return jn(e)&&e.tagName.toLowerCase()===`form`}function Pn(e){return jn(e)&&e.tagName.toLowerCase()===`input`}function Fn(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function In(e,t){return e.button===0&&(!t||t===`_self`)&&!Fn(e)}function Ln(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 Rn(e,t){let n=Ln(e);return t&&t.forEach((e,r)=>{n.has(r)||t.getAll(r).forEach(e=>{n.append(r,e)})}),n}var zn=null;function Bn(){if(zn===null)try{new FormData(document.createElement(`form`),0),zn=!1}catch{zn=!0}return zn}var Vn=new Set([`application/x-www-form-urlencoded`,`multipart/form-data`,`text/plain`]);function Hn(e){return e!=null&&!Vn.has(e)?(z(!1,`"${e}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${An}"`),null):e}function Un(e,t){let n,r,i,a,o;if(Nn(e)){let o=e.getAttribute(`action`);r=o?B(o,t):null,n=e.getAttribute(`method`)||kn,i=Hn(e.getAttribute(`enctype`))||An,a=new FormData(e)}else if(Mn(e)||Pn(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?B(s,t):null,n=e.getAttribute(`formmethod`)||o.getAttribute(`method`)||kn,i=Hn(e.getAttribute(`formenctype`))||Hn(o.getAttribute(`enctype`))||An,a=new FormData(o,e),!Bn()){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(jn(e))throw Error(`Cannot submit element that is not <form>, <button>, or <input type="submit|image">`);else n=kn,r=null,i=An,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 Wn={"&":`\\u0026`,">":`\\u003e`,"<":`\\u003c`,"\u2028":`\\u2028`,"\u2029":`\\u2029`},Gn=/[&><\u2028\u2029]/g;function Kn(e){return e.replace(Gn,e=>Wn[e])}function qn(e,t){if(e===!1||e==null)throw Error(t)}function Jn(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&&B(i.pathname,t)===`/`?i.pathname=`${bt(t)}/_root.${r}`:i.pathname=`${bt(i.pathname)}.${r}`,i}async function Yn(e,t){if(e.id in t)return t[e.id];try{let n=await i(()=>import(e.module),[]);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 Xn(e){return e!=null&&typeof e.page==`string`}function Zn(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 Qn(e,t,n){return rr((await Promise.all(e.map(async e=>{let r=t.routes[e.route.id];if(r){let e=await Yn(r,n);return e.links?e.links():[]}return[]}))).flat(1).filter(Zn).filter(e=>e.rel===`stylesheet`||e.rel===`preload`).map(e=>e.rel===`stylesheet`?{...e,rel:`prefetch`,as:`style`}:{...e,rel:`prefetch`}))}function $n(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 er(e,t,{includeHydrateFallback:n}={}){return tr(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 tr(e){return[...new Set(e)]}function nr(e){let t={},n=Object.keys(e).sort();for(let r of n)t[r]=e[r];return t}function rr(e,t){let n=new Set,r=new Set(t);return e.reduce((e,i)=>{if(t&&!Xn(i)&&i.as===`script`&&i.href&&r.has(i.href))return e;let a=JSON.stringify(nr(i));return n.has(a)||(n.add(a),e.push({key:a,link:i})),e},[])}function ir(){let e=A(Nt);return qn(e,`You must render this element inside a <DataRouterContext.Provider> element`),e}function ar(){let e=A(Pt);return qn(e,`You must render this element inside a <DataRouterStateContext.Provider> element`),e}var or=T(void 0);or.displayName=`FrameworkContext`;function sr(){let e=A(or);return qn(e,`You must render this element inside a <HydratedRouter> element`),e}function cr(e,t){let n=A(or),[r,i]=k(!1),[a,o]=k(!1),{onFocus:s,onBlur:c,onMouseEnter:l,onMouseLeave:u,onTouchStart:d}=t,f=D(null);L(()=>{if(e===`render`&&o(!0),e===`viewport`){let e=new IntersectionObserver(e=>{e.forEach(e=>{o(e.isIntersecting)})},{threshold:.5});return f.current&&e.observe(f.current),()=>{e.disconnect()}}},[e]),L(()=>{if(r){let e=setTimeout(()=>{o(!0)},100);return()=>{clearTimeout(e)}}},[r]);let p=()=>{i(!0)},m=()=>{i(!1),o(!1)};return n?e===`intent`?[a,f,{onFocus:lr(s,p),onBlur:lr(c,m),onMouseEnter:lr(l,p),onMouseLeave:lr(u,m),onTouchStart:lr(d,p)}]:[a,f,{}]:[!1,f,{}]}function lr(e,t){return n=>{e&&e(n),n.defaultPrevented||t(n)}}function ur({page:e,...t}){let n=It(),{nonce:r}=sr(),{router:i}=ir(),a=N(()=>Ke(i.routes,e,i.basename),[i.routes,e,i.basename]);return a?(t.nonce==null&&r&&(t={...t,nonce:r}),j(n?fr:pr,{page:e,matches:a,...t})):null}function dr(e){let{manifest:t,routeModules:n}=sr(),[r,i]=k([]);return L(()=>{let r=!1;return Qn(e,t,n).then(e=>{r||i(e)}),()=>{r=!0}},[e,t,n]),r}function fr({page:e,matches:t,...n}){let r=W(),{future:i}=sr(),{basename:a}=ir();return j(fe,null,N(()=>{if(e===r.pathname+r.search+r.hash)return[];let n=Jn(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=>j(`link`,{key:e,rel:`prefetch`,as:`fetch`,href:e,...n})))}function pr({page:e,matches:t,...n}){let r=W(),{future:i,manifest:a,routeModules:o}=sr(),{basename:s}=ir(),{loaderData:c,matches:l}=ar(),u=N(()=>$n(e,t,l,a,r,`data`),[e,t,l,a,r]),d=N(()=>$n(e,t,l,a,r,`assets`),[e,t,l,a,r]),f=N(()=>{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=Jn(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]),p=N(()=>er(d,a),[d,a]),m=dr(d);return j(fe,null,f.map(e=>j(`link`,{key:e,rel:`prefetch`,as:`fetch`,href:e,...n})),p.map(e=>j(`link`,{key:e,rel:`modulepreload`,href:e,...n})),m.map(({key:e,link:t})=>j(`link`,{key:e,nonce:n.nonce,...t,crossOrigin:t.crossOrigin??n.crossOrigin})))}function mr(...e){return t=>{e.forEach(e=>{typeof e==`function`?e(t):e!=null&&(e.current=t)})}}var hr=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;try{hr&&(window.__reactRouterVersion=`7.18.0`)}catch{}function gr({basename:e,children:t,useTransitions:n,window:r}){let i=D();i.current??=Re({window:r,v5Compat:!0});let a=i.current,[o,s]=k({action:a.action,location:a.location}),c=O(e=>{n===!1?s(e):ge(()=>s(e))},[n]);return _e(()=>a.listen(c),[a,c]),j(En,{basename:e,children:t,location:o.location,navigationType:o.action,navigator:a,useTransitions:n})}function _r({basename:e,children:t,history:n,useTransitions:r}){let[i,a]=k({action:n.action,location:n.location}),o=O(e=>{r===!1?a(e):ge(()=>a(e))},[r]);return _e(()=>n.listen(o),[n,o]),j(En,{basename:e,children:t,location:i.location,navigationType:i.action,navigator:n,useTransitions:r})}_r.displayName=`unstable_HistoryRouter`;var vr=Ce(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:_}=A(H),v=typeof l==`string`&&Ne.test(l),y=Ot(l,h);l=y.to;let b=qt(l,{relative:r}),x=W(),S=null;if(o){let e=vt(o,[],x.mask?x.mask.pathname:`/`,!0);h!==`/`&&(e.pathname=e.pathname===`/`?h:V([h,e.pathname])),S=g.createHref(e)}let[ee,te,C]=cr(n,p),w=Tr(l,{replace:a,mask:o,state:s,target:c,preventScrollReset:u,relative:r,viewTransition:d,defaultShouldRevalidate:f,useTransitions:_});function ne(t){e&&e(t),t.defaultPrevented||w(t)}let re=!(y.isExternal||i),ie=j(`a`,{...p,...C,href:(re?S:void 0)||y.absoluteURL||b,onClick:re?ne:e,ref:mr(m,te),target:c,"data-discover":!v&&t===`render`?`true`:void 0});return ee&&!v?j(fe,null,ie,j(ur,{page:b})):ie});vr.displayName=`Link`;var yr=Ce(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=tn(a,{relative:c.relative}),d=W(),f=A(Pt),{navigator:p,basename:m}=A(H),h=f!=null&&Ir(u)&&o===!0,g=p.encodeLocation?p.encodeLocation(u).pathname:u.pathname,_=d.pathname,v=f&&f.navigation&&f.navigation.location?f.navigation.location.pathname:null;t||(_=_.toLowerCase(),v=v?v.toLowerCase():null,g=g.toLowerCase()),v&&m&&(v=B(v,m)||v);let y=g!==`/`&&g.endsWith(`/`)?g.length-1:g.length,b=_===g||!r&&_.startsWith(g)&&_.charAt(y)===`/`,x=v!=null&&(v===g||!r&&v.startsWith(g)&&v.charAt(g.length)===`/`),S={isActive:b,isPending:x,isTransitioning:h},ee=b?e:void 0,te;te=typeof n==`function`?n(S):[n,b?`active`:null,x?`pending`:null,h?`transitioning`:null].filter(Boolean).join(` `);let C=typeof i==`function`?i(S):i;return j(vr,{...c,"aria-current":ee,className:te,ref:l,style:C,to:a,viewTransition:o},typeof s==`function`?s(S):s)});yr.displayName=`NavLink`;var br=Ce(({discover:e=`render`,fetcherKey:t,navigate:n,reloadDocument:r,replace:i,state:a,method:o=kn,action:s,onSubmit:c,relative:l,preventScrollReset:u,viewTransition:d,defaultShouldRevalidate:f,...p},m)=>{let{useTransitions:h}=A(H),g=kr(),_=Ar(s,{relative:l}),v=o.toLowerCase()===`get`?`get`:`post`,y=typeof s==`string`&&Ne.test(s);return j(`form`,{ref:m,method:v,action:_,onSubmit:r?c:e=>{if(c&&c(e),e.defaultPrevented)return;e.preventDefault();let r=e.nativeEvent.submitter,s=r?.getAttribute(`formmethod`)||o,p=()=>g(r||e.currentTarget,{fetcherKey:t,method:s,navigate:n,replace:i,state:a,relative:l,preventScrollReset:u,viewTransition:d,defaultShouldRevalidate:f});h&&n!==!1?ge(()=>p()):p()},...p,"data-discover":!y&&e===`render`?`true`:void 0})});br.displayName=`Form`;function xr({getKey:e,storageKey:t,...n}){let r=A(or),{basename:i}=A(H),a=W(),o=yn();Pr({getKey:e,storageKey:t});let s=N(()=>{if(!r||!e)return null;let t=Nr(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),j(`script`,{...n,suppressHydrationWarning:!0,dangerouslySetInnerHTML:{__html:`(${c})(${Kn(JSON.stringify(t||jr))}, ${Kn(JSON.stringify(s))})`}})}xr.displayName=`ScrollRestoration`;function Sr(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Cr(e){let t=A(Nt);return R(t,Sr(e)),t}function wr(e){let t=A(Pt);return R(t,Sr(e)),t}function Tr(e,{target:t,replace:n,mask:r,state:i,preventScrollReset:a,relative:o,viewTransition:s,defaultShouldRevalidate:c,useTransitions:l}={}){let u=G(),d=W(),f=tn(e,{relative:o});return O(p=>{if(In(p,t)){p.preventDefault();let t=n===void 0?He(d)===He(f):n,m=()=>u(e,{replace:t,mask:r,state:i,preventScrollReset:a,relative:o,viewTransition:s,defaultShouldRevalidate:c});l?ge(()=>m()):m()}},[d,u,f,n,r,i,t,e,a,o,s,c,l])}function Er(e){z(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=D(Ln(e)),n=D(!1),r=W(),i=N(()=>Rn(r.search,n.current?null:t.current),[r.search]),a=G();return[i,O((e,t)=>{let r=Ln(typeof e==`function`?e(new URLSearchParams(i)):e);n.current=!0,a(`?`+r,t)},[a,i])]}var Dr=0,Or=()=>`__${String(++Dr)}__`;function kr(){let{router:e}=Cr(`useSubmit`),{basename:t}=A(H),n=_n(),r=e.fetch,i=e.navigate;return O(async(e,a={})=>{let{action:o,method:s,encType:c,formData:l,body:u}=Un(e,t);a.navigate===!1?await r(a.fetcherKey||Or(),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 Ar(e,{relative:t}={}){let{basename:n}=A(H),r=A(U);R(r,`useFormAction must be used inside a RouteContext`);let[i]=r.matches.slice(-1),a={...tn(e||`.`,{relative:t})},o=W();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:V([n,a.pathname])),He(a)}var jr=`react-router-scroll-positions`,Mr={};function Nr(e,t,n,r){let i=null;return r&&(i=r(n===`/`?e:{...e,pathname:B(e.pathname,n)||e.pathname},t)),i??=e.key,i}function Pr({getKey:e,storageKey:t}={}){let{router:n}=Cr(`useScrollRestoration`),{restoreScrollPosition:r,preventScrollReset:i}=wr(`useScrollRestoration`),{basename:a}=A(H),o=W(),s=yn(),c=vn();L(()=>(window.history.scrollRestoration=`manual`,()=>{window.history.scrollRestoration=`auto`}),[]),Fr(O(()=>{if(c.state===`idle`){let t=Nr(o,s,a,e);Mr[t]=window.scrollY}try{sessionStorage.setItem(t||jr,JSON.stringify(Mr))}catch(e){z(!1,`Failed to save scroll positions in sessionStorage, <ScrollRestoration /> will not work properly (${e}).`)}window.history.scrollRestoration=`auto`},[c.state,e,a,o,s,t])),typeof document<`u`&&(_e(()=>{try{let e=sessionStorage.getItem(t||jr);e&&(Mr=JSON.parse(e))}catch{}},[t]),_e(()=>{let t=n?.enableScrollRestoration(Mr,()=>window.scrollY,e?(t,n)=>Nr(t,n,a,e):void 0);return()=>t&&t()},[n,a,e]),_e(()=>{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{z(!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 Fr(e,t){let{capture:n}=t||{};L(()=>{let t=n==null?void 0:{capture:n};return window.addEventListener(`pagehide`,e,t),()=>{window.removeEventListener(`pagehide`,e,t)}},[e,n])}function Ir(e,{relative:t}={}){let n=A(Lt);R(n!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:r}=Cr(`useViewTransitionState`),i=tn(e,{relative:t});if(!n.isTransitioning)return!1;let a=B(n.currentLocation.pathname,r)||n.currentLocation.pathname,o=B(n.nextLocation.pathname,r)||n.nextLocation.pathname;return lt(i.pathname,o)!=null||lt(i.pathname,a)!=null}var Lr=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),Rr=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase()),zr=e=>{let t=Rr(e);return t.charAt(0).toUpperCase()+t.slice(1)},Br=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),Vr=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0},Hr={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`};P();var Ur=Ce(({color:e=`currentColor`,size:t=24,strokeWidth:n=2,absoluteStrokeWidth:r,className:i=``,children:a,iconNode:o,...s},c)=>j(`svg`,{ref:c,...Hr,width:t,height:t,stroke:e,strokeWidth:r?Number(n)*24/Number(t):n,className:Br(`lucide`,i),...!a&&!Vr(s)&&{"aria-hidden":`true`},...s},[...o.map(([e,t])=>j(e,t)),...Array.isArray(a)?a:[a]]));P();var J=(e,t)=>{let n=Ce(({className:n,...r},i)=>j(Ur,{ref:i,iconNode:t,className:Br(`lucide-${Lr(zr(e))}`,`lucide-${e}`,n),...r}));return n.displayName=zr(e),n},Wr=J(`activity`,[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2`,key:`169zse`}]]),Gr=J(`arrow-left`,[[`path`,{d:`m12 19-7-7 7-7`,key:`1l729n`}],[`path`,{d:`M19 12H5`,key:`x3x0zl`}]]),Kr=J(`bell`,[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}]]),qr=J(`bot`,[[`path`,{d:`M12 8V4H8`,key:`hb8ula`}],[`rect`,{width:`16`,height:`12`,x:`4`,y:`8`,rx:`2`,key:`enze0r`}],[`path`,{d:`M2 14h2`,key:`vft8re`}],[`path`,{d:`M20 14h2`,key:`4cs60a`}],[`path`,{d:`M15 13v2`,key:`1xurst`}],[`path`,{d:`M9 13v2`,key:`rq6x2g`}]]),Jr=J(`box`,[[`path`,{d:`M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z`,key:`hh9hay`}],[`path`,{d:`m3.3 7 8.7 5 8.7-5`,key:`g66t2b`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}]]),Yr=J(`camera`,[[`path`,{d:`M14.5 4h-5L7 7H4a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-3l-2.5-3z`,key:`1tc9qg`}],[`circle`,{cx:`12`,cy:`13`,r:`3`,key:`1vg3eu`}]]),Xr=J(`check-check`,[[`path`,{d:`M18 6 7 17l-5-5`,key:`116fxf`}],[`path`,{d:`m22 10-7.5 7.5L13 16`,key:`ke71qq`}]]),Zr=J(`check`,[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]),Qr=J(`chevron-down`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]),$r=J(`chevron-left`,[[`path`,{d:`m15 18-6-6 6-6`,key:`1wnfg3`}]]),ei=J(`chevron-right`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]),ti=J(`circle-alert`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`12`,x2:`12`,y1:`8`,y2:`12`,key:`1pkeuh`}],[`line`,{x1:`12`,x2:`12.01`,y1:`16`,y2:`16`,key:`4dfq90`}]]),ni=J(`circle-check`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),ri=J(`cpu`,[[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M17 20v2`,key:`1rnc9c`}],[`path`,{d:`M17 2v2`,key:`11trls`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M2 17h2`,key:`7oei6x`}],[`path`,{d:`M2 7h2`,key:`asdhe0`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`M20 17h2`,key:`1fpfkl`}],[`path`,{d:`M20 7h2`,key:`1o8tra`}],[`path`,{d:`M7 20v2`,key:`4gnj0m`}],[`path`,{d:`M7 2v2`,key:`1i4yhu`}],[`rect`,{x:`4`,y:`4`,width:`16`,height:`16`,rx:`2`,key:`1vbyd7`}],[`rect`,{x:`8`,y:`8`,width:`8`,height:`8`,rx:`1`,key:`z9xiuo`}]]),ii=J(`database`,[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`,key:`1wlel7`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`,key:`mv7ke4`}]]),ai=J(`external-link`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]),oi=J(`eye-off`,[[`path`,{d:`M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49`,key:`ct8e1f`}],[`path`,{d:`M14.084 14.158a3 3 0 0 1-4.242-4.242`,key:`151rxh`}],[`path`,{d:`M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143`,key:`13bj9a`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]),si=J(`eye`,[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`,key:`1nclc0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),ci=J(`gauge`,[[`path`,{d:`m12 14 4-4`,key:`9kzdfg`}],[`path`,{d:`M3.34 19a10 10 0 1 1 17.32 0`,key:`19p75a`}]]),li=J(`git-branch`,[[`line`,{x1:`6`,x2:`6`,y1:`3`,y2:`15`,key:`17qcm7`}],[`circle`,{cx:`18`,cy:`6`,r:`3`,key:`1h7g24`}],[`circle`,{cx:`6`,cy:`18`,r:`3`,key:`fqmcym`}],[`path`,{d:`M18 9a9 9 0 0 1-9 9`,key:`n2h4wq`}]]),ui=J(`globe`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20`,key:`13o1zl`}],[`path`,{d:`M2 12h20`,key:`9i4pu4`}]]),di=J(`info`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]),fi=J(`layout-dashboard`,[[`rect`,{width:`7`,height:`9`,x:`3`,y:`3`,rx:`1`,key:`10lvy0`}],[`rect`,{width:`7`,height:`5`,x:`14`,y:`3`,rx:`1`,key:`16une8`}],[`rect`,{width:`7`,height:`9`,x:`14`,y:`12`,rx:`1`,key:`1hutg5`}],[`rect`,{width:`7`,height:`5`,x:`3`,y:`16`,rx:`1`,key:`ldoo1y`}]]),pi=J(`loader-circle`,[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]]),mi=J(`lock`,[[`rect`,{width:`18`,height:`11`,x:`3`,y:`11`,rx:`2`,ry:`2`,key:`1w4ew1`}],[`path`,{d:`M7 11V7a5 5 0 0 1 10 0v4`,key:`fwvmzm`}]]),hi=J(`log-out`,[[`path`,{d:`m16 17 5-5-5-5`,key:`1bji2h`}],[`path`,{d:`M21 12H9`,key:`dn1m92`}],[`path`,{d:`M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4`,key:`1uf3rs`}]]),gi=J(`menu`,[[`path`,{d:`M4 12h16`,key:`1lakjw`}],[`path`,{d:`M4 18h16`,key:`19g7jn`}],[`path`,{d:`M4 6h16`,key:`1o0s65`}]]),_i=J(`monitor`,[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`,key:`48i651`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`,key:`1svkeh`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`,key:`vw1qmm`}]]),vi=J(`moon`,[[`path`,{d:`M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z`,key:`a7tn18`}]]),yi=J(`network`,[[`rect`,{x:`16`,y:`16`,width:`6`,height:`6`,rx:`1`,key:`4q2zg0`}],[`rect`,{x:`2`,y:`16`,width:`6`,height:`6`,rx:`1`,key:`8cvhb9`}],[`rect`,{x:`9`,y:`2`,width:`6`,height:`6`,rx:`1`,key:`1egb70`}],[`path`,{d:`M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3`,key:`1jsf9p`}],[`path`,{d:`M12 12V8`,key:`2874zd`}]]),bi=J(`plug`,[[`path`,{d:`M12 22v-5`,key:`1ega77`}],[`path`,{d:`M9 8V2`,key:`14iosj`}],[`path`,{d:`M15 8V2`,key:`18g5xt`}],[`path`,{d:`M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z`,key:`osxo6l`}]]),xi=J(`puzzle`,[[`path`,{d:`M15.39 4.39a1 1 0 0 0 1.68-.474 2.5 2.5 0 1 1 3.014 3.015 1 1 0 0 0-.474 1.68l1.683 1.682a2.414 2.414 0 0 1 0 3.414L19.61 15.39a1 1 0 0 1-1.68-.474 2.5 2.5 0 1 0-3.014 3.015 1 1 0 0 1 .474 1.68l-1.683 1.682a2.414 2.414 0 0 1-3.414 0L8.61 19.61a1 1 0 0 0-1.68.474 2.5 2.5 0 1 1-3.014-3.015 1 1 0 0 0 .474-1.68l-1.683-1.682a2.414 2.414 0 0 1 0-3.414L4.39 8.61a1 1 0 0 1 1.68.474 2.5 2.5 0 1 0 3.014-3.015 1 1 0 0 1-.474-1.68l1.683-1.682a2.414 2.414 0 0 1 3.414 0z`,key:`w46dr5`}]]),Si=J(`scan-face`,[[`path`,{d:`M3 7V5a2 2 0 0 1 2-2h2`,key:`aa7l1z`}],[`path`,{d:`M17 3h2a2 2 0 0 1 2 2v2`,key:`4qcy5o`}],[`path`,{d:`M21 17v2a2 2 0 0 1-2 2h-2`,key:`6vwrx8`}],[`path`,{d:`M7 21H5a2 2 0 0 1-2-2v-2`,key:`ioqczr`}],[`path`,{d:`M8 14s1.5 2 4 2 4-2 4-2`,key:`1y1vjs`}],[`path`,{d:`M9 9h.01`,key:`1q5me6`}],[`path`,{d:`M15 9h.01`,key:`x1ddxp`}]]),Ci=J(`scroll-text`,[[`path`,{d:`M15 12h-5`,key:`r7krc0`}],[`path`,{d:`M15 8h-5`,key:`1khuty`}],[`path`,{d:`M19 17V5a2 2 0 0 0-2-2H4`,key:`zz82l3`}],[`path`,{d:`M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3`,key:`1ph1d7`}]]),wi=J(`settings`,[[`path`,{d:`M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z`,key:`1qme2f`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),Ti=J(`shield-check`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),Ei=J(`shield-x`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`m14.5 9.5-5 5`,key:`17q4r4`}],[`path`,{d:`m9.5 9.5 5 5`,key:`18nt4w`}]]),Di=J(`sliders-horizontal`,[[`line`,{x1:`21`,x2:`14`,y1:`4`,y2:`4`,key:`obuewd`}],[`line`,{x1:`10`,x2:`3`,y1:`4`,y2:`4`,key:`1q6298`}],[`line`,{x1:`21`,x2:`12`,y1:`12`,y2:`12`,key:`1iu8h1`}],[`line`,{x1:`8`,x2:`3`,y1:`12`,y2:`12`,key:`ntss68`}],[`line`,{x1:`21`,x2:`16`,y1:`20`,y2:`20`,key:`14d8ph`}],[`line`,{x1:`12`,x2:`3`,y1:`20`,y2:`20`,key:`m0wm8r`}],[`line`,{x1:`14`,x2:`14`,y1:`2`,y2:`6`,key:`14e1ph`}],[`line`,{x1:`8`,x2:`8`,y1:`10`,y2:`14`,key:`1i6ji0`}],[`line`,{x1:`16`,x2:`16`,y1:`18`,y2:`22`,key:`1lctlv`}]]),Oi=J(`smartphone`,[[`rect`,{width:`14`,height:`20`,x:`5`,y:`2`,rx:`2`,ry:`2`,key:`1yt0o3`}],[`path`,{d:`M12 18h.01`,key:`mhygvu`}]]),ki=J(`sun`,[[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`m4.93 4.93 1.41 1.41`,key:`149t6j`}],[`path`,{d:`m17.66 17.66 1.41 1.41`,key:`ptbguv`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`m6.34 17.66-1.41 1.41`,key:`1m8zz5`}],[`path`,{d:`m19.07 4.93-1.41 1.41`,key:`1shlcs`}]]),Ai=J(`terminal`,[[`path`,{d:`M12 19h8`,key:`baeox8`}],[`path`,{d:`m4 17 6-6-6-6`,key:`1yngyt`}]]),ji=J(`trash-2`,[[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6`,key:`4alrt4`}],[`path`,{d:`M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2`,key:`v07s0e`}],[`line`,{x1:`10`,x2:`10`,y1:`11`,y2:`17`,key:`1uufr5`}],[`line`,{x1:`14`,x2:`14`,y1:`11`,y2:`17`,key:`xtxkd`}]]),Mi=J(`triangle-alert`,[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),Ni=J(`wifi-off`,[[`path`,{d:`M12 20h.01`,key:`zekei9`}],[`path`,{d:`M8.5 16.429a5 5 0 0 1 7 0`,key:`1bycff`}],[`path`,{d:`M5 12.859a10 10 0 0 1 5.17-2.69`,key:`1dl1wf`}],[`path`,{d:`M19 12.859a10 10 0 0 0-2.007-1.523`,key:`4k23kn`}],[`path`,{d:`M2 8.82a15 15 0 0 1 4.177-2.643`,key:`1grhjp`}],[`path`,{d:`M22 8.82a15 15 0 0 0-11.288-3.764`,key:`z3jwby`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]),Pi=J(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]),Fi=J(`wrench`,[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z`,key:`cbrjhi`}]]);P();function Ii({tabs:e,active:t,onChange:n}){return I(`div`,{className:`flex rounded-lg border border-border bg-surface p-0.5 gap-0.5`,children:e.map(e=>I(`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 Li(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 Ri(e){return`${e.inputSize.width}x${e.inputSize.height}`}function zi(e){return e.formats?Object.keys(e.formats).filter(t=>e.formats[t]!==void 0):[]}function Bi({entry:e,selected:t,onSelect:n,disabled:r}){let i=Li(e),a=Ri(e),o=zi(e);return M(`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:[I(`div`,{className:`flex items-start justify-between gap-2`,children:M(`div`,{className:`flex-1 min-w-0`,children:[M(`div`,{className:`flex items-center gap-2`,children:[I(`span`,{className:`text-xs font-semibold text-foreground truncate`,children:e.name}),t&&I(Zr,{className:`h-3.5 w-3.5 text-primary shrink-0`})]}),I(`p`,{className:`text-[10px] text-foreground-subtle mt-0.5 line-clamp-2`,children:e.description})]})}),M(`div`,{className:`flex items-center gap-3 mt-2 flex-wrap`,children:[M(`span`,{className:`inline-flex items-center gap-1 text-[10px] text-foreground-subtle`,children:[I(ri,{className:`h-3 w-3`}),a]}),i&&I(`span`,{className:`text-[10px] text-foreground-subtle`,children:i}),o.length>0&&I(`div`,{className:`flex gap-1`,children:o.map(e=>I(`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&&M(`span`,{className:`text-[10px] text-foreground-subtle`,children:[e.labels.length,` label`,e.labels.length===1?``:`s`]})]})]})}function Vi({field:e,value:t,onChange:n,disabled:r}){let i=e.catalog??[],a=i.length>0,o=e.allowCustomPath!==!1||e.allowCustom===!0,s=[...a?[{id:`catalog`,label:`Models (${i.length})`}]:[],...o?[{id:`custom`,label:`Custom Path`}]:[]],[c,l]=k(a?`catalog`:`custom`),u=t==null?``:String(t);return M(`div`,{className:`space-y-3`,children:[s.length>1&&I(Ii,{tabs:s,active:c,onChange:l}),c===`catalog`&&a&&I(`div`,{className:`space-y-1.5 max-h-[320px] overflow-y-auto pr-1`,children:i.map(t=>I(Bi,{entry:t,selected:u===t.id,onSelect:()=>n(t.id),disabled:r||e.disabled},t.id))}),c===`catalog`&&!a&&M(`div`,{className:`rounded-md border border-info/30 bg-info/5 px-3 py-2 flex items-start gap-2`,children:[I(di,{className:`h-3.5 w-3.5 text-info shrink-0 mt-0.5`}),I(`p`,{className:`text-[11px] text-foreground-subtle leading-relaxed`,children:`No predefined models available. Use the Custom Path tab to specify a model file path or URL.`})]}),c===`custom`&&o&&M(`div`,{className:`space-y-2`,children:[I(`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:`Enter path like /data/models/custom.onnx or https://...`,value:u,disabled:r||e.disabled,onChange:e=>n(e.target.value)}),e.acceptFormats&&e.acceptFormats.length>0&&M(`p`,{className:`text-[10px] text-foreground-subtle`,children:[`Accepted formats: `,e.acceptFormats.join(`, `)]})]}),(e.compatibilityNote||e.conversionGuideUrl)&&M(`div`,{className:`flex items-start justify-between gap-3 pt-1`,children:[e.compatibilityNote&&M(`p`,{className:`flex items-start gap-1 text-[10px] text-foreground-subtle`,children:[I(di,{className:`h-3 w-3 mt-0.5 shrink-0`}),e.compatibilityNote]}),e.conversionGuideUrl&&M(`a`,{href:e.conversionGuideUrl,target:`_blank`,rel:`noopener noreferrer`,className:`flex items-center gap-1 text-[11px] text-primary hover:underline shrink-0`,children:[`How to convert your model`,I(ai,{className:`h-3 w-3`})]})]})]})}function Hi(e){let t=Oe();return be({queryKey:[`field-resolver`,e?.capName??`<none>`,e?.methodName??`<none>`,e?.input??{}],enabled:!!e,queryFn:async()=>{if(!e)throw Error(`useFieldResolver: resolver is null (enabled guard should have prevented this)`);let n=e=>e!==null&&(typeof e==`object`||typeof e==`function`),r=Reflect.get(t.trpcClient,e.capName);if(!n(r))throw Error(`useFieldResolver: no cap namespace '${e.capName}' on the tRPC client`);let i=Reflect.get(r,e.methodName);if(!n(i))throw Error(`useFieldResolver: no method '${e.methodName}' on cap '${e.capName}'`);let a=Reflect.get(i,`query`);if(typeof a!=`function`)throw Error(`useFieldResolver: '${e.capName}.${e.methodName}' has no .query() (resolvers must be query methods, not mutations)`);return await a(e.input??{})}})}P();function Ui(e){return typeof e==`string`&&e.length>0&&e!==`undefined`&&e!==`null`}function Wi(e={}){let t=we(),n=u(void 0,{enabled:e.enabled??!0}),r=N(()=>(n.data??[]).filter(e=>Ui(e.nodeId)),[n.data]),i=O(()=>{t.invalidateQueries({queryKey:[`pipelineOrchestrator`,`listAgentSettings`]})},[t]);return{agents:r,isLoading:n.isLoading,isError:n.isError,error:n.error,refetch:()=>{n.refetch()},invalidate:i}}P();function Gi({field:e,disabled:t}){let n=we(),r=e.deviceId,i=Hi(e.catalogResolver),a=h({agentNodeId:e.nodeId}),o=b({deviceId:r}),s=ie({onSuccess:()=>{n.invalidateQueries({queryKey:[[`pipelineOrchestrator`,`getCameraSettings`]]}),n.invalidateQueries({queryKey:[[`deviceManager`]]})}}),c=i.data,u=a.data??null,d=o.data??null,f=N(()=>c?qi(c,u,d):[],[c,u,d]),p=N(()=>{if(!u)return{};let e={};for(let[t,n]of Object.entries(u.addonDefaults))e[t]=n.enabled;return e},[u]);return i.error?M(`div`,{className:`text-xs text-red-400`,children:[`Failed to load pipeline catalog for `,I(`code`,{children:e.nodeId}),`:`,` `,String(i.error.message??i.error)]}):i.isLoading||!c||a.isLoading?M(`div`,{className:`text-xs text-foreground-subtle animate-pulse`,children:[`Loading pipeline for `,e.nodeId,`…`]}):M(`div`,{className:`col-span-full space-y-4`,children:[M(`div`,{className:`flex items-center gap-2 text-[11px] text-foreground-subtle`,children:[`Agent: `,I(`span`,{className:`text-foreground`,children:e.nodeId}),M(`span`,{className:`ml-2`,children:[`Engine:`,` `,I(`span`,{className:`text-foreground font-mono`,children:`${c.selectedEngine.runtime}/${c.selectedEngine.backend}`})]}),M(`span`,{className:`ml-auto text-[10px]`,children:[`Model + settings edited on Pipeline → `,e.nodeId,`.`]})]}),I(l,{schema:c,steps:f,onChange:()=>{},templates:[],selectedTemplateId:null,onSelectTemplate:()=>{},onSaveTemplate:()=>{},onUpdateTemplate:()=>{},onDeleteTemplate:()=>{},readOnly:t===!0,hideTemplates:!0,toggleMode:`threeState`,hideModelAndSettings:!0,overrides:d?.stepToggles??{},onOverrideChange:(e,t)=>s.mutate({deviceId:r,addonId:e,enabled:t}),inheritedEnabledByAddon:p}),I(Ki,{deviceId:r,currentAgentNodeId:e.nodeId,catalog:c,pipelineByAgent:d?.pipelineByAgent??{},disabled:t===!0})]})}function Ki({deviceId:e,currentAgentNodeId:t,catalog:n,pipelineByAgent:r,disabled:i}){let a=we(),[o,s]=k(!1),[c,u]=k(t),{agents:d}=Wi({enabled:o}),f=m({deviceId:e,agentNodeId:c},{enabled:o}),p=se({onSuccess:()=>{a.invalidateQueries({queryKey:[[`pipelineOrchestrator`,`getCameraSettings`]]}),a.invalidateQueries({queryKey:[[`pipelineOrchestrator`,`resolvePipeline`]]})}}),h=r[c]??null,g=d,_=N(()=>h?Ji(h.steps,n):[],[h,n]);return M(`section`,{className:`rounded-lg border border-border bg-surface overflow-hidden`,children:[M(`button`,{type:`button`,onClick:()=>s(e=>!e),className:`w-full px-4 py-2 flex items-center gap-2 hover:bg-surface-hover`,children:[I(o?Qr:ei,{className:`h-3 w-3`}),I(`h3`,{className:`text-xs font-semibold text-foreground uppercase tracking-wide`,children:`Advanced — custom pipeline per agent`}),I(`span`,{className:`ml-auto text-[10px] text-foreground-subtle`,children:Object.keys(r).length>0?`${Object.keys(r).length} override(s) active`:`None configured`})]}),o&&M(`div`,{className:`border-t border-border px-4 py-3 space-y-3`,children:[M(`div`,{className:`flex items-center gap-2 text-xs`,children:[I(`span`,{className:`text-foreground-subtle`,children:`Agent:`}),M(`select`,{value:c,disabled:i,onChange:e=>u(e.target.value),className:`rounded border border-border bg-surface-hover px-2 py-1 text-xs text-foreground focus:outline-none focus:border-primary`,children:[typeof t==`string`&&t.length>0&&t!==`undefined`&&M(`option`,{value:t,children:[t,` (current)`]}),g.filter(e=>e.nodeId!==t).map(e=>I(`option`,{value:e.nodeId,children:e.nodeId},e.nodeId))]}),r[c]&&M(`button`,{type:`button`,onClick:()=>{window.confirm(`Remove custom pipeline override for ${c}? The camera will revert to the agent default + step toggles.`)&&p.mutate({deviceId:e,agentNodeId:c,pipeline:null})},disabled:i||p.isPending,className:`ml-auto inline-flex items-center gap-1 px-2 py-1 text-[11px] text-red-400 hover:bg-red-500/10 rounded disabled:opacity-50`,children:[I(ji,{className:`h-3 w-3`}),`Remove override`]})]}),h?I(l,{schema:n,steps:_,onChange:t=>{let n=h?.audio??null;p.mutate({deviceId:e,agentNodeId:c,pipeline:{steps:Yi(t),audio:n?{modelId:n.modelId,enabled:n.enabled}:null}})},templates:[],selectedTemplateId:null,onSelectTemplate:()=>{},onSaveTemplate:()=>{},onUpdateTemplate:()=>{},onDeleteTemplate:()=>{},readOnly:i,hideTemplates:!0}):M(`div`,{className:`text-xs text-foreground-subtle space-y-2`,children:[M(`p`,{children:[`No custom pipeline for `,I(`code`,{children:c}),`. The camera uses the agent's default + step toggles.`]}),I(`button`,{type:`button`,onClick:()=>{let t=f.data;t&&p.mutate({deviceId:e,agentNodeId:c,pipeline:{steps:t.steps,audio:t.audio?{modelId:t.audio.modelId,enabled:t.audio.enabled}:null}})},disabled:i||p.isPending||!f.data,className:`inline-flex items-center gap-1 px-3 py-1.5 text-xs font-medium rounded bg-primary/15 text-primary hover:bg-primary/25 disabled:opacity-50`,children:`Create wholesale override from current default`})]})]})]})}function qi(e,t,n){let r=t=>{for(let n of e.slots)for(let e of n.addons)if(e.id===t)return e;return null},i=e=>{let r=t?.addonDefaults[e.id],i=r?.enabled??e.enabledByDefault??!0,a=n?.stepToggles?.[e.id],o=a===void 0?i:a;return{addonId:e.id,addonName:e.name,slot:e.slot,inputClasses:[...e.inputClasses],outputClasses:[...e.outputClasses],enabled:o,modelId:r?.modelId??e.defaultModelId,children:[],...r?.settings&&Object.keys(r.settings).length>0?{settings:r.settings}:{}}},a=new Map;for(let t of e.slots)for(let e of t.addons)a.set(e.id,i(e));let o=[],s=new Set;for(let[e,t]of a){let n=r(e);n&&n.inputClasses.length===0&&(o.push(t),s.add(e))}let c=!0;for(;c;){c=!1;for(let[e,t]of a){if(s.has(e))continue;let n=r(e);if(n)for(let[i,o]of a){if(i===e)continue;let a=r(i);if(a&&s.has(i)&&a.outputClasses.some(e=>n.inputClasses.includes(e))){o.children.push(t),s.add(e),c=!0;break}}}}return o}function Ji(e,t){let n=new Map;for(let e of t.slots)for(let t of e.addons)n.set(t.id,t);let r=e=>{let t=n.get(e.addonId);return{addonId:e.addonId,addonName:t?.name??e.addonId,slot:t?.slot??`detector`,inputClasses:t?.inputClasses?[...t.inputClasses]:[],outputClasses:t?.outputClasses?[...t.outputClasses]:[],enabled:e.enabled,modelId:e.modelId,children:(e.children??[]).map(r),...e.settings?{settings:{...e.settings}}:{}}};return[...e].map(r)}function Yi(e){let t=e=>({addonId:e.addonId,modelId:e.modelId,enabled:e.enabled,children:e.children.map(t),...e.settings?{settings:{...e.settings}}:{}});return e.map(t)}P();function Xi(){let e=Oe(),t=we(),[n,r]=k(()=>e.isConnected()?`connected`:`disconnected`),i=D(!1),[a,o]=k(0),[s,c]=k([]);L(()=>e.subscribeConnectionEvents(e=>{r(t=>(t!==`connected`&&e===`connected`&&i.current&&o(e=>e+1),e!==`connected`&&(i.current=!0),e))}),[e]),L(()=>{a!==0&&t.invalidateQueries({queryKey:[[`addons`,`getLastRestart`]]})},[a,t]);let{data:l}=ae(void 0,{enabled:n===`connected`&&a>0,staleTime:0,refetchOnMount:!1,refetchOnWindowFocus:!1}),u=D(null);return L(()=>{if(l==null||l.requestedAt===u.current)return;u.current=l.requestedAt;let e=Qi(l);c(t=>[...t,e]);let t=window.setTimeout(()=>{c(t=>t.filter(t=>t.id!==e.id))},6e3);return()=>window.clearTimeout(t)},[l]),I(xe,{children:s.length>0&&I(Zi,{toasts:s})})}function Zi({toasts:e}){return I(`div`,{className:`fixed top-4 right-4 z-50 flex flex-col gap-2 max-w-sm w-full pointer-events-none`,children:e.map(e=>M(`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:[I(ni,{className:`w-4 h-4 shrink-0 mt-0.5 text-green-400`}),M(`div`,{children:[I(`div`,{className:`text-[11px] font-semibold text-foreground`,children:e.title}),I(`div`,{className:`text-[10px] text-foreground-subtle mt-0.5`,children:e.message})]})]},e.id))})}function Qi(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:`Framework updated`,message:`${e.packageName} is now ${n}.`}}return{id:t,title:`Server restarted`,message:e.requestedBy===void 0?`Manual restart completed.`:`Manual restart by ${e.requestedBy} completed.`}}P();var $i={info:{bg:`bg-blue-500/10`,border:`border-blue-500/30`,icon:di},warning:{bg:`bg-orange-500/10`,border:`border-orange-500/30`,icon:Mi},critical:{bg:`bg-red-500/10`,border:`border-red-500/30`,icon:ti}};function ea({toast:e,onDismiss:t}){let n=$i[e.severity]??$i.info,r=n.icon;return L(()=>{let n=e.duration??5e3;if(n<=0)return;let r=setTimeout(()=>t(e.id),n);return()=>clearTimeout(r)},[e.id,e.duration,t]),M(`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:[I(r,{className:`h-4 w-4 shrink-0 mt-0.5 text-foreground-subtle`}),M(`div`,{className:`flex-1 min-w-0`,children:[I(`div`,{className:`text-xs font-semibold text-foreground`,children:e.title}),I(`div`,{className:`text-[11px] text-foreground-subtle mt-0.5`,children:e.message})]}),I(`button`,{type:`button`,onClick:()=>t(e.id),className:`shrink-0 p-0.5 rounded hover:bg-surface-hover transition-colors`,children:I(Pi,{className:`h-3.5 w-3.5 text-foreground-subtle`})})]})}function ta(){let[e,t]=k([]),n=O(e=>{t(t=>t.filter(t=>t.id!==e))},[]);return ue(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:I(`div`,{className:`fixed bottom-4 right-4 z-50 flex flex-col gap-2 max-w-sm w-full pointer-events-none`,children:e.map(e=>I(`div`,{className:`pointer-events-auto`,children:I(ea,{toast:e,onDismiss:n})},e.id))})}P();var na=`disconnected`,ra=new Set;function ia(){for(let e of ra)e()}function aa(e){na!==e&&(na=e,ia())}function oa(e){return ra.add(e),()=>{ra.delete(e)}}function sa(){return na}function ca(){return Te(oa,sa,sa)}var la=null;function ua(){if(!la){let e=window.location.origin;la=c({serverUrl:e,token:localStorage.getItem(`camstack_admin_token`)??void 0,onConnectionChange:e=>aa(e)})}return la}function da(){la?.close(),la=null}function fa(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:ha(n.scopes)}}catch{return null}}var pa=new Set([`view`,`create`,`delete`]),ma=new Set([`category`,`capability`,`addon`,`device`]);function ha(e){if(!Array.isArray(e))return[];let t=[];for(let n of e){if(typeof n!=`object`||!n)continue;let e=n,{type:r,access:i}=e;if(typeof r!=`string`||!ma.has(r)||!Array.isArray(i))continue;let a=i.filter(e=>typeof e==`string`&&pa.has(e));if(a.length===0)continue;if(r===`device`){let n=e.targets;if(!Array.isArray(n))continue;let r=n.filter(e=>typeof e==`string`&&e.length>0);if(r.length===0)continue;t.push({type:`device`,targets:r,access:a});continue}let o=e.target;if(typeof o==`string`)if(r===`category`){if(o!==`device`&&o!==`system`)continue;t.push({type:r,target:o,access:a})}else r===`capability`?t.push({type:r,target:o,access:a}):t.push({type:`addon`,target:o,access:a})}return t}function ga(e){let t=fa(e);return t?t.exp*1e3<Date.now():!0}P();var _a=`changeme`,va=T(null);function ya({children:e}){let[t,n]=k(null),[r,i]=k(!0),[a,o]=k(!1);L(()=>{if(typeof window<`u`&&window.location.hash.startsWith(`#token=`)){let e=new URLSearchParams(window.location.hash.slice(1)).get(`token`);e&&(localStorage.setItem(`camstack_admin_token`,e),window.history.replaceState({},``,`/admin`))}let e=localStorage.getItem(`camstack_admin_token`);if(!e){i(!1);return}if(ga(e)){localStorage.removeItem(`camstack_admin_token`),i(!1);return}let t=fa(e);if(!t){localStorage.removeItem(`camstack_admin_token`),i(!1);return}ua().trpcClient.system.info.query().then(()=>n(t)).catch(e=>{let r=e?.data?.code;r===`UNAUTHORIZED`||r===`FORBIDDEN`?(localStorage.removeItem(`camstack_admin_token`),da()):n(t)}).finally(()=>i(!1))},[]);let s=O(async(e,t)=>{let r=await ua().login(e,t);if(r.requiresTotp===!0)return{kind:`totp-required`,challengeToken:r.token};let i=r.token;return localStorage.setItem(`camstack_admin_token`,i),await fetch(`/api/auth/session`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({token:i})}).catch(()=>{}),da(),n(fa(i)),o(t===_a),{kind:`ok`}},[]),c=O(async(e,t)=>{let r=(await ua().loginVerifyTotp(e,t)).token;localStorage.setItem(`camstack_admin_token`,r),await fetch(`/api/auth/session`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({token:r})}).catch(()=>{}),da(),n(fa(r)),o(!1)},[]),l=O(()=>{localStorage.removeItem(`camstack_admin_token`),fetch(`/api/auth/session`,{method:`DELETE`}).catch(()=>{}),da(),n(null),o(!1)},[]),u=O(()=>{o(!1)},[]);return I(va.Provider,{value:{user:t,loading:r,mustChangePassword:a,login:s,verifyTotp:c,logout:l,clearMustChangePassword:u},children:e})}function ba(){let e=A(va);if(!e)throw Error(`useAuth must be used within AuthProvider`);return e}P();var xa=3e4;function Sa(e){let t=D(e);t.current=e,L(()=>{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>=xa&&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)}},[])}P();function Ca(e){let t=new Set,n=[];for(let r of e){let e=`${r.addonId}::${r.page.id}`;t.has(e)||(t.add(e),n.push({id:r.page.id,addonId:r.addonId,label:r.page.label,icon:r.page.icon,path:r.page.path,remoteName:r.page.remoteName,bundle:r.page.bundle,bundleUrl:r.bundleUrl}))}return n}var wa=new Map,Ta=new Map,Ea=new Set;function Da(e){return!e||typeof e!=`object`?!1:typeof e.default==`function`}async function Oa(e,t){let i=wa.get(e);if(i)return i;let a=Ta.get(e);if(a)return a;Ea.has(e)||(_(),r([{name:e,entry:t,type:`module`}],{force:!1}),Ea.add(e));let o=n(`${e}/page`).then(n=>{if(!Da(n))throw Error(`Addon page remote ${e} (${t}) does not expose a default React component on './page'`);return wa.set(e,n.default),Ta.delete(e),n.default}).catch(t=>{throw Ta.delete(e),t});return Ta.set(e,o),o}function ka(){let{pagePath:e}=en(),t=Oe(),{data:n}=S(void 0),r=N(()=>n?Ca(n):void 0,[n]),i=r?.find(t=>t.path===`/addon/${e}`),[a,o]=k(null),[s,c]=k(null);return L(()=>{if(!i)return;c(null),o(null);let e=!1;return Oa(i.remoteName,i.bundleUrl).then(t=>{e||o(()=>t)}).catch(t=>{e||c(`Failed to load addon page: ${t instanceof Error?t.message:String(t)}`)}),()=>{e=!0}},[i]),r?i?s?I(`div`,{className:`flex items-center justify-center h-full text-red-400 text-sm`,children:s}):a?I(a,{trpc:t.trpcClient,theme:{isDark:document.documentElement.classList.contains(`dark`)},navigate:e=>{window.location.href=e}}):I(`div`,{className:`flex items-center justify-center h-full`,children:I(`div`,{className:`animate-spin h-6 w-6 border-2 border-primary border-t-transparent rounded-full`})}):I(`div`,{className:`flex items-center justify-center h-full text-foreground-subtle`,children:`Addon page not found`}):I(`div`,{className:`flex items-center justify-center h-full`,children:I(`div`,{className:`animate-spin h-6 w-6 border-2 border-primary border-t-transparent rounded-full`})})}ke();var Y=e=>typeof e==`string`,Aa=()=>{let e,t,n=new Promise((n,r)=>{e=n,t=r});return n.resolve=e,n.reject=t,n},ja=e=>e==null?``:String(e),Ma=(e,t,n)=>{e.forEach(e=>{t[e]&&(n[e]=t[e])})},Na=/###/g,Pa=e=>e&&e.includes(`###`)?e.replace(Na,`.`):e,Fa=e=>!e||Y(e),Ia=(e,t,n)=>{let r=Y(t)?t.split(`.`):t,i=0;for(;i<r.length-1;){if(Fa(e))return{};let t=Pa(r[i]);!e[t]&&n&&(e[t]=new n),e=Object.prototype.hasOwnProperty.call(e,t)?e[t]:{},++i}return Fa(e)?{}:{obj:e,k:Pa(r[i])}},La=(e,t,n)=>{let{obj:r,k:i}=Ia(e,t,Object);if(r!==void 0||t.length===1){r[i]=n;return}let a=t[t.length-1],o=t.slice(0,t.length-1),s=Ia(e,o,Object);for(;s.obj===void 0&&o.length;)a=`${o[o.length-1]}.${a}`,o=o.slice(0,o.length-1),s=Ia(e,o,Object),s?.obj&&s.obj[`${s.k}.${a}`]!==void 0&&(s.obj=void 0);s.obj[`${s.k}.${a}`]=n},Ra=(e,t,n,r)=>{let{obj:i,k:a}=Ia(e,t,Object);i[a]=i[a]||[],i[a].push(n)},za=(e,t)=>{let{obj:n,k:r}=Ia(e,t);if(n&&Object.prototype.hasOwnProperty.call(n,r))return n[r]},Ba=(e,t,n)=>{let r=za(e,n);return r===void 0?za(t,n):r},Va=(e,t,n)=>{for(let r in t)r!==`__proto__`&&r!==`constructor`&&(r in e?Y(e[r])||e[r]instanceof String||Y(t[r])||t[r]instanceof String?n&&(e[r]=t[r]):Va(e[r],t[r],n):e[r]=t[r]);return e},X=e=>e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,`\\$&`),Ha={"&":`&`,"<":`<`,">":`>`,'"':`"`,"'":`'`,"/":`/`},Ua=e=>Y(e)?e.replace(/[&<>"'\/]/g,e=>Ha[e]):e,Wa=class{constructor(e){this.capacity=e,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(e){let t=this.regExpMap.get(e);if(t!==void 0)return t;let n=new RegExp(e);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(e,n),this.regExpQueue.push(e),n}},Ga=[` `,`,`,`?`,`!`,`;`],Ka=new Wa(20),qa=(e,t,n)=>{t||=``,n||=``;let r=Ga.filter(e=>!t.includes(e)&&!n.includes(e));if(r.length===0)return!0;let i=Ka.getRegExp(`(${r.map(e=>e===`?`?`\\?`:e).join(`|`)})`),a=!i.test(e);if(!a){let t=e.indexOf(n);t>0&&!i.test(e.substring(0,t))&&(a=!0)}return a},Ja=(e,t,n=`.`)=>{if(!e)return;if(e[t])return Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0;let r=t.split(n),i=e;for(let e=0;e<r.length;){if(!i||typeof i!=`object`)return;let t,a=``;for(let o=e;o<r.length;++o)if(o!==e&&(a+=n),a+=r[o],t=i[a],t!==void 0){if([`string`,`number`,`boolean`].includes(typeof t)&&o<r.length-1)continue;e+=o-e+1;break}i=t}return i},Ya=e=>e?.replace(/_/g,`-`),Xa={type:`logger`,log(e){this.output(`log`,e)},warn(e){this.output(`warn`,e)},error(e){this.output(`error`,e)},output(e,t){console?.[e]?.apply?.(console,t)}},Z=new class e{constructor(e,t={}){this.init(e,t)}init(e,t={}){this.prefix=t.prefix||`i18next:`,this.logger=e||Xa,this.options=t,this.debug=t.debug}log(...e){return this.forward(e,`log`,``,!0)}warn(...e){return this.forward(e,`warn`,``,!0)}error(...e){return this.forward(e,`error`,``)}deprecate(...e){return this.forward(e,`warn`,`WARNING DEPRECATED: `,!0)}forward(e,t,n,r){return r&&!this.debug?null:(e=e.map(e=>Y(e)?e.replace(/[\r\n\x00-\x1F\x7F]/g,` `):e),Y(e[0])&&(e[0]=`${n}${this.prefix} ${e[0]}`),this.logger[t](e))}create(t){return new e(this.logger,{prefix:`${this.prefix}:${t}:`,...this.options})}clone(t){return t||=this.options,t.prefix=t.prefix||this.prefix,new e(this.logger,t)}},Za=class{constructor(){this.observers={}}on(e,t){return e.split(` `).forEach(e=>{this.observers[e]||(this.observers[e]=new Map);let n=this.observers[e].get(t)||0;this.observers[e].set(t,n+1)}),this}off(e,t){if(this.observers[e]){if(!t){delete this.observers[e];return}this.observers[e].delete(t)}}once(e,t){let n=(...r)=>{t(...r),this.off(e,n)};return this.on(e,n),this}emit(e,...t){this.observers[e]&&Array.from(this.observers[e].entries()).forEach(([e,n])=>{for(let r=0;r<n;r++)e(...t)}),this.observers[`*`]&&Array.from(this.observers[`*`].entries()).forEach(([n,r])=>{for(let i=0;i<r;i++)n(e,...t)})}},Qa=class extends Za{constructor(e,t={ns:[`translation`],defaultNS:`translation`}){super(),this.data=e||{},this.options=t,this.options.keySeparator===void 0&&(this.options.keySeparator=`.`),this.options.ignoreJSONStructure===void 0&&(this.options.ignoreJSONStructure=!0)}addNamespaces(e){this.options.ns.includes(e)||this.options.ns.push(e)}removeNamespaces(e){let t=this.options.ns.indexOf(e);t>-1&&this.options.ns.splice(t,1)}getResource(e,t,n,r={}){let i=r.keySeparator===void 0?this.options.keySeparator:r.keySeparator,a=r.ignoreJSONStructure===void 0?this.options.ignoreJSONStructure:r.ignoreJSONStructure,o;e.includes(`.`)?o=e.split(`.`):(o=[e,t],n&&(Array.isArray(n)?o.push(...n):Y(n)&&i?o.push(...n.split(i)):o.push(n)));let s=za(this.data,o);return!s&&!t&&!n&&e.includes(`.`)&&(e=o[0],t=o[1],n=o.slice(2).join(`.`)),s||!a||!Y(n)?s:Ja(this.data?.[e]?.[t],n,i)}addResource(e,t,n,r,i={silent:!1}){let a=i.keySeparator===void 0?this.options.keySeparator:i.keySeparator,o=[e,t];n&&(o=o.concat(a?n.split(a):n)),e.includes(`.`)&&(o=e.split(`.`),r=t,t=o[1]),this.addNamespaces(t),La(this.data,o,r),i.silent||this.emit(`added`,e,t,n,r)}addResources(e,t,n,r={silent:!1}){for(let r in n)(Y(n[r])||Array.isArray(n[r]))&&this.addResource(e,t,r,n[r],{silent:!0});r.silent||this.emit(`added`,e,t,n)}addResourceBundle(e,t,n,r,i,a={silent:!1,skipCopy:!1}){let o=[e,t];e.includes(`.`)&&(o=e.split(`.`),r=n,n=t,t=o[1]),this.addNamespaces(t);let s=za(this.data,o)||{};a.skipCopy||(n=JSON.parse(JSON.stringify(n))),r?Va(s,n,i):s={...s,...n},La(this.data,o,s),a.silent||this.emit(`added`,e,t,n)}removeResourceBundle(e,t){this.hasResourceBundle(e,t)&&delete this.data[e][t],this.removeNamespaces(t),this.emit(`removed`,e,t)}hasResourceBundle(e,t){return this.getResource(e,t)!==void 0}getResourceBundle(e,t){return t||=this.options.defaultNS,this.getResource(e,t)}getDataByLanguage(e){return this.data[e]}hasLanguageSomeTranslations(e){let t=this.getDataByLanguage(e);return!!(t&&Object.keys(t)||[]).find(e=>t[e]&&Object.keys(t[e]).length>0)}toJSON(){return this.data}},$a={processors:{},addPostProcessor(e){this.processors[e.name]=e},handle(e,t,n,r,i){return e.forEach(e=>{t=this.processors[e]?.process(t,n,r,i)??t}),t}},eo=Symbol(`i18next/PATH_KEY`);function to(){let e=[],t=Object.create(null),n;return t.get=(r,i)=>(n?.revoke?.(),i===eo?e:(e.push(i),n=Proxy.revocable(r,t),n.proxy)),Proxy.revocable(Object.create(null),t).proxy}function no(e,t){let{[eo]:n}=e(to()),r=t?.keySeparator??`.`,i=t?.nsSeparator??`:`,a=t?.enableSelector===`strict`;if(n.length>1&&i){let e=t?.ns,o=a?Array.isArray(e)?e:e?[e]:null:Array.isArray(e)?e:null;if(o&&(a?o:o.length>1?o.slice(1):[]).includes(n[0]))return`${n[0]}${i}${n.slice(1).join(r)}`}return n.join(r)}var ro=e=>!Y(e)&&typeof e!=`boolean`&&typeof e!=`number`,io=class e extends Za{constructor(e,t={}){super(),Ma([`resourceStore`,`languageUtils`,`pluralResolver`,`interpolator`,`backendConnector`,`i18nFormat`,`utils`],e,this),this.options=t,this.options.keySeparator===void 0&&(this.options.keySeparator=`.`),this.logger=Z.create(`translator`),this.checkedLoadedFor={}}changeLanguage(e){e&&(this.language=e)}exists(e,t={interpolation:{}}){let n={...t};if(e==null)return!1;let r=this.resolve(e,n);if(r?.res===void 0)return!1;let i=ro(r.res);return!(n.returnObjects===!1&&i)}extractFromKey(e,t){let n=t.nsSeparator===void 0?this.options.nsSeparator:t.nsSeparator;n===void 0&&(n=`:`);let r=t.keySeparator===void 0?this.options.keySeparator:t.keySeparator,i=t.ns||this.options.defaultNS||[],a=n&&e.includes(n),o=!this.options.userDefinedKeySeparator&&!t.keySeparator&&!this.options.userDefinedNsSeparator&&!t.nsSeparator&&!qa(e,n,r);if(a&&!o){let t=e.match(this.interpolator.nestingRegexp);if(t&&t.length>0)return{key:e,namespaces:Y(i)?[i]:i};let a=e.split(n);(n!==r||n===r&&this.options.ns.includes(a[0]))&&(i=a.shift()),e=a.join(r)}return{key:e,namespaces:Y(i)?[i]:i}}translate(t,n,r){let i=typeof n==`object`?{...n}:n;if(typeof i!=`object`&&this.options.overloadTranslationOptionHandler&&(i=this.options.overloadTranslationOptionHandler(arguments)),typeof i==`object`&&(i={...i}),i||={},t==null)return``;typeof t==`function`&&(t=no(t,{...this.options,...i})),Array.isArray(t)||(t=[String(t)]),t=t.map(e=>typeof e==`function`?no(e,{...this.options,...i}):String(e));let a=i.returnDetails===void 0?this.options.returnDetails:i.returnDetails,o=i.keySeparator===void 0?this.options.keySeparator:i.keySeparator,{key:s,namespaces:c}=this.extractFromKey(t[t.length-1],i),l=c[c.length-1],u=i.nsSeparator===void 0?this.options.nsSeparator:i.nsSeparator;u===void 0&&(u=`:`);let d=i.lng||this.language,f=i.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(d?.toLowerCase()===`cimode`)return f?a?{res:`${l}${u}${s}`,usedKey:s,exactUsedKey:s,usedLng:d,usedNS:l,usedParams:this.getUsedParamsDetails(i)}:`${l}${u}${s}`:a?{res:s,usedKey:s,exactUsedKey:s,usedLng:d,usedNS:l,usedParams:this.getUsedParamsDetails(i)}:s;let p=this.resolve(t,i),m=p?.res,h=p?.usedKey||s,g=p?.exactUsedKey||s,_=[`[object Number]`,`[object Function]`,`[object RegExp]`],v=i.joinArrays===void 0?this.options.joinArrays:i.joinArrays,y=!this.i18nFormat||this.i18nFormat.handleAsObject,b=i.count!==void 0&&!Y(i.count),x=e.hasDefaultValue(i),S=b?this.pluralResolver.getSuffix(d,i.count,i):``,ee=i.ordinal&&b?this.pluralResolver.getSuffix(d,i.count,{ordinal:!1}):``,te=b&&!i.ordinal&&i.count===0,C=te&&i[`defaultValue${this.options.pluralSeparator}zero`]||i[`defaultValue${S}`]||i[`defaultValue${ee}`]||i.defaultValue,w=m;y&&!m&&x&&(w=C);let ne=ro(w),re=Object.prototype.toString.apply(w);if(y&&w&&ne&&!_.includes(re)&&!(Y(v)&&Array.isArray(w))){if(!i.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn(`accessing an object - but returnObjects options is not enabled!`);let e=this.options.returnedObjectHandler?this.options.returnedObjectHandler(h,w,{...i,ns:c}):`key '${s} (${this.language})' returned an object instead of string.`;return a?(p.res=e,p.usedParams=this.getUsedParamsDetails(i),p):e}if(o){let e=Array.isArray(w),t=e?[]:{},n=e?g:h;for(let e in w)if(Object.prototype.hasOwnProperty.call(w,e)){let r=`${n}${o}${e}`;x&&!m?t[e]=this.translate(r,{...i,defaultValue:ro(C)?C[e]:void 0,joinArrays:!1,ns:c}):t[e]=this.translate(r,{...i,joinArrays:!1,ns:c}),t[e]===r&&(t[e]=w[e])}m=t}}else if(y&&Y(v)&&Array.isArray(m))m=m.join(v),m&&=this.extendTranslation(m,t,i,r);else{let e=!1,n=!1;!this.isValidLookup(m)&&x&&(e=!0,m=C),this.isValidLookup(m)||(n=!0,m=s);let a=(i.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&n?void 0:m,c=x&&C!==m&&this.options.updateMissing;if(n||e||c){if(this.logger.log(c?`updateKey`:`missingKey`,d,l,b&&!c?`${s}${this.pluralResolver.getSuffix(d,i.count,i)}`:s,c?C:m),o){let e=this.resolve(s,{...i,keySeparator:!1});e&&e.res&&this.logger.warn(`Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.`)}let e=[],t=this.languageUtils.getFallbackCodes(this.options.fallbackLng,i.lng||this.language);if(this.options.saveMissingTo===`fallback`&&t&&t[0])for(let n=0;n<t.length;n++)e.push(t[n]);else this.options.saveMissingTo===`all`?e=this.languageUtils.toResolveHierarchy(i.lng||this.language):e.push(i.lng||this.language);let n=(e,t,n)=>{let r=x&&n!==m?n:a;this.options.missingKeyHandler?this.options.missingKeyHandler(e,l,t,r,c,i):this.backendConnector?.saveMissing&&this.backendConnector.saveMissing(e,l,t,r,c,i),this.emit(`missingKey`,e,l,t,m)};this.options.saveMissing&&(this.options.saveMissingPlurals&&b?e.forEach(e=>{let t=this.pluralResolver.getSuffixes(e,i);te&&i[`defaultValue${this.options.pluralSeparator}zero`]&&!t.includes(`${this.options.pluralSeparator}zero`)&&t.push(`${this.options.pluralSeparator}zero`),t.forEach(t=>{n([e],s+t,i[`defaultValue${t}`]||C)})}):n(e,s,C))}m=this.extendTranslation(m,t,i,p,r),n&&m===s&&this.options.appendNamespaceToMissingKey&&(m=`${l}${u}${s}`),(n||e)&&this.options.parseMissingKeyHandler&&(m=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${l}${u}${s}`:s,e?m:void 0,i))}return a?(p.res=m,p.usedParams=this.getUsedParamsDetails(i),p):m}extendTranslation(e,t,n,r,i){if(this.i18nFormat?.parse)e=this.i18nFormat.parse(e,{...this.options.interpolation.defaultVariables,...n},n.lng||this.language||r.usedLng,r.usedNS,r.usedKey,{resolved:r});else if(!n.skipInterpolation){n.interpolation&&this.interpolator.init({...n,interpolation:{...this.options.interpolation,...n.interpolation}});let a=Y(e)&&(n?.interpolation?.skipOnVariables===void 0?this.options.interpolation.skipOnVariables:n.interpolation.skipOnVariables),o;if(a){let t=e.match(this.interpolator.nestingRegexp);o=t&&t.length}let s=n.replace&&!Y(n.replace)?n.replace:n;if(this.options.interpolation.defaultVariables&&(s={...this.options.interpolation.defaultVariables,...s}),e=this.interpolator.interpolate(e,s,n.lng||this.language||r.usedLng,n),a){let t=e.match(this.interpolator.nestingRegexp),r=t&&t.length;o<r&&(n.nest=!1)}!n.lng&&r&&r.res&&(n.lng=this.language||r.usedLng),n.nest!==!1&&(e=this.interpolator.nest(e,(...e)=>i?.[0]===e[0]&&!n.context?(this.logger.warn(`It seems you are nesting recursively key: ${e[0]} in key: ${t[0]}`),null):this.translate(...e,t),n)),n.interpolation&&this.interpolator.reset()}let a=n.postProcess||this.options.postProcess,o=Y(a)?[a]:a;return e!=null&&o?.length&&n.applyPostProcessor!==!1&&(e=$a.handle(o,e,t,this.options&&this.options.postProcessPassResolved?{i18nResolved:{...r,usedParams:this.getUsedParamsDetails(n)},...n}:n,this)),e}resolve(e,t={}){let n,r,i,a,o;return Y(e)&&(e=[e]),Array.isArray(e)&&(e=e.map(e=>typeof e==`function`?no(e,{...this.options,...t}):e)),e.forEach(e=>{if(this.isValidLookup(n))return;let s=this.extractFromKey(e,t),c=s.key;r=c;let l=s.namespaces;this.options.fallbackNS&&(l=l.concat(this.options.fallbackNS));let u=t.count!==void 0&&!Y(t.count),d=u&&!t.ordinal&&t.count===0,f=t.context!==void 0&&(Y(t.context)||typeof t.context==`number`)&&t.context!==``,p=t.lngs?t.lngs:this.languageUtils.toResolveHierarchy(t.lng||this.language,t.fallbackLng);l.forEach(e=>{this.isValidLookup(n)||(o=e,!this.checkedLoadedFor[`${p[0]}-${e}`]&&this.utils?.hasLoadedNamespace&&!this.utils?.hasLoadedNamespace(o)&&(this.checkedLoadedFor[`${p[0]}-${e}`]=!0,this.logger.warn(`key "${r}" for languages "${p.join(`, `)}" won't get resolved as namespace "${o}" was not yet loaded`,`This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!`)),p.forEach(r=>{if(this.isValidLookup(n))return;a=r;let o=[c];if(this.i18nFormat?.addLookupKeys)this.i18nFormat.addLookupKeys(o,c,r,e,t);else{let e;u&&(e=this.pluralResolver.getSuffix(r,t.count,t));let n=`${this.options.pluralSeparator}zero`,i=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(u&&(t.ordinal&&e.startsWith(i)&&o.push(c+e.replace(i,this.options.pluralSeparator)),o.push(c+e),d&&o.push(c+n)),f){let r=`${c}${this.options.contextSeparator||`_`}${t.context}`;o.push(r),u&&(t.ordinal&&e.startsWith(i)&&o.push(r+e.replace(i,this.options.pluralSeparator)),o.push(r+e),d&&o.push(r+n))}}let s;for(;s=o.pop();)this.isValidLookup(n)||(i=s,n=this.getResource(r,e,s,t))}))})}),{res:n,usedKey:r,exactUsedKey:i,usedLng:a,usedNS:o}}isValidLookup(e){return e!==void 0&&!(!this.options.returnNull&&e===null)&&!(!this.options.returnEmptyString&&e===``)}getResource(e,t,n,r={}){return this.i18nFormat?.getResource?this.i18nFormat.getResource(e,t,n,r):this.resourceStore.getResource(e,t,n,r)}getUsedParamsDetails(e={}){let t=[`defaultValue`,`ordinal`,`context`,`replace`,`lng`,`lngs`,`fallbackLng`,`ns`,`keySeparator`,`nsSeparator`,`returnObjects`,`returnDetails`,`joinArrays`,`postProcess`,`interpolation`],n=e.replace&&!Y(e.replace),r=n?e.replace:e;if(n&&e.count!==void 0&&(r.count=e.count),this.options.interpolation.defaultVariables&&(r={...this.options.interpolation.defaultVariables,...r}),!n){r={...r};for(let e of t)delete r[e]}return r}static hasDefaultValue(e){for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&t.startsWith(`defaultValue`)&&e[t]!==void 0)return!0;return!1}},ao=class{constructor(e){this.options=e,this.supportedLngs=this.options.supportedLngs||!1,this.logger=Z.create(`languageUtils`)}getScriptPartFromCode(e){if(e=Ya(e),!e||!e.includes(`-`))return null;let t=e.split(`-`);return t.length===2||(t.pop(),t[t.length-1].toLowerCase()===`x`)?null:this.formatLanguageCode(t.join(`-`))}getLanguagePartFromCode(e){if(e=Ya(e),!e||!e.includes(`-`))return e;let t=e.split(`-`);return this.formatLanguageCode(t[0])}formatLanguageCode(e){if(Y(e)&&e.includes(`-`)){let t;try{t=Intl.getCanonicalLocales(e)[0]}catch{}return t&&this.options.lowerCaseLng&&(t=t.toLowerCase()),t||(this.options.lowerCaseLng?e.toLowerCase():e)}return this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():e}isSupportedCode(e){return(this.options.load===`languageOnly`||this.options.nonExplicitSupportedLngs)&&(e=this.getLanguagePartFromCode(e)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.includes(e)}getBestMatchFromCodes(e){if(!e)return null;let t;return e.forEach(e=>{if(t)return;let n=this.formatLanguageCode(e);(!this.options.supportedLngs||this.isSupportedCode(n))&&(t=n)}),!t&&this.options.supportedLngs&&e.forEach(e=>{if(t)return;let n=this.getScriptPartFromCode(e);if(this.isSupportedCode(n))return t=n;let r=this.getLanguagePartFromCode(e);if(this.isSupportedCode(r))return t=r;t=this.options.supportedLngs.find(e=>e===r?!0:!e.includes(`-`)&&!r.includes(`-`)?!1:!!(e.includes(`-`)&&!r.includes(`-`)&&e.slice(0,e.indexOf(`-`))===r||e.startsWith(r)&&r.length>1))}),t||=this.getFallbackCodes(this.options.fallbackLng)[0],t}getFallbackCodes(e,t){if(!e)return[];if(typeof e==`function`&&(e=e(t)),Y(e)&&(e=[e]),Array.isArray(e))return e;if(!t)return e.default||[];let n=e[t];return n||=e[this.getScriptPartFromCode(t)],n||=e[this.formatLanguageCode(t)],n||=e[this.getLanguagePartFromCode(t)],n||=e.default,n||[]}toResolveHierarchy(e,t){let n=this.getFallbackCodes((t===!1?[]:t)||this.options.fallbackLng||[],e),r=[],i=e=>{e&&(this.isSupportedCode(e)?r.push(e):this.logger.warn(`rejecting language code not found in supportedLngs: ${e}`))};return Y(e)&&(e.includes(`-`)||e.includes(`_`))?(this.options.load!==`languageOnly`&&i(this.formatLanguageCode(e)),this.options.load!==`languageOnly`&&this.options.load!==`currentOnly`&&i(this.getScriptPartFromCode(e)),this.options.load!==`currentOnly`&&i(this.getLanguagePartFromCode(e))):Y(e)&&i(this.formatLanguageCode(e)),n.forEach(e=>{r.includes(e)||i(this.formatLanguageCode(e))}),r}},oo={zero:0,one:1,two:2,few:3,many:4,other:5},so={select:e=>e===1?`one`:`other`,resolvedOptions:()=>({pluralCategories:[`one`,`other`]})},co=class{constructor(e,t={}){this.languageUtils=e,this.options=t,this.logger=Z.create(`pluralResolver`),this.pluralRulesCache={}}clearCache(){this.pluralRulesCache={}}getRule(e,t={}){let n=Ya(e===`dev`?`en`:e),r=t.ordinal?`ordinal`:`cardinal`,i=JSON.stringify({cleanedCode:n,type:r});if(i in this.pluralRulesCache)return this.pluralRulesCache[i];let a;try{a=new Intl.PluralRules(n,{type:r})}catch{if(typeof Intl>`u`)return this.logger.error(`No Intl support, please use an Intl polyfill!`),so;if(!e.match(/-|_/))return so;let n=this.languageUtils.getLanguagePartFromCode(e);a=this.getRule(n,t)}return this.pluralRulesCache[i]=a,a}needsPlural(e,t={}){let n=this.getRule(e,t);return n||=this.getRule(`dev`,t),n?.resolvedOptions().pluralCategories.length>1}getPluralFormsOfKey(e,t,n={}){return this.getSuffixes(e,n).map(e=>`${t}${e}`)}getSuffixes(e,t={}){let n=this.getRule(e,t);return n||=this.getRule(`dev`,t),n?n.resolvedOptions().pluralCategories.sort((e,t)=>oo[e]-oo[t]).map(e=>`${this.options.prepend}${t.ordinal?`ordinal${this.options.prepend}`:``}${e}`):[]}getSuffix(e,t,n={}){let r=this.getRule(e,n);return r?`${this.options.prepend}${n.ordinal?`ordinal${this.options.prepend}`:``}${r.select(t)}`:(this.logger.warn(`no plural rule found for: ${e}`),this.getSuffix(`dev`,t,n))}},lo=(e,t,n,r=`.`,i=!0)=>{let a=Ba(e,t,n);return!a&&i&&Y(n)&&(a=Ja(e,n,r),a===void 0&&(a=Ja(t,n,r))),a},uo=e=>e.replace(/\$/g,`$$$$`),fo=class{constructor(e={}){this.logger=Z.create(`interpolator`),this.options=e,this.format=e?.interpolation?.format||(e=>e),this.init(e)}init(e={}){e.interpolation||={escapeValue:!0};let{escape:t,escapeValue:n,useRawValueToEscape:r,prefix:i,prefixEscaped:a,suffix:o,suffixEscaped:s,formatSeparator:c,unescapeSuffix:l,unescapePrefix:u,nestingPrefix:d,nestingPrefixEscaped:f,nestingSuffix:p,nestingSuffixEscaped:m,nestingOptionsSeparator:h,maxReplaces:g,alwaysFormat:_}=e.interpolation;this.escape=t===void 0?Ua:t,this.escapeValue=n===void 0?!0:n,this.useRawValueToEscape=r===void 0?!1:r,this.prefix=i?X(i):a||`{{`,this.suffix=o?X(o):s||`}}`,this.formatSeparator=c||`,`,this.unescapePrefix=l?``:u?X(u):`-`,this.unescapeSuffix=this.unescapePrefix?``:l?X(l):``,this.nestingPrefix=d?X(d):f||X(`$t(`),this.nestingSuffix=p?X(p):m||X(`)`),this.nestingOptionsSeparator=h||`,`,this.maxReplaces=g||1e3,this.alwaysFormat=_===void 0?!1:_,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){let e=(e,t)=>e?.source===t?(e.lastIndex=0,e):new RegExp(t,`g`);this.regexp=e(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=e(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=e(this.nestingRegexp,`${this.nestingPrefix}((?:[^()"']+|"[^"]*"|'[^']*'|\\((?:[^()]|"[^"]*"|'[^']*')*\\))*?)${this.nestingSuffix}`)}interpolate(e,t,n,r){let i,a,o,s=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},c=e=>{if(!e.includes(this.formatSeparator)){let i=lo(t,s,e,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(i,void 0,n,{...r,...t,interpolationkey:e}):i}let i=e.split(this.formatSeparator),a=i.shift().trim(),o=i.join(this.formatSeparator).trim();return this.format(lo(t,s,a,this.options.keySeparator,this.options.ignoreJSONStructure),o,n,{...r,...t,interpolationkey:a})};this.resetRegExp(),!this.escapeValue&&typeof e==`string`&&/\$t\([^)]*\{[^}]*\{\{/.test(e)&&this.logger.warn(`nesting options string contains interpolated variables with escapeValue: false — if any of those values are attacker-controlled they can inject additional nesting options (e.g. redirect lng/ns). Sanitise untrusted input before passing it to t(), or keep escapeValue: true.`);let l=r?.missingInterpolationHandler||this.options.missingInterpolationHandler,u=r?.interpolation?.skipOnVariables===void 0?this.options.interpolation.skipOnVariables:r.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:e=>uo(e)},{regex:this.regexp,safeValue:e=>this.escapeValue?uo(this.escape(e)):uo(e)}].forEach(t=>{for(o=0;i=t.regex.exec(e);){let n=i[1].trim();if(a=c(n),a===void 0)if(typeof l==`function`){let t=l(e,i,r);a=Y(t)?t:``}else if(r&&Object.prototype.hasOwnProperty.call(r,n))a=``;else if(u){a=i[0];continue}else this.logger.warn(`missed to pass in variable ${n} for interpolating ${e}`),a=``;else !Y(a)&&!this.useRawValueToEscape&&(a=ja(a));let s=t.safeValue(a);if(e=e.replace(i[0],s),u?(t.regex.lastIndex+=a.length,t.regex.lastIndex-=i[0].length):t.regex.lastIndex=0,o++,o>=this.maxReplaces)break}}),e}nest(e,t,n={}){let r,i,a,o=(e,t)=>{let n=this.nestingOptionsSeparator;if(!e.includes(n))return e;let r=e.split(RegExp(`${X(n)}[ ]*{`)),i=`{${r[1]}`;e=r[0],i=this.interpolate(i,a);let o=i.match(/'/g),s=i.match(/"/g);((o?.length??0)%2==0&&!s||(s?.length??0)%2!=0)&&(i=i.replace(/'/g,`"`));try{a=JSON.parse(i),t&&(a={...t,...a})}catch(t){return this.logger.warn(`failed parsing options string in nesting for key ${e}`,t),`${e}${n}${i}`}return a.defaultValue&&a.defaultValue.includes(this.prefix)&&delete a.defaultValue,e};for(;r=this.nestingRegexp.exec(e);){let s=[];a={...n},a=a.replace&&!Y(a.replace)?a.replace:a,a.applyPostProcessor=!1,delete a.defaultValue;let c=/{.*}/.test(r[1])?r[1].lastIndexOf(`}`)+1:r[1].indexOf(this.formatSeparator);if(c!==-1&&(s=r[1].slice(c).split(this.formatSeparator).map(e=>e.trim()).filter(Boolean),r[1]=r[1].slice(0,c)),i=t(o.call(this,r[1].trim(),a),a),i&&r[0]===e&&!Y(i))return i;Y(i)||(i=ja(i)),i||=(this.logger.warn(`missed to resolve ${r[1]} for nesting ${e}`),``),s.length&&(i=s.reduce((e,t)=>this.format(e,t,n.lng,{...n,interpolationkey:r[1].trim()}),i.trim())),e=e.replace(r[0],i),this.regexp.lastIndex=0}return e}},po=e=>{let t=e.toLowerCase().trim(),n={};if(e.includes(`(`)){let r=e.split(`(`);t=r[0].toLowerCase().trim();let i=r[1].slice(0,-1);t===`currency`&&!i.includes(`:`)?n.currency||=i.trim():t===`relativetime`&&!i.includes(`:`)?n.range||=i.trim():i.split(`;`).forEach(e=>{if(e){let[t,...r]=e.split(`:`),i=r.join(`:`).trim().replace(/^'+|'+$/g,``),a=t.trim();n[a]||(n[a]=i),i===`false`&&(n[a]=!1),i===`true`&&(n[a]=!0),isNaN(i)||(n[a]=parseInt(i,10))}})}return{formatName:t,formatOptions:n}},mo=e=>{let t={};return(n,r,i)=>{let a=i;i&&i.interpolationkey&&i.formatParams&&i.formatParams[i.interpolationkey]&&i[i.interpolationkey]&&(a={...a,[i.interpolationkey]:void 0});let o=r+JSON.stringify(a),s=t[o];return s||(s=e(Ya(r),i),t[o]=s),s(n)}},ho=e=>(t,n,r)=>e(Ya(n),r)(t),go=class{constructor(e={}){this.logger=Z.create(`formatter`),this.options=e,this.init(e)}init(e,t={interpolation:{}}){this.formatSeparator=t.interpolation.formatSeparator||`,`;let n=t.cacheInBuiltFormats?mo:ho;this.formats={number:n((e,t)=>{let n=new Intl.NumberFormat(e,{...t});return e=>n.format(e)}),currency:n((e,t)=>{let n=new Intl.NumberFormat(e,{...t,style:`currency`});return e=>n.format(e)}),datetime:n((e,t)=>{let n=new Intl.DateTimeFormat(e,{...t});return e=>n.format(e)}),relativetime:n((e,t)=>{let n=new Intl.RelativeTimeFormat(e,{...t});return e=>n.format(e,t.range||`day`)}),list:n((e,t)=>{let n=new Intl.ListFormat(e,{...t});return e=>n.format(e)})}}add(e,t){this.formats[e.toLowerCase().trim()]=t}addCached(e,t){this.formats[e.toLowerCase().trim()]=mo(t)}format(e,t,n,r={}){if(!t||e==null)return e;let i=t.split(this.formatSeparator);if(i.length>1&&i[0].indexOf(`(`)>1&&!i[0].includes(`)`)&&i.find(e=>e.includes(`)`))){let e=i.findIndex(e=>e.includes(`)`));i[0]=[i[0],...i.splice(1,e)].join(this.formatSeparator)}return i.reduce((e,t)=>{let{formatName:i,formatOptions:a}=po(t);if(this.formats[i]){let t=e;try{let o=r?.formatParams?.[r.interpolationkey]||{},s=o.locale||o.lng||r.locale||r.lng||n;t=this.formats[i](e,s,{...a,...r,...o})}catch(e){this.logger.warn(e)}return t}else this.logger.warn(`there was no format function for ${i}`);return e},e)}},_o=(e,t)=>{e.pending[t]!==void 0&&(delete e.pending[t],e.pendingCount--)},vo=class extends Za{constructor(e,t,n,r={}){super(),this.backend=e,this.store=t,this.services=n,this.languageUtils=n.languageUtils,this.options=r,this.logger=Z.create(`backendConnector`),this.waitingReads=[],this.maxParallelReads=r.maxParallelReads||10,this.readingCalls=0,this.maxRetries=r.maxRetries>=0?r.maxRetries:5,this.retryTimeout=r.retryTimeout>=1?r.retryTimeout:350,this.state={},this.queue=[],this.backend?.init?.(n,r.backend,r)}queueLoad(e,t,n,r){let i={},a={},o={},s={};return e.forEach(e=>{let r=!0;t.forEach(t=>{let o=`${e}|${t}`;!n.reload&&this.store.hasResourceBundle(e,t)?this.state[o]=2:this.state[o]<0||(this.state[o]===1?a[o]===void 0&&(a[o]=!0):(this.state[o]=1,r=!1,a[o]===void 0&&(a[o]=!0),i[o]===void 0&&(i[o]=!0),s[t]===void 0&&(s[t]=!0)))}),r||(o[e]=!0)}),(Object.keys(i).length||Object.keys(a).length)&&this.queue.push({pending:a,pendingCount:Object.keys(a).length,loaded:{},errors:[],callback:r}),{toLoad:Object.keys(i),pending:Object.keys(a),toLoadLanguages:Object.keys(o),toLoadNamespaces:Object.keys(s)}}loaded(e,t,n){let r=e.split(`|`),i=r[0],a=r[1];t&&this.emit(`failedLoading`,i,a,t),!t&&n&&this.store.addResourceBundle(i,a,n,void 0,void 0,{skipCopy:!0}),this.state[e]=t?-1:2,t&&n&&(this.state[e]=0);let o={};this.queue.forEach(n=>{Ra(n.loaded,[i],a),_o(n,e),t&&n.errors.push(t),n.pendingCount===0&&!n.done&&(Object.keys(n.loaded).forEach(e=>{o[e]||(o[e]={});let t=n.loaded[e];t.length&&t.forEach(t=>{o[e][t]===void 0&&(o[e][t]=!0)})}),n.done=!0,n.errors.length?n.callback(n.errors):n.callback())}),this.emit(`loaded`,o),this.queue=this.queue.filter(e=>!e.done)}read(e,t,n,r=0,i=this.retryTimeout,a){if(!e.length)return a(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:e,ns:t,fcName:n,tried:r,wait:i,callback:a});return}this.readingCalls++;let o=(o,s)=>{if(this.readingCalls--,this.waitingReads.length>0){let e=this.waitingReads.shift();this.read(e.lng,e.ns,e.fcName,e.tried,e.wait,e.callback)}if(o&&s&&r<this.maxRetries){setTimeout(()=>{this.read(e,t,n,r+1,i*2,a)},i);return}a(o,s)},s=this.backend[n].bind(this.backend);if(s.length===2){try{let n=s(e,t);n&&typeof n.then==`function`?n.then(e=>o(null,e)).catch(o):o(null,n)}catch(e){o(e)}return}return s(e,t,o)}prepareLoading(e,t,n={},r){if(!this.backend)return this.logger.warn(`No backend was added via i18next.use. Will not load resources.`),r&&r();Y(e)&&(e=this.languageUtils.toResolveHierarchy(e)),Y(t)&&(t=[t]);let i=this.queueLoad(e,t,n,r);if(!i.toLoad.length)return i.pending.length||r(),null;i.toLoad.forEach(e=>{this.loadOne(e)})}load(e,t,n){this.prepareLoading(e,t,{},n)}reload(e,t,n){this.prepareLoading(e,t,{reload:!0},n)}loadOne(e,t=``){let n=e.split(`|`),r=n[0],i=n[1];this.read(r,i,`read`,void 0,void 0,(n,a)=>{n&&this.logger.warn(`${t}loading namespace ${i} for language ${r} failed`,n),!n&&a&&this.logger.log(`${t}loaded namespace ${i} for language ${r}`,a),this.loaded(e,n,a)})}saveMissing(e,t,n,r,i,a={},o=()=>{}){if(this.services?.utils?.hasLoadedNamespace&&!this.services?.utils?.hasLoadedNamespace(t)){this.logger.warn(`did not save key "${n}" as the namespace "${t}" was not yet loaded`,`This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!`);return}if(!(n==null||n===``)){if(this.backend?.create){let s={...a,isUpdate:i},c=this.backend.create.bind(this.backend);if(c.length<6)try{let i;i=c.length===5?c(e,t,n,r,s):c(e,t,n,r),i&&typeof i.then==`function`?i.then(e=>o(null,e)).catch(o):o(null,i)}catch(e){o(e)}else c(e,t,n,r,o,s)}!e||!e[0]||this.store.addResource(e[0],t,n,r)}}},yo=()=>({debug:!1,initAsync:!0,ns:[`translation`],defaultNS:[`translation`],fallbackLng:[`dev`],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:`all`,preload:!1,keySeparator:`.`,nsSeparator:`:`,pluralSeparator:`_`,contextSeparator:`_`,enableSelector:!1,partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:`fallback`,saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:e=>{let t={};if(typeof e[1]==`object`&&(t=e[1]),Y(e[1])&&(t.defaultValue=e[1]),Y(e[2])&&(t.tDescription=e[2]),typeof e[2]==`object`||typeof e[3]==`object`){let n=e[3]||e[2];Object.keys(n).forEach(e=>{t[e]=n[e]})}return t},interpolation:{escapeValue:!0,prefix:`{{`,suffix:`}}`,formatSeparator:`,`,unescapePrefix:`-`,nestingPrefix:`$t(`,nestingSuffix:`)`,nestingOptionsSeparator:`,`,maxReplaces:1e3,skipOnVariables:!0},cacheInBuiltFormats:!0}),bo=e=>(Y(e.ns)&&(e.ns=[e.ns]),Y(e.fallbackLng)&&(e.fallbackLng=[e.fallbackLng]),Y(e.fallbackNS)&&(e.fallbackNS=[e.fallbackNS]),e.supportedLngs&&!e.supportedLngs.includes(`cimode`)&&(e.supportedLngs=e.supportedLngs.concat([`cimode`])),e),xo=()=>{},So=e=>{Object.getOwnPropertyNames(Object.getPrototypeOf(e)).forEach(t=>{typeof e[t]==`function`&&(e[t]=e[t].bind(e))})},Q=class e extends Za{constructor(e={},t){if(super(),this.options=bo(e),this.services={},this.logger=Z,this.modules={external:[]},So(this),t&&!this.isInitialized&&!e.isClone){if(!this.options.initAsync)return this.init(e,t),this;setTimeout(()=>{this.init(e,t)},0)}}init(e={},t){this.isInitializing=!0,typeof e==`function`&&(t=e,e={}),e.defaultNS==null&&e.ns&&(Y(e.ns)?e.defaultNS=e.ns:e.ns.includes(`translation`)||(e.defaultNS=e.ns[0]));let n=yo();this.options={...n,...this.options,...bo(e)},this.options.interpolation={...n.interpolation,...this.options.interpolation},e.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=e.keySeparator),e.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=e.nsSeparator),typeof this.options.overloadTranslationOptionHandler!=`function`&&(this.options.overloadTranslationOptionHandler=n.overloadTranslationOptionHandler);let r=e=>e?typeof e==`function`?new e:e:null;if(!this.options.isClone){this.modules.logger?Z.init(r(this.modules.logger),this.options):Z.init(null,this.options);let e;e=this.modules.formatter?this.modules.formatter:go;let t=new ao(this.options);this.store=new Qa(this.options.resources,this.options);let n=this.services;n.logger=Z,n.resourceStore=this.store,n.languageUtils=t,n.pluralResolver=new co(t,{prepend:this.options.pluralSeparator}),e&&(n.formatter=r(e),n.formatter.init&&n.formatter.init(n,this.options),this.options.interpolation.format=n.formatter.format.bind(n.formatter)),n.interpolator=new fo(this.options),n.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},n.backendConnector=new vo(r(this.modules.backend),n.resourceStore,n,this.options),n.backendConnector.on(`*`,(e,...t)=>{this.emit(e,...t)}),this.modules.languageDetector&&(n.languageDetector=r(this.modules.languageDetector),n.languageDetector.init&&n.languageDetector.init(n,this.options.detection,this.options)),this.modules.i18nFormat&&(n.i18nFormat=r(this.modules.i18nFormat),n.i18nFormat.init&&n.i18nFormat.init(this)),this.translator=new io(this.services,this.options),this.translator.on(`*`,(e,...t)=>{this.emit(e,...t)}),this.modules.external.forEach(e=>{e.init&&e.init(this)})}if(this.format=this.options.interpolation.format,t||=xo,this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){let e=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);e.length>0&&e[0]!==`dev`&&(this.options.lng=e[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn(`init: no languageDetector is used and no lng is defined`),[`getResource`,`hasResourceBundle`,`getResourceBundle`,`getDataByLanguage`].forEach(e=>{this[e]=(...t)=>this.store[e](...t)}),[`addResource`,`addResources`,`addResourceBundle`,`removeResourceBundle`].forEach(e=>{this[e]=(...t)=>(this.store[e](...t),this)});let i=Aa(),a=()=>{let e=(e,n)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn(`init: i18next is already initialized. You should call init just once!`),this.isInitialized=!0,this.options.isClone||this.logger.log(`initialized`,this.options),this.emit(`initialized`,this.options),i.resolve(n),t(e,n)};if((this.languages||this.isLanguageChangingTo)&&!this.isInitialized)return e(null,this.t.bind(this));this.changeLanguage(this.options.lng,e)};return this.options.resources||!this.options.initAsync?a():setTimeout(a,0),i}loadResources(e,t=xo){let n=t,r=Y(e)?e:this.language;if(typeof e==`function`&&(n=e),!this.options.resources||this.options.partialBundledLanguages){if(r?.toLowerCase()===`cimode`&&(!this.options.preload||this.options.preload.length===0))return n();let e=[],t=t=>{t&&t!==`cimode`&&this.services.languageUtils.toResolveHierarchy(t).forEach(t=>{t!==`cimode`&&(e.includes(t)||e.push(t))})};r?t(r):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(e=>t(e)),this.options.preload?.forEach?.(e=>t(e)),this.services.backendConnector.load(e,this.options.ns,e=>{!e&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),n(e)})}else n(null)}reloadResources(e,t,n){let r=Aa();return typeof e==`function`&&(n=e,e=void 0),typeof t==`function`&&(n=t,t=void 0),e||=this.languages,t||=this.options.ns,n||=xo,this.services.backendConnector.reload(e,t,e=>{r.resolve(),n(e)}),r}use(e){if(!e)throw Error(`You are passing an undefined module! Please check the object you are passing to i18next.use()`);if(!e.type)throw Error(`You are passing a wrong module! Please check the object you are passing to i18next.use()`);return e.type===`backend`&&(this.modules.backend=e),(e.type===`logger`||e.log&&e.warn&&e.error)&&(this.modules.logger=e),e.type===`languageDetector`&&(this.modules.languageDetector=e),e.type===`i18nFormat`&&(this.modules.i18nFormat=e),e.type===`postProcessor`&&$a.addPostProcessor(e),e.type===`formatter`&&(this.modules.formatter=e),e.type===`3rdParty`&&this.modules.external.push(e),this}setResolvedLanguage(e){if(!(!e||!this.languages)&&![`cimode`,`dev`].includes(e)){for(let e=0;e<this.languages.length;e++){let t=this.languages[e];if(![`cimode`,`dev`].includes(t)&&this.store.hasLanguageSomeTranslations(t)){this.resolvedLanguage=t;break}}!this.resolvedLanguage&&!this.languages.includes(e)&&this.store.hasLanguageSomeTranslations(e)&&(this.resolvedLanguage=e,this.languages.unshift(e))}}changeLanguage(e,t){this.isLanguageChangingTo=e;let n=Aa();this.emit(`languageChanging`,e);let r=e=>{this.language=e,this.languages=this.services.languageUtils.toResolveHierarchy(e),this.resolvedLanguage=void 0,this.setResolvedLanguage(e)},i=(i,a)=>{a?this.isLanguageChangingTo===e&&(r(a),this.translator.changeLanguage(a),this.isLanguageChangingTo=void 0,this.emit(`languageChanged`,a),this.logger.log(`languageChanged`,a)):this.isLanguageChangingTo=void 0,n.resolve((...e)=>this.t(...e)),t&&t(i,(...e)=>this.t(...e))},a=t=>{!e&&!t&&this.services.languageDetector&&(t=[]);let n=Y(t)?t:t&&t[0],a=this.store.hasLanguageSomeTranslations(n)?n:this.services.languageUtils.getBestMatchFromCodes(Y(t)?[t]:t);a&&(this.language||r(a),this.translator.language||this.translator.changeLanguage(a),this.services.languageDetector?.cacheUserLanguage?.(a)),this.loadResources(a,e=>{i(e,a)})};return!e&&this.services.languageDetector&&!this.services.languageDetector.async?a(this.services.languageDetector.detect()):!e&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(a):this.services.languageDetector.detect(a):a(e),n}getFixedT(e,t,n,r){let i=r?.scopeNs,a=(e,t,...r)=>{let o;o=typeof t==`object`?{...t}:this.options.overloadTranslationOptionHandler([e,t].concat(r)),o.lng=o.lng||a.lng,o.lngs=o.lngs||a.lngs;let s=o.ns!==void 0&&o.ns!==null;o.ns=o.ns||a.ns,o.keyPrefix!==``&&(o.keyPrefix=o.keyPrefix||n||a.keyPrefix);let c={...this.options,...o};Array.isArray(i)&&!s&&(c.ns=i),typeof o.keyPrefix==`function`&&(o.keyPrefix=no(o.keyPrefix,c));let l=this.options.keySeparator||`.`,u;return o.keyPrefix&&Array.isArray(e)?u=e.map(e=>(typeof e==`function`&&(e=no(e,c)),`${o.keyPrefix}${l}${e}`)):(typeof e==`function`&&(e=no(e,c)),u=o.keyPrefix?`${o.keyPrefix}${l}${e}`:e),this.t(u,o)};return Y(e)?a.lng=e:a.lngs=e,a.ns=t,a.keyPrefix=n,a}t(...e){return this.translator?.translate(...e)}exists(...e){return this.translator?.exists(...e)}setDefaultNamespace(e){this.options.defaultNS=e}hasLoadedNamespace(e,t={}){if(!this.isInitialized)return this.logger.warn(`hasLoadedNamespace: i18next was not initialized`,this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn(`hasLoadedNamespace: i18n.languages were undefined or empty`,this.languages),!1;let n=t.lng||this.resolvedLanguage||this.languages[0],r=this.options?this.options.fallbackLng:!1,i=this.languages[this.languages.length-1];if(n.toLowerCase()===`cimode`)return!0;let a=(e,t)=>{let n=this.services.backendConnector.state[`${e}|${t}`];return n===-1||n===0||n===2};if(t.precheck){let e=t.precheck(this,a);if(e!==void 0)return e}return!!(this.hasResourceBundle(n,e)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||a(n,e)&&(!r||a(i,e)))}loadNamespaces(e,t){let n=Aa();return this.options.ns?(Y(e)&&(e=[e]),e.forEach(e=>{this.options.ns.includes(e)||this.options.ns.push(e)}),this.loadResources(e=>{n.resolve(),t&&t(e)}),n):(t&&t(),Promise.resolve())}loadLanguages(e,t){let n=Aa();Y(e)&&(e=[e]);let r=this.options.preload||[],i=e.filter(e=>!r.includes(e)&&this.services.languageUtils.isSupportedCode(e));return i.length?(this.options.preload=r.concat(i),this.loadResources(e=>{n.resolve(),t&&t(e)}),n):(t&&t(),Promise.resolve())}dir(e){if(e||=this.resolvedLanguage||(this.languages?.length>0?this.languages[0]:this.language),!e)return`rtl`;try{let t=new Intl.Locale(e);if(t&&t.getTextInfo){let e=t.getTextInfo();if(e&&e.direction)return e.direction}}catch{}let t=`ar.shu.sqr.ssh.xaa.yhd.yud.aao.abh.abv.acm.acq.acw.acx.acy.adf.ads.aeb.aec.afb.ajp.apc.apd.arb.arq.ars.ary.arz.auz.avl.ayh.ayl.ayn.ayp.bbz.pga.he.iw.ps.pbt.pbu.pst.prp.prd.ug.ur.ydd.yds.yih.ji.yi.hbo.men.xmn.fa.jpr.peo.pes.prs.dv.sam.ckb`.split(`.`),n=this.services?.languageUtils||new ao(yo());return e.toLowerCase().indexOf(`-latn`)>1?`ltr`:t.includes(n.getLanguagePartFromCode(e))||e.toLowerCase().indexOf(`-arab`)>1?`rtl`:`ltr`}static createInstance(t={},n){let r=new e(t,n);return r.createInstance=e.createInstance,r}cloneInstance(t={},n=xo){let r=t.forkResourceStore;r&&delete t.forkResourceStore;let i={...this.options,...t,isClone:!0},a=new e(i);if((t.debug!==void 0||t.prefix!==void 0)&&(a.logger=a.logger.clone(t)),[`store`,`services`,`language`].forEach(e=>{a[e]=this[e]}),a.services={...this.services},a.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},r&&(a.store=new Qa(Object.keys(this.store.data).reduce((e,t)=>(e[t]={...this.store.data[t]},e[t]=Object.keys(e[t]).reduce((n,r)=>(n[r]={...e[t][r]},n),e[t]),e),{}),i),a.services.resourceStore=a.store),t.interpolation){let e={...yo().interpolation,...this.options.interpolation,...t.interpolation},n={...i,interpolation:e};a.services.interpolator=new fo(n)}return a.translator=new io(a.services,i),a.translator.on(`*`,(e,...t)=>{a.emit(e,...t)}),a.init(i,n),a.translator.options=i,a.translator.backendConnector.services.utils={hasLoadedNamespace:a.hasLoadedNamespace.bind(a)},a}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}}.createInstance();Q.createInstance,Q.dir,Q.init,Q.loadResources,Q.reloadResources,Q.use,Q.changeLanguage,Q.getFixedT,Q.t,Q.exists,Q.setDefaultNamespace,Q.hasLoadedNamespace,Q.loadNamespaces,Q.loadLanguages;var Co=(e,t,n,r)=>{let i=[n,{code:t,...r||{}}];if(e?.services?.logger?.forward)return e.services.logger.forward(i,`warn`,`react-i18next::`,!0);Ao(i[0])&&(i[0]=`react-i18next:: ${i[0]}`),e?.services?.logger?.warn?e.services.logger.warn(...i):console?.warn&&console.warn(...i)},wo={},To=(e,t,n,r)=>{Ao(n)&&wo[n]||(Ao(n)&&(wo[n]=new Date),Co(e,t,n,r))},Eo=(e,t)=>()=>{if(e.isInitialized)t();else{let n=()=>{setTimeout(()=>{e.off(`initialized`,n)},0),t()};e.on(`initialized`,n)}},Do=(e,t,n)=>{e.loadNamespaces(t,Eo(e,n))},Oo=(e,t,n,r)=>{if(Ao(n)&&(n=[n]),e.options.preload&&e.options.preload.indexOf(t)>-1)return Do(e,n,r);n.forEach(t=>{e.options.ns.indexOf(t)<0&&e.options.ns.push(t)}),e.loadLanguages(t,Eo(e,r))},ko=(e,t,n={})=>!t.languages||!t.languages.length?(To(t,`NO_LANGUAGES`,`i18n.languages were undefined or empty`,{languages:t.languages}),!0):t.hasLoadedNamespace(e,{lng:n.lng,precheck:(t,r)=>{if(n.bindI18n&&n.bindI18n.indexOf(`languageChanging`)>-1&&t.services.backendConnector.backend&&t.isLanguageChangingTo&&!r(t.isLanguageChangingTo,e))return!1}}),Ao=e=>typeof e==`string`,jo=e=>typeof e==`object`&&!!e,Mo=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,No={"&":`&`,"&":`&`,"<":`<`,"<":`<`,">":`>`,">":`>`,"'":`'`,"'":`'`,""":`"`,""":`"`," ":` `," ":` `,"©":`©`,"©":`©`,"®":`®`,"®":`®`,"…":`…`,"…":`…`,"/":`/`,"/":`/`},Po=e=>No[e],Fo={bindI18n:`languageChanged`,bindI18nStore:``,transEmptyNodeValue:``,transSupportBasicHtmlNodes:!0,transWrapTextNodes:``,transKeepBasicHtmlNodesFor:[`br`,`strong`,`i`,`p`],useSuspense:!0,unescape:e=>e.replace(Mo,Po),transDefaultProps:void 0},Io=(e={})=>{Fo={...Fo,...e}},Lo=()=>Fo,Ro,zo=e=>{Ro=e},Bo=()=>Ro,Vo={type:`3rdParty`,init(e){Io(e.options.react),zo(e)}};P();var Ho=T(),Uo=class{constructor(){this.usedNamespaces={}}addUsedNamespaces(e){e.forEach(e=>{this.usedNamespaces[e]||(this.usedNamespaces[e]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}},Wo=t((t=>{var n=(P(),e(ve));function r(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var i=typeof Object.is==`function`?Object.is:r,a=n.useState,o=n.useEffect,s=n.useLayoutEffect,c=n.useDebugValue;function l(e,t){var n=t(),r=a({inst:{value:n,getSnapshot:t}}),i=r[0].inst,l=r[1];return s(function(){i.value=n,i.getSnapshot=t,u(i)&&l({inst:i})},[e,n,t]),o(function(){return u(i)&&l({inst:i}),e(function(){u(i)&&l({inst:i})})},[e]),c(n),n}function u(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!i(e,n)}catch{return!0}}function d(e,t){return t()}var f=typeof window>`u`||window.document===void 0||window.document.createElement===void 0?d:l;t.useSyncExternalStore=n.useSyncExternalStore===void 0?f:n.useSyncExternalStore})),Go=t(((e,t)=>{t.exports=Wo()}));P();var Ko=Go(),qo={t:(e,t)=>{if(Ao(t))return t;if(jo(t)&&Ao(t.defaultValue))return t.defaultValue;if(typeof e==`function`)return``;if(Array.isArray(e)){let t=e[e.length-1];return typeof t==`function`?``:t}return e},ready:!1},Jo=()=>()=>{},Yo=(e,t={})=>{let{i18n:n}=t,{i18n:r,defaultNS:i}=A(Ho)||{},a=n||r||Bo();a&&!a.reportNamespaces&&(a.reportNamespaces=new Uo),a||To(a,`NO_I18NEXT_INSTANCE`,`useTranslation: You will need to pass in an i18next instance by using initReactI18next`);let o=N(()=>({...Lo(),...a?.options?.react,...t}),[a,t]),{useSuspense:s,keyPrefix:c}=o,l=e||i||a?.options?.defaultNS,u=Ao(l)?[l]:l||[`translation`],d=N(()=>u,u);a?.reportNamespaces?.addUsedNamespaces?.(d);let f=D(0),p=O(e=>{if(!a)return Jo;let{bindI18n:t,bindI18nStore:n}=o,r=()=>{f.current+=1,e()};return t&&a.on(t,r),n&&a.store.on(n,r),()=>{t&&t.split(` `).forEach(e=>a.off(e,r)),n&&n.split(` `).forEach(e=>a.store.off(e,r))}},[a,o]),m=D(),h=O(()=>{if(!a)return qo;let e=!!(a.isInitialized||a.initializedStoreOnce)&&d.every(e=>ko(e,a,o)),n=t.lng||a.language,r=f.current,i=m.current;if(i&&i.ready===e&&i.lng===n&&i.keyPrefix===c&&i.revision===r)return i;let s={t:a.getFixedT(n,o.nsMode===`fallback`?d:d[0],c,{scopeNs:d}),ready:e,lng:n,keyPrefix:c,revision:r};return m.current=s,s},[a,d,c,o,t.lng]),[g,_]=k(0),{t:v,ready:y}=(0,Ko.useSyncExternalStore)(p,h,h);L(()=>{if(a&&!y&&!s){let e=()=>_(e=>e+1);t.lng?Oo(a,t.lng,d,e):Do(a,d,e)}},[a,t.lng,d,y,s,g]);let b=a||{},x=D(null),S=D(),ee=e=>{let t=Object.getOwnPropertyDescriptors(e);t.__original&&delete t.__original;let n=Object.create(Object.getPrototypeOf(e),t);if(!Object.prototype.hasOwnProperty.call(n,`__original`))try{Object.defineProperty(n,"__original",{value:e,writable:!1,enumerable:!1,configurable:!1})}catch{}return n},te=N(()=>{let e=b,t=e?.language,n=e;e&&(x.current&&x.current.__original===e&&S.current===t?n=x.current:(n=ee(e),x.current=n,S.current=t));let r=!y&&!s?(...e)=>(To(a,`USE_T_BEFORE_READY`,`useTranslation: t was called before ready. When using useSuspense: false, make sure to check the ready flag before using t.`),v(...e)):v,i=[r,n,y];return i.t=r,i.i18n=n,i.ready=y,i},[v,b,y,b.resolvedLanguage,b.language,b.languages]);if(a&&s&&!y)throw new Promise(e=>{let n=()=>e();t.lng?Oo(a,t.lng,d,n):Do(a,d,n)});return te};P();var Xo={info:di,success:ni,warning:Mi,error:ti},Zo={info:`text-blue-400`,success:`text-green-400`,warning:`text-amber-400`,error:`text-red-400`},Qo={active:`border-l-blue-400`,"in-progress":`border-l-amber-400`,completed:`border-l-green-400`,failed:`border-l-red-400`,dismissed:`border-l-foreground-subtle/30`};function $o(e){let t=Math.floor((Date.now()-e)/1e3);if(t<60)return`just now`;let n=Math.floor(t/60);if(n<60)return`${String(n)}m ago`;let r=Math.floor(n/60);if(r<24)return`${String(r)}h ago`;let i=Math.floor(r/24);return`${String(i)}d ago`}function es({alert:e,onMarkRead:t,onDismiss:n}){let r=e.severity in Xo?e.severity:`info`,i=e.status in Qo?e.status:`active`,a=Xo[r],o=Zo[r],s=Qo[i];return M(`div`,{className:`flex items-start gap-2.5 px-3 py-2.5 border-l-2 ${s} ${e.read?`opacity-60`:``} hover:bg-surface-hover transition-colors`,children:[I(a,{className:`h-3.5 w-3.5 shrink-0 mt-0.5 ${o}`}),M(`div`,{className:`flex-1 min-w-0`,children:[M(`div`,{className:`flex items-center gap-1.5`,children:[I(`span`,{className:`text-[11px] font-semibold ${e.read?`text-foreground-subtle`:`text-foreground`}`,children:e.title}),!e.read&&I(`span`,{className:`h-1.5 w-1.5 rounded-full bg-primary shrink-0`})]}),I(`div`,{className:`text-[10px] text-foreground-subtle mt-0.5 line-clamp-2`,children:e.message}),e.status===`in-progress`&&e.progress!==void 0&&M(`div`,{className:`mt-1.5 flex items-center gap-2`,children:[I(`div`,{className:`flex-1 h-1 bg-surface-hover rounded-full overflow-hidden`,children:I(`div`,{className:`h-full bg-primary rounded-full transition-all duration-300`,style:{width:`${String(Math.min(100,Math.max(0,e.progress)))}%`}})}),M(`span`,{className:`text-[9px] text-foreground-subtle font-mono shrink-0`,children:[String(Math.round(e.progress)),`%`]})]}),I(`div`,{className:`text-[9px] text-foreground-subtle/60 mt-1`,children:$o(e.updatedAt)})]}),M(`div`,{className:`flex items-center gap-0.5 shrink-0`,children:[!e.read&&I(`button`,{type:`button`,onClick:n=>{n.stopPropagation(),t(e.id)},className:`p-1 rounded hover:bg-surface-hover transition-colors`,title:`Mark as read`,children:I(Zr,{className:`h-3 w-3 text-foreground-subtle`})}),e.status!==`in-progress`&&I(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),n(e.id)},className:`p-1 rounded hover:bg-surface-hover transition-colors`,title:`Dismiss`,children:I(Pi,{className:`h-3 w-3 text-foreground-subtle`})})]})]})}function ts({variant:e=`icon`,compact:t=!1}={}){let[n,r]=k(!1),[i,a]=k(!1),o=D(null),c=D(null),l=we(),{data:u=0}=g(void 0,{refetchInterval:3e4}),{data:d=[],isLoading:f}=s({limit:50},{enabled:n}),p=i?d:d.filter(e=>!e.read),m=d.filter(e=>e.read).length,h=()=>{l.invalidateQueries({queryKey:[[`alerts`]]})},_=v({onSuccess:h}),y=ce({onSuccess:h}),b=le({onSuccess:h});ee(`alert.created`,()=>{l.invalidateQueries({queryKey:[[`alerts`]]})}),ee(`alert.updated`,()=>{l.invalidateQueries({queryKey:[[`alerts`]]})}),L(()=>{if(!n)return;let e=e=>{let t=e.target;o.current&&!o.current.contains(t)&&c.current&&!c.current.contains(t)&&r(!1)};return document.addEventListener(`mousedown`,e),document.addEventListener(`touchstart`,e),()=>{document.removeEventListener(`mousedown`,e),document.removeEventListener(`touchstart`,e)}},[n]);let x=O(e=>{_.mutate({alertId:e})},[_]),S=O(e=>{e&&b.mutate({alertId:e})},[b]),te=O(()=>{y.mutate(void 0),r(!1)},[y]),C=p.filter(e=>e.status===`in-progress`),w=p.filter(e=>e.status!==`in-progress`),[ne,re]=k({}),ie=O(()=>{let e=c.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,l={position:`fixed`,left:a,width:i,zIndex:9999};o>=s?(l.top=t.bottom+4,l.maxHeight=Math.max(160,o-8-4)):(l.bottom=r-t.top+4,l.maxHeight=Math.max(160,s-8-4)),re(l)},[]);return L(()=>{if(!n)return;ie();let e=()=>ie();return window.addEventListener(`resize`,e),window.addEventListener(`scroll`,e,!0),()=>{window.removeEventListener(`resize`,e),window.removeEventListener(`scroll`,e,!0)}},[n,ie]),M(`div`,{children:[e===`sidebar`?M(`button`,{ref:c,type:`button`,onClick:()=>r(!n),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?`Alerts${u>0?` (${u})`:``}`:void 0,children:[M(`span`,{className:`relative inline-flex shrink-0`,children:[I(Ci,{className:`h-3.5 w-3.5`}),t&&u>0&&I(`span`,{className:`absolute -top-1 -right-1 h-2 w-2 rounded-full bg-primary`})]}),!t&&I(`span`,{className:`flex-1 text-left`,children:`Alerts`}),!t&&u>0&&I(`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:u>99?`99+`:String(u)})]}):M(`button`,{ref:c,type:`button`,onClick:()=>r(!n),className:`relative p-1.5 rounded-md hover:bg-surface-hover text-foreground-subtle hover:text-foreground transition-colors`,"aria-label":`Alerts`,children:[I(Ci,{className:`h-4.5 w-4.5`}),u>0&&I(`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:u>99?`99+`:String(u)})]}),n&&Ae(M(`div`,{ref:o,style:ne,className:`bg-surface border border-border rounded-lg shadow-xl flex flex-col overflow-hidden`,children:[M(`div`,{className:`flex items-center justify-between px-3 py-2 border-b border-border shrink-0`,children:[I(`span`,{className:`text-[12px] font-semibold text-foreground`,children:`Alerts`}),M(`div`,{className:`flex items-center gap-2`,children:[m>0&&M(`label`,{className:`flex items-center gap-1 text-[10px] text-foreground-subtle cursor-pointer select-none`,children:[I(`input`,{type:`checkbox`,checked:i,onChange:e=>a(e.target.checked),className:`h-3 w-3 rounded border-border accent-primary cursor-pointer`}),`Show read`]}),u>0&&M(`button`,{type:`button`,onClick:te,className:`flex items-center gap-1 text-[10px] text-primary hover:text-primary/80 transition-colors`,children:[I(Xr,{className:`h-3 w-3`}),`Mark all read`]})]})]}),M(`div`,{className:`flex-1 overflow-y-auto`,children:[f&&I(`div`,{className:`flex items-center justify-center py-8`,children:I(pi,{className:`h-4 w-4 animate-spin text-foreground-subtle`})}),!f&&p.length===0&&M(`div`,{className:`flex flex-col items-center justify-center py-8 text-foreground-subtle`,children:[I(Ci,{className:`h-6 w-6 mb-2 opacity-40`}),I(`span`,{className:`text-[11px]`,children:d.length>0?`No unread alerts`:`No alerts`}),d.length>0&&!i&&M(`button`,{type:`button`,onClick:()=>a(!0),className:`text-[10px] text-primary mt-1 hover:underline`,children:[`Show `,m,` read alert`,m===1?``:`s`]})]}),C.length>0&&M(`div`,{className:`border-b border-border`,children:[I(`div`,{className:`px-3 py-1.5 bg-surface-hover/50`,children:I(`span`,{className:`text-[9px] font-semibold uppercase tracking-widest text-foreground-subtle/60`,children:`In Progress`})}),C.map(e=>I(es,{alert:e,onMarkRead:x,onDismiss:S},e.id))]}),w.map(e=>I(es,{alert:e,onMarkRead:x,onDismiss:S},e.id))]})]}),document.body)]})}P();var ns={dark:vi,light:ki,system:_i},rs={gauge:ci,puzzle:xi,bot:qr,cpu:ri,terminal:Ai,box:Jr,wrench:Fi,activity:Wr,plug:bi};function is(){let e=W(),t=G(),{user:n,logout:r}=ba(),i=w(),{t:a}=Yo(),o=re(),s=te(),c=ca(),l=c!==`connected`,u=c===`connecting`,[d,f]=k(!1),[p,m]=k(()=>typeof window>`u`?!1:window.localStorage.getItem(`camstack:sidebar-collapsed`)===`1`);L(()=>{typeof window>`u`||window.localStorage.setItem(`camstack:sidebar-collapsed`,p?`1`:`0`)},[p]);let[h]=k(()=>{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}});L(()=>{typeof window>`u`||window.localStorage.setItem(`camstack:sidebar-collapsed-groups`,JSON.stringify([...h]))},[h]),L(()=>{s&&window.localStorage.getItem(`camstack:sidebar-collapsed`)===null&&m(!0)},[s]);let{data:g=[]}=ne({nodeId:`hub`},{refetchInterval:3e4}),_=g.length,v=we(),y=D(Date.now()),{data:b}=S(void 0,{staleTime:0,refetchOnMount:`always`,refetchInterval:e=>{let t=e.state.data;return t&&t.length>0||Date.now()-y.current>=3e4?!1:2e3}}),x=N(()=>b&&n?.isAdmin?Ca(b):[],[b,n?.isAdmin]);ee(`addon.page-ready`,()=>{v.invalidateQueries({queryKey:[[`addonPages`,`listPages`]]})});let ie=()=>{r(),t(`/login`)},ae=t=>!!(e.pathname===t||e.pathname.startsWith(t+`/`)),oe=[`/pipeline`].some(t=>e.pathname===t||e.pathname.startsWith(t+`/`)),se=n?.isAdmin===!0,ce=[{label:a(`nav.devices`,`Devices`),icon:Yr,path:`/devices`},{label:a(`nav.integrations`),icon:bi,path:`/integrations`},{label:a(`nav.pipeline`,`Pipeline`),icon:li,path:`/pipeline`}].filter(Boolean),le=[{label:a(`nav.detectionIntelligence`,`Detection Intelligence`),icon:Si,path:`/detection-intelligence`,adminOnly:!0}].filter(e=>!e.adminOnly||se),ue=[{label:a(`system.identity`,`Identity & Access`),icon:mi,path:`/system/identity`,adminOnly:!0},{label:a(`system.network`,`Network`),icon:ui,path:`/system/network`,adminOnly:!0},{label:a(`system.integrations`,`Integrations`),icon:bi,path:`/system/integrations`,adminOnly:!0},{label:a(`system.data`,`Data`),icon:ii,path:`/system/data`,adminOnly:!0},{label:a(`system.cluster`,`Cluster`),icon:yi,path:`/system/cluster`,adminOnly:!0},{label:a(`system.capabilities`,`Capabilities`),icon:Di,path:`/system/capabilities`,adminOnly:!0},{label:a(`system.notifications`,`Notifications`),icon:Kr,path:`/system/notifications`,adminOnly:!0},{label:a(`system.addons`),icon:xi,path:`/system/addons`,adminOnly:!0},{label:a(`system.addonSettings`,`Addon Settings`),icon:wi,path:`/system/settings`,adminOnly:!0},{label:a(`system.logs`,`Logs`),icon:Ci,path:`/system/logs`,adminOnly:!0}].filter(e=>!e.adminOnly||se),de=i?.mode??`system`,fe={dark:a(`theme.dark`),light:a(`theme.light`),system:a(`theme.system`)},T=p&&!o,E=(e,t=`md`)=>`flex w-full items-center gap-2.5 rounded-md ${T?`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`}`,O=M(xe,{children:[M(`div`,{className:`flex h-14 items-center border-b border-border ${T?`justify-center px-1`:`pl-3 pr-4 gap-2`}`,children:[!T&&I(`img`,{src:i?.resolvedMode===`light`?`/brand/logo-horizontal-light.svg`:`/brand/logo-horizontal-dark.svg`,alt:`CamStack Admin`,className:`h-9 flex-1 min-w-0`}),!o&&I(`button`,{onClick:()=>m(e=>!e),className:`p-1.5 rounded-md hover:bg-surface-hover text-foreground-subtle transition-colors flex-shrink-0 ${T?``:`mr-2`}`,"aria-label":p?`Expand sidebar`:`Collapse sidebar`,title:p?`Expand sidebar`:`Collapse sidebar`,children:I(p?ei:$r,{className:`h-4 w-4`})})]}),M(`nav`,{className:`flex-1 overflow-y-auto py-3 ${T?`px-1.5`:`px-2`} space-y-0.5`,children:[(()=>{let e=ae(`/dashboard`);return M(`button`,{"data-testid":`nav-dashboard`,onClick:()=>{t(`/dashboard`),f(!1)},className:E(e,`lg`),title:T?a(`nav.dashboard`):void 0,children:[I(fi,{className:`h-4 w-4 shrink-0 ${e?`text-primary`:``}`}),!T&&a(`nav.dashboard`)]})})(),!T&&I(`div`,{className:`pt-4 pb-1.5 px-2.5`,children:I(`span`,{className:`text-[10px] font-semibold uppercase tracking-widest text-foreground-subtle/60`,children:a(`nav.camerasSection`,`Input systems`)})}),T&&I(`div`,{className:`pt-3 mb-1 mx-2 border-t border-border/60`}),ce.map(e=>{let n=e.icon,r=ae(e.path);return M(`button`,{"data-testid":`nav-${e.path.replace(/^\//,``).replace(/\//g,`-`)}`,onClick:()=>{t(e.path),f(!1)},className:E(r),title:T?e.label:void 0,children:[I(n,{className:`h-3.5 w-3.5 shrink-0 ${r?`text-primary`:``}`}),!T&&e.label]},e.path)}),le.length>0&&!T&&I(`div`,{className:`pt-4 pb-1.5 px-2.5`,children:I(`span`,{className:`text-[10px] font-semibold uppercase tracking-widest text-foreground-subtle/60`,children:a(`nav.intelligenceSection`,`Intelligence`)})}),le.length>0&&T&&I(`div`,{className:`pt-3 mb-1 mx-2 border-t border-border/60`}),le.map(e=>{let n=e.icon,r=ae(e.path);return M(`button`,{"data-testid":`nav-${e.path.replace(/^\//,``).replace(/\//g,`-`)}`,onClick:()=>{t(e.path),f(!1)},className:E(r),title:T?e.label:void 0,children:[I(n,{className:`h-3.5 w-3.5 shrink-0 ${r?`text-primary`:``}`}),!T&&e.label]},e.path)}),!T&&I(`div`,{className:`pt-4 pb-1.5 px-2.5`,children:I(`span`,{className:`text-[10px] font-semibold uppercase tracking-widest text-foreground-subtle/60`,children:a(`system.title`)})}),T&&I(`div`,{className:`pt-3 mb-1 mx-2 border-t border-border/60`}),ue.map(e=>{let n=e.icon,r=ae(e.path),i=e.path===`/system/addons`;return M(`button`,{"data-testid":`nav-${e.path.replace(/^\//,``).replace(/\//g,`-`)}`,onClick:()=>{t(e.path),f(!1)},className:E(r),title:T?e.label:void 0,children:[I(n,{className:`h-3.5 w-3.5 shrink-0 ${r?`text-primary`:``}`}),!T&&M(xe,{children:[I(`span`,{className:`flex-1 text-left`,children:e.label}),i&&_>0&&I(`span`,{className:`ml-auto rounded-full bg-primary px-1.5 py-0.5 text-[9px] font-bold text-primary-foreground leading-none`,children:_})]}),T&&i&&_>0&&I(`span`,{className:`absolute mt-[-14px] ml-3 h-2 w-2 rounded-full bg-primary`})]},e.path)}),x&&x.length>0&&!T&&I(`div`,{className:`pt-4 pb-1.5 px-2.5`,children:I(`span`,{className:`text-[10px] font-semibold uppercase tracking-widest text-foreground-subtle/60`,children:a(`nav.addonPages`,`Addon Pages`)})}),T&&x&&x.length>0&&I(`div`,{className:`pt-3 mb-1 mx-2 border-t border-border/60`}),x?.map(e=>{let n=ae(e.path),r=rs[e.icon]??xi;return M(`button`,{onClick:()=>{t(e.path),f(!1)},className:E(n),title:T?e.label:void 0,children:[I(r,{className:`h-3.5 w-3.5 shrink-0 ${n?`text-primary`:``}`}),!T&&e.label]},e.id)})]}),M(`div`,{className:`border-t border-border ${T?`p-1.5`:`p-2`} space-y-0.5`,children:[M(`button`,{onClick:()=>i?.toggleMode(),className:E(!1),title:T?fe[de]:void 0,children:[(()=>{let e=ns[de];return I(e,{className:`h-3.5 w-3.5 shrink-0`})})(),!T&&I(`span`,{children:fe[de]})]}),I(ts,{variant:`sidebar`,compact:T}),M(`button`,{type:`button`,onClick:()=>t(`/system/my-access`),className:E(ae(`/system/my-access`)),title:T?a(`system.myAccess`,`My access`):void 0,children:[I(Ti,{className:`h-3.5 w-3.5 shrink-0`}),!T&&I(`span`,{className:`truncate`,children:a(`system.myAccess`,`My access`)})]}),M(`button`,{onClick:ie,className:E(!1).replace(`hover:text-foreground`,`hover:text-danger`),title:T?n?.username??`Logout`:void 0,children:[I(hi,{className:`h-3.5 w-3.5 shrink-0`}),!T&&I(`span`,{className:`truncate`,children:n?.username??`User`})]}),I(`div`,{className:`pt-1 text-[10px] text-foreground-disabled select-none ${T?`text-center`:`px-2`}`,title:`admin-ui v1.1.19`,children:T?`1.1.19`:`v1.1.19`})]})]});return M(`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&&I(`aside`,{className:`flex flex-col border-r border-border bg-surface/80 backdrop-blur-sm shrink-0 transition-[width] duration-150 ease-out ${T?`w-12`:`w-48`}`,children:O}),o&&I(C,{open:d,onClose:()=>f(!1),width:`w-64`,children:O}),M(`div`,{className:`flex flex-1 flex-col min-w-0`,children:[l&&M(`div`,{className:`flex items-center justify-center gap-2 bg-danger/90 px-3 py-2 text-[12px] font-medium text-white shrink-0`,children:[I(Ni,{className:`h-3.5 w-3.5`}),I(`span`,{children:u?a(`connection.reconnecting`,`Reconnecting…`):a(`connection.disconnected`,`Server unreachable — reconnecting…`)}),I(pi,{className:`h-3.5 w-3.5 animate-spin`})]}),o&&M(`header`,{className:`flex items-center h-12 border-b border-border px-3 shrink-0 bg-surface/80 backdrop-blur-sm`,children:[I(`button`,{onClick:()=>f(!0),className:`p-1.5 -ml-1.5 rounded-md hover:bg-surface-hover text-foreground-muted transition-colors`,"aria-label":`Open menu`,children:I(gi,{className:`h-5 w-5`})}),I(`div`,{className:`flex-1 flex justify-center`,children:I(`img`,{src:i?.resolvedMode===`light`?`/brand/logo-horizontal-light.svg`:`/brand/logo-horizontal-dark.svg`,alt:`CamStack`,className:`h-7`})}),I(ts,{})]}),I(`main`,{className:`relative flex-1 min-h-0 overscroll-contain bg-background ${oe?`overflow-hidden`:`overflow-auto`}`,children:I(Tn,{})})]})]})}function $({children:e,requireAdmin:t}){let{user:n,loading:r,mustChangePassword:i}=ba(),a=W();return r?I(`div`,{className:`flex h-screen items-center justify-center bg-background text-foreground-subtle`,children:`Loading...`}):n?i&&a.pathname!==`/change-password`?I(K,{to:`/change-password`,replace:!0}):t&&!n.isAdmin?I(K,{to:`/access-denied`,replace:!0}):I(xe,{children:e}):I(K,{to:`/login`,replace:!0})}function as(){let e=G();return M(`div`,{className:`flex flex-col items-center justify-center text-foreground py-16 px-4`,children:[I(`div`,{className:`flex h-16 w-16 items-center justify-center rounded-2xl bg-danger/10 mb-4`,children:I(Ei,{className:`h-8 w-8 text-danger`})}),I(`h1`,{className:`text-xl font-bold`,children:`Access Denied`}),I(`p`,{className:`mt-2 text-sm text-foreground-subtle`,children:`You don't have permission to access this page.`}),I(`button`,{onClick:()=>e(`/dashboard`),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:`Go to Dashboard`})]})}P();var os=8;function ss(){let{user:e,mustChangePassword:t,clearMustChangePassword:n,logout:r}=ba(),i=w(),a=G(),[s,c]=k(``),[l,u]=k(``),[d,f]=k(!1),[p,m]=k(``),h=o({onSuccess:()=>{n(),a(`/dashboard`,{replace:!0})},onError:e=>{m(e instanceof Error?e.message:`Could not change password`)}});return I(`div`,{className:`flex min-h-screen items-center justify-center bg-background p-4`,children:M(`div`,{className:`w-full max-w-sm`,children:[I(`div`,{className:`flex justify-center mb-8`,children:I(`img`,{src:i?.resolvedMode===`light`?`/brand/logo-horizontal-light.svg`:`/brand/logo-horizontal-dark.svg`,alt:`CamStack Admin`,className:`h-12`})}),M(`form`,{onSubmit:async t=>{if(t.preventDefault(),m(``),!e){m(`Not signed in`);return}if(s.length<os){m(`Password must be at least ${os} characters`);return}if(s!==l){m(`The two passwords do not match`);return}if(s===`changeme`){m(`Choose a password different from the seed default`);return}h.mutate({id:e.id,newPassword:s})},className:`space-y-4 rounded-xl border border-border bg-surface p-6 shadow-xl shadow-black/10`,children:[M(`div`,{className:`space-y-1`,children:[I(`h1`,{className:`text-sm font-semibold text-foreground`,children:`Set a new password`}),I(`p`,{className:`text-xs text-foreground-subtle`,children:t?`You must rotate the seed password before continuing.`:`Choose a new password for your account.`})]}),p&&I(`div`,{className:`rounded-md bg-danger/10 border border-danger/20 px-3 py-2 text-xs text-danger`,children:p}),M(`div`,{className:`space-y-1.5`,children:[I(`label`,{className:`text-xs font-medium text-foreground-subtle`,children:`New password`}),M(`div`,{className:`relative`,children:[I(`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}),I(`button`,{type:`button`,onClick:()=>f(!d),className:`absolute right-2.5 top-1/2 -translate-y-1/2 text-foreground-subtle hover:text-foreground transition-colors`,tabIndex:-1,children:I(d?oi:si,{className:`h-4 w-4`})})]})]}),M(`div`,{className:`space-y-1.5`,children:[I(`label`,{className:`text-xs font-medium text-foreground-subtle`,children:`Confirm new password`}),I(`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`})]}),I(`button`,{"data-testid":`change-password-submit`,type:`submit`,disabled:h.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:h.isPending?`Saving…`:`Save and continue`}),t&&I(`button`,{type:`button`,onClick:()=>{r(),a(`/login`,{replace:!0})},className:`w-full text-xs text-foreground-subtle hover:text-foreground transition-colors`,children:`Sign out instead`})]})]})})}P();function cs(){let{login:e,verifyTotp:t}=ba(),n=w(),r=G(),i=new URLSearchParams(window.location.search).get(`next`),[a,o]=k(``),[s,c]=k(``),[l,u]=k(!1),[d,f]=k(``),[p,m]=k(!1),[h,g]=k(`credentials`),[_,v]=k(``),[y,b]=k(``);return I(`div`,{className:`flex min-h-screen items-center justify-center bg-background p-4`,children:M(`div`,{className:`w-full max-w-sm`,children:[I(`div`,{className:`flex justify-center mb-8`,children:I(`img`,{src:n?.resolvedMode===`light`?`/brand/logo-horizontal-light.svg`:`/brand/logo-horizontal-dark.svg`,alt:`CamStack Admin`,className:`h-12`})}),h===`credentials`?M(`form`,{onSubmit:async t=>{t.preventDefault(),f(``),m(!0);try{let t=await e(a,s);if(t.kind===`totp-required`){v(t.challengeToken),g(`totp`);return}s===`changeme`?r(`/change-password`,{replace:!0}):i?window.location.assign(i):r(`/dashboard`,{replace:!0})}catch(e){f(e instanceof Error?e.message:`Login failed`)}finally{m(!1)}},className:`space-y-4 rounded-xl border border-border bg-surface p-6 shadow-xl shadow-black/10`,children:[d&&I(`div`,{className:`rounded-md bg-danger/10 border border-danger/20 px-3 py-2 text-xs text-danger`,children:d}),M(`div`,{className:`space-y-1.5`,children:[I(`label`,{className:`text-xs font-medium text-foreground-subtle`,children:`Username`}),I(`input`,{"data-testid":`login-username`,type:`text`,placeholder:`Username`,value:a,onChange:e=>o(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})]}),M(`div`,{className:`space-y-1.5`,children:[I(`label`,{className:`text-xs font-medium text-foreground-subtle`,children:`Password`}),M(`div`,{className:`relative`,children:[I(`input`,{"data-testid":`login-password`,type:l?`text`:`password`,placeholder:`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`}),I(`button`,{type:`button`,onClick:()=>u(!l),className:`absolute right-2.5 top-1/2 -translate-y-1/2 text-foreground-subtle hover:text-foreground transition-colors`,tabIndex:-1,children:I(l?oi:si,{className:`h-4 w-4`})})]})]}),I(`button`,{"data-testid":`login-submit`,type:`submit`,disabled:p||!a||!s,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:p?M(`span`,{className:`flex items-center justify-center gap-2`,children:[I(`span`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-primary-foreground/30 border-t-primary-foreground`}),`Logging in...`]}):`Log in`})]}):M(`form`,{onSubmit:async e=>{e.preventDefault(),f(``),m(!0);try{await t(_,y.trim()),i?window.location.assign(i):r(`/dashboard`,{replace:!0})}catch(e){f(e instanceof Error?e.message:`TOTP verification failed`),b(``)}finally{m(!1)}},className:`space-y-4 rounded-xl border border-border bg-surface p-6 shadow-xl shadow-black/10`,children:[M(`div`,{className:`flex items-center gap-2 pb-1 border-b border-border`,children:[I(Oi,{className:`h-4 w-4 text-primary`}),I(`div`,{className:`text-sm font-medium text-foreground`,children:`Two-factor authentication`})]}),M(`p`,{className:`text-xs text-foreground-subtle`,children:[`Enter the 6-digit code from your authenticator app to finish signing in as`,` `,I(`span`,{className:`font-mono text-foreground`,children:a}),`.`]}),d&&I(`div`,{className:`rounded-md bg-danger/10 border border-danger/20 px-3 py-2 text-xs text-danger`,children:d}),M(`div`,{className:`space-y-1.5`,children:[I(`label`,{className:`text-xs font-medium text-foreground-subtle`,children:`Authentication code`}),I(`input`,{"data-testid":`login-totp`,type:`text`,inputMode:`numeric`,autoComplete:`one-time-code`,placeholder:`123456`,value:y,onChange:e=>b(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})]}),I(`button`,{"data-testid":`login-totp-submit`,type:`submit`,disabled:p||y.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:p?M(`span`,{className:`flex items-center justify-center gap-2`,children:[I(`span`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-primary-foreground/30 border-t-primary-foreground`}),`Verifying...`]}):`Verify and sign in`}),M(`button`,{type:`button`,onClick:()=>{g(`credentials`),v(``),b(``),f(``)},className:`w-full flex items-center justify-center gap-1.5 text-xs text-foreground-subtle hover:text-foreground transition-colors`,children:[I(Gr,{className:`h-3 w-3`}),`Back to username + password`]})]}),h===`credentials`&&I(ls,{}),M(`p`,{className:`mt-6 text-center text-[10px] text-foreground-subtle/50`,children:[`CamStack v`,`1.1.19`]})]})})}function ls(){let e=(x.auth.listProviders.useQuery().data??[]).filter(e=>e.flowType===`redirect`);return e.length===0?null:M(`div`,{className:`mt-6 space-y-3`,children:[M(`div`,{className:`flex items-center gap-3`,children:[I(`div`,{className:`h-px flex-1 bg-border`}),I(`span`,{className:`text-[10px] uppercase tracking-wider text-foreground-subtle`,children:`Or continue with`}),I(`div`,{className:`h-px flex-1 bg-border`})]}),I(`div`,{className:`space-y-2`,children:e.map(e=>M(`a`,{href:`/addon/${encodeURIComponent(e.id)}/start`,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:[I(Ti,{className:`h-4 w-4 text-primary`}),e.name]},e.id))})]})}P();var us=F(()=>i(()=>import(`./Dashboard-DOxZXqyK.js`).then(e=>({default:e.DashboardPage})),__vite__mapDeps([0,1,2,3,4,5]))),ds=F(()=>i(()=>import(`./Devices-C3jy25Bw.js`).then(e=>({default:e.DevicesPage})),__vite__mapDeps([6,1,2,3,4,7,8,9,10,11,12]))),fs=F(()=>i(()=>import(`./Integrations-DsYPT3r2.js`).then(e=>({default:e.IntegrationsPage})),__vite__mapDeps([13,1,2,3,4,7,8,9,10,5,14,15,16,17,18,11,19,20,12]))),ps=F(()=>i(()=>import(`./IntegrationDetail-lPxvINqs.js`).then(e=>({default:e.IntegrationDetailPage})),__vite__mapDeps([21,1,2,3,4,7,8,9,10,5,14,15,16,17,18,22]))),ms=F(()=>i(()=>import(`./Pipeline-BI2SWq0a.js`).then(e=>({default:e.PipelinePage})),__vite__mapDeps([23,24,1,2,3,4,15,25,26,5,18,27,16,28,9,29,30,11,31,32,33,12,34]))),hs=F(()=>i(()=>import(`./DeviceDetail-DQbwOLvC.js`).then(e=>({default:e.DeviceDetailPage})),__vite__mapDeps([35,1,2,3,4,36,27,8,16,37,38,7,9,10,26,5,22,18,32,19,33,12]))),gs=F(()=>i(()=>import(`./Showroom-DrEy5G_m.js`).then(e=>({default:e.ShowroomPage})),__vite__mapDeps([39,36,27,8,16,37,7,9,10,18,1,2,3,4,19]))),_s=F(()=>i(()=>import(`./EmbedPlayerPage-C4PqItRF.js`).then(e=>({default:e.EmbedPlayerPage})),__vite__mapDeps([40,1,2,3,4]))),vs=F(()=>i(()=>import(`./DetectionIntelligence-DqOJ15Er.js`).then(e=>({default:e.DetectionIntelligencePage})),__vite__mapDeps([41,1,2,3,4,26,5,37,29,30,11]))),ys=F(()=>i(()=>import(`./Addons-CF3JeZJs.js`).then(e=>({default:e.AddonsPage})),__vite__mapDeps([42,1,2,3,4,15,5,16,28,43,11,31,18,32]))),bs=F(()=>i(()=>import(`./MyAccess-0WTyoQQ1.js`).then(e=>({default:e.MyAccessPage})),__vite__mapDeps([44,1,2,3,4,45,46,47,26,11]))),xs=F(()=>i(()=>import(`./Logs-5bYEoeMq.js`).then(e=>({default:e.LogsPage})),__vite__mapDeps([48,1,2,3,4,11]))),Ss=F(()=>i(()=>import(`./Identity-BEvc1UzE.js`).then(e=>({default:e.IdentityPage})),__vite__mapDeps([49,1,2,3,4,45,46,47,50,5,16,30,11,31,18,32,51]))),Cs=F(()=>i(()=>import(`./Network-BggdRVzo.js`).then(e=>({default:e.NetworkPage})),__vite__mapDeps([52,1,2,3,4,38,46,50,5,16,30,11,31,18,32,9,37,10,51]))),ws=F(()=>i(()=>import(`./Integrations-CNJgYeN5.js`).then(e=>({default:e.IntegrationsPage})),__vite__mapDeps([53,1,2,3,4,26,50,5,16,30,11,31,18,32,8,10,51,17,20]))),Ts=F(()=>i(()=>import(`./Data-t_YbtZxL.js`).then(e=>({default:e.DataPage})),__vite__mapDeps([54,1,2,3,4,15,25,26,5,18,22,11,51,34]))),Es=F(()=>i(()=>import(`./Settings-5VzV0eVZ.js`).then(e=>({default:e.SettingsPage})),__vite__mapDeps([55,1,2,3,4,11,31,18,32]))),Ds=F(()=>i(()=>import(`./Cluster-tcDpGJRa.js`).then(e=>({default:e.ClusterPage})),__vite__mapDeps([56,24,1,2,3,4,26,8,16,22,9,43,31,18,32,34]))),Os=F(()=>i(()=>import(`./Capabilities-BEyROSgm.js`).then(e=>({default:e.CapabilitiesPage})),__vite__mapDeps([57,1,2,3,4,45,11]))),ks=F(()=>i(()=>import(`./NotificationTargets-CI-nn-rf.js`).then(e=>({default:e.NotificationTargetsPage})),__vite__mapDeps([58,1,2,3,4,45,26,5,28,11]))),As=new Se({defaultOptions:{queries:{gcTime:0,staleTime:0,retry:!1,refetchOnWindowFocus:!1}}});function js({field:e,value:t,onChange:n,disabled:r}){return I(Gi,{field:e,value:t,onChange:n,disabled:r})}function Ms({field:e,value:t,onChange:n,disabled:r}){return I(Vi,{field:e,value:t,onChange:n,disabled:r})}var Ns={"pipeline-editor":js,"model-selector":Ms};function Ps({children:e}){let{user:t,logout:n}=ba(),[r,i]=k(0),a=D(t?.username??null);L(()=>{let e=t?.username??null;e!==a.current&&(a.current=e,da(),i(e=>e+1))},[t]);let o=N(()=>ua(),[r]),[s,c]=k(!1),[l,u]=k(null);return L(()=>{if(c(!1),u(null),!t){c(!0);return}let e=!1;return o.init().then(()=>{e||c(!0)},t=>{if(e)return;let r=t instanceof Error?t.message:String(t),i=t?.data?.code;if(i===`UNAUTHORIZED`||i===`FORBIDDEN`||/UNAUTHORIZED|FORBIDDEN/.test(r)){n();return}u(r),c(!0)}),()=>{e=!0}},[o,t,n]),Sa(O(()=>{da(),i(e=>e+1),As.invalidateQueries()},[])),I(De,{system:o,children:I(x.Provider,{client:o.trpcClient,queryClient:As,children:M(f,{children:[s?e:I(Fs,{}),s&&I(Xi,{}),l!==null&&s&&M(`div`,{className:`fixed bottom-4 right-4 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:[`Boot probe failed: `,l,`. Retrying in background.`]})]})})})}function Fs(){return I(`div`,{className:`flex min-h-screen items-center justify-center bg-background`,children:M(`div`,{className:`flex items-center gap-3 text-sm text-foreground-subtle`,children:[I(`span`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-primary/30 border-t-primary`}),`Connecting…`]})})}function Is(){return I(`div`,{className:`flex min-h-screen items-center justify-center bg-background`,children:I(`span`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-primary/30 border-t-primary`})})}function Ls(){return I(a,{defaultMode:`dark`,children:I(Ee,{client:As,children:I(ya,{children:I(Ps,{children:I(y,{children:M(d,{renderers:Ns,children:[I(gr,{children:I(ye,{fallback:I(Is,{}),children:M(Dn,{children:[I(q,{path:`/login`,element:I(cs,{})}),I(q,{path:`/change-password`,element:I($,{children:I(ss,{})})}),I(q,{path:`/showroom`,element:I(gs,{})}),I(q,{path:`/embed/player`,element:I(_s,{})}),M(q,{element:I($,{children:I(is,{})}),children:[I(q,{index:!0,element:I(K,{to:`/dashboard`,replace:!0})}),I(q,{path:`/access-denied`,element:I(as,{})}),I(q,{path:`/dashboard`,element:I(us,{})}),I(q,{path:`/devices`,element:I(ds,{})}),I(q,{path:`/cameras`,element:I(K,{to:`/devices`,replace:!0})}),I(q,{path:`/integrations`,element:I(fs,{})}),I(q,{path:`/integrations/:integrationId`,element:I(ps,{})}),I(q,{path:`/pipeline`,element:I(ms,{})}),I(q,{path:`/devices/:deviceId`,element:I(hs,{})}),I(q,{path:`/system/logs`,element:I($,{requireAdmin:!0,children:I(xs,{})})}),I(q,{path:`/system/addons`,element:I($,{requireAdmin:!0,children:I(ys,{})})}),I(q,{path:`/system/settings`,element:I($,{requireAdmin:!0,children:I(Es,{})})}),I(q,{path:`/system/cluster`,element:I($,{requireAdmin:!0,children:I(Ds,{})})}),I(q,{path:`/system/capabilities`,element:I($,{requireAdmin:!0,children:I(Os,{})})}),I(q,{path:`/system/notifications`,element:I($,{requireAdmin:!0,children:I(ks,{})})}),I(q,{path:`/system/identity`,element:I($,{requireAdmin:!0,children:I(Ss,{})})}),I(q,{path:`/system/my-access`,element:I(bs,{})}),I(q,{path:`/system/network`,element:I($,{requireAdmin:!0,children:I(Cs,{})})}),I(q,{path:`/system/integrations`,element:I($,{requireAdmin:!0,children:I(ws,{})})}),I(q,{path:`/system/data`,element:I($,{requireAdmin:!0,children:I(Ts,{})})}),I(q,{path:`/system/users`,element:I(K,{to:`/system/identity?tab=users`,replace:!0})}),I(q,{path:`/system/api-keys`,element:I(K,{to:`/system/identity?tab=api-keys`,replace:!0})}),I(q,{path:`/system/authentication`,element:I(K,{to:`/system/identity?tab=authentication`,replace:!0})}),I(q,{path:`/system/linked-sessions`,element:I(K,{to:`/system/identity?tab=linked-sessions`,replace:!0})}),I(q,{path:`/system/remote-access`,element:I(K,{to:`/system/network?tab=remote-access`,replace:!0})}),I(q,{path:`/system/turn`,element:I(K,{to:`/system/network?tab=turn`,replace:!0})}),I(q,{path:`/system/storage`,element:I(K,{to:`/system/data?tab=storage`,replace:!0})}),I(q,{path:`/system/backup`,element:I(K,{to:`/system/data?tab=backup`,replace:!0})}),I(q,{path:`/detection-intelligence`,element:I($,{requireAdmin:!0,children:I(vs,{})})}),I(q,{path:`/addon/:pagePath`,element:I($,{requireAdmin:!0,children:I(ka,{})})})]})]})})}),I(ta,{})]})})})})})})}var Rs={nav:{dashboard:`Dashboard`,integrations:`Integrations`,metrics:`Metrics`,camerasSection:`Input systems`},system:{title:`System`,addons:`Addons`,agents:`Agents`,processes:`Processes`,logs:`Logs`,users:`Users`,settings:`Settings`,repl:`REPL`,models:`Models`,integrations:`External systems`},common:{save:`Save`,cancel:`Cancel`,delete:`Delete`,enable:`Enable`,disable:`Disable`,edit:`Edit`,add:`Add`,remove:`Remove`,confirm:`Confirm`,close:`Close`,back:`Back`,next:`Next`,search:`Search`,filter:`Filter`,reset:`Reset`,apply:`Apply`,submit:`Submit`,loading:`Loading…`,error:`Error`,success:`Success`,warning:`Warning`,info:`Info`,noData:`No data available`,noResults:`No results found`,retry:`Retry`,refresh:`Refresh`,copy:`Copy`,copied:`Copied!`,yes:`Yes`,no:`No`},connection:{disconnected:`Server unreachable — reconnecting…`,connected:`Connected`},status:{online:`Online`,offline:`Offline`,connecting:`Connecting`,error:`Error`,disabled:`Disabled`,enabled:`Enabled`,active:`Active`,inactive:`Inactive`,running:`Running`,stopped:`Stopped`,pending:`Pending`,unknown:`Unknown`},auth:{login:`Login`,logout:`Logout`,username:`Username`,password:`Password`,signIn:`Sign In`,invalidCredentials:`Invalid username or password`},theme:{dark:`Dark`,light:`Light`,system:`System`},language:{select:`Language`,en:`English`,it:`Italian`},pages:{dashboard:{title:`Dashboard`,subtitle:`Overview of all devices and their status`},integrations:{title:`Integrations`,subtitle:`Manage camera sources and provider connections`},metrics:{title:`Metrics`,subtitle:`System performance and usage statistics`},agents:{title:`Agents`,subtitle:`Manage distributed processing agents`},addons:{title:`Addons`,subtitle:`Extend functionality with addon modules`},settings:{title:`Settings`,subtitle:`Configure system-wide preferences`},users:{title:`Users`,subtitle:`Manage user accounts and permissions`},logs:{title:`Logs`,subtitle:`View system and device logs`}},integrations:{preview:`Preview`,snapshotUnavailable:`Snapshot unavailable`,noSnapshot:`No snapshot`,lastSnapshot:`Last snapshot:`,offline:`Offline`,active:`Active`,available:`Available`,noDevices:`No devices.`,addFirstDevice:`Add your first device to get started.`,import:`+ Import`,noProviders:`No providers available. Install a provider addon.`,manage:`Manage`,integrationName:`Integration name`,integrationNamePlaceholder:`e.g. Garage Server`,connectionSuccess:`Connection successful!`,errorPrefix:`Error:`,back:`Back`,testing:`Testing...`,testConnection:`Test connection`,forward:`Next`,searchingDevices:`Searching for devices...`,foundDevices:`Found {{count}} devices. Select the ones to import.`,noDevicesFound:`No devices found.`,skip:`Skip`,importSelected:`Import selected`,newIntegration:`New Integration`,configureIntegration:`Configure Integration`,importDevices:`Import Devices`,addDevice:`Add device`,name:`Name`,namePlaceholder:`e.g. Entrance Camera`,snapshotUrlOptional:`Snapshot URL (optional)`,streamUrls:`Stream URLs`,addStream:`Add stream`,cancel:`Cancel`,saving:`Saving...`,save:`Save`,saveAndNew:`Save and new`,test:`Test`,stream:`Stream {{number}}:`,devices:`devices`,rediscover:`Rediscover`,config:`Config`,integrationNotFound:`Integration not found.`,configComingSoon:`Config coming soon.`,providerConfig:`Provider Config`,editConfig:`Edit configuration`,relinkBrokerHelp:`Choose the broker this integration connects through. Picking a different broker re-points it and restarts the addon.`,currentBroker:`Current broker`,relinkFailed:`Failed to update broker link.`,noBrokerKind:`This integration declares device-adoption but its addon manifest has no brokerKind.`}},zs={nav:{dashboard:`Dashboard`,integrations:`Integrazioni`,metrics:`Metriche`,camerasSection:`Sistemi in input`},system:{title:`Sistema`,addons:`Addon`,agents:`Agenti`,processes:`Processi`,logs:`Log`,users:`Utenti`,settings:`Impostazioni`,repl:`REPL`,models:`Modelli`,integrations:`Sistemi esterni`},common:{save:`Salva`,cancel:`Annulla`,delete:`Elimina`,enable:`Abilita`,disable:`Disabilita`,edit:`Modifica`,add:`Aggiungi`,remove:`Rimuovi`,confirm:`Conferma`,close:`Chiudi`,back:`Indietro`,next:`Avanti`,search:`Cerca`,filter:`Filtra`,reset:`Reimposta`,apply:`Applica`,submit:`Invia`,loading:`Caricamento…`,error:`Errore`,success:`Successo`,warning:`Avviso`,info:`Info`,noData:`Nessun dato disponibile`,noResults:`Nessun risultato trovato`,retry:`Riprova`,refresh:`Aggiorna`,copy:`Copia`,copied:`Copiato!`,yes:`Sì`,no:`No`},connection:{disconnected:`Server non raggiungibile — riconnessione in corso…`,connected:`Connesso`},status:{online:`Online`,offline:`Offline`,connecting:`Connessione in corso`,error:`Errore`,disabled:`Disabilitato`,enabled:`Abilitato`,active:`Attivo`,inactive:`Inattivo`,running:`In esecuzione`,stopped:`Fermato`,pending:`In attesa`,unknown:`Sconosciuto`},auth:{login:`Accesso`,logout:`Esci`,username:`Nome utente`,password:`Password`,signIn:`Accedi`,invalidCredentials:`Nome utente o password non validi`},theme:{dark:`Scuro`,light:`Chiaro`,system:`Sistema`},language:{select:`Lingua`,en:`Inglese`,it:`Italiano`},pages:{dashboard:{title:`Dashboard`,subtitle:`Panoramica di tutti i dispositivi e il loro stato`},integrations:{title:`Integrazioni`,subtitle:`Gestisci le sorgenti video e le connessioni ai provider`},metrics:{title:`Metriche`,subtitle:`Statistiche di prestazioni e utilizzo del sistema`},agents:{title:`Agenti`,subtitle:`Gestisci gli agenti di elaborazione distribuita`},addons:{title:`Addon`,subtitle:`Estendi le funzionalità con moduli addon`},settings:{title:`Impostazioni`,subtitle:`Configura le preferenze di sistema`},users:{title:`Utenti`,subtitle:`Gestisci gli account utente e i permessi`},logs:{title:`Log`,subtitle:`Visualizza i log di sistema e dei dispositivi`}},integrations:{preview:`Anteprima`,snapshotUnavailable:`Snapshot non disponibile`,noSnapshot:`Nessuno snapshot`,lastSnapshot:`Ultimo snapshot:`,offline:`Offline`,active:`Attivi`,available:`Disponibili`,noDevices:`Nessun dispositivo.`,addFirstDevice:`Aggiungi il primo dispositivo per iniziare.`,import:`+ Importa`,noProviders:`Nessun provider disponibile. Installa un addon provider.`,manage:`Gestisci`,integrationName:`Nome integrazione`,integrationNamePlaceholder:`es. Server Garage`,connectionSuccess:`Connessione riuscita!`,errorPrefix:`Errore:`,back:`Indietro`,testing:`Test...`,testConnection:`Test connessione`,forward:`Avanti`,searchingDevices:`Ricerca dispositivi in corso...`,foundDevices:`Trovati {{count}} dispositivi. Seleziona quelli da importare.`,noDevicesFound:`Nessun dispositivo trovato.`,skip:`Salta`,importSelected:`Importa selezionati`,newIntegration:`Nuova Integrazione`,configureIntegration:`Configura Integrazione`,importDevices:`Importa Dispositivi`,addDevice:`Aggiungi dispositivo`,name:`Nome`,namePlaceholder:`es. Camera Ingresso`,snapshotUrlOptional:`Snapshot URL (opzionale)`,streamUrls:`Stream URLs`,addStream:`Aggiungi stream`,cancel:`Annulla`,saving:`Salvataggio...`,save:`Salva`,saveAndNew:`Salva e nuova`,test:`Test`,stream:`Stream {{number}}:`,devices:`dispositivi`,rediscover:`Riscopri`,config:`Config`,integrationNotFound:`Integrazione non trovata.`,configComingSoon:`Config coming soon.`,providerConfig:`Provider Config`,editConfig:`Modifica configurazione`,relinkBrokerHelp:`Scegli il broker tramite cui questa integrazione si connette. Selezionando un broker diverso la si ricollega e riavvia l’addon.`,currentBroker:`Broker attuale`,relinkFailed:`Aggiornamento del collegamento al broker non riuscito.`,noBrokerKind:`Questa integrazione dichiara device-adoption ma il manifest dell’addon non ha un brokerKind.`}},Bs=`camstack_language`,Vs=localStorage.getItem(Bs)??`en`;Q.use(Vo).init({resources:{en:{translation:Rs},it:{translation:zs}},lng:Vs,fallbackLng:`en`,interpolation:{escapeValue:!1}}),Q.on(`languageChanged`,e=>{localStorage.setItem(Bs,e)}),P(),window.__camstackUiLibrary=oe,window.__camstackSdk=p,window.__camstackTypes=Me,je(document.getElementById(`root`)).render(I(pe,{children:I(Ls,{})}));export{ni as A,Wr as B,di as C,ai as D,oi as E,Zr as F,Er as G,vr as H,Yr as I,Jr as L,ei as M,$r as N,ii as O,Qr as P,Kr as R,fi as S,si as T,G as U,J as V,en as W,yi as _,Ni as a,mi as b,Ai as c,Ti as d,wi as f,bi as g,xi as h,Pi as i,ti as j,ri as k,Oi as l,Si as m,Go as n,Mi as o,Ci as p,ba as r,ji as s,Yo as t,Di as u,vi as v,ui as w,pi as x,hi as y,Gr as z};
|