@camstack/addon-admin-ui 1.2.482 → 1.2.484

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/dist/assets/{AddonAssetIcon-5z0Vljts.js → AddonAssetIcon-3vq-0y-v.js} +1 -1
  2. package/dist/assets/Addons-Bk1BZHnK.js +5 -0
  3. package/dist/assets/{AdminPage-BGeHUp9l.js → AdminPage-QmLz5qjj.js} +1 -1
  4. package/dist/assets/{AdminSectionedPage-DDyHO_ip.js → AdminSectionedPage-DYCbg6TR.js} +1 -1
  5. package/dist/assets/AiProfiles-ZWSpLyRc.js +3 -0
  6. package/dist/assets/{BrokerForm-B2kpU1t2.js → BrokerForm-C0PFW-8b.js} +1 -1
  7. package/dist/assets/Build-Dnm_I3D9.js +40 -0
  8. package/dist/assets/{Calendars-iNmeiE9F.js → Calendars-DvjofwPU.js} +1 -1
  9. package/dist/assets/{Cluster-VomkBaK2.js → Cluster-CrfYNPnJ.js} +1 -1
  10. package/dist/assets/{CompositionBlockEditor-BkEr_zwe.js → CompositionBlockEditor-BcDYEyOm.js} +1 -1
  11. package/dist/assets/{CompositionEditorPage-DbJxXBa9.js → CompositionEditorPage-DpKcmhYi.js} +1 -1
  12. package/dist/assets/Data-BqyCS1VW.js +2 -0
  13. package/dist/assets/DeviceDetail-DfLnQGqY.js +2 -0
  14. package/dist/assets/{DeviceDoActionFields-CLGT6wrU.js → DeviceDoActionFields-CJj4-67I.js} +1 -1
  15. package/dist/assets/{Devices-CeNeFo6w.js → Devices-DQnrgH0r.js} +1 -1
  16. package/dist/assets/{EmbedPlayerPage-DhPeEblh.js → EmbedPlayerPage-D6aNp4TG.js} +1 -1
  17. package/dist/assets/HelperWizard-BM-npSft.js +2 -0
  18. package/dist/assets/History-DZ_p9s8N.js +1 -0
  19. package/dist/assets/Identity-B-pYFi7F.js +1 -0
  20. package/dist/assets/IntegrationDetail-CvtkeTns.js +1 -0
  21. package/dist/assets/{IntegrationHub-C0mqR6_4.js → IntegrationHub-Crv-Ut8D.js} +1 -1
  22. package/dist/assets/Integrations-BpVqgjFG.js +1 -0
  23. package/dist/assets/Integrations-tTRZOlex.js +1 -0
  24. package/dist/assets/Library-BFFl1PFs.js +1 -0
  25. package/dist/assets/Locations-sD9PMtF8.js +3 -0
  26. package/dist/assets/{Logs-Bdustfdg.js → Logs-ByKgDjzR.js} +1 -1
  27. package/dist/assets/{MaskShapeCanvas-Tcd9Y5RA.js → MaskShapeCanvas-CzHUGkc7.js} +1 -1
  28. package/dist/assets/{MotionZonesSettings-CRoT6tmj.js → MotionZonesSettings-sCDWBSMu.js} +1 -1
  29. package/dist/assets/MyAccess-_FlzEnLb.js +2 -0
  30. package/dist/assets/Network-U-uppn3V.js +1 -0
  31. package/dist/assets/NodeAddonsSettingsPanel-DOuw1uWS.js +1 -0
  32. package/dist/assets/Notifications-AkbB0Ya7.js +1 -0
  33. package/dist/assets/Pipeline-CMwJb0kX.js +1 -0
  34. package/dist/assets/{PrivacyMaskSettings-D5ozyRW7.js → PrivacyMaskSettings-DH3PZaEy.js} +1 -1
  35. package/dist/assets/Recordings-BJVAQK7Q.js +1 -0
  36. package/dist/assets/{ScanNetworkModal-tiMZttK7.js → ScanNetworkModal-qjbQd1Q4.js} +1 -1
  37. package/dist/assets/{SceneMonitorEditor-CrwhZjau.js → SceneMonitorEditor-CLWf6Z9-.js} +1 -1
  38. package/dist/assets/SessionsList-DSaSTSfg.js +2 -0
  39. package/dist/assets/{Showroom-BuzmfCLW.js → Showroom-yf_2TnT8.js} +1 -1
  40. package/dist/assets/System-BKoiOnT6.js +1 -0
  41. package/dist/assets/{Terminal-BxmZLjAl.js → Terminal-CGMRAh-D.js} +3 -3
  42. package/dist/assets/{Viewer-DKhlTfCg.js → Viewer-CTvuCeo6.js} +1 -1
  43. package/dist/assets/{_virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-ChRFbBue.js → _virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-DAW63rZZ.js} +1 -1
  44. package/dist/assets/{addon-icons-context-DY_rAsap.js → addon-icons-context-Bzdujcmt.js} +1 -1
  45. package/dist/assets/{archive-W1ZaOIy6.js → archive-dvL2Bchb.js} +1 -1
  46. package/dist/assets/{assignment-candidates-BpQXQnWA.js → assignment-candidates-Zc8Nwi6m.js} +1 -1
  47. package/dist/assets/{authed-media-vxjhgNZq.js → authed-media-B6hJJcft.js} +1 -1
  48. package/dist/assets/{bell-off-BpuHdEmA.js → bell-off-C3flB_OF.js} +1 -1
  49. package/dist/assets/{board-model-BpmGz42d.js → board-model-h3RS4HY8.js} +1 -1
  50. package/dist/assets/{boxes-BP6lUc_5.js → boxes-BiMbpzNh.js} +1 -1
  51. package/dist/assets/chart-column-BMpUb2lF.js +1 -0
  52. package/dist/assets/circle-slash-B8Tjloe5.js +1 -0
  53. package/dist/assets/client-Ct1F5MoE.js +358 -0
  54. package/dist/assets/{cloud-upload-ARBEZ-Y1.js → cloud-upload-CAJgV_u1.js} +1 -1
  55. package/dist/assets/crop-CS-td_0y.js +1 -0
  56. package/dist/assets/{device-integration-icon-CPDmGsoD.js → device-integration-icon-DukkUZAm.js} +1 -1
  57. package/dist/assets/device-picker-model-P-UzQOB7.js +1 -0
  58. package/dist/assets/dist-B89wGMMB.js +358 -0
  59. package/dist/assets/{dist-B2eSaq-o.js → dist-CPp8d_RN.js} +1 -1
  60. package/dist/assets/{eraser-C0EhIwNf.js → eraser-BL6nSeLQ.js} +1 -1
  61. package/dist/assets/{format-D4oZ2Oti.js → format-ChtZgmyh.js} +1 -1
  62. package/dist/assets/{hard-drive-download-CrDu4V4S.js → hard-drive-download-ysGKYLwW.js} +1 -1
  63. package/dist/assets/{hostInit-DVizgo6V.js → hostInit-CDPK_pyj.js} +1 -1
  64. package/dist/assets/i18n-DJ4egBMY.js +1 -0
  65. package/dist/assets/icons-B7uNvSe0.js +1 -0
  66. package/dist/assets/index-hKEeWkm1.js +4 -0
  67. package/dist/assets/{key-round-Dh6fcJDV.js → key-round-BDT5O9Ed.js} +1 -1
  68. package/dist/assets/{key-BSKPngWG.js → key-xS-HUgNI.js} +1 -1
  69. package/dist/assets/{layers-khG7TS-L.js → layers-BeRWYCde.js} +1 -1
  70. package/dist/assets/{linked-devices-model-Cnqr55pr.js → linked-devices-model-DOZONZiM.js} +1 -1
  71. package/dist/assets/{list-ordered-B5DA6_oa.js → list-ordered-DKzGLPr6.js} +1 -1
  72. package/dist/assets/location-owned-usage-BxmUSyXj.js +1 -0
  73. package/dist/assets/{log-in-CoYLZEi7.js → log-in-53JDrQ-P.js} +1 -1
  74. package/dist/assets/{memory-stick-MOirwg5Y.js → memory-stick-B9PVELyF.js} +1 -1
  75. package/dist/assets/{message-square-plus-CEVi2ZAP.js → message-square-plus-B32IU45x.js} +1 -1
  76. package/dist/assets/{mf-entry-bootstrap-0-be603f7b.js → mf-entry-bootstrap-0-65d35510.js} +2 -2
  77. package/dist/assets/{mic-off-Cilr4Bli.js → mic-off-B0w-1GrV.js} +1 -1
  78. package/dist/assets/{monitor-off-DLVIYtnd.js → monitor-off-Cz2SxBVE.js} +1 -1
  79. package/dist/assets/{monitor-smartphone-TMWTIuue.js → monitor-smartphone-Cqk6Z8Hg.js} +1 -1
  80. package/dist/assets/mount-P-UzQOB7.js +1 -0
  81. package/dist/assets/{player-overlays-By2E2OWX.js → player-overlays-Cs6l33cj.js} +1 -1
  82. package/dist/assets/{recycle-DSYCQWpK.js → recycle-DpB4QxbX.js} +1 -1
  83. package/dist/assets/remoteEntry-BGbchE1L.js +1 -0
  84. package/dist/assets/{scan-eye-qMn599c3.js → scan-eye-DcYrgFOu.js} +1 -1
  85. package/dist/assets/{scissors-DzKs5SeF.js → scissors-_j_D3ONm.js} +1 -1
  86. package/dist/assets/{search-x-0pY78yhl.js → search-x-9dPd-b95.js} +1 -1
  87. package/dist/assets/{send-x-DGZeSf.js → send-D42ODbS7.js} +1 -1
  88. package/dist/assets/{settings-2-CBTEttT3.js → settings-2-zgGmo4c8.js} +1 -1
  89. package/dist/assets/{speaker-EkvC7jK4.js → speaker-DIPHxIQ6.js} +1 -1
  90. package/dist/assets/src-DFzrn-CX.js +67 -0
  91. package/dist/assets/{step-inspector-model-BvwTAgYG.js → step-inspector-model-CS79liRv.js} +1 -1
  92. package/dist/assets/{table-2-Ctei20ip.js → table-2-lftK0wHb.js} +1 -1
  93. package/dist/assets/{timer-reset-CVElL395.js → timer-reset-catAE_r9.js} +1 -1
  94. package/dist/assets/{ungroup-B8d2LiRM.js → ungroup-BKImeHER.js} +1 -1
  95. package/dist/assets/{unlink-DcYhq2lS.js → unlink-Behl018w.js} +1 -1
  96. package/dist/assets/{usb-hziv0KIU.js → usb-D5kzB8kq.js} +1 -1
  97. package/dist/assets/{use-scenes-feed-16-Xn-4f.js → use-scenes-feed-CGDnep25.js} +1 -1
  98. package/dist/assets/{use-stationary-objects-Dfi4P7en.js → use-stationary-objects-D_R5OahX.js} +1 -1
  99. package/dist/assets/useEventInvalidation-P-UzQOB7.js +1 -0
  100. package/dist/assets/{useNodeUrlSelection-C6820-b7.js → useNodeUrlSelection-PBAYjRo5.js} +1 -1
  101. package/dist/assets/user-round-BJVl6LX9.js +1 -0
  102. package/dist/assets/{user-x-B7WeA-ce.js → user-x-COQ6vhb4.js} +1 -1
  103. package/dist/assets/{video-DKRf0Ic4.js → video-Byw3ItoR.js} +1 -1
  104. package/dist/assets/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-D6C0Wijv.js → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-CsFmgfi4.js} +2 -2
  105. package/dist/index.html +9 -9
  106. package/dist/server/addon.js +274 -29
  107. package/package.json +1 -1
  108. package/dist/assets/Addons-CZCGnQMQ.js +0 -5
  109. package/dist/assets/AiProfiles--zkaLy_B.js +0 -3
  110. package/dist/assets/Build-rWgY-SZM.js +0 -40
  111. package/dist/assets/Data-CCEKKeDE.js +0 -2
  112. package/dist/assets/DeviceDetail-D9LiDoGw.js +0 -2
  113. package/dist/assets/HelperWizard-Uk1HvQ9Z.js +0 -2
  114. package/dist/assets/History-BSXemVAg.js +0 -1
  115. package/dist/assets/Identity-DUUQUaLn.js +0 -1
  116. package/dist/assets/IntegrationDetail-Cg5a23zE.js +0 -1
  117. package/dist/assets/Integrations-B7G_Cpwv.js +0 -1
  118. package/dist/assets/Integrations-J8r1M--P.js +0 -1
  119. package/dist/assets/Library-B32BJFM3.js +0 -1
  120. package/dist/assets/Locations-qBrWJ5eA.js +0 -3
  121. package/dist/assets/MyAccess-BkcUaVmh.js +0 -2
  122. package/dist/assets/Network-BrDFqhC5.js +0 -1
  123. package/dist/assets/NodeAddonsSettingsPanel-DsSbHT51.js +0 -1
  124. package/dist/assets/Notifications-BPK2WNL-.js +0 -1
  125. package/dist/assets/Pipeline-CNlBiPEC.js +0 -1
  126. package/dist/assets/Recordings-BrCuLKqt.js +0 -1
  127. package/dist/assets/SessionsList-fLonifFr.js +0 -2
  128. package/dist/assets/System-B5axMnbq.js +0 -1
  129. package/dist/assets/circle-slash-C9MZOlOA.js +0 -1
  130. package/dist/assets/client-COfGFdJB.js +0 -358
  131. package/dist/assets/crop-CcnscEEp.js +0 -1
  132. package/dist/assets/device-picker-model-Z8NhIJHV.js +0 -1
  133. package/dist/assets/dist-Cwk0eIEi.js +0 -358
  134. package/dist/assets/i18n-DRa6-1Ye.js +0 -1
  135. package/dist/assets/icons-DanAyxOR.js +0 -1
  136. package/dist/assets/index-BO95XcLa.js +0 -4
  137. package/dist/assets/location-owned-usage-pJJy4BTC.js +0 -1
  138. package/dist/assets/mount-Z8NhIJHV.js +0 -1
  139. package/dist/assets/remoteEntry-ClU628tf.js +0 -1
  140. package/dist/assets/src-BZ8j9Q2T.js +0 -67
  141. package/dist/assets/useEventInvalidation-Z8NhIJHV.js +0 -1
  142. package/dist/assets/user-round-BrkQjamf.js +0 -1
@@ -1,2 +0,0 @@
1
- import{C as e,J as t,K as n,R as r,S as i,V as a,Y as o,a as s,et as c,o as l,t as u,x as d}from"./_virtual_mf___mfe_internal__admin_ui_host__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-CEyXHAdg.js";import{Br as f,Cr as p,D as m,Di as h,En as g,G as _,Gn as v,It as y,J as b,Jn as x,Jr as S,K as C,Kn as w,Li as T,O as E,Ri as D,Si as O,St as k,T as A,V as j,W as ee,Xn as te,Xr as M,Z as ne,Zt as re,_t as N,bn as ie,dn as ae,dt as P,en as F,ht as oe,li as se,lr as I,or as L,ot as R,pi as z,pn as B,q as ce,r as le,sa as ue,t as de,ta as fe,tr as pe,vn as me,xn as V,yn as he,z as ge,zn as _e,zr as ve}from"./player-overlays-By2E2OWX.js";import{Fn as ye,Gt as H,Ii as be,In as xe,Jt as Se,Kt as Ce,Li as U,Lr as we,Nn as Te,Pi as Ee,Pn as De,Ri as W,Wn as Oe,Wr as ke,Xt as G,Yt as Ae,_a as je,ba as Me,bi as Ne,d as Pe,pi as Fe,qt as Ie,ti as Le,ui as Re,xa as ze}from"./client-COfGFdJB.js";import{t as Be}from"./archive-W1ZaOIy6.js";import{i as Ve,n as He,r as Ue,t as We}from"./scan-eye-qMn599c3.js";import{t as Ge}from"./bell-off-BpuHdEmA.js";import{t as Ke}from"./boxes-BP6lUc_5.js";import{n as qe}from"./video-DKRf0Ic4.js";import{t as Je}from"./circle-slash-C9MZOlOA.js";import{t as Ye}from"./layers-khG7TS-L.js";import{$r as K,Ba as Xe,Bn as Ze,Bo as Qe,Bt as $e,Ca as et,Cr as tt,Da as nt,Dc as rt,Dn as it,Dr as q,Fc as at,Fn as ot,Fo as st,Ft as ct,Gn as lt,Gt as ut,Hn as dt,Ht as ft,I as pt,Ia as mt,Ic as ht,It as gt,Jc as _t,Kr as J,Kt as vt,La as yt,Lc as bt,Lt as xt,Ml as St,Mn as Ct,Nn as wt,Nt as Tt,Oa as Et,Oi as Dt,Pa as Ot,Pn as kt,Qt as At,R as jt,Ro as Mt,Sn as Nt,Tt as Pt,Uc as Ft,Un as It,Ut as Lt,Va as Rt,Vn as zt,Wi as Bt,Wn as Vt,Wo as Ht,Wr as Ut,X as Wt,Xn as Gt,Xt as Kt,Xu as qt,Yn as Jt,Yt,Z as Xt,Za as Zt,Zt as Qt,_d as $t,_l as en,_r as tn,_s as nn,a as rn,ad as an,al as on,at as sn,bn as cn,br as ln,c as un,cc as dn,cd as fn,ci as pn,cl as mn,dd as hn,do as gn,ec as _n,en as vn,et as yn,fo as bn,fr as xn,fs as Sn,gd as Cn,gs as wn,ho as Tn,hr as En,i as Dn,id as On,il as kn,it as An,jo as jn,jt as Mn,ka as Nn,kr as Pn,l as Fn,md as In,mo as Ln,mr as Rn,nd as zn,ni as Bn,nn as Vn,o as Hn,od as Un,ol as Wn,oo as Gn,ot as Kn,po as qn,pr as Jn,qt as Yn,r as Xn,rd as Zn,rt as Qn,sl as $n,so as er,st as tr,ti as nr,tn as rr,to as ir,tt as ar,uc as or,ud as sr,un as cr,uo as lr,vo as ur,vr as dr,vs as fr,wa as pr,wn as mr,wo as hr,wr as gr,wt as _r,xo as vr,xr as yr,xt as br,yr as xr,za as Sr,zc as Cr,zr as wr,zt as Tr}from"./src-BZ8j9Q2T.js";import{t as Y}from"./i18n-DRa6-1Ye.js";import{t as X}from"./useTranslation-BJr-n0es.js";import"./mount-Z8NhIJHV.js";import{A as Er,D as Dr,M as Or,O as kr,ar as Ar,cr as jr,dr as Mr,er as Nr,gr as Pr,hr as Fr,ir as Ir,j as Lr,k as Rr,lr as zr,mr as Br,nr as Vr,p as Hr,rr as Ur,sr as Z,tr as Wr,ur as Gr}from"./index-BO95XcLa.js";import{A as Kr,B as qr,C as Jr,D as Yr,E as Xr,F as Zr,G as Qr,H as $r,I as ei,K as ti,L as ni,M as ri,N as ii,O as ai,P as oi,R as si,S as ci,T as li,U as ui,V as di,W as fi,_ as pi,a as mi,b as hi,c as gi,d as _i,f as vi,g as yi,h as bi,i as xi,j as Si,k as Ci,l as wi,m as Ti,n as Ei,o as Di,p as Oi,r as ki,s as Ai,t as ji,v as Mi,w as Ni,x as Pi,y as Fi}from"./HelperWizard-Uk1HvQ9Z.js";import{r as Ii,t as Li}from"./assignment-candidates-BpQXQnWA.js";import{_ as Ri,b as zi,i as Bi,m as Vi,o as Hi,t as Ui}from"./step-inspector-model-BvwTAgYG.js";import"./useEventInvalidation-Z8NhIJHV.js";import{t as Wi}from"./use-stationary-objects-Dfi4P7en.js";import{n as Gi,t as Ki}from"./format-D4oZ2Oti.js";import{a as qi,i as Ji,n as Yi,o as Xi,r as Zi,s as Qi,t as $i}from"./linked-devices-model-Cnqr55pr.js";import{t as ea}from"./authed-media-vxjhgNZq.js";c();function ta(e){if(typeof e!=`object`||!e)return null;let t=e,n=t.id,r=t.label;if(typeof n!=`string`||typeof r!=`string`)return null;let i=t.available===!0,a=t.enabled,o=t.unavailableReason;return{id:n,label:r,costWhenOff:typeof t.costWhenOff==`string`?t.costWhenOff:``,on:i&&typeof a==`boolean`?a:null,available:i,unavailableReason:typeof o==`string`?o:null}}function na(e){if(typeof e!=`object`||!e)return null;let t=e.switches;if(!Array.isArray(t))return null;let n=t.map(ta).filter(e=>e!==null);return n.length===0?null:n}var ra=[[/privacy|mask/i,`privacy`],[/microphone|mic\b/i,`microphone`],[/speaker|broker audio|stream audio/i,`speaker`],[/audio/i,`listening`],[/object|detect/i,`detection`],[/event/i,`archive`],[/record/i,`recording`],[/notif/i,`notifications`],[/stream|broker/i,`stream`]];function ia(e){for(let[t,n]of ra)if(t.test(e))return n;return`generic`}function aa(e){let t=e.filter(e=>e.on===!1).map(e=>e.id),n=e.filter(e=>e.on===null).map(e=>e.id),r=t=>t.map(t=>e.find(e=>e.id===t)?.label??t).join(`, `),i=[];return t.length>0&&i.push(Y.t(`helpers.cameraSwitchRows.off`,{list:r(t)})),n.length>0&&i.push(Y.t(`helpers.cameraSwitchRows.unknown`,{list:r(n)})),{offIds:t,unknownIds:n,summary:i.length===0?Y.t(`helpers.cameraSwitchRows.allOn`):i.join(` · `)}}var oa={stream:V,detection:We,privacy:ve,microphone:te,speaker:k,listening:He,archive:Be,recording:Ue,notifications:T,generic:F};function sa({deviceId:t}){let{t:n}=X(),a=l(),s=Number.isFinite(t),[c,u]=o(null),[d,f]=o(!1),p=Cr({deviceId:t},{enabled:s});Xn([`pipelineOrchestrator`,`getCameraSwitches`],[`capability.binding-changed`]);let m=na(p.data),h=mn({onError:(e,n)=>{console.error(`[CameraFunctionSwitches] switch write failed — reverting`,{tags:{deviceId:t},meta:{switchId:n.switchId,error:e instanceof Error?e.message:String(e)}}),a.invalidateQueries({queryKey:[[`pipelineOrchestrator`,`getCameraSwitches`]]}),u({id:n.switchId,message:e instanceof Error?e.message:String(e)})},onSuccess:()=>{u(null),a.invalidateQueries({queryKey:[[`pipelineOrchestrator`]]}),a.invalidateQueries({queryKey:[[`deviceManager`]]}),a.invalidateQueries({queryKey:[[`recording`]]})}}),g=r(e=>{!e.available||e.on===null||h.mutate({deviceId:t,switchId:e.id,enabled:!e.on})},[t,h]);if(m===null)return null;let _=aa(m),v=e=>c?.id===e.id?c.message:null;return e(On,{open:d,onOpenChange:f,children:[e(Un,{"aria-label":n(`device.cameraFunctionSwitches.cameraFunctions`,`Camera functions`),title:_.summary,className:`inline-flex items-center gap-1 rounded-lg border px-2 py-1.5 text-[11px] font-medium transition-colors ${c===null?_.offIds.length>0?`border-warning/40 text-warning hover:bg-warning/10`:`border-border text-foreground-subtle hover:text-foreground hover:bg-surface-hover`:`border-danger/50 text-danger bg-danger/5`}`,children:[i(F,{className:`h-3.5 w-3.5`}),i(`span`,{className:`hidden lg:inline`,children:n(`device.cameraFunctionSwitches.functions`,`Functions`)}),_.offIds.length>0&&i(`span`,{className:`rounded bg-warning/20 px-1 text-[9px] font-semibold uppercase tracking-wide`,children:n(`device.cameraFunctionSwitches.offCount`,{count:_.offIds.length})})]}),e(an,{align:`end`,className:`min-w-[240px] max-h-[60vh] overflow-y-auto p-1`,children:[i(`div`,{className:`px-2 py-1 text-[10px] uppercase tracking-wider text-foreground-subtle`,children:n(`device.cameraFunctionSwitches.cameraFunctions`,`Camera functions`)}),i(`ul`,{className:`space-y-0.5`,children:m.map(e=>i(`li`,{children:i(ca,{row:e,failure:v(e),onToggle:()=>g(e)})},e.id))})]})]})}function ca({row:t,failure:n,onToggle:r}){let{t:a}=X(),o=oa[ia(t.label)],s=t.on===null,c=t.on===!1,l=n===null?s?t.unavailableReason??`The source that owns this did not answer.`:t.costWhenOff:`Write failed: ${n}`,u=n===null?s?t.unavailableReason??`unknown`:null:`write failed`;return e(`button`,{type:`button`,role:`switch`,"aria-label":t.label,"aria-checked":t.on===!0,disabled:!t.available,onClick:r,title:l,className:`flex w-full items-center gap-2 rounded-md px-2 py-1 text-left text-[12px] text-foreground transition-colors hover:bg-surface-hover disabled:opacity-40 disabled:cursor-not-allowed`,children:[i(o,{className:`h-3.5 w-3.5 shrink-0 ${n===null?s?`text-foreground-subtle/50`:c?`text-warning`:`text-success`:`text-danger`}`}),e(`span`,{className:`flex-1 min-w-0 truncate`,children:[t.label,u!==null&&e(`span`,{className:`ml-1 text-[10px] text-foreground-subtle`,children:[`· `,u]})]}),i(`span`,{className:`shrink-0 rounded px-1 py-0.5 text-[9px] font-semibold uppercase tracking-wide ${s?`bg-surface-hover text-foreground-subtle/60`:c?`bg-warning/20 text-warning`:`bg-success/20 text-success`}`,children:s?`—`:a(c?`common.off`:`common.on`)})]})}function la({deviceId:t}){let n=ft(R().trpcClient,t);return n===null?null:e(`a`,{href:n.url,target:`_blank`,rel:`noopener noreferrer`,title:`${n.label} — ${n.host}`,className:`inline-flex items-center gap-1.5 rounded-lg px-2 sm:px-2.5 py-1.5 text-[11px] font-medium border border-border text-foreground-subtle hover:text-foreground hover:bg-surface-hover transition-colors`,children:[i(f,{className:`h-3.5 w-3.5`}),i(`span`,{className:`hidden sm:inline`,children:n.label})]})}function ua({parentDeviceId:t}){let{t:n}=X(),r=Br(),a=R(),{data:o,isLoading:s,isError:c}=Ar(t),{data:l}=lr({deviceId:t},{enabled:Number.isFinite(t)});if(s)return i(`div`,{className:`rounded-lg border border-border bg-surface p-3`,children:i(`p`,{className:`text-[10px] text-foreground-subtle`,children:n(`common.loading`,{defaultValue:`Loading…`})})});if(c)return i(`div`,{className:`rounded-lg border border-border bg-surface p-3`,children:i(`p`,{className:`text-[10px] text-warning`,children:n(`integrations.childrenLoadError`,{defaultValue:`Failed to load children`})})});let u=(o??[]).filter(e=>e.display?.hidden!==!0);if(u.length===0)return null;let d=xt(l?.stableId??``,u,l?.childLayout),f=d.ungrouped,p=e=>r(`/devices/${String(e)}`),m=l?.name??``,h=(e,t)=>i(ct,{trpc:a.trpcClient,device:{...t,name:Lt(t,m)},variant:`minimal`,onNavigate:p},e),g=f.some(e=>!!e.role),_=f.some(e=>!e.role),v=g&&!_?n(`device.accessories`,{defaultValue:`Accessories`}):!g&&_?n(`device.adoptedDevices`,{defaultValue:`Adopted devices`}):n(`device.children`,{defaultValue:`Children`}),y=f.length>0?e(`div`,{className:`rounded-lg border border-border bg-surface p-3`,children:[i(`div`,{className:`text-[10px] font-semibold uppercase tracking-wide text-foreground-subtle mb-1.5`,children:v}),i(`div`,{className:`space-y-1`,children:f.map(e=>h(e.id,e))})]}):null,b=d.disabledSection===void 0?null:i(gt,{title:n(`device.disabledSection`,{defaultValue:`Disabled`}),count:d.disabledSection.children.length,defaultOpen:!1,children:i(`div`,{className:`opacity-60 space-y-1`,children:d.disabledSection.children.map(e=>h(e.id,e))})},d.disabledSection.title);if(d.sections.length===0)return b===null?y:e(`div`,{className:`space-y-2`,children:[y,b]});let x=_&&!g;return e(`div`,{className:`space-y-2`,children:[x?y:null,d.sections.map(e=>i(gt,{title:e.title,count:e.children.length,defaultOpen:e.defaultOpen,children:e.children.map(e=>h(e.id,e))},e.title)),x?null:y,b]})}function da({deviceId:e}){let t=R(),{data:n,isLoading:r}=Ir(e),{data:a,isLoading:o}=Ar(e),s=r||o,c=(a??[]).map(e=>({id:e.id,stableId:e.stableId,type:e.type,name:e.name,features:e.features,...e.sourceInfo?{sourceInfo:{id:e.sourceInfo.id}}:{}})),l=typeof n?.linkDeviceId==`number`?n.linkDeviceId:null,u=typeof n?.primaryChildEntityId==`string`?n.primaryChildEntityId:null;return s?i(`div`,{className:`h-full min-h-32 w-full animate-pulse rounded-lg bg-surface`,"aria-hidden":`true`}):i(`div`,{className:`flex h-full w-full flex-col`,children:i(ut,{trpc:t.trpcClient,children:c,linkDeviceId:l,primaryChildEntityId:u})})}c();function fa({dev:t,busy:n,setBusy:r}){let{t:a}=X(),s=t?.motionTrigger,c=b(t?.state.motionTrigger),[l,u]=o(!1);if(!s)return null;let d=c?.enabled===!0,f=c!==void 0,p=async()=>{if(n||!f)return;let e=!d;r(!0),u(!0);try{await s.setMotionTrigger({enabled:e})}finally{r(!1),u(!1)}},m=l?d?`Disabling…`:`Enabling…`:f?d?`On motion: on`:`On motion: off`:`On motion: …`;return e(`button`,{type:`button`,onClick:()=>{p()},disabled:n||!f,title:f?d?a(`hero.motionTriggerToggle.disableTriggerOnMotion`,`Disable trigger on motion`):a(`hero.motionTriggerToggle.enableTriggerOnMotion`,`Enable trigger on motion`):a(`hero.motionTriggerToggle.awaitingState`,`Awaiting state…`),"aria-pressed":d,className:`inline-flex items-center gap-1.5 rounded-full border px-2.5 py-1 text-[11px] font-medium transition-colors disabled:cursor-not-allowed disabled:opacity-50 ${d?`border-primary/50 bg-primary/15 text-primary`:`border-border bg-surface text-foreground-subtle hover:text-foreground`}`,children:[i(fe,{className:`h-3 w-3`}),i(`span`,{children:m})]})}c();function Q({deviceId:t,deviceType:n,features:r}){let a=R(),s=Yt(n)?.HeroCard??Kt,c=C(a.trpcClient,t),l=b(c?.state.deviceStatus),[u,d]=o(!1),f=l!==void 0&&l.online===!1,p=f?l.lastChangedAt:null;return e(`div`,{className:`flex h-full w-full flex-col items-stretch gap-3 p-3 sm:p-4`,children:[f?i(`div`,{className:`flex justify-center`,children:i(Yn,{lastChangedAt:p})}):null,i(s,{trpc:a.trpcClient,deviceId:t,features:r}),i(`div`,{className:`flex justify-center`,children:i(fa,{dev:c,busy:u,setBusy:d})})]})}function pa({deviceId:e,features:t}){return i(`div`,{className:`flex h-full w-full flex-col items-stretch gap-3 p-3 sm:p-4`,children:i(Qt,{trpc:R().trpcClient,deviceId:e,features:t})})}function ma({deviceId:e,features:t}){return i(`div`,{className:`flex h-full w-full flex-col items-stretch p-3 sm:p-4`,children:i(Kt,{trpc:R().trpcClient,deviceId:e,features:t})})}function ha(e){if(!e)return null;let t=e.channel;return typeof t!=`number`||!Number.isInteger(t)||t<0?null:t}function ga(e){if(!e)return null;let t=ha(e.data);return t===null?e.eventType:Y.t(`helpers.eventEmitterFormat.buttonHeadline`,{channel:String(t),eventType:e.eventType})}var _a=1e3,va=60*_a,ya=60*va,ba=24*ya;function xa(e,t){if(e==null||e<=0)return`—`;let n=t-e;return n<_a?Y.t(`helpers.relativeTime.justNow`):n<va?Y.t(`helpers.relativeTime.secondsAgo`,{count:Math.floor(n/_a)}):n<ya?Y.t(`helpers.relativeTime.minutesAgo`,{count:Math.floor(n/va)}):n<ba?Y.t(`helpers.relativeTime.hoursAgo`,{count:Math.floor(n/ya)}):Y.t(`helpers.relativeTime.daysAgo`,{count:Math.floor(n/ba)})}c();var Sa=1500,Ca=15e3,wa=1e3;function Ta({deviceId:n}){let{t:r}=X(),s=C(R().trpcClient,n)?.state.eventEmitter,c=b(s);a(()=>{if(!s)return;s.refresh();let e=setInterval(()=>{s.refresh()},Ca);return()=>{clearInterval(e)}},[s]);let l=c?.lastEvent??null,u=l?.seq??null,d=t(null),[f,m]=o(!1);a(()=>{if(u===null)return;let e=d.current;if(d.current=u,e===null||e===u)return;m(!0);let t=setTimeout(()=>{m(!1)},Sa);return()=>{clearTimeout(t)}},[u]);let[h,g]=o(()=>Date.now());a(()=>{let e=setInterval(()=>{g(Date.now())},wa);return()=>{clearInterval(e)}},[]);let _=ga(l),y=c?.eventTypes??[],x=c?.eventCountSinceStart??0,S=c!==void 0,w=ha(l?.data);return e(`div`,{className:`flex h-full w-full flex-col items-center justify-center gap-3 p-4`,children:[i(`div`,{"data-testid":`event-emitter-indicator`,"data-flashing":String(f),className:`flex h-24 w-24 items-center justify-center rounded-full border-2 transition-all ${f?`border-primary bg-primary/20 text-primary shadow-lg shadow-primary/30 scale-105`:`border-border bg-surface text-foreground-subtle`}`,"aria-live":`polite`,title:_??r(`hero.eventEmitterHero.noPressRecorded`,`No press recorded`),children:i(f?v:p,{className:`h-10 w-10`})}),e(`div`,{className:`text-center`,children:[w!==null&&i(`div`,{className:`text-xs font-semibold uppercase tracking-wide text-primary`,children:r(`hero.eventEmitterHero.button`,`Button {{value1}}`,{value1:String(w)})}),i(`div`,{"data-testid":`event-emitter-headline`,className:`text-sm font-semibold ${_?`text-foreground`:`text-foreground-subtle`}`,children:_??(S?r(`hero.eventEmitterHero.noPressRecorded`,`No press recorded`):r(`hero.eventEmitterHero.awaitingState`,`Awaiting state…`))}),i(`div`,{className:`text-[10px] text-foreground-subtle mt-0.5`,children:l?xa(l.timestamp,h):r(`hero.eventEmitterHero.waitingForTheFirstEvent`,`Waiting for the first event`)})]}),y.length>0&&i(`div`,{className:`flex max-w-full flex-wrap justify-center gap-1`,children:y.map(e=>i(`span`,{"data-testid":`event-emitter-chip`,className:`rounded-full border px-2 py-0.5 text-[10px] font-medium ${e===l?.eventType?`border-primary bg-primary/15 text-primary`:`border-border bg-surface text-foreground-subtle`}`,children:e},e))}),i(`div`,{className:`text-[10px] text-foreground-subtle`,children:r(`hero.eventEmitterHero.sinceStart`,{count:x})})]})}function Ea({deviceName:t,deviceType:n,provider:r,isOnline:a,features:o}){let{t:s}=X();return e(`div`,{className:`flex h-full w-full flex-col items-center justify-center gap-3 rounded-lg border border-dashed border-border bg-surface p-6 text-center`,children:[i(jr,{type:r,size:`lg`}),e(`div`,{children:[i(`div`,{className:`text-sm font-semibold text-foreground`,children:t}),i(`div`,{className:`text-[10px] text-foreground-subtle uppercase tracking-wider mt-0.5`,children:n})]}),e(`div`,{className:`flex items-center gap-2 flex-wrap justify-center`,children:[i(Kn,{status:a?`online`:`offline`}),o.length>0&&i(zr,{capabilities:o})]}),i(`div`,{className:`text-[10px] text-foreground-subtle italic max-w-xs mt-1`,children:s(`hero.genericHero.noLiveViewForThis`,`No live view for this device type. Use the Config tab or the shortcut row to interact.`)})]})}c();function Da({deviceId:t}){let{t:r}=X(),a=l(),o=mt({deviceId:t},{refetchInterval:1e4,retry:!1}),s=yt({onSuccess:()=>{a.invalidateQueries({queryKey:[[`deviceDiscovery`,`listDiscovered`]]}),a.invalidateQueries({queryKey:[[`deviceDiscovery`,`getStatus`]]})}}),c=n(()=>Oa(o.data??[]),[o.data]);return e(`div`,{className:`flex h-full w-full flex-col gap-3 p-3 sm:p-4`,children:[e(`div`,{className:`flex flex-wrap items-stretch gap-2 sm:gap-3`,children:[i(ka,{label:r(`hero.hubHero.discovered`,`Discovered`),value:c.total,icon:i(_e,{className:`h-3.5 w-3.5`})}),i(ka,{label:r(`hero.hubHero.adopted`,`Adopted`),value:c.adopted,accent:`success`}),i(ka,{label:r(`hero.hubHero.available`,`Available`),value:c.available,accent:c.available>0?`primary`:void 0}),e(`button`,{type:`button`,onClick:()=>{s.mutateAsync({deviceId:t}).catch(()=>{})},disabled:s.isPending,className:`inline-flex items-center justify-center gap-1.5 rounded-lg border border-border px-3 py-2 text-xs font-medium text-foreground-subtle hover:text-foreground hover:bg-surface-hover transition-colors disabled:opacity-50 self-stretch shrink-0`,children:[s.isPending?i(L,{className:`h-3.5 w-3.5 animate-spin`}):i(ie,{className:`h-3.5 w-3.5`}),i(`span`,{className:`hidden sm:inline`,children:r(`hero.hubHero.discover`,`Discover`)})]})]}),e(`div`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1 text-[11px] text-foreground-subtle border-t border-border-subtle pt-2`,children:[i(Aa,{icon:i(oe,{className:`h-3 w-3 text-emerald-500`}),label:r(`hero.hubHero.online`,`{{online}} online`,{online:c.online})}),i(Aa,{icon:i(w,{className:`h-3 w-3 text-amber-500`}),label:r(`hero.hubHero.sleeping`,`{{sleeping}} sleeping`,{sleeping:c.sleeping})}),i(Aa,{icon:i(N,{className:`h-3 w-3 text-destructive`}),label:r(`hero.hubHero.offline`,`{{offline}} offline`,{offline:c.offline})}),c.unknown>0?i(Aa,{icon:i(se,{className:`h-3 w-3 text-foreground-subtle`}),label:r(`hero.hubHero.unknown`,`{{unknown}} unknown`,{unknown:c.unknown})}):null]})]})}function Oa(e){let t={total:e.length,adopted:0,available:0,online:0,sleeping:0,offline:0,unknown:0};for(let n of e)n.alreadyAdopted?t.adopted+=1:t.available+=1,t[n.status]+=1;return t}function ka({label:t,value:n,icon:r,accent:a}){return e(`div`,{className:`flex flex-1 basis-[140px] min-w-0 flex-col gap-1 rounded-lg border px-2 py-1.5 sm:px-3 sm:py-2 ${a===`success`?`bg-emerald-500/10 border-emerald-500/30 text-emerald-500`:a===`primary`?`bg-primary/10 border-primary/30 text-primary`:`bg-surface-hover border-border text-foreground`}`,children:[e(`div`,{className:`flex items-center gap-1.5 text-[10px] uppercase tracking-wider opacity-70 truncate`,children:[r,i(`span`,{className:`truncate`,children:t})]}),i(`div`,{className:`text-xl sm:text-2xl font-semibold tabular-nums leading-none`,children:n})]})}function Aa({icon:t,label:n}){return e(`span`,{className:`inline-flex items-center gap-1`,children:[t,i(`span`,{children:n})]})}var ja={[W.Switch]:Q,[W.Siren]:Q,[W.Light]:Q,[W.Sensor]:Q,[W.Button]:Q,[W.Hub]:Da,[W.Cover]:pa,[W.Valve]:Q,[W.Humidifier]:Q,[W.WaterHeater]:Q,[W.Container]:da,[W.Lock]:Q,[W.Fan]:Q,[W.Thermostat]:Q,[W.Climate]:Q,[W.MediaPlayer]:Q,[W.Control]:Q,[W.AlarmPanel]:Q,[W.EventEmitter]:Ta,[W.Notifier]:ma,[W.Script]:Q,[W.Automation]:Q,[W.Presence]:Q,[W.Update]:Q,[W.Vacuum]:Q,[W.LawnMower]:Q,[W.Weather]:Q,[W.Image]:Q,[W.PetFeeder]:Q,[W.Dishwasher]:Q};function Ma(e){return ja[e]??Ea}function Na({deviceId:e}){let t=ce(R().trpcClient,e,e=>e.runningState);if(t===void 0||t.running!==!0&&t.running!==!1)return i(d,{});let n=t.running;return i(kt,{running:n,since:t?.since??null,phase:t?.phase??null,className:`px-3 pt-2 sm:px-4`})}function Pa(t){let n=Ma(t.deviceType);return e(d,{children:[i(Na,{deviceId:t.deviceId}),i(n,{...t})]})}function Fa({deviceId:e,widgets:t}){return t.length===0?null:i(`div`,{className:`flex flex-col gap-3 px-3 pb-3 sm:px-4 sm:pb-4`,"data-testid":`device-hero-widgets`,children:t.map(t=>{let n=i(xn,{widgetId:t.widgetId,deviceId:t.deviceId});return i(`div`,{children:t.deviceId===e?n:i(wr,{deviceId:t.deviceId,children:n})},t.widgetId)})})}function Ia(e){return e.sections.filter(e=>e.location===`hero`).flatMap(t=>t.fields.flatMap(n=>{if(typeof n!=`object`||!n)return[];let r=Reflect.get(n,`type`),i=Reflect.get(n,`widgetId`);return r!==`widget`||typeof i!=`string`||i.length===0?[]:[{widgetId:i,deviceId:e.deviceId,order:t.order??0}]}))}function La(e){let t=Ia(e),n=new Set(t.map(e=>e.widgetId)),r=e.child===void 0?[]:Ia(e.child),i=[...t,...r.filter(e=>!n.has(e.widgetId))],a=new Set;return i.filter(e=>a.has(e.widgetId)?!1:(a.add(e.widgetId),!0)).sort((e,t)=>e.order-t.order)}function Ra(e){return Hn(R().trpcClient,e)}c();function za(e){let[n,i]=o(`idle`),[s,c]=o(null),l=t(null),u=t(null),d=t(null),f=t(!0),p=nn(),m=wn(),h=fr(),g=r(()=>{if(l.current){try{l.current.close()}catch{}l.current=null}if(u.current){for(let e of u.current.getTracks())try{e.stop()}catch{}u.current=null}d.current=null},[]),_=r(async()=>{if(n===`idle`)return;i(`stopping`);let t=d.current;if(t&&e!==null)try{await Promise.race([h.mutateAsync({deviceId:e,sessionId:t}),new Promise((e,t)=>setTimeout(()=>t(Error(`server stopSession timeout`)),2e3))])}catch(e){console.warn(`[intercom] server stopSession failed (continuing teardown)`,e)}g(),f.current&&(i(`idle`),c(null))},[n,e,h,g]),v=r(async()=>{if(e===null||n!==`idle`&&n!==`error`)return;c(null);let t=null,r=null,a=null;try{i(`requesting-mic`),t=await navigator.mediaDevices.getUserMedia({audio:!0,video:!1}),u.current=t,i(`starting`);let n=await p.mutateAsync({deviceId:e});a=n.sessionId,d.current=a,i(`connecting`),r=new RTCPeerConnection,l.current=r,r.oniceconnectionstatechange=()=>{if(!f.current)return;let e=r.iceConnectionState;e===`connected`||e===`completed`?i(`talking`):(e===`failed`||e===`closed`||e===`disconnected`)&&f.current&&(c(e===`failed`?`WebRTC connection failed`:null),_())};for(let e of t.getAudioTracks())r.addTrack(e,t);await r.setRemoteDescription({type:`offer`,sdp:n.sdpOffer});let o=await r.createAnswer();await r.setLocalDescription(o);let s=r.localDescription?.sdp??o.sdp??``;await m.mutateAsync({deviceId:e,sessionId:a,sdpAnswer:s})}catch(n){let o=n instanceof Error?n.message:String(n);if(console.warn(`[intercom] start failed`,n),r)try{r.close()}catch{}if(t)for(let e of t.getTracks())try{e.stop()}catch{}if(l.current=null,u.current=null,a!==null)try{await h.mutateAsync({deviceId:e,sessionId:a})}catch{}d.current=null,f.current&&(c(o),i(`error`))}},[e,n,p,m,h,_]);return a(()=>(f.current=!0,()=>{f.current=!1;let t=d.current;if(t!==null&&e!==null&&h.mutate({deviceId:e,sessionId:t}),l.current){try{l.current.close()}catch{}l.current=null}if(u.current){for(let e of u.current.getTracks())try{e.stop()}catch{}u.current=null}d.current=null}),[e]),{state:n,error:s,start:v,stop:_,isTalking:n===`talking`}}c();var Ba=0;function $(){return++Ba}function Va(e){switch(e.type){case`system`:return`system`;case`device`:return`#${e.deviceId}`;case`provider`:return e.providerId;case`addon`:return e.addonId}}function Ha(e){return[``,`Commands`,` help Show this help`,` examples Show usage examples for the current scope`,` context Show every available variable + full API surface`,` clear Clear terminal (also Ctrl+L)`,``,`Shortcuts`,` Enter Execute expression`,` Arrow Up/Down Navigate command history`,` Ctrl+L Clear terminal`,``,`Try: ${{system:` sm.summary() // fleet overview`,device:` device.state.battery.value?.sleeping // sync read`,provider:` devices.map(d => d.name)`,addon:` manifest.version`}[e.type]}`,``,`Top-level objects: sm (SystemMirror), DeviceType, Math, JSON, Date, …`]}function Ua(e){switch(e.type){case`device`:return[``,`── State (sync, zero round-trip) ─────────────────────────`,` device.state.battery.value`,` device.state.battery.value?.percentage`,` device.state.motion.value?.detected`,``,`── Actions (async, through wrapper chain) ────────────────`,` await device.snapshot.getSnapshot({})`,` await device.ptz.move({ direction: 'left', steps: 1 })`,` await device.switch.setState({ on: true })`,``,`── Wait for condition ───────────────────────────────────`,` await sm.waitForState(deviceId, 'battery', s => !s.sleeping, 30_000)`,``,`── Subscribe to changes ─────────────────────────────────`,` const off = device.state.battery.subscribe(s => console.log(s))`,``,`── Quick info ───────────────────────────────────────────`,` info.name device name`,` info.addonId owning addon`,` sm.dump(deviceId) full debug dump`];case`system`:return[``,`── Lookups ──────────────────────────────────────────────`,` sm.getDeviceById(8)`,` sm.getDeviceByName('Sala da pranzo')`,` sm.getDevicesByAddon('reolink')`,` sm.getDevicesByType(DeviceType.Camera)`,``,`── Filters (typed query) ────────────────────────────────`,` sm.query({ addonId: 'reolink', online: true })`,` sm.query({ caps: ['battery', 'snapshot'] })`,` sm.query({ name: /^Cam-/ })`,``,`── Cross-device ─────────────────────────────────────────`,` sm.whereState('battery', s => s.percentage < 20).length`,` sm.mapState('battery', s => s.percentage)`,` sm.countByCap('snapshot')`,``,`── Batch action ─────────────────────────────────────────`,` await sm.invokeCap('snapshot', 'getSnapshot', {}, { parallelism: 4 })`,``,`── Listen ───────────────────────────────────────────────`,` sm.listenCap('motion', (id, s) => console.log(id, s))`,` sm.onDeviceAdded((id, info) => console.log('+', info.name))`,``,`── Diagnostics ──────────────────────────────────────────`,` sm.summary()`,` sm.dump(8)`];case`provider`:return[``,` devices.map(d => d.name)`,` await getIntegration()`,` sm.getDevicesByAddon('<this-addon-id>').length`];case`addon`:return[``,` manifest.name`,` manifest.version`,` declaration`]}}function Wa(e){let t=[``,`Scope: ${e.type}`,``];switch(e.type){case`system`:return[...t,`Primary API — sm (SystemMirror):`,` sm.getDeviceById(id) DeviceProxy | null (sync)`,` sm.getDeviceByName(name) DeviceProxy | null`,` sm.getDeviceByStableId(sid) DeviceProxy | null`,` sm.getAllDevices() readonly DeviceProxy[]`,` sm.getDeviceInfo(id) DeviceInfo | null`,` sm.summary() fleet stats`,``,`Filters — sm.query({...}):`,` sm.query({ addonId: 'reolink', online: true })`,` sm.query({ caps: ['battery', 'snapshot'] }) // ALL caps required`,` sm.query({ anyCap: ['ptz', 'motion'] }) // ANY cap`,` sm.query({ name: { contains: 'sala' } }) // case-insensitive`,` sm.query({ name: /^Cam-\\d+$/ })`,` sm.query({ type: DeviceType.Camera })`,` sm.query({ parentDeviceId: 8 }) // accessories of cam 8`,` sm.query({ where: (info, dev) => dev.state.battery.value?.sleeping })`,``,`State queries:`,` sm.whereState('battery', s => s.percentage < 20)`,` sm.mapState('battery', s => s.percentage)`,` sm.findState('motion', s => s.detected)`,` sm.countByCap('snapshot')`,``,`Listeners (return unsubscribe fn):`,` sm.listen((id, cap, slice) => …) // every state change`,` sm.listenCap('motion', (id, slice) => …)`,` sm.listenDevice(8, (id, cap, slice) => …)`,` sm.onDeviceAdded((id, info) => …)`,` sm.onDeviceRemoved((id, info) => …)`,``,`Wait primitives:`,` await sm.waitForState(8, 'battery', s => !s.sleeping, 30_000)`,` await sm.waitForDevice(99, 30_000)`,``,`Batch:`,` await sm.invokeCap('snapshot', 'getSnapshot', {}, { parallelism: 4 })`,` await sm.forEachCap('reboot', d => d.reboot.reboot({}))`,``,`Diagnostics:`,` sm.dump(8) debug dump (one device)`,` sm.dump() full fleet dump`,` sm.summary() breakdown by cap/addon/type`,``,`Legacy: deviceRegistry, addonRegistry, eventBus, devices(), addons()`];case`device`:return[...t,`Pre-bound variables:`,` device DeviceProxy for this device (sync state + async methods)`,` deviceId number`,` info DeviceInfo metadata (name, addonId, type, online, …)`,` sm SystemMirror (full cluster view)`,` rawDevice legacy IDevice instance (escape hatch)`,``,`Reactive state (sync, zero round-trip):`,` device.state.battery.value BatteryStatus | undefined`,` device.state.battery.value?.sleeping`,` device.state.battery.value?.percentage`,` device.state.motion.value?.detected`,` device.state.switch.value?.on`,` device.state.brightness.value?.percentage`,` device.state.doorbell.value?.lastPressedAt`,``,`Cap actions (async, through wrapper chain):`,` await device.snapshot.getSnapshot({})`,` await device.snapshot.getSnapshot({ streamId: 'high' })`,` await device.ptz.move({ direction: 'left', steps: 1 })`,` await device.ptz.goToPreset({ presetId: 'home' })`,` await device.switch.setState({ on: true })`,` await device.brightness.setBrightness({ percentage: 60 })`,` await device.reboot.reboot({})`,``,`Subscribe to slice changes:`,` const off = device.state.battery.subscribe(s => console.log(s))`,` // off() to unsubscribe`,``,`Wait for a state condition:`,` await sm.waitForState(deviceId, 'battery', s => !s.sleeping, 30_000)`,``,`Diagnostics:`,` info.name device name`,` info.addonId which addon owns it`,` info.online transport health`,` sm.dump(deviceId) full debug dump (binding + state + info)`];case`provider`:return[...t,`Pre-bound variables:`,` devices Devices belonging to this provider (raw IDevice[])`,` getIntegration() Integration metadata`,``,`For typed device access use the SystemMirror:`,` await getSystemMirror()`,` sm.getDevicesByAddon('this-addon-id')`];case`addon`:return[...t,`Pre-bound variables:`,` manifest { name, version, ... }`,` declaration addon declaration`,` source addon source location`,``,`Examples:`,` manifest.name`,` manifest.version`]}}function Ga({scope:n,greeting:s,className:c}){let{t:l}=X(),d=R(),[f,p]=o(()=>{let e=[];return s&&e.push({id:$(),kind:`info`,text:s}),e.push({id:$(),kind:`info`,text:`scope: ${Va(n)} — type help or context for available commands`}),e}),[m,h]=o(``),[g,_]=o([]),[v,y]=o(-1),b=t(null),x=t(null);a(()=>{let e=x.current;e&&(e.scrollTop=e.scrollHeight)},[f]);let S=r(()=>{b.current?.focus()},[]),C=u({mutationFn:e=>d.trpcClient.repl.execute.mutate({code:e,scope:n}),onSuccess:e=>{let t=e??{},n=typeof t.output==`string`?t.output:e==null?`undefined`:typeof e==`string`?e:JSON.stringify(e,null,2),r=t.type===`error`;p(e=>[...e,{id:$(),kind:r?`error`:`result`,text:n}])},onError:e=>{let t=e instanceof Error?e.message:String(e);p(e=>[...e,{id:$(),kind:`error`,text:t}])}});function w(e){let t=e.trim();if(t){if(t===`clear`){p([{id:$(),kind:`info`,text:`scope: ${Va(n)}`}]),h(``);return}if(t===`help`){p(e=>[...e,{id:$(),kind:`input`,text:`> ${t}`},...Ha(n).map(e=>({id:$(),kind:`info`,text:e}))]),h(``);return}if(t===`context`){p(e=>[...e,{id:$(),kind:`input`,text:`> ${t}`},...Wa(n).map(e=>({id:$(),kind:`info`,text:e}))]),h(``);return}if(t===`examples`){p(e=>[...e,{id:$(),kind:`input`,text:`> ${t}`},...Ua(n).map(e=>({id:$(),kind:`info`,text:e}))]),h(``);return}_(e=>[...e,t]),y(-1),p(e=>[...e,{id:$(),kind:`input`,text:`> ${t}`}]),h(``),C.mutate(t)}}function T(e){if(e.key===`Enter`){e.preventDefault(),w(m);return}if(e.key===`ArrowUp`){if(e.preventDefault(),g.length===0)return;let t=v===-1?g.length-1:Math.max(0,v-1);y(t),h(g[t]??``);return}if(e.key===`ArrowDown`){if(e.preventDefault(),v===-1)return;let t=v+1;t>=g.length?(y(-1),h(``)):(y(t),h(g[t]??``));return}e.ctrlKey&&e.key===`l`&&(e.preventDefault(),p([{id:$(),kind:`info`,text:`scope: ${Va(n)}`}]))}let E={input:`text-zinc-300`,result:`text-emerald-300`,error:`text-red-300`,info:`text-zinc-400`};return e(`div`,{className:`flex flex-col bg-[#0c0a09] rounded-lg border border-border overflow-hidden font-mono text-xs ${c??``}`,onClick:S,children:[e(`div`,{ref:x,className:`flex-1 overflow-y-auto p-3 space-y-1 min-h-[120px]`,children:[f.map(e=>i(`pre`,{className:`whitespace-pre-wrap break-words leading-relaxed ${E[e.kind]}`,children:e.text},e.id)),C.isPending&&i(`span`,{className:`text-zinc-500 animate-pulse`,children:l(`shared.replTerminal.thinking`,`…thinking`)})]}),e(`div`,{className:`flex items-center gap-2 border-t border-zinc-800 px-3 py-2 bg-[#0c0a09]`,children:[i(`span`,{className:`text-emerald-400 flex-shrink-0 select-none font-bold`,children:l(`shared.replTerminal.text`,`>`)}),i(`input`,{ref:b,value:m,onChange:e=>h(e.target.value),onKeyDown:T,disabled:C.isPending,placeholder:`device.state.battery.value`,autoFocus:!0,className:`flex-1 bg-transparent text-zinc-100 placeholder:text-zinc-600 focus:outline-none caret-emerald-400 disabled:opacity-50`,spellCheck:!1,autoComplete:`off`,autoCorrect:`off`,autoCapitalize:`off`})]})]})}function Ka(e,t){return e===null?null:{playbackUrl:e.url,...e.format===void 0?{}:{playbackFormat:e.format},playbackAuthToken:t,...e.label===void 0?{}:{playbackLabel:e.label}}}c();function qa({deviceId:e,intercomAvailable:t=!1}){let r=R(),a=typeof window<`u`?ne():``,o=Number.isFinite(e),s=Ra(o?e:null),c=Wi(o?[e]:[]),l=n(()=>{if(!o)return;let e=[];for(let t of c.rows){let n=rn(t);n!==null&&e.push(n)}return e},[o,c.rows]),{streams:u,pipelineMetrics:f,createSession:p,sendAnswer:m,handleOffer:h,getIceServers:g,addIceCandidate:v,getIceCandidates:y,closeSession:b,getSessionState:x,applyDownlinkProbe:S}=cn(r.trpcClient,o?e:null),C=_(o?e:null,{width:Qa}),w=za(o&&t?e:null),T=w.state===`requesting-mic`||w.state===`starting`||w.state===`connecting`||w.state===`stopping`,E=w.isTalking||T,D=()=>{w.state===`idle`||w.state===`error`?w.start():w.state!==`stopping`&&w.stop()},O=le(),k=gr(),A=typeof window<`u`?window.localStorage.getItem(`camstack_admin_token`):null,j=Ka(k.request,A),ee=O.length>0?i(d,{children:O.map(e=>i(`div`,{className:`absolute inset-0`,children:e.node},e.id))}):null;return i(Wt,{serverUrl:a,createSession:p,sendAnswer:m,handleOffer:h,getIceServers:g,addIceCandidate:v,getIceCandidates:y,closeSession:b,getSessionState:x,applyDownlinkProbe:S,...j===null?{}:{...j,onExitPlayback:()=>k.clear()},streams:u,pipelineMetrics:f,phase:s.phase,detections:s,...l===void 0?{}:{stationaryObjects:l},defaultShowDetections:!0,defaultShowMotion:!0,showPlayStop:!0,snapshotSrc:C.src,...C.src?{posterUrl:C.src}:{},snapshotLoading:C.loading,onRefreshSnapshot:C.refresh,intercomAvailable:t,intercomShown:E,onIntercomToggle:D,extraOverlay:ee,chromeless:!0,className:`h-full`})}function Ja({deviceId:e,containerDeviceId:t}){let{t:n}=X();return Number.isFinite(e)?i(`div`,{className:`flex flex-col h-full`,children:i(Vn,{...t===void 0?{deviceId:e}:{containerDeviceId:t},limit:50,maxHeight:`max-h-full`,showScope:!1,showFilters:!1})}):i(`div`,{className:`flex items-center justify-center h-full text-[11px] text-foreground-subtle italic`,children:n(`device.panelContent.notLoaded`,{id:e})})}function Ya({deviceId:e}){let{t}=X();if(!Number.isFinite(e))return i(`div`,{className:`flex items-center justify-center h-full text-[11px] text-foreground-subtle italic`,children:t(`device.panelContent.notLoaded`,{id:e})});let n=[`CamStack REPL — device #${e}`,``,` device.state.battery.value sync state read`,` await device.snapshot.getSnapshot({}) cap action`,``,` type 'examples' for more, 'context' for the full API`].join(`
2
- `);return i(Ga,{scope:{type:`device`,deviceId:e},greeting:n,className:`h-full border-0 rounded-none`})}function Xa({deviceId:e}){let{t}=X();return Number.isFinite(e)?i(`div`,{className:`flex flex-col h-full overflow-y-auto`,children:i(rr,{deviceId:e,limit:50,maxHeight:`max-h-full`})}):i(`div`,{className:`flex items-center justify-center h-full text-[11px] text-foreground-subtle italic`,children:t(`device.panelContent.notLoaded`,{id:e})})}function Za({deviceId:e}){let{t}=X();return Number.isFinite(e)?i(`div`,{className:`flex flex-col h-full overflow-y-auto`,children:i(vn,{deviceId:e,limit:50,maxHeight:`max-h-full`})}):i(`div`,{className:`flex items-center justify-center h-full text-[11px] text-foreground-subtle italic`,children:t(`device.panelContent.notLoaded`,{id:e})})}var Qa=960;function $a({initialName:e,label:t=`Name`,layout:n=`inline`,bound:r}){return i(Z,{label:t,layout:n,value:i(`input`,{type:`text`,value:r.value,"aria-label":t,placeholder:e,onChange:e=>r.onChange(e.target.value),className:`flex-1 min-w-0 w-full px-1.5 py-0.5 text-[11px] bg-background border border-border rounded focus:outline-none focus:border-primary`})})}c();function eo({label:t=`Location`,layout:r=`inline`,bound:a}){let{t:o}=X(),{data:s}=ur(),c=s??[],l=a.value.trim().toLowerCase(),u=n(()=>l.length===0?[]:c.filter(e=>e.toLowerCase()!==l&&e.toLowerCase().includes(l)),[c,l]);return i(Z,{label:t,layout:r,value:e(`div`,{className:`relative`,children:[i(`input`,{type:`text`,value:a.value,"aria-label":t,onChange:e=>a.onChange(e.target.value),placeholder:o(`shared.locationRow.roomAreaOrLeaveEmpty`,`Room / area (or leave empty to clear)`),className:`flex-1 min-w-0 w-full px-1.5 py-0.5 text-[11px] bg-background border border-border rounded focus:outline-none focus:border-primary`}),u.length>0&&i(`div`,{className:`absolute z-10 left-0 right-0 mt-0.5 max-h-40 overflow-y-auto rounded-md border border-border bg-surface shadow-md`,children:u.map(t=>e(`button`,{type:`button`,onClick:()=>a.onChange(t),className:`w-full flex items-center gap-2 px-2 py-1 text-left text-[11px] hover:bg-surface-hover`,children:[i(pe,{className:`h-3 w-3 text-foreground-subtle flex-shrink-0`}),i(`span`,{className:`truncate`,children:t})]},t))})]})})}var to=`w-full min-w-0 px-1.5 py-0.5 text-[11px] bg-background border border-border rounded focus:outline-none focus:border-primary disabled:opacity-50 disabled:cursor-not-allowed`,no=0,ro=10;function io(e){if(e.trim()===``)return``;let t=Number.parseInt(e,10);return Number.isFinite(t)?String(t<no?no:t>ro?ro:t):``}function ao({value:e,onChange:t,disabled:n=!1,placeholder:r,className:a,id:o,"aria-label":s}){return i(`input`,{type:`number`,min:no,max:ro,step:1,id:o,className:a??to,"aria-label":s,placeholder:r,value:e,onChange:e=>{t(io(e.target.value))},disabled:n})}function oo({deviceName:t,value:n,inheritedIcon:r,inheritedLabel:a,disabled:o,onChange:s}){let{t:c}=X(),l={trigger:c(`deviceDisplay.pickIcon`,{name:t}),panel:c(`deviceDisplay.iconFor`,{name:t}),searchPlaceholder:c(`deviceDisplay.iconSearchPlaceholder`),clear:a,noMatches:c(`deviceDisplay.iconNoMatches`)};return e(`div`,{className:`flex items-center gap-2`,children:[i(Zn,{value:n===``?null:n,onPick:e=>s(e??``),categoryLabel:e=>c(`deviceDisplay.iconCategory.${e}`,{defaultValue:ke(e)}),fallbackGlyph:r,labels:l,disabled:o}),i(`span`,{className:`text-[11px] text-foreground-subtle`,children:n===``?a:n})]})}var so=`w-full min-w-0 px-1.5 py-0.5 text-[11px] bg-background border border-border rounded focus:outline-none focus:border-primary disabled:opacity-50`;function co(e){if(e.trim()===``)return;let t=Number.parseInt(e,10);return Number.isFinite(t)?t:void 0}function lo({device:t,role:n,display:r,onChange:a}){let o=ue();hn();let{t:s}=X(),c=l(),u=n===null?void 0:At[n],f=u?.kind===`numeric`,p=n!==null||t.parentDeviceId!==null&&t.parentDeviceId!==void 0,m=t.sourceInfo?.quantity,h=u?.kind===`numeric`?u.quantity??(m!==void 0&&m!==`device`?m:void 0):void 0,g=h===void 0?void 0:je(h),_=g===void 0?void 0:Oe(g),{data:v}=bn({},{staleTime:6e4,enabled:n!==null}),y=Mt({onSuccess:()=>{c.invalidateQueries({queryKey:[[`deviceManager`]]})}}),b=()=>{if(n===null)return;let e=co(r.precision),t={...r.icon===``?{}:{icon:r.icon},...r.unit===``?{}:{unit:r.unit},...e===void 0?{}:{precision:e}};y.mutate({defaults:{...v?.defaults,[n]:t}})},x=n===null?void 0:v?.defaults?.[n]?.icon,S=x===void 0?void 0:sr(x),C=n===null?Cn(t.type,o):In(n,o),w={icon:S??C.icon,label:S===void 0?C.label:String(x)},T=n===null&&t.type===W.Container?s(`deviceDisplay.inheritedContainer`):S===void 0?s(`deviceDisplay.inherited`,{name:w.label}):s(`deviceDisplay.inheritedRoleDefault`,{icon:w.label,role:C.label}),E=n===null?``:In(n,o).label;return e(`div`,{className:`mt-3 divide-y divide-border border-t border-border`,children:[i(Z,{label:s(`deviceDisplay.icon`),value:i(oo,{deviceName:t.name,value:r.icon,inheritedIcon:w.icon,inheritedLabel:T,disabled:!1,onChange:e=>a({icon:e})})}),p&&i(Z,{label:s(`deviceDisplay.label`),value:i(`input`,{type:`text`,className:so,"aria-label":s(`deviceDisplay.label`),placeholder:n===null?t.name:E,value:r.label,onChange:e=>a({label:e.target.value})})}),f&&e(d,{children:[i(Z,{label:s(`deviceDisplay.unit`),value:i(pt,{dimension:_,value:r.unit,onChange:e=>a({unit:e}),disabled:!1,"aria-label":s(`deviceDisplay.unit`),inheritLabel:s(`deviceDisplay.unitSource`,{unit:g===void 0?``:` (${g})`}),emptyReason:s(`deviceDisplay.unitSource`,{unit:``})})}),i(Z,{label:s(`deviceDisplay.precision`),value:i(ao,{"aria-label":s(`deviceDisplay.precision`),placeholder:s(`deviceDisplay.precisionInherit`),value:r.precision,onChange:e=>a({precision:e}),disabled:!1})})]}),n!==null&&i(`div`,{className:`px-3 sm:px-4 py-2`,children:i(J,{type:`button`,variant:`outline`,size:`sm`,onClick:b,disabled:y.isPending,title:s(`deviceDisplay.setRoleDefaultTitle`,{role:E}),children:s(`deviceDisplay.setRoleDefault`,{role:E})})})]})}function uo(e){return typeof e.linkDeviceId==`number`}var fo=new Set(Object.values(U));function po(e){return fo.has(e)}var mo={[W.Switch]:[U.Siren,U.Floodlight,U.Spotlight,U.PirSensor,U.Chime,U.Autotrack,U.Nightvision,U.PrivacyMask,U.BinaryHelper],[W.Light]:[U.Floodlight,U.Spotlight,U.Nightvision],[W.Siren]:[U.Siren],[W.Button]:[U.Doorbell],[W.Sensor]:[U.MotionSensor,U.ContactSensor,U.LeakSensor,U.SmokeSensor,U.COSensor,U.GasSensor,U.TamperSensor,U.VibrationSensor,U.ConnectivitySensor,U.SoundSensor,U.BinarySensor,U.TemperatureSensor,U.HumiditySensor,U.AmbientLightSensor,U.PressureSensor,U.WindSensor,U.RainSensor,U.UvSensor,U.SolarRadiationSensor,U.SoilMoistureSensor,U.PowerSensor,U.EnergySensor,U.VoltageSensor,U.CurrentSensor,U.AirQualitySensor,U.BatterySensor,U.NumericSensor,U.EnumSensor,U.DateTimeSensor,U.GenericSensor],[W.Control]:[U.NumericControl,U.SelectControl,U.TextControl,U.DateTimeControl],[W.Notifier]:[U.MobilePushNotifier,U.MessagingNotifier,U.EmailNotifier,U.GenericNotifier]};function ho(e){for(let t of Object.values(W))if(t===e)return!0;return!1}function go(e){return ho(e)?mo[e]??[]:[]}function _o(e,t){let n=go(t);return e==null||e===``||n.includes(e)?n:[...n,e]}function vo({device:t}){let{t:n}=X(),r=ue(),a=Vr(),o=a?.identity??null,s=o?.name??t.name,c=o?.location??t.location??``,l=o?.role??t.role??null,u=o?.display.hidden??t.display?.hidden===!0,d=a!==null&&o!==null;return e(`section`,{"aria-label":n(`customize.identity.title`),className:`${E} ${m}`,children:[e(`div`,{className:`grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-4`,children:[d?i($a,{deviceId:t.id,initialName:s,label:n(`customize.identity.name`),layout:`stacked`,bound:{value:s,onChange:a.setIdentityName}}):i(Z,{label:n(`customize.identity.name`),layout:`stacked`,value:s}),d?i(eo,{deviceId:t.id,initialLocation:c,label:n(`customize.identity.room`),layout:`stacked`,bound:{value:c,onChange:a.setIdentityLocation}}):i(Z,{label:n(`customize.identity.room`),layout:`stacked`,value:c===``?n(`common.unset`):c}),i(Z,{label:n(`customize.identity.type`),layout:`stacked`,value:t.type}),i(Z,{label:n(`customize.identity.hidden`),layout:`stacked`,value:i(lt,{"aria-label":n(`deviceDisplay.hideFromLists`),checked:u,disabled:!d,onChange:e=>a?.setIdentityDisplay({hidden:e.target.checked})})}),i(Z,{label:n(`customize.identity.role`),layout:`stacked`,value:uo(t)||!d?i(`span`,{children:yo(l,n(`customize.identity.noRole`),r)}):i(qt,{"aria-label":n(`customize.identity.role`),value:l??``,options:[{value:``,label:n(`customize.identity.noRole`)},..._o(l,t.type).map(e=>({value:e,label:yo(e,n(`customize.identity.noRole`),r)}))],onChange:e=>a.setIdentityRole(e.target.value===``?null:e.target.value)})})]}),o!==null&&a!==null&&i(lo,{device:t,role:l,display:o.display,onChange:a.setIdentityDisplay})]})}function yo(e,t,n){return e==null||e===``?t:po(e)?In(e,n).label:e}function bo(e){let t=De({draft:{kind:`pulse`,cap:e.cap,targetId:e.targetId,enabled:e.enabled,debounceMs:e.debounceMs,...e.edges===void 0?{}:{edges:[...e.edges]},sources:e.sources.map(e=>({addonId:e.addonId,stableId:e.stableId,cap:e.cap,fieldPath:e.fieldPath}))},device:e.device,changedAtFields:e.sources.map(e=>e.changedAtField)});return t.ok?t.value:null}function xo(e){let t=ye({draft:{kind:`span`,cap:e.cap,targetId:e.targetId,timeoutMs:e.timeoutMs,...e.cooldownMs===void 0?{}:{cooldownMs:e.cooldownMs},sources:e.sources.map(e=>({addonId:e.addonId,stableId:e.stableId,cap:e.cap,fieldPath:e.fieldPath,mode:e.mode}))},device:e.device});return t.ok?t.value:null}function So(e,t){return{deviceId:e,config:t.config}}function Co(e,t){return{deviceId:e,patch:{motionCooldownMs:t}}}async function wo(e,t,n,r){await n(So(e,t)),await r(Co(e,t.timeoutMs))}c();function To(t){let{t:n}=X(),r=t.mode===`change`?n(`customize.scalar.changeTitle`,{title:t.title}):n(`customize.scalar.addTitle`,{title:t.title});return i(Jn,{open:t.open,onOpenChange:e=>!e&&t.onClose(),children:e(En,{width:`xl`,placement:`sheet-on-mobile`,scroll:`body`,"aria-label":r,children:[i(dr,{children:i(xr,{children:r})}),t.open?i(Eo,{...t}):null]})})}function Eo(t){let{t:r}=X(),a=Ln({projection:`slim`}),s=Ci(n(()=>a.status===`success`?ii(a.data):[],[a.status,a.data]),t.sources[0]),[c,l]=o(()=>Do(t.sources)),[u,f]=o(null),[p,m]=o(!1);!p&&s!==null&&(f(s),m(!0));let[h,g]=o(t.edge),[_,v]=o(t.debounceMs/1e3),y=Oo(c),b=y.length===0?null:bo({cap:t.cap,targetId:t.targetId,device:t.target,enabled:t.enabled,debounceMs:Math.round(_*1e3),edges:[h],sources:y}),x=y[0]??null,S=Ht({deviceId:c[0]?.deviceId??0}),C=Ao(S.status===`success`?S.data:void 0,x),w=Ae(Ie,C,Math.round(_*1e3));return e(d,{children:[e(Rn,{className:`flex flex-col gap-3 p-2 sm:p-4`,children:[i(`p`,{className:`text-[11px] text-foreground-muted`,children:r(`customize.event.pulseBody`)}),i(ai,{kind:`event`,shape:`pulse`,enabled:t.open,hostId:t.host.id,devicePickerTestId:`event-pulse-picker`,destination:{cap:t.cap,targetId:t.targetId,title:t.title},device:u,picked:c,onDeviceChange:f,onPickedChange:l,edges:t.edges,edge:h,onEdgeChange:g,debounceSec:_,onDebounceSecChange:v,sourceModes:[],timeoutSec:0,onTimeoutSecChange:()=>void 0,cooldownSec:null,onCooldownSecChange:()=>void 0}),C.kind===`level`?i(`p`,{role:`status`,className:`text-[11px] text-foreground-subtle`,children:r(ko(C,w.lastPressedAt))}):null]}),e(tn,{className:`flex flex-wrap gap-2`,children:[i(J,{variant:`ghost`,onClick:t.onClose,children:r(`customize.scalar.cancel`)}),i(J,{"data-testid":`event-save`,disabled:!t.canSave||b===null,onClick:()=>{b!==null&&t.onSave(b)},children:r(`customize.scalar.save`)})]})]})}function Do(e){return e.map(e=>({deviceId:0,addonId:e.addonId,stableId:e.stableId,cap:e.cap,fieldPath:e.fieldPath,deviceName:e.stableId,changedAtField:e.changedAtField}))}function Oo(e){return e.map(e=>({addonId:e.addonId,stableId:e.stableId,cap:e.cap,fieldPath:e.fieldPath,changedAtField:e.changedAtField??Ee[e.cap]??`lastChangedAt`}))}function ko(e,t){return e.kind===`unread`?`customize.event.previewWaiting`:e.active&&t===null?`customize.event.previewAlreadyOn`:t===null?`customize.event.previewQuiet`:`customize.event.previewCounted`}function Ao(e,t){if(e===void 0||t===null)return{kind:`unread`};let n=e[t.cap],r=n===void 0?void 0:ri(n,t.fieldPath),i=Ee[t.cap]??t.changedAtField,a=n===void 0?void 0:ri(n,i);return typeof r==`boolean`?{kind:`level`,active:r,changedAt:typeof a==`number`&&Number.isFinite(a)?a:null}:{kind:`unread`}}function jo(e,t,n){if(e===`pending`)return{kind:`pending`,seconds:null};if(e===`unknown`||e==null)return{kind:`unknown`,seconds:null};if(!e)return{kind:`quiet`,seconds:null};let r=Mo(t,n);return r===null?{kind:`unknown`,seconds:null}:{kind:`active`,seconds:r}}function Mo(e,t){if(e==null||!Number.isFinite(e)||e<Ki)return null;let n=Math.floor((t-e)/1e3);return n<0?0:n}function No(e,t){if(e===`pending`)return{kind:`pending`,lastPressedAt:null,pressCount:null};if(e===`unknown`)return{kind:`unknown`,lastPressedAt:null,pressCount:null};let n=typeof e==`number`&&Number.isFinite(e)&&e>=Ki?e:null,r=typeof t==`number`&&Number.isFinite(t)&&t>=0?t:null;return n===null?{kind:`none`,lastPressedAt:null,pressCount:r}:{kind:`ring`,lastPressedAt:n,pressCount:r}}c();function Po({device:t,handle:n,availability:r,cap:a,title:s,view:c}){let{t:l,i18n:u}=X(),f=oi(),[p,m]=o(!1),[h,g]=o(null),_=$r(n.state),v=Zr(_,a),y=Io(n,v),b=y.kind===`known`&&y.value!==null?Te({feature:y.value,device:n.target,cap:a,targetId:c.id,timestampPath:c.timestampPath,counterPath:c.counterPath}):null,x=b!==null,S=fi(x),C=b?.draft.sources[0]??null,w=C===null||S.kind!==`known`?null:S.value.find(e=>Ne({addonId:e.addonId,stableId:e.stableId})===Ne(C))??null,T=Lo(x,S.kind,w!==null),E=H({cap:a,targetId:c.id,device:n.target,timestampPath:c.timestampPath,counterPath:c.counterPath,apply:c.apply,stored:y,sourcePresence:T,sourceUnknownReason:S.kind===`unknown`?S.reason:null}),O=n.state.kind===`none`||n.state.kind===`present`;if(r.kind===`absent`||!c.deviceTypes.includes(t.type))return null;let k=async e=>{let t=await n.save(e);g(t.kind===`refused`?t.reason:null)},A=Ro(b),j=b?.draft.edges?.[0],ee=j!==void 0&&c.edges.includes(j)?j:c.defaultEdge,te=C===null?``:di(C.cap,C.fieldPath,u.language),M=y.kind===`known`&&y.value===null,ne=!x&&y.kind===`known`&&y.value!==null;return e(d,{children:[i(ti,{id:a,icon:D,title:s,testId:`event-card-${a}`,actions:e(d,{children:[v!==null&&e(`label`,{className:`flex items-center gap-1.5 text-[11px] text-foreground`,children:[i(lt,{"aria-label":l(`customize.doorbell.active`),checked:v.enabled!==!1,disabled:!O||n.saving,onChange:e=>{k(ni(_,n.target,{...v,enabled:e.target.checked}))}}),l(`customize.doorbell.active`)]}),i(K,{children:l(li(E.text,E.status.state))})]}),children:i(`div`,{className:`flex flex-col gap-2 px-3 py-2 sm:px-4`,children:r.kind===`pending`||r.kind===`present`&&!O?i(`p`,{role:`status`,className:`text-xs text-foreground-subtle`,children:l(`customize.event.checking`)}):r.kind===`unknown`?i(q,{title:l(`customize.scalar.unreadable`),message:r.reason}):e(d,{children:[x&&C!==null&&i(`p`,{className:`text-xs text-foreground`,children:l(`customize.scalar.override`,{name:w===null?C.stableId:Kr(w.name,w.id,S.kind===`known`?S.value.map(e=>({id:e.id,name:e.name,parentDeviceId:e.parentDeviceId??null})):[]),field:te})}),x&&i(Fo,{deviceId:t.id,cap:a,timestampPath:c.timestampPath,counterPath:c.counterPath,startedAt:n.state.kind===`present`?n.state.view.block.createdAt:null}),ne&&v!==null&&e(`p`,{className:`text-xs text-foreground flex flex-wrap items-center gap-1`,children:[l(`customize.doorbell.otherFormula`),i(Pi,{handle:n,cap:a,fieldPath:c.counterPath})]}),M&&i(`p`,{className:`text-xs text-foreground-subtle`,children:l(`customize.scalar.noOverride`)}),h!==null&&i(`p`,{role:`alert`,className:`text-xs text-danger break-words`,children:h}),e(`div`,{className:`flex flex-wrap gap-2`,children:[x&&i(J,{variant:`outline`,size:`sm`,disabled:n.saving,onClick:()=>m(!0),children:l(`customize.scalar.change`)}),x&&i(J,{variant:`ghost`,size:`sm`,disabled:n.saving,onClick:()=>{if(_===null)return;let e=si(_,a);f(l(`customize.doorbell.removeWhat`,{name:w?.name??t.name}),e===null).then(t=>{t&&k(e)})},children:l(`customize.scalar.remove`)}),M&&i(J,{variant:`outline`,size:`sm`,"data-testid":`event-add-${a}`,disabled:n.saving,onClick:()=>m(!0),children:l(`customize.scalar.add`)})]})]})})}),i(To,{open:p,mode:x?`change`:`add`,title:s,cap:a,targetId:c.id,host:t,target:n.target,enabled:v?.enabled!==!1,debounceMs:b?.draft.debounceMs??c.debounceMs,edges:c.edges,edge:ee,sources:A,canSave:O&&!n.saving,onClose:()=>m(!1),onSave:e=>{m(!1),k(ni(_,n.target,e))}})]})}function Fo({deviceId:t,cap:n,timestampPath:r,counterPath:a,startedAt:o}){let{t:s}=X(),c=Si({deviceId:t,cap:n,path:r}),l=Si({deviceId:t,cap:n,path:a}),u=No(c.kind===`pending`?`pending`:c.kind!==`value`||typeof c.value!=`number`?`unknown`:c.value,l.kind===`value`&&typeof l.value==`number`?l.value:null);return u.kind===`pending`?i(`p`,{role:`status`,className:`text-[11px] text-foreground-subtle`,children:s(`customize.event.checking`)}):u.kind===`unknown`?i(`p`,{role:`status`,className:`text-[11px] text-foreground-subtle`,children:s(`customize.event.doorbellLast.unknown`)}):u.kind===`none`?e(`p`,{role:`status`,className:`text-[11px] text-foreground-subtle`,children:[s(`customize.event.doorbellLast.none`,{when:o===null?``:Gi(o)}),u.pressCount===null?``:` · ${s(`customize.event.doorbellCount`,{count:u.pressCount})}`]}):e(`p`,{role:`status`,className:`text-[11px] text-foreground`,children:[s(`customize.event.doorbellLast.ring`,{when:Gi(u.lastPressedAt)}),u.pressCount===null?``:` · ${s(`customize.event.doorbellCount`,{count:u.pressCount})}`]})}function Io(e,t){return e.state.kind===`pending`?{kind:`pending`}:e.state.kind===`unknown`||e.state.kind===`not-loaded`?{kind:`unknown`,reason:e.state.reason}:{kind:`known`,value:t}}function Lo(e,t,n){return e?t===`pending`?`pending`:t===`unknown`?`unknown`:n?`present`:`absent`:`present`}function Ro(e){return e===null?[]:e.draft.sources.map((t,n)=>({addonId:t.addonId,stableId:t.stableId,cap:t.cap,fieldPath:t.fieldPath,changedAtField:e.changedAtFields[n]??``}))}c();function zo(t){let{t:n}=X(),r=t.mode===`change`?n(`customize.scalar.changeTitle`,{title:t.title}):n(`customize.scalar.addTitle`,{title:t.title});return i(Jn,{open:t.open,onOpenChange:e=>!e&&t.onClose(),children:e(En,{width:`xl`,placement:`sheet-on-mobile`,scroll:`body`,"aria-label":r,children:[i(dr,{children:i(xr,{children:r})}),t.open?i(Bo,{...t}):null]})})}function Bo(t){let{t:r}=X(),a=Ln({projection:`slim`}),s=Ci(n(()=>a.status===`success`?ii(a.data):[],[a.status,a.data]),t.sources[0]),[c,l]=o(()=>Vo(t.sources)),[u,f]=o(null),[p,m]=o(!1);!p&&s!==null&&(f(s),m(!0));let[h,g]=o(t.timeoutMs/1e3),[_,v]=o((t.cooldownMs??0)/1e3),y=Ho(c),b=xo({cap:t.cap,targetId:t.targetId,device:t.target,timeoutMs:Math.round(h*1e3),cooldownMs:t.cooldownMs===null?void 0:Math.round(_*1e3),sources:y}),x=c[0];return e(d,{children:[e(Rn,{className:`flex flex-col gap-3 p-2 sm:p-4`,children:[i(`p`,{className:`text-[11px] text-foreground-muted`,children:r(`customize.event.spanBody`)}),i(ai,{kind:`event`,shape:`span`,enabled:t.open,hostId:t.host.id,devicePickerTestId:`event-span-picker`,destination:{cap:t.cap,targetId:t.targetId,title:t.title},device:u,picked:c,onDeviceChange:f,onPickedChange:e=>l(e.filter(e=>!(e.addonId===t.host.addonId&&e.stableId===t.host.stableId))),edges:[],edge:`rising`,onEdgeChange:()=>void 0,debounceSec:0,onDebounceSecChange:()=>void 0,sourceModes:t.sourceModes,timeoutSec:h,onTimeoutSecChange:g,cooldownSec:t.cooldownMs===null?null:_,onCooldownSecChange:v}),x!==void 0&&i(Uo,{deviceId:x.deviceId,cap:x.cap,fieldPath:x.fieldPath,timeoutMs:Math.round(h*1e3)})]}),e(tn,{className:`flex flex-wrap gap-2`,children:[i(J,{variant:`ghost`,onClick:t.onClose,children:r(`customize.scalar.cancel`)}),i(J,{"data-testid":`event-save`,disabled:!t.canSave||b===null,onClick:()=>{b!==null&&t.onSave(b)},children:r(`customize.scalar.save`)})]})]})}function Vo(e){return e.map(e=>({deviceId:0,addonId:e.addonId,stableId:e.stableId,cap:e.cap,fieldPath:e.fieldPath,deviceName:e.label.length>0?e.label:e.stableId,mode:e.mode}))}function Ho(e){return e.map(e=>({addonId:e.addonId,stableId:e.stableId,cap:e.cap,fieldPath:e.fieldPath,mode:e.mode??`in-addition`,label:e.deviceName}))}function Uo({deviceId:e,cap:t,fieldPath:n,timeoutMs:r}){let{t:a}=X(),o=Si({deviceId:e,cap:t,path:n}),s=o.kind===`value`&&typeof o.value==`boolean`?{kind:`level`,active:o.value,changedAt:null}:{kind:`unread`},c=G(Se,s,{timeoutMs:r,cooldownMs:0,nowMs:Date.now()});return s.kind===`unread`?null:i(`p`,{role:`status`,className:`text-[11px] text-foreground-subtle`,children:a(Wo(s,c.open))})}function Wo(e,t){return e.kind===`unread`?`customize.event.previewWaiting`:t?`customize.event.previewMotionOn`:e.active?`customize.event.previewSensorOn`:`customize.event.previewMotionOff`}c();function Go({device:n,availability:r,cap:a,title:s,view:c,sensors:l}){let{t:u}=X(),f=on(),p=rt(),m=pn({addonId:`pipeline-orchestrator`,deviceId:n.id,nodeId:`hub`}),[h,g]=o(!1),[_,v]=o(null),y=t(!1),[b,x]=o(!1),S=qo(l),C=fi(!0),w=Ce(c.id,S),T=Zo(Ri(m.data).motionCooldownMs,c.timeoutMs);if(r.kind===`absent`||!c.deviceTypes.includes(n.type))return null;let E=b||f.isPending||p.isPending,D=w.writable&&!E&&r.kind===`present`,O=async e=>{if(!w.writable||y.current){v(u(`customize.saveInFlight`));return}y.current=!0,x(!0);try{await wo(n.id,e,async e=>{await f.mutateAsync({deviceId:e.deviceId,config:e.config===null?null:{sensors:e.config.sensors.map(e=>({addonId:e.addonId,stableId:e.stableId,mode:e.mode}))}})},async e=>{let t={motionCooldownMs:e.patch.motionCooldownMs};await p.mutateAsync({deviceId:e.deviceId,patch:t})}),v(null),await l.refetch()===`failed`&&v(u(`customize.motion.refetchFailed`))}catch(e){v(e instanceof Error?e.message:String(e))}finally{y.current=!1,x(!1)}},k=w.rows.map(e=>({addonId:e.addonId,stableId:e.stableId,cap:`binary`,fieldPath:`on`,mode:e.mode,label:e.name}));return e(d,{children:[i(ti,{id:a,icon:fe,title:s,testId:`event-card-${a}`,actions:i(K,{children:u(li(w.text,w.status.state))}),children:i(`div`,{className:`flex flex-col gap-2 px-3 py-2 sm:px-4`,children:r.kind===`pending`||S.kind===`pending`?i(`p`,{role:`status`,className:`text-xs text-foreground-subtle`,children:u(`customize.motion.reading`)}):r.kind===`unknown`||S.kind===`unknown`?i(Jo,{reason:Xo(S)||(r.kind===`unknown`?r.reason:``)}):e(d,{children:[i(Ko,{deviceId:n.id}),w.rows.length===0?i(`p`,{className:`text-xs text-foreground-subtle`,children:u(`customize.scalar.noOverride`)}):i(`ul`,{className:`flex flex-col gap-1`,children:w.rows.map(t=>e(`li`,{className:`text-xs text-foreground`,children:[Yo(t,C),t.reason===null?``:` — ${u(`customize.motion.state.${t.state}`)}`]},t.key))}),i(`p`,{className:`text-[11px] text-foreground-subtle`,children:u(`customize.event.timeoutSeconds`,{seconds:T/1e3})}),_!==null&&i(`p`,{role:`alert`,className:`text-xs text-danger break-words`,children:_}),i(`div`,{className:`flex flex-wrap gap-2`,children:i(J,{variant:`outline`,size:`sm`,"data-testid":`event-add-${a}`,disabled:!D,onClick:()=>g(!0),children:w.rows.length===0?u(`customize.scalar.add`):u(`customize.scalar.change`)})})]})})}),i(zo,{open:h,mode:w.rows.length===0?`add`:`change`,title:s,cap:a,targetId:c.id,host:n,target:{addonId:n.addonId,stableId:n.stableId},timeoutMs:T,cooldownMs:c.cooldownMs,sourceModes:c.sourceModes,sources:k,canSave:D,onClose:()=>g(!1),onSave:e=>{g(!1),O(e)}})]})}function Ko({deviceId:e}){let{t}=X(),n=Si({deviceId:e,cap:`motion`,path:`detected`}),r=Si({deviceId:e,cap:`motion`,path:`lastDetectedAt`}),a=jo(n.kind===`pending`?`pending`:n.kind!==`value`||typeof n.value!=`boolean`?`unknown`:n.value,r.kind===`value`&&typeof r.value==`number`?r.value:null,Date.now());return i(`p`,{role:`status`,className:`text-xs text-foreground`,children:t(a.kind===`active`?`customize.event.motionNow.active`:`customize.event.motionNow.${a.kind}`,a.seconds===null?void 0:{seconds:a.seconds})})}function qo(e){return e.presence===`pending`?{kind:`pending`}:e.status===null?{kind:`unknown`,reason:e.failureReason}:{kind:`known`,value:e.status}}function Jo({reason:e}){let{t}=X(),n=e.trim();return n.length===0?i(q,{message:t(`customize.motion.unreadableBare`)}):i(q,{title:t(`customize.motion.unreadable`,{reason:n}),message:n})}function Yo(e,t){if(t.kind!==`known`)return e.name;let n=t.value.find(t=>t.addonId===e.addonId&&t.stableId===e.stableId);return Kr(e.name,n?.id??null,t.value.map(e=>({id:e.id,name:e.name,parentDeviceId:e.parentDeviceId??null})))}function Xo(e){return e.kind===`unknown`?e.reason??``:e.kind===`known`&&e.value.state===`unreadable`?e.value.reason:``}function Zo(e,t){return e!==null&&Number.isFinite(e)?e:t}var Qo=xe;function $o(e,t){let n=Qo[e];return n===void 0?null:n.targets.find(e=>e.id===t)??null}function es({device:e,handle:t,facts:n,sensors:r}){let{t:a}=X();return i(d,{children:Xr().map(o=>{let s=o.pulse??o.span;if(s===null||!s.deviceTypes.includes(e.type))return null;let c=$o(o.cap,s.id);if(c===null)return null;let l=a(o.pulse===null?`customize.motion.title`:`customize.doorbell.title`),u=ci(Ni(o.cap,c),n);return o.pulse===null?o.span===null?null:i(Go,{device:e,availability:u,cap:o.cap,title:l,view:o.span,sensors:r},o.cap):i(Po,{device:e,handle:t,availability:u,cap:o.cap,title:l,view:o.pulse},o.cap)})})}function ts({id:t,icon:n,title:r,headerControl:a,addLabel:o,onAdd:s,addDisabled:c=!1,notices:l,suggestion:u,children:f}){let{t:p}=X(),m=s!==void 0&&o!==void 0;return e(ti,{id:t,icon:n,title:r,actions:e(d,{children:[a,m&&!c&&u!==void 0&&u.count>0&&e(J,{variant:`ghost`,size:`sm`,onClick:u.onOpen,children:[i(re,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),p(`customize.suggest.hint`,{count:u.count,location:u.location})]}),m&&i(J,{variant:`outline`,size:`sm`,disabled:c,onClick:s,children:o})]}),children:[l!==void 0&&i(`div`,{className:`flex flex-col gap-1 px-3 pt-2 empty:hidden sm:px-4`,children:l}),i(`ul`,{className:`flex flex-col divide-y divide-border`,children:f})]})}function ns(e,t){if(e.kind!==`known`||typeof t!=`string`||t.length===0)return null;let n=Bn(e.value,t),r=new Map(e.value.map(e=>[e.id,e])),i=new Map;for(let e of n){let t=r.get(e)?.parentDeviceId,n=t==null?void 0:r.get(t);n!==void 0&&n.type===`container`&&i.set(e,n.name)}return{location:t,ids:n,containers:i}}function rs(e,t,n){return nr(e,t?.ids??new Set,n)}function is(e,t){return e?.containers.get(t)??null}function as(e,t,n){return e.kind===`known`?rs(e.value,t,n).suggested.length:0}function os(e,t){let n=[t,e.detail].filter(e=>e!==null&&e!==``);return n.length===0?null:n.join(` · `)}function ss({location:t,devices:n,action:r,onPick:a,onPickAll:o}){let{t:s}=X();if(n.length===0)return null;let c=s(`customize.suggest.heading`,{location:t});return e(`section`,{"aria-label":c,className:`flex flex-col gap-1`,children:[e(`div`,{className:`flex min-h-7 items-center gap-2`,children:[i(`h3`,{className:`${j} min-w-0 flex-1`,children:c}),o!==void 0&&n.length>1&&i(J,{variant:`ghost`,size:`sm`,onClick:o,children:s(`customize.suggest.addAll`,{count:n.length})})]}),i(`ul`,{className:`flex flex-col divide-y divide-border rounded-md border border-border`,children:n.map(t=>{let n=os(t,t.container===null||t.name.includes(t.container)?null:s(`customize.suggest.in`,{container:t.container}));return e(`li`,{className:`${A} flex items-center gap-3`,children:[e(`div`,{className:`min-w-0 flex-1`,children:[i(`div`,{className:`text-xs text-foreground break-words`,children:t.name}),n!==null&&i(`div`,{className:`text-[11px] text-foreground-subtle break-words`,children:n})]}),i(J,{variant:`outline`,size:`sm`,"aria-label":s(r===`add`?`customize.suggest.addNamed`:`customize.suggest.useNamed`,{name:t.name}),onClick:()=>a(t.id),children:s(r===`add`?`customize.suggest.add`:`customize.suggest.use`)})]},t.id)})})]})}c();function cs(e){return e.kind===`pending`?`pending`:e.kind===`unknown`?`failed`:`answered`}function ls(e){return e.map(e=>({id:e.deviceId,name:e.name,...e.meta===null?{}:{type:e.meta},...e.detail===null?{}:{location:e.detail.includes(` · `)?e.detail.split(` · `).at(-1)??null:e.detail},...e.detail===null?{}:{detail:e.detail}}))}function us({open:t,title:r,selection:s,candidates:c,filters:l,room:u=null,confirmLabel:d,onConfirm:f,onClose:p}){let{t:m}=X(),[h,g]=o(null),[_,v]=o([]),y=l?.find(e=>e.id===h)??l?.[0]??null,b=c.kind===`known`?c.value:[],x=c.kind===`known`?Ii(c.value,``,y):[],S=rs(b,u,e=>e.deviceId).suggested,C=rs(x,u,e=>e.deviceId).others,w=n(()=>ls(C),[C]),T=cs(c),E=b.filter(e=>_.includes(e.deviceId));a(()=>{t||(v([]),g(null))},[t]);let D=()=>{v([]),g(null),p()},O=e=>{e.length!==0&&(f(e),v([]),g(null))},k=()=>O(E);return i(Jn,{open:t,onOpenChange:e=>e?void 0:D(),children:e(En,{width:`lg`,placement:`sheet-on-mobile`,scroll:`body`,"aria-label":r,children:[i(dr,{children:i(xr,{children:r})}),e(Rn,{className:`flex flex-col gap-2 p-2 sm:p-4`,children:[l!==void 0&&l.length>0&&i(`div`,{className:`flex flex-wrap gap-1`,role:`tablist`,"aria-label":m(`customize.assign.filtersLabel`),children:l.map(e=>i(`button`,{type:`button`,role:`tab`,"aria-selected":(y?.id??null)===e.id,className:`inline-flex items-center gap-1 rounded-full border px-1.5 py-0.5 text-[10px] font-medium transition-colors ${(y?.id??null)===e.id?`border-primary/50 bg-primary/15 text-primary`:`border-border bg-surface text-foreground-subtle hover:bg-surface-hover`}`,onClick:()=>g(e.id),children:m(e.labelKey)},e.id))}),u!==null&&i(ss,{location:u.location,devices:S.map(e=>({id:e.deviceId,name:e.name,container:is(u,e.deviceId),detail:e.detail})),action:`add`,onPick:e=>O(S.filter(t=>t.deviceId===e)),...s===`multi`?{onPickAll:()=>O(S)}:{}}),c.kind===`unknown`?i(`p`,{role:`alert`,className:`text-xs text-warning`,children:m(`customize.assign.unknown`,{reason:c.reason})}):w.length===0&&S.length>0?null:i(jt,{devices:w,listState:T,value:_,onChange:e=>v(s===`single`?e.length>0?[e[e.length-1]]:[]:e),noun:`device`,emptyLabel:m(`customize.assign.none`),showAll:!0,testId:`customize-device-picker`})]}),e(tn,{children:[i(J,{variant:`ghost`,onClick:D,children:m(`customize.picker.cancel`)}),i(J,{disabled:E.length===0,onClick:k,children:d(E.length)})]})]})})}c();function ds(e,t){let r=typeof e==`string`&&e.length>0,i=fi(t&&r);return n(()=>t?ns(i,e):null,[t,i,e])}c();function fs(e){return e==null?null:e.message}function ps({device:t}){let n=ue(),{t:r}=X(),a=l(),s=oi(),c=we.includes(t.type),[u,f]=o(!1),[p,m]=o(!1),[h,g]=o(null),_=Xe({deviceId:t.id},{enabled:c}),v=Zi({status:_.status,data:_.data,error:fs(_.error)===null?null:{message:fs(_.error)??``}}),y=v.kind===`present`?v.slot.slotRef:``,b=v.kind===`present`?[...Yi(v.slot,v.value).map(e=>e.deviceId),...Ji(v.slot,v.value)]:[],x=Rt(),S=fi(c&&v.kind===`present`&&(u||b.length>0)),C=ds(t.location,c&&v.kind===`present`),w=Sr({deviceId:t.id,slotRef:y},{enabled:(u||C!==null)&&v.kind===`present`});if(!c||v.kind===`absent`)return null;if(v.kind!==`present`)return i(ts,{id:`linked`,icon:I,title:r(`customize.linked.title`),notices:v.kind===`pending`?i(`p`,{role:`status`,className:`text-xs text-foreground-subtle`,children:r(`customize.assign.checking`)}):i(`p`,{role:`alert`,className:`text-xs text-warning break-words`,children:r(`customize.assign.unknown`,{reason:v.reason})}),children:null});let T=v.value,E=new Map(S.kind===`known`?S.value.map(e=>[e.id,e]):[]),D=T.trackedDeviceIds!==void 0,O=(e,t)=>{let n=E.get(e.deviceId);return{...e,name:e.name??n?.name??null,type:n?.type??null,detail:n===void 0?null:Li(n.integration,n.location),orphan:t}},k=[...Yi(v.slot,T).map(e=>O(e,!1)),...Ji(v.slot,T).map(e=>O({deviceId:e,name:null,health:`ok`,implied:!1,tracked:!0},!0))],A=new Set(b),j=S.kind===`unknown`?S:w.status===`error`?{kind:`unknown`,reason:fs(w.error)??r(`helpers.customize.requestFailed`)}:S.kind===`pending`||w.status===`pending`||w.data===void 0?{kind:`pending`}:{kind:`known`,value:$i(w.data.candidates,E,A)},ee=async e=>{if(p){g(r(`customize.saveInFlight`));return}m(!0),g(null);try{await x.mutateAsync({deviceId:t.id,slotRef:v.slot.slotRef,value:e}),await _.refetch(),await a.invalidateQueries({queryKey:[[`deviceManager`]]})}catch(e){g(e instanceof Error?e.message:String(e))}finally{m(!1)}},te=async e=>{await s(r(`customize.linked.removeWhat`,{name:e.name??`#${e.deviceId}`}),!1)&&await ee(Qi(T,e.deviceId))},M=[{key:`device`,header:r(`customize.linked.device`),cell:t=>e(`div`,{className:`flex flex-col min-w-0`,children:[i(`span`,{className:`truncate text-xs text-foreground`,children:t.name??`#${t.deviceId}`}),t.detail!==null&&i(`span`,{className:`truncate text-[11px] text-foreground-subtle`,children:t.detail}),t.orphan&&i(`span`,{className:`text-[11px] text-foreground-subtle`,children:r(`customize.linked.notLinked`)}),t.health!==`ok`&&i(`span`,{role:`alert`,className:`text-[11px] text-warning`,children:r(`customize.linked.health.${t.health}`)})]})},{key:`type`,header:r(`customize.linked.type`),headerClassName:`hidden sm:table-cell`,cellClassName:`hidden sm:table-cell text-xs text-foreground-subtle`,cell:e=>e.type===null?`—`:Cn(e.type,n).label},{key:`controls`,header:r(`customize.linked.controls`),headerClassName:`hidden md:table-cell`,cellClassName:`hidden md:table-cell text-xs text-foreground-subtle`,cell:e=>e.orphan?`—`:r(`customize.linked.yes`)},...D?[{key:`tracked`,header:r(`customize.linked.tracked`),cellClassName:`text-right`,headerClassName:`text-right`,cell:e=>i(Vt,{checked:e.tracked,disabled:p,"aria-label":r(`customize.linked.trackFor`,{name:e.name??e.deviceId}),onCheckedChange:t=>void ee(Xi(T,e.deviceId,t))})}]:[],{key:`remove`,header:``,cellClassName:`text-right w-10`,cell:e=>e.implied||e.orphan?null:i(zn,{icon:P,variant:`ghost`,size:`sm`,"aria-label":r(`customize.assign.removeNamed`,{name:e.name??e.deviceId}),disabled:p,onClick:t=>{t.stopPropagation(),te(e)}})}];return e(d,{children:[i(ts,{id:`linked`,icon:I,title:r(`customize.linked.title`),addLabel:r(`customize.linked.add`),onAdd:p?void 0:()=>f(!0),...C===null?{}:{suggestion:{count:as(j,C,e=>e.deviceId),location:C.location,onOpen:()=>f(!0)}},notices:e(d,{children:[S.kind===`unknown`&&i(`p`,{role:`alert`,className:`text-xs text-warning break-words`,children:r(`customize.assign.devicesUnreadable`,{reason:S.reason})}),h!==null&&i(`p`,{role:`alert`,className:`text-xs text-danger break-words`,children:h})]}),children:e(`li`,{className:`list-none px-3 py-2 sm:px-4`,children:[k.length===0?i(`p`,{className:`text-[11px] text-foreground-subtle`,children:r(`customize.assign.none`)}):i(Mn,{mode:`generic`,items:k,getKey:e=>String(e.deviceId),getSearchText:e=>[e.name??``,e.detail??``,e.type??``,String(e.deviceId)].join(` `),getFilterType:e=>e.type===null?null:Cn(e.type,n).label,columns:M,searchPlaceholder:r(`customize.assign.search`),emptyLabel:r(`customize.assign.none`)}),k.some(e=>!e.orphan)&&i(`p`,{className:`mt-2 text-[10px] text-foreground-subtle`,children:r(`customize.linked.controlsAlways`)}),D&&i(`p`,{className:`mt-0.5 text-[10px] text-foreground-subtle`,children:r(`customize.linked.trackedHint`)})]})}),i(us,{open:u,title:r(`customize.linked.pickTitle`),selection:`multi`,candidates:j,room:C,confirmLabel:e=>r(`customize.assign.addCount`,{count:e}),onConfirm:e=>{f(!1),ee(qi(T,e.map(e=>e.deviceId)))},onClose:()=>f(!1)})]})}c();function ms(e){return e instanceof Error?e.message:String(e)}function hs(e){let n=Et({addonId:e.addonId,stableId:e.stableId}),r=et(),i=Ot(),a=pr(),s=ui({status:n.status,data:n.data,error:n.error===null||n.error===void 0?null:{message:n.error.message}}),{t:c}=X(),l=t(!1),[u,d]=o(!1),f=async e=>{let t=ei(s,e);try{switch(t.kind){case`refused`:return{kind:`refused`,reason:t.reason};case`noop`:return{kind:`saved`};case`create`:await r.mutateAsync({block:t.input});break;case`update`:await i.mutateAsync({blockId:t.blockId,expectedUpdatedAt:t.expectedUpdatedAt,block:{composition:t.composition}});break;case`delete`:await a.mutateAsync({blockId:t.blockId});break}return await n.refetch(),{kind:`saved`}}catch(e){return{kind:`refused`,reason:ms(e)}}};return{target:e,state:s,saving:u||r.isPending||i.isPending||a.isPending,save:async e=>{if(l.current)return{kind:`refused`,reason:c(`customize.saveInFlight`)};l.current=!0,d(!0);try{return await f(e)}finally{l.current=!1,d(!1)}}}}var gs=`pipeline-orchestrator`;function _s(e){return e.data===void 0?e.status===`pending`?`pending`:e.status===`error`?`unknown`:`pending`:e.data.cameraSensors===void 0?`absent`:`present`}function vs(e,t){return e===`absent`?`absent`:_s(t)}async function ys(e){try{return(await e()).isError?`failed`:`answered`}catch{return`failed`}}function bs(e,t){let n=Pn(gs),r=bt({deviceId:e},{enabled:t&&n!==`absent`}),i=()=>ys(r.refetch),a=r.data===void 0&&r.status===`error`?r.error?.message??null:null;return t?{presence:vs(n,{status:r.status,data:r.data}),status:r.data?.cameraSensors??null,failureReason:a,refetch:i}:{presence:`absent`,status:null,failureReason:null,refetch:i}}function xs(e,t){let n=Nn({deviceType:e.type}),r=er({deviceId:e.id}),i=qn({deviceId:e.id}),a=Qr(n,e=>new Set(e.caps.map(e=>e.cap))),o=Qr(r,e=>Jr(e.entries)),s=Qr(i,e=>e);return{deviceType:e.type,composable:a,nativeCaps:o,wireable:s,composed:new Set((t?.features??[]).map(e=>e.cap))}}function Ss(e,t,n){let r=t.kind===`known`&&t.value.has(`consumables`),i=Si(r?{deviceId:e,cap:Mi,path:Fi}:null);return hi(t,n,r?i:null)}c();function Cs({device:t}){let{t:r}=X(),a=t.stableId.startsWith(`composed-`)?t.stableId.slice(Fe.length):null,o=nt({blockId:a??``},{enabled:a!==null}),s=Ot(),c=st(),l=jn(),u=n(()=>{let e=new Set;for(let{cap:t}of bi())e.add(t);for(let{cap:t}of pi())e.add(t);for(let{cap:t}of Xr())e.add(t);return e},[]);if(a===null)return i(`p`,{className:`text-xs text-foreground-subtle`,children:r(`customize.composed.missingBlock`)});if(o.status===`pending`)return i(`p`,{role:`status`,className:`text-xs text-foreground-subtle`,children:r(`customize.loadingDevice`)});if(o.status===`error`)return i(q,{title:r(`customize.composed.loadFailed`),message:o.error.message,onRetry:()=>void o.refetch()});if(o.data.state===`not-loaded`)return i(`p`,{role:`status`,className:`text-xs text-foreground-subtle`,children:r(`customize.status.notLoaded`,{reason:o.data.reason})});let d=o.data.view;if(d===null)return i(`p`,{className:`text-xs text-foreground-subtle`,children:r(`customize.composed.notFound`)});let f=Le(d.block);if(f===null)return i(`p`,{className:`text-xs text-foreground-subtle`,children:r(`compositionEditor.notComposition`)});if(Di(f)){let n=ki(f.helper,t.name,t.location??``);return n===null?i(`p`,{role:`alert`,children:r(`helper.unreadable`)}):e(`div`,{className:`flex flex-col gap-3`,children:[i(vo,{device:t}),i(ji,{purpose:`edit`,initial:n,start:`parameters`,saving:s.isPending,onSave:async e=>{let n=await Oi(e,async(n,r)=>{await s.mutateAsync({blockId:d.block.id,expectedUpdatedAt:d.block.updatedAt,block:{composition:n,...r===``?{}:{name:r}}}),r!==``&&r!==t.name&&await c.mutateAsync({deviceId:t.id,name:r}),e.room.trim()!==``&&e.room.trim()!==(t.location??``)&&await l.mutateAsync({deviceId:t.id,location:e.room.trim()}),await o.refetch()});return n.length>0?{kind:`refused`,lines:n}:{kind:`saved`,deviceId:t.id}}})]})}let p={target:{addonId:t.addonId,stableId:t.stableId},state:{kind:`present`,view:d,composition:f},saving:s.isPending,save:async e=>{if(e===null)return{kind:`refused`,reason:r(`customize.composed.noDelete`)};try{return await s.mutateAsync({blockId:d.block.id,expectedUpdatedAt:d.block.updatedAt,block:{composition:e}}),await o.refetch(),{kind:`saved`}}catch(e){return{kind:`refused`,reason:e instanceof Error?e.message:String(e)}}}};return e(`div`,{className:`flex flex-col gap-3`,children:[i(vo,{device:t}),qr(f)===`incomplete`&&i(K,{variant:`warning`,children:r(`customize.blockStatus.incomplete`)}),i(Yr,{device:t,handle:p,skipCaps:u})]})}c();function ws({deviceId:e}){let{t}=X(),n=lr({deviceId:e}),r=n.data;if(r==null)return n.status===`error`?i(q,{title:t(`customize.deviceUnreadable`),message:n.error?.message??``,onRetry:()=>void n.refetch()}):r===null?i(`p`,{role:`status`,className:`text-xs text-foreground-subtle`,children:t(`customize.noSuchDevice`,{deviceId:e})}):i(`p`,{role:`status`,className:`text-xs text-foreground-subtle`,children:t(`customize.loadingDevice`)});let a=r.addonId===`composer`?i(Cs,{device:r}):i(Ts,{device:r,target:{addonId:r.addonId,stableId:r.stableId}});return i(Wr,{deviceId:r.id,seed:{name:r.name,location:r.location??``,role:r.role??null,display:r.display},children:a})}function Ts({device:t,target:r}){let a=hs(r),o=Pn(`composer`),{t:s}=X(),c=bs(t.id,t.type===W.Camera),l=xs(t,$r(a.state)),u=Ss(t.id,l.nativeCaps,l.wireable),d={deviceType:t.type,composable:l.composable,nativeCaps:l.nativeCaps,cameraSensors:c.presence},f=n(()=>{let e=new Set;for(let{cap:t}of bi())e.add(t);for(let{cap:t}of pi())e.add(t);for(let{cap:t}of Xr())e.add(t);return e},[]);return e(`div`,{className:`flex flex-col gap-3`,children:[i(vo,{device:t}),o===`absent`&&i(`p`,{role:`alert`,className:`text-xs text-warning`,children:s(`customize.composerAbsent`)}),a.state.kind!==`none`&&i(Es,{state:a.state}),i(es,{device:t,handle:a,facts:d,sensors:c}),i(Ti,{device:t,handle:a,facts:d}),i(yi,{device:t,handle:a,facts:d,defaults:u}),i(Yr,{device:t,handle:a,skipCaps:f}),i(ps,{device:t})]})}function Es({state:t}){let{t:n}=X();switch(t.kind){case`pending`:return i(`p`,{role:`status`,className:`text-xs text-foreground-subtle`,children:n(`customize.status.pending`)});case`unknown`:return i(q,{title:n(`customize.status.unknownTitle`),message:t.reason});case`not-loaded`:return i(`p`,{role:`status`,className:`text-xs text-foreground-subtle`,children:n(`customize.status.notLoaded`,{reason:t.reason})});case`none`:return null;case`present`:{let r=t.view.block;return e(`div`,{className:`flex flex-wrap items-center gap-2`,children:[i(K,{variant:r.status===`running`?`success`:r.status===`failed`?`danger`:`warning`,children:n(`customize.blockStatus.${r.status}`)}),!r.enabled&&i(K,{variant:`default`,children:n(`customize.status.off`)}),r.lastError!==void 0&&i(`span`,{className:`text-[11px] text-foreground-muted break-words`,children:r.lastError}),t.view.state.kind===`unreachable`&&i(`span`,{className:`text-[11px] text-warning`,children:n(`customize.status.composerUnreachable`,{reason:t.view.state.error})})]})}}}var Ds=`overview`;function Os(e,t){return e.some(e=>e.id===t)?t:Ds}function ks({deviceId:t}){let{t:n}=X(),r=l(),a=Number.isFinite(t),{data:o}=lr({deviceId:t},{enabled:a}),s=typeof o?.type==`string`?o.type:`camera`;Xn([`deviceManager`,`getBindings`],[`capability.binding-changed`]);let{data:c,isLoading:u,isError:d,error:f}=er({deviceId:t},{enabled:a}),{data:p}=Tn({deviceType:s},{enabled:!!s}),m=Qe({onSuccess:()=>{r.invalidateQueries({queryKey:[[`deviceManager`,`getBindings`]]})}});if(u)return i(`div`,{className:`p-4`,children:i(`div`,{className:`h-20 rounded-lg border border-border bg-surface animate-pulse`})});if(d)return e(`div`,{className:`p-4 text-xs text-red-400`,children:[n(`device.bindingsTab.failedToLoadBindings`,`Failed to load bindings:`),` `,f instanceof Error?f.message:String(f)]});let h=new Map,g={};for(let e of p??[])g[e.capName]=e.wrappers;for(let e of c?.entries??[])h.set(e.capName,{...e,wrappers:g[e.capName]??[]});for(let e of p??[])h.has(e.capName)||h.set(e.capName,{capName:e.capName,kind:`unbound`,providerAddonId:``,providerNodeId:``,nativeAddonId:``,wrappers:e.wrappers});let _=[...h.values()].toSorted((e,t)=>e.capName.localeCompare(t.capName));if(_.length===0)return e(`div`,{className:`flex flex-col items-center justify-center gap-2 p-8 text-foreground-subtle`,children:[i(Ke,{className:`h-8 w-8 opacity-40`}),i(`p`,{className:`text-xs`,children:n(`device.bindingsTab.noCapabilityProvidersApplicableTo`,`No capability providers applicable to this device yet.`)}),i(`p`,{className:`text-[10px] opacity-60`,children:n(`device.bindingsTab.nativeProvidersShowUpHere`,`Native providers show up here as soon as the owning addon registers them.`)})]});let v=_.filter(e=>e.kind!==`unbound`).length,y=[{key:`capability`,header:n(`device.bindingsTab.capability`,`Capability`),render:e=>i(`span`,{className:`font-mono text-foreground`,children:e.capName})},{key:`kind`,header:n(`device.bindingsTab.kind`,`Kind`),render:e=>i(As,{kind:e.kind})},{key:`provider`,header:n(`device.bindingsTab.activeProvider`,`Active Provider`),render:e=>i(`span`,{className:`font-mono text-foreground-subtle`,children:e.providerAddonId||i(`span`,{className:`opacity-40`,children:`—`})})},{key:`node`,header:n(`device.bindingsTab.node`,`Node`),render:e=>e.providerNodeId?i(js,{nodeId:e.providerNodeId}):i(`span`,{className:`text-[10px] opacity-40`,children:`—`})},{key:`native`,header:n(`device.bindingsTab.kindNative`,`Native`),render:e=>i(`span`,{className:`font-mono text-foreground-subtle`,children:e.nativeAddonId||i(`span`,{className:`opacity-40`,children:`—`})})},{key:`wrapper`,header:n(`device.bindingsTab.wrapper`,`Wrapper`),render:e=>{let n=e.kind===`wrapped`?e.providerAddonId:null;return i(Ms,{wrappers:e.wrappers,activeWrapperId:n,disabled:m.isPending,onPick:r=>{let i=n===r;m.mutate({deviceId:t,capName:e.capName,wrapperAddonId:r,active:!i})}})}}];return e(`div`,{className:`flex flex-col gap-3 p-1`,children:[i(`div`,{className:`text-[11px] text-foreground-subtle`,children:i(Gr,{i18nKey:`device.bindingsTab.boundSummary`,count:_.length,values:{bound:v},components:{b:i(`span`,{className:`font-medium text-foreground`}),em:i(`em`,{})}})}),i(mr,{columns:y,rows:_,rowKey:e=>e.capName,minWidthPx:720})]})}function As({kind:t}){let{t:n}=X();return t===`native`?e(`span`,{className:`inline-flex items-center gap-1 rounded-md border border-success/30 text-success bg-success/5 px-1.5 py-0.5 text-[10px] font-medium`,children:[i(ae,{className:`h-3 w-3`}),n(`device.bindingsTab.kindNative`)]}):t===`wrapped`?e(`span`,{className:`inline-flex items-center gap-1 rounded-md border border-primary/30 text-primary bg-primary/5 px-1.5 py-0.5 text-[10px] font-medium`,children:[i(Ye,{className:`h-3 w-3`}),n(`device.bindingsTab.wrapped`)]}):t===`linked`?e(`span`,{className:`inline-flex items-center gap-1 rounded-md border border-warning/30 text-warning bg-warning/5 px-1.5 py-0.5 text-[10px] font-medium`,children:[i(I,{className:`h-3 w-3`}),n(`device.bindingsTab.linked`)]}):e(`span`,{className:`inline-flex items-center gap-1 rounded-md border border-border text-foreground-subtle/70 px-1.5 py-0.5 text-[10px] font-medium`,children:[i(x,{className:`h-3 w-3`}),n(`common.unbound`)]})}function js({nodeId:e}){return i(`span`,{className:`inline-flex items-center rounded-md border border-border px-1.5 py-0.5 font-mono text-[10px] ${e===`hub`?`text-foreground-subtle`:`text-foreground`}`,children:e})}function Ms({wrappers:t,activeWrapperId:n,disabled:r,onPick:a}){let{t:o}=X();return t.length===0?i(`span`,{className:`text-[10px] opacity-40`,children:o(`device.bindingsTab.noneAvailable`,`none available`)}):i(`div`,{className:`flex flex-wrap gap-1`,children:t.map(t=>{let s=t===n;return e(`button`,{disabled:r,onClick:()=>a(t),title:s?o(`device.bindingsTab.clickToDeactivateRevertTo`,`Click to deactivate (revert to native)`):o(`device.bindingsTab.activateWrapper`,`Activate wrapper {{wrapperId}}`,{wrapperId:t}),className:`inline-flex items-center gap-1 rounded-md border px-1.5 py-0.5 font-mono text-[10px] transition-colors disabled:opacity-50 ${s?`border-primary/40 bg-primary/10 text-primary`:`border-border text-foreground-subtle hover:text-foreground hover:bg-surface-hover`}`,children:[i(s?O:he,{className:`h-3 w-3`}),t]},t)})})}function Ns({deviceId:t,activeSubTab:n,onSubTabChange:r,deviceType:a,isAdmin:o}){return e(`div`,{className:`flex flex-col gap-3`,children:[Rr(a,o)&&i(yr,{deviceId:t,readOnly:!0}),i(Dr,{deviceId:t,activeSubTab:n,onSubTabChange:r})]})}c();var Ps=[[`pipelineOrchestrator`,`getCameraDetectionSource`]];function Fs(e){let t=l(),n=at({deviceId:e},{refetchOnMount:`always`}),i=kn(),[a,s]=o(null),[c,u]=o(null),d=r(async n=>{u(null),s(n);try{await i.mutateAsync({deviceId:e,source:n}),await t.invalidateQueries({queryKey:Ps})}catch(e){u(e instanceof Error?e.message:`Could not change the root detector`),await t.invalidateQueries({queryKey:Ps})}finally{s(null)}},[e,i,t]),f=n.data??null;return{view:f,isLoading:n.isLoading,source:a??f?.source??null,saving:a!==null,error:c,pick:d}}var Is=`object-detection`;function Ls(e){return[e.addonId,...e.children.flatMap(Ls)]}function Rs(e,t){if(e===`pipeline`)return new Set;let n=zs(t,Is);return n===void 0?new Set:new Set(e===`onboard`?[n.addonId]:Ls(n))}function zs(e,t){for(let n of e){if(n.addonId===t)return n;let e=zs(n.children,t);if(e!==void 0)return e}}function Bs(e,t){return e===`onboard`?Y.t(`helpers.detectionSourceModel.badgeCameraAi`):t===`object-detection`?Y.t(`helpers.detectionSourceModel.badgeNoRoot`):Y.t(`helpers.detectionSourceModel.badgeIdle`)}function Vs(e){switch(e){case`pipeline`:return Y.t(`helpers.detectionSourceModel.explainPipeline`);case`onboard`:return Y.t(`helpers.detectionSourceModel.explainOnboard`);case`none`:return Y.t(`helpers.detectionSourceModel.explainNone`)}}function Hs(e){switch(e){case`boxed`:return``;case`while-streaming`:return Y.t(`helpers.detectionSourceModel.geometryWhileStreaming`);case`flag-only`:return Y.t(`helpers.detectionSourceModel.geometryFlagOnly`);case`unknown`:return Y.t(`helpers.detectionSourceModel.geometryUnknown`)}}function Us(e,t){return e===`onboard`?Y.t(`helpers.detectionSourceModel.noticeOnboard`):t===`object-detection`?Y.t(`helpers.detectionSourceModel.noticeNoRoot`):Y.t(`helpers.detectionSourceModel.noticeIdle`)}var Ws=[`pl-2`,`pl-6`,`pl-10`,`pl-14`],Gs={detector:`success`,cropper:`info`,classifier:`primary`,refiner:`warning`,"audio-classifier":`neutral`};function Ks(e){return Ws[Math.min(e,Ws.length-1)]??`pl-2`}function qs(e){return e.zoneDriven?{kind:`zone-driven`}:{kind:`gate`,effectiveOn:e.ownOn,defaultOn:e.defaultOn,explicit:e.choice!==`auto`}}function Js(e,t,n){return e.kind===`parent`?n:Bs(e.source,t)}function Ys({inputs:t,outputs:n}){return t.length===0&&n.length===0?null:e(`span`,{className:`inline-flex flex-wrap items-center gap-1`,children:[t.map(e=>i(K,{size:`sm`,variant:`info`,children:e},`in-${e}`)),t.length>0&&n.length>0&&i(`span`,{className:`text-[10px] text-foreground-subtle`,"aria-hidden":!0,children:`→`}),n.map(e=>i(K,{size:`sm`,variant:`success`,children:e},`out-${e}`))]})}function Xs({rows:t,label:n,selectedId:r,busy:a,onOpen:o,onSet:s}){let{t:c}=X(),l=e=>{switch(e){case`detector`:return c(`device.cameraStepInspector.kindDetector`,`detector`);case`cropper`:return c(`device.cameraStepInspector.kindCropper`,`cropper`);case`classifier`:return c(`device.cameraStepInspector.kindClassifier`,`classifier`);case`refiner`:return c(`device.cameraStepInspector.kindRefiner`,`refiner`);case`audio-classifier`:return c(`device.cameraStepInspector.kindAudio`,`audio`)}},u=c(`device.cameraStepInspector.offBecauseParent`,`Off because its parent is off`);return i(`ul`,{"aria-label":n,className:`divide-y divide-border rounded-md border border-border`,children:t.map(t=>{let n=t.stepId===r,c=t.blocked===null?null:Js(t.blocked,t.stepId,u);return e(`li`,{"data-step":t.stepId,"data-runs":t.runs?`yes`:`no`,className:`flex flex-wrap items-center gap-x-2 gap-y-1.5 py-2 pr-2 ${Ks(t.depth)} ${n?`bg-primary/10`:t.runs?``:`bg-muted/40`}`,children:[e(`button`,{type:`button`,"aria-expanded":n,onClick:()=>o(t.stepId),className:`flex min-w-0 flex-1 flex-wrap items-center gap-x-2 gap-y-1 text-left`,children:[i(`span`,{className:`text-sm font-medium ${t.runs?`text-foreground`:`text-foreground-muted`}`,children:t.name}),i(K,{size:`sm`,variant:Gs[t.kind],children:l(t.kind)}),i(Ys,{inputs:t.inputs,outputs:t.outputs}),c!==null&&i(`span`,{className:`text-[11px] text-warning`,children:c})]}),i(sn,{gate:qs(t),busy:a,onSet:e=>s(t.stepId,e)})]},t.stepId)})})}function Zs(e,t){let n=e?.[t];return n===void 0?`auto`:n?`on`:`off`}function Qs(e,t){return e===`auto`?t:e===`on`}function $s(e,t,n){return e!==`onboard`&&e!==`none`||!n.has(t)?null:{kind:`source`,source:e}}function ec(e,t,n,r,i){let a=e.zoneDrivenIds??new Set;return t.flatMap(t=>{let o=a.has(t.addonId),s=Zs(e.toggles,t.addonId),c=e.defaults[t.addonId]??!0,l=o||Qs(s,c),u=r===null?$s(e.source,t.addonId,i):{kind:`parent`,ancestorId:r.stepId},d={stepId:t.addonId,name:t.addonName,kind:t.slot,depth:n,inputs:t.inputClasses,outputs:t.outputClasses,choice:s,defaultOn:c,ownOn:l,runs:u===null&&l,blocked:u,zoneDriven:o},f=l?r:{stepId:t.addonId};return[d,...ec(e,t.children,n+1,f,i)]})}function tc(e){let t=e.source===null?new Set:Rs(e.source,e.tree);return ec(e,e.tree,0,null,t)}function nc({source:t,geometry:n,saving:r,error:a,onPick:o}){let{t:s}=X(),c=n===`flag-only`,l=Hs(n);return e(`section`,{"aria-label":s(`device.detectionSourceControl.rootDetector`,`Root detector`),"aria-busy":r,className:`space-y-1.5 rounded-md border border-border bg-surface px-3 py-2`,children:[e(`div`,{className:`flex flex-wrap items-center gap-x-3 gap-y-1.5`,children:[i(`h3`,{className:j,children:s(`device.detectionSourceControl.rootDetector`,`Root detector`)}),i(An,{label:s(`device.detectionSourceControl.rootDetector`,`Root detector`),value:t,onChange:e=>{!r&&e!==t&&o(e)},options:[{value:`pipeline`,label:s(`device.detectionSourceControl.thisNode`,`This node`)},{value:`onboard`,label:s(`device.detectionSourceControl.cameraOnboardAi`,`Camera onboard AI`),disabled:c&&t!==`onboard`,reason:l},{value:`none`,label:s(`device.detectionSourceControl.none`,`None`)}]}),r&&i(`span`,{className:`text-[10px] text-foreground-subtle`,children:s(`device.detectionSourceControl.saving`,`Saving…`)})]}),e(`p`,{className:ge,children:[Vs(t),` `,s(`device.detectionSourceControl.oneRoot`)]}),l!==``&&i(`p`,{className:`text-[10px] text-foreground-subtle`,children:l}),a!==null&&i(`p`,{role:`alert`,className:`text-[11px] text-danger`,children:a})]})}c();var rc=new Set([`package-detection`]),ic=`/system/pipeline?view=nodes`;function ac(e){return Object.fromEntries(e.slots.flatMap(e=>e.addons.map(e=>[e.id,e.enabledByDefault??!0])))}function oc({deviceId:a}){let{t:c}=X(),u=Ut(),d=fn(),f=l(),p=R().trpcClient,m=t(null),h=t(null),g=ht({deviceId:a},{refetchOnMount:`always`}),_=_t(void 0,{refetchOnMount:`always`});Xn([`nodes`,`topology`],[`agent.online`,`agent.offline`,`agent.unregistered`,`addon.installed`,`addon.uninstalled`]);let{nodes:v}=$t(),y=n(()=>{let e=new Set((_.data??[]).map(e=>e.nodeId));return v.filter(t=>t.isOnline&&e.has(t.id)).map(e=>({id:e.id,name:e.name}))},[_.data,v]),b=y.map(e=>e.id).join(`,`),x=s({enabled:y.length>0,queryKey:[[`pipelineExecutor`,`getSchema`],`camera-step-schemas`,b],queryFn:async()=>{let e={};for(let t of y)try{e[t.id]=await p.pipelineExecutor.getSchema.query({nodeId:t.id})}catch{}return e}}),S=r(()=>{f.invalidateQueries({queryKey:[[`pipelineOrchestrator`,`getCameraSettings`]]})},[f]),C=$n({onSuccess:S}),w=Wn(),[T,E]=o(null),[D,O]=o(!1),[k,A]=o(null),j=Fs(a),ee=x.data??{},te=g.data??null,M=y.map(e=>ee[e.id]).find(e=>e!==void 0)??null,ne=n(()=>M?Xt(M):[],[M]),re=n(()=>M===null?[]:tc({tree:ne,toggles:te?.stepToggles,defaults:ac(M),source:j.source,zoneDrivenIds:rc}),[ne,M,te?.stepToggles,j.source]),{selection:N,open:ie,close:ae}=Vi(n(()=>re.map(e=>e.stepId),[re]),[]),F=y[0]?.id,oe=r(async e=>{if(T!==null){if(!await u({title:c(`stepInspector.stepMatrixFrame.discardUnsavedChanges`,`Discard unsaved changes?`),message:c(`stepInspector.stepMatrixFrame.thisStepHasChangesThat`,`This step has changes that are not saved yet.`),confirmLabel:c(`stepInspector.stepMatrixFrame.discard`,`Discard`),variant:`danger`}))return;E(null)}e()},[u,T,c]),se=e=>{e!==N.stepId&&oe(()=>ie({stepId:e}))},I=()=>{oe(()=>ae())};if(_.isLoading||y.length>0&&x.isLoading)return i(`div`,{className:`animate-pulse p-4 text-xs text-foreground-subtle`,children:c(`device.cameraStepInspector.loadingPipeline`,`Loading pipeline…`)});if(y.length===0)return i(`div`,{className:`p-4 text-xs text-foreground-subtle`,children:c(`device.cameraStepInspector.noPipelineNodeIsOnline`,`No pipeline node is online.`)});if(M===null)return i(`div`,{className:`p-4 text-xs text-foreground-subtle`,children:c(`device.cameraStepInspector.catalogUnavailable`,`Catalog unavailable.`)});let L=e=>_.data?.find(e=>e.nodeId===F)?.settings.stepSettings?.[e]??{},z=re.find(e=>e.stepId===N.stepId)??null,B=z===null?null:Bi(M,z.stepId),ce=d?i(ar,{onClick:I}):i(zn,{icon:P,variant:`ghost`,size:`sm`,"aria-label":c(`common.close`,`Close`),onClick:I});return e(`div`,{ref:m,className:`space-y-2`,children:[j.view?.onboard.available===!0&&j.source!==null&&i(nc,{source:j.source,geometry:j.view.onboard.geometry,saving:j.saving,error:j.error,onPick:e=>void j.pick(e)}),i(`p`,{className:ge,children:i(Gr,{i18nKey:`device.cameraStepInspector.modelsChosenByAccelerators`,components:{nodes:i(Mr,{to:ic,className:`font-medium text-primary hover:underline`})}})}),N.staleStepId!==null&&i(`p`,{className:`rounded-md border border-warning/40 bg-warning/10 px-3 py-1.5 text-[11px] text-warning`,children:c(`stepInspector.stepMatrixFrame.staleStep`,{id:N.staleStepId})}),i(Xs,{rows:re,label:c(`device.cameraStepInspector.detectionStepsOfThisCamera`,`Detection steps of this camera`),selectedId:N.stepId,busy:C.isPending,onOpen:se,onSet:(e,t)=>C.mutate({deviceId:a,addonId:e,enabled:t})}),i(Qn,{open:z!==null&&B!==null,anchor:m,onClose:I,label:c(`stepInspector.stepMatrixFrame.stepSettings`,`Step settings`),children:z!==null&&B!==null&&i(sc,{addon:B,nodeBag:L(z.stepId),storedCamera:te?.stepSettings?.[z.stepId],draft:T?.stepId===z.stepId?T:null,saving:D,status:k,notice:z.blocked?.kind===`source`?Us(z.blocked.source,z.stepId):null,closeButton:ce,onEscape:I,headingRef:e=>{h.current=e},onDraft:e=>{A(null),E({stepId:z.stepId,camera:e})},onDiscard:()=>E(null),onSave:async e=>{O(!0);try{await w.mutateAsync({deviceId:a,addonId:z.stepId,settings:Object.keys(e).length>0?{...e}:null}),E(null),A({kind:`saved`})}catch(e){A({kind:`error`,error:e instanceof Error?e.message:c(`device.cameraStepInspector.saveFailed`)})}finally{O(!1),S()}}})})]})}function sc({addon:t,nodeBag:n,storedCamera:r,draft:a,saving:o,status:s,notice:c,closeButton:l,onEscape:u,headingRef:d,onDraft:f,onDiscard:p,onSave:m}){let{t:h}=X(),g=Jt(t),_=Ui(g),v=Hi(g),y=a?.camera??r,b=a!==null&&!Pe(a.camera,r??{});return i(yn,{ref:d,title:h(`device.cameraStepInspector.thisCamera`,`{{name}} · this camera`,{name:t.name}),subtitle:t.slot,leading:l,onEscape:u,..._.length>0?{saveBar:{dirtyCount:+!!b,saving:o,status:s?.kind??null,...s?.error===void 0?{}:{error:s.error},onSave:()=>void m(a?.camera??r??{}),onDiscard:p,scope:i(`p`,{className:ge,children:h(`device.cameraStepInspector.appliesToAllAcceleratorsOf`,`Applies to: all accelerators of this camera.`)})}}:{},children:e(`div`,{className:`space-y-3`,children:[c!==null&&i(`p`,{role:`note`,className:`rounded-md border border-warning/40 bg-warning/10 px-3 py-1.5 text-[11px] text-warning`,children:c}),_.length>0?i(cc,{addon:t,fields:_,nodeBag:n,cameraBag:y,onChange:f}):i(`p`,{className:ge,children:h(`device.cameraStepInspector.noCameraSettings`,`This step has no settings on this camera.`)}),v&&i(`p`,{className:`text-[10px] text-foreground-subtle`,"data-testid":`accelerator-only-thresholds`,children:h(`device.cameraStepInspector.thresholdsAreTheAccelerators`,`Confidence thresholds belong to the model, so they are set on the accelerator that runs it (Pipeline → Nodes), not per camera.`)})]})})}function cc({addon:e,fields:t,nodeBag:n,cameraBag:r,onChange:a}){let{t:o}=X();return i(Gt,{addon:e,fields:t,layers:{node:n,...r===void 0?{}:{camera:r}},target:`camera`,labels:{camera:o(`device.cameraStepInspector.layerCamera`,`This camera`),node:o(`device.cameraStepInspector.layerNode`,`Node`)},modelId:e.defaultModelId,onChangeLayer:a})}function lc(e,t,n){return{id:e,get label(){return Y.t(t)},icon:n}}var uc=[lc(`object-detection`,`helpers.detectionSettingsGroups.objectDetection`,`scan-search`),lc(`tracking`,`helpers.detectionSettingsGroups.tracking`,`route`),lc(`motion`,`helpers.detectionSettingsGroups.motion`,`activity`),lc(`stationary`,`helpers.detectionSettingsGroups.stationary`,`square-parking`),lc(`zones`,`helpers.detectionSettingsGroups.zones`,`shapes`),lc(`audio`,`helpers.detectionSettingsGroups.audio`,`volume-2`),lc(`cluster`,`helpers.detectionSettingsGroups.cluster`,`server`)],dc={"pipeline-object-detection":`object-detection`,"detection-sensitivity":`object-detection`,"onboard-object-detection":`object-detection`,tracking:`tracking`,"tracking-core":`tracking`,"motion-tuning":`motion`,"stationary-objects":`stationary`,occupancy:`stationary`,zones:`zones`,"pipeline-audio":`audio`,"cluster-assignment":`cluster`,"orchestrator-live":`cluster`};function fc(e){return dc[e]??`object-detection`}c();var pc=`steps`,mc=`settings`,hc=new Set([pc,mc]);function gc(e){return e.location===`top-tab`&&(e.tab===`detection-pipeline`||e.tab===`zones`)}function _c({deviceId:t,activeSubTab:n,onSubTabChange:a}){let{t:o}=X();return e(Ze,{value:n&&hc.has(n)?n:pc,onValueChange:r(e=>{a?.(e)},[a]),className:`flex flex-col`,children:[e(dt,{className:`flex-shrink-0`,children:[i(It,{value:pc,children:o(`device.detectionPipelineTab.steps`,`Steps`)}),i(It,{value:mc,children:o(`device.detectionPipelineTab.settings`,`Settings`)})]}),i(zt,{value:pc,children:i(oc,{deviceId:t})}),i(zt,{value:mc,children:i(Dr,{deviceId:t,sectionFilter:gc,subTabGrouping:{groupOf:e=>fc(e.id),tabs:uc}})})]})}var vc=`Notifications`,yc={i18nKey:`device.deviceNotificationMute.cameraCostWhenOff`,text:`This camera never notifies — no rule, no target, no alarm. Existing events, tracks and recordings are unaffected.`},bc={i18nKey:`device.deviceNotificationMute.deviceCostWhenOff`,text:`This device never notifies — no rule, no target, no alarm.`};function xc(e){let{mutedDeviceIds:t,deviceId:n}=e,r=t===null?null:!t.includes(n),i=e.pendingOn??null;return{label:vc,on:r===null?null:i??r,available:r!==null,costWhenOff:e.isCamera?yc:bc}}function Sc(e,t){return!e.available||e.on===null?null:{deviceId:t,muted:e.on}}c();function Cc(e){if(typeof e!=`object`||!e)return null;let t={...e}.mutedDeviceIds;return Array.isArray(t)?t.filter(e=>typeof e==`number`):null}function wc({deviceId:t,isCamera:n}){let{t:a}=X(),s=l(),c=Number.isFinite(t),[u,d]=o(null),[f,p]=o(null),m=xc({mutedDeviceIds:Cc(dn({},{enabled:c}).data),deviceId:t,isCamera:n,pendingOn:f}),h=a(m.costWhenOff.i18nKey,m.costWhenOff.text),g=or({onError:e=>{console.error(`[DeviceNotificationMute] mute write failed — reverting`,{tags:{deviceId:t},meta:{error:e instanceof Error?e.message:String(e)}}),p(null),d(e instanceof Error?e.message:String(e)),s.invalidateQueries({queryKey:[[`notificationRules`,`listDeviceMutes`]]})},onSuccess:()=>{d(null),p(null),s.invalidateQueries({queryKey:[[`notificationRules`]]})}}),_=r(()=>{let e=Sc(m,t);e!==null&&(p(!e.muted),g.mutate(e))},[t,g,m]),v=m.on===null,y=m.on===!1,b=y?Ge:D;return e(`div`,{className:`rounded-lg border border-border bg-surface overflow-hidden`,children:[e(`div`,{className:`border-b border-border px-4 py-2 flex items-center justify-between gap-2`,children:[i(`h2`,{className:`text-xs font-semibold text-foreground uppercase tracking-wider`,children:a(`device.deviceNotificationMute.notifications`,`Notifications`)}),y&&i(`span`,{className:`rounded bg-warning/20 px-1.5 py-0.5 text-[9px] font-semibold uppercase tracking-wide text-warning`,children:a(`common.muted`)})]}),e(`div`,{className:`px-4 py-3 flex items-start gap-3`,children:[e(`button`,{type:`button`,role:`switch`,"aria-label":m.label,"aria-checked":m.on===!0,disabled:!m.available||g.isPending,onClick:_,title:v?a(`device.deviceNotificationMute.notificationMuteStateUnknownThe`,`Notification mute — state unknown; the notification centre did not answer.`):y?a(`device.deviceNotificationMute.muted`,`Muted. {{costWhenOff}}`,{costWhenOff:h}):a(`device.deviceNotificationMute.notifyingMutingIt`,`Notifying. Muting it: {{costWhenOff}}`,{costWhenOff:h}),className:`inline-flex items-center gap-1.5 rounded-lg border px-2 py-1.5 text-[11px] font-medium transition-colors disabled:cursor-not-allowed ${u===null?v?`border-dashed border-border text-foreground-subtle/50`:y?`border-warning/40 text-warning hover:bg-warning/10`:`border-success/30 text-success hover:bg-success/10`:`border-danger/50 text-danger bg-danger/5`}`,children:[i(b,{className:`h-3.5 w-3.5`}),i(`span`,{children:v?a(`device.deviceNotificationMute.unknown`,`Unknown`):y?a(`device.deviceNotificationMute.muted2`,`Muted`):a(`device.deviceNotificationMute.notifying`,`Notifying`)})]}),i(`p`,{className:`flex-1 text-[11px] leading-relaxed text-foreground-subtle`,children:u===null?v?a(`device.deviceNotificationMute.theNotificationCentreDidNot`,`The notification centre did not answer, so this device’s mute state is unknown.`):h:a(`device.deviceNotificationMute.writeFailed`,`Write failed: {{failure}}`,{failure:u})})]})]})}c();function Tc({template:t,members:n,fleet:a,fleetKind:s,snapshot:c,nameOf:l}){let{t:u}=X(),[f,p]=o(()=>new Map),m=r((e,t)=>{p(n=>{if(jc(n.get(e),t))return n;let r=new Map(n);return r.set(e,t),r})},[]);if(t.family!==`actuator`)return null;let h=Ei(c),g=t.id===`light`?_i(n.map(e=>f.get(Ac(e))??{kind:`pending`})):null;return e(d,{children:[t.id===`light`&&n.map(e=>i(Oc,{member:e,row:kc(a,e),fleetKind:s,onRead:m},Ac(e))),g!==null&&i(Ec,{view:g}),e(`div`,{"data-testid":`helper-commands`,children:[i(`h3`,{className:`text-[10px] font-semibold uppercase tracking-wider text-foreground-subtle`,children:u(`helper.commandTitle`)}),h.kind===`pending`&&i(`p`,{role:`status`,className:`mt-1 text-xs text-foreground-subtle`,children:u(`helper.reportingPending`)}),h.kind===`unavailable`&&i(q,{title:u(`helper.outputUnavailable`),message:h.message}),h.kind===`none`&&i(`p`,{className:`mt-1 text-xs text-foreground-muted`,children:u(`helper.commandNone`)}),h.kind===`rows`&&i(Dc,{view:h,nameOf:l})]})]})}function Ec({view:t}){let{t:n}=X();return e(`div`,{"data-testid":`helper-shared-caps`,children:[i(`h3`,{className:`text-[10px] font-semibold uppercase tracking-wider text-foreground-subtle`,children:n(`helper.sharedCaps`)}),t.kind===`pending`&&i(`p`,{role:`status`,className:`mt-1 text-xs text-foreground-subtle`,children:n(`helper.sharedPending`)}),t.kind===`unavailable`&&i(`p`,{role:`status`,className:`mt-1 text-xs text-foreground-subtle`,children:n(`helper.sharedUnavailable`)}),t.kind===`ready`&&t.caps.length<=1&&i(`p`,{className:`mt-1 text-xs text-foreground-muted`,children:n(`helper.sharedNone`)}),t.kind===`ready`&&t.caps.length>1&&e(`ul`,{className:`mt-1 flex flex-col gap-0.5 text-xs text-foreground`,children:[t.caps.filter(e=>e!==`switch`).map(e=>i(`li`,{children:n(`helper.cap.${e}`)},e)),t.modes.map(e=>i(`li`,{children:n(`helper.mode.${e}`)},e))]})]})}function Dc({view:t,nameOf:n}){let{t:r}=X();return i(`ul`,{className:`mt-1 flex flex-col gap-0.5 text-xs text-foreground`,"data-testid":`helper-command-rows`,children:t.rows.map(t=>e(`li`,{children:[n(t.deviceId),` — `,r(`helper.cap.${t.cap}`),` —`,` `,t.ok?r(`helper.commandOk`):r(`helper.commandFailed`),t.error===null?``:` — ${t.error}`]},`${t.deviceId}:${t.cap}:${t.at}`))})}function Oc({member:e,row:t,fleetKind:n,onRead:r}){let i=Ac(e),o=er({deviceId:t?.id??0},{enabled:n===`answered`&&t!==null});return a(()=>{if(n!==`answered`){r(i,{kind:`pending`});return}if(t===null){r(i,{kind:`ready`,caps:[],features:[]});return}if(o.status===`pending`){r(i,{kind:`pending`});return}if(o.status===`error`){r(i,{kind:`error`});return}r(i,{kind:`ready`,caps:o.data.entries.map(e=>e.capName),features:[...t.features]})},[o.data,o.status,n,i,r,t]),null}function kc(e,t){let n=e.find(e=>e.addonId===t.source.addonId&&e.stableId===t.source.stableId);return n===void 0?null:{id:n.id,name:n.name,features:n.features}}function Ac(e){return`${e.source.addonId}/${e.source.stableId}`}function jc(e,t){return e===void 0||e.kind!==t.kind?!1:e.kind!==`ready`||t.kind!==`ready`?!0:e.caps.join(`\0`)===t.caps.join(`\0`)&&e.features.join(`\0`)===t.features.join(`\0`)}c();function Mc({deviceId:t,stableId:n}){let{t:a}=X(),s=n.startsWith(`composed-`)?n.slice(Fe.length):null,c=nt({blockId:s??``},{enabled:s!==null}),l=Ht({deviceId:t},{enabled:s!==null}),u=Ln({projection:`slim`},{enabled:s!==null}),[d,f]=o(()=>new Map),p=r((e,t)=>{f(n=>{let r=n.get(e);if(r?.name===t.name&&r.presence===t.presence)return n;let i=new Map(n);return i.set(e,t),i})},[]);if(s===null)return null;if(c.status===`pending`)return i(`p`,{role:`status`,className:`text-xs text-foreground-subtle`,children:a(`helper.checking`)});if(c.status===`error`)return i(q,{title:a(`helper.outputUnavailable`),message:c.error.message});if(c.data.state!==`loaded`||c.data.view===null)return null;let h=Le(c.data.view.block);if(h===null||!Di(h))return null;let g=Re(h.helper.templateId);if(g===null)return null;let _=Fc(l.status,l.data,l.error?.message),v=wi(_,g),y=mi(_),b=u.status===`success`?u.data.map(Ic):[],x=Lc(u.status),S=gi(h.helper.members.map(e=>d.get(Pc(e))??{name:e.source.stableId,presence:`unknown`})),C=v.kind===`number`?v.unit===void 0?String(v.value):`${v.value} ${v.unit}`:v.kind===`boolean`?v.value?a(`helper.on`):a(`helper.off`):v.kind===`empty`?a(`helper.noReading`):null;return i(Nt,{headingId:`helper-group-status`,title:a(`helper.statusTitle`),icon:Ke,testId:`helper-group-status`,children:e(`div`,{className:`${m} flex flex-col gap-3`,children:[h.helper.members.map(e=>i(Nc,{member:e,row:b.find(t=>t.addonId===e.source.addonId&&t.stableId===e.source.stableId)??null,fleetKind:x,onLive:p},Pc(e))),v.kind===`pending`&&i(`p`,{role:`status`,className:`text-xs text-foreground-subtle`,children:a(`helper.outputPending`)}),v.kind===`unavailable`&&i(q,{title:a(`helper.outputUnavailable`),message:v.message}),C!==null&&i(tr,{value:C,label:a(`helper.template.${g.id}`)}),y.kind===`pending`&&i(`p`,{role:`status`,className:`text-xs text-foreground-subtle`,children:a(`helper.reportingPending`)}),y.kind===`unavailable`&&i(q,{title:a(`helper.outputUnavailable`),message:y.message}),y.kind===`absent`&&i(`p`,{role:`status`,className:`text-xs text-foreground-subtle`,children:a(`helper.reportingAbsent`)}),y.kind===`ready`&&i(`p`,{className:`text-sm text-foreground`,"data-testid":`helper-reporting`,children:a(`helper.reporting`,{included:y.included,total:y.total})}),y.kind===`ready`&&y.excluded>0&&e(`div`,{children:[i(`h3`,{className:`text-[10px] font-semibold uppercase tracking-wider text-foreground-subtle`,children:a(`helper.excluded`)}),S.kind===`pending`?i(`p`,{role:`status`,className:`mt-1 text-xs text-foreground-subtle`,children:a(`helper.excludedPending`)}):S.names.length===0?i(`p`,{className:`mt-1 text-xs text-foreground-muted`,children:a(`helper.excludedUnnamed`)}):i(`ul`,{className:`mt-1 flex flex-col gap-0.5 text-xs text-foreground`,"data-testid":`helper-excluded`,children:S.names.map(e=>i(`li`,{children:e},e))})]}),i(Tc,{template:g,members:h.helper.members,fleet:b.map(e=>({id:e.id,name:e.name,addonId:e.addonId,stableId:e.stableId,features:e.features})),fleetKind:x,snapshot:_,nameOf:e=>b.find(t=>t.id===e)?.name??String(e)})]})})}function Nc({member:e,row:t,fleetKind:n,onLive:r}){let i=t?.online===!0,o=Ht({deviceId:t?.id??0},{enabled:n===`answered`&&t!==null&&i}),s=xi(o.status,o.status===`success`?vi(o.data):void 0,e.cap,e.fieldPath),c=Ai({fleet:n,deviceOnline:n===`answered`?t===null?null:t.online:!0,field:s}),l=t?.name??e.source.stableId,u=Pc(e);return a(()=>{r(u,{name:l,presence:c})},[u,l,r,c]),null}function Pc(e){return`${e.source.addonId}/${e.source.stableId}/${e.cap}.${e.fieldPath}`}function Fc(e,t,n){return e===`pending`?{kind:`pending`}:e===`error`?{kind:`error`,message:n??``}:{kind:`answered`,caps:vi(t)}}function Ic(e){return{id:e.id,name:e.name,online:e.online,addonId:e.addonId,stableId:e.stableId,features:e.features??[]}}function Lc(e){return e===`pending`?`pending`:e===`error`?`error`:`answered`}function Rc(e,t){return{switchId:e,label:Me[e].label,detail:t===void 0||t.length===0?null:t}}function zc(e){let t=new Map;for(let n of e.switches)n.deviceId===e.sourceId&&(t.has(n.switchId)||t.set(n.switchId,n));return t}function Bc(e){let t=zc(e),n=new Set(e.sourceStillLive),r=e.sourceStillLive.map(e=>Rc(e,t.get(e)?.detail)),i=[...t.values()].filter(e=>e.outcome===`not-offered`&&!n.has(e.switchId)).map(e=>Rc(e.switchId,e.detail));return{inheritedId:e.sourceId,retiredId:e.targetId,swapped:e.swapped,verdict:r.length===0?`quiet`:`still-live`,stillLive:r,neverOffered:i}}c();function Vc(e,t){return e.filter(e=>e.isCamera&&e.id!==t).map(e=>({id:e.id,name:e.name})).toSorted((e,t)=>e.name.localeCompare(t.name))}function Hc({deviceId:t,deviceName:r}){let{t:a}=X(),s=Ut(),[c,l]=o(null),u=Ln({isCamera:!0,projection:`slim`}),d=vr(),f=u.data!==void 0,p=n(()=>u.data===void 0?[]:Vc(u.data,t),[u.data,t]),m=p.find(e=>e.id===c)??null,h=d.data===void 0?null:Bc(d.data),g=d.error===null?null:d.error.message,_=async()=>{m===null||m.id===t||await s({title:a(`deviceMigrate.confirmTitle`,`Replace “{{source}}” with “{{target}}”?`,{source:r,target:m.name}),message:a(`deviceMigrate.confirmMessage`,`“{{target}}” takes over number {{sourceId}}. That number is what every recording, event, rule, zone and home-automation export of “{{source}}” is filed under, so all of it follows the number to the new hardware and keeps working. “{{source}}” is switched off and handed number {{targetId}} in exchange. This swaps two device identities and cannot be undone from here.`,{source:r,target:m.name,sourceId:t,targetId:m.id}),confirmLabel:a(`deviceMigrate.confirmAction`,`Migrate`),variant:`danger`})&&d.mutate({sourceId:t,targetId:m.id})};return e(`div`,{className:`rounded-lg border border-border bg-surface px-4 py-3`,children:[e(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[e(`div`,{className:`min-w-0`,children:[i(`h2`,{className:`text-xs font-semibold uppercase tracking-wider text-foreground`,children:a(`deviceMigrate.title`,`Migrate to…`)}),i(`p`,{className:`mt-0.5 text-[11px] text-foreground-subtle`,children:a(`deviceMigrate.subtitle`,`Replace this camera with other hardware you have already adopted. The new camera inherits number {{deviceId}}, so recordings, rules and integrations follow it.`,{deviceId:t})})]}),e(`div`,{className:`flex shrink-0 items-center gap-2`,children:[e(`select`,{"aria-label":a(`deviceMigrate.pickerLabel`,`Replacement camera`),className:`rounded-md border border-border bg-background px-2 py-1.5 text-xs text-foreground disabled:opacity-50`,disabled:!f||p.length===0||d.isPending,value:c===null?``:String(c),onChange:e=>{let t=e.target.value;l(t===``?null:Number(t))},children:[i(`option`,{value:``,children:f?a(`deviceMigrate.pickerPlaceholder`,`Select a camera…`):a(`deviceMigrate.pickerPending`,`Reading the fleet…`)}),p.map(t=>e(`option`,{value:String(t.id),children:[t.name,` (#`,t.id,`)`]},t.id))]}),e(`button`,{type:`button`,disabled:m===null||d.isPending,onClick:()=>{_()},className:`inline-flex shrink-0 items-center gap-1.5 rounded-md border border-border bg-background px-3 py-1.5 text-xs font-medium text-foreground hover:bg-surface disabled:opacity-50`,children:[i(Ve,{className:`h-3 w-3`}),d.isPending?a(`deviceMigrate.running`,`Migrating…`):a(`deviceMigrate.action`,`Migrate`)]})]})]}),f&&p.length===0&&i(`p`,{className:`mt-2 text-[11px] text-foreground-subtle`,children:a(`deviceMigrate.noTargets`,`No other camera is adopted, so there is nothing to migrate to.`)}),g!==null&&i(`p`,{className:`mt-2 text-[11px] text-danger`,children:a(`deviceMigrate.failed`,`Migration failed: {{error}}`,{error:g})}),h!==null&&i(Uc,{report:h})]})}function Uc({report:t}){let{t:n}=X(),r=t.verdict===`quiet`;return e(`div`,{className:`mt-3 space-y-2 border-t border-border pt-3`,children:[i(`p`,{className:`text-[11px] text-foreground-subtle`,children:n(`deviceMigrate.swapped`,`The replacement now answers on number {{inheritedId}}; the old camera was handed number {{retiredId}}.`,{inheritedId:t.inheritedId,retiredId:t.retiredId})}),r?e(`div`,{className:`flex items-start gap-2 rounded-md border border-success/30 bg-success/5 px-3 py-2`,children:[i(z,{className:`mt-0.5 h-3.5 w-3.5 shrink-0 text-success`}),i(`p`,{className:`text-[11px] leading-relaxed text-foreground`,children:n(`deviceMigrate.quiet`,`Every function on the replaced camera was switched off — the old hardware is quiet.`)})]}):e(`div`,{className:`rounded-md border border-warning/40 bg-warning/5 px-3 py-2`,children:[e(`div`,{className:`flex items-start gap-2`,children:[i(V,{className:`mt-0.5 h-3.5 w-3.5 shrink-0 text-warning`}),i(`p`,{className:`text-[11px] leading-relaxed text-foreground`,children:n(`deviceMigrate.stillLive`,`The replaced camera could not be reached, so these functions are STILL RUNNING on the old hardware. Nothing here failed to migrate — but until you unplug it or reach it physically, it can still produce data.`)})]}),i(`ul`,{className:`mt-2 space-y-1 pl-5`,children:t.stillLive.map(t=>e(`li`,{className:`text-[11px] text-foreground`,children:[i(`span`,{className:`font-medium`,children:t.label}),t.detail!==null&&e(`span`,{className:`text-foreground-subtle`,children:[` — `,t.detail]})]},t.switchId))})]}),t.neverOffered.length>0&&e(`div`,{className:`rounded-md border border-border px-3 py-2`,children:[e(`div`,{className:`flex items-start gap-2`,children:[i(Je,{className:`mt-0.5 h-3.5 w-3.5 shrink-0 text-foreground-subtle`}),i(`p`,{className:`text-[11px] leading-relaxed text-foreground-subtle`,children:n(`deviceMigrate.neverOffered`,`The replaced camera never offered these, so there was nothing to switch off. They are not running.`)})]}),i(`ul`,{className:`mt-2 space-y-1 pl-5`,children:t.neverOffered.map(e=>i(`li`,{className:`text-[11px] text-foreground-subtle`,children:e.label},e.switchId))})]})]})}c();function Wc({deviceId:t}){let{t:n}=X(),[r,a]=o(null),s=Zt({onSuccess:e=>{a(e.changed?`Re-aligned with source — ${e.rebuiltChildren} child${e.rebuiltChildren===1?``:`ren`} rebuilt.`:`Already up to date.`)},onError:e=>a(`Re-sync failed: ${e.message}`)});return e(`div`,{className:`rounded-lg border border-border bg-surface px-4 py-3`,children:[e(`div`,{className:`flex items-center justify-between gap-3`,children:[e(`div`,{children:[i(`h2`,{className:`text-xs font-semibold uppercase tracking-wider text-foreground`,children:n(`device.resyncButton.reSync`,`Re-sync`)}),i(`p`,{className:`mt-0.5 text-[11px] text-foreground-subtle`,children:n(`device.resyncButton.reAlignThisDeviceS`,`Re-align this device's type, role, capabilities and units with its source.`)})]}),e(`button`,{type:`button`,disabled:s.isPending,onClick:()=>{a(null),s.mutate({camDeviceId:t})},className:`inline-flex shrink-0 items-center gap-1.5 rounded-md border border-border bg-background px-3 py-1.5 text-xs font-medium text-foreground hover:bg-surface disabled:opacity-50`,children:[i(ie,{className:`h-3 w-3 ${s.isPending?`animate-spin`:``}`}),s.isPending?n(`device.resyncButton.reSyncing`,`Re-syncing…`):n(`device.resyncButton.reSync`,`Re-sync`)]})]}),r!==null&&i(`p`,{className:`mt-2 text-[11px] text-foreground-subtle`,children:r})]})}function Gc(e){return e<1e3?`${e.toFixed(0)} kbps`:`${(e/1e3).toFixed(1)} Mbps`}function Kc({device:t}){let{t:n}=X(),r=Br(),a=typeof t.id==`number`?t.id:null,o=String(t.type??``),s=o===W.Camera,c=o===W.Hub,l=t.features??[],u=l.includes(be.Resyncable),{data:d}=_n({deviceId:a??0},{enabled:a!==null&&s,refetchInterval:5e3}),f=d?.streams??{},p=Object.entries(f),m=l.includes(be.DoorbellButton),h=Dn(m?{deviceId:a??void 0,historyLimit:10}:void 0),g=h.latest?Date.now()-h.latest.timestamp<3e4:!1;return e(`div`,{className:`space-y-5`,children:[t.addonId===`composer`&&a!==null&&typeof t.stableId==`string`&&i(Mc,{deviceId:a,stableId:t.stableId}),c&&a!==null&&i(Pt,{deviceId:a,onOpenChild:e=>r(`/devices/${e}`)}),u&&a!==null&&i(Wc,{deviceId:a}),s&&a!==null&&i(Hc,{deviceId:a,deviceName:String(t.name??``)}),a!==null&&i(wc,{deviceId:a,isCamera:s}),s&&a!==null&&i(xn,{widgetId:`pipeline-orchestrator/pipeline-quick-stats`,host:`device-tab`,deviceId:a}),m&&i(_r,{history:h.history,latestIsFresh:g}),s&&a!==null&&i(xn,{widgetId:`stream-broker/stream-broker-panel`,host:`device-tab`,deviceId:a}),s&&p.length>0&&e(`div`,{className:`@container rounded-lg border border-border bg-surface overflow-hidden`,style:{containerType:`inline-size`},children:[i(`div`,{className:`border-b border-border px-4 py-2`,children:i(`h2`,{className:`text-xs font-semibold text-foreground uppercase tracking-wider`,children:n(`device.overviewTab.streamNetwork`,`Stream Network`)})}),i(`div`,{className:`divide-y divide-border`,children:p.map(([t,r])=>e(`div`,{className:`px-4 py-2.5`,children:[e(`div`,{className:`flex items-center gap-2 mb-2`,children:[i(oe,{className:`h-3 w-3 text-foreground-subtle`}),i(`span`,{className:`text-[11px] font-medium text-foreground`,children:t})]}),e(`div`,{className:`grid grid-cols-2 @[640px]:grid-cols-4 gap-2`,children:[i(qc,{label:n(`device.overviewTab.nominal`,`Nominal`),value:Gc(r.nominalBitrateKbps??0)}),i(qc,{label:n(`device.overviewTab.observed`,`Observed`),value:Gc(r.observedBitrateKbps??0)}),i(qc,{label:n(`device.overviewTab.peak`,`Peak`),value:Gc(r.peakBitrateKbps??0)}),i(qc,{label:n(`device.overviewTab.packetLoss`,`Packet Loss`),value:`${(r.packetLossPercent??0).toFixed(2)}%`,warning:(r.packetLossPercent??0)>1})]})]},t))})]}),i(Ur,{})]})}function qc({label:t,value:n,warning:r}){return e(`div`,{children:[i(`p`,{className:`text-[10px] text-foreground-subtle`,children:t}),i(`p`,{className:`text-xs font-medium ${r?`text-warning`:`text-foreground`}`,children:n})]})}var Jc=`history`,Yc=[{id:`overview`,labelKey:`helpers.structuralTabs.overview`,cameraOnly:!1,adminOnly:!1},{id:`config`,labelKey:`helpers.structuralTabs.config`,cameraOnly:!1,adminOnly:!1},{id:Hr,labelKey:`helpers.structuralTabs.customize`,cameraOnly:!1,adminOnly:!0},{id:Jc,labelKey:`helpers.structuralTabs.history`,cameraOnly:!1,adminOnly:!1},{id:`detection-pipeline`,labelKey:`helpers.structuralTabs.detectionPipeline`,cameraOnly:!0,adminOnly:!1},{id:`bindings`,labelKey:`helpers.structuralTabs.bindings`,cameraOnly:!0,adminOnly:!1}],Xc=new Set([W.Hub,W.Container]);function Zc(e,t){let n=e===W.Camera,r=e===void 0||!Xc.has(e);return Yc.filter(e=>(n||!e.cameraOnly)&&(t||!e.adminOnly)&&(r||e.id!==`history`)).map(({id:e,labelKey:t})=>({id:e,label:Y.t(t)}))}function Qc({provider:e,integrationId:t,name:n}){let r=Br(),a=t===null?`/integrations`:`/integrations/${t}`,o=n===null?`Open integrations`:`Open integration ${n}`;return i(`button`,{type:`button`,onClick:()=>r(a),className:`shrink-0 rounded-md transition-opacity hover:opacity-80 focus:outline-none focus-visible:ring-1 focus-visible:ring-primary/50`,title:o,"aria-label":o,children:i(jr,{type:e,size:`lg`})})}c();var $c=[{id:`logs`,icon:B,labelKey:`common.logs`},{id:`repl`,icon:qe,labelKey:`deviceDetail.repl`},{id:`events`,icon:T,labelKey:`common.events`},{id:`state`,icon:S,labelKey:`common.state`}];function el(){let{t:a}=X(),s=ue(),c=Fr(),u=Number(c.deviceId),f=Number.isFinite(u),p=Br(),m=l(),_=Ut(),v=R(),{user:b}=Nr(),x=b?.isAdmin===!0,[S,C]=Pr(),w=S.get(`tab`)??`overview`,T=S.get(`sub`),[E,D]=o(`logs`),O=`device-detail.left-col-width-px`,[k,A]=o(()=>{if(typeof window>`u`)return null;let e=window.localStorage.getItem(O),t=e?Number(e):NaN;return Number.isFinite(t)&&t>0?t:null}),j=t(k);j.current=k;function te(e){e.preventDefault();let t=e.clientX,n=e.currentTarget.previousElementSibling?.getBoundingClientRect().width??k??0,r=Math.max(330,Math.floor(window.innerWidth*.7)),i=e=>{A(Math.max(280,Math.min(r,n+(e.clientX-t))))},a=()=>{document.removeEventListener(`mousemove`,i),document.removeEventListener(`mouseup`,a);let e=j.current;if(e!==null)try{window.localStorage.setItem(O,String(Math.round(e)))}catch{}document.body.style.userSelect=``,document.body.style.cursor=``};document.body.style.userSelect=`none`,document.body.style.cursor=`col-resize`,document.addEventListener(`mousemove`,i),document.addEventListener(`mouseup`,a)}let{data:M,isLoading:ne,isError:re}=lr({deviceId:u},{enabled:f,refetchInterval:5e3,retry:1}),{data:N}=gn({deviceId:u},{enabled:f}),ae=n(()=>{let e=N?.settings?.sections??[],t=N?.live?.sections??[],n=[...e,...t],r=new Set;for(let e of n)e.location===`top-tab`&&e.tab&&r.add(e.tab===`zones`?`detection-pipeline`:e.tab);return n.some(Or)&&r.add(Er),[...r].map(e=>e===`export`?{id:e,label:Lr,isAddonContrib:!0}:{id:e,label:ze[e]?.label??e,isAddonContrib:!0})},[N]),P=M,F=String(P?.name??c.deviceId??`Device`),oe=P?.online===!0,se=oe?`online`:`offline`,I=String(P?.addonId??`rtsp`),L=P?.features??[],z=P?.type,B=z===W.Camera,{data:le}=Ar(f?u:0),fe=z===W.Container,pe=n(()=>(le??[]).map(e=>({id:e.id,stableId:e.stableId,type:e.type,...e.sourceInfo?{sourceInfo:{id:e.sourceInfo.id}}:{}})),[le]),V=n(()=>fe?vt(pe,typeof P?.linkDeviceId==`number`?P.linkDeviceId:null,typeof P?.primaryChildEntityId==`string`?P.primaryChildEntityId:null)?.id??null:null,[fe,pe,P?.linkDeviceId,P?.primaryChildEntityId]),{data:he}=gn({deviceId:V??0},{enabled:V!==null}),ge=n(()=>{if(V===null)return[];let e=he?.settings?.sections??[],t=he?.live?.sections??[],n=new Set;for(let r of[...e,...t])r.location===`top-tab`&&r.tab&&n.add(r.tab);return[...n].map(e=>({id:e,label:ze[e]?.label??e,isAddonContrib:!0,childDeviceId:V}))},[V,he]),_e=n(()=>La({sections:[...N?.settings?.sections??[],...N?.live?.sections??[]],deviceId:u,...V===null?{}:{child:{sections:[...he?.settings?.sections??[],...he?.live?.sections??[]],deviceId:V}}}),[N,he,u,V]),ve=typeof P?.parentDeviceId==`number`?P.parentDeviceId:null,{data:ye}=lr({deviceId:ve??0},{enabled:ve!==null}),H=fn(),xe=P?.disabled!==!0,Se=n(()=>{let e=N?.settings?.sections??[],t=N?.live?.sections??[];return kr([...e,...t],z,x,N!==void 0)},[N,z,x]),Ce=n(()=>{let e=new Set,t=[];for(let n of[...Zc(z,x),...ae,...ge])n.id===`config`&&!Se||e.has(n.id)||(e.add(n.id),t.push(n));return t},[z,x,ae,ge,Se]),U=n(()=>Os(Ce,w),[Ce,w]),we=r(e=>{C(t=>{let n=new URLSearchParams(t);e===`overview`?n.delete(`tab`):n.set(`tab`,e),n.delete(`sub`);for(let e of zi)n.delete(e);return n},{replace:!0})},[C]),Te=r(e=>{C(t=>{let n=new URLSearchParams(t);return n.set(`sub`,e),n},{replace:!0})},[C]),Ee=(le??[]).length>0,De=n(()=>$c.filter(({featureGate:e})=>!e||L.includes(e)),[L]),{data:Oe}=Sn(void 0),ke=n(()=>P?Tt(P,Oe):null,[P,Oe]),G=ke?.kind===`resolved`?ke.integration:null,Ae=G===null?ke?.kind===`unknown`?a(`deviceDetail.loadingIntegration`):ke?.kind===`orphan`?a(`deviceDetail.missingIntegration`):a(`deviceDetail.noIntegration`):G.name,je=G!==null&&G.addonId===I?G.name:I,Me=hr({onSuccess:()=>{m.invalidateQueries({queryKey:[[`deviceManager`]]}),p(G?.id?`/integrations/${G.id}`:`/integrations`)}}),Ne=Gn({onSuccess:()=>{m.invalidateQueries({queryKey:[[`deviceManager`]]})}}),Pe=ir({onSuccess:()=>{m.invalidateQueries({queryKey:[[`deviceManager`]]})}}),Fe=St(),Ie=Dt({onSuccess:()=>{m.invalidateQueries({queryKey:[[`deviceManager`]]})}}),Le=L.includes(be.Rebootable),Re=L.includes(be.BatteryOperated),Be=$e(v.trpcClient,Re&&f?u:null),Ve=Tr(v.trpcClient,f?u:null),He=ce(v.trpcClient,f?u:null,e=>e.runningState),Ue=He===void 0||He.running===null?null:He.running,We=Cn(z??`unknown`,s).icon,[Ge,Ke]=o(!1),qe=async()=>{if(!Ge){Ke(!0);try{let e=F.replace(/[^a-zA-Z0-9_.-]+/g,`_`),t=new Date().toISOString().replace(/[:.]/g,`-`);await ea(`${ee}/${String(u)}.jpg?force=1`,`${e}-${t}.jpg`)}finally{Ke(!1)}}},Je=Ne.isPending||Pe.isPending,{data:Ye}=Ft({deviceId:u},{enabled:f&&B,refetchInterval:1e4}),K=Ye?.agentNodeId??null,Xe=typeof K==`string`&&K.length>0&&!K.startsWith(`addon:`)?K:void 0,{data:Ze}=en({deviceId:u,...Xe?{nodeId:Xe}:{}},{enabled:f&&B,refetchInterval:3e3,retry:!1}),{data:Qe}=Bt({deviceId:u},{enabled:f&&B,refetchInterval:3e3,retry:!1}),et=Qe?.level?.dbfs??null;function nt(){if(!f)return null;switch(U){case`overview`:return i(Kc,{device:P??{}});case`config`:return i(Ns,{deviceId:u,activeSubTab:T,onSubTabChange:Te,deviceType:z,isAdmin:x});case`detection-pipeline`:return i(_c,{deviceId:u,activeSubTab:T,onSubTabChange:Te});case`bindings`:return i(ks,{deviceId:u});case Jc:return i(Fn,{deviceId:u,onNavigate:e=>p(e)});case Hr:return i(ws,{deviceId:u});default:{let e=U,t=ae.some(t=>t.id===e),n=ge.find(t=>t.id===e);if(!t&&n===void 0)return null;let r=n?.childDeviceId??u;if(e===`export`)return i(Dr,{deviceId:u,sectionFilter:Or,activeSubTab:T,onSubTabChange:Te});let a=i(Dr,{deviceId:r,sectionFilter:t=>t.location===`top-tab`&&(t.tab===e||e===`detection-pipeline`&&t.tab===`zones`),flattenSubTabs:e===`detection-pipeline`,activeSubTab:T,onSubTabChange:Te});return n!==void 0&&r!==u?i(wr,{deviceId:r,children:a}):a}}}return f?ne?e(`div`,{className:`flex flex-col h-full`,children:[e(`div`,{className:`border-b border-border bg-surface px-6 py-4`,children:[i(`div`,{className:`h-4 w-48 rounded bg-surface-hover animate-pulse mb-3`}),i(`div`,{className:`h-8 w-64 rounded bg-surface-hover animate-pulse`})]}),i(`div`,{className:`flex-1 p-6`,children:i(`div`,{className:`h-40 rounded-lg border border-border bg-surface animate-pulse`})})]}):re||!M?e(`div`,{className:`flex flex-col items-center justify-center h-full gap-3 text-foreground-subtle`,children:[i(`p`,{className:`text-lg font-semibold text-foreground`,children:a(`deviceDetail.deviceNotFound`,`Device not found`)}),i(`p`,{className:`text-xs`,children:i(Gr,{i18nKey:`deviceDetail.noDeviceWithId`,values:{id:u},components:{code:i(`code`,{className:`font-mono bg-surface px-1.5 py-0.5 rounded text-[11px]`})}})}),i(`button`,{onClick:()=>p(`/integrations`),className:`mt-2 rounded-lg bg-primary px-4 py-1.5 text-xs font-medium text-primary-foreground hover:bg-primary/90 transition-colors`,children:a(`deviceDetail.backToIntegrations`,`Back to Integrations`)})]}):e(`div`,{className:`absolute inset-0 flex flex-col overflow-clip`,children:[e(`div`,{className:`border-b border-border bg-surface px-6 py-3 flex-shrink-0`,children:[i(`div`,{className:`mb-2`,children:i(it,{items:[{label:a(`deviceDetail.integrations`,`Integrations`),onClick:()=>p(`/integrations`)},G===null?{label:Ae}:{label:Ae,onClick:()=>p(`/integrations/${G.id}`)},{label:F}]})}),e(`div`,{className:`flex items-center gap-2 sm:gap-3`,children:[G!==null&&i(Qc,{provider:G.addonId,integrationId:G.id,name:G.name}),i(wt,{running:Ue,children:i(We,{className:`h-5 w-5 text-foreground-subtle shrink-0`,"aria-hidden":!0})}),e(`div`,{className:`min-w-0 flex-1`,children:[e(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[i(`h1`,{className:`text-sm sm:text-base font-semibold text-foreground truncate`,children:F}),i(Kn,{status:se}),Re&&i(ot,{status:Be,variant:`full`}),i(Ct,{status:Ve})]}),ve!==null&&ye&&e(`button`,{type:`button`,onClick:()=>p(`/devices/${ve}`),className:`text-[10px] text-foreground-subtle hover:text-primary transition-colors mt-0.5 inline-flex items-center gap-1`,title:a(`deviceDetail.openParentDevice`,`Open parent device {{name}}`,{name:ye.name}),children:[i(`span`,{children:`↑`}),i(`span`,{className:`truncate`,children:String(ye.name??`Device #${ve}`)})]}),i(`div`,{className:`hidden md:flex items-center gap-3 mt-0.5 text-[10px] text-foreground-subtle`,children:L.length>0&&i(zr,{capabilities:L})})]}),Ze&&i(`div`,{className:`hidden lg:flex`,children:i(tl,{metrics:Ze,dbfs:et})}),e(`div`,{className:`flex items-center gap-1 shrink-0`,children:[e(`button`,{onClick:async()=>{xe?await _({title:a(`deviceDetail.disable`,`Disable "{{name}}"?`,{name:F}),message:a(`deviceDetail.theDeviceWillStopProcessing`,`The device will stop processing streams and events. You can re-enable it later.`),confirmLabel:a(`common.disable`,`Disable`),variant:`danger`})&&Pe.mutate({deviceId:u}):Ne.mutate({deviceId:u})},disabled:Je,title:xe?a(`deviceDetail.disableDevice`,`Disable device`):a(`deviceDetail.enableDevice`,`Enable device`),className:`inline-flex items-center gap-1.5 rounded-lg px-2 sm:px-2.5 py-1.5 text-[11px] font-medium border transition-colors disabled:opacity-50 ${xe?`border-success/30 text-success hover:bg-success/10`:`border-border text-foreground-subtle/50 hover:text-foreground hover:bg-surface-hover`}`,children:[i(g,{className:`h-3.5 w-3.5`}),i(`span`,{className:`hidden sm:inline`,children:Je?a(`deviceDetail.updating`,`Updating…`):xe?a(`deviceDetail.enabled`,`Enabled`):a(`deviceDetail.disabled`,`Disabled`)})]}),i(`div`,{className:`hidden sm:block h-5 w-px bg-border mx-1`}),B&&e(d,{children:[i(sa,{deviceId:u}),i(`div`,{className:`hidden sm:block h-5 w-px bg-border mx-1`})]}),i(la,{deviceId:u}),i(br,{triggerClassName:`ml-1`,items:[{id:`snapshot`,label:a(`deviceDetail.takeSnapshot`,`Take snapshot`),description:a(`deviceDetail.fetchAFreshFrameAnd`,`Fetch a fresh frame and download it.`),icon:h,disabled:Ge,onClick:()=>{qe()}},{id:`reboot`,label:a(`deviceDetail.rebootDevice`,`Reboot device`),description:a(`deviceDetail.cameraGoesOfflineFor30`,`Camera goes offline for ~30 seconds.`),icon:me,hidden:!Le,disabled:Fe.isPending,danger:!0,onClick:async()=>{await _({title:a(`deviceDetail.reboot`,`Reboot "{{name}}"?`,{name:F}),message:a(`deviceDetail.theCameraWillGoOffline`,`The camera will go offline for around 30 seconds while the firmware reboots.`),confirmLabel:a(`deviceDetail.reboot2`,`Reboot`),variant:`danger`})&&Fe.mutate({deviceId:u})}},{id:`restart-addon`,label:a(`deviceDetail.restartAddon`,`Restart addon`),description:a(`deviceDetail.bouncesEveryDeviceServedBy`,`Bounces every device served by {{servingAddonLabel}}.`,{servingAddonLabel:je}),icon:ie,disabled:Ie.isPending,danger:!0,onClick:async()=>{await _({title:a(`deviceDetail.restart`,`Restart "{{servingAddonLabel}}"?`,{servingAddonLabel:je}),message:a(`deviceDetail.restartingTheAddonWillBriefly`,`Restarting the addon will briefly disconnect every device served by it (not just "{{name}}"). Streams will reconnect automatically.`,{name:F}),confirmLabel:a(`deviceDetail.restart2`,`Restart`),variant:`danger`})&&Ie.mutate({addonId:I})}},{id:`delete`,label:a(`deviceDetail.deleteDevice`,`Delete device`),description:a(`deviceDetail.removeTheDeviceAndAll`,`Remove the device and all its settings.`),icon:y,separatorBefore:!0,disabled:Me.isPending,danger:!0,onClick:async()=>{await _({title:a(`deviceDetail.delete`,`Delete "{{name}}"?`,{name:F}),message:a(`deviceDetail.thisWillRemoveTheDevice`,`This will remove the device and all its settings. This action cannot be undone.`),confirmLabel:a(`common.delete`,`Delete`),variant:`danger`})&&Me.mutate({deviceId:u})}}]})]})]})]}),i(wr,{deviceId:u,device:P??void 0,children:i(tt,{children:i(ln,{children:i(de,{children:i(un,{children:e(`main`,{className:H?`flex-1 overflow-y-auto flex flex-col`:`flex-1 min-h-0 overflow-hidden flex flex-row`,children:[e(`div`,{className:H?`flex flex-col bg-surface`:`${k===null?`w-1/2 lg:w-1/3`:``} flex-shrink-0 flex flex-col bg-surface min-h-0 overflow-y-auto`,style:!H&&k!==null?{width:`${String(k)}px`}:void 0,children:[i(`div`,{className:B?`flex-shrink-0 border-b border-border-subtle bg-black`:H?`flex-shrink-0 border-b border-border-subtle bg-surface`:`shrink-0 border-b border-border-subtle bg-surface`,children:B?i(qa,{deviceId:u,intercomAvailable:L.includes(be.TwoWayAudio)}):e(`div`,{children:[i(Pa,{deviceId:u,deviceName:F,deviceType:z??`unknown`,provider:I,isOnline:oe,features:L}),i(Fa,{deviceId:u,widgets:_e})]})}),B&&_e.length>0&&i(`div`,{className:`flex-shrink-0 border-b border-border-subtle bg-surface pt-3 sm:pt-4`,children:i(Fa,{deviceId:u,widgets:_e})}),e(`div`,{className:H?`flex flex-col border-b border-border`:`flex-1 min-h-64 flex flex-col overflow-hidden`,children:[i(`div`,{className:`flex-shrink-0 border-b border-border-subtle px-2 py-1.5`,children:i(`div`,{className:`flex gap-1 overflow-x-auto -mx-1 px-1 pb-0.5`,children:De.map(({id:t,labelKey:n,icon:r})=>{let o=E===t;return e(`button`,{onClick:()=>D(t),title:a(n),className:`flex items-center gap-1 rounded px-2 py-1 text-[10px] font-medium transition-colors flex-shrink-0 ${o?`bg-primary/15 text-primary`:`text-foreground-subtle hover:text-foreground hover:bg-surface-hover`}`,children:[i(r,{className:`h-3 w-3`}),a(n)]},t)})})}),e(`div`,{className:H?`h-72 overflow-hidden`:`flex-1 min-h-0 overflow-hidden`,children:[E===`logs`&&i(Ja,{deviceId:u,containerDeviceId:z===`container`?u:void 0}),E===`repl`&&i(Ya,{deviceId:u}),E===`events`&&i(Xa,{deviceId:u}),E===`state`&&i(Za,{deviceId:u})]})]})]}),!H&&i(`div`,{role:`separator`,"aria-orientation":`vertical`,title:a(`deviceDetail.dragToResize`,`Drag to resize`),onMouseDown:te,className:`flex-shrink-0 w-1 cursor-col-resize bg-border hover:bg-primary/40 transition-colors group relative z-10`,children:i(`span`,{className:`absolute inset-y-0 -left-1 -right-1`})}),e(`div`,{className:H?`flex flex-col`:`flex-1 min-w-0 min-h-0 flex flex-col overflow-hidden`,children:[i(`div`,{className:`flex-shrink-0 border-b border-border bg-surface px-4`,children:i(`div`,{className:`flex flex-nowrap overflow-x-auto md:flex-wrap md:overflow-x-visible items-center gap-0`,children:Ce.map(t=>{let n=U===t.id;return e(`button`,{onClick:()=>we(t.id),className:`relative flex-shrink-0 px-3 py-2 text-xs font-medium transition-colors ${n?`text-primary`:`text-foreground-subtle hover:text-foreground`}`,children:[t.label,n&&i(`span`,{className:`absolute bottom-0 left-0 right-0 h-0.5 rounded-full bg-primary`})]},t.id)})})}),e(`div`,{className:H?`p-3 flex flex-col gap-3`:`flex-1 min-h-0 overflow-y-auto p-4 flex flex-col gap-3`,children:[U===`overview`&&Ee&&i(ua,{parentDeviceId:u}),nt()]})]})]})})})})})})]}):e(`div`,{className:`flex flex-col items-center justify-center h-full gap-3 text-foreground-subtle`,children:[i(`p`,{className:`text-lg font-semibold text-foreground`,children:a(`deviceDetail.invalidDeviceId`,`Invalid device id`)}),i(`p`,{className:`text-xs`,children:i(Gr,{i18nKey:`deviceDetail.invalidSegment`,values:{segment:c.deviceId},components:{code:i(`code`,{className:`font-mono bg-surface px-1.5 py-0.5 rounded text-[11px]`})}})}),i(`button`,{onClick:()=>p(`/integrations`),className:`mt-2 rounded-lg bg-primary px-4 py-1.5 text-xs font-medium text-primary-foreground hover:bg-primary/90 transition-colors`,children:a(`deviceDetail.backToIntegrations`,`Back to Integrations`)})]})}function tl({metrics:t,dbfs:n}){let r=ue(),{t:a}=X(),o=cr(t.phase??`idle`,r);return e(`div`,{className:`flex items-center gap-3 flex-shrink-0`,children:[e(`div`,{className:`flex items-center gap-1.5`,children:[i(`span`,{className:`h-1.5 w-1.5 rounded-full ${o.dotClass}`}),i(`span`,{className:`text-[10px] font-medium ${o.textColor}`,children:o.label})]}),i(`div`,{className:`h-3 w-px bg-border`}),e(`div`,{className:`flex items-center gap-1 text-[10px] text-foreground-subtle`,children:[i(fe,{className:`h-3 w-3`}),i(`span`,{className:`text-foreground tabular-nums`,children:(t.actualFps??0).toFixed(1)}),i(`span`,{children:a(`common.fpsWord`)})]}),e(`div`,{className:`flex items-center gap-1 text-[10px] text-foreground-subtle`,children:[i(M,{className:`h-3 w-3`}),i(`span`,{className:`text-foreground tabular-nums`,children:(t.avgInferenceTimeMs??0).toFixed(0)}),i(`span`,{children:`ms`})]}),e(`div`,{className:`flex items-center gap-1 text-[10px] text-foreground-subtle`,title:a(`deviceDetail.currentAudioLevelDbfs`,`Current audio level (dBFS)`),children:[i(k,{className:`h-3 w-3`}),i(`span`,{className:`text-foreground tabular-nums`,children:n==null?`—`:n.toFixed(0)}),i(`span`,{children:`dB`})]}),(t.queueDepth??0)>0&&e(`span`,{className:`text-[10px] text-warning tabular-nums`,children:[`q:`,t.queueDepth]})]})}export{el as DeviceDetailPage};
@@ -1,2 +0,0 @@
1
- import{C as e,J as t,K as n,R as r,S as i,V as a,Y as o,et as s,x as c}from"./_virtual_mf___mfe_internal__admin_ui_host__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-CEyXHAdg.js";import{Rn as l,T as u,Vi as d,dt as f,ot as p,ta as m,xi as h}from"./player-overlays-By2E2OWX.js";import{$n as g,Ai as _,An as v,Bn as y,Ci as b,Cn as x,Dn as S,En as C,In as w,Kn as T,Ln as E,Mi as D,Mn as O,Ni as k,On as A,Pi as j,Qt as ee,Ri as M,Rn as N,Si as P,Tn as te,Vn as ne,Wt as F,Zn as re,Zt as I,_i as ie,ai as ae,bi as L,ci as oe,di as se,fi as ce,hi as le,ii as ue,ji as de,jn as fe,kn as pe,li as me,mn as he,oi as ge,si as _e,ti as ve,tn as ye,ui as R,vi as be,wn as xe,xi as Se,yi as Ce,zn as we}from"./client-COfGFdJB.js";import{t as Te}from"./boxes-BP6lUc_5.js";import{$r as Ee,Dr as z,G as De,Gn as Oe,In as ke,Kr as B,Ln as Ae,Mr as je,Nr as Me,Nt as Ne,Pr as Pe,R as Fe,Rn as Ie,Sd as Le,Sn as Re,St as ze,Uo as Be,W as Ve,Wo as He,Wr as Ue,Xu as V,_r as We,ai as Ge,fs as Ke,hd as qe,hr as Je,ii as Ye,jr as Xe,mo as H,mr as Ze,nd as Qe,oi as $e,pd as et,po as U,pr as tt,ri as nt,s as rt,td as W,vr as it,yr as at}from"./src-BZ8j9Q2T.js";import{t as G}from"./i18n-DRa6-1Ye.js";import{t as K}from"./useTranslation-BJr-n0es.js";import{dr as ot,h as st,ur as ct}from"./index-BO95XcLa.js";import{n as lt}from"./assignment-candidates-BpQXQnWA.js";s();function ut({id:e,...t}){return i(Re,{headingId:`customize-${e}`,...t})}function dt(e,t){if(e.status===`error`)return{kind:`unknown`,reason:e.error?.message??G.t(`helpers.customize.requestFailed`)};let n=e.data;return e.status===`pending`||n===void 0?{kind:`pending`}:{kind:`known`,value:t(n)}}function ft(e,t){let n=Le.useQueries(n=>e.map(e=>n.deviceManager.listDeviceIdsByCaps({capNames:[e]},{enabled:t})));return lt(e.map((e,t)=>{let r=n[t];return{cap:e,query:r===void 0?{status:`pending`}:{status:r.status,data:r.data,error:r.error===null?null:{message:r.error.message}}}}))}function pt(e,t){let n=Ne(e,t);return n.kind===`resolved`?n.integration.name:null}function mt(e){let t=H({projection:`slim`},{enabled:e}),{data:r}=Ke(void 0,{enabled:e}),i=t.error===null||t.error===void 0?null:t.error.message;return n(()=>dt({status:t.status,data:t.data,error:i===null?null:{message:i}},e=>e.map(e=>({id:e.id,name:e.name,addonId:e.addonId,stableId:e.stableId,type:e.type,location:e.location,isCamera:e.isCamera,integration:pt(e,r),parentDeviceId:e.parentDeviceId,primaryChildEntityId:e.primaryChildEntityId??null,role:e.role??null}))),[t.status,t.data,i,r])}function ht(e){let t=e?.trim()??``;return t.length>0?t:G.t(`helpers.customize.requestFailed`)}function gt(e){let t=e.data;if(t!==void 0){if(t.state===`not-loaded`)return{kind:`not-loaded`,reason:t.reason};if(t.view===null)return{kind:`none`};let e=ve(t.view.block);return e===null?{kind:`unknown`,reason:G.t(`helpers.customizationRead.notAComposition`,{id:t.view.block.id})}:{kind:`present`,view:t.view,composition:e}}return e.status===`pending`?{kind:`pending`}:e.status===`error`?{kind:`unknown`,reason:ht(e.error?.message)}:{kind:`pending`}}function q(e){return e.kind===`present`?e.composition:null}var _t={lastChangedAt:{en:`Last change`,it:`Ultima variazione`},lastFetchedAt:{en:`Last update`,it:`Ultimo aggiornamento`},lastDetectedAt:{en:`Last detection`,it:`Ultimo rilevamento`},lastPressedAt:{en:`Last press`,it:`Ultima pressione`},pressCountSinceStart:{en:`Press count`,it:`Conteggio pressioni`},since:{en:`Since`,it:`Da`}};function vt(e,t){return t.startsWith(`it`)?e.it:e.en}function yt(e){if(!(`unit`in e))return;let t=e.unit;return typeof t==`string`&&t.length>0?t:void 0}function bt(e,t){let n=he[e]?.noun;return n===void 0?e.split(`-`).filter(e=>e.length>0).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `):vt(n,t)}function J(e,t,n){let r=he[e]?.state?.find(e=>e.field===t);if(r!==void 0){let e=vt(r.label,n),t=yt(r);return t===void 0?e:`${e} (${t})`}let i=_t[t];return i===void 0?t:vt(i,n)}function xt(e){return ye.find(t=>t.name===e)}function St(e){return e===`lastFetchedAt`||e.endsWith(`At`)}function Ct(e){let t=xe(e.role);if(t===null||xt(t)?.status===void 0)return null;let n={};return{target:{kind:`new`,type:e.type,...e.role===null?{}:{role:e.role}},features:[{kind:`fields`,cap:t,fields:n}]}}function wt(e){return e===null?`incomplete`:x(ae(e,{lookupCap:ue(ye),sources:new Map,self:null,blockId:null,target:null,peers:[]}).problems)}function Tt(e,t){let n=xt(e);return n?.status===void 0?[]:ce(n.status.schema).filter(e=>!St(e)&&!t.has(e))}function Y(e,t,n){let r=e?.features??[],i=r.findIndex(e=>e.cap===n.cap);return{target:e?.target??{kind:`existing`,device:t},features:i===-1?[...r,n]:r.map((e,t)=>t===i?n:e)}}function Et(e,t){let n=e.features.filter(e=>e.cap!==t);return n.length===0?null:{target:e.target,features:n}}function X(e,t){let n=e?.features.find(e=>e.cap===t);return n!==void 0&&n.kind===`fields`?n:null}function Dt(e){return Array.isArray(e)?e.map(Dt):typeof e!=`object`||!e?e:Object.fromEntries(Object.entries(e).toSorted(([e],[t])=>e.localeCompare(t)).map(([e,t])=>[e,Dt(t)]))}function Ot(e){return JSON.stringify(Dt(e))}function kt(e,t){switch(e.kind){case`pending`:return{kind:`refused`,reason:G.t(`helpers.customizationSave.notReadYet`)};case`unknown`:return{kind:`refused`,reason:`the customization could not be read: ${e.reason}`};case`not-loaded`:return{kind:`refused`,reason:`the customizations are not loaded yet: ${e.reason}`};case`none`:return t===null?{kind:`noop`}:{kind:`create`,input:{enabled:!0,composition:t}};case`present`:{let n=e.view.block.id;return t===null?{kind:`delete`,blockId:n}:Ot(t)===Ot(e.composition)?{kind:`noop`}:{kind:`update`,blockId:n,expectedUpdatedAt:e.view.block.updatedAt,composition:t}}}}function At(){let{t:e}=K(),t=Ue();return(n,r)=>t({title:e(`customize.assign.removeConfirm.title`),message:r?`${e(`customize.assign.removeConfirm.message`,{what:n})} ${e(`customize.assign.removeConfirm.last`)}`:e(`customize.assign.removeConfirm.message`,{what:n}),confirmLabel:e(`customize.assign.removeConfirm.confirm`),variant:`danger`})}function jt(e,t){let n=e===`enum`?`string`:e,r=t.kind===`enum`?`string`:t.kind,i={source:t.source,cap:t.cap,fieldPath:t.fieldPath};return r===n?{kind:`from`,...i}:n===`number`&&r===`string`?{kind:`expression`,expr:`number(x)`,bindings:{x:{kind:`from`,...i}}}:null}function Mt(e){return e.map(e=>({id:e.id,name:e.name,addonId:e.addonId,stableId:e.stableId,location:e.location,type:e.type,parentDeviceId:e.parentDeviceId}))}function Z(e,t){let n=e;for(let e of t.split(`.`)){if(typeof n!=`object`||!n||Array.isArray(n))return;n=Object.getOwnPropertyDescriptor(n,e)?.value}return n}function Nt(e,t,n,r){return r===null?{kind:`from`,source:e,cap:t,fieldPath:n.path}:jt(r,{source:e,cap:t,fieldPath:n.path,kind:n.kind})}function Pt(e,t,n,r){let i={addonId:e.addonId,stableId:e.stableId};return t.caps.flatMap(e=>e.fields.filter(e=>e.item!==!0).map(t=>({cap:e.cap,path:t.path,kind:t.kind,value:n===null?void 0:Z(n[e.cap],t.path),source:Nt(i,e.cap,t,r)})))}function Ft(e,t){return t?e===void 0?`—`:e===null?`null`:typeof e==`string`||typeof e==`number`||typeof e==`boolean`?String(e):JSON.stringify(e):`…`}function It(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Lt(e,t){let n=Z(e,t);return n===void 0?{kind:`absent`}:t===`percentage`&&e.binary===!0?{kind:`value`,value:n,binary:!0}:{kind:`value`,value:n}}function Rt(e,t,n){return It(t)?Lt(t,n):e.status===`error`?{kind:`unknown`,reason:e.error?.message??G.t(`helpers.liveValue.unreadable`)}:e.status===`pending`||e.data===void 0?{kind:`pending`}:e.data===null?{kind:`absent`}:Lt(e.data,n)}function zt(e,t,n){if(t.binary===!0&&n.cap===`battery`&&n.path===`percentage`){let t=Ie(e);return{text:G.t(t?ke:Ae),tone:t?`warning`:`normal`}}return{text:n.path===`percentage`?`${Math.round(e)} %`:String(e),tone:`normal`}}function Bt(e,t,n){let r=e?`active`:`muted`;return t.cap===`contact`&&t.path===`entryOpen`?{text:e?n.open:n.closed,tone:r}:k[t.cap]===t.path?{text:e?n.active:n.inactive,tone:r}:{text:String(e),tone:`normal`}}function Vt(e,t,n){switch(e.kind){case`pending`:return{text:`…`,tone:`muted`};case`unknown`:return{text:`?`,title:e.reason,tone:`warning`};case`absent`:return{text:`—`,tone:`muted`};case`value`:{let r=e.value;return r===null?{text:`—`,tone:`muted`}:typeof r==`boolean`?Bt(r,t,n):typeof r==`number`?zt(r,e,t):typeof r==`string`?{text:r,tone:`normal`}:{text:JSON.stringify(r),tone:`normal`}}}}var Ht=0;function Ut(e){let t=p(),n=Be({deviceId:e?.deviceId??Ht,capName:e?.cap??``},{enabled:e!==null}),r=rt(t.trpcClient,e?.deviceId??null,e?.cap??``);return e===null?{kind:`absent`}:Rt({status:n.status,data:n.data,error:n.error===null||n.error===void 0?null:{message:n.error.message}},r,e.path)}var Wt={muted:`text-foreground-subtle`,active:`text-success`,normal:`text-foreground`,warning:`text-warning`};function Gt({target:e}){let{t}=K(),n=Ut(e);return e===null?null:i(Kt,{display:Vt(n,e,{active:t(`customize.assign.value.active`),inactive:t(`customize.assign.value.inactive`),open:t(`customize.assign.value.open`),closed:t(`customize.assign.value.closed`)})})}function Kt({display:e}){return i(`span`,{className:`text-xs ${Wt[e.tone]}`,title:e.title,children:e.text})}function qt(e){return e===`avg-round-1`?`customize.fieldsCard.aggregate.avg`:`customize.fieldsCard.aggregate.latest`}function Jt(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function Yt(e,t,n){let r=RegExp(`(?<![A-Za-z0-9_])${Jt(t)}(?![A-Za-z0-9_])`,`g`);return e.replace(r,()=>n)}function Xt(e,t,n,r,i){let a=Object.keys(t).toSorted((e,t)=>t.length-e.length),o=e;for(let e of a){let a=t[e];if(a===void 0||a.kind!==`from`)continue;let s=n.get(L(a.source))??i,c=J(a.cap,a.fieldPath,r);o=Yt(o,e,`${s} · ${c}`)}return sn(o)}var Zt=1e3,Qt=60*Zt,$t=60*Qt,en={within:[1],dwell:[1,2],rose:[2]};function tn(e){if(!Number.isInteger(e)||e<Zt)return null;if(e%$t===0){let t=e/$t;return t===1?`1 h`:`${t} h`}if(e%Qt===0){let t=e/Qt;return t===1?`1 min`:`${t} min`}if(e%Zt===0){let t=e/Zt;return t===1?`1 s`:`${t} s`}return null}function nn(e){return/^\d+$/.test(e.trim())?tn(Number(e.trim())):null}function rn(e,t){let n=1,r=t+1,i=null,a=[];for(let o=t+1;o<e.length;o+=1){let t=e[o]??``;if(i!==null){if(t===`\\`){o+=1;continue}t===i&&(i=null);continue}if(t===`"`||t===`'`){i=t;continue}if(t===`(`){n+=1;continue}if(t===`)`){if(--n,n===0){let t=e.slice(r,o);return a.length===0&&t.trim()===``||a.push({text:t}),{args:a,close:o}}continue}t===`,`&&n===1&&(a.push({text:e.slice(r,o)}),r=o+1)}return null}function an(e,t){let n=e[t-1];if(n!==void 0&&/[A-Za-z0-9_]/.test(n))return null;for(let n of Object.keys(en)){if(!e.startsWith(n,t))continue;let r=t+n.length,i=e[r];if(i!==void 0&&/[A-Za-z0-9_]/.test(i))continue;let a=r;for(;e[a]===` `||e[a]===`
2
- `;)a+=1;if(e[a]!==`(`)continue;let o=rn(e,a);return o===null?null:{name:n,close:o.close,args:o.args}}return null}function on(e){let t=e.args.map(e=>sn(e.text)),n=en[e.name]??[];if(e.name===`within`){let e=t[1],n=e===void 0?null:nn(e);if(n!==null)return`within ${n}`}let r=t.map((e,t)=>n.includes(t)?nn(e)??e.trim():e.trim());return`${e.name}(${r.join(`, `)})`}function sn(e){let t=``,n=0;for(;n<e.length;){let r=an(e,n);if(r===null){t+=e[n]??``,n+=1;continue}t+=on(r),n=r.close+1}return t}function cn(e){for(let t=1;;t++){let n=`s${t}`;if(!e.includes(n))return n}}var ln={min:`min(a, b, …)`,max:`max(a, b, …)`,abs:`abs(x)`,floor:`floor(x)`,ceil:`ceil(x)`,sqrt:`sqrt(x)`,round:`round(x, digits?)`,pow:`pow(x, y)`,clamp:`clamp(x, lo, hi)`,avg:`avg(a, b, …)`,sum:`sum(a, b, …)`,coalesce:`coalesce(a, b, …)`,age:`age(now, ts)`,convert:`convert(x, "from", "to")`,any:`any(a, b, …)`,all:`all(a, b, …)`,within:`within(ts, ms)`,number:`number(x)`,latest:`latest(ts, …)`,rose:`rose(level, changedAt, debounceMs?)`,count:`count(x)`,dwell:`dwell(active, onForMs, offForMs)`,latchedAt:`latchedAt(value)`},un=/[A-Za-z_][A-Za-z0-9_]*$/;function dn(e,t,n){let r=un.exec(e.slice(0,t))?.[0]??``;if(r===``)return[];let i=n.filter(e=>e.startsWith(r)).toSorted().map(e=>({kind:`binding`,label:e,insert:e,hintKey:null})),a=`now`.startsWith(r)?[{kind:`now`,label:`now`,insert:`now`,hintKey:`compositionEditor.now`}]:[],o=[...D].filter(e=>e.startsWith(r)).toSorted().map(e=>({kind:`builtin`,label:ln[e]??e,insert:`${e}(`,hintKey:`compositionEditor.builtins.${e}`}));return[...i,...a,...o].slice(0,8)}function fn(e,t,n){let r=t-(un.exec(e.slice(0,t))?.[0]??``).length;return{text:`${e.slice(0,r)}${n.insert}${e.slice(t)}`,cursor:r+n.insert.length}}s();function pn({label:n,value:r,bindings:a,onChange:s}){let{t:c}=K(),l=t(null),[u,d]=o(r.length),f=dn(r,u,a);return e(`div`,{className:`flex flex-col gap-1`,children:[e(`label`,{className:`flex flex-col gap-1 text-[11px]`,children:[n,i(`input`,{ref:l,className:`font-mono px-1.5 py-0.5 text-[11px] bg-background border border-border rounded`,value:r,onChange:e=>{s(e.target.value),d(e.target.selectionStart??e.target.value.length)},onSelect:e=>d(e.currentTarget.selectionStart??r.length)})]}),f.length>0&&i(`ul`,{role:`listbox`,"aria-label":c(`compositionEditor.suggestions`),className:`rounded border border-border bg-surface text-[11px]`,children:f.map(t=>e(`li`,{role:`option`,"aria-selected":!1,tabIndex:0,className:`flex justify-between gap-2 px-1 cursor-pointer hover:bg-surface-hover`,onClick:()=>{let e=fn(r,u,t);s(e.text),d(e.cursor),l.current?.focus()},children:[i(`span`,{className:`font-mono`,children:t.label}),t.hintKey!==null&&i(`span`,{className:`text-foreground-subtle`,children:c(t.hintKey)})]},`${t.kind}:${t.label}`))})]})}function mn(e){return{addonId:e.addonId,stableId:e.stableId}}function hn(e){return new Map(e.map(e=>[L(mn(e)),e]))}function gn(e,t,n){if(e.kind===`code`)return{kind:`unavailable`,reason:G.t(`helpers.fieldPreview.codeFields`)};if(e.kind===`expression`&&(se(e.expr,`rose`)||se(e.expr,`count`)))return{kind:`runtime-only`};let r=Se(e).filter(e=>t.get(Ce(e.source,e.cap))?.kind!==`value`).map(be);if(r.length>0)return{kind:`waiting`,missing:r};let i=ne({source:e,now:n,read:e=>{let n=t.get(Ce(e.source,e.cap)),r=n?.kind===`value`?Z(n.slice,e.fieldPath):void 0,i=r===void 0?void 0:de(r);return i===void 0?{state:`unavailable`,reason:G.t(`helpers.fieldPreview.notReported`,{path:`${e.cap}.${e.fieldPath}`}),fatal:!1}:{state:`fresh`,value:i}}});return i.state===`unavailable`?{kind:`unavailable`,reason:i.reason}:{kind:`value`,value:i.value,stale:i.reason}}s();function _n({sliceKey:e,deviceId:t,capName:n,onReading:r}){let i=rt(p().trpcClient,t,n);return a(()=>{r(e,i===void 0?{kind:`pending`}:{kind:`value`,slice:i})},[e,i,r]),null}function vn(e,t){return[...new Map(Se(e).map(e=>[Ce(e.source,e.cap),e]))].map(([e,n])=>({key:e,read:n,device:t.get(L(n.source))}))}function yn({source:t}){let{t:n}=K(),a=H({projection:`slim`}),[s,c]=o(new Map),l=r((e,t)=>{c(n=>new Map([...n,[e,t]]))},[]),u=vn(t,hn(a.status===`success`?Mt(a.data):[])),d=a.status===`success`?u.filter(e=>e.device===void 0).map(e=>L(e.read.source)):[];return e(`div`,{className:`flex flex-wrap items-center gap-2 text-[11px]`,children:[u.map(e=>e.device===void 0?null:i(_n,{sliceKey:e.key,deviceId:e.device.id,capName:e.read.cap,onReading:l},e.key)),i(`span`,{className:`text-foreground-subtle`,children:n(`compositionEditor.preview.label`)}),a.status===`error`?i(`span`,{className:`text-warning`,children:n(`compositionEditor.preview.devicesFailed`,{reason:a.error?.message??``})}):d.length>0?i(`span`,{className:`text-warning`,children:n(`compositionEditor.preview.unknownDevice`,{sources:d.join(`, `)})}):i(bn,{preview:gn(t,s,Date.now())})]})}function bn({preview:t}){let{t:n}=K();switch(t.kind){case`value`:return e(`strong`,{children:[`→ `,Ft(t.value,!0),t.stale===null?``:` (${t.stale})`]});case`unavailable`:return i(`span`,{className:`text-warning`,children:t.reason});case`waiting`:return i(`span`,{className:`text-foreground-subtle`,children:n(`compositionEditor.preview.waiting`,{sources:t.missing.join(`, `)})});case`runtime-only`:return i(`span`,{className:`text-foreground-subtle`,children:n(`compositionEditor.preview.runtimeOnly`)})}}function xn(e){return e===`identity`||e===`invert`||e===`threshold`||e===`linear`}function Sn(e){return Object.hasOwn(w,e)}function Cn(e){return Sn(e)?w[e].targets:[]}function wn(e,t){let n=Cn(e).find(e=>e.id===t);return n?.cardinality===`keyedArray`?n.fields??[]:[]}function Tn(e,t){return Cn(e).find(e=>e.id===t)?.traits??[]}function En(e,t){return e.caps.flatMap(e=>{let n=Dn(t,e.cap);return e.fields.filter(e=>e.item!==!0).map(t=>({cap:e.cap,path:t.path,kind:t.kind,unit:n,enumValues:t.enumValues??[]}))})}function Dn(e,t){if(e===null)return null;let n=Z(e[t],`unit`);return typeof n==`string`&&n.length>0?n:null}function On(e,t){return t.kind===`number`?e.find(e=>e.kind===`numeric`)??null:t.kind===`enum`||t.kind===`string`?e.find(e=>e.kind===`enum`)??null:null}function kn(e,t,n,r){let i=wn(e,t).find(e=>e.path===n);if(i===void 0)return{ok:!1,reason:`kind`};let a=On(i.sources,r);if(a===null)return{ok:!1,reason:`kind`};if(a.requiredUnit!==void 0&&r.unit===null)return{ok:!1,reason:`unit-unknown`};if(a.requiredUnit!==void 0&&r.unit!==a.requiredUnit)return{ok:!1,reason:`unit`};if(a.transformKinds.includes(`enum-map`))return{ok:!0,mode:`enum`};let o=a.transformKinds.filter(xn);return o.length===0||r.kind!==`number`?{ok:!1,reason:`kind`}:{ok:!0,mode:`scalar`,fit:{ok:!0,valueKind:`number`,sourceUnit:a.requiredUnit??null,transforms:o,declared:a.transforms}}}function An(e,t,n){return wn(e,t).find(e=>e.path===n)?.enumValues??[]}function jn(e){return e.length===1&&e[0]===`threshold`?`threshold`:e.length===1&&e[0]===`invert`||e.includes(`invert`)&&e.every(e=>e===`identity`||e===`invert`)?`invert`:e.length>1?`choice`:`none`}function Mn(e){if(e.transforms.includes(`identity`))return{kind:`identity`};if(e.transforms.includes(`threshold`)){let t=Pn(e.declared,`threshold`);if(t!==null)return Nn(t)}if(e.transforms.includes(`linear`)){let t=Pn(e.declared,`linear`);if(t!==null)return Nn(t)}return{kind:`invert`}}function Nn(e){switch(e.kind){case`identity`:return{kind:`identity`};case`invert`:return{kind:`invert`};case`threshold`:return{kind:`threshold`,comparison:e.comparison,threshold:e.defaultThreshold,startDwellMs:e.defaultStartDwellMs,stopDwellMs:e.defaultStopDwellMs};case`linear`:return Fn(e);case`enum-map`:return{kind:`identity`}}}function Pn(e,t){return e.find(e=>e.kind===t)??null}function Fn(e){return{kind:`linear`,scale:e.defaultScale,offset:e.defaultOffset,...e.clampMin!==void 0&&e.clampMax!==void 0?{clampMin:e.clampMin,clampMax:e.clampMax}:{}}}function In(e){let t=O({draft:{kind:`scalar`,cap:e.cap,targetId:e.targetId,source:{addonId:e.source.addonId,stableId:e.source.stableId,cap:e.source.cap,fieldPath:e.source.fieldPath},transform:e.transform},device:e.device,apply:e.apply,sourceValueKind:e.source.valueKind,changedAtField:e.source.changedAtField,sourceUnit:e.source.sourceUnit});return t.ok?t.value:null}function Ln({control:t,transforms:n,declared:r,unit:a,value:o,onChange:s}){let{t:c}=K();return t===`none`?null:e(`div`,{className:`flex flex-col gap-2`,children:[i(`h3`,{className:`text-[11px] font-medium text-foreground-muted`,children:c(`customize.scalar.stepTransform`)}),t===`choice`&&i(V,{"aria-label":c(`customize.scalar.stepTransform`),value:o.kind,options:n.map(e=>({value:e,label:c(`customize.scalar.transform.${e}`)})),onChange:e=>s(Rn(e.target.value,r))}),o.kind===`invert`||t===`invert`&&o.kind!==`threshold`?e(`label`,{className:`flex items-center gap-2 text-[11px] text-foreground`,children:[i(Oe,{checked:o.kind===`invert`,onChange:e=>s(e.target.checked?{kind:`invert`}:{kind:`identity`})}),c(`customize.scalar.invert`)]}):null,o.kind===`threshold`&&i(Bn,{declared:r,unit:a,value:o,onChange:s}),o.kind===`linear`&&i(Hn,{declared:r,value:o,onChange:s})]})}function Rn(e,t){let n=Pn(t,zn(e));return n===null?e===`invert`?{kind:`invert`}:{kind:`identity`}:Nn(n)}function zn(e){return e===`invert`||e===`threshold`||e===`linear`||e===`enum-map`?e:`identity`}function Bn({declared:t,unit:n,value:r,onChange:a}){let{t:o}=K(),s=n??``,c=Pn(t,`threshold`),l=c?.kind===`threshold`?c.comparisons:[];return e(`div`,{className:`flex flex-col gap-2 text-[11px] text-foreground`,children:[l.length>0&&e(`label`,{className:`flex flex-col gap-1`,children:[o(`customize.scalar.comparison`),i(V,{"aria-label":o(`customize.scalar.comparison`),value:r.comparison,options:l.map(e=>({value:e,label:o(`customize.scalar.comparisonValue.${e}`)})),onChange:e=>{let t=l.find(t=>t===e.target.value);t!==void 0&&a({...r,comparison:t})}})]}),i(Q,{label:o(`customize.scalar.threshold`,{unit:s}),value:r.threshold,onChange:e=>a({...r,threshold:e})}),i(Q,{label:o(`customize.scalar.startDwell`),value:r.startDwellMs/1e3,onChange:e=>a({...r,startDwellMs:e*1e3})}),i(Q,{label:o(`customize.scalar.stopDwell`),value:r.stopDwellMs/1e3,onChange:e=>a({...r,stopDwellMs:e*1e3})})]})}function Vn(e){return e===null||e.kind!==`linear`||e.clampMin===void 0||e.clampMax===void 0?null:{min:e.clampMin,max:e.clampMax}}function Hn({declared:t,value:n,onChange:r}){let{t:a}=K(),o=Vn(Pn(t,`linear`));return e(`div`,{className:`flex flex-col gap-2 text-[11px] text-foreground`,children:[i(Q,{label:a(`customize.scalar.scale`),value:n.scale,onChange:e=>r({...n,scale:e})}),i(Q,{label:a(`customize.scalar.offset`),value:n.offset,onChange:e=>r({...n,offset:e})}),o!==null&&i(Q,{label:a(`customize.scalar.clampMin`),value:n.clampMin??o.min,onChange:e=>r({...n,clampMin:e,clampMax:n.clampMax??o.max})}),o!==null&&i(Q,{label:a(`customize.scalar.clampMax`),value:n.clampMax??o.max,onChange:e=>r({...n,clampMin:n.clampMin??o.min,clampMax:e})})]})}function Q({label:t,value:n,onChange:r}){return e(`label`,{className:`flex flex-col gap-1`,children:[t,i(W,{type:`number`,value:Number.isFinite(n)?n:0,onChange:e=>{let t=Number(e.target.value);Number.isFinite(t)&&r(t)}})]})}var Un=`kind`,Wn=`unit`,Gn=`unit-unknown`,Kn=`compile`,qn=`dwell`,Jn=`no-value`,Yn=`empty`;function Xn(e){return`customize.scalar.previewFailure.${e}`}function Zn(e){return e===`compile`||e===`dwell`||e===`no-value`||e===`empty`}function Qn(e){return e===`identity`||e===`invert`||e===`threshold`||e===`linear`}function $n(e,t){let n=Object.entries(w).find(([t])=>t===e)?.[1];return n===void 0?null:n.targets.find(e=>e.id===t)??null}function er(e,t){return $n(e,t)?.path??null}function tr(e,t){return e.caps.flatMap(e=>{let n=nr(t,e.cap);return e.fields.filter(e=>e.item!==!0).map(t=>({cap:e.cap,path:t.path,kind:t.kind,unit:n}))})}function nr(e,t){if(e===null)return null;let n=Z(e[t],`unit`);return typeof n==`string`&&n.length>0?n:null}function rr(e,t){if(t.kind===`boolean`){let n=k[t.cap];return n===void 0||n!==t.path?null:t.cap===`switch`?e.find(e=>e.kind===`switch`)??e.find(e=>e.kind===`binary`)??null:e.find(e=>e.kind===`binary`)??e.find(e=>e.kind===`field`&&e.valueKinds?.includes(`boolean`))??null}return t.kind===`number`?e.find(e=>e.kind===`numeric`)??e.find(e=>e.kind===`field`&&e.valueKinds?.includes(`number`))??null:t.kind===`string`?e.find(e=>e.kind===`field`&&e.valueKinds?.includes(`string`))??null:null}function ir(e,t,n){let r=$n(e,t);if(r===null||r.cardinality!==`scalar`||n.kind===`enum`)return{ok:!1,reason:Un};let i=rr(r.sources,n);if(i===null)return{ok:!1,reason:Un};if(i.requiredUnit!==void 0&&n.unit===null)return{ok:!1,reason:Gn};if(i.requiredUnit!==void 0&&n.unit!==i.requiredUnit)return{ok:!1,reason:Wn};let a=i.transformKinds.filter(Qn);return a.length===0?{ok:!1,reason:Un}:{ok:!0,valueKind:n.kind,sourceUnit:i.requiredUnit??null,transforms:a,declared:i.transforms}}function ar(e,t){return t.find(t=>t===e)??null}function or({mode:t,modes:n,name:r,onChange:a}){let{t:o}=K();return n.length===0?null:e(`div`,{className:`flex flex-col gap-1`,children:[i(V,{"aria-label":o(`customize.motion.modeFor`,{name:r}),value:t,options:n.map(e=>({value:e,label:o(`customize.motion.mode.${e}`)})),onChange:e=>{let t=ar(e.target.value,n);t!==null&&a(t)}}),i(`p`,{className:`text-[11px] text-foreground-muted`,children:o(`customize.motion.modeLine.${t}`)})]})}function sr(e){return[...new Set(e.accept.map(e=>e.cap))]}function cr(e,t){let n=new Set(sr(t)),r=new Set(t.exclude.map(e=>`${e.addonId}/${e.stableId}`)),i=[],a=[];for(let o of e)r.has(`${o.addonId}/${o.stableId}`)||(mr(o.type,t.deviceTypes)&&o.caps.some(e=>n.has(e))?i.push(o):a.push(o));return{compatible:i,incompatible:a}}function lr(e,t){return e.filter(e=>t.accept.some(t=>t.cap===e.cap&&t.fieldPath===e.fieldPath&&t.valueKind===e.kind))}function ur(e,t){return e.flatMap(e=>{let n=t.find(t=>t.addonId===e.source.addonId&&t.stableId===e.source.stableId);return n===void 0?[]:[n.id]})}function dr(e){if(e.selectedIds.length>e.request.max)return{members:e.previous.map(gr),refused:`max`,needsField:[]};let t=[];return{members:e.selectedIds.flatMap(n=>{let r=e.devices.find(e=>e.id===n);if(r===void 0)return[];let i=fr(r,e);return i===null?(t.push(n),[]):[hr(r,i.cap,i.fieldPath)]}),refused:null,needsField:t}}function fr(e,t){if(t.choiceDeviceId===e.id&&t.choice!==null&&pr(t.request,t.choice))return t.choice;let n=t.previous.find(t=>t.source.addonId===e.addonId&&t.source.stableId===e.stableId);if(n!==void 0&&pr(t.request,n))return n;let r=t.request.accept.length===1?t.request.accept[0]:void 0;return r===void 0?null:{cap:r.cap,fieldPath:r.fieldPath}}function pr(e,t){return e.accept.some(e=>e.cap===t.cap&&e.fieldPath===t.fieldPath)}function mr(e,t){return t.length===0?!0:t.some(t=>t===e)}function hr(e,t,n){return{source:{addonId:e.addonId,stableId:e.stableId},cap:t,fieldPath:n}}function gr(e){return{source:{addonId:e.source.addonId,stableId:e.source.stableId},cap:e.cap,fieldPath:e.fieldPath}}function _r(e,t,n){if(t===null)return e;let r=De(n).get(t);return r===void 0||r.length===0?e:`${e} · ${r}`}function vr(e,t){let n=De(t);return e.map(e=>{let t={id:e.id,name:e.name,type:e.type,parentDeviceId:e.parentDeviceId,...e.location===null?{}:{location:e.location}},r=Ve(n.get(e.id));return r===void 0?t:{...t,detail:r}})}s();function yr(e,t){return e===`pending`||t.kind===`pending`?`pending`:e===`error`||t.kind===`unknown`?`failed`:`answered`}function br(e,t){return e.map(e=>({id:e.id,name:e.name,type:e.type,location:e.location,parentDeviceId:e.parentDeviceId,addonId:e.addonId,stableId:e.stableId,caps:t.get(e.id)??[]}))}function xr(e){return e.caps.flatMap(e=>e.fields.flatMap(t=>t.item===!0?[]:[{cap:e.cap,fieldPath:t.path,kind:t.kind}]))}function Sr(e,t,n){return t?e==null?n:Ft(e,!0):`…`}function Cr({request:t,enabled:r,members:a,onMembersChange:s,onRefuse:l}){let{t:u,i18n:d}=K(),[f,p]=o(null),[m,g]=o(!1),_=H({projection:`slim`}),v=n(()=>_.status===`success`?Mt(_.data):[],[_.status,_.data]),y=ft(n(()=>sr(t),[t]),r),b=n(()=>y.kind===`known`?cr(br(v,y.value),t):{compatible:[],incompatible:[]},[y,v,t]),x=yr(_.status,y),S=ur(a,b.compatible),C=b.compatible.find(e=>e.id===f)??null,w=U({deviceId:C?.id??0},{enabled:C!==null}),T=He({deviceId:C?.id??0},{enabled:C!==null}),E=lr(xr(w.status===`success`?w.data:{caps:[]}),t),D=n(()=>vr(b.compatible.map(wr),v),[b.compatible,v]),O=(e,n,r)=>{if(y.kind!==`known`)return;let i=dr({request:t,devices:b.compatible,selectedIds:e,previous:a,choiceDeviceId:n,choice:r});if(i.refused===`max`){l({code:`max`,max:t.max});return}l(null),s(i.members)};return e(`div`,{"data-testid":`source-selector`,className:`flex flex-col gap-3 sm:grid sm:grid-cols-2 sm:gap-4`,children:[e(`div`,{className:`flex max-h-72 min-h-0 flex-col gap-2 overflow-y-auto sm:max-h-[min(24rem,60vh)]`,children:[i(`h3`,{className:`text-[11px] font-medium text-foreground-muted`,children:u(`helper.pickMembers`)}),_.status===`error`?i(z,{title:u(`customize.picker.devicesFailed`),message:_.error?.message??``}):y.kind===`unknown`?i(z,{title:u(`customize.picker.devicesFailed`),message:y.reason}):i(Fe,{devices:D,listState:x,value:S,selection:`multiple`,groupBy:`location`,onChange:e=>{p(e.find(e=>!S.includes(e))??e.at(-1)??null),O(e,null,null)},noun:`device`,showAll:!0,testId:`helper-member-picker`}),b.incompatible.length>0&&e(`div`,{"data-testid":`helper-incompatible-devices`,children:[e(B,{variant:`ghost`,size:`sm`,className:`h-auto w-full justify-start gap-1 px-0 text-[11px] text-foreground-muted`,onClick:()=>g(e=>!e),children:[i(h,{className:`size-3 transition-transform ${m?`rotate-180`:``}`}),u(`customize.sourceSelector.notCompatibleDevices`,{count:b.incompatible.length})]}),m&&i(`ul`,{className:`mt-1 flex flex-col gap-0.5 pl-4 text-[11px] text-foreground-subtle`,children:b.incompatible.map(e=>i(`li`,{children:e.name},e.id))})]})]}),i(`div`,{className:`flex min-h-0 flex-col gap-2`,children:C===null?i(`p`,{className:`text-[11px] text-foreground-subtle`,children:u(`helper.pickMembersHint`)}):e(c,{children:[i(`h3`,{className:`text-[11px] font-medium text-foreground`,children:C.name}),w.status===`pending`||T.status===`pending`?i(`p`,{role:`status`,className:`text-[11px] text-foreground-subtle`,children:u(`customize.picker.loadingFields`)}):w.status===`error`?i(z,{title:u(`customize.picker.fieldsFailed`),message:w.error?.message??``}):E.length===0?i(`p`,{className:`text-[11px] text-foreground-muted`,children:u(`helper.noUsableValue`)}):i(`ul`,{className:`flex flex-col gap-1`,children:E.map(t=>{let n=a.some(e=>e.source.addonId===C.addonId&&e.source.stableId===C.stableId&&e.cap===t.cap&&e.fieldPath===t.fieldPath),r=T.status===`success`?Z(T.data[t.cap],t.fieldPath):void 0;return i(`li`,{children:e(`label`,{className:`flex flex-wrap items-center gap-2 text-[11px] text-foreground`,children:[i(`input`,{type:`radio`,name:`helper-member-value`,checked:n,"data-testid":`helper-value-${t.cap}.${t.fieldPath}`,onChange:()=>O(Tr(S,C.id),C.id,t)}),i(`span`,{children:J(t.cap,t.fieldPath,d.language)}),i(`span`,{className:`text-foreground-muted`,children:Sr(r,T.status===`success`,u(`helper.valueUnknown`))})]})},`${t.cap}.${t.fieldPath}`)})})]})})]})}function wr(e){return{id:e.id,name:e.name,type:e.type,location:e.location,parentDeviceId:e.parentDeviceId,addonId:e.addonId,stableId:e.stableId,caps:e.caps}}function Tr(e,t){return e.includes(t)?e:[...e,t]}function Er(e,t){let n=j[t]??null;if(n===null)return null;let r=e.caps.find(e=>e.cap===t);return r===void 0?null:r.fields.some(e=>e.path===n)?n:null}function Dr(e,t,n){let r=k[t];if(r===void 0||r!==n)return!1;let i=e.caps.find(e=>e.cap===t);return i===void 0||!i.fields.some(e=>e.path===n)?!1:Er(e,t)!==null}function Or(e,t){return t===void 0?null:e.find(e=>e.addonId===t.addonId&&e.stableId===t.stableId)??null}function kr(e,t,n,r,i){let a=e.find(e=>e.addonId===t.addonId&&e.stableId===t.stableId),o=r===`pulse`?j[n.cap]:void 0;if(a!==void 0&&a.deviceId===t.id&&a.cap===n.cap&&a.fieldPath===n.path&&(r!==`pulse`||a.changedAtField===o))return null;let s=e.filter(e=>!(e.addonId===t.addonId&&e.stableId===t.stableId)),c={deviceId:t.id,addonId:t.addonId,stableId:t.stableId,cap:n.cap,fieldPath:n.path,deviceName:t.name,mode:a?.mode??i,...o===void 0?{}:{changedAtField:o}};return[...s,c]}function Ar(e){return`${e.addonId}/${e.stableId}/${e.cap}.${e.fieldPath}`}function jr(e,t){let n=Ar(t);return e.filter(e=>Ar(e)!==n)}function Mr(e,t,n){let r=Ar(t);return e.map(e=>Ar(e)===r?{...e,mode:n}:e)}function Nr({edges:t,edge:n,onChange:r}){let{t:a}=K();return t.length===0?null:e(`label`,{className:`flex flex-col gap-1 text-[11px] text-foreground`,children:[a(`customize.event.edge`),i(V,{"aria-label":a(`customize.event.edge`),value:n,options:t.map(e=>({value:e,label:a(`customize.event.edgeValue.${e}`)})),onChange:e=>{let n=t.find(t=>t===e.target.value);n!==void 0&&r(n)}})]})}function Pr({label:t,value:n,onChange:r}){return e(`label`,{className:`flex flex-col gap-1 text-[11px] text-foreground`,children:[t,i(W,{type:`number`,"aria-label":t,value:Number.isFinite(n)?n:0,onChange:e=>{let t=Number(e.target.value);Number.isFinite(t)&&t>=0&&r(t)}})]})}function Fr(e){return Object.hasOwn(w,e)}function Ir(e,t){return Fr(e)?w[e].targets.find(e=>e.id===t)??null:null}function Lr(e){let t=Ir(e.cap,e.targetId);if(t===null)return[];if(t.cardinality===`keyedArray`){let t=e.fieldPath;return t===void 0?[]:wn(e.cap,e.targetId).find(e=>e.path===t)?.sources??[]}return t.sources}function Rr(e){return{cap:e.cap,path:e.path,kind:e.kind,unit:e.unit}}function zr(e,t){return t.kind===`number`?e.find(e=>e.kind===`numeric`)??null:t.kind===`enum`||t.kind===`string`?e.find(e=>e.kind===`enum`)??null:null}function Br(e){return e===`identity`||e===`invert`||e===`threshold`||e===`linear`}function Vr(e,t){if(e.requiredUnit!==void 0&&t.unit===null)return{kind:`incompatible`,reason:`unit-unknown`};if(e.requiredUnit!==void 0&&t.unit!==e.requiredUnit)return{kind:`incompatible`,reason:`unit`};if(e.transformKinds.includes(`enum-map`))return{kind:`conversion`,name:`enum-map`};let n=e.transformKinds.filter(Br);return n.length===0?{kind:`incompatible`,reason:`kind`}:n.includes(`identity`)?{kind:`direct`}:n.includes(`threshold`)?{kind:`conversion`,name:`threshold`}:n.includes(`linear`)?{kind:`conversion`,name:`scale`}:n.includes(`invert`)?{kind:`conversion`,name:`invert`}:{kind:`incompatible`,reason:`kind`}}function Hr(e,t){if(e.pickerTargetKind!==void 0){let n=e.pickerTargetKind,r={addonId:`x`,stableId:`y`};return(n===null?{kind:`from`,source:r,cap:t.cap,fieldPath:t.path}:jt(n,{source:r,cap:t.cap,fieldPath:t.path,kind:t.kind}))===null?{kind:`incompatible`,reason:`kind`}:{kind:`direct`}}if(e.acceptAnyField===!0)return t.kind===`enum`?{kind:`incompatible`,reason:`kind`}:{kind:`direct`};let n=Ir(e.cap,e.targetId);if(n?.cardinality===`event`&&t.kind===`boolean`&&rr(Lr(e),Rr(t))!==null)return{kind:`direct`};let r=Lr(e);if(r.length===0)return{kind:`incompatible`,reason:`kind`};let i=n?.cardinality===`keyedArray`&&e.fieldPath!==void 0;if(t.kind===`enum`&&!i)return{kind:`incompatible`,reason:`kind`};let a=i?zr(r,t):rr(r,Rr(t));return a===null?{kind:`incompatible`,reason:`kind`}:Vr(a,t)}function Ur(e,t){let n=E[e];return n===void 0?!1:Object.values(n).includes(t)}function $(){return Object.keys(E)}function Wr(e,t){if(t.kind===`binary`)return e.some(e=>Object.hasOwn(k,e));if(t.kind===`switch`)return e.includes(`switch`);if(t.kind===`numeric`){let n=t.requiredUnit;return n===void 0?e.some(e=>$().includes(e)||e===`numeric-sensor`):n===`W`?e.some(e=>e===`numeric-sensor`||e===`power-meter`||Ur(e,n)):e.some(e=>Ur(e,n))}return t.kind===`field`?e.some(e=>$().includes(e)||e===`numeric-sensor`||e===`battery`):t.kind===`enum`?e.includes(`consumables`)||e.some(e=>$().includes(e)):!1}function Gr(e,t){if(t.pickerTargetKind!==void 0||t.acceptAnyField===!0)return!0;let n=Lr(t);return n.length===0?!1:n.some(t=>Wr(e.caps,t))}function Kr(e,t,n){let r=[],i=[];for(let a of e)a.id!==n&&(Gr(a,t)?r.push(a):i.push(a));return{compatible:r,incompatible:i}}function qr(e,t,n){let r=new Map,i=[];for(let a of e){let e=Hr(t,a),o=J(a.cap,a.path,n),s={cap:a.cap,path:a.path,label:o,currentText:a.currentText,compatibility:e};if(e.kind===`incompatible`){i.push(s);continue}let c=r.get(a.cap)??[];c.push(s),r.set(a.cap,c)}return{groups:[...r.entries()].toSorted(([e],[t])=>e.localeCompare(t)).map(([e,t])=>({cap:e,title:bt(e,n),rows:t.toSorted((e,t)=>e.label.localeCompare(t.label))})),incompatible:i}}function Jr(e){return Ir(e.cap,e.targetId)?.cardinality===`keyedArray`&&e.fieldPath!==void 0}function Yr(e){if(e.pickerTargetKind!==void 0)return[];if(e.acceptAnyField===!0)return $();let t=Lr(e),n=new Set;for(let e of t)if(e.kind===`binary`)for(let e of Object.keys(k))n.add(e);else if(e.kind===`switch`)n.add(`switch`);else if(e.kind===`numeric`){n.add(`numeric-sensor`),n.add(`power-meter`);for(let t of $())(e.requiredUnit===void 0||Ur(t,e.requiredUnit))&&n.add(t)}else if(e.kind===`field`){n.add(`battery`),n.add(`numeric-sensor`);for(let e of $())n.add(e)}else if(e.kind===`enum`){n.add(`consumables`);for(let e of $())n.add(e)}return[...n]}function Xr(e,t,n,r,i){let a=Lr(e);if(a.length===0)return[];let o=tr(t,i).filter(e=>e.kind===`boolean`),s=[];for(let e of o){if(rr(a,e)===null||n===`pulse`&&!Dr(t,e.cap,e.path))continue;let o=i===null?void 0:Z(i[e.cap],e.path);s.push({cap:e.cap,path:e.path,kind:`boolean`,unit:null,currentText:Ft(o,r)})}return s}function Zr(e,t,n,r,i,a=null){return a===null?e.pickerTargetKind!==void 0&&i!==null?Pt(i,t,r,e.pickerTargetKind).map(e=>({cap:e.cap,path:e.path,kind:e.kind,unit:null,currentText:Ft(e.value,n)})):(Jr(e)?En(t,r):tr(t,r)).map(e=>{let t=r===null?void 0:Z(r[e.cap],e.path);return{cap:e.cap,path:e.path,kind:e.kind,unit:e.unit,currentText:Ft(t,n)}}):Xr(e,t,a,n,r)}s();function Qr(e,t){return e===`pending`||t.kind===`pending`?`pending`:e===`error`?`failed`:`answered`}function $r(e,t){return e.map(e=>({id:e.id,name:e.name,type:e.type,location:e.location,parentDeviceId:e.parentDeviceId,addonId:e.addonId,stableId:e.stableId,caps:t.get(e.id)??[]}))}function ei(e,t){return e.kind===`direct`?t(`customize.sourceSelector.direct`):e.kind===`conversion`?t(`customize.sourceSelector.withConversion`,{name:t(`customize.scalar.transform.${ti(e.name)}`)}):``}function ti(e){return e===`scale`?`linear`:e===`enum-map`?`enumMap`:e}function ni(e){return e.kind===`members`?i(Cr,{...e}):i(ri,{...e})}function ri(t){let{t:r,i18n:s}=K(),[l,u]=o(`device`),[d,f]=o(!1),[p,m]=o(!1),g=H({projection:`slim`}),_=n(()=>g.status===`success`?Mt(g.data):[],[g.status,g.data]),v=ft(n(()=>Yr(t.destination),[t.destination]),t.enabled),{compatible:y,incompatible:b}=n(()=>v.kind===`known`?Kr($r(_,v.value),t.destination,t.hostId):{compatible:[],incompatible:[]},[v,_,t.destination,t.hostId]),x=Qr(g.status,v),S=t.device?.id??0,C=U({deviceId:S}),w=He({deviceId:t.device===null?0:S}),T=C.status===`success`?C.data:{caps:[]},E=t.kind===`event`?t.shape:null,D=Zr(t.destination,T,w.status===`success`,w.status===`success`?w.data:null,t.device,E),O=t.kind===`event`?t.devicePickerTestId:`source-selector-device-picker`,{groups:k,incompatible:A}=qr(D,t.destination,s.language),j=ai(t,T,w.status===`success`?w.data:null),ee=e=>{let n=e[0];if(n===void 0){t.onDeviceChange(null),t.kind!==`event`&&t.onFieldChange(null);return}if(t.device?.id===n)return;let r=_.find(e=>e.id===n)??null;t.onDeviceChange(r),t.kind!==`event`&&t.onFieldChange(null),u(`value`)},M=t.kind===`event`?D[0]??null:null,N=t.kind===`event`?t:null;a(()=>{if(N===null||N.device===null||M===null)return;let e=kr(N.picked,N.device,{cap:M.cap,path:M.path},N.shape,N.sourceModes[0]??`in-addition`);e!==null&&N.onPickedChange(e)},[N,M]);let P=n(()=>vr(y,_),[y,_]),te=e(`div`,{className:`flex max-h-72 min-h-0 flex-col gap-2 overflow-y-auto sm:max-h-[min(24rem,60vh)]`,children:[i(`h3`,{className:`text-[11px] font-medium text-foreground-muted`,children:r(`customize.sourceSelector.pickDevice`,{title:t.destination.title})}),g.status===`error`?i(z,{title:r(`customize.picker.devicesFailed`),message:g.error?.message??``}):i(Fe,{devices:P,listState:x,value:t.device===null?[]:[t.device.id],selection:`single`,groupBy:`location`,onChange:ee,noun:`device`,showAll:!0,testId:O}),b.length>0&&e(`div`,{"data-testid":`source-incompatible-devices`,children:[e(B,{variant:`ghost`,size:`sm`,className:`h-auto w-full justify-start gap-1 px-0 text-[11px] text-foreground-muted`,onClick:()=>f(e=>!e),children:[i(h,{className:`size-3 transition-transform ${d?`rotate-180`:``}`}),r(`customize.sourceSelector.notCompatibleDevices`,{count:b.length})]}),d&&i(`ul`,{className:`mt-1 flex flex-col gap-0.5 pl-4 text-[11px] text-foreground-subtle`,children:b.map(e=>i(`li`,{children:e.name},e.id))})]})]}),ne=t.kind===`event`&&t.picked.length>0?i(`ul`,{"data-testid":`source-picked-list`,className:`flex flex-col gap-2`,children:t.picked.map(n=>e(`li`,{className:`flex flex-col gap-1 text-xs`,children:[e(`span`,{className:`text-foreground`,children:[n.deviceName,` · `,J(n.cap,n.fieldPath,s.language)]}),t.shape===`span`&&n.mode!==void 0&&i(or,{mode:n.mode,modes:t.sourceModes,name:n.stableId,onChange:e=>t.onPickedChange(Mr(t.picked,n,e))}),i(B,{variant:`ghost`,size:`sm`,onClick:()=>t.onPickedChange(jr(t.picked,n)),children:r(`customize.event.clear`)})]},`${n.addonId}/${n.stableId}/${n.cap}.${n.fieldPath}`))}):null,F=t.kind===`event`?e(`div`,{className:`flex flex-col gap-2`,children:[t.shape===`pulse`&&e(c,{children:[i(Nr,{edges:t.edges,edge:t.edge,onChange:t.onEdgeChange}),e(`label`,{className:`flex flex-col gap-1 text-[11px] text-foreground`,children:[r(`customize.event.debounce`),i(W,{type:`number`,"aria-label":r(`customize.event.debounce`),value:Number.isFinite(t.debounceSec)?t.debounceSec:0,onChange:e=>{let n=Number(e.target.value);Number.isFinite(n)&&n>=0&&t.onDebounceSecChange(n)}})]})]}),t.shape===`span`&&e(c,{children:[i(Pr,{label:r(`customize.event.timeout`),value:t.timeoutSec,onChange:t.onTimeoutSecChange}),t.cooldownSec!==null&&i(Pr,{label:r(`customize.event.cooldown`),value:t.cooldownSec,onChange:t.onCooldownSecChange})]})]}):null,re=e(`div`,{className:`flex min-h-0 flex-col gap-2`,children:[ne,t.device!==null&&i(`h3`,{className:`text-[11px] font-medium text-foreground`,children:t.device.name}),t.device===null?i(`p`,{className:`text-[11px] text-foreground-subtle`,children:r(`customize.sourceSelector.noDevice`)}):C.status===`pending`?i(`p`,{role:`status`,className:`text-[11px] text-foreground-subtle`,children:r(`customize.picker.loadingFields`)}):C.status===`error`?i(z,{title:r(`customize.picker.fieldsFailed`),message:C.error?.message??``}):e(`div`,{className:`flex flex-col gap-3`,children:[t.kind===`event`?i(si,{fields:M===null?[]:[M],language:s.language,emptyLabel:r(`customize.sourceSelector.noStateField`)}):null,t.kind!==`event`&&k.map(n=>e(`section`,{"aria-label":n.title,children:[i(`h4`,{className:`text-[10px] font-medium uppercase tracking-wide text-foreground-muted`,children:n.title}),i(`ul`,{className:`mt-1 flex flex-col gap-1`,children:n.rows.map(n=>i(`li`,{children:e(`label`,{className:`flex flex-wrap items-center gap-2 text-[11px] text-foreground`,children:[i(`input`,{type:`radio`,name:`source-value`,checked:t.field?.cap===n.cap&&t.field.path===n.path,"data-testid":`source-value-${n.cap}.${n.path}`,onChange:()=>{if(t.onFieldChange({cap:n.cap,path:n.path}),t.kind===`formula`)return;let e=ii(t,T,w.status===`success`?w.data:null,n.cap,n.path);e!==null&&e.ok&&t.onTransformChange(Mn(e))}}),i(`span`,{children:n.label}),i(`span`,{className:`text-foreground-muted`,children:n.currentText}),i(`span`,{className:`text-foreground-subtle`,children:ei(n.compatibility,r)})]})},`${n.cap}.${n.path}`))})]},n.cap)),t.kind!==`event`&&A.length>0&&e(`div`,{"data-testid":`source-incompatible-values`,children:[e(B,{variant:`ghost`,size:`sm`,className:`h-auto w-full justify-start gap-1 px-0 text-[11px] text-foreground-muted`,onClick:()=>m(e=>!e),children:[i(h,{className:`size-3 transition-transform ${p?`rotate-180`:``}`}),r(`customize.sourceSelector.otherValues`)]}),p&&i(`ul`,{className:`mt-1 flex flex-col gap-1 pl-4 text-[11px] text-foreground-subtle`,children:A.map(t=>e(`li`,{children:[t.label,` · `,t.currentText]},`${t.cap}.${t.path}`))})]})]}),t.kind===`scalar`&&j!==null&&j.ok&&i(Ln,{control:jn(j.transforms),transforms:j.transforms,declared:j.declared,unit:j.sourceUnit,value:t.transform,onChange:t.onTransformChange}),t.kind===`keyed`&&j!==null&&j.ok&&t.field!==null&&i(Ln,{control:jn(j.transforms),transforms:j.transforms,declared:j.declared,unit:j.sourceUnit,value:t.transform,onChange:t.onTransformChange}),F]});return e(`div`,{"data-testid":`source-selector`,className:`flex flex-col gap-3 sm:grid sm:grid-cols-2 sm:gap-4`,children:[i(`div`,{className:l===`value`?`hidden sm:block`:void 0,children:te}),e(`div`,{className:l===`device`?`hidden sm:block`:void 0,children:[l===`value`&&i(B,{variant:`ghost`,size:`sm`,className:`mb-2 sm:hidden`,onClick:()=>u(`device`),children:r(`customize.sourceSelector.backToDevices`)}),re]})]})}function ii(e,t,n,r,i){if(e.kind===`keyed`){let a=t.caps.flatMap(e=>e.fields.filter(e=>e.item!==!0).map(t=>({cap:e.cap,path:t.path,kind:t.kind,unit:oi(n,e.cap),enumValues:t.enumValues??[]}))).find(e=>e.cap===r&&e.path===i);if(a===void 0)return null;let o=kn(e.destination.cap,e.destination.targetId,e.fieldPath,a);return!o.ok||o.mode!==`scalar`?null:o.fit}let a=t.caps.flatMap(e=>e.fields.filter(e=>e.item!==!0).map(t=>({cap:e.cap,path:t.path,kind:t.kind,unit:oi(n,e.cap)}))).find(e=>e.cap===r&&e.path===i&&(e.kind===`boolean`||e.kind===`number`||e.kind===`string`));if(a===void 0)return null;let o=ir(e.destination.cap,e.destination.targetId,a);return o.ok?o:null}function ai(e,t,n){return e.kind===`formula`||e.kind===`event`||e.device===null||e.field===null?null:ii(e,t,n,e.field.cap,e.field.path)}function oi(e,t){if(e===null)return null;let n=e[t]?.unit;return typeof n==`string`&&n.length>0?n:null}function si({fields:t,language:n,emptyLabel:r}){return t.length===0?i(`p`,{className:`text-[11px] text-foreground-subtle`,children:r}):i(`ul`,{className:`flex flex-col gap-1`,children:t.map(t=>e(`li`,{"data-testid":`source-declared-field`,className:`text-[11px] text-foreground`,children:[i(`span`,{className:`font-medium`,children:bt(t.cap,n)}),` · `,J(t.cap,t.path,n),` `,i(`span`,{className:`text-foreground-muted`,children:t.currentText})]},`${t.cap}.${t.path}`))})}function ci(e,t,n,r,i,a){let o=Pt(e,r,i,a).find(e=>e.cap===t&&e.path===n);return o===void 0||o.source===null?null:{device:e,ref:{addonId:e.addonId,stableId:e.stableId},cap:o.cap,path:o.path,kind:o.kind,source:o.source,value:o.value}}s();var li=new Map;function ui(e,t,n,r){return e.kind===`from`?`${t.get(L(e.source))??r} · ${J(e.cap,e.fieldPath,n)}`:``}function di({open:t,title:n,fieldPath:r,fieldLabel:a,sourceNames:s=li,initial:c,selfNative:l=null,onClose:u,onSave:d}){let{t:f,i18n:p}=K(),[m,h]=o(c.kind===`expression`?c:{kind:`expression`,expr:`null`,bindings:{}}),[g,_]=o(`idle`),[v,y]=o(null),[b,x]=o(null),S=U({deviceId:v?.id??0}),C=He({deviceId:v?.id??0}),w=S.status===`success`?S.data:{caps:[]},T=te(m.expr,m.bindings),E=Object.keys(m.bindings);return i(tt,{open:t,onOpenChange:e=>{e||u()},children:e(Je,{width:`lg`,scroll:`body`,placement:`sheet-on-mobile`,"data-testid":`formula-dialog`,children:[i(it,{children:i(at,{children:n})}),e(Ze,{className:`flex flex-col gap-2`,children:[i(`span`,{className:`text-xs text-foreground`,children:a??J(``,r,p.language)}),i(pn,{label:f(`compositionEditor.formulaFor`,{path:a??r}),value:m.expr,bindings:E,onChange:e=>h({...m,expr:e})}),i(`ul`,{className:`flex flex-col gap-0.5 text-[11px]`,children:Object.entries(m.bindings).map(([t,n])=>e(`li`,{className:`flex flex-wrap items-center gap-2`,children:[i(`span`,{className:`font-mono`,children:t}),i(`span`,{children:n.kind===`from`?ui(n,s,p.language,f(`customize.fieldsCard.unknownDevice`)):JSON.stringify(n.value)}),i(B,{size:`sm`,variant:`ghost`,"aria-label":f(`compositionEditor.removeBinding`,{name:t}),onClick:()=>{let{[t]:e,...n}=m.bindings;h({...m,bindings:n})},children:`×`})]},t))}),e(`div`,{className:`flex flex-wrap gap-2`,children:[l!==null&&i(B,{size:`sm`,variant:`outline`,"data-testid":`formula-self-native`,onClick:()=>{let e=Object.keys(m.bindings),t=m.bindings.v===void 0?`v`:cn(e);h({...m,bindings:{...m.bindings,[t]:{kind:`from`,source:l.source,cap:l.cap,fieldPath:l.fieldPath}}})},children:f(`customize.override.selfNative`)}),i(B,{size:`sm`,variant:`outline`,onClick:()=>_(`add-binding`),children:f(`compositionEditor.addSource`)})]}),T!==null&&i(`p`,{role:`alert`,className:`text-xs text-danger`,children:T}),i(yn,{source:m}),g===`add-binding`&&e(`div`,{className:`flex flex-col gap-2 border border-border rounded-md p-2`,children:[i(ni,{kind:`formula`,enabled:t,hostId:-1,destination:{cap:`formula`,targetId:`binding`,title:f(`compositionEditor.addSource`),acceptAnyField:!0},device:v,field:b,onDeviceChange:y,onFieldChange:x}),e(`div`,{className:`flex flex-wrap gap-2`,children:[i(B,{variant:`ghost`,size:`sm`,onClick:()=>_(`idle`),children:f(`customize.picker.cancel`)}),i(B,{size:`sm`,disabled:v===null||b===null,onClick:()=>{if(v===null||b===null)return;let e=ci(v,b.cap,b.path,w,C.status===`success`?C.data:null,null);if(e===null)return;let t=cn(E);h({...m,bindings:{...m.bindings,[t]:{kind:`from`,source:e.ref,cap:e.cap,fieldPath:e.path}}}),y(null),x(null),_(`idle`)},children:f(`compositionEditor.addSource`)})]})]})]}),e(We,{children:[i(B,{variant:`ghost`,onClick:u,children:f(`compositionEditor.cancel`)}),i(B,{"data-testid":`formula-dialog-save`,disabled:T!==null,onClick:()=>{d(m),u()},children:f(`compositionEditor.save`)})]})]})})}s();function fi({open:t,from:n,initialTo:r,onClose:a,onSave:s}){let{t:c}=K(),l=N(n),[u,d]=o(r??l[0]??``),f=l.includes(u)?u:l[0]??``;return i(tt,{open:t,onOpenChange:e=>{e||a()},children:e(Je,{width:`sm`,scroll:`body`,placement:`sheet-on-mobile`,"data-testid":`convert-unit-dialog`,children:[i(it,{children:i(at,{children:c(`customize.override.convertTitle`)})}),e(Ze,{className:`flex flex-col gap-2`,children:[i(`p`,{className:`text-xs text-foreground`,children:c(`customize.override.convertSummary`,{from:n,to:f})}),l.length>1&&i(V,{"aria-label":c(`customize.override.targetUnit`),value:f,onChange:e=>d(e.target.value),options:l.map(e=>({value:e,label:e}))})]}),e(We,{children:[i(B,{variant:`ghost`,onClick:a,children:c(`compositionEditor.cancel`)}),i(B,{"data-testid":`convert-unit-publish`,disabled:f===``||f===n,onClick:()=>{s(f),a()},children:c(`customize.override.publish`)})]})]})})}function pi(e,t,n,r,i){return{kind:`expression`,expr:`convert(v, ${JSON.stringify(e)}, ${JSON.stringify(t)})`,bindings:{v:{kind:`from`,source:n,cap:r,fieldPath:i}}}}function mi(e){return{kind:`expression`,expr:JSON.stringify(e),bindings:{}}}function hi(e,t,n,r,i,a){let o=X(e,n)??{kind:`fields`,cap:n,fields:{}},s={...o.fields,[r]:i},c=Object.fromEntries(Object.entries(s).filter(([e])=>!a.includes(e)));return Y(e,t,{...o,fields:c})}function gi(e,t,n,r){let i=y(t,n);if(i===null||e===null)return[];let a=e.fields[i];return a?.kind===`expression`&&a.expr===JSON.stringify(r)&&i!==n?[i]:[]}function _i(e,t,n,r){let i=X(e,n);if(i===null)return e;let a=new Set(r),o=Object.fromEntries(Object.entries(i.fields).filter(([e])=>!a.has(e)));return Object.keys(o).length===0?Et(e,n):Y(e,t,{...i,fields:o})}s();function vi({deviceId:t,self:n,selfName:r,cap:a,fieldPath:s,label:l,unit:u,valueKind:d=null,handle:f,names:p,toFill:m=!1}){let{t:h,i18n:g}=K(),_=At(),[v,b]=o(`closed`),x=q(f.state),S=X(x,a),C=S?.fields[s]??null,w=C===null?null:we(C),T=u===void 0?[]:N(u),E=new Map(p);E.set(L(n),r);let D=()=>b(`closed`),O=(e,t)=>{f.save(hi(x,n,a,s,e,t))},k=()=>w?.kind===`convert-unit`?gi(S,a,s,w.to):[];return e(`div`,{className:`flex flex-col gap-1 border-t border-border pt-2 first:border-t-0 first:pt-0`,"data-testid":`override-row-${a}-${s}`,children:[e(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[i(`span`,{className:`text-xs text-foreground`,children:l}),m&&C===null&&i(Ee,{variant:`warning`,children:h(`compositionEditor.toFill`)})]}),e(`div`,{className:`flex flex-wrap items-baseline justify-between gap-2`,children:[i(`span`,{className:`text-xs text-foreground`,children:h(`customize.scalar.effective`)}),i(Gt,{target:{deviceId:t,cap:a,path:s}})]}),w===null?i(`p`,{className:`text-xs text-foreground-subtle`,children:h(`customize.override.none`)}):i(xi,{entry:w,names:E,language:g.language,unknownDevice:h(`customize.fieldsCard.unknownDevice`)}),i(`div`,{className:`flex flex-wrap gap-2`,children:w===null?i(bi,{cap:a,fieldPath:s,saving:f.saving,convert:T.length>0,onFrom:()=>b(`from`),onFormula:()=>b(`formula`),onConvert:()=>b(`convert`)}):e(c,{children:[i(B,{variant:`outline`,size:`sm`,disabled:f.saving,onClick:()=>b(yi(w)),children:h(`customize.scalar.change`)}),i(B,{variant:`ghost`,size:`sm`,disabled:f.saving,onClick:()=>{if(x===null)return;let e=_i(x,n,a,[s,...k()]);_(h(`customize.fieldsCard.removeField`,{field:l}),e===null).then(t=>{t&&f.save(e)})},children:h(`customize.scalar.remove`)})]})}),i(tt,{open:v===`from`,onOpenChange:e=>{e||D()},children:e(Je,{width:`lg`,scroll:`body`,placement:`sheet-on-mobile`,children:[i(it,{children:i(at,{children:l})}),i(Ze,{children:v===`from`&&i(Si,{title:h(`customize.override.fromDevice`),hostId:t,valueKind:d??(u===void 0?null:`number`),onCancel:D,onConfirm:e=>{O(e.source,k()),D()}})})]})}),v===`formula`&&i(di,{open:!0,title:h(`compositionEditor.formulaFor`,{path:l}),fieldPath:s,fieldLabel:l,sourceNames:E,initial:C?.kind===`expression`?C:{kind:`expression`,expr:`v`,bindings:{}},selfNative:{source:n,cap:a,fieldPath:s},onClose:D,onSave:e=>{O(e,k()),D()}}),v===`convert`&&u!==void 0&&i(fi,{open:!0,from:u,initialTo:w?.kind===`convert-unit`?w.to:null,onClose:D,onSave:e=>{let t=y(a,s),r=hi(x,n,a,s,pi(u,e,n,a,s),[]),i=t===null?r:hi(r,n,a,t,mi(e),[]);f.save(i),D()}})]})}function yi(e){return e.kind===`convert-unit`?`convert`:e.kind===`from`?`from`:`formula`}function bi({cap:t,fieldPath:n,saving:r,convert:a,onFrom:o,onFormula:s,onConvert:c}){let{t:l}=K();return e(nt,{children:[i($e,{className:`h-7 px-2.5 text-xs rounded-md border border-border bg-surface text-foreground`,disabled:r,"data-testid":`override-add-${t}-${n}`,children:l(`customize.override.add`)}),e(Ye,{children:[i(Ge,{onClick:o,children:l(`customize.override.fromDevice`)}),i(Ge,{onClick:s,children:l(`customize.override.formula`)}),a&&i(Ge,{onClick:c,children:l(`customize.override.convertUnit`)})]})]})}function xi({entry:t,names:n,language:r,unknownDevice:a}){let{t:o}=K();return t.kind===`companion`?i(`span`,{className:`text-xs text-foreground`,children:o(`customize.fieldsCard.now`)}):t.kind===`convert-unit`?e(`p`,{className:`flex flex-wrap items-center gap-1 text-xs text-foreground`,children:[i(`span`,{children:o(`customize.override.convertSummary`,{from:t.from,to:t.to})}),i(Ee,{children:o(`customize.override.convertUnit`)})]}):t.kind===`formula`?e(`p`,{className:`flex flex-wrap items-center gap-1 text-xs text-foreground`,children:[i(`span`,{className:`break-words`,children:Xt(t.expr,t.bindings,n,r,a)}),i(Ee,{children:o(`compositionEditor.formula`)})]}):e(`div`,{className:`flex flex-col gap-0.5`,children:[t.sources.map(e=>{let t=L(e.source);return i(`span`,{className:`text-xs text-foreground`,children:o(`customize.fieldsCard.from`,{name:n.get(t)??a,field:J(e.cap,e.fieldPath,r)})},`${t}:${e.cap}:${e.fieldPath}`)}),t.aggregate!==null&&i(`span`,{className:`text-xs text-foreground-muted`,children:o(qt(t.aggregate))})]})}function Si({title:t,hostId:n,valueKind:r,onCancel:a,onConfirm:s}){let{t:c}=K(),[l,u]=o(null),[d,f]=o(null),p=U({deviceId:l?.id??0}),m=He({deviceId:l?.id??0}),h=p.status===`success`?p.data:{caps:[]};return e(`div`,{className:`flex flex-col gap-2`,children:[i(ni,{kind:`formula`,enabled:!0,hostId:n,destination:{cap:`override`,targetId:`field`,title:t,pickerTargetKind:r},device:l,field:d,onDeviceChange:u,onFieldChange:f}),e(`div`,{className:`flex flex-wrap gap-2`,children:[i(B,{variant:`ghost`,onClick:a,children:c(`customize.picker.cancel`)}),i(B,{disabled:l===null||d===null,onClick:()=>{if(l===null||d===null)return;let e=ci(l,d.cap,d.path,h,m.status===`success`?m.data:null,r);e!==null&&s(e)},children:c(`customize.override.save`)})]})]})}function Ci(e,t){return ee(e,t)}function wi({deviceId:t,selfName:n,card:r,handle:a,names:o}){let{t:s,i18n:c}=K(),l=At(),u=q(a.state),d=c.language,f=bt(r.cap,d),p=new Set(Object.keys(r.entries)),m=Tt(r.cap,p),h=()=>{if(u===null)return;let e=Et(u,r.cap);l(s(`customize.fieldsCard.removeWhat`,{cap:f}),e===null).then(t=>{t&&a.save(e)})},g=(e,s)=>i(vi,{deviceId:t,self:a.target,selfName:n,cap:r.cap,fieldPath:e,label:J(r.cap,e,d),unit:Ci(r.cap,e),handle:a,names:o,toFill:s},e);return e(`div`,{className:`flex flex-col gap-3 px-3 py-2 sm:px-4`,children:[m.map(e=>g(e,!0)),Object.keys(r.entries).filter(e=>!m.includes(e)).map(e=>g(e,!1)),i(`div`,{className:`flex flex-wrap gap-2`,children:i(B,{variant:`ghost`,size:`sm`,disabled:a.saving,onClick:h,children:s(`customize.fieldsCard.removeFeature`,{cap:f})})})]})}s();function Ti({device:e,handle:t,skipCaps:r}){let{i18n:a}=K(),o=q(t.state),s=mt(o!==null),l=n(()=>s.kind===`known`?new Map(s.value.map(e=>[L({addonId:e.addonId,stableId:e.stableId}),e.name])):new Map,[s]);if(o===null)return null;let{model:u}=C(o),d=u.cards.filter(e=>e.card.cardKind===`fields`&&!r.has(e.card.cap));return d.length===0?null:i(c,{children:d.map(n=>{if(n.card.cardKind!==`fields`)return null;let r=n.card,o=bt(r.cap,a.language);return i(ut,{id:r.cap,icon:Te,title:o,testId:`fields-card-${r.cap}`,children:i(wi,{deviceId:e.id,selfName:e.name,card:r,handle:t,names:l})},r.cap)})})}function Ei(){return Object.entries(w).flatMap(([e,t])=>t.targets.filter(e=>e.cardinality===`event`).map(t=>({cap:e,pulse:Di(t),span:Oi(t)})).filter(e=>e.pulse!==null||e.span!==null))}function Di(e){return e.shape===`pulse`?e.timestampPath===void 0||e.counterPath===void 0||e.debounceMs===void 0||e.edges===void 0||e.defaultEdge===void 0||!e.edges.includes(e.defaultEdge)?null:{id:e.id,timestampPath:e.timestampPath,counterPath:e.counterPath,debounceMs:e.debounceMs,edges:e.edges,defaultEdge:e.defaultEdge,apply:`add`,deviceTypes:e.deviceTypes}:null}function Oi(e){return e.shape!==`span`||e.timeoutMs===void 0||e.applyAuthority?.kind!==`camera-sensors`?null:{id:e.id,timeoutMs:e.timeoutMs,cooldownMs:e.cooldownMs??null,sourceModes:e.sourceModes??[`in-addition`],deviceTypes:e.deviceTypes}}function ki(e,t){return e===`Native`||e.startsWith(`Native`)?`customize.assign.native`:e===`pending`?`customize.event.checking`:e===`unknown`||e===`unreadable`?`customize.event.badge.unavailable`:`customize.event.badge.${t}`}function Ai(e){return new Set(e.filter(e=>{let t=e.nativeAddonId?.trim()??``;return t!==``&&t!==`composer`}).map(e=>e.capName))}function ji(e,t){return{cap:e,apply:t.apply,authority:t.applyAuthority?.kind??`composition-claim`,nativeItemsReadOnly:t.nativeItems===`read-only`}}function Mi(e){return e.kind===`known`?null:e}function Ni(e,t){return e.composable.kind===`known`?e.composable.value.has(t)?{kind:`present`,mode:`add`}:{kind:`absent`}:e.composable}function Pi(e){if(e.deviceType!==M.Camera)return{kind:`absent`};switch(e.cameraSensors){case`pending`:return{kind:`pending`};case`unknown`:return{kind:`unknown`,reason:G.t(`helpers.assignmentAvailability.sensorsUnchecked`)};case`absent`:return{kind:`absent`};case`present`:return{kind:`present`,mode:`add`}}}function Fi(e,t){if(e.authority===`camera-sensors`)return Pi(t);let n=Mi(t.nativeCaps);if(n!==null)return n;let r=t.nativeCaps.kind===`known`?t.nativeCaps.value:new Set;return e.nativeItemsReadOnly?Ni(t,e.cap):r.has(e.cap)?{kind:`absent`}:Ni(t,e.cap)}s();var Ii=new Map;function Li({handle:t,cap:n,fieldPath:r,itemKey:a,label:s,testId:l,sourceNames:u=Ii}){let{t:d,i18n:f}=K(),p=J(n,r,f.language),[m,h]=o(!1),g=q(t.state),_=X(g,n),v=a===void 0?_?.fields[r]:_?.items?.[a]?.fields[r];if(v===void 0)return null;let y=async e=>{if(_===null)return;let n;if(a===void 0)n={..._,fields:{..._.fields,[r]:e}};else{let t=_.items?.[a];if(t===void 0)return;n={..._,items:{..._.items,[a]:{...t,fields:{...t.fields,[r]:e}}}}}await t.save(Y(g,t.target,n))};return e(c,{children:[i(B,{variant:`ghost`,size:`sm`,"data-testid":l??`formula-entry-${n}-${r}`,onClick:()=>h(!0),children:s??d(`compositionEditor.formula`)}),i(di,{open:m,title:d(`compositionEditor.formulaFor`,{path:p}),fieldPath:r,fieldLabel:p,sourceNames:u,initial:v,onClose:()=>h(!1),onSave:e=>void y(e)})]})}function Ri({name:t,detail:n,meta:r,value:a,shown:o,readout:s,problem:c,onRemove:l,removeLabel:d,busy:p=!1}){return e(`li`,{className:`${u} grid grid-cols-[minmax(0,1fr)_auto] items-center gap-x-3 gap-y-1 sm:grid-cols-[minmax(0,2fr)_minmax(0,1fr)_minmax(0,1fr)_1.75rem]`,children:[e(`div`,{className:`min-w-0`,children:[i(`div`,{className:`text-xs text-foreground break-words`,children:t}),n!==null&&i(`div`,{className:`text-[11px] text-foreground-subtle break-words`,children:n}),c!==void 0&&i(`div`,{role:`alert`,className:`text-[11px] text-warning break-words`,children:c})]}),i(`div`,{className:`row-start-2 col-start-1 text-[11px] text-foreground-subtle empty:hidden sm:row-start-auto sm:col-start-auto sm:empty:block`,children:r}),i(`div`,{className:`row-start-3 col-start-1 empty:hidden sm:row-start-auto sm:col-start-auto sm:empty:block`,children:s===void 0?o===void 0?i(Gt,{target:a}):o!==null&&i(Kt,{display:o}):s}),i(`div`,{className:`row-start-1 col-start-2 flex justify-end sm:row-start-auto sm:col-start-auto`,children:l!==void 0&&i(Qe,{icon:f,variant:`ghost`,size:`sm`,"aria-label":d,disabled:p,onClick:l})})]})}function zi(e){return e.toLowerCase().normalize(`NFD`).replace(/[\u0300-\u036f]/g,``).replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``).slice(0,48)}function Bi({preview:t}){let{t:n}=K();return e(`p`,{className:`text-[11px] text-foreground`,"data-testid":`scalar-preview`,children:[e(`span`,{className:`text-foreground-muted`,children:[n(`customize.scalar.preview`),` `]}),t.kind===`pending`&&i(`span`,{children:`…`}),t.kind===`value`&&i(`span`,{children:t.text}),t.kind===`dwell`&&i(`span`,{children:n(`customize.scalar.previewDwell`,{value:t.sourceText,level:t.active?n(`customize.scalar.thresholdActive`):n(`customize.scalar.thresholdClear`),countdown:n(t.active?`customize.scalar.runningIn`:`customize.scalar.stopsAfter`,{seconds:Math.round(t.countdownMs/1e3)})})}),t.kind===`failed`&&i(`span`,{title:Zn(t.reason)?n(Xn(t.reason)):t.reason,className:`text-warning`,children:`?`})]})}function Vi(e){return!e.ok||e.mode===`enum`?{kind:`identity`}:Mn(e.fit)}function Hi(e,t){return Object.fromEntries(e.map(e=>[e,t.includes(e)?e:null]))}function Ui(e){let t={draft:{kind:`keyedArray`,cap:e.cap,targetId:e.targetId,key:e.key,label:e.label.trim(),fieldPath:e.fieldPath,source:{addonId:e.source.addonId,stableId:e.source.stableId,cap:e.source.cap,fieldPath:e.source.fieldPath},transform:e.transform},sourceValueKind:e.source.valueKind,sourceUnit:null,literals:e.literals},n=A({cap:e.cap,targetId:e.targetId,device:e.device,apply:e.apply,items:[t]});return n.ok?n.value:null}function Wi(e,t,n){return(wn(e,t).find(e=>e.path===n)?.literals??[]).map(e=>e.path)}function Gi(e,t,n,r){return wn(e,t).find(e=>e.path===n)?.literals?.find(e=>e.path===r)?.values??[]}function Ki(e,t,n){return An(e,t,n)}s();var qi={level:`customize.keyed.field.level`,"remaining.value":`customize.keyed.field.remaining`,status:`customize.keyed.field.status`};function Ji(t){let{t:n}=K(),r=t.mode===`change`?n(`customize.keyed.changeTitle`):n(`customize.keyed.addTitle`);return i(tt,{open:t.open,onOpenChange:e=>e?void 0:t.onClose(),children:e(Je,{width:`xl`,placement:`sheet-on-mobile`,scroll:`body`,"aria-label":r,children:[i(it,{children:i(at,{children:r})}),t.open&&i(Yi,{...t,heading:r})]})})}function Yi(t){let{t:r,i18n:a}=K(),s=Tn(t.cap,t.targetId),l=wn(t.cap,t.targetId),[u,d]=o(t.seed?.label??``),[f,p]=o(t.seed?.key??``),[m,h]=o(t.mode===`change`),[g,_]=o(t.seed?.fieldPath??l[0]?.path??``),[v,y]=o(()=>Object.fromEntries(s.map(e=>[e.path,t.seed?.literals.find(t=>t.path===e.path)?.value??e.defaultValue]))),[b,x]=o(t.seed?.literals.find(e=>e.path===`remaining.kind`)?.value??Gi(t.cap,t.targetId,`remaining.value`,`remaining.kind`)[0]??``),S=H({projection:`slim`}),C=n(()=>S.status===`success`?Mt(S.data):[],[S.status,S.data]),w=ra(t.seed,C),[T,E]=o(null),[D,O]=o(!1);!D&&w!==null&&(E(w),O(!0));let k=U({deviceId:T?.id??0}),A=He({deviceId:T?.id??0}),j=En(k.status===`success`?k.data:{caps:[]},A.status===`success`?A.data:null),[ee,M]=o(t.seed===null?null:`${t.seed.source.cap}.${t.seed.source.fieldPath}`),[N,P]=o(t.seed?.transform??{kind:`identity`}),[te,ne]=o(()=>t.seed?.transform.kind===`enum-map`?t.seed.transform.mapping:{}),F=j.find(e=>`${e.cap}.${e.path}`===ee)??null,re=F===null?null:kn(t.cap,t.targetId,g,F),I=m?f:zi(u),ie=Zi(t.cap,t.targetId,g,v,b),ae=Qi(T,F,re,te,N),L=ae===null?null:Ui({cap:t.cap,targetId:t.targetId,device:t.target,apply:t.apply,key:I,label:u,fieldPath:g,source:ae,transform:ae.transform,literals:ie}),oe=$i(L,I,g,F,A.status===`success`?A.data:null),se=e=>{if(e===null){M(null);return}let n=j.find(t=>t.cap===e.cap&&t.path===e.path);n!==void 0&&le(n,kn(t.cap,t.targetId,g,n))},ce=e=>{d(e),m||p(zi(e))};return e(c,{children:[e(Ze,{className:`flex flex-col gap-3 p-2 sm:p-4`,children:[e(`label`,{className:`flex flex-col gap-1 text-xs text-foreground`,children:[r(`customize.keyed.name`),i(W,{value:u,onChange:e=>ce(e.target.value)})]}),e(`label`,{className:`flex flex-col gap-1 text-xs text-foreground`,children:[r(`customize.keyed.key`),i(W,{value:I,disabled:t.mode===`change`,onChange:e=>{h(!0),p(e.target.value)}})]}),e(`label`,{className:`flex flex-col gap-1 text-xs text-foreground`,children:[r(`customize.keyed.assignField`),i(V,{value:g,options:l.map(e=>({value:e.path,label:r(qi[e.path]??e.path)})),onChange:e=>{_(e.target.value),E(null),M(null),P({kind:`identity`})}})]}),s.map(t=>e(`label`,{className:`flex flex-col gap-1 text-xs text-foreground`,children:[r(`customize.keyed.trait.${t.path}`),i(V,{value:v[t.path]??t.defaultValue,options:t.values.map(e=>({value:e,label:r(`customize.keyed.value.${e}`)})),onChange:e=>y(n=>({...n,[t.path]:e.target.value}))})]},t.path)),Wi(t.cap,t.targetId,g).map(n=>e(`label`,{className:`flex flex-col gap-1 text-xs text-foreground`,children:[r(`customize.keyed.unit`),i(V,{value:b,options:Gi(t.cap,t.targetId,g,n).map(e=>({value:e,label:r(`customize.keyed.value.${e}`)})),onChange:e=>x(e.target.value)})]},n)),i(ni,{kind:`keyed`,enabled:t.open,hostId:t.host.id,fieldPath:g,destination:{cap:t.cap,targetId:t.targetId,fieldPath:g,title:r(qi[g]??g)},device:T,field:na(ee),transform:N,onDeviceChange:e=>{E(e),M(null),P({kind:`identity`})},onFieldChange:se,onTransformChange:P}),re?.ok===!0&&re.mode===`enum`&&F!==null&&i(Xi,{values:F.enumValues,outputs:Ki(t.cap,t.targetId,g),mapping:te,onChange:ne}),oe!==null&&i(Bi,{preview:oe})]}),e(We,{className:`flex flex-wrap gap-2`,children:[i(B,{variant:`ghost`,onClick:t.onClose,children:r(`customize.scalar.cancel`)}),i(B,{"data-testid":`keyed-save-item`,disabled:!t.canSave||L===null||I===``,onClick:()=>{L!==null&&t.onSave(L,I)},children:r(`customize.keyed.save`)})]})]});function le(e,n){if(n.ok){if(M(`${e.cap}.${e.path}`),n.mode===`enum`){let n=Hi(e.enumValues,Ki(t.cap,t.targetId,g));ne(n),P({kind:`enum-map`,mapping:{...n}});return}P(Vi(n))}}}function Xi(t){let{t:n}=K();return i(`div`,{className:`flex flex-col gap-1`,children:t.values.map(r=>e(`label`,{className:`flex flex-wrap items-center gap-2 text-xs text-foreground`,children:[r,i(V,{value:t.mapping[r]??``,options:[{value:``,label:n(`customize.keyed.unmapped`)},...t.outputs.map(e=>({value:e,label:n(`customize.keyed.value.${e}`)}))],onChange:e=>t.onChange({...t.mapping,[r]:e.target.value===``?null:e.target.value})})]},r))})}function Zi(e,t,n,r,i){let a=Object.entries(r).map(([e,t])=>({path:e,value:t})),o=Wi(e,t,n).flatMap(e=>i===``?[]:[{path:e,value:i}]);return[...a,...o]}function Qi(e,t,n,r,i){return e===null||t===null||n===null||!n.ok?null:n.mode===`enum`?Object.keys(r).length===0?null:{addonId:e.addonId,stableId:e.stableId,cap:t.cap,fieldPath:t.path,valueKind:`enum`,transform:{kind:`enum-map`,mapping:{...r}}}:{addonId:e.addonId,stableId:e.stableId,cap:t.cap,fieldPath:t.path,valueKind:`number`,transform:i}}function $i(e,t,n,r,i){if(e===null||r===null)return null;let a=e.items?.[t]?.fields[n];if(a===void 0)return{kind:`failed`,reason:`compile`};if(i===null)return{kind:`pending`};let o=Z(i[r.cap],r.path);if(a.kind===`from`)return ea(o);if(a.kind!==`expression`)return{kind:`failed`,reason:`compile`};let s=ta(o);if(s===void 0)return{kind:`failed`,reason:`no-value`};let c=_(a.expr,{x:s},Date.now());return c.ok?ea(c.value):{kind:`failed`,reason:c.error}}function ea(e){return typeof e==`number`&&Number.isFinite(e)?{kind:`value`,text:String(e)}:typeof e==`string`&&e.length>0?{kind:`value`,text:e}:{kind:`failed`,reason:`empty`}}function ta(e){if(typeof e==`number`||typeof e==`string`||typeof e==`boolean`)return e;if(e===null)return null}function na(e){if(e===null)return null;let t=e.indexOf(`.`);return t<=0?null:{cap:e.slice(0,t),path:e.slice(t+1)}}function ra(e,t){return e===null?null:t.find(t=>t.addonId===e.source.addonId&&t.stableId===e.source.stableId)??null}var ia=`consumables`,aa=`items`,oa=g.shape.items;function sa(e){let t=e.split(`.`).pop()??e,n=t.replace(/Level$/,``);return n===``?t:n}function ca(e){let t=e.replace(/([a-z0-9])([A-Z])/g,`$1 $2`).toLowerCase();return t.charAt(0).toUpperCase()+t.slice(1)}function la(e,t){return e.caps.filter(e=>t.has(e.cap)&&e.cap!==`consumables`).flatMap(e=>e.fields.filter(e=>e.item!==!0&&Me(e)).map(t=>({kind:`field`,key:sa(t.path),cap:e.cap,path:t.path})))}function ua(e){switch(e.kind){case`pending`:return{kind:`pending`};case`unknown`:return{kind:`unknown`,reason:e.reason};case`absent`:return{kind:`known`,value:[]};case`value`:{if(e.value===null)return{kind:`known`,value:[]};let t=oa.safeParse(e.value);return t.success?{kind:`known`,value:t.data.map(e=>({kind:`item`,key:e.key,item:e}))}:{kind:`unknown`,reason:t.error.message}}}}function da(e,t,n){if(e.kind!==`known`)return e;if(t.kind!==`known`)return t;let r=la(t.value,e.value);if(!e.value.has(`consumables`)||n===null)return{kind:`known`,value:r};let i=ua(n);return i.kind===`known`?{kind:`known`,value:[...r,...i.value]}:i}function fa(e){return e.defaults.map(t=>t.kind===`field`?i(pa,{deviceId:e.deviceId,entry:t},`field:${t.cap}.${t.path}`):i(ha,{entry:t},`item:${t.key}`))}function pa(e){let{t}=K(),n=Ut({deviceId:e.deviceId,cap:e.entry.cap,path:e.entry.path});return i(Ri,{name:t(`customize.consumables.fields.${e.entry.key}`,{defaultValue:ca(e.entry.key)}),detail:t(`customize.consumables.builtIn`),meta:t(`customize.assign.native`),value:null,readout:i(ma,{value:n}),removeLabel:``})}function ma(e){switch(e.value.kind){case`pending`:return i(Kt,{display:{text:`…`,tone:`muted`}});case`unknown`:return i(Kt,{display:{text:`?`,title:e.value.reason,tone:`warning`}});case`absent`:return i(Xe,{level:null,size:`sm`});case`value`:return i(Xe,{level:Pe(e.value.value),size:`sm`})}}function ha(e){let{t}=K(),{item:n}=e.entry,r=n.level===null?n.status===`replace`?t(`uiLibrary.consumablesPanel.replace`):void 0:`${Math.round(n.level)} %`;return i(Ri,{name:n.label,detail:t(`customize.consumables.builtIn`),meta:t(`customize.assign.native`),value:null,readout:i(Xe,{level:je(n),label:r,size:`sm`}),removeLabel:``})}s();var ga={consumables:l};function _a(){return Object.entries(w).flatMap(([e,t])=>t.targets.filter(e=>e.cardinality===`keyedArray`).map(t=>({cap:e,target:t})))}function va(t){let{t:n,i18n:r}=K(),a=At(),[s,l]=o(null),[u,d]=o(null),f=q(t.handle.state),p=X(f,t.cap),m=xa(t.handle,p),h=m.kind===`known`&&m.value!==null?S(m.value,t.cap,t.target.id):null,g=mt(h!==null),_=Sa(h,g),y=F({cap:t.cap,targetId:t.target.id,device:t.handle.target,stored:m,sourcePresence:_,sourceUnknownReason:g.kind===`unknown`?g.reason:null});if(!ba(t,p))return null;let b=t.handle.state.kind===`none`||t.handle.state.kind===`present`,x=t.availability.kind===`present`&&b,C=n(`customize.keyed.title.${t.cap}`),w=Ta(n,y.text,y.assignedCount),T=async e=>{let n=await t.handle.save(e);d(n.kind===`refused`?n.reason:null)},E=async e=>{if(f===null||p===null)return;let r=v(p,e.key),i=r===null?Et(f,t.cap):Y(f,t.handle.target,r);await a(n(`customize.consumables.removeWhat`,{name:e.label}),i===null)&&await T(i)},D=s!==null&&s!==`add`?wa(h,s):null;return e(c,{children:[i(ut,{id:t.cap,icon:ga[t.cap],title:C,testId:`keyed-card-${t.cap}`,actions:i(Ee,{children:w}),children:e(`div`,{className:`flex flex-col gap-2 px-3 py-2 sm:px-4`,children:[t.defaults.kind===`known`&&i(fa,{deviceId:t.device.id,defaults:t.defaults.value}),t.defaults.kind===`unknown`&&i(z,{title:n(`customize.consumables.builtIn`),message:n(`customize.consumables.builtInUnreadable`,{reason:t.defaults.reason})}),h?.items.map(e=>i(ya,{deviceId:t.device.id,cap:t.cap,item:e,language:r.language,sourceName:Ca(e,g),saving:t.handle.saving,onChange:()=>l(e.key),onRemove:()=>void E(e),handle:t.handle},e.key)),u!==null&&i(`p`,{role:`alert`,className:`text-xs text-danger break-words`,children:u}),x&&i(B,{variant:`outline`,size:`sm`,"data-testid":`keyed-add-${t.cap}`,disabled:t.handle.saving,onClick:()=>l(`add`),children:n(`customize.keyed.add`)})]})}),i(Ji,{open:s!==null,mode:s===`add`?`add`:`change`,cap:t.cap,targetId:t.target.id,host:t.device,target:t.handle.target,apply:`add`,seed:D,canSave:b&&!t.handle.saving,onClose:()=>l(null),onSave:(e,r)=>{if(s===`add`&&p?.items!==void 0&&p.items[r]!==void 0){d(n(`customize.keyed.duplicateKey`,{key:r}));return}let i=pe(p,e,r);l(null),i!==null&&(d(null),T(Y(f,t.handle.target,i)))}})]})}function ya(t){let{t:n}=K(),r=t.item.compile,a=t.item.recognized&&r!==null,o=r===null?``:J(r.draft.source.cap,r.draft.source.fieldPath,t.language),s=a?[t.sourceName??``,o].filter(e=>e.length>0).join(` · `):n(`customize.consumables.otherFormula`),c=r===null?null:ie(le,t.item.key,r.draft.fieldPath);return e(`div`,{className:`flex flex-col gap-1`,"data-testid":`keyed-row-${t.item.key}`,children:[i(Ri,{name:t.item.label,detail:s,meta:a?n(`customize.keyed.assigned`):null,value:c===null?null:{deviceId:t.deviceId,cap:t.cap,path:c},readout:c===null?null:i(Gt,{target:{deviceId:t.deviceId,cap:t.cap,path:c}}),removeLabel:``}),e(`div`,{className:`flex flex-wrap gap-2`,children:[a&&i(B,{variant:`outline`,size:`sm`,disabled:t.saving,onClick:t.onChange,children:n(`customize.keyed.change`)}),a&&i(B,{variant:`ghost`,size:`sm`,disabled:t.saving,onClick:t.onRemove,children:n(`customize.keyed.remove`)}),!a&&i(Li,{handle:t.handle,cap:t.cap,itemKey:t.item.key,fieldPath:`status`})]})]})}function ba(e,t){return e.target.deviceTypes.includes(e.device.type)?e.availability.kind!==`absent`||e.defaults.kind!==`known`||e.defaults.value.length>0?!0:t!==null:!1}function xa(e,t){return e.state.kind===`pending`?{kind:`pending`}:e.state.kind===`unknown`||e.state.kind===`not-loaded`?{kind:`unknown`,reason:e.state.reason}:{kind:`known`,value:t}}function Sa(e,t){let n=(e?.items??[]).filter(e=>e.recognized&&e.compile!==null);return n.length===0?`present`:t.kind===`pending`?`pending`:t.kind===`unknown`?`unknown`:n.every(e=>{let n=e.compile?.draft.source;if(n===void 0)return!1;let r=L(n);return t.value.some(e=>L({addonId:e.addonId,stableId:e.stableId})===r)})?`present`:`absent`}function Ca(e,t){let n=e.compile?.draft.source;if(n===void 0||t.kind!==`known`)return null;let r=L(n);return t.value.find(e=>L({addonId:e.addonId,stableId:e.stableId})===r)?.name??null}function wa(e,t){let n=e?.items.find(e=>e.key===t),r=n?.compile;return n===void 0||r==null?null:{key:n.key,label:n.label,fieldPath:r.draft.fieldPath,literals:r.literals,source:{addonId:r.draft.source.addonId,stableId:r.draft.source.stableId,cap:r.draft.source.cap,fieldPath:r.draft.source.fieldPath,valueKind:r.sourceValueKind},transform:r.draft.transform}}function Ta(e,t,n){return t===`Native`?e(`customize.keyed.badge.native`):t===`pending`?e(`customize.keyed.badge.pending`):t===`unknown`?e(`customize.keyed.badge.unknown`):t.endsWith(`assigned`)?e(`customize.keyed.badge.assigned`,{count:n}):t}function Ea(e){return i(c,{children:_a().map(t=>t.target.deviceTypes.includes(e.device.type)?i(va,{device:e.device,handle:e.handle,availability:Fi(ji(t.cap,t.target),e.facts),cap:t.cap,target:t.target,defaults:e.defaults},t.cap):null)})}function Da(e){let t=In(e);if(t===null)return{kind:`failed`,reason:Kn};if(e.transform.kind===`threshold`)return Oa(e.transform,e);let n=er(e.cap,e.targetId),r=n===null?void 0:t.fields[n];if(r===void 0)return{kind:`failed`,reason:Kn};if(r.kind===`from`)return Aa(e.sourceValue);if(r.kind!==`expression`)return{kind:`failed`,reason:Kn};if(r.expr.startsWith(`dwell(`))return{kind:`failed`,reason:qn};let i=ka(e.sourceValue);if(i===void 0)return{kind:`failed`,reason:Jn};let a=_(r.expr,{x:i},e.nowMs);return a.ok?Aa(a.value):{kind:`failed`,reason:a.error}}function Oa(e,t){if(typeof t.sourceValue!=`number`||!Number.isFinite(t.sourceValue))return{kind:`failed`,reason:Jn};let n=e.comparison===`gte`?t.sourceValue>=e.threshold:t.sourceValue<=e.threshold,r=t.source.sourceUnit;return{kind:`dwell`,sourceText:r===null?String(t.sourceValue):`${t.sourceValue} ${r}`,active:n,countdownMs:n?e.startDwellMs:e.stopDwellMs}}function ka(e){if(typeof e==`number`||typeof e==`string`||typeof e==`boolean`)return e;if(e===null)return null}function Aa(e){return e==null||typeof e==`number`&&!Number.isFinite(e)?{kind:`failed`,reason:Yn}:typeof e==`number`||typeof e==`string`||typeof e==`boolean`?{kind:`value`,text:String(e)}:{kind:`failed`,reason:Yn}}s();function ja(t){let{t:n}=K(),r=t.mode===`change`?n(`customize.scalar.changeTitle`,{title:t.title}):n(`customize.scalar.addTitle`,{title:t.title});return i(tt,{open:t.open,onOpenChange:e=>e?void 0:t.onClose(),children:e(Je,{width:`xl`,placement:`sheet-on-mobile`,scroll:`body`,"aria-label":r,children:[i(it,{children:i(at,{children:r})}),t.open&&i(Ma,{...t,heading:r})]})})}function Ma(t){let{t:r}=K(),a=H({projection:`slim`}),s=n(()=>a.status===`success`?Mt(a.data):[],[a.status,a.data]),l=Fa(t.seed,s),[u,d]=o(null),[f,p]=o(!1);!f&&l!==null&&(d(l),p(!0));let m=U({deviceId:u?.id??0}),h=He({deviceId:u?.id??0}),g=m.status===`success`?m.data:{caps:[]},_=tr(g,h.status===`success`?h.data:null),[v,y]=o(Ia(t.seed)),[b,x]=o(t.seed?.transform??{kind:`identity`}),S=v===null?null:(()=>{let[e,t]=v.split(`.`);return e===void 0||t===void 0?null:{cap:e,path:t}})(),C=_.find(e=>Na(e)===v)??null,w=C===null?null:ir(t.cap,t.targetId,C),T=C===null||w===null||!w.ok?null:Pa(u,C,w,g),E=T===null?null:In({cap:t.cap,targetId:t.targetId,device:t.target,apply:t.apply,source:T,transform:b}),D=C===null||h.status!==`success`||u===null?void 0:Z(h.data[C.cap],C.path),O=T===null?null:h.status===`pending`?{kind:`pending`}:Da({cap:t.cap,targetId:t.targetId,device:t.target,apply:t.apply,source:T,transform:b,sourceValue:D,nowMs:Date.now()});return e(c,{children:[e(Ze,{className:`flex flex-col gap-3 p-2 sm:p-4`,children:[i(ni,{kind:`scalar`,enabled:t.open,hostId:t.host.id,destination:{cap:t.cap,targetId:t.targetId,title:t.title},device:u,field:S,transform:b,onDeviceChange:e=>{d(e),y(null),x({kind:`identity`})},onFieldChange:e=>{if(e===null){y(null);return}y(`${e.cap}.${e.path}`)},onTransformChange:x}),O!==null&&i(Bi,{preview:O})]}),e(We,{className:`flex flex-wrap gap-2`,children:[i(B,{variant:`ghost`,onClick:t.onClose,children:r(`customize.scalar.cancel`)}),i(B,{"data-testid":`scalar-save-override`,disabled:!t.canSave||E===null,onClick:()=>{E!==null&&t.onSave(E)},children:r(`customize.scalar.save`)})]})]})}function Na(e){return`${e.cap}.${e.path}`}function Pa(e,t,n,r){if(e===null||t.kind!==`boolean`&&t.kind!==`number`&&t.kind!==`string`)return null;let i=r.caps.find(e=>e.cap===t.cap),a=t.kind===`boolean`&&i?.fields.some(e=>e.path===`lastChangedAt`)?`lastChangedAt`:null;return{addonId:e.addonId,stableId:e.stableId,cap:t.cap,fieldPath:t.path,valueKind:t.kind,sourceUnit:n.sourceUnit,changedAtField:a}}function Fa(e,t){return e===null?null:t.find(t=>t.addonId===e.source.addonId&&t.stableId===e.source.stableId)??null}function Ia(e){return e===null?null:`${e.source.cap}.${e.source.fieldPath}`}var La=`Assigned · `;function Ra(e,t){if(e===`Native`)return{kind:`native`};if(e===`Native · source missing`)return{kind:`released`};if(e===`pending`)return{kind:`pending`};if(e===`unknown`)return{kind:`unknown`};if(e.startsWith(La)){let n=e.slice(11);return{kind:`assigned`,source:t??n}}return{kind:`unknown`}}s();var za={battery:d,"running-state":m};function Ba(){return Object.entries(w).flatMap(([e,t])=>t.targets.filter(e=>e.cardinality===`scalar`).map(t=>({cap:e,target:t})))}function Va({device:t,handle:n,availability:r,cap:a,target:s}){let{t:l,i18n:u}=K(),d=At(),[f,p]=o(!1),[m,h]=o(null),g=l(`customize.scalar.caps.${a}`),_=s.path??s.id,v=q(n.state),y=Ua(n,X(v,a)),b=y.kind===`known`&&y.value!==null?fe({feature:y.value,device:n.target,cap:a,targetId:s.id}):null,x=b!==null,S=mt(x),C=b===null||S.kind!==`known`?null:S.value.find(e=>L({addonId:e.addonId,stableId:e.stableId})===L(b.draft.source))??null,w=C===null?null:_r(C.name,C.id,S.kind===`known`?S.value.map(e=>({id:e.id,name:e.name,parentDeviceId:e.parentDeviceId??null})):[]),T=Wa(x,S.kind,C!==null),E=I({cap:a,targetId:s.id,device:n.target,stored:y,sourcePresence:T,sourceUnknownReason:S.kind===`unknown`?S.reason:null}),D=Ra(E.text,w),O=n.state.kind===`none`||n.state.kind===`present`,k=r.kind===`present`?r.mode:null;if(r.kind===`absent`||!s.deviceTypes.includes(t.type))return null;let A=async e=>{let t=await n.save(e);h(t.kind===`refused`?t.reason:null)},j=async()=>{if(v===null)return;let e=Et(v,a);await d(l(`customize.scalar.removeWhat`,{name:w??(b===null?t.name:L(b.draft.source))}),e===null)&&await A(e)},ee=b===null?null:{source:{addonId:b.draft.source.addonId,stableId:b.draft.source.stableId,cap:b.draft.source.cap,fieldPath:b.draft.source.fieldPath,valueKind:b.sourceValueKind,sourceUnit:b.sourceUnit,changedAtField:b.changedAtField},transform:b.draft.transform},M=D.kind===`assigned`?l(`customize.scalar.badge.assigned`,{source:D.source}):l(`customize.scalar.badge.${D.kind}`);return e(c,{children:[i(ut,{id:a,icon:za[a],title:g,testId:`scalar-card-${a}`,actions:i(Ee,{children:M}),children:i(Ha,{availability:r,answered:O,deviceId:t.id,cap:a,path:_,recognized:x,stored:y,presence:T,released:E.status.state===`released`,sourceName:w,sourceCap:b?.draft.source.cap??``,sourceField:b===null?``:J(b.draft.source.cap,b.draft.source.fieldPath,u.language),sourcePath:b?.draft.source.fieldPath??``,sourceDeviceId:C?.id??null,error:m,saving:n.saving,mode:k,onOpen:()=>p(!0),onRemove:()=>void j(),handle:n})}),k!==null&&i(ja,{open:f,mode:ee===null?`add`:`change`,title:g,cap:a,targetId:s.id,host:t,target:n.target,apply:k,seed:ee,canSave:O&&!n.saving,onClose:()=>p(!1),onSave:e=>{p(!1),A(Y(v,n.target,e))}})]})}function Ha(t){let{t:n}=K();if(t.availability.kind===`pending`||t.availability.kind===`present`&&!t.answered)return i(`p`,{role:`status`,className:`px-3 py-2 text-xs text-foreground-subtle sm:px-4`,children:n(`customize.scalar.checking`)});if(t.availability.kind===`unknown`)return i(`div`,{className:`px-3 py-2 sm:px-4`,children:i(z,{title:n(`customize.scalar.unreadable`),message:t.availability.reason})});let r=t.stored.kind===`known`&&t.stored.value===null,a=!t.recognized&&t.stored.kind===`known`&&t.stored.value!==null;return e(`div`,{className:`flex flex-col gap-2 px-3 py-2 sm:px-4`,children:[e(`div`,{className:`flex flex-wrap items-baseline justify-between gap-2`,children:[i(`span`,{className:`text-xs text-foreground`,children:n(`customize.scalar.effective`)}),i(Gt,{target:{deviceId:t.deviceId,cap:t.cap,path:t.path}})]}),t.released&&i(`p`,{className:`text-xs text-foreground`,children:n(`customize.scalar.released`)}),t.presence===`unknown`&&t.recognized&&i(z,{title:n(`customize.scalar.sourceUnreadable`),message:n(`customize.scalar.sourceHeld`,{name:t.sourceName??t.sourceCap})}),t.recognized&&!t.released&&e(`div`,{className:`flex flex-wrap items-baseline justify-between gap-2`,children:[i(`span`,{className:`text-xs text-foreground`,children:n(`customize.scalar.override`,{name:t.sourceName??`…`,field:t.sourceField})}),t.sourceDeviceId!==null&&i(Gt,{target:{deviceId:t.sourceDeviceId,cap:t.sourceCap,path:t.sourcePath}})]}),a&&e(`p`,{className:`text-xs text-foreground flex flex-wrap items-center gap-1`,children:[n(`customize.scalar.otherFormula`),i(Li,{handle:t.handle,cap:t.cap,fieldPath:t.path})]}),r&&i(`p`,{className:`text-xs text-foreground-subtle`,children:n(`customize.scalar.noOverride`)}),t.error!==null&&i(`p`,{role:`alert`,className:`text-xs text-danger break-words`,children:t.error}),e(`div`,{className:`flex flex-wrap gap-2`,children:[t.recognized&&i(B,{variant:`outline`,size:`sm`,"data-testid":`scalar-change-${t.cap}`,onClick:t.onOpen,disabled:t.saving,children:t.released?n(`customize.scalar.chooseAnother`):n(`customize.scalar.change`)}),t.recognized&&i(B,{variant:`ghost`,size:`sm`,onClick:t.onRemove,disabled:t.saving,children:n(`customize.scalar.remove`)}),r&&i(B,{variant:`outline`,size:`sm`,"data-testid":`scalar-add-${t.cap}`,disabled:t.saving||t.mode===null,onClick:t.onOpen,children:n(`customize.scalar.add`)})]})]})}function Ua(e,t){return e.state.kind===`pending`?{kind:`pending`}:e.state.kind===`unknown`||e.state.kind===`not-loaded`?{kind:`unknown`,reason:e.state.reason}:{kind:`known`,value:t}}function Wa(e,t,n){return e?t===`pending`?`pending`:t===`unknown`?`unknown`:n?`present`:`absent`:`present`}function Ga({device:e,handle:t,facts:n}){return i(c,{children:Ba().map(r=>r.target.deviceTypes.includes(e.type)?i(Va,{device:e,handle:t,availability:Fi(ji(r.cap,r.target),n),cap:r.cap,target:r.target},r.cap):null)})}var Ka=[`temperature`,`humidity`,`pressure`,`illuminance`,`power`,`energy`,`battery`,`numeric`],qa=[`motion`,`contact`,`leak`,`smoke`,`occupancy`,`binary`],Ja=[`switch`,`light`],Ya=`was refused — `,Xa=/^(.+?) \[([a-z0-9-]+)\]: (.+)$/;function Za(){return[{id:`readings`,templateIds:Ka},{id:`binary`,templateIds:qa},{id:`actuators`,templateIds:Ja}]}function Qa(e){let t=R(e);return t===null?null:{templateId:e,aggregate:t.defaultAggregate,active:t.family===`actuator`?`at-least-one`:null,name:``,room:``,members:[]}}function $a(e,t,n){let r=R(e.templateId);return r===null||!r.aggregates.includes(e.aggregate)||r.family===`actuator`&&e.active===void 0||r.family!==`actuator`&&e.active!==void 0?null:{templateId:e.templateId,aggregate:e.aggregate,active:e.active??null,name:t,room:n,members:e.members.map(So)}}function eo(e){return e.helper!==void 0}function to(e,t){let n=R(e.templateId);return n===null||!n.aggregates.includes(t)?e:{...e,aggregate:t}}function no(e,t){let n=R(e.templateId);return n===null||n.family!==`actuator`?e:{...e,active:t,aggregate:_e(t)}}function ro(e,t){return{...e,name:t}}function io(e,t){return t===e.templateId?e:Qa(t)??e}function ao(e){let t=R(e.templateId);return t===null?null:T(t)}function oo(e){let t=R(e.templateId)?.family===`actuator`&&e.active!==null;return{kind:`group`,templateId:e.templateId,aggregate:t&&e.active!==null?_e(e.active):e.aggregate,...t&&e.active!==null?{active:e.active}:{},members:e.members.map(So)}}function so(e){return ge(oo(e))}async function co(e,t){let n=so(e);if(!n.ok)return uo(n.problems);try{return await t(n.composition,e.name.trim()),[]}catch(e){return fo(e instanceof Error?e.message:String(e))}}function lo(e){return e.members.length>=1&&e.members.length<=64}function uo(e){return e.map(e=>({path:e.path,code:e.code,message:e.message}))}function fo(e){let t=e.indexOf(Ya),n=(t===-1?e:e.slice(t+14)).split(/; (?=[^;]*\[[a-z0-9-]+\]:)/).flatMap(wo);return n.length>0?n:[{path:``,code:`refused`,message:e}]}function po(e,t){if(e.kind===`pending`)return{kind:`pending`};if(e.kind===`error`)return{kind:`unavailable`,message:e.message};let n=e.caps[t.outputCap];if(n===void 0)return{kind:`empty`};let r=n[t.outputField];return typeof r==`number`&&Number.isFinite(r)?{kind:`number`,value:r,unit:t.baseUnit}:typeof r==`boolean`?{kind:`boolean`,value:r}:{kind:`empty`}}function mo(e){if(e.kind===`pending`)return{kind:`pending`};if(e.kind===`error`)return{kind:`unavailable`,message:e.message};let t=e.caps[`group-status`];if(t===void 0)return{kind:`absent`};let n=Co(t.included),r=Co(t.excluded),i=Co(t.total);return n===null||r===null||i===null?{kind:`absent`}:{kind:`ready`,included:n,excluded:r,total:i}}function ho(e){if(e.length===0||e.some(e=>e.kind===`pending`))return{kind:`pending`};if(e.some(e=>e.kind===`error`))return{kind:`unavailable`};let t=e.flatMap(e=>e.kind===`ready`?[e]:[]),n=me(t.map(e=>e.caps)),r=n.includes(`color`)?oe(t.map(e=>e.features)):[];return{kind:`ready`,caps:[...n],modes:[...r]}}function go(e){if(e.kind===`pending`)return{kind:`pending`};if(e.kind===`error`)return{kind:`unavailable`,message:e.message};let t=e.caps[`group-commands`];if(t===void 0)return{kind:`none`};let n=re.safeParse(t);return n.success?n.data.results.length===0?{kind:`none`}:{kind:`rows`,rows:n.data.results.map(e=>({deviceId:e.deviceId,cap:e.cap,method:e.method,ok:e.ok,error:e.error??null,at:e.at}))}:{kind:`unavailable`,message:`group-commands`}}function _o(e,t,n,r){if(e===`pending`)return`pending`;if(e===`error`)return`error`;let i=t?.[n];if(i===void 0)return`missing`;let a=i[r];return typeof a==`number`&&Number.isFinite(a)||typeof a==`boolean`?`value`:a===void 0?`missing`:`empty`}function vo(e){return e.fleet===`answered`?e.deviceOnline===null||e.deviceOnline===!1?`excluded`:e.field===`pending`||e.field===`error`?`unknown`:e.field===`value`?`reporting`:`excluded`:`unknown`}function yo(e){return e.some(e=>e.presence===`unknown`)?{kind:`pending`}:{kind:`named`,names:e.flatMap(e=>e.presence===`excluded`?[e.name]:[])}}function bo(e){if(!xo(e))return{};let t={};for(let[n,r]of Object.entries(e))xo(r)&&(t[n]=r);return t}function xo(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function So(e){return{source:{addonId:e.source.addonId,stableId:e.source.stableId},cap:e.cap,fieldPath:e.fieldPath}}function Co(e){return typeof e!=`number`||!Number.isInteger(e)||e<0?null:e}function wo(e){let t=Xa.exec(e.trim());if(t===null)return[];let n=t[1],r=t[2],i=t[3];return n===void 0||r===void 0||i===void 0?[]:[{path:n,code:r,message:i}]}function To({onPick:e}){let{t}=K();return i(`div`,{"data-testid":`helper-template-picker`,children:i(ze,{emptyMessage:t(`helper.noTemplates`),onPick:t=>{Eo(t)&&e(t)},groups:Za().map(e=>({id:e.id,label:t(`helper.group.${e.id}`),tiles:e.templateIds.flatMap(e=>{let n=R(e);if(n===null)return[];let r=t(`helper.template.${e}`),a=n.role===void 0?qe(n.deviceType).icon:et(n.role).icon;return[{key:e,label:r,testId:`helper-template-${e}`,icon:i(a,{className:`h-5 w-5 text-foreground-muted`,"aria-hidden":!0}),detailLabel:t(`helper.detailsOf`,{name:r}),detail:i(Do,{templateId:e})}]})}))})})}function Eo(e){return b.some(t=>t===e)}function Do({templateId:t}){let{t:n}=K(),r=R(t);if(r===null)return null;let a=r.family===`actuator`?P.map(e=>n(`helper.active.${e}`)):r.aggregates.map(e=>n(`helper.aggregate.${e}`)),o=r.commandCaps.filter(e=>e!==`switch`);return e(`div`,{className:`max-w-xs space-y-1 text-xs`,children:[i(`p`,{className:`font-medium text-foreground`,children:n(`helper.supportedOperations`)}),i(`p`,{className:`text-foreground-muted`,children:a.join(`, `)}),o.length>0&&e(c,{children:[i(`p`,{className:`font-medium text-foreground`,children:n(`helper.sharedCaps`)}),i(`p`,{className:`text-foreground-muted`,children:o.map(e=>n(`helper.cap.${e}`)).join(`, `)})]}),i(`p`,{className:`text-foreground-subtle`,children:n(`helper.offlineCounted`)})]})}s();function Oo({initial:t,start:n,purpose:r,saving:s,onSave:l,onDraftChange:u}){let{t:d}=K(),[f,p]=o(t===null?`template`:n),[m,h]=o(t),[g,_]=o([]),[v,y]=o(null);a(()=>{u?.(m)},[m,u]);let b=e=>{h(t=>t===null?Qa(e):io(t,e)),_([]),y(null),p(`parameters`)},x=e=>{if(m===null)return;let t=m;(async()=>{let n=await l(t,e);if(n.kind===`refused`){_(n.lines);return}e===`again`&&(y({deviceId:n.deviceId,name:t.name.trim()}),h(null),p(`template`),_([]))})()},S=m===null?null:ao(m),C=m===null?null:R(m.templateId);return e(`div`,{className:`flex flex-col gap-3`,"data-testid":`helper-wizard`,children:[v!==null&&i(`p`,{role:`status`,className:`text-xs text-foreground`,"data-testid":`helper-created`,children:i(ct,{i18nKey:`helper.created`,values:{name:v.name===``?d(`helper.newHelper`):v.name},components:{device:i(ot,{to:st(v.deviceId),className:`text-primary hover:underline`})}})}),i(`p`,{className:`text-[11px] text-foreground-muted`,children:d(`helper.step.${f}`)}),f===`template`&&i(To,{onPick:b}),f===`parameters`&&m!==null&&C!==null&&e(`div`,{className:`grid grid-cols-1 gap-2 sm:grid-cols-2`,children:[C.family===`actuator`&&m.active!==null?e(`label`,{className:`flex flex-col gap-1 text-[11px]`,children:[d(`helper.criterion`),i(V,{"aria-label":d(`helper.criterion`),"data-testid":`helper-criterion`,value:m.active,onChange:e=>{let t=P.find(t=>t===e.target.value);t!==void 0&&h(no(m,t))},options:P.map(e=>({value:e,label:d(`helper.active.${e}`)}))})]}):e(`label`,{className:`flex flex-col gap-1 text-[11px]`,children:[d(`helper.reducer`),i(V,{"aria-label":d(`helper.reducer`),"data-testid":`helper-reducer`,value:m.aggregate,onChange:e=>{let t=C.aggregates.find(t=>t===e.target.value);t!==void 0&&h(to(m,t))},options:C.aggregates.map(e=>({value:e,label:d(`helper.aggregate.${e}`)}))})]}),e(`label`,{className:`flex flex-col gap-1 text-[11px]`,children:[d(`helper.name`),i(W,{"aria-label":d(`helper.name`),"data-testid":`helper-name`,value:m.name,onChange:e=>h(ro(m,e.target.value))})]})]}),f===`members`&&m!==null&&S!==null&&i(ni,{kind:`members`,request:S,enabled:!0,members:m.members,onMembersChange:e=>h({...m,members:e}),onRefuse:e=>_(e===null?[]:[{path:`helper.members`,code:`member-constraint`,message:d(`helper.maxMembers`,{max:e.max})}])}),i(ko,{lines:g}),e(`div`,{className:`flex flex-wrap gap-2`,children:[f!==`template`&&i(B,{variant:`ghost`,onClick:()=>p(f===`members`?`parameters`:`template`),children:d(`helper.back`)}),f===`parameters`&&m!==null&&i(B,{"data-testid":`helper-to-members`,disabled:m.name.trim()===``,onClick:()=>{_([]),p(`members`)},children:d(`helper.next`)}),f===`members`&&m!==null&&r===`edit`&&i(B,{"data-testid":`helper-save`,disabled:!lo(m)||s,onClick:()=>x(`open`),children:d(`helper.save`)}),f===`members`&&m!==null&&r===`create`&&e(c,{children:[i(B,{"data-testid":`helper-save-open`,disabled:!lo(m)||s,onClick:()=>x(`open`),children:d(`helper.saveOpen`)}),i(B,{variant:`outline`,"data-testid":`helper-save-more`,disabled:!lo(m)||s,onClick:()=>x(`again`),children:d(`helper.saveMore`)})]})]})]})}function ko({lines:t}){return t.length===0?null:i(`ul`,{role:`alert`,className:`flex flex-col gap-1`,"data-testid":`helper-refusals`,children:t.map(t=>e(`li`,{className:`text-xs text-danger`,children:[i(`span`,{className:`font-medium`,children:t.code}),t.message===``?``:` — ${t.message}`]},`${t.path}:${t.code}:${t.message}`))})}export{_r as A,wt as B,Ai as C,Ti as D,Ei as E,X as F,dt as G,q as H,kt as I,ut as K,Y as L,Z as M,Mt as N,ni as O,At as P,Et as R,Fi as S,ki as T,gt as U,J as V,mt as W,_a as _,mo as a,da as b,yo as c,ho as d,bo as f,Ea as g,Ba as h,_o as i,Ut as j,Or as k,po as l,Ga as m,go as n,eo as o,co as p,$a as r,vo as s,Oo as t,fo as u,ia as v,ji as w,Li as x,aa as y,Ct as z};