@camstack/addon-admin-ui 1.2.475 → 1.2.477

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 (136) hide show
  1. package/dist/assets/{AddonAssetIcon-BNfqkJPr.js → AddonAssetIcon-B_-30Ezl.js} +1 -1
  2. package/dist/assets/Addons-CbHidHOJ.js +5 -0
  3. package/dist/assets/{AdminPage-UX2_-EVb.js → AdminPage-3JxWocN3.js} +1 -1
  4. package/dist/assets/{AdminSectionedPage-CJhCo7eS.js → AdminSectionedPage-DtiHBXGC.js} +1 -1
  5. package/dist/assets/AiProfiles-7FToWDqj.js +3 -0
  6. package/dist/assets/{BrokerForm-B1b0ZQq_.js → BrokerForm-D5-q8F_8.js} +1 -1
  7. package/dist/assets/Build-DwW5kYsa.js +40 -0
  8. package/dist/assets/{Calendars-CPP5G4iE.js → Calendars-BhMRY6EV.js} +1 -1
  9. package/dist/assets/{Cluster-DxeRVsUO.js → Cluster-z11q6anB.js} +1 -1
  10. package/dist/assets/CompositionBlockEditor-CElNVsCR.js +1 -0
  11. package/dist/assets/CompositionEditorPage-NzgZB76B.js +1 -0
  12. package/dist/assets/Data-D_U-HkwO.js +2 -0
  13. package/dist/assets/{DeviceDetail-DKGhhLVK.js → DeviceDetail-D89wXQHP.js} +2 -2
  14. package/dist/assets/{DeviceDoActionFields-CVBUVXjq.js → DeviceDoActionFields-Bj4gX0r-.js} +1 -1
  15. package/dist/assets/{Devices-D9OmxxCE.js → Devices-BnhDZU3y.js} +1 -1
  16. package/dist/assets/{EmbedPlayerPage-u5jZuoCz.js → EmbedPlayerPage-Ccf5hGui.js} +1 -1
  17. package/dist/assets/{HelperWizard-Dape3GuD.js → HelperWizard-CrXHYd19.js} +2 -2
  18. package/dist/assets/History-BsJBR2zt.js +1 -0
  19. package/dist/assets/Identity-B_6I_sCY.js +1 -0
  20. package/dist/assets/IntegrationDetail-B9L7AfYy.js +1 -0
  21. package/dist/assets/IntegrationHub-CSaA690G.js +1 -0
  22. package/dist/assets/Integrations-B-KtSB_m.js +1 -0
  23. package/dist/assets/Integrations-CMW4LOX-.js +1 -0
  24. package/dist/assets/{Library-DUWYOPjU.js → Library-3dGkOQB5.js} +1 -1
  25. package/dist/assets/Locations-Bh5GRDCv.js +3 -0
  26. package/dist/assets/{Logs-CPgxOarw.js → Logs-diqSxXEc.js} +1 -1
  27. package/dist/assets/{MaskShapeCanvas-Cmq6IidK.js → MaskShapeCanvas-UFmJUhUS.js} +1 -1
  28. package/dist/assets/{MotionZonesSettings-CnZg9FTF.js → MotionZonesSettings-BTxe4DbF.js} +1 -1
  29. package/dist/assets/{MyAccess-BKLOlMok.js → MyAccess-BqulMSGv.js} +1 -1
  30. package/dist/assets/{Network-BT4UeK8H.js → Network-C8Gpb2Vn.js} +1 -1
  31. package/dist/assets/{NodeAddonsSettingsPanel-75hJ0AJM.js → NodeAddonsSettingsPanel-Dq6sGWkR.js} +1 -1
  32. package/dist/assets/Notifications-C5w5t75z.js +1 -0
  33. package/dist/assets/Pipeline-CjumfHMc.js +1 -0
  34. package/dist/assets/{PrivacyMaskSettings-BFWSAVsy.js → PrivacyMaskSettings-D6kokNvH.js} +1 -1
  35. package/dist/assets/Recordings-DE76fgEt.js +1 -0
  36. package/dist/assets/{ScanNetworkModal-hCwvBDMd.js → ScanNetworkModal-DXzDOpxk.js} +1 -1
  37. package/dist/assets/{SceneMonitorEditor-BVdAyhJk.js → SceneMonitorEditor-CrDKfkgT.js} +1 -1
  38. package/dist/assets/SessionsList-Ca-zN1Fi.js +2 -0
  39. package/dist/assets/{Showroom-DlUMfmmX.js → Showroom-B9HZ38O5.js} +1 -1
  40. package/dist/assets/{System-xDNpG66Z.js → System-CHEbMPI_.js} +1 -1
  41. package/dist/assets/{Terminal-BKTT8qvq.js → Terminal-CWFZuQLg.js} +3 -3
  42. package/dist/assets/{Viewer-Cu8oX6VE.js → Viewer-DwNVIy-u.js} +1 -1
  43. package/dist/assets/{_virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-20B8V9NZ.js → _virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-QiJARN9B.js} +1 -1
  44. package/dist/assets/{addon-icons-context-BuuVE9Wr.js → addon-icons-context-lrP_33gc.js} +1 -1
  45. package/dist/assets/{archive-CfJx72Ya.js → archive-Brq5E-qM.js} +1 -1
  46. package/dist/assets/{assignment-candidates-B51c4fCG.js → assignment-candidates-BcnFMc1B.js} +1 -1
  47. package/dist/assets/{authed-media-iyqNF0CO.js → authed-media-CnaIhiH3.js} +1 -1
  48. package/dist/assets/{bell-off-D1QNHdBJ.js → bell-off-CDjOfT8K.js} +1 -1
  49. package/dist/assets/{board-model-4EY3kgfH.js → board-model-gmvqxkjB.js} +1 -1
  50. package/dist/assets/{boxes-DomeSuUE.js → boxes-0ut2NdHU.js} +1 -1
  51. package/dist/assets/circle-slash-CaxGVwz5.js +1 -0
  52. package/dist/assets/client-DvJxGh2F.js +358 -0
  53. package/dist/assets/{cloud-upload-J0OXIjbZ.js → cloud-upload-M9JxZe_d.js} +1 -1
  54. package/dist/assets/crop-eK4NEtXI.js +1 -0
  55. package/dist/assets/{device-integration-icon-BQEjbsKG.js → device-integration-icon-0oWIIjcP.js} +1 -1
  56. package/dist/assets/device-picker-model-CUPf26ML.js +1 -0
  57. package/dist/assets/{dist-DcarhQ77.js → dist-B9cEBPZ1.js} +1 -1
  58. package/dist/assets/{eraser-DdaeWuQ6.js → eraser-Bs0PJaPY.js} +1 -1
  59. package/dist/assets/{format-Bq6kzos8.js → format-CIO4xeN9.js} +1 -1
  60. package/dist/assets/{hard-drive-download-YerwrGPA.js → hard-drive-download-iRJR_Xj9.js} +1 -1
  61. package/dist/assets/{hostInit-B6UQXYd9.js → hostInit-DB6u6qxU.js} +1 -1
  62. package/dist/assets/i18n-xhwARoF0.js +1 -0
  63. package/dist/assets/icons-apbWMCU4.js +1 -0
  64. package/dist/assets/index-C3uCLHv0.js +4 -0
  65. package/dist/assets/index-D4ZlWCxy.css +2 -0
  66. package/dist/assets/{key-CunS-V0Z.js → key-Crd8m-SP.js} +1 -1
  67. package/dist/assets/{key-round-DcVl91E5.js → key-round-DG341WFZ.js} +1 -1
  68. package/dist/assets/{layers-BC3a28BZ.js → layers-BnsQ5ORI.js} +1 -1
  69. package/dist/assets/{linked-devices-model-CWqnVKj5.js → linked-devices-model-BoOq02QT.js} +1 -1
  70. package/dist/assets/{list-ordered-B_2hLh_-.js → list-ordered-BIo7AnFy.js} +1 -1
  71. package/dist/assets/{location-owned-usage-C3ukxAgd.js → location-owned-usage-IF2k-L3A.js} +1 -1
  72. package/dist/assets/{log-in-IPEzbjqk.js → log-in-D1BPSCDn.js} +1 -1
  73. package/dist/assets/{memory-stick-CUBeuzQu.js → memory-stick-CjPBCMfd.js} +1 -1
  74. package/dist/assets/{message-square-plus-DHiayOOs.js → message-square-plus-C4N5hy0x.js} +1 -1
  75. package/dist/assets/{mf-entry-bootstrap-0-976d3c1a.js → mf-entry-bootstrap-0-f45a46c2.js} +2 -2
  76. package/dist/assets/{mic-off-DX_Buyxi.js → mic-off-CgPfA49W.js} +1 -1
  77. package/dist/assets/{monitor-off-Czk3uiUL.js → monitor-off-Ib2v0VDF.js} +1 -1
  78. package/dist/assets/{monitor-smartphone-DhnI06Vd.js → monitor-smartphone-6w2T5Ht_.js} +1 -1
  79. package/dist/assets/mount-CUPf26ML.js +1 -0
  80. package/dist/assets/{player-overlays-DfIXPXfC.js → player-overlays-Dbv95cvz.js} +1 -1
  81. package/dist/assets/{recycle-CIxCuRlw.js → recycle-DcScXiTi.js} +1 -1
  82. package/dist/assets/remoteEntry-CVuKB7K_.js +1 -0
  83. package/dist/assets/{scan-eye-CNch-kOQ.js → scan-eye-CWOvobjP.js} +1 -1
  84. package/dist/assets/{scissors-DAqmNijF.js → scissors-NpyrGUBV.js} +1 -1
  85. package/dist/assets/{search-x-Bam8bduF.js → search-x-CKQw--aU.js} +1 -1
  86. package/dist/assets/{send-DTxEr1U2.js → send-402PlgqT.js} +1 -1
  87. package/dist/assets/{settings-2-Gykf_Jj2.js → settings-2-BbwQVFbm.js} +1 -1
  88. package/dist/assets/{speaker-vU_58Q4N.js → speaker-DCHkSyjS.js} +1 -1
  89. package/dist/assets/src-DntJrWmU.js +67 -0
  90. package/dist/assets/{step-inspector-model-COSP18Eo.js → step-inspector-model-CyqFN-LU.js} +1 -1
  91. package/dist/assets/table-2-CTZnEliG.js +1 -0
  92. package/dist/assets/{timer-reset-BfVqeFHK.js → timer-reset-DZ3bTFWu.js} +1 -1
  93. package/dist/assets/{ungroup-BzhYEwYi.js → ungroup-3fOR8xo7.js} +1 -1
  94. package/dist/assets/{unlink-DcrSLSGi.js → unlink-vu-wpZmU.js} +1 -1
  95. package/dist/assets/{usb-CCxf9eVL.js → usb-CGOBq5r2.js} +1 -1
  96. package/dist/assets/{use-scenes-feed-CCy-Tx5-.js → use-scenes-feed-D80maECB.js} +1 -1
  97. package/dist/assets/{use-stationary-objects-rfvEUY5Q.js → use-stationary-objects-DBEa50KS.js} +1 -1
  98. package/dist/assets/useEventInvalidation-CUPf26ML.js +1 -0
  99. package/dist/assets/{useNodeUrlSelection-BDqOR0oD.js → useNodeUrlSelection-DGV2ltbG.js} +1 -1
  100. package/dist/assets/user-round-CmncOV9r.js +1 -0
  101. package/dist/assets/{user-x-DNQnP84p.js → user-x-CjUfhy0O.js} +1 -1
  102. package/dist/assets/{video-FHJCba2c.js → video-D7jv0spx.js} +1 -1
  103. package/dist/assets/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-BBtNcF2c.js → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-CglCXJMd.js} +2 -2
  104. package/dist/index.html +10 -10
  105. package/dist/server/addon.js +1 -1
  106. package/package.json +1 -1
  107. package/dist/assets/Addons-BQclhgQv.js +0 -5
  108. package/dist/assets/AiProfiles-zhlwR2_B.js +0 -3
  109. package/dist/assets/Build-DMVYWc57.js +0 -40
  110. package/dist/assets/CompositionCreateForm-ZntjBNdS.js +0 -1
  111. package/dist/assets/CompositionEditorPage-CpvZY109.js +0 -1
  112. package/dist/assets/Data-NzOvsB8O.js +0 -2
  113. package/dist/assets/History-D-T-XA80.js +0 -1
  114. package/dist/assets/Identity-DmBhBZsL.js +0 -1
  115. package/dist/assets/IntegrationDetail-0C2a7iSq.js +0 -1
  116. package/dist/assets/IntegrationHub-DdxMGRIt.js +0 -1
  117. package/dist/assets/Integrations-aOO9hE39.js +0 -1
  118. package/dist/assets/Integrations-eKDwugCV.js +0 -1
  119. package/dist/assets/Locations-D4YphIdu.js +0 -3
  120. package/dist/assets/Notifications-B7JOfwPI.js +0 -1
  121. package/dist/assets/Pipeline-DKfkLPEM.js +0 -1
  122. package/dist/assets/Recordings-OmewxCzq.js +0 -1
  123. package/dist/assets/SessionsList-CTsz8qck.js +0 -2
  124. package/dist/assets/circle-slash-CPzLe6ak.js +0 -1
  125. package/dist/assets/client-fa7ANI4X.js +0 -358
  126. package/dist/assets/crop-4oyysRxn.js +0 -1
  127. package/dist/assets/device-picker-model-CsITnnp7.js +0 -1
  128. package/dist/assets/i18n-l_m6iBJW.js +0 -1
  129. package/dist/assets/icons-BBOyPCCy.js +0 -1
  130. package/dist/assets/index-B4dcSKZt.css +0 -2
  131. package/dist/assets/index-Ctkts88E.js +0 -4
  132. package/dist/assets/mount-CsITnnp7.js +0 -1
  133. package/dist/assets/remoteEntry-isS_YRZd.js +0 -1
  134. package/dist/assets/src-Cy_bal4g.js +0 -67
  135. package/dist/assets/useEventInvalidation-CsITnnp7.js +0 -1
  136. package/dist/assets/user-round-D6lnAuWE.js +0 -1
@@ -1 +1 @@
1
- import{C as e,K as t,S as n,a as r,et as i}from"./_virtual_mf___mfe_internal__admin_ui_host__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-CEyXHAdg.js";import{ot as a}from"./player-overlays-DfIXPXfC.js";import{cn as o,dn as s,fn as c,ln as l,on as u,pn as d,sn as f,un as p}from"./client-fa7ANI4X.js";import{L as m}from"./src-Cy_bal4g.js";import{t as h}from"./i18n-l_m6iBJW.js";import{t as g}from"./useTranslation-BJr-n0es.js";import"./index-Ctkts88E.js";i();var _=6e4;function v(e){let t=a();return r({queryKey:[`device-do-action`,`bound-caps`,e],enabled:e>0,staleTime:_,queryFn:async()=>{let n=await t.trpcClient.deviceManager.getBindings.query({deviceId:e});return[...new Set(n.entries.map(e=>e.capName))].sort((e,t)=>e.localeCompare(t))}})}function y(e){let t=a(),n=[...new Set(e.filter(e=>e>0))].sort((e,t)=>e-t);return r({queryKey:[`device-do-action`,`bound-caps-batch`,n],enabled:n.length>0,staleTime:_,queryFn:async()=>{let e=await t.trpcClient.deviceManager.getBindingsBatch.query({deviceIds:n}),r=new Map;for(let t of e)r.set(t.deviceId,[...new Set(t.entries.map(e=>e.capName))].sort((e,t)=>e.localeCompare(t)));return r}})}var b=`mt-1 w-full rounded border border-border bg-background px-2 py-1 text-xs`,x=`block text-[11px] font-medium text-foreground`,S=`deviceId`;function C(e,t){return t.length===0?0:t.length===1?t[0]:t.find(t=>!e.includes(t))??t[t.length-1]}function w(e,t,n){if(t.length===0)return[];if(t.length===1)return t;let r=t.find(t=>!e.includes(t));if(r===void 0)return t;let i=n(r);if(i===void 0)return[r];let a=e[0]??t.find(e=>e!==r);if(a===void 0)return[r];let o=n(a);return o===void 0||!d(o,i)?[r]:t.filter(e=>{let t=n(e);return t!==void 0&&d(o,t)})}function T(e){return e.length===0?0:e.length===1?e[0]:[...e]}function E(e){return typeof e==`number`?e>0?[e]:[]:Array.isArray(e)?e.filter(e=>e>0):[]}function D(e,t){return{deviceId:e,cap:t.cap,method:t.method,...t.args===void 0?{}:{args:{...t.args}}}}function O(e,t){return h.t(`deviceDoAction.customLabel`,{name:`${e}.${t}`})}function k({value:r,onChange:i,devices:a,listState:h,fleet:_,allowTriggerDevice:k=!1,allowMultiSameFamily:A=!1,testId:j=`device-do-action`}){let{t:M}=g(),N=typeof r.deviceId!=`number`&&!Array.isArray(r.deviceId),P=E(r.deviceId),F=t(()=>a.filter(e=>s(String(e.type??``))),[a]),I=t(()=>{let e=new Map;for(let t of F)t.type!==void 0&&t.type!==null&&e.set(t.id,String(t.type));return e},[F]),L=t(()=>{if(!A||P.length===0)return F;let e=I.get(P[0]);return e===void 0?F:F.filter(t=>{if(P.includes(t.id))return!0;let n=t.type!==void 0&&t.type!==null?String(t.type):void 0;return n!==void 0&&d(e,n)})},[A,P,F,I]),R=v(!A&&P.length===1?P[0]:0),z=y(A?P:[]),B=t(()=>N?l():P.length===0?[]:A?z.isLoading&&z.data===void 0?[]:o(P.map(e=>({boundCaps:z.data?.get(e),deviceType:I.get(e)}))):R.data===void 0&&R.isLoading?[]:f({boundCaps:R.data,deviceType:I.get(P[0])}),[N,P,A,z.data,z.isLoading,R.data,R.isLoading,I]),V=p(r.cap,r.method,r.args),H=c(r.cap,r.method,r.args),U=r.cap!==``&&r.method!==``&&H===null&&(N||P.length>0),W=A?z.isLoading:R.isLoading,G=A?z.isError:R.isError,K=e=>{if(e.startsWith(`custom:`))return;let t=u.find(t=>t.id===e);t!==void 0&&i(D(N?r.deviceId:P.length>0?T(P):F[0]?.id??0,t))};return e(`div`,{className:`flex min-w-0 flex-1 flex-col gap-2`,"data-testid":j,children:[k&&e(`div`,{className:`w-full max-w-xs`,children:[n(`label`,{className:x,children:M(`deviceDoAction.deviceDoActionFields.target`,`Target`)}),e(`select`,{className:b,"data-testid":`${j}-target`,value:N?`trigger`:`device`,onChange:e=>{if(e.target.value===`trigger`){i({deviceId:{$var:S},cap:``,method:``});return}i({deviceId:F[0]?.id??0,cap:``,method:``})},children:[n(`option`,{value:`device`,children:M(`deviceDoAction.deviceDoActionFields.specificDevice`,`Specific device`)}),n(`option`,{value:`trigger`,children:M(`deviceDoAction.deviceDoActionFields.theDeviceThatTriggeredThis`,`The device that triggered this run`)})]})]}),!N&&e(`div`,{"data-testid":`${j}-device`,children:[n(`label`,{className:x,children:M(`deviceDoAction.deviceLabel`,{count:A?2:1})}),n(m,{devices:L,listState:h,..._===void 0?{}:{fleet:_},value:[...P],onChange:e=>{i({deviceId:T(A?w(P,e,e=>I.get(e)):(()=>{let t=C(P,e);return t>0?[t]:[]})()),cap:``,method:``})},emptyLabel:A?`No devices selected`:`No device selected`,noun:`device`,testId:`${j}-device-picker`}),A&&P.length>1&&n(`p`,{className:`mt-1 text-[11px] text-foreground-subtle`,children:M(`deviceDoAction.deviceDoActionFields.sameFamilyOnlyTheAction`,`Same family only — the action runs on each selected device.`)})]}),e(`div`,{className:`w-full max-w-sm`,children:[n(`label`,{className:x,children:M(`deviceDoAction.deviceDoActionFields.action`,`Action`)}),e(`select`,{className:b,"data-testid":`${j}-action`,value:V===`custom:${r.cap}.${r.method}`?V:H?.id??``,disabled:!N&&(P.length===0||W),onChange:e=>K(e.target.value),children:[n(`option`,{value:``,children:!N&&P.length===0?M(`deviceDoAction.deviceDoActionFields.pickADeviceFirst`,`Pick a device first`):W?M(`deviceDoAction.deviceDoActionFields.loadingActions`,`Loading actions…`):B.length===0?M(`deviceDoAction.deviceDoActionFields.noActionsForThisDevice`,`No actions for this device`):M(`deviceDoAction.deviceDoActionFields.selectAnAction`,`Select an action…`)}),U&&n(`option`,{value:V,children:O(r.cap,r.method)}),B.map(e=>n(`option`,{value:e.id,children:e.label},e.id))]}),G&&n(`p`,{className:`mt-1 text-[11px] text-warning`,children:M(`deviceDoAction.deviceDoActionFields.couldNotReadThisDevice`,`Could not read this device’s capabilities.`)})]}),H?.openArgs!==void 0&&H.openArgs.length>0&&n(`div`,{className:`flex flex-col gap-2`,children:H.openArgs.map(t=>{let a=r.args?.[t.key],o=typeof a==`string`||typeof a==`number`?String(a):``;return e(`div`,{className:`w-full max-w-sm`,children:[n(`label`,{className:x,htmlFor:`${j}-${t.key}`,children:t.label}),n(`input`,{id:`${j}-${t.key}`,className:b,"data-testid":`${j}-${t.key}`,type:t.kind===`number`?`number`:`text`,value:o,onChange:e=>{let n=e.target.value,a=r.args===void 0?{}:{...r.args};if(n===``)delete a[t.key];else if(t.kind===`number`){let e=Number(n);Number.isNaN(e)?delete a[t.key]:a[t.key]=e}else a[t.key]=n;i(Object.keys(a).length>0?{...r,args:a}:{deviceId:r.deviceId,cap:r.cap,method:r.method})}})]},t.key)})})]})}export{k as t};
1
+ import{C as e,K as t,S as n,a as r,et as i}from"./_virtual_mf___mfe_internal__admin_ui_host__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-CEyXHAdg.js";import{ot as a}from"./player-overlays-Dbv95cvz.js";import{cn as o,dn as s,fn as c,ln as l,on as u,pn as d,sn as f,un as p}from"./client-DvJxGh2F.js";import{R as m}from"./src-DntJrWmU.js";import{t as h}from"./i18n-xhwARoF0.js";import{t as g}from"./useTranslation-BJr-n0es.js";import"./index-C3uCLHv0.js";i();var _=6e4;function v(e){let t=a();return r({queryKey:[`device-do-action`,`bound-caps`,e],enabled:e>0,staleTime:_,queryFn:async()=>{let n=await t.trpcClient.deviceManager.getBindings.query({deviceId:e});return[...new Set(n.entries.map(e=>e.capName))].sort((e,t)=>e.localeCompare(t))}})}function y(e){let t=a(),n=[...new Set(e.filter(e=>e>0))].sort((e,t)=>e-t);return r({queryKey:[`device-do-action`,`bound-caps-batch`,n],enabled:n.length>0,staleTime:_,queryFn:async()=>{let e=await t.trpcClient.deviceManager.getBindingsBatch.query({deviceIds:n}),r=new Map;for(let t of e)r.set(t.deviceId,[...new Set(t.entries.map(e=>e.capName))].sort((e,t)=>e.localeCompare(t)));return r}})}var b=`mt-1 w-full rounded border border-border bg-background px-2 py-1 text-xs`,x=`block text-[11px] font-medium text-foreground`,S=`deviceId`;function C(e,t){return t.length===0?0:t.length===1?t[0]:t.find(t=>!e.includes(t))??t[t.length-1]}function w(e,t,n){if(t.length===0)return[];if(t.length===1)return t;let r=t.find(t=>!e.includes(t));if(r===void 0)return t;let i=n(r);if(i===void 0)return[r];let a=e[0]??t.find(e=>e!==r);if(a===void 0)return[r];let o=n(a);return o===void 0||!d(o,i)?[r]:t.filter(e=>{let t=n(e);return t!==void 0&&d(o,t)})}function T(e){return e.length===0?0:e.length===1?e[0]:[...e]}function E(e){return typeof e==`number`?e>0?[e]:[]:Array.isArray(e)?e.filter(e=>e>0):[]}function D(e,t){return{deviceId:e,cap:t.cap,method:t.method,...t.args===void 0?{}:{args:{...t.args}}}}function O(e,t){return h.t(`deviceDoAction.customLabel`,{name:`${e}.${t}`})}function k({value:r,onChange:i,devices:a,listState:h,fleet:_,allowTriggerDevice:k=!1,allowMultiSameFamily:A=!1,testId:j=`device-do-action`}){let{t:M}=g(),N=typeof r.deviceId!=`number`&&!Array.isArray(r.deviceId),P=E(r.deviceId),F=t(()=>a.filter(e=>s(String(e.type??``))),[a]),I=t(()=>{let e=new Map;for(let t of F)t.type!==void 0&&t.type!==null&&e.set(t.id,String(t.type));return e},[F]),L=t(()=>{if(!A||P.length===0)return F;let e=I.get(P[0]);return e===void 0?F:F.filter(t=>{if(P.includes(t.id))return!0;let n=t.type!==void 0&&t.type!==null?String(t.type):void 0;return n!==void 0&&d(e,n)})},[A,P,F,I]),R=v(!A&&P.length===1?P[0]:0),z=y(A?P:[]),B=t(()=>N?l():P.length===0?[]:A?z.isLoading&&z.data===void 0?[]:o(P.map(e=>({boundCaps:z.data?.get(e),deviceType:I.get(e)}))):R.data===void 0&&R.isLoading?[]:f({boundCaps:R.data,deviceType:I.get(P[0])}),[N,P,A,z.data,z.isLoading,R.data,R.isLoading,I]),V=p(r.cap,r.method,r.args),H=c(r.cap,r.method,r.args),U=r.cap!==``&&r.method!==``&&H===null&&(N||P.length>0),W=A?z.isLoading:R.isLoading,G=A?z.isError:R.isError,K=e=>{if(e.startsWith(`custom:`))return;let t=u.find(t=>t.id===e);t!==void 0&&i(D(N?r.deviceId:P.length>0?T(P):F[0]?.id??0,t))};return e(`div`,{className:`flex min-w-0 flex-1 flex-col gap-2`,"data-testid":j,children:[k&&e(`div`,{className:`w-full max-w-xs`,children:[n(`label`,{className:x,children:M(`deviceDoAction.deviceDoActionFields.target`,`Target`)}),e(`select`,{className:b,"data-testid":`${j}-target`,value:N?`trigger`:`device`,onChange:e=>{if(e.target.value===`trigger`){i({deviceId:{$var:S},cap:``,method:``});return}i({deviceId:F[0]?.id??0,cap:``,method:``})},children:[n(`option`,{value:`device`,children:M(`deviceDoAction.deviceDoActionFields.specificDevice`,`Specific device`)}),n(`option`,{value:`trigger`,children:M(`deviceDoAction.deviceDoActionFields.theDeviceThatTriggeredThis`,`The device that triggered this run`)})]})]}),!N&&e(`div`,{"data-testid":`${j}-device`,children:[n(`label`,{className:x,children:M(`deviceDoAction.deviceLabel`,{count:A?2:1})}),n(m,{devices:L,listState:h,..._===void 0?{}:{fleet:_},value:[...P],onChange:e=>{i({deviceId:T(A?w(P,e,e=>I.get(e)):(()=>{let t=C(P,e);return t>0?[t]:[]})()),cap:``,method:``})},emptyLabel:A?`No devices selected`:`No device selected`,noun:`device`,testId:`${j}-device-picker`}),A&&P.length>1&&n(`p`,{className:`mt-1 text-[11px] text-foreground-subtle`,children:M(`deviceDoAction.deviceDoActionFields.sameFamilyOnlyTheAction`,`Same family only — the action runs on each selected device.`)})]}),e(`div`,{className:`w-full max-w-sm`,children:[n(`label`,{className:x,children:M(`deviceDoAction.deviceDoActionFields.action`,`Action`)}),e(`select`,{className:b,"data-testid":`${j}-action`,value:V===`custom:${r.cap}.${r.method}`?V:H?.id??``,disabled:!N&&(P.length===0||W),onChange:e=>K(e.target.value),children:[n(`option`,{value:``,children:!N&&P.length===0?M(`deviceDoAction.deviceDoActionFields.pickADeviceFirst`,`Pick a device first`):W?M(`deviceDoAction.deviceDoActionFields.loadingActions`,`Loading actions…`):B.length===0?M(`deviceDoAction.deviceDoActionFields.noActionsForThisDevice`,`No actions for this device`):M(`deviceDoAction.deviceDoActionFields.selectAnAction`,`Select an action…`)}),U&&n(`option`,{value:V,children:O(r.cap,r.method)}),B.map(e=>n(`option`,{value:e.id,children:e.label},e.id))]}),G&&n(`p`,{className:`mt-1 text-[11px] text-warning`,children:M(`deviceDoAction.deviceDoActionFields.couldNotReadThisDevice`,`Could not read this device’s capabilities.`)})]}),H?.openArgs!==void 0&&H.openArgs.length>0&&n(`div`,{className:`flex flex-col gap-2`,children:H.openArgs.map(t=>{let a=r.args?.[t.key],o=typeof a==`string`||typeof a==`number`?String(a):``;return e(`div`,{className:`w-full max-w-sm`,children:[n(`label`,{className:x,htmlFor:`${j}-${t.key}`,children:t.label}),n(`input`,{id:`${j}-${t.key}`,className:b,"data-testid":`${j}-${t.key}`,type:t.kind===`number`?`number`:`text`,value:o,onChange:e=>{let n=e.target.value,a=r.args===void 0?{}:{...r.args};if(n===``)delete a[t.key];else if(t.kind===`number`){let e=Number(n);Number.isNaN(e)?delete a[t.key]:a[t.key]=e}else a[t.key]=n;i(Object.keys(a).length>0?{...r,args:a}:{deviceId:r.deviceId,cap:r.cap,method:r.method})}})]},t.key)})})]})}export{k as t};
@@ -1 +1 @@
1
- import{C as e,K as t,R as n,S as r,et as i,o as a}from"./_virtual_mf___mfe_internal__admin_ui_host__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-CEyXHAdg.js";import{Di as o,Nt as s,ot as c}from"./player-overlays-DfIXPXfC.js";import{At as l,Qa as u,do as d,jt as f,ls as p,r as m,ro as h,xo as g}from"./src-Cy_bal4g.js";import{t as _}from"./useTranslation-BJr-n0es.js";import{fr as v,sr as y}from"./index-Ctkts88E.js";import{t as b}from"./AdminPage-UX2_-EVb.js";import"./useEventInvalidation-CsITnnp7.js";import{t as x}from"./device-integration-icon-BQEjbsKG.js";i();var S=32;function C(e,t){let n=e=>t(e).kind===`orphan`,r=new Set;for(let t of e)n(t)&&r.add(t.id);let i=new Map;for(let t of e)i.set(t.id,t);let a=(e,t=0)=>{if(t>S)return!1;if(r.has(e.id))return!0;if(e.parentDeviceId==null)return!1;let n=i.get(e.parentDeviceId);return n?a(n,t+1):!1},o=[],s=[];for(let t of e)a(t)?s.push(t):o.push(t);return{activeDevices:o,orphanDevices:s}}function w(){let{t:i}=_(),S=v(),w=c(),T=a();m([`deviceManager`],[`device.registered`,`device.unregistered`,`device.online`,`device.offline`,`device.disabled`,`device.enabled`]),m([`integrations`],[`integration.enabled`,`integration.disabled`,`integration.deleted`,`provider.started`,`provider.stopped`,`addon.installed`,`addon.uninstalled`,`addon.started`,`addon.stopped`]);let{data:E}=d({projection:`slim`}),{data:D}=p(void 0),O=g({onSuccess:()=>{T.invalidateQueries({queryKey:[[`deviceManager`]]})}}),k=u({onSuccess:()=>{T.invalidateQueries({queryKey:[[`deviceManager`]]})}}),A=h({onSuccess:()=>{T.invalidateQueries({queryKey:[[`deviceManager`]]})}}),j=t(()=>E??[],[E]),M=t(()=>f(D),[D]),{activeDevices:N,orphanDevices:P}=t(()=>C(j,M),[j,M]),F=t(()=>{let e=new Map;for(let t of j)e.set(t.id,{id:t.id,name:t.name??t.stableId??`#${String(t.id)}`});return e},[j]),I=n(e=>F.get(e)??null,[F]),L=t(()=>(D??[]).map(e=>({id:e.id,name:e.name??e.addonId,icon:r(y,{type:e.addonId,size:`sm`})})),[D]),R=n(e=>S(`/devices/${String(e)}`),[S]);return e(b,{icon:o,title:i(`nav.devices`,`Devices`),children:[r(l,{context:`devices`,devices:N,trpc:w.trpcClient,filters:{integrations:L},integrationOf:M,resolveIntegrationIcon:x,resolveParent:I,onNavigate:R,batchActions:{remove:O.mutate,disable:k.mutate,enable:A.mutate}}),P.length>0&&e(`div`,{className:`mt-6 space-y-2`,children:[e(`div`,{className:`flex items-baseline gap-2`,children:[r(s,{className:`h-3.5 w-3.5 text-warning shrink-0`}),r(`h2`,{className:`text-sm font-semibold text-foreground`,children:i(`devices.orphanDevices`,`Orphan devices`)}),r(`span`,{className:`text-[10px] text-foreground-subtle`,children:i(`common.deviceOrphans`,{count:P.length})})]}),e(`div`,{className:`rounded-lg border border-warning/30 bg-warning/5 p-2`,children:[r(`p`,{className:`text-[11px] text-foreground-subtle px-2 pb-2`,children:i(`devices.theseDevicesReferenceAnIntegration`,"These devices reference an integration that is no longer registered (their `integrationId`, or — for older devices without one — their `addonId`). Delete them, or re-install the missing integration to bring them back online. The provider badge beside each row is the addon that serves it.")}),r(l,{context:`devices`,devices:P,trpc:w.trpcClient,integrationOf:M,urlScope:`nested`,lsKey:`devices:orphan`,resolveIntegrationIcon:x,resolveParent:I,onNavigate:R})]})]})]})}export{w as DevicesPage};
1
+ import{C as e,K as t,R as n,S as r,et as i,o as a}from"./_virtual_mf___mfe_internal__admin_ui_host__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-CEyXHAdg.js";import{Di as o,Nt as s,ot as c}from"./player-overlays-Dbv95cvz.js";import{$a as l,Mt as u,So as d,fo as f,io as p,jt as m,r as h,us as g}from"./src-DntJrWmU.js";import{t as _}from"./useTranslation-BJr-n0es.js";import{fr as v,sr as y}from"./index-C3uCLHv0.js";import{t as b}from"./AdminPage-3JxWocN3.js";import"./useEventInvalidation-CUPf26ML.js";import{t as x}from"./device-integration-icon-0oWIIjcP.js";i();var S=32;function C(e,t){let n=e=>t(e).kind===`orphan`,r=new Set;for(let t of e)n(t)&&r.add(t.id);let i=new Map;for(let t of e)i.set(t.id,t);let a=(e,t=0)=>{if(t>S)return!1;if(r.has(e.id))return!0;if(e.parentDeviceId==null)return!1;let n=i.get(e.parentDeviceId);return n?a(n,t+1):!1},o=[],s=[];for(let t of e)a(t)?s.push(t):o.push(t);return{activeDevices:o,orphanDevices:s}}function w(){let{t:i}=_(),S=v(),w=c(),T=a();h([`deviceManager`],[`device.registered`,`device.unregistered`,`device.online`,`device.offline`,`device.disabled`,`device.enabled`]),h([`integrations`],[`integration.enabled`,`integration.disabled`,`integration.deleted`,`provider.started`,`provider.stopped`,`addon.installed`,`addon.uninstalled`,`addon.started`,`addon.stopped`]);let{data:E}=f({projection:`slim`}),{data:D}=g(void 0),O=d({onSuccess:()=>{T.invalidateQueries({queryKey:[[`deviceManager`]]})}}),k=l({onSuccess:()=>{T.invalidateQueries({queryKey:[[`deviceManager`]]})}}),A=p({onSuccess:()=>{T.invalidateQueries({queryKey:[[`deviceManager`]]})}}),j=t(()=>E??[],[E]),M=t(()=>u(D),[D]),{activeDevices:N,orphanDevices:P}=t(()=>C(j,M),[j,M]),F=t(()=>{let e=new Map;for(let t of j)e.set(t.id,{id:t.id,name:t.name??t.stableId??`#${String(t.id)}`});return e},[j]),I=n(e=>F.get(e)??null,[F]),L=t(()=>(D??[]).map(e=>({id:e.id,name:e.name??e.addonId,icon:r(y,{type:e.addonId,size:`sm`})})),[D]),R=n(e=>S(`/devices/${String(e)}`),[S]);return e(b,{icon:o,title:i(`nav.devices`,`Devices`),children:[r(m,{context:`devices`,devices:N,trpc:w.trpcClient,filters:{integrations:L},integrationOf:M,resolveIntegrationIcon:x,resolveParent:I,onNavigate:R,batchActions:{remove:O.mutate,disable:k.mutate,enable:A.mutate}}),P.length>0&&e(`div`,{className:`mt-6 space-y-2`,children:[e(`div`,{className:`flex items-baseline gap-2`,children:[r(s,{className:`h-3.5 w-3.5 text-warning shrink-0`}),r(`h2`,{className:`text-sm font-semibold text-foreground`,children:i(`devices.orphanDevices`,`Orphan devices`)}),r(`span`,{className:`text-[10px] text-foreground-subtle`,children:i(`common.deviceOrphans`,{count:P.length})})]}),e(`div`,{className:`rounded-lg border border-warning/30 bg-warning/5 p-2`,children:[r(`p`,{className:`text-[11px] text-foreground-subtle px-2 pb-2`,children:i(`devices.theseDevicesReferenceAnIntegration`,"These devices reference an integration that is no longer registered (their `integrationId`, or — for older devices without one — their `addonId`). Delete them, or re-install the missing integration to bring them back online. The provider badge beside each row is the addon that serves it.")}),r(m,{context:`devices`,devices:P,trpc:w.trpcClient,integrationOf:M,urlScope:`nested`,lsKey:`devices:orphan`,resolveIntegrationIcon:x,resolveParent:I,onNavigate:R})]})]})]})}export{w as DevicesPage};
@@ -1 +1 @@
1
- import{C as e,K as t,S as n,V as r,Y as i,d as a,et as o,u as s}from"./_virtual_mf___mfe_internal__admin_ui_host__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-CEyXHAdg.js";import{it as c}from"./player-overlays-DfIXPXfC.js";import{da as l}from"./client-fa7ANI4X.js";import{D as u,M as d,O as f,P as p,T as m,y as h}from"./__vite-browser-external-BlMfPwfH.js";import{Tn as g,rn as _,sn as v,vd as y,yn as b}from"./src-Cy_bal4g.js";import{t as x}from"./useTranslation-BJr-n0es.js";o();var S=p([f({kind:m(`adaptive`)}),f({kind:m(`profile`),profile:l})]),C=f({serverUrl:d().min(1),token:d().min(1),deviceId:u().int().nonnegative(),target:S,muted:h()});function w(e,t){let n=t===void 0?{type:`state`,state:e}:{type:`state`,state:e,message:t};window.ReactNativeWebView?.postMessage(JSON.stringify(n))}function T(e){switch(e){case`playing`:return`playing`;case`error`:return`error`;case`connecting`:case`disconnected`:case`idle`:return`connecting`}}function E(e){return e.kind===`adaptive`?{kind:`adaptive`}:{kind:`profile`,profile:e.profile}}function D(e){return e.kind===`adaptive`?`embed:adaptive`:`embed:profile:${e.profile}`}function O(){let e=window.__CAMSTACK_EMBED__;if(e==null)return{ok:!1,error:`window.__CAMSTACK_EMBED__ is not set`};let t=C.safeParse(e);return t.success?{ok:!0,config:t.data}:{ok:!1,error:t.error.issues.map(e=>`${e.path.join(`.`)||`(root)`}: ${e.message}`).join(`; `)}}function k({message:t}){let{t:n}=x();return r(()=>{w(`error`,t)},[t]),e(`div`,{style:{position:`fixed`,inset:0,display:`flex`,alignItems:`center`,justifyContent:`center`,background:`#000`,color:`#f87171`,fontFamily:`system-ui, sans-serif`,fontSize:13,padding:16,textAlign:`center`},children:[n(`embedPlayerPage.embedConfigError`,`Embed config error:`),` `,t]})}function A({system:e,deviceId:a,initialTarget:o,initialMuted:s}){let[c,l]=i(o),[u,d]=i(s),{handleOffer:f,getIceServers:p,addIceCandidate:m,getIceCandidates:h,closeSession:_,getSessionState:v,getSessionDebug:y,applyDownlinkProbe:x}=b(e.trpcClient,a),C=t(()=>E(c),[c]),O=t(()=>(e,t)=>f(C,e,t),[f,C]),k=t(()=>(e,t,n)=>f(n,t,e),[f]);r(()=>(window.__camstackEmbed={setMuted:e=>d(e),setTarget:e=>{let t=S.safeParse(e);t.success&&l(t.data)}},()=>{window.__camstackEmbed&&delete window.__camstackEmbed}),[]);let A=D(c);return n(`div`,{style:{position:`fixed`,inset:0,width:`100vw`,height:`100vh`,background:`#000`},children:n(g,{serverUrl:e.serverUrl,streamKey:A,autoPlay:!0,muted:u,showControls:!1,className:`w-full h-full`,getSessionDebug:y,applyDownlinkProbe:x,handleOffer:O,reoffer:k,getSessionState:v,getIceServers:p,addIceCandidate:m,getIceCandidates:h,closeSession:_,onStateChange:e=>w(T(e)),onError:e=>w(`error`,e)},A)})}function j(){let{t:e}=x(),i=t(()=>O(),[]),o=t(()=>{if(!i.ok)return null;let e=v({serverUrl:i.config.serverUrl,token:i.config.token}),t=new a({defaultOptions:{queries:{retry:!1,refetchOnWindowFocus:!1}}});return _(t),{system:e,queryClient:t}},[i]);return r(()=>{if(o)return()=>{o.system.close()}},[o]),i.ok?o?n(c,{system:o.system,children:n(s,{client:o.queryClient,children:n(y.Provider,{client:o.system.trpcClient,queryClient:o.queryClient,children:n(A,{system:o.system,deviceId:i.config.deviceId,initialTarget:i.config.target,initialMuted:i.config.muted})})})}):n(k,{message:e(`embedPlayerPage.failedToInitialiseTheEmbed`,`Failed to initialise the embed player`)}):n(k,{message:i.error})}export{j as EmbedPlayerPage};
1
+ import{C as e,K as t,S as n,V as r,Y as i,d as a,et as o,u as s}from"./_virtual_mf___mfe_internal__admin_ui_host__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-CEyXHAdg.js";import{it as c}from"./player-overlays-Dbv95cvz.js";import{da as l}from"./client-DvJxGh2F.js";import{D as u,M as d,O as f,P as p,T as m,y as h}from"./__vite-browser-external-BlMfPwfH.js";import{En as g,bn as _,cn as v,in as y,yd as b}from"./src-DntJrWmU.js";import{t as x}from"./useTranslation-BJr-n0es.js";o();var S=p([f({kind:m(`adaptive`)}),f({kind:m(`profile`),profile:l})]),C=f({serverUrl:d().min(1),token:d().min(1),deviceId:u().int().nonnegative(),target:S,muted:h()});function w(e,t){let n=t===void 0?{type:`state`,state:e}:{type:`state`,state:e,message:t};window.ReactNativeWebView?.postMessage(JSON.stringify(n))}function T(e){switch(e){case`playing`:return`playing`;case`error`:return`error`;case`connecting`:case`disconnected`:case`idle`:return`connecting`}}function E(e){return e.kind===`adaptive`?{kind:`adaptive`}:{kind:`profile`,profile:e.profile}}function D(e){return e.kind===`adaptive`?`embed:adaptive`:`embed:profile:${e.profile}`}function O(){let e=window.__CAMSTACK_EMBED__;if(e==null)return{ok:!1,error:`window.__CAMSTACK_EMBED__ is not set`};let t=C.safeParse(e);return t.success?{ok:!0,config:t.data}:{ok:!1,error:t.error.issues.map(e=>`${e.path.join(`.`)||`(root)`}: ${e.message}`).join(`; `)}}function k({message:t}){let{t:n}=x();return r(()=>{w(`error`,t)},[t]),e(`div`,{style:{position:`fixed`,inset:0,display:`flex`,alignItems:`center`,justifyContent:`center`,background:`#000`,color:`#f87171`,fontFamily:`system-ui, sans-serif`,fontSize:13,padding:16,textAlign:`center`},children:[n(`embedPlayerPage.embedConfigError`,`Embed config error:`),` `,t]})}function A({system:e,deviceId:a,initialTarget:o,initialMuted:s}){let[c,l]=i(o),[u,d]=i(s),{handleOffer:f,getIceServers:p,addIceCandidate:m,getIceCandidates:h,closeSession:v,getSessionState:y,getSessionDebug:b,applyDownlinkProbe:x}=_(e.trpcClient,a),C=t(()=>E(c),[c]),O=t(()=>(e,t)=>f(C,e,t),[f,C]),k=t(()=>(e,t,n)=>f(n,t,e),[f]);r(()=>(window.__camstackEmbed={setMuted:e=>d(e),setTarget:e=>{let t=S.safeParse(e);t.success&&l(t.data)}},()=>{window.__camstackEmbed&&delete window.__camstackEmbed}),[]);let A=D(c);return n(`div`,{style:{position:`fixed`,inset:0,width:`100vw`,height:`100vh`,background:`#000`},children:n(g,{serverUrl:e.serverUrl,streamKey:A,autoPlay:!0,muted:u,showControls:!1,className:`w-full h-full`,getSessionDebug:b,applyDownlinkProbe:x,handleOffer:O,reoffer:k,getSessionState:y,getIceServers:p,addIceCandidate:m,getIceCandidates:h,closeSession:v,onStateChange:e=>w(T(e)),onError:e=>w(`error`,e)},A)})}function j(){let{t:e}=x(),i=t(()=>O(),[]),o=t(()=>{if(!i.ok)return null;let e=v({serverUrl:i.config.serverUrl,token:i.config.token}),t=new a({defaultOptions:{queries:{retry:!1,refetchOnWindowFocus:!1}}});return y(t),{system:e,queryClient:t}},[i]);return r(()=>{if(o)return()=>{o.system.close()}},[o]),i.ok?o?n(c,{system:o.system,children:n(s,{client:o.queryClient,children:n(b.Provider,{client:o.system.trpcClient,queryClient:o.queryClient,children:n(A,{system:o.system,deviceId:i.config.deviceId,initialTarget:i.config.target,initialMuted:i.config.muted})})})}):n(k,{message:e(`embedPlayerPage.failedToInitialiseTheEmbed`,`Failed to initialise the embed player`)}):n(k,{message:i.error})}export{j as EmbedPlayerPage};
@@ -1,2 +1,2 @@
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-DfIXPXfC.js";import{$n as g,Ai as _,An as v,Bn as y,Cn as b,Dn as x,En as S,In as C,Kn as w,Li as T,Ln as E,Mi as D,Mn as O,Ni as k,On as A,Qt as j,Rn as M,Si as N,Tn as P,Vn as F,Wt as ee,Zn as te,Zt as I,_i as ne,ai as L,bi as R,ci as re,di as z,fi as ie,hi as ae,ii as oe,ji as se,jn as ce,ki as le,kn as ue,li as de,mn as fe,oi as pe,si as me,ti as he,tn as ge,ui as B,vi as _e,wn as ve,xi as ye,yi as be,zn as xe}from"./client-fa7ANI4X.js";import{t as Se}from"./boxes-DomeSuUE.js";import{$u as Ce,Ar as we,Bo as Te,Er as V,Fn as Ee,Gr as H,In as De,L as Oe,Ln as ke,Mr as Ae,Mt as je,Nr as Me,Qr as Ne,Qu as U,U as Pe,Ur as Fe,Vo as Ie,W as Le,Wn as Re,_r as ze,ai as Be,do as Ve,fr as He,gr as Ue,ii as We,jr as Ge,ls as Ke,mr as qe,ni as Je,pr as Ye,qu as W,ri as Xe,s as Ze,uo as Qe,vd as $e,vr as et,xn as tt}from"./src-Cy_bal4g.js";import{t as G}from"./i18n-l_m6iBJW.js";import{t as K}from"./useTranslation-BJr-n0es.js";import{n as nt}from"./assignment-candidates-B51c4fCG.js";s();function rt({id:e,...t}){return i(tt,{headingId:`customize-${e}`,...t})}function it(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 at(e,t){let n=$e.useQueries(n=>e.map(e=>n.deviceManager.listDeviceIdsByCaps({capNames:[e]},{enabled:t})));return nt(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 ot(e,t){let n=je(e,t);return n.kind===`resolved`?n.integration.name:null}function st(e){let t=Ve({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(()=>it({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:ot(e,r),parentDeviceId:e.parentDeviceId,primaryChildEntityId:e.primaryChildEntityId??null,role:e.role??null}))),[t.status,t.data,i,r])}function ct(e){let t=e?.trim()??``;return t.length>0?t:G.t(`helpers.customize.requestFailed`)}function lt(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=he(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:ct(e.error?.message)}:{kind:`pending`}}function q(e){return e.kind===`present`?e.composition:null}var ut={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 dt(e,t){return t.startsWith(`it`)?e.it:e.en}function ft(e){if(!(`unit`in e))return;let t=e.unit;return typeof t==`string`&&t.length>0?t:void 0}function pt(e,t){let n=fe[e]?.noun;return n===void 0?e.split(`-`).filter(e=>e.length>0).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `):dt(n,t)}function J(e,t,n){let r=fe[e]?.state?.find(e=>e.field===t);if(r!==void 0){let e=dt(r.label,n),t=ft(r);return t===void 0?e:`${e} (${t})`}let i=ut[t];return i===void 0?t:dt(i,n)}function mt(e){return ge.find(t=>t.name===e)}function ht(e){return e===`lastFetchedAt`||e.endsWith(`At`)}function gt(e){let t=ve(e.role);if(t===null||mt(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 _t(e){return e===null?`incomplete`:b(L(e,{lookupCap:oe(ge),sources:new Map,self:null,blockId:null,target:null,peers:[]}).problems)}function vt(e,t){let n=mt(e);return n?.status===void 0?[]:ie(n.status.schema).filter(e=>!ht(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 yt(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 bt(e){return Array.isArray(e)?e.map(bt):typeof e!=`object`||!e?e:Object.fromEntries(Object.entries(e).toSorted(([e],[t])=>e.localeCompare(t)).map(([e,t])=>[e,bt(t)]))}function xt(e){return JSON.stringify(bt(e))}function St(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}:xt(t)===xt(e.composition)?{kind:`noop`}:{kind:`update`,blockId:n,expectedUpdatedAt:e.view.block.updatedAt,composition:t}}}}function Ct(){let{t:e}=K(),t=Fe();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 wt(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 Tt(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 Et(e,t,n,r){return r===null?{kind:`from`,source:e,cap:t,fieldPath:n.path}:wt(r,{source:e,cap:t,fieldPath:n.path,kind:n.kind})}function Dt(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:Et(i,e.cap,t,r)})))}function Ot(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 kt(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function At(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 jt(e,t,n){return kt(t)?At(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`}:At(e.data,n)}function Mt(e,t,n){if(t.binary===!0&&n.cap===`battery`&&n.path===`percentage`){let t=ke(e);return{text:G.t(t?Ee:De),tone:t?`warning`:`normal`}}return{text:n.path===`percentage`?`${Math.round(e)} %`:String(e),tone:`normal`}}function Nt(e,t,n){let r=e?`active`:`muted`;return t.cap===`contact`&&t.path===`entryOpen`?{text:e?n.open:n.closed,tone:r}:D[t.cap]===t.path?{text:e?n.active:n.inactive,tone:r}:{text:String(e),tone:`normal`}}function Pt(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`?Nt(r,t,n):typeof r==`number`?Mt(r,e,t):typeof r==`string`?{text:r,tone:`normal`}:{text:JSON.stringify(r),tone:`normal`}}}}var Ft=0;function It(e){let t=p(),n=Te({deviceId:e?.deviceId??Ft,capName:e?.cap??``},{enabled:e!==null}),r=Ze(t.trpcClient,e?.deviceId??null,e?.cap??``);return e===null?{kind:`absent`}:jt({status:n.status,data:n.data,error:n.error===null||n.error===void 0?null:{message:n.error.message}},r,e.path)}var Lt={muted:`text-foreground-subtle`,active:`text-success`,normal:`text-foreground`,warning:`text-warning`};function Rt({target:e}){let{t}=K(),n=It(e);return e===null?null:i(zt,{display:Pt(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 zt({display:e}){return i(`span`,{className:`text-xs ${Lt[e.tone]}`,title:e.title,children:e.text})}function Bt(e){return e===`avg-round-1`?`customize.fieldsCard.aggregate.avg`:`customize.fieldsCard.aggregate.latest`}function Vt(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function Ht(e,t,n){let r=RegExp(`(?<![A-Za-z0-9_])${Vt(t)}(?![A-Za-z0-9_])`,`g`);return e.replace(r,()=>n)}function Ut(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(R(a.source))??i,c=J(a.cap,a.fieldPath,r);o=Ht(o,e,`${s} · ${c}`)}return $t(o)}var Wt=1e3,Gt=60*Wt,Kt=60*Gt,qt={within:[1],dwell:[1,2],rose:[2]};function Jt(e){if(!Number.isInteger(e)||e<Wt)return null;if(e%Kt===0){let t=e/Kt;return t===1?`1 h`:`${t} h`}if(e%Gt===0){let t=e/Gt;return t===1?`1 min`:`${t} min`}if(e%Wt===0){let t=e/Wt;return t===1?`1 s`:`${t} s`}return null}function Yt(e){return/^\d+$/.test(e.trim())?Jt(Number(e.trim())):null}function Xt(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 Zt(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(qt)){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=Xt(e,a);return o===null?null:{name:n,close:o.close,args:o.args}}return null}function Qt(e){let t=e.args.map(e=>$t(e.text)),n=qt[e.name]??[];if(e.name===`within`){let e=t[1],n=e===void 0?null:Yt(e);if(n!==null)return`within ${n}`}let r=t.map((e,t)=>n.includes(t)?Yt(e)??e.trim():e.trim());return`${e.name}(${r.join(`, `)})`}function $t(e){let t=``,n=0;for(;n<e.length;){let r=Zt(e,n);if(r===null){t+=e[n]??``,n+=1;continue}t+=Qt(r),n=r.close+1}return t}function en(e){for(let t=1;;t++){let n=`s${t}`;if(!e.includes(n))return n}}var tn={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)`},nn=/[A-Za-z_][A-Za-z0-9_]*$/;function rn(e,t,n){let r=nn.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=[...se].filter(e=>e.startsWith(r)).toSorted().map(e=>({kind:`builtin`,label:tn[e]??e,insert:`${e}(`,hintKey:`compositionEditor.builtins.${e}`}));return[...i,...a,...o].slice(0,8)}function an(e,t,n){let r=t-(nn.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 on({label:n,value:r,bindings:a,onChange:s}){let{t:c}=K(),l=t(null),[u,d]=o(r.length),f=rn(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=an(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 sn(e){return{addonId:e.addonId,stableId:e.stableId}}function cn(e){return new Map(e.map(e=>[R(sn(e)),e]))}function ln(e,t,n){if(e.kind===`code`)return{kind:`unavailable`,reason:G.t(`helpers.fieldPreview.codeFields`)};if(e.kind===`expression`&&(z(e.expr,`rose`)||z(e.expr,`count`)))return{kind:`runtime-only`};let r=ye(e).filter(e=>t.get(be(e.source,e.cap))?.kind!==`value`).map(_e);if(r.length>0)return{kind:`waiting`,missing:r};let i=F({source:e,now:n,read:e=>{let n=t.get(be(e.source,e.cap)),r=n?.kind===`value`?Z(n.slice,e.fieldPath):void 0,i=r===void 0?void 0:_(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 un({sliceKey:e,deviceId:t,capName:n,onReading:r}){let i=Ze(p().trpcClient,t,n);return a(()=>{r(e,i===void 0?{kind:`pending`}:{kind:`value`,slice:i})},[e,i,r]),null}function dn(e,t){return[...new Map(ye(e).map(e=>[be(e.source,e.cap),e]))].map(([e,n])=>({key:e,read:n,device:t.get(R(n.source))}))}function fn({source:t}){let{t:n}=K(),a=Ve({projection:`slim`}),[s,c]=o(new Map),l=r((e,t)=>{c(n=>new Map([...n,[e,t]]))},[]),u=dn(t,cn(a.status===`success`?Tt(a.data):[])),d=a.status===`success`?u.filter(e=>e.device===void 0).map(e=>R(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(un,{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(pn,{preview:ln(t,s,Date.now())})]})}function pn({preview:t}){let{t:n}=K();switch(t.kind){case`value`:return e(`strong`,{children:[`→ `,Ot(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 mn(e){return e===`identity`||e===`invert`||e===`threshold`||e===`linear`}function hn(e){return Object.hasOwn(C,e)}function gn(e){return hn(e)?C[e].targets:[]}function _n(e,t){let n=gn(e).find(e=>e.id===t);return n?.cardinality===`keyedArray`?n.fields??[]:[]}function vn(e,t){return gn(e).find(e=>e.id===t)?.traits??[]}function yn(e,t){return e.caps.flatMap(e=>{let n=bn(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 bn(e,t){if(e===null)return null;let n=Z(e[t],`unit`);return typeof n==`string`&&n.length>0?n:null}function xn(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 Sn(e,t,n,r){let i=_n(e,t).find(e=>e.path===n);if(i===void 0)return{ok:!1,reason:`kind`};let a=xn(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(mn);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 Cn(e,t,n){return _n(e,t).find(e=>e.path===n)?.enumValues??[]}function wn(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 Tn(e){if(e.transforms.includes(`identity`))return{kind:`identity`};if(e.transforms.includes(`threshold`)){let t=Dn(e.declared,`threshold`);if(t!==null)return En(t)}if(e.transforms.includes(`linear`)){let t=Dn(e.declared,`linear`);if(t!==null)return En(t)}return{kind:`invert`}}function En(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 On(e);case`enum-map`:return{kind:`identity`}}}function Dn(e,t){return e.find(e=>e.kind===t)??null}function On(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 kn(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 An({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(W,{"aria-label":c(`customize.scalar.stepTransform`),value:o.kind,options:n.map(e=>({value:e,label:c(`customize.scalar.transform.${e}`)})),onChange:e=>s(jn(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(Re,{checked:o.kind===`invert`,onChange:e=>s(e.target.checked?{kind:`invert`}:{kind:`identity`})}),c(`customize.scalar.invert`)]}):null,o.kind===`threshold`&&i(Nn,{declared:r,unit:a,value:o,onChange:s}),o.kind===`linear`&&i(Fn,{declared:r,value:o,onChange:s})]})}function jn(e,t){let n=Dn(t,Mn(e));return n===null?e===`invert`?{kind:`invert`}:{kind:`identity`}:En(n)}function Mn(e){return e===`invert`||e===`threshold`||e===`linear`||e===`enum-map`?e:`identity`}function Nn({declared:t,unit:n,value:r,onChange:a}){let{t:o}=K(),s=n??``,c=Dn(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(W,{"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 Pn(e){return e===null||e.kind!==`linear`||e.clampMin===void 0||e.clampMax===void 0?null:{min:e.clampMin,max:e.clampMax}}function Fn({declared:t,value:n,onChange:r}){let{t:a}=K(),o=Pn(Dn(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(U,{type:`number`,value:Number.isFinite(n)?n:0,onChange:e=>{let t=Number(e.target.value);Number.isFinite(t)&&r(t)}})]})}var In=`kind`,Ln=`unit`,Rn=`unit-unknown`,zn=`compile`,Bn=`dwell`,Vn=`no-value`,Hn=`empty`;function Un(e){return`customize.scalar.previewFailure.${e}`}function Wn(e){return e===`compile`||e===`dwell`||e===`no-value`||e===`empty`}function Gn(e){return e===`identity`||e===`invert`||e===`threshold`||e===`linear`}function Kn(e,t){let n=Object.entries(C).find(([t])=>t===e)?.[1];return n===void 0?null:n.targets.find(e=>e.id===t)??null}function qn(e,t){return Kn(e,t)?.path??null}function Jn(e,t){return e.caps.flatMap(e=>{let n=Yn(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 Yn(e,t){if(e===null)return null;let n=Z(e[t],`unit`);return typeof n==`string`&&n.length>0?n:null}function Xn(e,t){if(t.kind===`boolean`){let n=D[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 Zn(e,t,n){let r=Kn(e,t);if(r===null||r.cardinality!==`scalar`||n.kind===`enum`)return{ok:!1,reason:In};let i=Xn(r.sources,n);if(i===null)return{ok:!1,reason:In};if(i.requiredUnit!==void 0&&n.unit===null)return{ok:!1,reason:Rn};if(i.requiredUnit!==void 0&&n.unit!==i.requiredUnit)return{ok:!1,reason:Ln};let a=i.transformKinds.filter(Gn);return a.length===0?{ok:!1,reason:In}:{ok:!0,valueKind:n.kind,sourceUnit:i.requiredUnit??null,transforms:a,declared:i.transforms}}function Qn(e,t){return t.find(t=>t===e)??null}function $n({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(W,{"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=Qn(e.target.value,n);t!==null&&a(t)}}),i(`p`,{className:`text-[11px] text-foreground-muted`,children:o(`customize.motion.modeLine.${t}`)})]})}function er(e){return[...new Set(e.accept.map(e=>e.cap))]}function tr(e,t){let n=new Set(er(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}`)||(sr(o.type,t.deviceTypes)&&o.caps.some(e=>n.has(e))?i.push(o):a.push(o));return{compatible:i,incompatible:a}}function nr(e,t){return e.filter(e=>t.accept.some(t=>t.cap===e.cap&&t.fieldPath===e.fieldPath&&t.valueKind===e.kind))}function rr(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 ir(e){if(e.selectedIds.length>e.request.max)return{members:e.previous.map(lr),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=ar(r,e);return i===null?(t.push(n),[]):[cr(r,i.cap,i.fieldPath)]}),refused:null,needsField:t}}function ar(e,t){if(t.choiceDeviceId===e.id&&t.choice!==null&&or(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&&or(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 or(e,t){return e.accept.some(e=>e.cap===t.cap&&e.fieldPath===t.fieldPath)}function sr(e,t){return t.length===0?!0:t.some(t=>t===e)}function cr(e,t,n){return{source:{addonId:e.addonId,stableId:e.stableId},cap:t,fieldPath:n}}function lr(e){return{source:{addonId:e.source.addonId,stableId:e.source.stableId},cap:e.cap,fieldPath:e.fieldPath}}function ur(e,t,n){if(t===null)return e;let r=Le(n).get(t);return r===void 0||r.length===0?e:`${e} · ${r}`}function dr(e,t){let n=Le(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=Pe(n.get(e.id));return r===void 0?t:{...t,detail:r}})}s();function fr(e,t){return e===`pending`||t.kind===`pending`?`pending`:e===`error`||t.kind===`unknown`?`failed`:`answered`}function pr(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 mr(e){return e.caps.flatMap(e=>e.fields.flatMap(t=>t.item===!0?[]:[{cap:e.cap,fieldPath:t.path,kind:t.kind}]))}function hr(e,t,n){return t?e==null?n:Ot(e,!0):`…`}function gr({request:t,enabled:r,members:a,onMembersChange:s,onRefuse:l}){let{t:u,i18n:d}=K(),[f,p]=o(null),[m,g]=o(!1),_=Ve({projection:`slim`}),v=n(()=>_.status===`success`?Tt(_.data):[],[_.status,_.data]),y=at(n(()=>er(t),[t]),r),b=n(()=>y.kind===`known`?tr(pr(v,y.value),t):{compatible:[],incompatible:[]},[y,v,t]),x=fr(_.status,y),S=rr(a,b.compatible),C=b.compatible.find(e=>e.id===f)??null,w=Qe({deviceId:C?.id??0},{enabled:C!==null}),T=Ie({deviceId:C?.id??0},{enabled:C!==null}),E=nr(mr(w.status===`success`?w.data:{caps:[]}),t),D=n(()=>dr(b.compatible.map(_r),v),[b.compatible,v]),O=(e,n,r)=>{if(y.kind!==`known`)return;let i=ir({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(V,{title:u(`customize.picker.devicesFailed`),message:_.error?.message??``}):y.kind===`unknown`?i(V,{title:u(`customize.picker.devicesFailed`),message:y.reason}):i(Oe,{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(H,{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(V,{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(vr(S,C.id),C.id,t)}),i(`span`,{children:J(t.cap,t.fieldPath,d.language)}),i(`span`,{className:`text-foreground-muted`,children:hr(r,T.status===`success`,u(`helper.valueUnknown`))})]})},`${t.cap}.${t.fieldPath}`)})})]})})]})}function _r(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 vr(e,t){return e.includes(t)?e:[...e,t]}function yr(e,t){let n=k[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 br(e,t,n){let r=D[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:yr(e,t)!==null}function xr(e,t){return t===void 0?null:e.find(e=>e.addonId===t.addonId&&e.stableId===t.stableId)??null}function Sr(e,t,n,r,i){let a=e.find(e=>e.addonId===t.addonId&&e.stableId===t.stableId),o=r===`pulse`?k[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 Cr(e){return`${e.addonId}/${e.stableId}/${e.cap}.${e.fieldPath}`}function wr(e,t){let n=Cr(t);return e.filter(e=>Cr(e)!==n)}function Tr(e,t,n){let r=Cr(t);return e.map(e=>Cr(e)===r?{...e,mode:n}:e)}function Er({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(W,{"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 Dr({label:t,value:n,onChange:r}){return e(`label`,{className:`flex flex-col gap-1 text-[11px] text-foreground`,children:[t,i(U,{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 Or(e){return Object.hasOwn(C,e)}function kr(e,t){return Or(e)?C[e].targets.find(e=>e.id===t)??null:null}function Ar(e){let t=kr(e.cap,e.targetId);if(t===null)return[];if(t.cardinality===`keyedArray`){let t=e.fieldPath;return t===void 0?[]:_n(e.cap,e.targetId).find(e=>e.path===t)?.sources??[]}return t.sources}function jr(e){return{cap:e.cap,path:e.path,kind:e.kind,unit:e.unit}}function Mr(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 Nr(e){return e===`identity`||e===`invert`||e===`threshold`||e===`linear`}function Pr(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(Nr);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 Fr(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}:wt(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=kr(e.cap,e.targetId);if(n?.cardinality===`event`&&t.kind===`boolean`&&Xn(Ar(e),jr(t))!==null)return{kind:`direct`};let r=Ar(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?Mr(r,t):Xn(r,jr(t));return a===null?{kind:`incompatible`,reason:`kind`}:Pr(a,t)}function Ir(e,t){let n=E[e];return n===void 0?!1:Object.values(n).includes(t)}function $(){return Object.keys(E)}function Lr(e,t){if(t.kind===`binary`)return e.some(e=>Object.hasOwn(D,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`||Ir(e,n)):e.some(e=>Ir(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 Rr(e,t){if(t.pickerTargetKind!==void 0||t.acceptAnyField===!0)return!0;let n=Ar(t);return n.length===0?!1:n.some(t=>Lr(e.caps,t))}function zr(e,t,n){let r=[],i=[];for(let a of e)a.id!==n&&(Rr(a,t)?r.push(a):i.push(a));return{compatible:r,incompatible:i}}function Br(e,t,n){let r=new Map,i=[];for(let a of e){let e=Fr(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:pt(e,n),rows:t.toSorted((e,t)=>e.label.localeCompare(t.label))})),incompatible:i}}function Vr(e){return kr(e.cap,e.targetId)?.cardinality===`keyedArray`&&e.fieldPath!==void 0}function Hr(e){if(e.pickerTargetKind!==void 0)return[];if(e.acceptAnyField===!0)return $();let t=Ar(e),n=new Set;for(let e of t)if(e.kind===`binary`)for(let e of Object.keys(D))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||Ir(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 Ur(e,t,n,r,i){let a=Ar(e);if(a.length===0)return[];let o=Jn(t,i).filter(e=>e.kind===`boolean`),s=[];for(let e of o){if(Xn(a,e)===null||n===`pulse`&&!br(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:Ot(o,r)})}return s}function Wr(e,t,n,r,i,a=null){return a===null?e.pickerTargetKind!==void 0&&i!==null?Dt(i,t,r,e.pickerTargetKind).map(e=>({cap:e.cap,path:e.path,kind:e.kind,unit:null,currentText:Ot(e.value,n)})):(Vr(e)?yn(t,r):Jn(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:Ot(t,n)}}):Ur(e,t,a,n,r)}s();function Gr(e,t){return e===`pending`||t.kind===`pending`?`pending`:e===`error`?`failed`:`answered`}function Kr(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 qr(e,t){return e.kind===`direct`?t(`customize.sourceSelector.direct`):e.kind===`conversion`?t(`customize.sourceSelector.withConversion`,{name:t(`customize.scalar.transform.${Jr(e.name)}`)}):``}function Jr(e){return e===`scale`?`linear`:e===`enum-map`?`enumMap`:e}function Yr(e){return e.kind===`members`?i(gr,{...e}):i(Xr,{...e})}function Xr(t){let{t:r,i18n:s}=K(),[l,u]=o(`device`),[d,f]=o(!1),[p,m]=o(!1),g=Ve({projection:`slim`}),_=n(()=>g.status===`success`?Tt(g.data):[],[g.status,g.data]),v=at(n(()=>Hr(t.destination),[t.destination]),t.enabled),{compatible:y,incompatible:b}=n(()=>v.kind===`known`?zr(Kr(_,v.value),t.destination,t.hostId):{compatible:[],incompatible:[]},[v,_,t.destination,t.hostId]),x=Gr(g.status,v),S=t.device?.id??0,C=Qe({deviceId:S}),w=Ie({deviceId:t.device===null?0:S}),T=C.status===`success`?C.data:{caps:[]},E=t.kind===`event`?t.shape:null,D=Wr(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}=Br(D,t.destination,s.language),j=Qr(t,T,w.status===`success`?w.data:null),M=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`)},N=t.kind===`event`?D[0]??null:null,P=t.kind===`event`?t:null;a(()=>{if(P===null||P.device===null||N===null)return;let e=Sr(P.picked,P.device,{cap:N.cap,path:N.path},P.shape,P.sourceModes[0]??`in-addition`);e!==null&&P.onPickedChange(e)},[P,N]);let F=n(()=>dr(y,_),[y,_]),ee=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(V,{title:r(`customize.picker.devicesFailed`),message:g.error?.message??``}):i(Oe,{devices:F,listState:x,value:t.device===null?[]:[t.device.id],selection:`single`,groupBy:`location`,onChange:M,noun:`device`,showAll:!0,testId:O}),b.length>0&&e(`div`,{"data-testid":`source-incompatible-devices`,children:[e(H,{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))})]})]}),te=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($n,{mode:n.mode,modes:t.sourceModes,name:n.stableId,onChange:e=>t.onPickedChange(Tr(t.picked,n,e))}),i(H,{variant:`ghost`,size:`sm`,onClick:()=>t.onPickedChange(wr(t.picked,n)),children:r(`customize.event.clear`)})]},`${n.addonId}/${n.stableId}/${n.cap}.${n.fieldPath}`))}):null,I=t.kind===`event`?e(`div`,{className:`flex flex-col gap-2`,children:[t.shape===`pulse`&&e(c,{children:[i(Er,{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(U,{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(Dr,{label:r(`customize.event.timeout`),value:t.timeoutSec,onChange:t.onTimeoutSecChange}),t.cooldownSec!==null&&i(Dr,{label:r(`customize.event.cooldown`),value:t.cooldownSec,onChange:t.onCooldownSecChange})]})]}):null,ne=e(`div`,{className:`flex min-h-0 flex-col gap-2`,children:[te,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(V,{title:r(`customize.picker.fieldsFailed`),message:C.error?.message??``}):e(`div`,{className:`flex flex-col gap-3`,children:[t.kind===`event`?i(ei,{fields:N===null?[]:[N],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=Zr(t,T,w.status===`success`?w.data:null,n.cap,n.path);e!==null&&e.ok&&t.onTransformChange(Tn(e))}}),i(`span`,{children:n.label}),i(`span`,{className:`text-foreground-muted`,children:n.currentText}),i(`span`,{className:`text-foreground-subtle`,children:qr(n.compatibility,r)})]})},`${n.cap}.${n.path}`))})]},n.cap)),t.kind!==`event`&&A.length>0&&e(`div`,{"data-testid":`source-incompatible-values`,children:[e(H,{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(An,{control:wn(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(An,{control:wn(j.transforms),transforms:j.transforms,declared:j.declared,unit:j.sourceUnit,value:t.transform,onChange:t.onTransformChange}),I]});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:ee}),e(`div`,{className:l===`device`?`hidden sm:block`:void 0,children:[l===`value`&&i(H,{variant:`ghost`,size:`sm`,className:`mb-2 sm:hidden`,onClick:()=>u(`device`),children:r(`customize.sourceSelector.backToDevices`)}),ne]})]})}function Zr(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:$r(n,e.cap),enumValues:t.enumValues??[]}))).find(e=>e.cap===r&&e.path===i);if(a===void 0)return null;let o=Sn(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:$r(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=Zn(e.destination.cap,e.destination.targetId,a);return o.ok?o:null}function Qr(e,t,n){return e.kind===`formula`||e.kind===`event`||e.device===null||e.field===null?null:Zr(e,t,n,e.field.cap,e.field.path)}function $r(e,t){if(e===null)return null;let n=e[t]?.unit;return typeof n==`string`&&n.length>0?n:null}function ei({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:pt(t.cap,n)}),` · `,J(t.cap,t.path,n),` `,i(`span`,{className:`text-foreground-muted`,children:t.currentText})]},`${t.cap}.${t.path}`))})}function ti(e,t,n,r,i,a){let o=Dt(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 ni=new Map;function ri(e,t,n,r){return e.kind===`from`?`${t.get(R(e.source))??r} · ${J(e.cap,e.fieldPath,n)}`:``}function ii({open:t,title:n,fieldPath:r,fieldLabel:a,sourceNames:s=ni,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=Qe({deviceId:v?.id??0}),C=Ie({deviceId:v?.id??0}),w=S.status===`success`?S.data:{caps:[]},T=P(m.expr,m.bindings),E=Object.keys(m.bindings);return i(He,{open:t,onOpenChange:e=>{e||u()},children:e(qe,{width:`lg`,scroll:`body`,placement:`sheet-on-mobile`,"data-testid":`formula-dialog`,children:[i(ze,{children:i(et,{children:n})}),e(Ye,{className:`flex flex-col gap-2`,children:[i(`span`,{className:`text-xs text-foreground`,children:a??J(``,r,p.language)}),i(on,{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`?ri(n,s,p.language,f(`customize.fieldsCard.unknownDevice`)):JSON.stringify(n.value)}),i(H,{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(H,{size:`sm`,variant:`outline`,"data-testid":`formula-self-native`,onClick:()=>{let e=Object.keys(m.bindings),t=m.bindings.v===void 0?`v`:en(e);h({...m,bindings:{...m.bindings,[t]:{kind:`from`,source:l.source,cap:l.cap,fieldPath:l.fieldPath}}})},children:f(`customize.override.selfNative`)}),i(H,{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(fn,{source:m}),g===`add-binding`&&e(`div`,{className:`flex flex-col gap-2 border border-border rounded-md p-2`,children:[i(Yr,{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(H,{variant:`ghost`,size:`sm`,onClick:()=>_(`idle`),children:f(`customize.picker.cancel`)}),i(H,{size:`sm`,disabled:v===null||b===null,onClick:()=>{if(v===null||b===null)return;let e=ti(v,b.cap,b.path,w,C.status===`success`?C.data:null,null);if(e===null)return;let t=en(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(Ue,{children:[i(H,{variant:`ghost`,onClick:u,children:f(`compositionEditor.cancel`)}),i(H,{"data-testid":`formula-dialog-save`,disabled:T!==null,onClick:()=>{d(m),u()},children:f(`compositionEditor.save`)})]})]})})}s();function ai({open:t,from:n,initialTo:r,onClose:a,onSave:s}){let{t:c}=K(),l=M(n),[u,d]=o(r??l[0]??``),f=l.includes(u)?u:l[0]??``;return i(He,{open:t,onOpenChange:e=>{e||a()},children:e(qe,{width:`sm`,scroll:`body`,placement:`sheet-on-mobile`,"data-testid":`convert-unit-dialog`,children:[i(ze,{children:i(et,{children:c(`customize.override.convertTitle`)})}),e(Ye,{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(W,{"aria-label":c(`customize.override.targetUnit`),value:f,onChange:e=>d(e.target.value),options:l.map(e=>({value:e,label:e}))})]}),e(Ue,{children:[i(H,{variant:`ghost`,onClick:a,children:c(`compositionEditor.cancel`)}),i(H,{"data-testid":`convert-unit-publish`,disabled:f===``||f===n,onClick:()=>{s(f),a()},children:c(`customize.override.publish`)})]})]})})}function oi(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 si(e){return{kind:`expression`,expr:JSON.stringify(e),bindings:{}}}function ci(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 li(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 ui(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?yt(e,n):Y(e,t,{...i,fields:o})}s();function di({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(),_=Ct(),[v,b]=o(`closed`),x=q(f.state),S=X(x,a),C=S?.fields[s]??null,w=C===null?null:xe(C),T=u===void 0?[]:M(u),E=new Map(p);E.set(R(n),r);let D=()=>b(`closed`),O=(e,t)=>{f.save(ci(x,n,a,s,e,t))},k=()=>w?.kind===`convert-unit`?li(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(Ne,{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(Rt,{target:{deviceId:t,cap:a,path:s}})]}),w===null?i(`p`,{className:`text-xs text-foreground-subtle`,children:h(`customize.override.none`)}):i(mi,{entry:w,names:E,language:g.language,unknownDevice:h(`customize.fieldsCard.unknownDevice`)}),i(`div`,{className:`flex flex-wrap gap-2`,children:w===null?i(pi,{cap:a,fieldPath:s,saving:f.saving,convert:T.length>0,onFrom:()=>b(`from`),onFormula:()=>b(`formula`),onConvert:()=>b(`convert`)}):e(c,{children:[i(H,{variant:`outline`,size:`sm`,disabled:f.saving,onClick:()=>b(fi(w)),children:h(`customize.scalar.change`)}),i(H,{variant:`ghost`,size:`sm`,disabled:f.saving,onClick:()=>{if(x===null)return;let e=ui(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(He,{open:v===`from`,onOpenChange:e=>{e||D()},children:e(qe,{width:`lg`,scroll:`body`,placement:`sheet-on-mobile`,children:[i(ze,{children:i(et,{children:l})}),i(Ye,{children:v===`from`&&i(hi,{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(ii,{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(ai,{open:!0,from:u,initialTo:w?.kind===`convert-unit`?w.to:null,onClose:D,onSave:e=>{let t=y(a,s),r=ci(x,n,a,s,oi(u,e,n,a,s),[]),i=t===null?r:ci(r,n,a,t,si(e),[]);f.save(i),D()}})]})}function fi(e){return e.kind===`convert-unit`?`convert`:e.kind===`from`?`from`:`formula`}function pi({cap:t,fieldPath:n,saving:r,convert:a,onFrom:o,onFormula:s,onConvert:c}){let{t:l}=K();return e(Je,{children:[i(Be,{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(Xe,{children:[i(We,{onClick:o,children:l(`customize.override.fromDevice`)}),i(We,{onClick:s,children:l(`customize.override.formula`)}),a&&i(We,{onClick:c,children:l(`customize.override.convertUnit`)})]})]})}function mi({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(Ne,{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:Ut(t.expr,t.bindings,n,r,a)}),i(Ne,{children:o(`compositionEditor.formula`)})]}):e(`div`,{className:`flex flex-col gap-0.5`,children:[t.sources.map(e=>{let t=R(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(Bt(t.aggregate))})]})}function hi({title:t,hostId:n,valueKind:r,onCancel:a,onConfirm:s}){let{t:c}=K(),[l,u]=o(null),[d,f]=o(null),p=Qe({deviceId:l?.id??0}),m=Ie({deviceId:l?.id??0}),h=p.status===`success`?p.data:{caps:[]};return e(`div`,{className:`flex flex-col gap-2`,children:[i(Yr,{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(H,{variant:`ghost`,onClick:a,children:c(`customize.picker.cancel`)}),i(H,{disabled:l===null||d===null,onClick:()=>{if(l===null||d===null)return;let e=ti(l,d.cap,d.path,h,m.status===`success`?m.data:null,r);e!==null&&s(e)},children:c(`customize.override.save`)})]})]})}function gi(e,t){return j(e,t)}function _i({deviceId:t,selfName:n,card:r,handle:a,names:o}){let{t:s,i18n:c}=K(),l=Ct(),u=q(a.state),d=c.language,f=pt(r.cap,d),p=new Set(Object.keys(r.entries)),m=vt(r.cap,p),h=()=>{if(u===null)return;let e=yt(u,r.cap);l(s(`customize.fieldsCard.removeWhat`,{cap:f}),e===null).then(t=>{t&&a.save(e)})},g=(e,s)=>i(di,{deviceId:t,self:a.target,selfName:n,cap:r.cap,fieldPath:e,label:J(r.cap,e,d),unit:gi(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(H,{variant:`ghost`,size:`sm`,disabled:a.saving,onClick:h,children:s(`customize.fieldsCard.removeFeature`,{cap:f})})})]})}s();function vi({device:e,handle:t,skipCaps:r}){let{i18n:a}=K(),o=q(t.state),s=st(o!==null),l=n(()=>s.kind===`known`?new Map(s.value.map(e=>[R({addonId:e.addonId,stableId:e.stableId}),e.name])):new Map,[s]);if(o===null)return null;let{model:u}=S(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=pt(r.cap,a.language);return i(rt,{id:r.cap,icon:Se,title:o,testId:`fields-card-${r.cap}`,children:i(_i,{deviceId:e.id,selfName:e.name,card:r,handle:t,names:l})},r.cap)})})}function yi(){return Object.entries(C).flatMap(([e,t])=>t.targets.filter(e=>e.cardinality===`event`).map(t=>({cap:e,pulse:bi(t),span:xi(t)})).filter(e=>e.pulse!==null||e.span!==null))}function bi(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 xi(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 Si(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 Ci(e){return new Set(e.filter(e=>{let t=e.nativeAddonId?.trim()??``;return t!==``&&t!==`composer`}).map(e=>e.capName))}function wi(e,t){return{cap:e,apply:t.apply,authority:t.applyAuthority?.kind??`composition-claim`,nativeItemsReadOnly:t.nativeItems===`read-only`}}function Ti(e){return e.kind===`known`?null:e}function Ei(e,t){return e.composable.kind===`known`?e.composable.value.has(t)?{kind:`present`,mode:`add`}:{kind:`absent`}:e.composable}function Di(e){if(e.deviceType!==T.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 Oi(e,t){if(e.authority===`camera-sensors`)return Di(t);let n=Ti(t.nativeCaps);if(n!==null)return n;let r=t.nativeCaps.kind===`known`?t.nativeCaps.value:new Set;return e.nativeItemsReadOnly?Ei(t,e.cap):r.has(e.cap)?{kind:`absent`}:Ei(t,e.cap)}s();var ki=new Map;function Ai({handle:t,cap:n,fieldPath:r,itemKey:a,label:s,testId:l,sourceNames:u=ki}){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(H,{variant:`ghost`,size:`sm`,"data-testid":l??`formula-entry-${n}-${r}`,onClick:()=>h(!0),children:s??d(`compositionEditor.formula`)}),i(ii,{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 ji({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(Rt,{target:a}):o!==null&&i(zt,{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(Ce,{icon:f,variant:`ghost`,size:`sm`,"aria-label":d,disabled:p,onClick:l})})]})}function Mi(e){return e.toLowerCase().normalize(`NFD`).replace(/[\u0300-\u036f]/g,``).replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``).slice(0,48)}function Ni({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:Wn(t.reason)?n(Un(t.reason)):t.reason,className:`text-warning`,children:`?`})]})}function Pi(e){return!e.ok||e.mode===`enum`?{kind:`identity`}:Tn(e.fit)}function Fi(e,t){return Object.fromEntries(e.map(e=>[e,t.includes(e)?e:null]))}function Ii(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 Li(e,t,n){return(_n(e,t).find(e=>e.path===n)?.literals??[]).map(e=>e.path)}function Ri(e,t,n,r){return _n(e,t).find(e=>e.path===n)?.literals?.find(e=>e.path===r)?.values??[]}function zi(e,t,n){return Cn(e,t,n)}s();var Bi={level:`customize.keyed.field.level`,"remaining.value":`customize.keyed.field.remaining`,status:`customize.keyed.field.status`};function Vi(t){let{t:n}=K(),r=t.mode===`change`?n(`customize.keyed.changeTitle`):n(`customize.keyed.addTitle`);return i(He,{open:t.open,onOpenChange:e=>e?void 0:t.onClose(),children:e(qe,{width:`xl`,placement:`sheet-on-mobile`,scroll:`body`,"aria-label":r,children:[i(ze,{children:i(et,{children:r})}),t.open&&i(Hi,{...t,heading:r})]})})}function Hi(t){let{t:r,i18n:a}=K(),s=vn(t.cap,t.targetId),l=_n(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??Ri(t.cap,t.targetId,`remaining.value`,`remaining.kind`)[0]??``),S=Ve({projection:`slim`}),C=n(()=>S.status===`success`?Tt(S.data):[],[S.status,S.data]),w=Xi(t.seed,C),[T,E]=o(null),[D,O]=o(!1);!D&&w!==null&&(E(w),O(!0));let k=Qe({deviceId:T?.id??0}),A=Ie({deviceId:T?.id??0}),j=yn(k.status===`success`?k.data:{caps:[]},A.status===`success`?A.data:null),[M,N]=o(t.seed===null?null:`${t.seed.source.cap}.${t.seed.source.fieldPath}`),[P,F]=o(t.seed?.transform??{kind:`identity`}),[ee,te]=o(()=>t.seed?.transform.kind===`enum-map`?t.seed.transform.mapping:{}),I=j.find(e=>`${e.cap}.${e.path}`===M)??null,ne=I===null?null:Sn(t.cap,t.targetId,g,I),L=m?f:Mi(u),R=Wi(t.cap,t.targetId,g,v,b),re=Gi(T,I,ne,ee,P),z=re===null?null:Ii({cap:t.cap,targetId:t.targetId,device:t.target,apply:t.apply,key:L,label:u,fieldPath:g,source:re,transform:re.transform,literals:R}),ie=Ki(z,L,g,I,A.status===`success`?A.data:null),ae=e=>{if(e===null){N(null);return}let n=j.find(t=>t.cap===e.cap&&t.path===e.path);n!==void 0&&se(n,Sn(t.cap,t.targetId,g,n))},oe=e=>{d(e),m||p(Mi(e))};return e(c,{children:[e(Ye,{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(U,{value:u,onChange:e=>oe(e.target.value)})]}),e(`label`,{className:`flex flex-col gap-1 text-xs text-foreground`,children:[r(`customize.keyed.key`),i(U,{value:L,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(W,{value:g,options:l.map(e=>({value:e.path,label:r(Bi[e.path]??e.path)})),onChange:e=>{_(e.target.value),E(null),N(null),F({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(W,{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)),Li(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(W,{value:b,options:Ri(t.cap,t.targetId,g,n).map(e=>({value:e,label:r(`customize.keyed.value.${e}`)})),onChange:e=>x(e.target.value)})]},n)),i(Yr,{kind:`keyed`,enabled:t.open,hostId:t.host.id,fieldPath:g,destination:{cap:t.cap,targetId:t.targetId,fieldPath:g,title:r(Bi[g]??g)},device:T,field:Yi(M),transform:P,onDeviceChange:e=>{E(e),N(null),F({kind:`identity`})},onFieldChange:ae,onTransformChange:F}),ne?.ok===!0&&ne.mode===`enum`&&I!==null&&i(Ui,{values:I.enumValues,outputs:zi(t.cap,t.targetId,g),mapping:ee,onChange:te}),ie!==null&&i(Ni,{preview:ie})]}),e(Ue,{className:`flex flex-wrap gap-2`,children:[i(H,{variant:`ghost`,onClick:t.onClose,children:r(`customize.scalar.cancel`)}),i(H,{"data-testid":`keyed-save-item`,disabled:!t.canSave||z===null||L===``,onClick:()=>{z!==null&&t.onSave(z,L)},children:r(`customize.keyed.save`)})]})]});function se(e,n){if(n.ok){if(N(`${e.cap}.${e.path}`),n.mode===`enum`){let n=Fi(e.enumValues,zi(t.cap,t.targetId,g));te(n),F({kind:`enum-map`,mapping:{...n}});return}F(Pi(n))}}}function Ui(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(W,{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 Wi(e,t,n,r,i){let a=Object.entries(r).map(([e,t])=>({path:e,value:t})),o=Li(e,t,n).flatMap(e=>i===``?[]:[{path:e,value:i}]);return[...a,...o]}function Gi(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 Ki(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 qi(o);if(a.kind!==`expression`)return{kind:`failed`,reason:`compile`};let s=Ji(o);if(s===void 0)return{kind:`failed`,reason:`no-value`};let c=le(a.expr,{x:s},Date.now());return c.ok?qi(c.value):{kind:`failed`,reason:c.error}}function qi(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 Ji(e){if(typeof e==`number`||typeof e==`string`||typeof e==`boolean`)return e;if(e===null)return null}function Yi(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 Xi(e,t){return e===null?null:t.find(t=>t.addonId===e.source.addonId&&t.stableId===e.source.stableId)??null}var Zi=`consumables`,Qi=`items`,$i=g.shape.items;function ea(e){let t=e.split(`.`).pop()??e,n=t.replace(/Level$/,``);return n===``?t:n}function ta(e){let t=e.replace(/([a-z0-9])([A-Z])/g,`$1 $2`).toLowerCase();return t.charAt(0).toUpperCase()+t.slice(1)}function na(e,t){return e.caps.filter(e=>t.has(e.cap)&&e.cap!==`consumables`).flatMap(e=>e.fields.filter(e=>e.item!==!0&&Ae(e)).map(t=>({kind:`field`,key:ea(t.path),cap:e.cap,path:t.path})))}function ra(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=$i.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 ia(e,t,n){if(e.kind!==`known`)return e;if(t.kind!==`known`)return t;let r=na(t.value,e.value);if(!e.value.has(`consumables`)||n===null)return{kind:`known`,value:r};let i=ra(n);return i.kind===`known`?{kind:`known`,value:[...r,...i.value]}:i}function aa(e){return e.defaults.map(t=>t.kind===`field`?i(oa,{deviceId:e.deviceId,entry:t},`field:${t.cap}.${t.path}`):i(ca,{entry:t},`item:${t.key}`))}function oa(e){let{t}=K(),n=It({deviceId:e.deviceId,cap:e.entry.cap,path:e.entry.path});return i(ji,{name:t(`customize.consumables.fields.${e.entry.key}`,{defaultValue:ta(e.entry.key)}),detail:t(`customize.consumables.builtIn`),meta:t(`customize.assign.native`),value:null,readout:i(sa,{value:n}),removeLabel:``})}function sa(e){switch(e.value.kind){case`pending`:return i(zt,{display:{text:`…`,tone:`muted`}});case`unknown`:return i(zt,{display:{text:`?`,title:e.value.reason,tone:`warning`}});case`absent`:return i(we,{level:null,size:`sm`});case`value`:return i(we,{level:Me(e.value.value),size:`sm`})}}function ca(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(ji,{name:n.label,detail:t(`customize.consumables.builtIn`),meta:t(`customize.assign.native`),value:null,readout:i(we,{level:Ge(n),label:r,size:`sm`}),removeLabel:``})}s();var la={consumables:l};function ua(){return Object.entries(C).flatMap(([e,t])=>t.targets.filter(e=>e.cardinality===`keyedArray`).map(t=>({cap:e,target:t})))}function da(t){let{t:n,i18n:r}=K(),a=Ct(),[s,l]=o(null),[u,d]=o(null),f=q(t.handle.state),p=X(f,t.cap),m=ma(t.handle,p),h=m.kind===`known`&&m.value!==null?x(m.value,t.cap,t.target.id):null,g=st(h!==null),_=ha(h,g),y=ee({cap:t.cap,targetId:t.target.id,device:t.handle.target,stored:m,sourcePresence:_,sourceUnknownReason:g.kind===`unknown`?g.reason:null});if(!pa(t,p))return null;let b=t.handle.state.kind===`none`||t.handle.state.kind===`present`,S=t.availability.kind===`present`&&b,C=n(`customize.keyed.title.${t.cap}`),w=va(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?yt(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`?_a(h,s):null;return e(c,{children:[i(rt,{id:t.cap,icon:la[t.cap],title:C,testId:`keyed-card-${t.cap}`,actions:i(Ne,{children:w}),children:e(`div`,{className:`flex flex-col gap-2 px-3 py-2 sm:px-4`,children:[t.defaults.kind===`known`&&i(aa,{deviceId:t.device.id,defaults:t.defaults.value}),t.defaults.kind===`unknown`&&i(V,{title:n(`customize.consumables.builtIn`),message:n(`customize.consumables.builtInUnreadable`,{reason:t.defaults.reason})}),h?.items.map(e=>i(fa,{deviceId:t.device.id,cap:t.cap,item:e,language:r.language,sourceName:ga(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}),S&&i(H,{variant:`outline`,size:`sm`,"data-testid":`keyed-add-${t.cap}`,disabled:t.handle.saving,onClick:()=>l(`add`),children:n(`customize.keyed.add`)})]})}),i(Vi,{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=ue(p,e,r);l(null),i!==null&&(d(null),T(Y(f,t.handle.target,i)))}})]})}function fa(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:ne(ae,t.item.key,r.draft.fieldPath);return e(`div`,{className:`flex flex-col gap-1`,"data-testid":`keyed-row-${t.item.key}`,children:[i(ji,{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(Rt,{target:{deviceId:t.deviceId,cap:t.cap,path:c}}),removeLabel:``}),e(`div`,{className:`flex flex-wrap gap-2`,children:[a&&i(H,{variant:`outline`,size:`sm`,disabled:t.saving,onClick:t.onChange,children:n(`customize.keyed.change`)}),a&&i(H,{variant:`ghost`,size:`sm`,disabled:t.saving,onClick:t.onRemove,children:n(`customize.keyed.remove`)}),!a&&i(Ai,{handle:t.handle,cap:t.cap,itemKey:t.item.key,fieldPath:`status`})]})]})}function pa(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 ma(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 ha(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=R(n);return t.value.some(e=>R({addonId:e.addonId,stableId:e.stableId})===r)})?`present`:`absent`}function ga(e,t){let n=e.compile?.draft.source;if(n===void 0||t.kind!==`known`)return null;let r=R(n);return t.value.find(e=>R({addonId:e.addonId,stableId:e.stableId})===r)?.name??null}function _a(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 va(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 ya(e){return i(c,{children:ua().map(t=>t.target.deviceTypes.includes(e.device.type)?i(da,{device:e.device,handle:e.handle,availability:Oi(wi(t.cap,t.target),e.facts),cap:t.cap,target:t.target,defaults:e.defaults},t.cap):null)})}function ba(e){let t=kn(e);if(t===null)return{kind:`failed`,reason:zn};if(e.transform.kind===`threshold`)return xa(e.transform,e);let n=qn(e.cap,e.targetId),r=n===null?void 0:t.fields[n];if(r===void 0)return{kind:`failed`,reason:zn};if(r.kind===`from`)return Ca(e.sourceValue);if(r.kind!==`expression`)return{kind:`failed`,reason:zn};if(r.expr.startsWith(`dwell(`))return{kind:`failed`,reason:Bn};let i=Sa(e.sourceValue);if(i===void 0)return{kind:`failed`,reason:Vn};let a=le(r.expr,{x:i},e.nowMs);return a.ok?Ca(a.value):{kind:`failed`,reason:a.error}}function xa(e,t){if(typeof t.sourceValue!=`number`||!Number.isFinite(t.sourceValue))return{kind:`failed`,reason:Vn};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 Sa(e){if(typeof e==`number`||typeof e==`string`||typeof e==`boolean`)return e;if(e===null)return null}function Ca(e){return e==null||typeof e==`number`&&!Number.isFinite(e)?{kind:`failed`,reason:Hn}:typeof e==`number`||typeof e==`string`||typeof e==`boolean`?{kind:`value`,text:String(e)}:{kind:`failed`,reason:Hn}}s();function wa(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(He,{open:t.open,onOpenChange:e=>e?void 0:t.onClose(),children:e(qe,{width:`xl`,placement:`sheet-on-mobile`,scroll:`body`,"aria-label":r,children:[i(ze,{children:i(et,{children:r})}),t.open&&i(Ta,{...t,heading:r})]})})}function Ta(t){let{t:r}=K(),a=Ve({projection:`slim`}),s=n(()=>a.status===`success`?Tt(a.data):[],[a.status,a.data]),l=Oa(t.seed,s),[u,d]=o(null),[f,p]=o(!1);!f&&l!==null&&(d(l),p(!0));let m=Qe({deviceId:u?.id??0}),h=Ie({deviceId:u?.id??0}),g=m.status===`success`?m.data:{caps:[]},_=Jn(g,h.status===`success`?h.data:null),[v,y]=o(ka(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=>Ea(e)===v)??null,w=C===null?null:Zn(t.cap,t.targetId,C),T=C===null||w===null||!w.ok?null:Da(u,C,w,g),E=T===null?null:kn({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`}:ba({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(Ye,{className:`flex flex-col gap-3 p-2 sm:p-4`,children:[i(Yr,{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(Ni,{preview:O})]}),e(Ue,{className:`flex flex-wrap gap-2`,children:[i(H,{variant:`ghost`,onClick:t.onClose,children:r(`customize.scalar.cancel`)}),i(H,{"data-testid":`scalar-save-override`,disabled:!t.canSave||E===null,onClick:()=>{E!==null&&t.onSave(E)},children:r(`customize.scalar.save`)})]})]})}function Ea(e){return`${e.cap}.${e.path}`}function Da(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 Oa(e,t){return e===null?null:t.find(t=>t.addonId===e.source.addonId&&t.stableId===e.source.stableId)??null}function ka(e){return e===null?null:`${e.source.cap}.${e.source.fieldPath}`}var Aa=`Assigned · `;function ja(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(Aa)){let n=e.slice(11);return{kind:`assigned`,source:t??n}}return{kind:`unknown`}}s();var Ma={battery:d,"running-state":m};function Na(){return Object.entries(C).flatMap(([e,t])=>t.targets.filter(e=>e.cardinality===`scalar`).map(t=>({cap:e,target:t})))}function Pa({device:t,handle:n,availability:r,cap:a,target:s}){let{t:l,i18n:u}=K(),d=Ct(),[f,p]=o(!1),[m,h]=o(null),g=l(`customize.scalar.caps.${a}`),_=s.path??s.id,v=q(n.state),y=Ia(n,X(v,a)),b=y.kind===`known`&&y.value!==null?ce({feature:y.value,device:n.target,cap:a,targetId:s.id}):null,x=b!==null,S=st(x),C=b===null||S.kind!==`known`?null:S.value.find(e=>R({addonId:e.addonId,stableId:e.stableId})===R(b.draft.source))??null,w=C===null?null:ur(C.name,C.id,S.kind===`known`?S.value.map(e=>({id:e.id,name:e.name,parentDeviceId:e.parentDeviceId??null})):[]),T=La(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=ja(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=yt(v,a);await d(l(`customize.scalar.removeWhat`,{name:w??(b===null?t.name:R(b.draft.source))}),e===null)&&await A(e)},M=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},N=D.kind===`assigned`?l(`customize.scalar.badge.assigned`,{source:D.source}):l(`customize.scalar.badge.${D.kind}`);return e(c,{children:[i(rt,{id:a,icon:Ma[a],title:g,testId:`scalar-card-${a}`,actions:i(Ne,{children:N}),children:i(Fa,{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(wa,{open:f,mode:M===null?`add`:`change`,title:g,cap:a,targetId:s.id,host:t,target:n.target,apply:k,seed:M,canSave:O&&!n.saving,onClose:()=>p(!1),onSave:e=>{p(!1),A(Y(v,n.target,e))}})]})}function Fa(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(V,{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(Rt,{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(V,{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(Rt,{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(Ai,{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(H,{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(H,{variant:`ghost`,size:`sm`,onClick:t.onRemove,disabled:t.saving,children:n(`customize.scalar.remove`)}),r&&i(H,{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 Ia(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 La(e,t,n){return e?t===`pending`?`pending`:t===`unknown`?`unknown`:n?`present`:`absent`:`present`}function Ra({device:e,handle:t,facts:n}){return i(c,{children:Na().map(r=>r.target.deviceTypes.includes(e.type)?i(Pa,{device:e,handle:t,availability:Oi(wi(r.cap,r.target),n),cap:r.cap,target:r.target},r.cap):null)})}var za=[`temperature`,`humidity`,`pressure`,`illuminance`,`power`,`energy`,`battery`,`numeric`],Ba=[`motion`,`contact`,`leak`,`smoke`,`occupancy`,`binary`],Va=[`switch`,`light`],Ha=`was refused — `,Ua=/^(.+?) \[([a-z0-9-]+)\]: (.+)$/;function Wa(){return[{id:`readings`,templateIds:za},{id:`binary`,templateIds:Ba},{id:`actuators`,templateIds:Va}]}function Ga(e){let t=B(e);return t===null?null:{templateId:e,aggregate:t.defaultAggregate,active:t.family===`actuator`?`at-least-one`:null,name:``,room:``,members:[]}}function Ka(e,t,n){let r=B(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(go)}}function qa(e){return e.helper!==void 0}function Ja(e,t){let n=B(e.templateId);return n===null||!n.aggregates.includes(t)?e:{...e,aggregate:t}}function Ya(e,t){let n=B(e.templateId);return n===null||n.family!==`actuator`?e:{...e,active:t,aggregate:me(t)}}function Xa(e,t){return{...e,name:t}}function Za(e,t){return{...e,room:t}}function Qa(e,t){if(t===e.templateId)return e;let n=Ga(t);return n===null?e:{...n,name:e.name,room:e.room}}function $a(e){let t=B(e.templateId);return t===null?null:w(t)}function eo(e){let t=B(e.templateId)?.family===`actuator`&&e.active!==null;return{kind:`group`,templateId:e.templateId,aggregate:t&&e.active!==null?me(e.active):e.aggregate,...t&&e.active!==null?{active:e.active}:{},members:e.members.map(go)}}function to(e){return pe(eo(e))}async function no(e,t){let n=to(e);if(!n.ok)return io(n.problems);try{return await t(n.composition,e.name.trim()),[]}catch(e){return ao(e instanceof Error?e.message:String(e))}}function ro(e){return e.members.length>=1&&e.members.length<=64}function io(e){return e.map(e=>({path:e.path,code:e.code,message:e.message}))}function ao(e){let t=e.indexOf(Ha),n=(t===-1?e:e.slice(t+14)).split(/; (?=[^;]*\[[a-z0-9-]+\]:)/).flatMap(vo);return n.length>0?n:[{path:``,code:`refused`,message:e}]}function oo(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 so(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=_o(t.included),r=_o(t.excluded),i=_o(t.total);return n===null||r===null||i===null?{kind:`absent`}:{kind:`ready`,included:n,excluded:r,total:i}}function co(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=de(t.map(e=>e.caps)),r=n.includes(`color`)?re(t.map(e=>e.features)):[];return{kind:`ready`,caps:[...n],modes:[...r]}}function lo(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=te.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 uo(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 fo(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 po(e){return e.some(e=>e.presence===`unknown`)?{kind:`pending`}:{kind:`named`,names:e.flatMap(e=>e.presence===`excluded`?[e.name]:[])}}function mo(e){if(!ho(e))return{};let t={};for(let[n,r]of Object.entries(e))ho(r)&&(t[n]=r);return t}function ho(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function go(e){return{source:{addonId:e.source.addonId,stableId:e.source.stableId},cap:e.cap,fieldPath:e.fieldPath}}function _o(e){return typeof e!=`number`||!Number.isInteger(e)||e<0?null:e}function vo(e){let t=Ua.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 yo({onPick:t}){let{t:n}=K();return i(`div`,{className:`flex flex-col gap-4`,"data-testid":`helper-template-picker`,children:Wa().map(r=>e(`section`,{"aria-label":n(`helper.group.${r.id}`),"data-testid":`helper-group-${r.id}`,children:[i(`h3`,{className:`text-[10px] font-semibold uppercase tracking-wider text-foreground-subtle`,children:n(`helper.group.${r.id}`)}),i(`p`,{className:`mb-1.5 mt-1 text-[11px] text-foreground-muted`,children:n(`helper.offlineCounted`)}),i(`ul`,{className:`flex flex-col gap-1.5`,children:r.templateIds.map(r=>B(r)===null?null:i(`li`,{children:i(H,{type:`button`,variant:`outline`,className:`h-auto w-full justify-start px-3 py-2 text-left`,"data-testid":`helper-template-${r}`,onClick:()=>t(r),children:e(`span`,{className:`flex min-w-0 flex-col items-start gap-0.5`,children:[i(`span`,{className:`text-xs font-medium text-foreground`,children:n(`helper.template.${r}`)}),i(`span`,{className:`text-[11px] font-normal whitespace-normal text-foreground-muted`,children:n(`helper.template.${r}Summary`)})]})})},r))})]},r.id))})}s();function bo({initial:t,start:n,saving:r,onSave:a}){let{t:s}=K(),[c,l]=o(t===null?`template`:n),[u,d]=o(t),[f,p]=o([]),m=e=>{d(t=>t===null?Ga(e):Qa(t,e)),p([]),l(`parameters`)},h=u===null?null:$a(u),g=u===null?null:B(u.templateId);return e(`div`,{className:`flex flex-col gap-3`,"data-testid":`helper-wizard`,children:[i(`p`,{className:`text-[11px] text-foreground-muted`,children:s(`helper.step.${c}`)}),c===`template`&&i(yo,{onPick:m}),c===`parameters`&&u!==null&&g!==null&&e(`div`,{className:`grid grid-cols-1 gap-2 sm:grid-cols-2`,children:[g.family===`actuator`&&u.active!==null?e(`label`,{className:`flex flex-col gap-1 text-[11px]`,children:[s(`helper.criterion`),i(W,{"aria-label":s(`helper.criterion`),"data-testid":`helper-criterion`,value:u.active,onChange:e=>{let t=N.find(t=>t===e.target.value);t!==void 0&&d(Ya(u,t))},options:N.map(e=>({value:e,label:s(`helper.active.${e}`)}))})]}):e(`label`,{className:`flex flex-col gap-1 text-[11px]`,children:[s(`helper.reducer`),i(W,{"aria-label":s(`helper.reducer`),value:u.aggregate,onChange:e=>{let t=g.aggregates.find(t=>t===e.target.value);t!==void 0&&d(Ja(u,t))},options:g.aggregates.map(e=>({value:e,label:s(`helper.aggregate.${e}`)}))})]}),e(`label`,{className:`flex flex-col gap-1 text-[11px]`,children:[s(`helper.name`),i(U,{"aria-label":s(`helper.name`),"data-testid":`helper-name`,value:u.name,onChange:e=>d(Xa(u,e.target.value))})]}),e(`label`,{className:`flex flex-col gap-1 text-[11px]`,children:[s(`helper.room`),i(U,{"aria-label":s(`helper.room`),value:u.room,onChange:e=>d(Za(u,e.target.value))})]})]}),c===`members`&&u!==null&&h!==null&&i(Yr,{kind:`members`,request:h,enabled:!0,members:u.members,onMembersChange:e=>d({...u,members:e}),onRefuse:e=>p(e===null?[]:[{path:`helper.members`,code:`member-constraint`,message:s(`helper.maxMembers`,{max:e.max})}])}),i(xo,{lines:f}),e(`div`,{className:`flex flex-wrap gap-2`,children:[c!==`template`&&i(H,{variant:`ghost`,onClick:()=>l(c===`members`?`parameters`:`template`),children:s(`helper.back`)}),c===`parameters`&&u!==null&&i(H,{"data-testid":`helper-to-members`,disabled:u.name.trim()===``,onClick:()=>{p([]),l(`members`)},children:s(`helper.next`)}),c===`members`&&u!==null&&i(H,{"data-testid":`helper-save`,disabled:!ro(u)||r,onClick:()=>{(async()=>{p(await a(u))})()},children:s(`helper.save`)})]})]})}function xo({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{It as A,J as B,wi as C,Yr as D,vi as E,St as F,rt as G,lt as H,Y as I,yt as L,Tt as M,Ct as N,xr as O,X as P,gt as R,Ci as S,yi as T,st as U,q as V,it as W,Zi as _,so as a,Ai as b,po as c,mo as d,no as f,ua as g,ya as h,uo as i,Z as j,ur as k,oo as l,Na as m,lo as n,qa as o,Ra as p,Ka as r,fo as s,bo as t,co as u,Qi as v,Si as w,Oi as x,ia as y,_t as z};
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-Dbv95cvz.js";import{$n as g,Ai as _,An as v,Bn as y,Cn as b,Dn as x,En as S,In as C,Kn as w,Li as T,Ln as E,Mi as D,Mn as O,Ni as k,On as A,Qt as j,Rn as M,Si as N,Tn as P,Vn as F,Wt as ee,Zn as te,Zt as I,_i as ne,ai as L,bi as R,ci as re,di as z,fi as ie,hi as ae,ii as oe,ji as se,jn as ce,ki as le,kn as ue,li as de,mn as fe,oi as pe,si as me,ti as he,tn as ge,ui as B,vi as _e,wn as ve,xi as ye,yi as be,zn as xe}from"./client-DvJxGh2F.js";import{t as Se}from"./boxes-0ut2NdHU.js";import{$r as Ce,$u as V,Dr as H,G as we,Gn as Te,Ho as Ee,In as De,Ju as U,Kr as W,Ln as Oe,Mr as ke,Nr as Ae,Nt as je,Pr as Me,R as Ne,Rn as Pe,Sn as Fe,Vo as Ie,W as Le,Wr as Re,_r as ze,ai as Be,do as Ve,ed as He,fo as Ue,hr as We,ii as Ge,jr as Ke,mr as qe,oi as Je,pr as Ye,ri as Xe,s as Ze,us as Qe,vr as $e,yd as et,yr as tt}from"./src-DntJrWmU.js";import{t as G}from"./i18n-xhwARoF0.js";import{t as K}from"./useTranslation-BJr-n0es.js";import{n as nt}from"./assignment-candidates-BcnFMc1B.js";s();function rt({id:e,...t}){return i(Fe,{headingId:`customize-${e}`,...t})}function it(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 at(e,t){let n=et.useQueries(n=>e.map(e=>n.deviceManager.listDeviceIdsByCaps({capNames:[e]},{enabled:t})));return nt(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 ot(e,t){let n=je(e,t);return n.kind===`resolved`?n.integration.name:null}function st(e){let t=Ue({projection:`slim`},{enabled:e}),{data:r}=Qe(void 0,{enabled:e}),i=t.error===null||t.error===void 0?null:t.error.message;return n(()=>it({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:ot(e,r),parentDeviceId:e.parentDeviceId,primaryChildEntityId:e.primaryChildEntityId??null,role:e.role??null}))),[t.status,t.data,i,r])}function ct(e){let t=e?.trim()??``;return t.length>0?t:G.t(`helpers.customize.requestFailed`)}function lt(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=he(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:ct(e.error?.message)}:{kind:`pending`}}function q(e){return e.kind===`present`?e.composition:null}var ut={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 dt(e,t){return t.startsWith(`it`)?e.it:e.en}function ft(e){if(!(`unit`in e))return;let t=e.unit;return typeof t==`string`&&t.length>0?t:void 0}function pt(e,t){let n=fe[e]?.noun;return n===void 0?e.split(`-`).filter(e=>e.length>0).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `):dt(n,t)}function J(e,t,n){let r=fe[e]?.state?.find(e=>e.field===t);if(r!==void 0){let e=dt(r.label,n),t=ft(r);return t===void 0?e:`${e} (${t})`}let i=ut[t];return i===void 0?t:dt(i,n)}function mt(e){return ge.find(t=>t.name===e)}function ht(e){return e===`lastFetchedAt`||e.endsWith(`At`)}function gt(e){let t=ve(e.role);if(t===null||mt(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 _t(e){return e===null?`incomplete`:b(L(e,{lookupCap:oe(ge),sources:new Map,self:null,blockId:null,target:null,peers:[]}).problems)}function vt(e,t){let n=mt(e);return n?.status===void 0?[]:ie(n.status.schema).filter(e=>!ht(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 yt(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 bt(e){return Array.isArray(e)?e.map(bt):typeof e!=`object`||!e?e:Object.fromEntries(Object.entries(e).toSorted(([e],[t])=>e.localeCompare(t)).map(([e,t])=>[e,bt(t)]))}function xt(e){return JSON.stringify(bt(e))}function St(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}:xt(t)===xt(e.composition)?{kind:`noop`}:{kind:`update`,blockId:n,expectedUpdatedAt:e.view.block.updatedAt,composition:t}}}}function Ct(){let{t:e}=K(),t=Re();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 wt(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 Tt(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 Et(e,t,n,r){return r===null?{kind:`from`,source:e,cap:t,fieldPath:n.path}:wt(r,{source:e,cap:t,fieldPath:n.path,kind:n.kind})}function Dt(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:Et(i,e.cap,t,r)})))}function Ot(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 kt(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function At(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 jt(e,t,n){return kt(t)?At(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`}:At(e.data,n)}function Mt(e,t,n){if(t.binary===!0&&n.cap===`battery`&&n.path===`percentage`){let t=Pe(e);return{text:G.t(t?De:Oe),tone:t?`warning`:`normal`}}return{text:n.path===`percentage`?`${Math.round(e)} %`:String(e),tone:`normal`}}function Nt(e,t,n){let r=e?`active`:`muted`;return t.cap===`contact`&&t.path===`entryOpen`?{text:e?n.open:n.closed,tone:r}:D[t.cap]===t.path?{text:e?n.active:n.inactive,tone:r}:{text:String(e),tone:`normal`}}function Pt(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`?Nt(r,t,n):typeof r==`number`?Mt(r,e,t):typeof r==`string`?{text:r,tone:`normal`}:{text:JSON.stringify(r),tone:`normal`}}}}var Ft=0;function It(e){let t=p(),n=Ie({deviceId:e?.deviceId??Ft,capName:e?.cap??``},{enabled:e!==null}),r=Ze(t.trpcClient,e?.deviceId??null,e?.cap??``);return e===null?{kind:`absent`}:jt({status:n.status,data:n.data,error:n.error===null||n.error===void 0?null:{message:n.error.message}},r,e.path)}var Lt={muted:`text-foreground-subtle`,active:`text-success`,normal:`text-foreground`,warning:`text-warning`};function Rt({target:e}){let{t}=K(),n=It(e);return e===null?null:i(zt,{display:Pt(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 zt({display:e}){return i(`span`,{className:`text-xs ${Lt[e.tone]}`,title:e.title,children:e.text})}function Bt(e){return e===`avg-round-1`?`customize.fieldsCard.aggregate.avg`:`customize.fieldsCard.aggregate.latest`}function Vt(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function Ht(e,t,n){let r=RegExp(`(?<![A-Za-z0-9_])${Vt(t)}(?![A-Za-z0-9_])`,`g`);return e.replace(r,()=>n)}function Ut(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(R(a.source))??i,c=J(a.cap,a.fieldPath,r);o=Ht(o,e,`${s} · ${c}`)}return $t(o)}var Wt=1e3,Gt=60*Wt,Kt=60*Gt,qt={within:[1],dwell:[1,2],rose:[2]};function Jt(e){if(!Number.isInteger(e)||e<Wt)return null;if(e%Kt===0){let t=e/Kt;return t===1?`1 h`:`${t} h`}if(e%Gt===0){let t=e/Gt;return t===1?`1 min`:`${t} min`}if(e%Wt===0){let t=e/Wt;return t===1?`1 s`:`${t} s`}return null}function Yt(e){return/^\d+$/.test(e.trim())?Jt(Number(e.trim())):null}function Xt(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 Zt(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(qt)){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=Xt(e,a);return o===null?null:{name:n,close:o.close,args:o.args}}return null}function Qt(e){let t=e.args.map(e=>$t(e.text)),n=qt[e.name]??[];if(e.name===`within`){let e=t[1],n=e===void 0?null:Yt(e);if(n!==null)return`within ${n}`}let r=t.map((e,t)=>n.includes(t)?Yt(e)??e.trim():e.trim());return`${e.name}(${r.join(`, `)})`}function $t(e){let t=``,n=0;for(;n<e.length;){let r=Zt(e,n);if(r===null){t+=e[n]??``,n+=1;continue}t+=Qt(r),n=r.close+1}return t}function en(e){for(let t=1;;t++){let n=`s${t}`;if(!e.includes(n))return n}}var tn={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)`},nn=/[A-Za-z_][A-Za-z0-9_]*$/;function rn(e,t,n){let r=nn.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=[...se].filter(e=>e.startsWith(r)).toSorted().map(e=>({kind:`builtin`,label:tn[e]??e,insert:`${e}(`,hintKey:`compositionEditor.builtins.${e}`}));return[...i,...a,...o].slice(0,8)}function an(e,t,n){let r=t-(nn.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 on({label:n,value:r,bindings:a,onChange:s}){let{t:c}=K(),l=t(null),[u,d]=o(r.length),f=rn(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=an(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 sn(e){return{addonId:e.addonId,stableId:e.stableId}}function cn(e){return new Map(e.map(e=>[R(sn(e)),e]))}function ln(e,t,n){if(e.kind===`code`)return{kind:`unavailable`,reason:G.t(`helpers.fieldPreview.codeFields`)};if(e.kind===`expression`&&(z(e.expr,`rose`)||z(e.expr,`count`)))return{kind:`runtime-only`};let r=ye(e).filter(e=>t.get(be(e.source,e.cap))?.kind!==`value`).map(_e);if(r.length>0)return{kind:`waiting`,missing:r};let i=F({source:e,now:n,read:e=>{let n=t.get(be(e.source,e.cap)),r=n?.kind===`value`?Z(n.slice,e.fieldPath):void 0,i=r===void 0?void 0:_(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 un({sliceKey:e,deviceId:t,capName:n,onReading:r}){let i=Ze(p().trpcClient,t,n);return a(()=>{r(e,i===void 0?{kind:`pending`}:{kind:`value`,slice:i})},[e,i,r]),null}function dn(e,t){return[...new Map(ye(e).map(e=>[be(e.source,e.cap),e]))].map(([e,n])=>({key:e,read:n,device:t.get(R(n.source))}))}function fn({source:t}){let{t:n}=K(),a=Ue({projection:`slim`}),[s,c]=o(new Map),l=r((e,t)=>{c(n=>new Map([...n,[e,t]]))},[]),u=dn(t,cn(a.status===`success`?Tt(a.data):[])),d=a.status===`success`?u.filter(e=>e.device===void 0).map(e=>R(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(un,{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(pn,{preview:ln(t,s,Date.now())})]})}function pn({preview:t}){let{t:n}=K();switch(t.kind){case`value`:return e(`strong`,{children:[`→ `,Ot(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 mn(e){return e===`identity`||e===`invert`||e===`threshold`||e===`linear`}function hn(e){return Object.hasOwn(C,e)}function gn(e){return hn(e)?C[e].targets:[]}function _n(e,t){let n=gn(e).find(e=>e.id===t);return n?.cardinality===`keyedArray`?n.fields??[]:[]}function vn(e,t){return gn(e).find(e=>e.id===t)?.traits??[]}function yn(e,t){return e.caps.flatMap(e=>{let n=bn(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 bn(e,t){if(e===null)return null;let n=Z(e[t],`unit`);return typeof n==`string`&&n.length>0?n:null}function xn(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 Sn(e,t,n,r){let i=_n(e,t).find(e=>e.path===n);if(i===void 0)return{ok:!1,reason:`kind`};let a=xn(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(mn);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 Cn(e,t,n){return _n(e,t).find(e=>e.path===n)?.enumValues??[]}function wn(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 Tn(e){if(e.transforms.includes(`identity`))return{kind:`identity`};if(e.transforms.includes(`threshold`)){let t=Dn(e.declared,`threshold`);if(t!==null)return En(t)}if(e.transforms.includes(`linear`)){let t=Dn(e.declared,`linear`);if(t!==null)return En(t)}return{kind:`invert`}}function En(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 On(e);case`enum-map`:return{kind:`identity`}}}function Dn(e,t){return e.find(e=>e.kind===t)??null}function On(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 kn(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 An({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(U,{"aria-label":c(`customize.scalar.stepTransform`),value:o.kind,options:n.map(e=>({value:e,label:c(`customize.scalar.transform.${e}`)})),onChange:e=>s(jn(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(Te,{checked:o.kind===`invert`,onChange:e=>s(e.target.checked?{kind:`invert`}:{kind:`identity`})}),c(`customize.scalar.invert`)]}):null,o.kind===`threshold`&&i(Nn,{declared:r,unit:a,value:o,onChange:s}),o.kind===`linear`&&i(Fn,{declared:r,value:o,onChange:s})]})}function jn(e,t){let n=Dn(t,Mn(e));return n===null?e===`invert`?{kind:`invert`}:{kind:`identity`}:En(n)}function Mn(e){return e===`invert`||e===`threshold`||e===`linear`||e===`enum-map`?e:`identity`}function Nn({declared:t,unit:n,value:r,onChange:a}){let{t:o}=K(),s=n??``,c=Dn(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(U,{"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 Pn(e){return e===null||e.kind!==`linear`||e.clampMin===void 0||e.clampMax===void 0?null:{min:e.clampMin,max:e.clampMax}}function Fn({declared:t,value:n,onChange:r}){let{t:a}=K(),o=Pn(Dn(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(V,{type:`number`,value:Number.isFinite(n)?n:0,onChange:e=>{let t=Number(e.target.value);Number.isFinite(t)&&r(t)}})]})}var In=`kind`,Ln=`unit`,Rn=`unit-unknown`,zn=`compile`,Bn=`dwell`,Vn=`no-value`,Hn=`empty`;function Un(e){return`customize.scalar.previewFailure.${e}`}function Wn(e){return e===`compile`||e===`dwell`||e===`no-value`||e===`empty`}function Gn(e){return e===`identity`||e===`invert`||e===`threshold`||e===`linear`}function Kn(e,t){let n=Object.entries(C).find(([t])=>t===e)?.[1];return n===void 0?null:n.targets.find(e=>e.id===t)??null}function qn(e,t){return Kn(e,t)?.path??null}function Jn(e,t){return e.caps.flatMap(e=>{let n=Yn(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 Yn(e,t){if(e===null)return null;let n=Z(e[t],`unit`);return typeof n==`string`&&n.length>0?n:null}function Xn(e,t){if(t.kind===`boolean`){let n=D[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 Zn(e,t,n){let r=Kn(e,t);if(r===null||r.cardinality!==`scalar`||n.kind===`enum`)return{ok:!1,reason:In};let i=Xn(r.sources,n);if(i===null)return{ok:!1,reason:In};if(i.requiredUnit!==void 0&&n.unit===null)return{ok:!1,reason:Rn};if(i.requiredUnit!==void 0&&n.unit!==i.requiredUnit)return{ok:!1,reason:Ln};let a=i.transformKinds.filter(Gn);return a.length===0?{ok:!1,reason:In}:{ok:!0,valueKind:n.kind,sourceUnit:i.requiredUnit??null,transforms:a,declared:i.transforms}}function Qn(e,t){return t.find(t=>t===e)??null}function $n({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(U,{"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=Qn(e.target.value,n);t!==null&&a(t)}}),i(`p`,{className:`text-[11px] text-foreground-muted`,children:o(`customize.motion.modeLine.${t}`)})]})}function er(e){return[...new Set(e.accept.map(e=>e.cap))]}function tr(e,t){let n=new Set(er(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}`)||(sr(o.type,t.deviceTypes)&&o.caps.some(e=>n.has(e))?i.push(o):a.push(o));return{compatible:i,incompatible:a}}function nr(e,t){return e.filter(e=>t.accept.some(t=>t.cap===e.cap&&t.fieldPath===e.fieldPath&&t.valueKind===e.kind))}function rr(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 ir(e){if(e.selectedIds.length>e.request.max)return{members:e.previous.map(lr),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=ar(r,e);return i===null?(t.push(n),[]):[cr(r,i.cap,i.fieldPath)]}),refused:null,needsField:t}}function ar(e,t){if(t.choiceDeviceId===e.id&&t.choice!==null&&or(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&&or(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 or(e,t){return e.accept.some(e=>e.cap===t.cap&&e.fieldPath===t.fieldPath)}function sr(e,t){return t.length===0?!0:t.some(t=>t===e)}function cr(e,t,n){return{source:{addonId:e.addonId,stableId:e.stableId},cap:t,fieldPath:n}}function lr(e){return{source:{addonId:e.source.addonId,stableId:e.source.stableId},cap:e.cap,fieldPath:e.fieldPath}}function ur(e,t,n){if(t===null)return e;let r=we(n).get(t);return r===void 0||r.length===0?e:`${e} · ${r}`}function dr(e,t){let n=we(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=Le(n.get(e.id));return r===void 0?t:{...t,detail:r}})}s();function fr(e,t){return e===`pending`||t.kind===`pending`?`pending`:e===`error`||t.kind===`unknown`?`failed`:`answered`}function pr(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 mr(e){return e.caps.flatMap(e=>e.fields.flatMap(t=>t.item===!0?[]:[{cap:e.cap,fieldPath:t.path,kind:t.kind}]))}function hr(e,t,n){return t?e==null?n:Ot(e,!0):`…`}function gr({request:t,enabled:r,members:a,onMembersChange:s,onRefuse:l}){let{t:u,i18n:d}=K(),[f,p]=o(null),[m,g]=o(!1),_=Ue({projection:`slim`}),v=n(()=>_.status===`success`?Tt(_.data):[],[_.status,_.data]),y=at(n(()=>er(t),[t]),r),b=n(()=>y.kind===`known`?tr(pr(v,y.value),t):{compatible:[],incompatible:[]},[y,v,t]),x=fr(_.status,y),S=rr(a,b.compatible),C=b.compatible.find(e=>e.id===f)??null,w=Ve({deviceId:C?.id??0},{enabled:C!==null}),T=Ee({deviceId:C?.id??0},{enabled:C!==null}),E=nr(mr(w.status===`success`?w.data:{caps:[]}),t),D=n(()=>dr(b.compatible.map(_r),v),[b.compatible,v]),O=(e,n,r)=>{if(y.kind!==`known`)return;let i=ir({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(H,{title:u(`customize.picker.devicesFailed`),message:_.error?.message??``}):y.kind===`unknown`?i(H,{title:u(`customize.picker.devicesFailed`),message:y.reason}):i(Ne,{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(W,{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(H,{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(vr(S,C.id),C.id,t)}),i(`span`,{children:J(t.cap,t.fieldPath,d.language)}),i(`span`,{className:`text-foreground-muted`,children:hr(r,T.status===`success`,u(`helper.valueUnknown`))})]})},`${t.cap}.${t.fieldPath}`)})})]})})]})}function _r(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 vr(e,t){return e.includes(t)?e:[...e,t]}function yr(e,t){let n=k[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 br(e,t,n){let r=D[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:yr(e,t)!==null}function xr(e,t){return t===void 0?null:e.find(e=>e.addonId===t.addonId&&e.stableId===t.stableId)??null}function Sr(e,t,n,r,i){let a=e.find(e=>e.addonId===t.addonId&&e.stableId===t.stableId),o=r===`pulse`?k[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 Cr(e){return`${e.addonId}/${e.stableId}/${e.cap}.${e.fieldPath}`}function wr(e,t){let n=Cr(t);return e.filter(e=>Cr(e)!==n)}function Tr(e,t,n){let r=Cr(t);return e.map(e=>Cr(e)===r?{...e,mode:n}:e)}function Er({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(U,{"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 Dr({label:t,value:n,onChange:r}){return e(`label`,{className:`flex flex-col gap-1 text-[11px] text-foreground`,children:[t,i(V,{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 Or(e){return Object.hasOwn(C,e)}function kr(e,t){return Or(e)?C[e].targets.find(e=>e.id===t)??null:null}function Ar(e){let t=kr(e.cap,e.targetId);if(t===null)return[];if(t.cardinality===`keyedArray`){let t=e.fieldPath;return t===void 0?[]:_n(e.cap,e.targetId).find(e=>e.path===t)?.sources??[]}return t.sources}function jr(e){return{cap:e.cap,path:e.path,kind:e.kind,unit:e.unit}}function Mr(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 Nr(e){return e===`identity`||e===`invert`||e===`threshold`||e===`linear`}function Pr(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(Nr);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 Fr(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}:wt(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=kr(e.cap,e.targetId);if(n?.cardinality===`event`&&t.kind===`boolean`&&Xn(Ar(e),jr(t))!==null)return{kind:`direct`};let r=Ar(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?Mr(r,t):Xn(r,jr(t));return a===null?{kind:`incompatible`,reason:`kind`}:Pr(a,t)}function Ir(e,t){let n=E[e];return n===void 0?!1:Object.values(n).includes(t)}function $(){return Object.keys(E)}function Lr(e,t){if(t.kind===`binary`)return e.some(e=>Object.hasOwn(D,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`||Ir(e,n)):e.some(e=>Ir(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 Rr(e,t){if(t.pickerTargetKind!==void 0||t.acceptAnyField===!0)return!0;let n=Ar(t);return n.length===0?!1:n.some(t=>Lr(e.caps,t))}function zr(e,t,n){let r=[],i=[];for(let a of e)a.id!==n&&(Rr(a,t)?r.push(a):i.push(a));return{compatible:r,incompatible:i}}function Br(e,t,n){let r=new Map,i=[];for(let a of e){let e=Fr(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:pt(e,n),rows:t.toSorted((e,t)=>e.label.localeCompare(t.label))})),incompatible:i}}function Vr(e){return kr(e.cap,e.targetId)?.cardinality===`keyedArray`&&e.fieldPath!==void 0}function Hr(e){if(e.pickerTargetKind!==void 0)return[];if(e.acceptAnyField===!0)return $();let t=Ar(e),n=new Set;for(let e of t)if(e.kind===`binary`)for(let e of Object.keys(D))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||Ir(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 Ur(e,t,n,r,i){let a=Ar(e);if(a.length===0)return[];let o=Jn(t,i).filter(e=>e.kind===`boolean`),s=[];for(let e of o){if(Xn(a,e)===null||n===`pulse`&&!br(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:Ot(o,r)})}return s}function Wr(e,t,n,r,i,a=null){return a===null?e.pickerTargetKind!==void 0&&i!==null?Dt(i,t,r,e.pickerTargetKind).map(e=>({cap:e.cap,path:e.path,kind:e.kind,unit:null,currentText:Ot(e.value,n)})):(Vr(e)?yn(t,r):Jn(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:Ot(t,n)}}):Ur(e,t,a,n,r)}s();function Gr(e,t){return e===`pending`||t.kind===`pending`?`pending`:e===`error`?`failed`:`answered`}function Kr(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 qr(e,t){return e.kind===`direct`?t(`customize.sourceSelector.direct`):e.kind===`conversion`?t(`customize.sourceSelector.withConversion`,{name:t(`customize.scalar.transform.${Jr(e.name)}`)}):``}function Jr(e){return e===`scale`?`linear`:e===`enum-map`?`enumMap`:e}function Yr(e){return e.kind===`members`?i(gr,{...e}):i(Xr,{...e})}function Xr(t){let{t:r,i18n:s}=K(),[l,u]=o(`device`),[d,f]=o(!1),[p,m]=o(!1),g=Ue({projection:`slim`}),_=n(()=>g.status===`success`?Tt(g.data):[],[g.status,g.data]),v=at(n(()=>Hr(t.destination),[t.destination]),t.enabled),{compatible:y,incompatible:b}=n(()=>v.kind===`known`?zr(Kr(_,v.value),t.destination,t.hostId):{compatible:[],incompatible:[]},[v,_,t.destination,t.hostId]),x=Gr(g.status,v),S=t.device?.id??0,C=Ve({deviceId:S}),w=Ee({deviceId:t.device===null?0:S}),T=C.status===`success`?C.data:{caps:[]},E=t.kind===`event`?t.shape:null,D=Wr(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}=Br(D,t.destination,s.language),j=Qr(t,T,w.status===`success`?w.data:null),M=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`)},N=t.kind===`event`?D[0]??null:null,P=t.kind===`event`?t:null;a(()=>{if(P===null||P.device===null||N===null)return;let e=Sr(P.picked,P.device,{cap:N.cap,path:N.path},P.shape,P.sourceModes[0]??`in-addition`);e!==null&&P.onPickedChange(e)},[P,N]);let F=n(()=>dr(y,_),[y,_]),ee=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(H,{title:r(`customize.picker.devicesFailed`),message:g.error?.message??``}):i(Ne,{devices:F,listState:x,value:t.device===null?[]:[t.device.id],selection:`single`,groupBy:`location`,onChange:M,noun:`device`,showAll:!0,testId:O}),b.length>0&&e(`div`,{"data-testid":`source-incompatible-devices`,children:[e(W,{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))})]})]}),te=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($n,{mode:n.mode,modes:t.sourceModes,name:n.stableId,onChange:e=>t.onPickedChange(Tr(t.picked,n,e))}),i(W,{variant:`ghost`,size:`sm`,onClick:()=>t.onPickedChange(wr(t.picked,n)),children:r(`customize.event.clear`)})]},`${n.addonId}/${n.stableId}/${n.cap}.${n.fieldPath}`))}):null,I=t.kind===`event`?e(`div`,{className:`flex flex-col gap-2`,children:[t.shape===`pulse`&&e(c,{children:[i(Er,{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(V,{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(Dr,{label:r(`customize.event.timeout`),value:t.timeoutSec,onChange:t.onTimeoutSecChange}),t.cooldownSec!==null&&i(Dr,{label:r(`customize.event.cooldown`),value:t.cooldownSec,onChange:t.onCooldownSecChange})]})]}):null,ne=e(`div`,{className:`flex min-h-0 flex-col gap-2`,children:[te,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(H,{title:r(`customize.picker.fieldsFailed`),message:C.error?.message??``}):e(`div`,{className:`flex flex-col gap-3`,children:[t.kind===`event`?i(ei,{fields:N===null?[]:[N],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=Zr(t,T,w.status===`success`?w.data:null,n.cap,n.path);e!==null&&e.ok&&t.onTransformChange(Tn(e))}}),i(`span`,{children:n.label}),i(`span`,{className:`text-foreground-muted`,children:n.currentText}),i(`span`,{className:`text-foreground-subtle`,children:qr(n.compatibility,r)})]})},`${n.cap}.${n.path}`))})]},n.cap)),t.kind!==`event`&&A.length>0&&e(`div`,{"data-testid":`source-incompatible-values`,children:[e(W,{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(An,{control:wn(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(An,{control:wn(j.transforms),transforms:j.transforms,declared:j.declared,unit:j.sourceUnit,value:t.transform,onChange:t.onTransformChange}),I]});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:ee}),e(`div`,{className:l===`device`?`hidden sm:block`:void 0,children:[l===`value`&&i(W,{variant:`ghost`,size:`sm`,className:`mb-2 sm:hidden`,onClick:()=>u(`device`),children:r(`customize.sourceSelector.backToDevices`)}),ne]})]})}function Zr(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:$r(n,e.cap),enumValues:t.enumValues??[]}))).find(e=>e.cap===r&&e.path===i);if(a===void 0)return null;let o=Sn(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:$r(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=Zn(e.destination.cap,e.destination.targetId,a);return o.ok?o:null}function Qr(e,t,n){return e.kind===`formula`||e.kind===`event`||e.device===null||e.field===null?null:Zr(e,t,n,e.field.cap,e.field.path)}function $r(e,t){if(e===null)return null;let n=e[t]?.unit;return typeof n==`string`&&n.length>0?n:null}function ei({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:pt(t.cap,n)}),` · `,J(t.cap,t.path,n),` `,i(`span`,{className:`text-foreground-muted`,children:t.currentText})]},`${t.cap}.${t.path}`))})}function ti(e,t,n,r,i,a){let o=Dt(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 ni=new Map;function ri(e,t,n,r){return e.kind===`from`?`${t.get(R(e.source))??r} · ${J(e.cap,e.fieldPath,n)}`:``}function ii({open:t,title:n,fieldPath:r,fieldLabel:a,sourceNames:s=ni,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=Ve({deviceId:v?.id??0}),C=Ee({deviceId:v?.id??0}),w=S.status===`success`?S.data:{caps:[]},T=P(m.expr,m.bindings),E=Object.keys(m.bindings);return i(Ye,{open:t,onOpenChange:e=>{e||u()},children:e(We,{width:`lg`,scroll:`body`,placement:`sheet-on-mobile`,"data-testid":`formula-dialog`,children:[i($e,{children:i(tt,{children:n})}),e(qe,{className:`flex flex-col gap-2`,children:[i(`span`,{className:`text-xs text-foreground`,children:a??J(``,r,p.language)}),i(on,{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`?ri(n,s,p.language,f(`customize.fieldsCard.unknownDevice`)):JSON.stringify(n.value)}),i(W,{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(W,{size:`sm`,variant:`outline`,"data-testid":`formula-self-native`,onClick:()=>{let e=Object.keys(m.bindings),t=m.bindings.v===void 0?`v`:en(e);h({...m,bindings:{...m.bindings,[t]:{kind:`from`,source:l.source,cap:l.cap,fieldPath:l.fieldPath}}})},children:f(`customize.override.selfNative`)}),i(W,{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(fn,{source:m}),g===`add-binding`&&e(`div`,{className:`flex flex-col gap-2 border border-border rounded-md p-2`,children:[i(Yr,{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(W,{variant:`ghost`,size:`sm`,onClick:()=>_(`idle`),children:f(`customize.picker.cancel`)}),i(W,{size:`sm`,disabled:v===null||b===null,onClick:()=>{if(v===null||b===null)return;let e=ti(v,b.cap,b.path,w,C.status===`success`?C.data:null,null);if(e===null)return;let t=en(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(ze,{children:[i(W,{variant:`ghost`,onClick:u,children:f(`compositionEditor.cancel`)}),i(W,{"data-testid":`formula-dialog-save`,disabled:T!==null,onClick:()=>{d(m),u()},children:f(`compositionEditor.save`)})]})]})})}s();function ai({open:t,from:n,initialTo:r,onClose:a,onSave:s}){let{t:c}=K(),l=M(n),[u,d]=o(r??l[0]??``),f=l.includes(u)?u:l[0]??``;return i(Ye,{open:t,onOpenChange:e=>{e||a()},children:e(We,{width:`sm`,scroll:`body`,placement:`sheet-on-mobile`,"data-testid":`convert-unit-dialog`,children:[i($e,{children:i(tt,{children:c(`customize.override.convertTitle`)})}),e(qe,{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(U,{"aria-label":c(`customize.override.targetUnit`),value:f,onChange:e=>d(e.target.value),options:l.map(e=>({value:e,label:e}))})]}),e(ze,{children:[i(W,{variant:`ghost`,onClick:a,children:c(`compositionEditor.cancel`)}),i(W,{"data-testid":`convert-unit-publish`,disabled:f===``||f===n,onClick:()=>{s(f),a()},children:c(`customize.override.publish`)})]})]})})}function oi(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 si(e){return{kind:`expression`,expr:JSON.stringify(e),bindings:{}}}function ci(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 li(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 ui(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?yt(e,n):Y(e,t,{...i,fields:o})}s();function di({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(),_=Ct(),[v,b]=o(`closed`),x=q(f.state),S=X(x,a),C=S?.fields[s]??null,w=C===null?null:xe(C),T=u===void 0?[]:M(u),E=new Map(p);E.set(R(n),r);let D=()=>b(`closed`),O=(e,t)=>{f.save(ci(x,n,a,s,e,t))},k=()=>w?.kind===`convert-unit`?li(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(Ce,{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(Rt,{target:{deviceId:t,cap:a,path:s}})]}),w===null?i(`p`,{className:`text-xs text-foreground-subtle`,children:h(`customize.override.none`)}):i(mi,{entry:w,names:E,language:g.language,unknownDevice:h(`customize.fieldsCard.unknownDevice`)}),i(`div`,{className:`flex flex-wrap gap-2`,children:w===null?i(pi,{cap:a,fieldPath:s,saving:f.saving,convert:T.length>0,onFrom:()=>b(`from`),onFormula:()=>b(`formula`),onConvert:()=>b(`convert`)}):e(c,{children:[i(W,{variant:`outline`,size:`sm`,disabled:f.saving,onClick:()=>b(fi(w)),children:h(`customize.scalar.change`)}),i(W,{variant:`ghost`,size:`sm`,disabled:f.saving,onClick:()=>{if(x===null)return;let e=ui(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(Ye,{open:v===`from`,onOpenChange:e=>{e||D()},children:e(We,{width:`lg`,scroll:`body`,placement:`sheet-on-mobile`,children:[i($e,{children:i(tt,{children:l})}),i(qe,{children:v===`from`&&i(hi,{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(ii,{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(ai,{open:!0,from:u,initialTo:w?.kind===`convert-unit`?w.to:null,onClose:D,onSave:e=>{let t=y(a,s),r=ci(x,n,a,s,oi(u,e,n,a,s),[]),i=t===null?r:ci(r,n,a,t,si(e),[]);f.save(i),D()}})]})}function fi(e){return e.kind===`convert-unit`?`convert`:e.kind===`from`?`from`:`formula`}function pi({cap:t,fieldPath:n,saving:r,convert:a,onFrom:o,onFormula:s,onConvert:c}){let{t:l}=K();return e(Xe,{children:[i(Je,{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(Ge,{children:[i(Be,{onClick:o,children:l(`customize.override.fromDevice`)}),i(Be,{onClick:s,children:l(`customize.override.formula`)}),a&&i(Be,{onClick:c,children:l(`customize.override.convertUnit`)})]})]})}function mi({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(Ce,{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:Ut(t.expr,t.bindings,n,r,a)}),i(Ce,{children:o(`compositionEditor.formula`)})]}):e(`div`,{className:`flex flex-col gap-0.5`,children:[t.sources.map(e=>{let t=R(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(Bt(t.aggregate))})]})}function hi({title:t,hostId:n,valueKind:r,onCancel:a,onConfirm:s}){let{t:c}=K(),[l,u]=o(null),[d,f]=o(null),p=Ve({deviceId:l?.id??0}),m=Ee({deviceId:l?.id??0}),h=p.status===`success`?p.data:{caps:[]};return e(`div`,{className:`flex flex-col gap-2`,children:[i(Yr,{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(W,{variant:`ghost`,onClick:a,children:c(`customize.picker.cancel`)}),i(W,{disabled:l===null||d===null,onClick:()=>{if(l===null||d===null)return;let e=ti(l,d.cap,d.path,h,m.status===`success`?m.data:null,r);e!==null&&s(e)},children:c(`customize.override.save`)})]})]})}function gi(e,t){return j(e,t)}function _i({deviceId:t,selfName:n,card:r,handle:a,names:o}){let{t:s,i18n:c}=K(),l=Ct(),u=q(a.state),d=c.language,f=pt(r.cap,d),p=new Set(Object.keys(r.entries)),m=vt(r.cap,p),h=()=>{if(u===null)return;let e=yt(u,r.cap);l(s(`customize.fieldsCard.removeWhat`,{cap:f}),e===null).then(t=>{t&&a.save(e)})},g=(e,s)=>i(di,{deviceId:t,self:a.target,selfName:n,cap:r.cap,fieldPath:e,label:J(r.cap,e,d),unit:gi(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(W,{variant:`ghost`,size:`sm`,disabled:a.saving,onClick:h,children:s(`customize.fieldsCard.removeFeature`,{cap:f})})})]})}s();function vi({device:e,handle:t,skipCaps:r}){let{i18n:a}=K(),o=q(t.state),s=st(o!==null),l=n(()=>s.kind===`known`?new Map(s.value.map(e=>[R({addonId:e.addonId,stableId:e.stableId}),e.name])):new Map,[s]);if(o===null)return null;let{model:u}=S(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=pt(r.cap,a.language);return i(rt,{id:r.cap,icon:Se,title:o,testId:`fields-card-${r.cap}`,children:i(_i,{deviceId:e.id,selfName:e.name,card:r,handle:t,names:l})},r.cap)})})}function yi(){return Object.entries(C).flatMap(([e,t])=>t.targets.filter(e=>e.cardinality===`event`).map(t=>({cap:e,pulse:bi(t),span:xi(t)})).filter(e=>e.pulse!==null||e.span!==null))}function bi(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 xi(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 Si(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 Ci(e){return new Set(e.filter(e=>{let t=e.nativeAddonId?.trim()??``;return t!==``&&t!==`composer`}).map(e=>e.capName))}function wi(e,t){return{cap:e,apply:t.apply,authority:t.applyAuthority?.kind??`composition-claim`,nativeItemsReadOnly:t.nativeItems===`read-only`}}function Ti(e){return e.kind===`known`?null:e}function Ei(e,t){return e.composable.kind===`known`?e.composable.value.has(t)?{kind:`present`,mode:`add`}:{kind:`absent`}:e.composable}function Di(e){if(e.deviceType!==T.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 Oi(e,t){if(e.authority===`camera-sensors`)return Di(t);let n=Ti(t.nativeCaps);if(n!==null)return n;let r=t.nativeCaps.kind===`known`?t.nativeCaps.value:new Set;return e.nativeItemsReadOnly?Ei(t,e.cap):r.has(e.cap)?{kind:`absent`}:Ei(t,e.cap)}s();var ki=new Map;function Ai({handle:t,cap:n,fieldPath:r,itemKey:a,label:s,testId:l,sourceNames:u=ki}){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(W,{variant:`ghost`,size:`sm`,"data-testid":l??`formula-entry-${n}-${r}`,onClick:()=>h(!0),children:s??d(`compositionEditor.formula`)}),i(ii,{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 ji({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(Rt,{target:a}):o!==null&&i(zt,{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(He,{icon:f,variant:`ghost`,size:`sm`,"aria-label":d,disabled:p,onClick:l})})]})}function Mi(e){return e.toLowerCase().normalize(`NFD`).replace(/[\u0300-\u036f]/g,``).replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``).slice(0,48)}function Ni({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:Wn(t.reason)?n(Un(t.reason)):t.reason,className:`text-warning`,children:`?`})]})}function Pi(e){return!e.ok||e.mode===`enum`?{kind:`identity`}:Tn(e.fit)}function Fi(e,t){return Object.fromEntries(e.map(e=>[e,t.includes(e)?e:null]))}function Ii(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 Li(e,t,n){return(_n(e,t).find(e=>e.path===n)?.literals??[]).map(e=>e.path)}function Ri(e,t,n,r){return _n(e,t).find(e=>e.path===n)?.literals?.find(e=>e.path===r)?.values??[]}function zi(e,t,n){return Cn(e,t,n)}s();var Bi={level:`customize.keyed.field.level`,"remaining.value":`customize.keyed.field.remaining`,status:`customize.keyed.field.status`};function Vi(t){let{t:n}=K(),r=t.mode===`change`?n(`customize.keyed.changeTitle`):n(`customize.keyed.addTitle`);return i(Ye,{open:t.open,onOpenChange:e=>e?void 0:t.onClose(),children:e(We,{width:`xl`,placement:`sheet-on-mobile`,scroll:`body`,"aria-label":r,children:[i($e,{children:i(tt,{children:r})}),t.open&&i(Hi,{...t,heading:r})]})})}function Hi(t){let{t:r,i18n:a}=K(),s=vn(t.cap,t.targetId),l=_n(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??Ri(t.cap,t.targetId,`remaining.value`,`remaining.kind`)[0]??``),S=Ue({projection:`slim`}),C=n(()=>S.status===`success`?Tt(S.data):[],[S.status,S.data]),w=Xi(t.seed,C),[T,E]=o(null),[D,O]=o(!1);!D&&w!==null&&(E(w),O(!0));let k=Ve({deviceId:T?.id??0}),A=Ee({deviceId:T?.id??0}),j=yn(k.status===`success`?k.data:{caps:[]},A.status===`success`?A.data:null),[M,N]=o(t.seed===null?null:`${t.seed.source.cap}.${t.seed.source.fieldPath}`),[P,F]=o(t.seed?.transform??{kind:`identity`}),[ee,te]=o(()=>t.seed?.transform.kind===`enum-map`?t.seed.transform.mapping:{}),I=j.find(e=>`${e.cap}.${e.path}`===M)??null,ne=I===null?null:Sn(t.cap,t.targetId,g,I),L=m?f:Mi(u),R=Wi(t.cap,t.targetId,g,v,b),re=Gi(T,I,ne,ee,P),z=re===null?null:Ii({cap:t.cap,targetId:t.targetId,device:t.target,apply:t.apply,key:L,label:u,fieldPath:g,source:re,transform:re.transform,literals:R}),ie=Ki(z,L,g,I,A.status===`success`?A.data:null),ae=e=>{if(e===null){N(null);return}let n=j.find(t=>t.cap===e.cap&&t.path===e.path);n!==void 0&&se(n,Sn(t.cap,t.targetId,g,n))},oe=e=>{d(e),m||p(Mi(e))};return e(c,{children:[e(qe,{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(V,{value:u,onChange:e=>oe(e.target.value)})]}),e(`label`,{className:`flex flex-col gap-1 text-xs text-foreground`,children:[r(`customize.keyed.key`),i(V,{value:L,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(U,{value:g,options:l.map(e=>({value:e.path,label:r(Bi[e.path]??e.path)})),onChange:e=>{_(e.target.value),E(null),N(null),F({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(U,{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)),Li(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(U,{value:b,options:Ri(t.cap,t.targetId,g,n).map(e=>({value:e,label:r(`customize.keyed.value.${e}`)})),onChange:e=>x(e.target.value)})]},n)),i(Yr,{kind:`keyed`,enabled:t.open,hostId:t.host.id,fieldPath:g,destination:{cap:t.cap,targetId:t.targetId,fieldPath:g,title:r(Bi[g]??g)},device:T,field:Yi(M),transform:P,onDeviceChange:e=>{E(e),N(null),F({kind:`identity`})},onFieldChange:ae,onTransformChange:F}),ne?.ok===!0&&ne.mode===`enum`&&I!==null&&i(Ui,{values:I.enumValues,outputs:zi(t.cap,t.targetId,g),mapping:ee,onChange:te}),ie!==null&&i(Ni,{preview:ie})]}),e(ze,{className:`flex flex-wrap gap-2`,children:[i(W,{variant:`ghost`,onClick:t.onClose,children:r(`customize.scalar.cancel`)}),i(W,{"data-testid":`keyed-save-item`,disabled:!t.canSave||z===null||L===``,onClick:()=>{z!==null&&t.onSave(z,L)},children:r(`customize.keyed.save`)})]})]});function se(e,n){if(n.ok){if(N(`${e.cap}.${e.path}`),n.mode===`enum`){let n=Fi(e.enumValues,zi(t.cap,t.targetId,g));te(n),F({kind:`enum-map`,mapping:{...n}});return}F(Pi(n))}}}function Ui(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(U,{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 Wi(e,t,n,r,i){let a=Object.entries(r).map(([e,t])=>({path:e,value:t})),o=Li(e,t,n).flatMap(e=>i===``?[]:[{path:e,value:i}]);return[...a,...o]}function Gi(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 Ki(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 qi(o);if(a.kind!==`expression`)return{kind:`failed`,reason:`compile`};let s=Ji(o);if(s===void 0)return{kind:`failed`,reason:`no-value`};let c=le(a.expr,{x:s},Date.now());return c.ok?qi(c.value):{kind:`failed`,reason:c.error}}function qi(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 Ji(e){if(typeof e==`number`||typeof e==`string`||typeof e==`boolean`)return e;if(e===null)return null}function Yi(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 Xi(e,t){return e===null?null:t.find(t=>t.addonId===e.source.addonId&&t.stableId===e.source.stableId)??null}var Zi=`consumables`,Qi=`items`,$i=g.shape.items;function ea(e){let t=e.split(`.`).pop()??e,n=t.replace(/Level$/,``);return n===``?t:n}function ta(e){let t=e.replace(/([a-z0-9])([A-Z])/g,`$1 $2`).toLowerCase();return t.charAt(0).toUpperCase()+t.slice(1)}function na(e,t){return e.caps.filter(e=>t.has(e.cap)&&e.cap!==`consumables`).flatMap(e=>e.fields.filter(e=>e.item!==!0&&Ae(e)).map(t=>({kind:`field`,key:ea(t.path),cap:e.cap,path:t.path})))}function ra(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=$i.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 ia(e,t,n){if(e.kind!==`known`)return e;if(t.kind!==`known`)return t;let r=na(t.value,e.value);if(!e.value.has(`consumables`)||n===null)return{kind:`known`,value:r};let i=ra(n);return i.kind===`known`?{kind:`known`,value:[...r,...i.value]}:i}function aa(e){return e.defaults.map(t=>t.kind===`field`?i(oa,{deviceId:e.deviceId,entry:t},`field:${t.cap}.${t.path}`):i(ca,{entry:t},`item:${t.key}`))}function oa(e){let{t}=K(),n=It({deviceId:e.deviceId,cap:e.entry.cap,path:e.entry.path});return i(ji,{name:t(`customize.consumables.fields.${e.entry.key}`,{defaultValue:ta(e.entry.key)}),detail:t(`customize.consumables.builtIn`),meta:t(`customize.assign.native`),value:null,readout:i(sa,{value:n}),removeLabel:``})}function sa(e){switch(e.value.kind){case`pending`:return i(zt,{display:{text:`…`,tone:`muted`}});case`unknown`:return i(zt,{display:{text:`?`,title:e.value.reason,tone:`warning`}});case`absent`:return i(Ke,{level:null,size:`sm`});case`value`:return i(Ke,{level:Me(e.value.value),size:`sm`})}}function ca(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(ji,{name:n.label,detail:t(`customize.consumables.builtIn`),meta:t(`customize.assign.native`),value:null,readout:i(Ke,{level:ke(n),label:r,size:`sm`}),removeLabel:``})}s();var la={consumables:l};function ua(){return Object.entries(C).flatMap(([e,t])=>t.targets.filter(e=>e.cardinality===`keyedArray`).map(t=>({cap:e,target:t})))}function da(t){let{t:n,i18n:r}=K(),a=Ct(),[s,l]=o(null),[u,d]=o(null),f=q(t.handle.state),p=X(f,t.cap),m=ma(t.handle,p),h=m.kind===`known`&&m.value!==null?x(m.value,t.cap,t.target.id):null,g=st(h!==null),_=ha(h,g),y=ee({cap:t.cap,targetId:t.target.id,device:t.handle.target,stored:m,sourcePresence:_,sourceUnknownReason:g.kind===`unknown`?g.reason:null});if(!pa(t,p))return null;let b=t.handle.state.kind===`none`||t.handle.state.kind===`present`,S=t.availability.kind===`present`&&b,C=n(`customize.keyed.title.${t.cap}`),w=va(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?yt(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`?_a(h,s):null;return e(c,{children:[i(rt,{id:t.cap,icon:la[t.cap],title:C,testId:`keyed-card-${t.cap}`,actions:i(Ce,{children:w}),children:e(`div`,{className:`flex flex-col gap-2 px-3 py-2 sm:px-4`,children:[t.defaults.kind===`known`&&i(aa,{deviceId:t.device.id,defaults:t.defaults.value}),t.defaults.kind===`unknown`&&i(H,{title:n(`customize.consumables.builtIn`),message:n(`customize.consumables.builtInUnreadable`,{reason:t.defaults.reason})}),h?.items.map(e=>i(fa,{deviceId:t.device.id,cap:t.cap,item:e,language:r.language,sourceName:ga(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}),S&&i(W,{variant:`outline`,size:`sm`,"data-testid":`keyed-add-${t.cap}`,disabled:t.handle.saving,onClick:()=>l(`add`),children:n(`customize.keyed.add`)})]})}),i(Vi,{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=ue(p,e,r);l(null),i!==null&&(d(null),T(Y(f,t.handle.target,i)))}})]})}function fa(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:ne(ae,t.item.key,r.draft.fieldPath);return e(`div`,{className:`flex flex-col gap-1`,"data-testid":`keyed-row-${t.item.key}`,children:[i(ji,{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(Rt,{target:{deviceId:t.deviceId,cap:t.cap,path:c}}),removeLabel:``}),e(`div`,{className:`flex flex-wrap gap-2`,children:[a&&i(W,{variant:`outline`,size:`sm`,disabled:t.saving,onClick:t.onChange,children:n(`customize.keyed.change`)}),a&&i(W,{variant:`ghost`,size:`sm`,disabled:t.saving,onClick:t.onRemove,children:n(`customize.keyed.remove`)}),!a&&i(Ai,{handle:t.handle,cap:t.cap,itemKey:t.item.key,fieldPath:`status`})]})]})}function pa(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 ma(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 ha(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=R(n);return t.value.some(e=>R({addonId:e.addonId,stableId:e.stableId})===r)})?`present`:`absent`}function ga(e,t){let n=e.compile?.draft.source;if(n===void 0||t.kind!==`known`)return null;let r=R(n);return t.value.find(e=>R({addonId:e.addonId,stableId:e.stableId})===r)?.name??null}function _a(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 va(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 ya(e){return i(c,{children:ua().map(t=>t.target.deviceTypes.includes(e.device.type)?i(da,{device:e.device,handle:e.handle,availability:Oi(wi(t.cap,t.target),e.facts),cap:t.cap,target:t.target,defaults:e.defaults},t.cap):null)})}function ba(e){let t=kn(e);if(t===null)return{kind:`failed`,reason:zn};if(e.transform.kind===`threshold`)return xa(e.transform,e);let n=qn(e.cap,e.targetId),r=n===null?void 0:t.fields[n];if(r===void 0)return{kind:`failed`,reason:zn};if(r.kind===`from`)return Ca(e.sourceValue);if(r.kind!==`expression`)return{kind:`failed`,reason:zn};if(r.expr.startsWith(`dwell(`))return{kind:`failed`,reason:Bn};let i=Sa(e.sourceValue);if(i===void 0)return{kind:`failed`,reason:Vn};let a=le(r.expr,{x:i},e.nowMs);return a.ok?Ca(a.value):{kind:`failed`,reason:a.error}}function xa(e,t){if(typeof t.sourceValue!=`number`||!Number.isFinite(t.sourceValue))return{kind:`failed`,reason:Vn};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 Sa(e){if(typeof e==`number`||typeof e==`string`||typeof e==`boolean`)return e;if(e===null)return null}function Ca(e){return e==null||typeof e==`number`&&!Number.isFinite(e)?{kind:`failed`,reason:Hn}:typeof e==`number`||typeof e==`string`||typeof e==`boolean`?{kind:`value`,text:String(e)}:{kind:`failed`,reason:Hn}}s();function wa(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(Ye,{open:t.open,onOpenChange:e=>e?void 0:t.onClose(),children:e(We,{width:`xl`,placement:`sheet-on-mobile`,scroll:`body`,"aria-label":r,children:[i($e,{children:i(tt,{children:r})}),t.open&&i(Ta,{...t,heading:r})]})})}function Ta(t){let{t:r}=K(),a=Ue({projection:`slim`}),s=n(()=>a.status===`success`?Tt(a.data):[],[a.status,a.data]),l=Oa(t.seed,s),[u,d]=o(null),[f,p]=o(!1);!f&&l!==null&&(d(l),p(!0));let m=Ve({deviceId:u?.id??0}),h=Ee({deviceId:u?.id??0}),g=m.status===`success`?m.data:{caps:[]},_=Jn(g,h.status===`success`?h.data:null),[v,y]=o(ka(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=>Ea(e)===v)??null,w=C===null?null:Zn(t.cap,t.targetId,C),T=C===null||w===null||!w.ok?null:Da(u,C,w,g),E=T===null?null:kn({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`}:ba({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(qe,{className:`flex flex-col gap-3 p-2 sm:p-4`,children:[i(Yr,{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(Ni,{preview:O})]}),e(ze,{className:`flex flex-wrap gap-2`,children:[i(W,{variant:`ghost`,onClick:t.onClose,children:r(`customize.scalar.cancel`)}),i(W,{"data-testid":`scalar-save-override`,disabled:!t.canSave||E===null,onClick:()=>{E!==null&&t.onSave(E)},children:r(`customize.scalar.save`)})]})]})}function Ea(e){return`${e.cap}.${e.path}`}function Da(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 Oa(e,t){return e===null?null:t.find(t=>t.addonId===e.source.addonId&&t.stableId===e.source.stableId)??null}function ka(e){return e===null?null:`${e.source.cap}.${e.source.fieldPath}`}var Aa=`Assigned · `;function ja(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(Aa)){let n=e.slice(11);return{kind:`assigned`,source:t??n}}return{kind:`unknown`}}s();var Ma={battery:d,"running-state":m};function Na(){return Object.entries(C).flatMap(([e,t])=>t.targets.filter(e=>e.cardinality===`scalar`).map(t=>({cap:e,target:t})))}function Pa({device:t,handle:n,availability:r,cap:a,target:s}){let{t:l,i18n:u}=K(),d=Ct(),[f,p]=o(!1),[m,h]=o(null),g=l(`customize.scalar.caps.${a}`),_=s.path??s.id,v=q(n.state),y=Ia(n,X(v,a)),b=y.kind===`known`&&y.value!==null?ce({feature:y.value,device:n.target,cap:a,targetId:s.id}):null,x=b!==null,S=st(x),C=b===null||S.kind!==`known`?null:S.value.find(e=>R({addonId:e.addonId,stableId:e.stableId})===R(b.draft.source))??null,w=C===null?null:ur(C.name,C.id,S.kind===`known`?S.value.map(e=>({id:e.id,name:e.name,parentDeviceId:e.parentDeviceId??null})):[]),T=La(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=ja(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=yt(v,a);await d(l(`customize.scalar.removeWhat`,{name:w??(b===null?t.name:R(b.draft.source))}),e===null)&&await A(e)},M=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},N=D.kind===`assigned`?l(`customize.scalar.badge.assigned`,{source:D.source}):l(`customize.scalar.badge.${D.kind}`);return e(c,{children:[i(rt,{id:a,icon:Ma[a],title:g,testId:`scalar-card-${a}`,actions:i(Ce,{children:N}),children:i(Fa,{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(wa,{open:f,mode:M===null?`add`:`change`,title:g,cap:a,targetId:s.id,host:t,target:n.target,apply:k,seed:M,canSave:O&&!n.saving,onClose:()=>p(!1),onSave:e=>{p(!1),A(Y(v,n.target,e))}})]})}function Fa(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(H,{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(Rt,{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(H,{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(Rt,{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(Ai,{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(W,{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(W,{variant:`ghost`,size:`sm`,onClick:t.onRemove,disabled:t.saving,children:n(`customize.scalar.remove`)}),r&&i(W,{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 Ia(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 La(e,t,n){return e?t===`pending`?`pending`:t===`unknown`?`unknown`:n?`present`:`absent`:`present`}function Ra({device:e,handle:t,facts:n}){return i(c,{children:Na().map(r=>r.target.deviceTypes.includes(e.type)?i(Pa,{device:e,handle:t,availability:Oi(wi(r.cap,r.target),n),cap:r.cap,target:r.target},r.cap):null)})}var za=[`temperature`,`humidity`,`pressure`,`illuminance`,`power`,`energy`,`battery`,`numeric`],Ba=[`motion`,`contact`,`leak`,`smoke`,`occupancy`,`binary`],Va=[`switch`,`light`],Ha=`was refused — `,Ua=/^(.+?) \[([a-z0-9-]+)\]: (.+)$/;function Wa(){return[{id:`readings`,templateIds:za},{id:`binary`,templateIds:Ba},{id:`actuators`,templateIds:Va}]}function Ga(e){let t=B(e);return t===null?null:{templateId:e,aggregate:t.defaultAggregate,active:t.family===`actuator`?`at-least-one`:null,name:``,room:``,members:[]}}function Ka(e,t,n){let r=B(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(go)}}function qa(e){return e.helper!==void 0}function Ja(e,t){let n=B(e.templateId);return n===null||!n.aggregates.includes(t)?e:{...e,aggregate:t}}function Ya(e,t){let n=B(e.templateId);return n===null||n.family!==`actuator`?e:{...e,active:t,aggregate:me(t)}}function Xa(e,t){return{...e,name:t}}function Za(e,t){return{...e,room:t}}function Qa(e,t){if(t===e.templateId)return e;let n=Ga(t);return n===null?e:{...n,name:e.name,room:e.room}}function $a(e){let t=B(e.templateId);return t===null?null:w(t)}function eo(e){let t=B(e.templateId)?.family===`actuator`&&e.active!==null;return{kind:`group`,templateId:e.templateId,aggregate:t&&e.active!==null?me(e.active):e.aggregate,...t&&e.active!==null?{active:e.active}:{},members:e.members.map(go)}}function to(e){return pe(eo(e))}async function no(e,t){let n=to(e);if(!n.ok)return io(n.problems);try{return await t(n.composition,e.name.trim()),[]}catch(e){return ao(e instanceof Error?e.message:String(e))}}function ro(e){return e.members.length>=1&&e.members.length<=64}function io(e){return e.map(e=>({path:e.path,code:e.code,message:e.message}))}function ao(e){let t=e.indexOf(Ha),n=(t===-1?e:e.slice(t+14)).split(/; (?=[^;]*\[[a-z0-9-]+\]:)/).flatMap(vo);return n.length>0?n:[{path:``,code:`refused`,message:e}]}function oo(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 so(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=_o(t.included),r=_o(t.excluded),i=_o(t.total);return n===null||r===null||i===null?{kind:`absent`}:{kind:`ready`,included:n,excluded:r,total:i}}function co(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=de(t.map(e=>e.caps)),r=n.includes(`color`)?re(t.map(e=>e.features)):[];return{kind:`ready`,caps:[...n],modes:[...r]}}function lo(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=te.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 uo(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 fo(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 po(e){return e.some(e=>e.presence===`unknown`)?{kind:`pending`}:{kind:`named`,names:e.flatMap(e=>e.presence===`excluded`?[e.name]:[])}}function mo(e){if(!ho(e))return{};let t={};for(let[n,r]of Object.entries(e))ho(r)&&(t[n]=r);return t}function ho(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function go(e){return{source:{addonId:e.source.addonId,stableId:e.source.stableId},cap:e.cap,fieldPath:e.fieldPath}}function _o(e){return typeof e!=`number`||!Number.isInteger(e)||e<0?null:e}function vo(e){let t=Ua.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 yo({onPick:t}){let{t:n}=K();return i(`div`,{className:`flex flex-col gap-4`,"data-testid":`helper-template-picker`,children:Wa().map(r=>e(`section`,{"aria-label":n(`helper.group.${r.id}`),"data-testid":`helper-group-${r.id}`,children:[i(`h3`,{className:`text-[10px] font-semibold uppercase tracking-wider text-foreground-subtle`,children:n(`helper.group.${r.id}`)}),i(`p`,{className:`mb-1.5 mt-1 text-[11px] text-foreground-muted`,children:n(`helper.offlineCounted`)}),i(`ul`,{className:`flex flex-col gap-1.5`,children:r.templateIds.map(r=>B(r)===null?null:i(`li`,{children:i(W,{type:`button`,variant:`outline`,className:`h-auto w-full justify-start px-3 py-2 text-left`,"data-testid":`helper-template-${r}`,onClick:()=>t(r),children:e(`span`,{className:`flex min-w-0 flex-col items-start gap-0.5`,children:[i(`span`,{className:`text-xs font-medium text-foreground`,children:n(`helper.template.${r}`)}),i(`span`,{className:`text-[11px] font-normal whitespace-normal text-foreground-muted`,children:n(`helper.template.${r}Summary`)})]})})},r))})]},r.id))})}s();function bo({initial:t,start:n,saving:r,onSave:a}){let{t:s}=K(),[c,l]=o(t===null?`template`:n),[u,d]=o(t),[f,p]=o([]),m=e=>{d(t=>t===null?Ga(e):Qa(t,e)),p([]),l(`parameters`)},h=u===null?null:$a(u),g=u===null?null:B(u.templateId);return e(`div`,{className:`flex flex-col gap-3`,"data-testid":`helper-wizard`,children:[i(`p`,{className:`text-[11px] text-foreground-muted`,children:s(`helper.step.${c}`)}),c===`template`&&i(yo,{onPick:m}),c===`parameters`&&u!==null&&g!==null&&e(`div`,{className:`grid grid-cols-1 gap-2 sm:grid-cols-2`,children:[g.family===`actuator`&&u.active!==null?e(`label`,{className:`flex flex-col gap-1 text-[11px]`,children:[s(`helper.criterion`),i(U,{"aria-label":s(`helper.criterion`),"data-testid":`helper-criterion`,value:u.active,onChange:e=>{let t=N.find(t=>t===e.target.value);t!==void 0&&d(Ya(u,t))},options:N.map(e=>({value:e,label:s(`helper.active.${e}`)}))})]}):e(`label`,{className:`flex flex-col gap-1 text-[11px]`,children:[s(`helper.reducer`),i(U,{"aria-label":s(`helper.reducer`),value:u.aggregate,onChange:e=>{let t=g.aggregates.find(t=>t===e.target.value);t!==void 0&&d(Ja(u,t))},options:g.aggregates.map(e=>({value:e,label:s(`helper.aggregate.${e}`)}))})]}),e(`label`,{className:`flex flex-col gap-1 text-[11px]`,children:[s(`helper.name`),i(V,{"aria-label":s(`helper.name`),"data-testid":`helper-name`,value:u.name,onChange:e=>d(Xa(u,e.target.value))})]}),e(`label`,{className:`flex flex-col gap-1 text-[11px]`,children:[s(`helper.room`),i(V,{"aria-label":s(`helper.room`),value:u.room,onChange:e=>d(Za(u,e.target.value))})]})]}),c===`members`&&u!==null&&h!==null&&i(Yr,{kind:`members`,request:h,enabled:!0,members:u.members,onMembersChange:e=>d({...u,members:e}),onRefuse:e=>p(e===null?[]:[{path:`helper.members`,code:`member-constraint`,message:s(`helper.maxMembers`,{max:e.max})}])}),i(xo,{lines:f}),e(`div`,{className:`flex flex-wrap gap-2`,children:[c!==`template`&&i(W,{variant:`ghost`,onClick:()=>l(c===`members`?`parameters`:`template`),children:s(`helper.back`)}),c===`parameters`&&u!==null&&i(W,{"data-testid":`helper-to-members`,disabled:u.name.trim()===``,onClick:()=>{p([]),l(`members`)},children:s(`helper.next`)}),c===`members`&&u!==null&&i(W,{"data-testid":`helper-save`,disabled:!ro(u)||r,onClick:()=>{(async()=>{p(await a(u))})()},children:s(`helper.save`)})]})]})}function xo({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{It as A,J as B,wi as C,Yr as D,vi as E,St as F,rt as G,lt as H,Y as I,yt as L,Tt as M,Ct as N,xr as O,X as P,gt as R,Ci as S,yi as T,st as U,q as V,it as W,Zi as _,so as a,Ai as b,po as c,mo as d,no as f,ua as g,ya as h,uo as i,Z as j,ur as k,oo as l,Na as m,lo as n,qa as o,Ra as p,Ka as r,fo as s,bo as t,co as u,Qi as v,Si as w,Oi as x,ia as y,_t as z};
@@ -0,0 +1 @@
1
+ import{C as e,K as t,S as n,Y as r,et as i,i as a,x as o}from"./_virtual_mf___mfe_internal__admin_ui_host__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-CEyXHAdg.js";import{Ci as s,It as c,bn as l,dt as u,hn as d,or as f,ot as p,sa as m,yr as h}from"./player-overlays-Dbv95cvz.js";import{Li as g,cr as _}from"./client-DvJxGh2F.js";import{$r as v,A as y,Ar as b,Ba as x,C as S,D as C,Dr as w,E as T,Gr as E,Kr as D,M as O,N as k,O as A,Or as j,P as M,S as ee,Sn as N,Tn as P,Tr as F,Va as te,Wr as I,_ as ne,_r as re,b as L,d as ie,f as ae,fo as R,h as oe,hn as se,hr as ce,j as le,k as ue,kr as de,m as fe,md as pe,mn as me,mr as he,pr as ge,ql as _e,u as ve,v as ye,vr as be,w as xe,wn as z,x as B,yr as Se}from"./src-DntJrWmU.js";import{t as V}from"./useTranslation-BJr-n0es.js";import{mr as Ce}from"./index-C3uCLHv0.js";import{t as we}from"./AdminPage-3JxWocN3.js";i();function H(e,t){return e.scope===``?e.displayName:`${e.displayName} · ${t?.(e)??e.scope}`}function Te(e,t,n){let r=[];for(let{device:t,series:i}of e)for(let e of i){let i={subject:{kind:`device`,deviceId:t.id},key:e.key,scope:e.scope};r.push({id:B(i),ref:i,info:e,subjectName:t.name,location:t.location??``,nodeId:``,metric:H(e,n)})}for(let{node:e,series:i}of t)for(let t of i){let i={subject:{kind:`node`,nodeId:e.id},key:t.key,scope:t.scope};r.push({id:B(i),ref:i,info:t,subjectName:e.name,location:``,nodeId:e.id,metric:H(t,n)})}return r}function Ee(e){return[e.subjectName,e.location,e.metric,e.info.key,e.info.unit??``,e.nodeId].join(` `)}var De=[`energy`,`temperatures`,`nodes`,`storage`],Oe=new Set([`cap:temperature-sensor.celsius`,`cap:climate-control.currentTemp`]),U=[`addon:metrics-native/node-cpu-percent`,`addon:metrics-native/node-memory-percent`],ke=`addon:storage-orchestrator/location-used-percent`;function Ae(e,t){let n=(e,n)=>{let r=t.filter(e);return L((n?[...r].sort(n):r).map(e=>e.ref))};switch(e){case`energy`:return n(e=>e.ref.subject.kind===`device`&&e.info.key===`derived:energy.kwh`);case`temperatures`:return n(e=>e.ref.subject.kind===`device`&&Oe.has(e.info.key)&&e.info.scope===``,(e,t)=>e.location.localeCompare(t.location)||e.subjectName.localeCompare(t.subjectName));case`nodes`:return n(e=>e.ref.subject.kind===`node`&&U.includes(e.info.key)&&e.info.scope===``,(e,t)=>U.indexOf(e.info.key)-U.indexOf(t.info.key)||e.subjectName.localeCompare(t.subjectName));case`storage`:return n(e=>e.ref.subject.kind===`node`&&e.info.key===ke)}}function je(e,t){let n=new Map(t.map(e=>[e.id,e])),r=[],i=[],a=[],o=[];for(let t of L(e)){let e=n.get(B(t));if(e===void 0){o.push(t);continue}e.info.key===`derived:energy.kwh`?a.push(e):e.info.kind===`boolean`||e.info.kind===`enum`?i.push(e):r.push(e)}return{lines:r,states:i,energy:a,missing:o}}function W(e){return e.subject.kind===`device`?{deviceId:e.subject.deviceId,key:e.key,scope:e.scope}:{forNodeId:e.subject.nodeId,key:e.key,scope:e.scope}}var G=`history-page`;function K(e){return`${e.subjectName} · ${e.metric}`}function Me({part:r,window:i}){let{t:a}=V(),o=m(),c=t(()=>[...r.lines,...r.states,...r.energy],[r]),l=fe(t(()=>c.map(e=>W(e.ref)),[c]),i,!1),u=e=>l.status===`ok`?l.data.current.get(ae(W(e.ref))):void 0,d=e=>{let t=u(e);return t?.ok?t.result:void 0};if(c.length===0)return n(j,{icon:s,title:a(`history.page.emptyTitle`,`Pick series to compare`),description:a(`history.page.emptyHint`,`Choose up to 24 series on the left, or start from a panel above.`)});if(l.status===`error`)return n(w,{title:a(`history.page.readFailed`,`History could not be read`),message:l.error});let f=l.status===`pending`,p=c.map(e=>({c:e,e:u(e)})).filter(e=>e.e?.ok===!1),h=r.lines.map((e,t)=>{let n=d(e),r=C(e.info,n,i.from);return{id:e.id,label:K(e),unit:e.info.unit,colorIndex:t,points:r.points,gapMs:r.gapMs,interpolation:r.held&&n?.resolution===`raw`?`step`:`linear`}}),g=r.states.map((e,t)=>{let n=A(e.info,d(e),i.from,i.to),r=xe(e.info.key,o);return{id:e.id,label:K(e),kind:e.info.kind===`boolean`?`boolean`:`enum`,colorIndex:e.info.kind===`boolean`?t:0,states:n.states,segments:n.segments,totals:n.totals,stateLabel:e.info.kind===`boolean`?e=>e===`true`?r.on:r.off:void 0}}),_=r.energy.map(e=>({c:e,...T(d(e))})),v=_[0]?.bucketMs??36e5,y=[...new Set(_.flatMap(e=>e.buckets.map(e=>e.t)))].sort((e,t)=>e-t).map(e=>({t:e,values:_.map(t=>t.buckets.find(t=>t.t===e)?.values[0]??null)}));return e(`div`,{className:`space-y-5 min-w-0`,children:[p.length>0&&n(w,{title:a(`history.page.someFailed`,`Some series could not be read`),message:p.map(e=>`${K(e.c)}: ${e.e.error}`).join(` · `)}),h.length>0&&n(M,{title:a(`history.page.lines`,`Measurements`),series:h,range:i,height:260,syncKey:G,pending:f}),_.length>0&&n(F,{title:a(`history.page.energy`,`Energy`),layers:_.map((e,t)=>({id:e.c.id,label:e.c.subjectName,colorIndex:t})),buckets:y,bucketMs:v,range:i,unit:`kWh`,showTotal:!0,height:160,syncKey:G,pending:f}),g.length>0&&n(k,{title:g.length===1?g[0]?.label??``:a(`history.page.states`,`States`),rows:g,range:i,syncKey:G,pending:f})]})}function Ne(e,t){let n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n}async function Pe(e,t){let n=[];for(let r of Ne(e,50))try{let{results:e}=await t(r),i=new Map(e.map(e=>[e.seriesId,e]));for(let e of r)n.push(i.get(e)??{seriesId:e,ok:!1,reason:`not-found`})}catch(e){let t=e instanceof Error?e.message:String(e);for(let e of r)n.push({seriesId:e,ok:!1,reason:`request-failed`,message:t})}return n}function q(e){return e.raw+e[`5m`]+e[`1h`]+e[`1d`]}function Fe(e){return e.reduce((e,t)=>t.ok?{...e,deleted:e.deleted+1,points:e.points+q(t.deleted)}:{...e,refused:e.refused+1},{deleted:0,refused:0,points:0})}function Ie(e,t){let n=new Map(e.map(e=>[e.seriesId,e]));return t.flatMap(e=>{let t=n.get(e.seriesId);return t===void 0?[]:[{series:t,outcome:e}]})}var J=e=>new Date(e).toLocaleDateString(void 0,{dateStyle:`short`});function Y(e,t,n){let r=t.get(e.deviceId);return r===void 0?e.reason===`device-gone`?n(`history.orphans.deviceRemoved`,`#{{id}} (removed)`,{id:e.deviceId}):n(`history.orphans.deviceId`,`#{{id}}`,{id:e.deviceId}):r}function X(e){let t=e.displayName??e.key;return e.scope===``?t:`${t} · ${e.scope}`}function Z(t,r,i){return{key:`series`,header:i(`history.orphans.colSeries`,`Series`),render:a=>{let o=t(a);return e(`div`,{className:`min-w-0 max-w-[16rem]`,children:[n(`div`,{className:`truncate text-foreground`,title:o.key,children:X(o)}),n(`div`,{className:`truncate text-[10px] text-foreground-subtle`,children:Y(o,r,i)})]})},sortValue:e=>`${Y(t(e),r,i)} ${X(t(e))}`}}var Le=[`raw`,`5m`,`1h`,`1d`];function Re(e,t){return e===`raw`?t(`history.orphans.colRaw`,`Raw points`):e===`5m`?t(`history.orphans.col5m`,`5 min`):e===`1h`?t(`history.orphans.col1h`,`1 h`):t(`history.orphans.col1d`,`1 day`)}function ze(t,r){return[Z(e=>e,t,r),{key:`reason`,header:r(`history.orphans.colReason`,`Reason`),render:t=>e(`div`,{className:`flex flex-col items-start gap-0.5`,children:[n(v,{variant:t.reason===`device-gone`?`warning`:`neutral`,className:`text-[10px]`,children:t.reason===`device-gone`?r(`history.orphans.deviceGone`,`Device removed`):r(`history.orphans.undeclared`,`No longer declared`)}),t.missingSince!==null&&n(`span`,{className:`text-[10px] text-foreground-subtle`,children:r(`history.orphans.since`,`since {{date}}`,{date:J(t.missingSince)})})]}),sortValue:e=>e.reason},{key:`span`,header:r(`history.orphans.colSpan`,`Recorded`),render:t=>e(`span`,{className:`tabular-nums text-foreground-muted`,children:[J(t.firstTs),` → `,J(t.lastTs)]}),sortValue:e=>e.lastTs},...Le.map(e=>({key:`rows-${e}`,header:Re(e,r),align:`right`,render:t=>n(`span`,{className:`tabular-nums text-foreground-muted`,children:t.rows[e].toLocaleString()}),sortValue:t=>t.rows[e]}))]}function Be(e,t){if(e.ok)return n(v,{variant:`success`,className:`text-[10px]`,children:t(`history.orphans.deleted`,{count:q(e.deleted),points:q(e.deleted).toLocaleString(),defaultValue_one:`Deleted · {{points}} point`,defaultValue_other:`Deleted · {{points}} points`})});let r=e.reason===`request-failed`?t(`history.orphans.requestFailed`,`Not sent: {{message}}`,{message:e.message}):e.reason===`not-orphan`?t(`history.orphans.refusedNotOrphan`,`Kept: no longer orphan`):e.reason===`not-found`?t(`history.orphans.refusedNotFound`,`Already gone`):t(`history.orphans.refusedFailed`,`The hub could not delete it`);return n(v,{variant:e.reason===`not-found`?`neutral`:`warning`,className:`text-[10px]`,children:r})}function Ve(e,t){return[Z(e=>e.series,e,t),{key:`result`,header:t(`history.orphans.colResult`,`Result`),render:e=>Be(e.outcome,t),sortValue:e=>+!e.outcome.ok}]}i();function He({open:i,onClose:a,list:o,deviceNames:s,onDelete:u,onRefresh:d,refreshing:p}){let{t:m}=V(),h=I(),[g,_]=r(new Set),[v,y]=r(!1),[b,x]=r([]),S=t(()=>ze(s,m),[s,m]),C=t(()=>Ve(s,m),[s,m]),w=t(()=>new Set(o.series.map(e=>String(e.seriesId))),[o.series]),T=[...g].filter(e=>w.has(e)).map(Number),E=Fe(b.map(e=>e.outcome)),O=async()=>{if(await h({title:m(`history.orphans.confirmTitle`,{count:T.length,defaultValue_one:`Delete {{count}} series`,defaultValue_other:`Delete {{count}} series`}),message:m(`history.orphans.confirmMessage`,`Every recorded point of these series is removed from the hub. This cannot be undone.`),confirmLabel:m(`history.orphans.confirmLabel`,`Delete`),variant:`danger`})){y(!0);try{let e=await Pe(T,u);x(Ie(o.series,e)),_(new Set)}finally{y(!1),d()}}};return n(ge,{open:i,onOpenChange:e=>!e&&a(),children:e(ce,{width:`xl`,placement:`sheet-on-mobile`,scroll:`body`,"data-testid":`orphan-series-dialog`,children:[n(be,{children:n(Se,{children:m(`history.orphans.title`,`Series no longer linked to a device`)})}),e(he,{className:`space-y-3`,children:[n(`p`,{className:`text-xs text-foreground-muted`,children:m(`history.orphans.intro`,`Nothing records into these series any more: their device was removed, or no capability declares them now. Select the ones to delete.`)}),o.truncated&&e(`div`,{className:`flex flex-wrap items-center gap-2`,"data-testid":`orphan-truncated`,children:[n(`p`,{className:`text-xs text-warning`,children:m(`history.orphans.truncated`,`More series are unlinked than are listed here. Delete these, then load the rest.`)}),e(D,{size:`sm`,variant:`outline`,onClick:d,disabled:p,children:[n(l,{className:`h-3 w-3`,"aria-hidden":!0}),m(`history.orphans.loadAgain`,`Load again`)]})]}),b.length>0&&e(`div`,{className:`space-y-2`,"data-testid":`orphan-outcomes`,children:[n(`p`,{className:`text-xs text-foreground`,"aria-live":`polite`,children:m(`history.orphans.summary`,{count:E.deleted,refused:E.refused,points:E.points.toLocaleString(),defaultValue_one:`{{count}} series deleted ({{points}} points), {{refused}} kept.`,defaultValue_other:`{{count}} series deleted ({{points}} points), {{refused}} kept.`})}),n(z,{columns:C,rows:b,rowKey:e=>String(e.series.seriesId),minWidthPx:420,maxBodyHeight:`max-h-[60vh]`,emptyMessage:``})]}),n(z,{columns:S,rows:o.series,rowKey:e=>String(e.seriesId),minWidthPx:760,maxBodyHeight:P,defaultSort:{columnKey:`series`,dir:`asc`},emptyMessage:m(`history.orphans.empty`,`Every series is linked to a device.`),selection:{selected:g,onChange:_,rowLabel:e=>`${X(e)} — ${Y(e,s,m)}`,pageLabel:m(`history.orphans.selectAll`,`Select every listed series`)}})]}),e(re,{children:[n(`span`,{className:`mr-auto text-[11px] tabular-nums text-foreground`,"aria-live":`polite`,children:m(`history.orphans.selected`,{count:T.length,defaultValue_one:`{{count}} selected`,defaultValue_other:`{{count}} selected`})}),n(D,{variant:`ghost`,size:`sm`,onClick:a,children:m(`history.orphans.close`,`Close`)}),e(D,{variant:`danger`,size:`sm`,disabled:T.length===0||v,onClick:()=>void O(),children:[v?n(f,{className:`h-3 w-3 animate-spin`,"aria-hidden":!0}):n(c,{className:`h-3 w-3`,"aria-hidden":!0}),m(`history.orphans.deleteSelected`,`Delete selected`)]})]})]})})}i();var Ue=5*6e4;function We({enabled:i}){let{t:a}=V(),[s,c]=r(!1),l=te({},{enabled:i,staleTime:Ue}),u=R({projection:`slim`},{enabled:i}),d=x(),f=t(()=>new Map((u.data??[]).map(e=>[e.id,e.name])),[u.data]),p=e=>d.mutateAsync({seriesIds:[...e]});if(!i||l.status===`pending`)return null;if(l.status===`error`)return n(w,{variant:`warning`,title:a(`history.orphans.checkFailedTitle`,`Could not check for unlinked series`),message:l.error.message,onRetry:()=>void l.refetch()});let m=l.data;if(m.series.length===0&&!s)return null;let h=m.series.length;return e(o,{children:[h>0&&n(w,{variant:`warning`,message:m.truncated?a(`history.orphans.noticeMore`,{count:h,defaultValue_one:`More than {{count}} series are no longer linked to a device.`,defaultValue_other:`More than {{count}} series are no longer linked to a device.`}):a(`history.orphans.notice`,{count:h,defaultValue_one:`{{count}} series is no longer linked to a device.`,defaultValue_other:`{{count}} series are no longer linked to a device.`}),action:n(D,{size:`sm`,variant:`outline`,onClick:()=>c(!0),children:a(`history.orphans.review`,`Review`)})}),n(He,{open:s,onClose:()=>c(!1),list:m,deviceNames:f,onDelete:p,onRefresh:()=>void l.refetch(),refreshing:l.isFetching})]})}i();var Q=`device`,Ge=`node`;function Ke({catalog:r,selected:i,onChange:a,loading:o}){let{t:s}=V(),c=me(r,{searchText:e=>[Ee(e)],facetGroups:[{id:`subject`,value:e=>e.ref.subject.kind===`device`?Q:Ge},{id:`room`,value:e=>e.location},{id:`unit`,value:e=>e.info.unit??``}]}),l=t(()=>[{key:`metric`,header:s(`history.picker.series`,`Series`),render:t=>e(`div`,{className:`min-w-0`,children:[n(`div`,{className:`truncate text-foreground`,children:t.metric}),n(`div`,{className:`truncate text-[10px] text-foreground-subtle`,children:t.location===``?t.subjectName:`${t.subjectName} · ${t.location}`})]}),sortValue:e=>`${e.subjectName} ${e.metric}`},{key:`unit`,header:s(`history.picker.unit`,`Unit`),render:e=>n(`span`,{className:`text-foreground-muted`,children:e.info.unit??`—`}),sortValue:e=>e.info.unit??``}],[s]),u=i.size>=24;return e(`div`,{className:`space-y-2 min-w-0`,children:[n(se,{state:c.state,facets:[],groups:[{...c.groups.find(e=>e.id===`subject`)??{id:`subject`,facets:[],selected:[]},label:s(`history.picker.subject`,`Source`),facetLabel:e=>e===Q?s(`history.picker.devices`,`Devices`):s(`history.picker.nodes`,`Nodes`)},{...c.groups.find(e=>e.id===`room`)??{id:`room`,facets:[],selected:[]},label:s(`history.picker.room`,`Room`),facetLabel:e=>e===``?s(`history.picker.noRoom`,`No room`):e},{...c.groups.find(e=>e.id===`unit`)??{id:`unit`,facets:[],selected:[]},label:s(`history.picker.metricType`,`Unit`),facetLabel:e=>e===``?s(`history.picker.noUnit`,`States & counts`):e}],labels:{searchPlaceholder:s(`history.picker.search`,`Search device, room, metric or node…`),searchLabel:s(`history.picker.searchLabel`,`Search series`),facetsLabel:s(`history.picker.facets`,`Filters`),clearLabel:s(`history.picker.clear`,`Clear`)},onSearch:c.setSearch,onToggleFacet:c.toggleFacet,onToggleGroupFacet:c.toggleGroupFacet,onClear:c.clear}),n(`p`,{className:`text-[10px] text-foreground-subtle`,"aria-live":`polite`,children:s(`history.picker.count`,`{{count}} of {{max}} selected`,{count:i.size,max:24})}),n(z,{columns:l,rows:c.rows,rowKey:e=>e.id,maxBodyHeight:P,pageSize:50,defaultSort:{columnKey:`metric`,dir:`asc`},emptyMessage:o?s(`history.picker.loading`,`Reading the series of every device…`):c.active?s(`history.picker.emptyFiltered`,`No series match these filters.`):s(`history.picker.empty`,`Nothing is recorded yet.`),selection:{selected:i,onChange:e=>{let t=[...e].filter(e=>i.has(e)),n=[...e].filter(e=>!i.has(e));a(new Set([...t,...n].slice(0,24)))},isSelectable:e=>i.has(e.id)||!u,rowLabel:e=>`${e.subjectName} · ${e.metric}`,pageLabel:s(`history.picker.selectPage`,`Select every series on this page`)}})]})}i();var qe=new Set([g.Hub,g.Container]),$=5*6e4;function Je(){let{t:r}=V(),i=de(`device-history`),[a,o]=Ce(),c=t(()=>L(a.getAll(`s`).flatMap(e=>{let t=ne(e);return t===null?[]:[t]})),[a]),l=a.get(`window`),f=le(l)?l:`7d`,p=ue(a.get(`range`)),m=(e,t,n)=>{let r=new URLSearchParams;for(let t of L(e))r.append(`s`,ye(t));t!==`7d`&&r.set(`window`,t);let i=n===void 0?a.get(`range`):n;t===`custom`&&i&&r.set(`range`,i),o(r,{replace:!0})},g=Ye(i===`present`),_=O(f,Date.now(),p),v=O(f,ie(Date.now(),_.to-_.from),p),x=t(()=>je(c,g.candidates),[c,g.candidates]),C=t(()=>new Set(c.map(B)),[c]),T=ve(),k=E(),A=I(),M=async()=>{let e=await k({title:r(`history.page.saveTitle`,`Save as panel`),label:r(`history.page.saveName`,`Panel name`),confirmLabel:r(`history.page.save`,`Save`)});e===null||e.trim()===``||await T.update(t=>ee(t,{id:`panel-${Date.now().toString(36)}`,name:e.trim().slice(0,80),window:f,selection:[...c]}))},P=async(e,t)=>{await A({title:r(`history.page.deleteTitle`,`Delete panel`),message:r(`history.page.deleteMessage`,`The panel "{{name}}" is removed from your account.`,{name:t}),confirmLabel:r(`history.page.delete`,`Delete`),variant:`danger`})&&await T.update(t=>S(t,e))},F=e=>e===`energy`?r(`history.panels.energy`,`Total energy`):e===`temperatures`?r(`history.panels.temperatures`,`Temperatures by room`):e===`nodes`?r(`history.panels.nodes`,`Cluster nodes`):r(`history.panels.storage`,`Storage locations`);return n(we,{icon:s,title:r(`history.page.title`,`History`),subtitle:r(`history.page.subtitle`,`What devices, nodes and storage recorded over time, side by side.`),actions:i===`present`?e(D,{size:`sm`,variant:`outline`,onClick:()=>void M(),disabled:c.length===0||!T.writable,children:[n(d,{className:`h-3.5 w-3.5`,"aria-hidden":`true`}),r(`history.page.saveTitle`,`Save as panel`)]}):void 0,children:i===`pending`?n(b,{className:`h-64 w-full`}):i===`unknown`?n(w,{title:r(`history.page.presenceUnknownTitle`,`Could not reach the hub`),message:r(`history.page.presenceUnknown`,`The hub did not say whether device history is installed. Try again in a moment.`)}):i===`absent`?n(j,{icon:h,title:r(`history.page.absentTitle`,`Device history is not running on this hub`),description:r(`history.page.absent`,`Nothing is recorded until the device-history system addon is enabled.`)}):e(`div`,{className:`space-y-3 sm:space-y-4`,children:[n(We,{enabled:i===`present`}),e(`div`,{className:`flex flex-wrap items-center gap-2`,role:`group`,"aria-label":r(`history.page.panels`,`Panels`),children:[De.map(e=>n(D,{size:`sm`,variant:`outline`,disabled:g.status!==`ok`,onClick:()=>m(Ae(e,g.candidates),f),children:F(e)},e)),T.value.panels.map(t=>e(`span`,{className:`inline-flex items-center`,children:[n(D,{size:`sm`,variant:`secondary`,onClick:()=>m(t.selection,t.window,null),children:t.name}),n(D,{size:`sm`,variant:`ghost`,"aria-label":r(`history.page.deleteNamed`,`Delete panel {{name}}`,{name:t.name}),onClick:()=>void P(t.id,t.name),disabled:!T.writable,children:n(u,{className:`h-3.5 w-3.5`,"aria-hidden":`true`})})]},t.id))]}),e(`div`,{className:`grid grid-cols-1 gap-3 sm:gap-4 xl:grid-cols-5`,children:[n(`div`,{className:`min-w-0 xl:col-span-2`,children:n(N,{headingId:`history-picker`,title:r(`history.picker.title`,`Series`),children:n(`div`,{className:`p-2 sm:p-3`,children:g.status===`error`?n(w,{message:g.error}):n(Ke,{catalog:g.candidates,loading:g.status===`pending`,selected:C,onChange:e=>{let t=c.filter(t=>e.has(B(t))),n=g.candidates.filter(t=>e.has(t.id)&&!C.has(t.id)).map(e=>e.ref);m([...t,...n],f)}})})})}),n(`div`,{className:`min-w-0 xl:col-span-3`,children:n(N,{headingId:`history-overlay`,title:r(`history.page.overlay`,`Overlay`),actions:c.length>0?n(D,{size:`sm`,variant:`ghost`,onClick:()=>m([],f),children:r(`history.page.clear`,`Clear`)}):void 0,children:e(`div`,{className:`p-2 sm:p-3 space-y-3 min-w-0`,children:[n(oe,{value:f,onChange:e=>m(c,e),custom:p,onCustomChange:e=>m(c,`custom`,y(e))}),g.status===`pending`&&c.length>0?n(b,{className:`h-64 w-full`}):n(Me,{part:x,window:v}),x.missing.length>0&&g.status===`ok`&&n(`p`,{className:`text-[11px] text-foreground-subtle`,children:r(`history.page.missing`,{count:x.missing.length,defaultValue_one:`{{count}} selected series is no longer recorded.`,defaultValue_other:`{{count}} selected series are no longer recorded.`})})]})})})]})]})})}function Ye(e){let{t:n}=V(),r=n(`history.picker.wholeFrame`,`Whole frame`),i=p().trpcClient,o=R({projection:`slim`},{enabled:e}),{nodes:s}=pe(),c=t(()=>(o.data??[]).filter(e=>!qe.has(String(e.type))),[o.data]),l=a({queries:c.map(t=>({queryKey:[`device-history`,`listSeries`,t.id],queryFn:()=>i.deviceHistory.listSeries.query({deviceId:t.id}),enabled:e,staleTime:$}))}),u=a({queries:s.map(t=>({queryKey:[`device-history`,`listNodeSeries`,t.id],queryFn:()=>i.deviceHistory.listNodeSeries.query({forNodeId:t.id}),enabled:e,staleTime:$}))}),d=_e({},{enabled:e,staleTime:$}),f=t(()=>new Map((d?.data??[]).map(e=>[e.id,e.displayName])),[d?.data]),m=l.map(e=>e.data),h=u.map(e=>e.data),g=t(()=>Te(c.flatMap((e,t)=>{let n=m[t];return n===void 0?[]:[{device:{id:e.id,name:e.name,location:e.location??null},series:n}]}),s.flatMap((e,t)=>{let n=h[t];return n===void 0?[]:[{node:{id:e.id,name:e.name},series:n}]}),e=>{if(e.key!==`addon:pipeline-analytics/occupancy`)return f.get(e.scope)??e.scope;let{zoneId:t,className:n}=_(e.scope),i=t===``?r:t;return n===void 0?i:`${i} · ${n}`}),[c,s,f,[...l,...u].map(e=>e.dataUpdatedAt).join(`,`),r]);return o.status===`error`?{status:`error`,error:o.error.message,candidates:[]}:{status:o.status===`pending`||l.some(e=>e.isPending)||u.some(e=>e.isPending)?`pending`:`ok`,error:``,candidates:g}}export{Je as HistoryPage};