@camstack/addon-admin-ui 1.2.83 → 1.2.85

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 (116) hide show
  1. package/dist/assets/{AddLocationWizard-De7ns5QL.js → AddLocationWizard-CwreWITW.js} +1 -1
  2. package/dist/assets/{AddonCollectionPage-DXsxDYkh.js → AddonCollectionPage-B_yz8bA0.js} +1 -1
  3. package/dist/assets/Addons-ByS1wyLr.js +1 -0
  4. package/dist/assets/{AdminTabs-Ea5QF5Xy.js → AdminTabs-BNPrEU-u.js} +1 -1
  5. package/dist/assets/{AiProfiles-Cf11u16h.js → AiProfiles-BOhYahU1.js} +2 -2
  6. package/dist/assets/{BrokerForm-B-sL3dqC.js → BrokerForm-B45_C-11.js} +1 -1
  7. package/dist/assets/{Build-_kPogt2B.js → Build-DBt1hX43.js} +4 -4
  8. package/dist/assets/{Capabilities-D-_vyuUw.js → Capabilities-D3ydTf8a.js} +1 -1
  9. package/dist/assets/{CapabilityBadges-DVcflr6z.js → CapabilityBadges-BsNvOYxI.js} +1 -1
  10. package/dist/assets/{Cluster-CP-cfGdm.js → Cluster-Be75yEy8.js} +1 -1
  11. package/dist/assets/{Data-D3-pzcKz.js → Data-DjH9RwP1.js} +1 -1
  12. package/dist/assets/DetectionIntelligence-Bxil3Kqd.js +1 -0
  13. package/dist/assets/{DeviceAggregateSection-CZPFsC_N.js → DeviceAggregateSection-CmeOZSZb.js} +1 -1
  14. package/dist/assets/DeviceDetail-CLZxugdc.js +2 -0
  15. package/dist/assets/{Devices-CQEzT4CH.js → Devices-BiaI1wtk.js} +1 -1
  16. package/dist/assets/EmbedPlayerPage-BFMqluKF.js +1 -0
  17. package/dist/assets/Events-2Mew-AL7.js +1 -0
  18. package/dist/assets/FormBuilder-BDA9-uL2.js +1 -0
  19. package/dist/assets/Identity-DYj1lU6G.js +1 -0
  20. package/dist/assets/IntegrationDetail-DkP04o_o.js +1 -0
  21. package/dist/assets/{Integrations-Bs6_6m2A.js → Integrations-DypneOCC.js} +1 -1
  22. package/dist/assets/Integrations-Q2IXumNM.js +1 -0
  23. package/dist/assets/{Logs-CJEauzfn.js → Logs-DCGZ4xft.js} +1 -1
  24. package/dist/assets/{MotionZonesSettings-CrtWFnAG.js → MotionZonesSettings-D2OfXg-s.js} +1 -1
  25. package/dist/assets/{MyAccess-MG2HC7n3.js → MyAccess-DiZ_NQ8Q.js} +1 -1
  26. package/dist/assets/{Network-DaZHubTl.js → Network-D6Jjjglj.js} +1 -1
  27. package/dist/assets/{NodeAddonsSettingsPanel-Cm3hCWxL.js → NodeAddonsSettingsPanel-iynDrGDY.js} +1 -1
  28. package/dist/assets/NodeInferenceDevices-kA005bIs.js +1 -0
  29. package/dist/assets/Notifications-3VV4lesM.js +1 -0
  30. package/dist/assets/Pipeline-Cvq_ZK2N.js +1 -0
  31. package/dist/assets/{Plates-CdlwAHjB.js → Plates-Mq7_V44B.js} +1 -1
  32. package/dist/assets/{PrivacyMaskSettings-1sJg0nCf.js → PrivacyMaskSettings-DegFwke0.js} +1 -1
  33. package/dist/assets/{ProviderIcon-CIB9wAOh.js → ProviderIcon-BRIZHtNP.js} +1 -1
  34. package/dist/assets/Recordings-GWbTxHDj.js +1 -0
  35. package/dist/assets/{ScanNetworkModal-QJjU9tvg.js → ScanNetworkModal-h2wgb-9T.js} +1 -1
  36. package/dist/assets/{SceneMonitorEditor-B_qhxMl3.js → SceneMonitorEditor-DtUM6j78.js} +1 -1
  37. package/dist/assets/{Scenes-S26M2qHR.js → Scenes-CXbQ1BC3.js} +1 -1
  38. package/dist/assets/{Settings-BgvNkBP1.js → Settings-CezuMxyz.js} +1 -1
  39. package/dist/assets/{Showroom-GHOpXZqD.js → Showroom-HltZNDXE.js} +1 -1
  40. package/dist/assets/{Terminal-B0ibWMEy.js → Terminal-9BMEBt8x.js} +2 -2
  41. package/dist/assets/{_virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-BxzyL6ky.js → _virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-CLXUGt-W.js} +1 -1
  42. package/dist/assets/{bell-ring-C1CDDXf4.js → bell-ring-BOKJStq_.js} +1 -1
  43. package/dist/assets/{boxes-D1jLdgix.js → boxes-BvnEYalC.js} +1 -1
  44. package/dist/assets/{build-cluster-graph-C4jX8n1A.js → build-cluster-graph-BVmcPlKM.js} +2 -2
  45. package/dist/assets/circle-check-big-H_sRGszZ.js +1 -0
  46. package/dist/assets/{circle-x-CJJu15h-.js → circle-x-De9Atcex.js} +1 -1
  47. package/dist/assets/clock-DmdPTuLe.js +1 -0
  48. package/dist/assets/{copy-CCWWm0Zr.js → copy-DPSVazs5.js} +1 -1
  49. package/dist/assets/{debounced-invalidate-Bo_vaBxo.js → debounced-invalidate-CaNNRf1N.js} +1 -1
  50. package/dist/assets/{dist-B7jD-S4H.js → dist-DHHyyJUp.js} +1 -1
  51. package/dist/assets/dist-DtzZqioA.js +349 -0
  52. package/dist/assets/{download-BkhXjXOx.js → download-D0TL4kvK.js} +1 -1
  53. package/dist/assets/{face-bbox-BOyxoUe0.js → face-bbox-DHOml3XL.js} +1 -1
  54. package/dist/assets/{hard-drive-fVjmkYpz.js → hard-drive-E6KB7P74.js} +1 -1
  55. package/dist/assets/{hostInit-CFYQGKqd.js → hostInit-CJNRBgTm.js} +1 -1
  56. package/dist/assets/index-BVmc_EOb.js +4 -0
  57. package/dist/assets/{index-BppWvbJe.css → index-DR0aGe9s.css} +1 -1
  58. package/dist/assets/{key-round-BWUCyF0a.js → key-round-DCkVCgVU.js} +1 -1
  59. package/dist/assets/{mf-entry-bootstrap-0-8a7c339b.js → mf-entry-bootstrap-0-b0b43084.js} +2 -2
  60. package/dist/assets/{pencil-BOy-rDbD.js → pencil-CCigTGBs.js} +1 -1
  61. package/dist/assets/play-CAbyx0Ik.js +1 -0
  62. package/dist/assets/{player-overlays-UTlrOH4s.js → player-overlays-Cce7zLVf.js} +1 -1
  63. package/dist/assets/plus-CkMMGkZS.js +1 -0
  64. package/dist/assets/power-CFTIVgET.js +1 -0
  65. package/dist/assets/{radio-DKuDbOsT.js → radio-DH4YapvY.js} +1 -1
  66. package/dist/assets/{refresh-cw-BRs_7wGu.js → refresh-cw-7BWEDRql.js} +1 -1
  67. package/dist/assets/remoteEntry-ee3nHxW_.js +1 -0
  68. package/dist/assets/rotate-ccw-CvT7yFgt.js +1 -0
  69. package/dist/assets/rotate-cw-CHBtKezc.js +1 -0
  70. package/dist/assets/search-LiVSlZYd.js +1 -0
  71. package/dist/assets/{send-DSafmQi_.js → send-BxN-W44d.js} +1 -1
  72. package/dist/assets/{server-wq15CL48.js → server-MPW5E9Je.js} +1 -1
  73. package/dist/assets/square-BGhxv6lU.js +1 -0
  74. package/dist/assets/{square-check-big-DO81u3O2.js → square-check-big-KUDADp7C.js} +1 -1
  75. package/dist/assets/src-BQU93IBQ.js +349 -0
  76. package/dist/assets/src-CLcW_gk2.js +67 -0
  77. package/dist/assets/{star-Docf4EYZ.js → star-DgpioIxR.js} +1 -1
  78. package/dist/assets/{undo-2-LIqqVOPk.js → undo-2-Dx5lBXZW.js} +1 -1
  79. package/dist/assets/{upload-D4XiPM-V.js → upload-C_Z1HY8V.js} +1 -1
  80. package/dist/assets/{use-scenes-feed-BdUI8ZzS.js → use-scenes-feed-7qe4q2V7.js} +1 -1
  81. package/dist/assets/useEventInvalidation-B1u2ACO8.js +1 -0
  82. package/dist/assets/{video-DdJ2lmUL.js → video-CDs4hw5_.js} +1 -1
  83. package/dist/assets/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-cD-zqb5y.js → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-BZfm1F7n.js} +2 -2
  84. package/dist/assets/{wifi-Dx0-akbW.js → wifi-C6eU8xw2.js} +1 -1
  85. package/dist/assets/{zap-BLI50LGc.js → zap-CosjZI2Q.js} +1 -1
  86. package/dist/index.html +6 -6
  87. package/dist/server/addon.js +139 -57
  88. package/package.json +1 -1
  89. package/dist/assets/Addons-iB8Jj8Wa.js +0 -1
  90. package/dist/assets/DetectionIntelligence-B914KqGk.js +0 -1
  91. package/dist/assets/DeviceDetail-Cz70xnHl.js +0 -2
  92. package/dist/assets/EmbedPlayerPage-BQ1dgL2t.js +0 -1
  93. package/dist/assets/Events-B9-2qvUg.js +0 -1
  94. package/dist/assets/FormBuilder-ERsdhqXU.js +0 -1
  95. package/dist/assets/Identity-BNMnBiNq.js +0 -1
  96. package/dist/assets/IntegrationDetail-CY-7m0wv.js +0 -1
  97. package/dist/assets/Integrations-CbfIXyMv.js +0 -1
  98. package/dist/assets/NodeInferenceDevices-2-PPLG4L.js +0 -1
  99. package/dist/assets/Notifications-DMPhSkZ8.js +0 -1
  100. package/dist/assets/Pipeline-D4RLE8zf.js +0 -1
  101. package/dist/assets/Recordings-D4KRWthc.js +0 -1
  102. package/dist/assets/circle-check-big-Be_uVG-B.js +0 -1
  103. package/dist/assets/clock-9WRXwSMf.js +0 -1
  104. package/dist/assets/dist-Cpz6pXi5.js +0 -345
  105. package/dist/assets/index-DM4pp8Vx.js +0 -4
  106. package/dist/assets/play-tYEpmInf.js +0 -1
  107. package/dist/assets/plus-uTnAmy5n.js +0 -1
  108. package/dist/assets/power-DLJJxxZ5.js +0 -1
  109. package/dist/assets/remoteEntry-B-TTgn5K.js +0 -1
  110. package/dist/assets/rotate-ccw-CZY9UuXq.js +0 -1
  111. package/dist/assets/rotate-cw-rDbUnEsj.js +0 -1
  112. package/dist/assets/search-BGsNM6IN.js +0 -1
  113. package/dist/assets/square-BFMdi_Qm.js +0 -1
  114. package/dist/assets/src-C9CFJqET.js +0 -345
  115. package/dist/assets/src-DVZrqMsD.js +0 -67
  116. package/dist/assets/useEventInvalidation-DLMOtAJP.js +0 -1
@@ -1 +0,0 @@
1
- import{I as e,Q as t,S as n,W as r,b as i,o as a,q as o,x as s,z as c}from"./_virtual_mf___mfe_internal__admin_ui_host__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-DhP-Lgiq.js";import{Z as l}from"./player-overlays-UTlrOH4s.js";import{D as u,E as d,Or as f,_r as p,gi as m,hn as h,i as g,nn as _,pi as ee,yi as te,zr as v}from"./src-DVZrqMsD.js";import{t as y}from"./ProviderIcon-CIB9wAOh.js";import{t as b}from"./plus-uTnAmy5n.js";import{i as x,n as ne,r as S,t as C}from"./ScanNetworkModal-QJjU9tvg.js";import{t as w}from"./refresh-cw-BRs_7wGu.js";import{C as re,I as T,J as E,R as D,V as O,X as ie,i as k,p as A,t as j,v as M,z as ae}from"./index-DM4pp8Vx.js";import{t as N}from"./AdminPage-CCD07UMs.js";import"./useEventInvalidation-DLMOtAJP.js";import{t as P}from"./StatusBadge-CeptlsPG.js";import{t as F}from"./useBodyScrollLock-BDocajQE.js";t();function I(e,t){let[n,r]=o(!1);return c(()=>{if(!e){r(!1);return}r(!1);let n=setTimeout(()=>r(!0),t);return()=>clearTimeout(n)},[e,t]),n}t();function L({providerId:e,onImport:t,onSkip:r}){let{t:i}=j(),[a,l]=o(new Set),u=f(),d=u.data,p=u.isPending||!u.data&&!u.isError;c(()=>{e&&(u.isPending||u.data||u.mutate({addonId:e}))},[e,u]);function m(e){l(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}if(p)return n(`div`,{className:`flex flex-col items-center py-12`,children:[s(`div`,{className:`h-6 w-6 animate-spin rounded-full border-2 border-primary border-t-transparent`}),s(`p`,{className:`mt-3 text-xs text-foreground-subtle`,children:i(`integrations.searchingDevices`)})]});let h=d??[];return n(`div`,{className:`space-y-4`,children:[s(`p`,{className:`text-xs text-foreground-subtle`,children:h.length>0?i(`integrations.foundDevices`,{count:h.length}):i(`integrations.noDevicesFound`)}),h.length>0&&s(`div`,{className:`space-y-1.5 max-h-64 overflow-y-auto`,children:h.map(e=>{let t=e.stableId,r=e.suggestedName??t,i=a.has(t);return n(`button`,{onClick:()=>m(t),className:`flex w-full items-center gap-3 rounded-lg border p-3 text-left transition-colors ${i?`border-primary/40 bg-primary/5`:`border-border bg-surface hover:border-foreground-subtle/30`}`,children:[s(`div`,{className:`flex h-5 w-5 items-center justify-center rounded border flex-shrink-0 ${i?`border-primary bg-primary`:`border-border`}`,children:i&&s(ae,{className:`h-3 w-3 text-primary-foreground`})}),s(O,{className:`h-3.5 w-3.5 text-foreground-subtle flex-shrink-0`}),s(`span`,{className:`text-xs font-medium text-foreground truncate`,children:r})]},t)})}),n(`div`,{className:`flex items-center justify-between pt-2`,children:[s(`button`,{onClick:r,className:`rounded-lg border border-border px-3 py-1.5 text-xs text-foreground-subtle hover:text-foreground transition-colors`,children:i(`integrations.skip`)}),h.length>0&&n(`button`,{onClick:()=>t(Array.from(a)),disabled:a.size===0,className:`rounded-lg bg-primary px-4 py-1.5 text-xs font-medium text-primary-foreground shadow-sm disabled:opacity-50`,children:[i(`integrations.importSelected`),` (`,a.size,`)`]})]})]})}function R({onSelect:e,onClose:t,pendingAddonId:r=null}){let{t:i}=j(),a=E(),{data:o,isLoading:c}=m();if(c)return s(`div`,{className:`space-y-2 p-2`,children:[1,2,3].map(e=>s(`div`,{className:`h-14 rounded-lg bg-surface animate-pulse`},e))});let l=r!==null;return n(`div`,{className:`space-y-2`,children:[(o??[]).map(o=>{let c=o.instanceMode===`unique`&&o.existingInstances.length>0,u=r===o.addonId,d=l;return n(`button`,{disabled:d,onClick:()=>{if(!d)if(c){let e=o.existingInstances[0].id;t(),a(`/integrations/${e}`)}else e(o.addonId,o.instanceMode,o.discoveryMode,o.name,o.kind,o.brokerKind,o.mode,o.canTest)},className:`flex w-full items-center gap-3 rounded-lg border border-border bg-surface p-3 text-left hover:border-foreground-subtle/30 transition-colors disabled:opacity-60 disabled:cursor-not-allowed disabled:hover:border-border`,children:[o.iconUrl?s(`div`,{className:`flex h-9 w-9 items-center justify-center rounded-lg flex-shrink-0`,style:{backgroundColor:`${o.color}15`},children:s(`img`,{src:o.iconUrl,alt:``,className:`h-5 w-5`})}):s(`div`,{className:`flex h-9 w-9 items-center justify-center rounded-lg flex-shrink-0`,style:{backgroundColor:`${o.color}15`},children:s(`span`,{className:`text-sm`,style:{color:o.color},children:`◉`})}),n(`div`,{className:`flex-1 min-w-0`,children:[s(`p`,{className:`text-xs font-semibold text-foreground`,children:o.name}),o.description&&s(`p`,{className:`text-[10px] text-foreground-subtle mt-0.5 truncate`,children:o.description})]}),u?s(re,{className:`h-4 w-4 animate-spin text-primary flex-shrink-0`}):c?n(`span`,{className:`flex items-center gap-1 text-[10px] font-medium text-foreground-subtle`,children:[s(A,{className:`h-3 w-3`}),i(`integrations.manage`)]}):s(T,{className:`h-4 w-4 text-foreground-subtle flex-shrink-0`})]},o.addonId)}),(o??[]).length===0&&s(`div`,{className:`py-8 text-center text-xs text-foreground-subtle`,children:i(`integrations.noProviders`)})]})}t();function oe(e){let t=e=>{if(e.type===`separator`||e.type===`info`||e.type===`button`)return e;if(e.type===`group`)return{...e,fields:e.fields.map(e=>t(e))};let{value:n,...r}=e;return r};return{...e.tabs?{tabs:e.tabs}:{},sections:e.sections.map(e=>({...e,fields:e.fields.map(t)}))}}var z=2e4;function se({open:e,onClose:t}){let{t:l}=j(),u=E(),d=a(),[m,g]=o(`picker`),[_,te]=o(null),[v,y]=o(null),[b,x]=o(`manual`),[C,w]=o(null),[T,D]=o(``),[O,ie]=o(null),[A,M]=o(null),[ae,N]=o(!1),{data:P}=h({addonId:_??``,nodeId:`hub`},{enabled:_!=null}),se=r(()=>P?oe(P):null,[P]),B=ee({onSuccess:()=>d.invalidateQueries({queryKey:[[`integrations`]]})}),V=f(),ce=V.data;c(()=>{m!==`discovery`||!v||!_||V.isPending||V.data||V.mutate({addonId:_})},[m,v,_,V]);let H=p({onSuccess:()=>d.invalidateQueries({queryKey:[[`deviceManager`]]})});function U(e,t,n,r,i,a,o,s){if(!B.isPending){if(te(e),N(s),x(n),D(r),M(null),o===`broker`){if(!a){M(`Addon '${e}' declares mode 'broker' but no brokerKind in its manifest`);return}w(a),g(`broker`);return}if(o===`account`){g(`config`);return}W(e,r)}}async function W(e,n){try{let r=await B.mutateAsync({addonId:e,name:n,settings:{}});t(),J(),u(`/integrations/${r.id}?add=1`)}catch{}}async function G(e){if(_)try{let t=await B.mutateAsync({addonId:_,name:e.name,settings:e.config});y(t.id),b===`auto`||b===`both`?g(`discovery`):q(t.id)}catch{}}async function K(e){if(_)try{let t=await B.mutateAsync({addonId:_,name:T,settings:{brokerId:e}});ie(t.id),y(t.id),q(t.id)}catch{}}async function le(e){if(_){for(let t of e){let e=ce?.find(e=>e.stableId===t);e&&await H.mutateAsync({addonId:_,candidate:e,...O===null?{}:{integrationId:O}})}q()}}function q(e){let n=e??v??_;t(),J(),n&&u(`/integrations/${n}`)}function J(){g(`picker`),te(null),y(null),x(`manual`),w(null),D(``),ie(null),M(null),N(!1)}function Y(){t(),J()}F(e);let X=B.isPending,Z=I(X,z);if(!e)return null;let Q={picker:l(`integrations.newIntegration`),config:l(`integrations.configureIntegration`),discovery:l(`integrations.importDevices`),broker:l(`integrations.connectBroker`,{defaultValue:`Connect a broker`})},ue=X?_:null,$=B.error,de=X&&!Z;return n(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center`,children:[s(`div`,{className:`absolute inset-0 bg-black/60`,onClick:de?void 0:Y}),n(`div`,{className:`relative z-10 w-full max-w-lg max-h-[calc(85dvh-2*max(env(safe-area-inset-top),env(safe-area-inset-bottom)))] rounded-xl border border-border bg-background shadow-2xl flex flex-col overflow-hidden`,children:[n(`div`,{className:`flex items-center justify-between border-b border-border px-5 py-4 flex-shrink-0`,children:[s(`h2`,{className:`text-sm font-semibold text-foreground`,children:Q[m]}),s(`button`,{onClick:Y,disabled:de,className:`rounded-md p-1 text-foreground-subtle hover:text-foreground hover:bg-surface-hover transition-colors disabled:opacity-40 disabled:cursor-not-allowed`,children:s(k,{className:`h-4 w-4`})})]}),n(`div`,{className:`px-5 py-4 flex-1 overflow-y-auto overscroll-contain`,children:[$&&!X&&s(`div`,{className:`mb-3 rounded-lg border border-destructive/40 bg-destructive/10 px-3 py-2 text-xs text-destructive`,children:$ instanceof Error?$.message:String($)}),m===`picker`&&n(i,{children:[A&&s(`div`,{className:`mb-3 rounded-lg border border-destructive/40 bg-destructive/10 px-3 py-2 text-xs text-destructive`,children:A}),s(R,{onSelect:U,onClose:Y,pendingAddonId:ue})]}),m===`config`&&_&&s(ne,{addonId:_,configSchema:se??null,canTest:ae,onSave:G,onBack:()=>g(`picker`)}),m===`broker`&&C&&s(S,{kind:C,onResolved:e=>{K(e)},onBack:()=>g(`picker`)}),m===`discovery`&&v&&s(L,{providerId:v,onImport:le,onSkip:q})]}),X&&n(`div`,{className:`absolute inset-0 z-20 flex flex-col items-center justify-center gap-2 rounded-xl bg-background/85 backdrop-blur-sm px-6 text-center`,children:[s(re,{className:`h-6 w-6 animate-spin text-primary`}),s(`p`,{className:`text-xs font-medium text-foreground`,children:l(`integrations.creating`,{defaultValue:`Creating integration…`})}),!Z&&s(`p`,{className:`text-[10px] text-foreground-subtle`,children:l(`integrations.creatingHint`,{defaultValue:`Waiting for the addon to restart and register`})}),Z&&n(i,{children:[s(`p`,{className:`text-[10px] text-foreground-subtle max-w-xs`,children:l(`integrations.creatingOverdue`,{defaultValue:`This is taking longer than expected. The integration may already have been created — close this dialog and refresh to check.`})}),s(`button`,{onClick:Y,className:`mt-1 rounded-md border border-border bg-surface px-3 py-1.5 text-[11px] font-medium text-foreground hover:bg-surface-hover transition-colors`,children:l(`integrations.closeAndRefresh`,{defaultValue:`Close`})})]})]})]})]})}function B({integration:e,expanded:t,onToggleExpand:r}){return n(`div`,{className:`flex items-center gap-2.5`,children:[s(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),r(e.addonId)},"aria-label":t?`Collapse`:`Expand`,"aria-expanded":t,className:`flex h-5 w-5 flex-shrink-0 items-center justify-center rounded text-foreground-subtle transition-colors hover:bg-surface-hover hover:text-foreground`,children:s(t?D:T,{className:`h-3.5 w-3.5`})}),s(y,{type:e.addonId,size:`sm`}),n(`div`,{className:`flex min-w-0 flex-col`,children:[s(`span`,{className:`truncate text-xs font-semibold text-foreground`,children:e.name}),s(`span`,{className:`truncate text-[10px] text-foreground-subtle`,children:e.addonId})]})]})}function V(e){let{isExpanded:t,onToggleExpand:n}=e;return[{key:`name`,header:`Integration`,headerClassName:`w-[55%]`,cell:e=>s(B,{integration:e,expanded:t(e),onToggleExpand:n})},{key:`devices`,header:`Devices`,headerClassName:`w-[15%]`,cellClassName:`text-[11px] text-foreground-subtle`,cell:e=>`${e.deviceCount} device${e.deviceCount===1?``:`s`}`},{key:`status`,header:`Status`,headerClassName:`w-[15%]`,cell:e=>s(P,{status:e.status})}]}t();function ce(e){if(!e.enabled)return`disabled`;switch(e.processState){case`running`:return`running`;default:return`stopped`}}var H=`expand`;function U(){let{t}=j(),a=E(),c=l(),[f]=ie(),[p,m]=o(!1),h=e(()=>m(!0),[]),ee=e(()=>m(!1),[]),[ne,S]=o(!1),re=e(()=>S(!0),[]),T=e(()=>S(!1),[]);g([`integrations`],[`integration.enabled`,`integration.disabled`,`integration.deleted`,`provider.started`,`provider.stopped`,`addon.installed`,`addon.uninstalled`,`addon.started`,`addon.stopped`,`addon.updated`]),g([`deviceManager`],[`device.registered`,`device.unregistered`,`device.online`,`device.offline`,`device.disabled`,`device.enabled`]);let{data:D,isLoading:O,refetch:k}=te(void 0),{data:A,isLoading:ae,refetch:P}=v({}),F=r(()=>A??[],[A]),I=r(()=>D??[],[D]),L=r(()=>{let e=new Map;for(let t of F)e.set(t.id,{id:t.id,name:t.name??t.stableId??`#${String(t.id)}`});return e},[F]),R=r(()=>{let e=new Map;for(let t of u(F)){let n=t.addonId??``;n&&e.set(n,(e.get(n)??0)+1)}return e},[F]),oe=r(()=>I.map(e=>({id:e.id,addonId:e.addonId,name:e.name,enabled:e.enabled,status:ce(e),deviceCount:R.get(e.addonId)??0})),[I,R]),z=f.get(H),B=e(e=>{let t=new URLSearchParams(window.location.search);t.get(H)===e?t.delete(H):t.set(H,e);let n=t.toString(),r=`${window.location.pathname}${n?`?${n}`:``}${window.location.hash}`;window.history.replaceState(window.history.state,``,r),window.dispatchEvent(new PopStateEvent(`popstate`))},[]),U=e(e=>a(`/integrations/${e.id}`),[a]),W=e(e=>L.get(e)??null,[L]),G=e(e=>s(y,{type:e,size:`sm`}),[]),K=e(e=>a(`/devices/${String(e)}`),[a]),le=e(e=>s(d,{context:`integration-detail`,devices:F,trpc:c.trpcClient,forceAddon:e.addonId,urlScope:`nested`,lsKey:`integrations:nested:${e.addonId}`,resolveIntegrationIcon:G,resolveParent:W,onNavigate:K}),[F,c.trpcClient,G,W,K]),q=e(e=>z===e.addonId,[z]),J=r(()=>V({isExpanded:q,onToggleExpand:B}),[q,B]),Y=e(e=>`${e.name} ${e.addonId}`,[]),X=e(e=>e.addonId,[]),Z=e(()=>{k(),P()},[k,P]),Q=O||ae,ue=I.length>0;return n(N,{icon:M,title:t(`nav.integrations`,`Integrations`),actions:n(i,{children:[s(`button`,{onClick:Z,disabled:Q,className:`flex items-center gap-1 rounded-lg border border-border bg-surface px-2.5 py-1.5 text-xs font-medium text-foreground-subtle hover:text-foreground hover:bg-surface-hover transition-colors disabled:opacity-50`,title:`Refresh`,children:s(w,{className:_(`h-3.5 w-3.5`,Q&&`animate-spin`)})}),n(`button`,{onClick:re,className:`flex items-center gap-1.5 rounded-lg border border-border bg-surface px-2.5 py-1.5 text-xs font-medium text-foreground-subtle hover:text-foreground hover:bg-surface-hover transition-colors`,title:`Scan the local network for devices`,children:[s(x,{className:`h-3.5 w-3.5`}),`Scan network`]}),n(`button`,{onClick:h,className:`flex items-center gap-1.5 rounded-lg bg-primary px-3 py-1.5 text-xs font-medium text-primary-foreground shadow-sm`,children:[s(b,{className:`h-3.5 w-3.5`}),`New Integration`]})]}),children:[Q&&s(`div`,{className:`space-y-2`,children:[1,2,3].map(e=>s(`div`,{className:`h-12 rounded-lg border border-border bg-surface animate-pulse`},e))}),!Q&&!ue&&n(`div`,{className:`flex flex-col items-center py-20 text-foreground-subtle`,children:[s(`p`,{className:`text-sm`,children:`No integrations configured.`}),s(`p`,{className:`text-xs mt-1`,children:`Click "New Integration" to connect cameras and devices.`})]}),!Q&&ue&&s(d,{mode:`generic`,items:oe,getKey:X,getSearchText:Y,columns:J,onRowClick:U,isExpanded:q,renderExpanded:le,searchPlaceholder:t(`integrations.search`,{defaultValue:`Search integrations…`}),emptyLabel:t(`integrations.empty`,{defaultValue:`No integrations found.`})}),s(se,{open:p,onClose:ee}),s(C,{open:ne,onClose:T})]})}export{U as IntegrationsPage};
@@ -1 +0,0 @@
1
- import{K as e,Q as t,S as n,W as r,b as i,o as a,q as o,x as s,z as c}from"./_virtual_mf___mfe_internal__admin_ui_host__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-DhP-Lgiq.js";import{Fr as l,La as u,Nr as d,Nt as f,Rt as p,Xa as m,zr as h}from"./src-DVZrqMsD.js";import{t as g}from"./zap-BLI50LGc.js";import{I as _,K as v,N as y,S as b,a as x}from"./index-DM4pp8Vx.js";var S=v(`circuit-board`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M11 9h4a2 2 0 0 0 2-2V3`,key:`1ve2rv`}],[`circle`,{cx:`9`,cy:`9`,r:`2`,key:`af1f0g`}],[`path`,{d:`M7 21v-4a2 2 0 0 1 2-2h4`,key:`1fwkro`}],[`circle`,{cx:`15`,cy:`15`,r:`2`,key:`3i40o0`}]]),C=v(`layers`,[[`path`,{d:`M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z`,key:`zw3jo`}],[`path`,{d:`M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12`,key:`1wduqc`}],[`path`,{d:`M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17`,key:`kqbvx6`}]]),w=v(`lock-open`,[[`rect`,{width:`18`,height:`11`,x:`3`,y:`11`,rx:`2`,ry:`2`,key:`1w4ew1`}],[`path`,{d:`M7 11V7a5 5 0 0 1 9.9-1`,key:`1mm8w8`}]]),T=v(`minus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}]]),E=v(`scale`,[[`path`,{d:`m16 16 3-8 3 8c-.87.65-1.92 1-3 1s-2.13-.35-3-1Z`,key:`7g6ntu`}],[`path`,{d:`m2 16 3-8 3 8c-.87.65-1.92 1-3 1s-2.13-.35-3-1Z`,key:`ijws7r`}],[`path`,{d:`M7 21h10`,key:`1b0cd5`}],[`path`,{d:`M12 3v18`,key:`108xh3`}],[`path`,{d:`M3 7h2c2 0 5-1 7-2 2 1 5 2 7 2h2`,key:`3gwbw2`}]]),D=v(`usb`,[[`circle`,{cx:`10`,cy:`7`,r:`1`,key:`dypaad`}],[`circle`,{cx:`4`,cy:`20`,r:`1`,key:`22iqad`}],[`path`,{d:`M4.7 19.3 19 5`,key:`1enqfc`}],[`path`,{d:`m21 3-3 1 2 2Z`,key:`d3ov82`}],[`path`,{d:`M9.26 7.68 5 12l2 5`,key:`1esawj`}],[`path`,{d:`m10 14 5 2 3.5-3.5`,key:`v8oal5`}],[`path`,{d:`m18 12 1-1 1 1-1 1Z`,key:`1bh22v`}]]);t();function O(e){return h({addonId:e})}function k(e){return l({deviceId:e},{enabled:Number.isFinite(e)})}var A=3e4,j=2e3;function M(t){let n=e(0);return n.current===0&&(n.current=Date.now()),d({parentDeviceId:t},{enabled:Number.isFinite(t),staleTime:0,refetchOnMount:`always`,refetchInterval:e=>{let t=e.state.data;return t&&t.length>0||Date.now()-n.current>=A?!1:j}})}function N(e){let t={};for(let n of e){let e=Object.keys(n.steps).length>0;t[n.key]={enabled:n.enabled,weight:Math.max(1,n.weight),...n.maxSessions!==null&&n.maxSessions>0?{maxSessions:n.maxSessions}:{},...e?{steps:n.steps}:{}}}return t}t();function P(e,t,n){return Math.min(Math.max(e,t),n)}function F(e){let t=e.reduce((e,t)=>e+Math.max(t.weight,0),0);if(t<=0){let t=e.length>0?100/e.length:0;return Object.fromEntries(e.map(e=>[e.id,t]))}return Object.fromEntries(e.map(e=>[e.id,Math.max(e.weight,0)/t*100]))}function I(e,t,n,r,i){let a=i.filter(e=>e!==t&&r.has(e)).reduce((t,n)=>t+Math.max(e[n]??0,0),0),o=Math.max(0,100-a),s=i.filter(e=>e!==t&&!r.has(e)),c=s.length===0?o:P(n,0,o),l={...e,[t]:c};if(s.length>0){let e=Math.max(0,o-c)/s.length;for(let t of s)l[t]=e}return l}function L(e,t,n){let r={},i=0,a=[];for(let o of t){let t=Math.max(e[o]??0,0);if(n.has(o)){let e=Math.round(t);r[o]=e,i+=e}else{let e=Math.floor(t);r[o]=e,a.push({id:o,floor:e,frac:t-e})}}let o=Math.max(0,100-i)-a.reduce((e,t)=>e+t.floor,0),s=[...a].sort((e,t)=>t.frac-e.frac);for(let e=0;o>0&&s.length>0;e+=1)r[s[e%s.length].id]+=1,--o;let c=[...a].sort((e,t)=>e.frac-t.frac);for(let e=0;o<0&&c.length>0;e+=1){let t=c[e%c.length].id;r[t]>0&&(--r[t],o+=1)}return r}function R({nodes:e,pending:t,onCommitWeights:r,weightLabel:a=`Detection weight`,emptyHint:l,footnote:u}){let[d,f]=o(()=>F(e)),[p,m]=o(new Set);c(()=>{f(F(e)),m(t=>new Set([...t].filter(t=>e.some(e=>e.id===t))))},[e.map(e=>`${e.id}:${e.weight}`).join(`|`)]);let h=e.map(e=>e.id),g=e=>{m(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},_=(e,t)=>{f(n=>I(n,e,t,p,h))},v=()=>{let t=L(d,h,p),n=e.filter(e=>(t[e.id]??0)!==e.weight).map(e=>e.id);if(n.length===0)return;let i=new Set([...n,...p]);r(e.filter(e=>i.has(e.id)).map(e=>({nodeId:e.id,weight:t[e.id]??0})))};if(e.length===0)return s(`p`,{className:`rounded-lg border border-dashed border-border bg-background px-4 py-6 text-center text-xs text-foreground-subtle`,children:l??`No detect-enabled nodes. Enable “Detect” on a node above to distribute detection weight.`});let y=e.length===1;return n(`div`,{className:`space-y-3`,children:[e.map(e=>{let r=d[e.id]??0,i=p.has(e.id);return n(`div`,{className:`flex items-center gap-3`,children:[s(`span`,{className:`w-28 shrink-0 truncate text-xs font-medium text-foreground`,title:e.name,children:e.name}),s(`input`,{"aria-label":`${a} for ${e.name}`,type:`range`,min:0,max:100,step:1,value:Math.round(r),disabled:t||i||y,onChange:t=>_(e.id,Number(t.target.value)),onPointerUp:()=>v(),onKeyUp:()=>v(),className:`h-1.5 flex-1 cursor-pointer accent-primary disabled:cursor-not-allowed disabled:opacity-50`}),n(`span`,{className:`w-10 shrink-0 text-right font-mono text-xs tabular-nums text-foreground`,children:[Math.round(r),`%`]}),s(`button`,{type:`button`,onClick:()=>g(e.id),disabled:t||y,"aria-pressed":i,title:i?`Unlock — allow rebalancing`:`Lock this share when others change`,className:`shrink-0 rounded p-1 hover:bg-surface-hover disabled:opacity-40 ${i?`text-amber-400`:`text-foreground-subtle`}`,children:s(i?b:w,{className:`h-3.5 w-3.5`})})]},e.id)}),s(`p`,{className:`text-[10px] leading-tight text-foreground-subtle`,children:u??s(i,{children:`Dragging one slider splits the rest equally across the unlocked nodes; lock a node to pin its share — locked nodes never move and the total always stays at 100%, so a drag is bounded by the room the unlocked nodes leave. Detection only distributes across nodes that can source a camera’s frames.`})})]})}t();function z(e){let t=e.backend.toLowerCase(),n=e.device.toLowerCase();return e.key===`cpu`||n===`cpu`?{label:`CPU`,Icon:y,hue:`slate`}:t===`openvino`&&n===`npu`?{label:`Intel NPU (AI Boost)`,Icon:g,hue:`sky`}:t===`openvino`&&(n===`gpu`||n===`igpu`)?{label:`Intel iGPU`,Icon:S,hue:`violet`}:t===`edgetpu`?{label:`Coral Edge TPU`,Icon:D,hue:`emerald`}:{label:`${e.backend} ${e.device}`.replace(/\b\w/g,e=>e.toUpperCase()).trim(),Icon:y,hue:`slate`}}var B={sky:`bg-sky-500/12 text-sky-400 ring-sky-500/25`,violet:`bg-violet-500/12 text-violet-400 ring-violet-500/25`,emerald:`bg-emerald-500/12 text-emerald-400 ring-emerald-500/25`,slate:`bg-surface-hover text-foreground-subtle ring-border`};function V({nodeId:e,nodeName:t,isOnline:l}){let d=a(),{data:h,isLoading:g}=u({nodeId:e},{refetchInterval:15e3}),v=m({onSettled:()=>{d.invalidateQueries({queryKey:[`pipelineOrchestrator`,`getNodeInferenceDevices`]})}}),y=h?.devices??[],b=h?.reachable??l,[S,w]=o({});c(()=>{w(Object.fromEntries(y.map(e=>[e.key,{enabled:e.enabled,weight:e.weight,maxSessions:e.maxSessions,steps:e.steps??{}}])))},[y.map(e=>`${e.key}:${e.enabled}:${e.weight}:${e.maxSessions}:${JSON.stringify(e.steps??{})}`).join(`|`)]);let T=r(()=>y.filter(e=>S[e.key]?.enabled??e.enabled).length,[y,S]),[D,O]=o(null),k=D??T>0,A=t=>{let n=y.map(e=>{let n=t[e.key]??j(e);return{key:e.key,enabled:n.enabled,weight:n.weight,maxSessions:n.maxSessions,steps:n.steps}});v.mutate({agentNodeId:e,inferenceDevices:N(n)})},j=e=>({enabled:e.enabled,weight:e.weight,maxSessions:e.maxSessions,steps:e.steps??{}}),M=e=>{if(!e.available)return;let t=S[e.key]??j(e),n={...S,[e.key]:{...t,enabled:!t.enabled}};w(n),A(n)},P=(e,t)=>{let n=S[e.key]??j(e),r={...S,[e.key]:{...n,maxSessions:t}};w(r),A(r)},F=r(()=>y.filter(e=>(S[e.key]?.enabled??e.enabled)&&e.available),[y,S]),I=r(()=>F.map(e=>({id:e.key,name:z(e).label,weight:S[e.key]?.weight??e.weight})),[F,S]);return n(`div`,{className:`rounded-lg border border-border bg-surface/60`,children:[n(`button`,{type:`button`,onClick:()=>O(!k),className:`flex w-full items-center gap-2.5 px-3.5 py-2.5 text-left`,"aria-expanded":k,children:[s(_,{className:`h-4 w-4 shrink-0 text-foreground-subtle transition-transform ${k?`rotate-90`:``}`}),s(`span`,{className:`truncate text-[13px] font-medium text-foreground`,children:t}),s(`span`,{className:`ml-auto flex items-center gap-2 text-[11px]`,children:b?T>=2?n(`span`,{className:`inline-flex items-center gap-1 text-emerald-400`,children:[s(C,{className:`h-3.5 w-3.5`}),T,` accelerators`]}):T===1?s(`span`,{className:`text-foreground-subtle`,children:`single default`}):s(`span`,{className:`text-foreground-subtle/70`,children:`auto default`}):n(`span`,{className:`inline-flex items-center gap-1 text-foreground-subtle`,children:[s(x,{className:`h-3.5 w-3.5`}),` unreachable`]})})]}),k&&n(`div`,{className:`space-y-3 border-t border-border px-3.5 py-3`,children:[b?g&&y.length===0?s(`p`,{className:`rounded-lg border border-dashed border-border bg-background px-4 py-6 text-center text-xs text-foreground-subtle`,children:`Probing accelerators…`}):y.length===0?s(`p`,{className:`rounded-lg border border-dashed border-border bg-background px-4 py-6 text-center text-xs text-foreground-subtle`,children:`No inference devices reported by this node's platform probe.`}):s(`ul`,{className:`space-y-2`,children:y.map(e=>{let t=z(e),r=S[e.key]??j(e),a=r.enabled&&e.available;return n(`li`,{className:`flex items-center gap-3 rounded-lg border px-3 py-2.5 transition-colors ${e.available?a?`border-primary/40 bg-primary/[0.04] ring-1 ring-inset ring-primary/20`:`border-border bg-surface`:`border-border/60 bg-background opacity-55`}`,children:[s(`span`,{className:`grid h-9 w-9 shrink-0 place-items-center rounded-md ring-1 ring-inset ${B[t.hue]}`,children:s(t.Icon,{className:`h-4.5 w-4.5`})}),n(`div`,{className:`min-w-0 flex-1`,children:[n(`div`,{className:`flex items-center gap-2`,children:[s(`span`,{className:`truncate text-[13px] font-medium text-foreground`,children:t.label}),s(p,{variant:`default`,style:`outline`,className:`font-mono text-[9px]`,children:e.format}),!e.available&&s(p,{variant:`warning`,className:`text-[9px]`,children:`unavailable`})]}),n(`div`,{className:`mt-0.5 flex items-center gap-1.5 text-[10px] text-foreground-subtle`,children:[s(`span`,{className:`font-mono`,children:e.key}),!a&&n(i,{children:[s(`span`,{"aria-hidden":!0,children:`·`}),n(`span`,{children:[`default model`,` `,s(`span`,{className:`font-mono text-foreground/80`,children:e.defaultModelId})]})]})]})]}),a&&n(`label`,{className:`flex shrink-0 items-center gap-1 text-[10px] text-foreground-subtle`,children:[s(`span`,{className:`hidden @sm/clustertab:inline`,children:`cap`}),s(`input`,{type:`number`,min:1,placeholder:`∞`,value:r.maxSessions??``,onChange:t=>{let n=t.target.value.trim(),r=n===``?null:Number.parseInt(n,10);P(e,r!=null&&r>0?r:null)},disabled:v.isPending,"aria-label":`Max concurrent sessions for ${t.label}`,className:`w-14 rounded border border-border bg-background px-1.5 py-1 text-right font-mono text-[11px] text-foreground focus:border-primary focus:outline-none`})]}),s(f,{checked:a,onCheckedChange:()=>M(e),disabled:!e.available||v.isPending,"aria-label":`Enable ${t.label}`,className:e.available?``:`cursor-not-allowed opacity-50`})]},e.key)})}):s(H,{}),b&&F.length>=2&&n(`div`,{className:`space-y-3 rounded-lg border border-border bg-background/60 p-3.5`,children:[n(`h4`,{className:`flex items-center gap-1.5 text-xs font-semibold uppercase tracking-wide text-foreground-subtle`,children:[s(E,{className:`h-3.5 w-3.5`}),`Balancer weight`]}),s(R,{nodes:I,pending:v.isPending,onCommitWeights:e=>{let t={...S};for(let n of e){let e=t[n.nodeId];e&&(t[n.nodeId]={...e,weight:n.weight})}w(t),A(t)},weightLabel:`Balancer weight`,footnote:s(i,{children:`Drag to shift the share of detection sessions each accelerator handles; lock one to pin its share while the others rebalance. Shares always sum to 100%.`})})]}),v.isError&&n(`div`,{className:`rounded-md border border-danger/30 bg-danger/5 px-3 py-2 text-[11px] text-danger`,children:[`Failed to save inference devices:`,` `,v.error instanceof Error?v.error.message:`unknown error`]})]})]})}function H(){return n(`div`,{className:`flex flex-col items-center gap-2 rounded-lg border border-dashed border-border bg-background px-4 py-8 text-center`,children:[s(x,{className:`h-6 w-6 text-foreground-subtle/60`}),s(`p`,{className:`text-xs font-medium text-foreground`,children:`Node unreachable`}),s(`p`,{className:`max-w-sm text-[11px] text-foreground-subtle`,children:`The platform probe couldn't be reached, so its live accelerator set is unavailable. Settings resume once the node reconnects.`})]})}export{k as a,T as c,N as i,C as l,z as n,M as o,R as r,O as s,V as t};