@camstack/addon-admin-ui 1.2.84 → 1.2.86
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{AddLocationWizard-CNcGS2EP.js → AddLocationWizard-CVvsaNYx.js} +1 -1
- package/dist/assets/{AddonCollectionPage-SG0XXnDN.js → AddonCollectionPage-JA8tzL7q.js} +1 -1
- package/dist/assets/Addons-BOYMP0uf.js +1 -0
- package/dist/assets/{AdminTabs-Bml9sY2f.js → AdminTabs-B-UL_iuP.js} +1 -1
- package/dist/assets/{AiProfiles-Bkve7K-d.js → AiProfiles-DI31JvyZ.js} +1 -1
- package/dist/assets/{BrokerForm-CBVRdxmh.js → BrokerForm-CFTyH54D.js} +1 -1
- package/dist/assets/{Build-NxtOO0V2.js → Build-BP0Mx9FT.js} +4 -4
- package/dist/assets/{Capabilities-BROK90Se.js → Capabilities-BvxWbN6u.js} +1 -1
- package/dist/assets/{CapabilityBadges-CUituID7.js → CapabilityBadges-DjOvNnpp.js} +1 -1
- package/dist/assets/{Cluster-BrFa4n0G.js → Cluster-CsEHMgVp.js} +1 -1
- package/dist/assets/{Data-G9jbwfOG.js → Data-Bt2o6J7H.js} +1 -1
- package/dist/assets/DetectionIntelligence-CeunXPtW.js +1 -0
- package/dist/assets/{DeviceAggregateSection-SWBVkQZo.js → DeviceAggregateSection-DLNzCtMs.js} +1 -1
- package/dist/assets/DeviceDetail-DCh8ydpY.js +2 -0
- package/dist/assets/{Devices-LRxw3I54.js → Devices-fMM-N9UK.js} +1 -1
- package/dist/assets/{EmbedPlayerPage-kAcRRhLT.js → EmbedPlayerPage-D8LRITOt.js} +1 -1
- package/dist/assets/{Events-D5RYcT1o.js → Events-Drj6ybP0.js} +1 -1
- package/dist/assets/{FormBuilder-D5TM9i1v.js → FormBuilder-ChyOUw_O.js} +1 -1
- package/dist/assets/{Identity-BRBs5jpM.js → Identity-kjnupMGz.js} +1 -1
- package/dist/assets/{IntegrationDetail-Bi2LK7OU.js → IntegrationDetail-683FxnPV.js} +1 -1
- package/dist/assets/{Integrations-qkldKVTw.js → Integrations-BAa7Hx8I.js} +1 -1
- package/dist/assets/{Integrations-DGLN-Oxt.js → Integrations-Bvz5KiZt.js} +1 -1
- package/dist/assets/{Logs-gPb8NR8H.js → Logs-CPMTc4WW.js} +1 -1
- package/dist/assets/{MotionZonesSettings-DshKL17j.js → MotionZonesSettings-DhO5kuER.js} +1 -1
- package/dist/assets/{MyAccess-X5GKXeQP.js → MyAccess-C5kfikXk.js} +1 -1
- package/dist/assets/{Network-D6gOeprQ.js → Network-DBtVDYGt.js} +1 -1
- package/dist/assets/{NodeAddonsSettingsPanel-DQFTkg1Y.js → NodeAddonsSettingsPanel-BdP5wGIu.js} +1 -1
- package/dist/assets/NodeInferenceDevices-CubcmlvI.js +1 -0
- package/dist/assets/Notifications-DBH3QGle.js +1 -0
- package/dist/assets/Pipeline-DgZbCwcO.js +1 -0
- package/dist/assets/{Plates-ffuMaQFQ.js → Plates-DiVTWUKg.js} +1 -1
- package/dist/assets/{PrivacyMaskSettings-MMzNNe4D.js → PrivacyMaskSettings-zKU6VZ4G.js} +1 -1
- package/dist/assets/{ProviderIcon-DYBwyw9a.js → ProviderIcon-JxmOoO_O.js} +1 -1
- package/dist/assets/Recordings-DTGdM6Ip.js +1 -0
- package/dist/assets/{ScanNetworkModal-loGcDZBw.js → ScanNetworkModal-DkqUu2Xc.js} +1 -1
- package/dist/assets/{SceneMonitorEditor-8DCu2vt2.js → SceneMonitorEditor-DZucoVrl.js} +1 -1
- package/dist/assets/{Scenes-0XwrxsM3.js → Scenes-DMSYbhd1.js} +1 -1
- package/dist/assets/{Settings-ZUSTjvUu.js → Settings-olnTIAze.js} +1 -1
- package/dist/assets/{Showroom-6YL7UJbf.js → Showroom-CdPGD4R4.js} +1 -1
- package/dist/assets/{Terminal-ykCkur7X.js → Terminal-Ck0I64eZ.js} +3 -3
- package/dist/assets/{_virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-CmZvmCxO.js → _virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-BpY1fOVD.js} +1 -1
- package/dist/assets/{_virtual_mf___mfe_internal__admin_ui_host__loadShare___mf_0_trpc_mf_1_react_mf_2_query__loadShare__.js-DN3UpM8E.js → _virtual_mf___mfe_internal__admin_ui_host__loadShare___mf_0_trpc_mf_1_react_mf_2_query__loadShare__.js-DX7sYWrs.js} +1 -1
- package/dist/assets/{bell-ring-B2rpaFtk.js → bell-ring-BgQsFN7F.js} +1 -1
- package/dist/assets/{boxes-DFTZfyUt.js → boxes-BnOBLNz5.js} +1 -1
- package/dist/assets/{build-cluster-graph-CLTUpmuN.js → build-cluster-graph-BwHdP82z.js} +1 -1
- package/dist/assets/circle-check-big-FvfSWrhR.js +1 -0
- package/dist/assets/{circle-x-BBjSRoMP.js → circle-x-DAqnOyA6.js} +1 -1
- package/dist/assets/clock-BpmU9WHJ.js +1 -0
- package/dist/assets/{copy-DWZC1oTP.js → copy-Dl5E5of_.js} +1 -1
- package/dist/assets/{debounced-invalidate-CwLD5Weo.js → debounced-invalidate-BIRVvqvY.js} +1 -1
- package/dist/assets/dist-C2l22cSJ.js +349 -0
- package/dist/assets/{dist-Do647wcg.js → dist-CUfLXJC3.js} +1 -1
- package/dist/assets/{download-CxGsHyPn.js → download-AfoMEWCf.js} +1 -1
- package/dist/assets/{face-bbox-BBED_iSc.js → face-bbox-BFT7iMc1.js} +1 -1
- package/dist/assets/{hard-drive-mR1KIPtt.js → hard-drive-C9zTEogy.js} +1 -1
- package/dist/assets/{hostInit-COJyRwPi.js → hostInit-Cw_l9Xfz.js} +1 -1
- package/dist/assets/{index-BppWvbJe.css → index-DM8saR4E.css} +1 -1
- package/dist/assets/index-vZPXzSPK.js +4 -0
- package/dist/assets/{key-round-Ds9BFc7u.js → key-round-sF-8oSo7.js} +1 -1
- package/dist/assets/{mf-entry-bootstrap-0-a5a42ace.js → mf-entry-bootstrap-0-8f39d7c2.js} +2 -2
- package/dist/assets/{pencil-LYk12AGI.js → pencil-DsWgW1cM.js} +1 -1
- package/dist/assets/play-BkPr3HPj.js +1 -0
- package/dist/assets/{player-overlays-BDAoS5mj.js → player-overlays-BGbLKvcn.js} +1 -1
- package/dist/assets/plus-zSkh3oEn.js +1 -0
- package/dist/assets/power-C4yi0usE.js +1 -0
- package/dist/assets/{radio-DOknapBC.js → radio-CWn4dw9L.js} +1 -1
- package/dist/assets/{refresh-cw-aVMqVAXK.js → refresh-cw-Cly4MRhi.js} +1 -1
- package/dist/assets/remoteEntry-BwhR6qpk.js +1 -0
- package/dist/assets/rotate-ccw-D0bM0VXI.js +1 -0
- package/dist/assets/rotate-cw-CNTEn7nJ.js +1 -0
- package/dist/assets/search-Bq3ZLayo.js +1 -0
- package/dist/assets/{send-CStKcKMW.js → send-yaKZ1tHd.js} +1 -1
- package/dist/assets/{server-DpQquxi2.js → server-CLOtA1S4.js} +1 -1
- package/dist/assets/square-BlSn3fsr.js +1 -0
- package/dist/assets/{square-check-big-D_32NB3x.js → square-check-big-DsiPGDCA.js} +1 -1
- package/dist/assets/src-Buv5KpAz.js +67 -0
- package/dist/assets/src-CQVcBp6b.js +349 -0
- package/dist/assets/{star-CnMUDmNT.js → star-fUCw1hyi.js} +1 -1
- package/dist/assets/{undo-2-Bu9cI3K3.js → undo-2-DXcExZt9.js} +1 -1
- package/dist/assets/{upload-DITj7pmV.js → upload-CLT-rIe6.js} +1 -1
- package/dist/assets/{use-scenes-feed-ClYTNH65.js → use-scenes-feed-CvesyXw2.js} +1 -1
- package/dist/assets/useEventInvalidation-B-Cb5-ry.js +1 -0
- package/dist/assets/{video-D3MA7ngK.js → video-CFtTGKiz.js} +1 -1
- package/dist/assets/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-PnuvqzUU.js → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-BwIIU_83.js} +2 -2
- package/dist/assets/{wifi-CmMg3Cu0.js → wifi-Glpx3AkR.js} +1 -1
- package/dist/assets/{zap-H6dvIirs.js → zap-aTn3GS-l.js} +1 -1
- package/dist/index.html +6 -6
- package/dist/server/addon.js +174 -11
- package/package.json +1 -1
- package/dist/assets/Addons-i2kGOrOA.js +0 -1
- package/dist/assets/DetectionIntelligence-DiGPeWhN.js +0 -1
- package/dist/assets/DeviceDetail-O6xEze8u.js +0 -2
- package/dist/assets/NodeInferenceDevices-Dp-l4FwP.js +0 -1
- package/dist/assets/Notifications-D1d2Q-ix.js +0 -1
- package/dist/assets/Pipeline-DcVa4THx.js +0 -1
- package/dist/assets/Recordings-C8wX8f22.js +0 -1
- package/dist/assets/circle-check-big-BBxWSiDJ.js +0 -1
- package/dist/assets/clock-6MQBaiID.js +0 -1
- package/dist/assets/dist-DHSKR8rX.js +0 -345
- package/dist/assets/index-D8DOnspM.js +0 -4
- package/dist/assets/play-BSZQjLkZ.js +0 -1
- package/dist/assets/plus-DpCA4f3I.js +0 -1
- package/dist/assets/power-VPCWTEZu.js +0 -1
- package/dist/assets/remoteEntry-DBWzSJRP.js +0 -1
- package/dist/assets/rotate-ccw-D7VfDBtK.js +0 -1
- package/dist/assets/rotate-cw-1XMucssR.js +0 -1
- package/dist/assets/search-CcmIbGXi.js +0 -1
- package/dist/assets/square-BeUYnpBQ.js +0 -1
- package/dist/assets/src-B4-xc1-S.js +0 -345
- package/dist/assets/src-BHAm1a2j.js +0 -67
- package/dist/assets/useEventInvalidation-CYexmqD-.js +0 -1
package/dist/assets/{NodeAddonsSettingsPanel-DQFTkg1Y.js → NodeAddonsSettingsPanel-BdP5wGIu.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{H as e,I as t,K as n,Q as r,S as i,W as a,i as o,k as s,o as c,p as l,q as u,t as d,x as f,z as p}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 m}from"./player-overlays-BDAoS5mj.js";import{En as h,Kn as g,_n as _,mr as v,vn as y}from"./src-BHAm1a2j.js";import{Mt as b}from"./src-B4-xc1-S.js";import{t as x}from"./FormBuilder-D5TM9i1v.js";import{n as ee,r as S,t as te}from"./SchemaTabBar-DC28nb9j.js";import{t as ne}from"./StableTabPanel-Dc954AQl.js";r();var C=s(function({addonId:r,schema:i,serverValues:o,onImmediateSave:s,onStateChange:c,onAction:l,disabled:u},d){let m=S({schema:i,serverValues:o,onImmediateSave:t(e=>s(r,e),[r,s]),onDeferredSave:t(()=>{},[])});e(d,()=>({flush:()=>{let e={};for(let t of m.pendingKeys)e[t]=m.values[t];return m.handleDiscard(m.pendingKeys),e},discard:()=>m.resetAll()}),[m]);let h=m.pendingKeys,g=h.join(`|`),_=a(()=>h.map(e=>`${e}=${JSON.stringify(m.values[e])}`).join(`,`),[h,m.values]),v=n(c);p(()=>{v.current=c},[c]),p(()=>{let e={};for(let t of h)e[t]=m.values[t];v.current({addonId:r,pendingKeys:h,pendingValues:e})},[r,g,_]);let y=a(()=>{if(l)return(e,t,n)=>l(r,e,t,n)},[r,l]);return f(x,{schema:i,values:m.values,onChange:m.handleChange,disabled:u,onAction:y})});r();function w(e,t){if(e.type===`separator`||e.type===`info`||e.type===`button`)return e;if(e.type===`group`){let n=e.fields.map(e=>w(e,t));return{...e,fields:n}}let n=e;t[e.key]=n.value;let{value:r,...i}=n;return i}function T(e,t){return{...e,fields:e.fields.map(e=>w(e,t))}}function re(e){let t={};return{schema:{...e.tabs?{tabs:e.tabs}:{},sections:e.sections.map(e=>T(e,t))},values:t}}function E({nodeId:e,addonIds:r,level:s,deviceId:p,capability:x,sectionIds:S,sectionTab:C,extraTabs:w,schemaTabExtras:T,title:E,description:D,selfTabbed:ae}){let O=c(),k=m().trpcClient,A=y(),j=_(),M=v(),N=g(),P=ae===!0||!!(w&&w.length>0),[F,oe]=u(null);if(s===`device`&&!p)throw Error(`NodeAddonsSettingsPanel: deviceId is required when level === "device"`);let I=e??`hub`,L=o({queries:r.map(e=>({queryKey:[[`addonSettings`,s===`global`?`getGlobalSettings`:`getDeviceSettings`],{addonId:e,nodeId:I,deviceId:p??null,cap:x??null}],queryFn:async()=>s===`global`?{addonId:e,result:await k.addonSettings.getGlobalSettings.query({addonId:e,nodeId:I,...x?{cap:x}:{}})}:{addonId:e,result:await k.addonSettings.getDeviceSettings.query({addonId:e,deviceId:p,nodeId:I})},placeholderData:l}))}),R=L.some(e=>e.isLoading),z=L.map(e=>{if(!e.data)return`-`;if(e.data.result===null)return`${e.data.addonId}:n`;let t=[];for(let n of e.data.result.sections){t.push(`s:${n.id}:${n.tab??`general`}`);for(let e of n.fields){if(!(`key`in e))continue;let n=`options`in e&&Array.isArray(e.options)?e.options.map(e=>e.value).join(`,`):``,r=e.value,i=r===void 0?``:typeof r==`string`?r:JSON.stringify(r);t.push(`f:${e.key}:${n}:${i}`)}}return`${e.data.addonId}:${t.join(`|`)}`}).join(`||`),B=a(()=>{let e=new Set;for(let t of L){let n=t.data?.result?.sections;if(n)for(let t of n)e.add(t.tab??`general`)}return[...e]},[z+`::`+L.map(e=>(e.data?.result?.sections??[]).map(e=>e.tab??`general`).join(`,`)).join(`::`)]),V=a(()=>new Map((w??[]).map(e=>[e.id,e])),[w]),H=a(()=>{if(!P)return[];let e=[...new Set([...B,...(w??[]).map(e=>e.id),...(T??[]).map(e=>e.tabId)])],t=e=>{let t=V.get(e);if(t?.order!==void 0)return t.order;let n=b[e];return n?n.order:50};return e.toSorted((e,n)=>{let r=t(e),i=t(n);return r===i?e.localeCompare(n):r-i})},[P,B,w,V,T]),se=a(()=>{let e=new Map,t=e=>b[e]?.label??e.charAt(0).toUpperCase()+e.slice(1);for(let n of B)e.set(n,t(n));for(let n of T??[])e.has(n.tabId)||e.set(n.tabId,t(n.tabId));for(let t of w??[])e.set(t.id,t.label);return e},[B,w,T]),U=P?F&&H.includes(F)?F:H[0]??null:null,W=U!==null&&V.has(U),G=P?U&&!W?U:void 0:C,{data:K}=h(void 0),ce=a(()=>{let e=new Map;for(let t of K??[]){let n=t.manifest?.id;if(!n)continue;let r=t.manifest?.name??t.manifest?.packageDisplayName??n;e.set(n,r)}return e},[K]),q=n(new Map),J=a(()=>{let e=S?new Set(S):null,t=[];for(let n of L){if(!n.data)continue;let r=n.data.result??q.current.get(n.data.addonId)??null;if(n.data.result!==null&&q.current.set(n.data.addonId,n.data.result),r===null)continue;let{schema:i,values:a}=re(r),o=i.sections.filter(t=>e?e.has(t.id):!0);if(o.length===0)continue;let s={...r,sections:r.sections.filter(t=>e?e.has(t.id):!0)},c={...i,sections:o};t.push({addonId:n.data.addonId,schemaWithValues:s,schema:c,serverValues:a})}return t},[z,S]),[Y,le]=u(new Map),ue=t(e=>{le(t=>{let n=new Map(t);return n.set(e.addonId,e),n})},[]),X=n(new Map),de=t(e=>t=>{t?X.current.set(e,t):X.current.delete(e)},[]),Z=t(async(e,t)=>{s===`global`?await A.mutateAsync({addonId:e,nodeId:I,patch:t}):await j.mutateAsync({addonId:e,deviceId:p,nodeId:I,patch:t}),O.invalidateQueries({queryKey:[[`addonSettings`]]})},[A,j,I,s,p,O]),fe=t(async(e,t,n,r)=>{let i=I;try{switch(t){case`reprobe-hwaccel`:await M.mutateAsync({nodeId:i}),O.invalidateQueries({queryKey:[[`addonSettings`]]});return;case`reprobe-audio-engine`:await N.mutateAsync({nodeId:i}),O.invalidateQueries({queryKey:[[`addonSettings`]]});return;default:{let n=await k.addons.custom.mutate({addonId:e,action:t,input:r});return O.invalidateQueries({queryKey:[[`addonSettings`]]}),n}}}catch(n){throw console.error(`[NodeAddonsSettingsPanel] action failed`,{addonId:e,action:t,err:n}),n}},[M,N,I,O,k]),pe=t((e,t)=>{Z(e,t)},[Z]),Q=d({mutationFn:async()=>{let e=[];for(let t of J){let n=Y.get(t.addonId);!n||n.pendingKeys.length===0||e.push({addonId:t.addonId,patch:n.pendingValues})}return e.length===0?{saved:[]}:{saved:await Promise.all(e.map(async({addonId:e,patch:t})=>(s===`global`?await A.mutateAsync({addonId:e,nodeId:I,patch:t}):await j.mutateAsync({addonId:e,deviceId:p,nodeId:I,patch:t}),e)))}},onSuccess:({saved:e})=>{for(let t of e)X.current.get(t)?.discard();O.invalidateQueries({queryKey:[[`addonSettings`]]})}}),me=t(()=>{for(let e of X.current.values())e.discard()},[]),he=a(()=>{let e=0;for(let t of J){let n=Y.get(t.addonId);n&&(e+=n.pendingKeys.length)}return e},[J,Y]),ge=a(()=>{let e=new Map;for(let t of J){let n=Y.get(t.addonId);if(!n||n.pendingKeys.length===0)continue;let r=new Set(n.pendingKeys);for(let n of t.schema.sections){let t=n.tab??`general`;for(let i of n.fields)`key`in i&&r.has(i.key)&&e.set(t,(e.get(t)??0)+1)}}return e},[J,Y]);if(R)return f(`div`,{className:`h-24 rounded-lg border border-border bg-surface animate-pulse`});let $=U&&W?V.get(U):void 0;if(!P&&J.length===0)return i(`div`,{className:`text-[11px] text-foreground-subtle italic`,children:[`No addons in `,r.length>0?`[${r.join(`, `)}]`:`the current selection`,` `,`expose `,s,`-level settings on this node.`]});let _e=Q.isPending;return i(`div`,{className:`space-y-4`,children:[(E||D)&&i(`div`,{className:`border-b border-border pb-2`,children:[E&&f(`h2`,{className:`text-sm font-semibold text-foreground`,children:E}),D&&f(`p`,{className:`text-[11px] text-foreground-subtle mt-0.5`,children:D})]}),P&&f(te,{tabs:H.map(e=>({id:e,label:se.get(e)??e})),activeId:U,onChange:oe,pendingByTab:ge}),Q.isError&&i(`div`,{className:`rounded-md border border-red-500/40 bg-red-500/10 px-3 py-2 text-[11px] text-red-400`,children:[`Save failed: `,String(Q.error?.message??Q.error)]}),f(ne,{tabKey:$?`extra:${U??``}`:`tab:${U??``}`,children:$?$.content:(()=>{let e=G?J.reduce((e,t)=>e+t.schemaWithValues.sections.filter(e=>(e.tab??`general`)===G).length,0):0,t=G!==null&&e<=1,n=J.map(e=>({...e,renderedWithValues:{...e.schemaWithValues,sections:e.schemaWithValues.sections.filter(e=>G?(e.tab??`general`)===G:!0).map(e=>t?{...e,title:``,description:void 0}:e)}})).filter(e=>e.renderedWithValues.sections.length>0).toSorted((e,t)=>{let n=e=>{let t=1/0;for(let n of e)typeof n.order==`number`&&n.order<t&&(t=n.order);return t},r=n(e.renderedWithValues.sections),i=n(t.renderedWithValues.sections);return r===i?0:r-i}),r=(T??[]).filter(e=>e.tabId===G),a=r.filter(e=>(e.placement??`before`)===`before`),o=r.filter(e=>e.placement===`after`);return n.length===0&&r.length===0?f(`div`,{className:`text-[11px] text-foreground-subtle italic`,children:`Nothing to configure here for this node.`}):i(`div`,{className:`space-y-6`,children:[a.map((e,t)=>f(`div`,{children:e.content},`extra-before-${t}`)),n.length>0&&f(ie,{entries:n,paneStates:Y,displayNames:ce,disabled:_e,setPaneRef:de,onPaneStateChange:ue,onImmediateSave:pe,onAction:fe,inline:P||!!C}),o.map((e,t)=>f(`div`,{children:e.content},`extra-after-${t}`))]})})()}),!R&&f(ee,{pendingCount:he,onSave:()=>Q.mutate(),onDiscard:me,saving:_e})]})}function ie({entries:e,paneStates:t,displayNames:n,disabled:r,setPaneRef:o,onPaneStateChange:s,onImmediateSave:c,onAction:l,inline:d}){let m=a(()=>[...e].toSorted((e,t)=>{if(e.addonId===`system-config`)return-1;if(t.addonId===`system-config`)return 1;let r=n.get(e.addonId)??e.addonId,i=n.get(t.addonId)??t.addonId;return r.localeCompare(i)}),[e,n]),[h,g]=u(m[0]?.addonId??``);p(()=>{m.length!==0&&(m.find(e=>e.addonId===h)||g(m[0].addonId))},[m,h]);let _=m.find(e=>e.addonId===h)??m[0];if(!_)return null;let v=a(()=>l?(e,t,n,r)=>l(e,t,n,r):void 0,[l]),y=e=>f(C,{ref:o(e.addonId),addonId:e.addonId,schema:e.renderedWithValues,serverValues:e.serverValues,onImmediateSave:c,onStateChange:s,onAction:v,disabled:r},e.addonId);return m.length===1||d?f(`div`,{className:`flex flex-col gap-4`,children:m.map(y)}):i(`div`,{className:`flex flex-col gap-3`,children:[f(`div`,{className:`flex flex-wrap items-center gap-1 border-b border-border shrink-0`,children:m.map(e=>{let r=n.get(e.addonId)??e.addonId,a=e.addonId===_.addonId,o=(t.get(e.addonId)?.pendingKeys.length??0)>0;return i(`button`,{type:`button`,onClick:()=>g(e.addonId),className:`relative px-3 py-1.5 text-xs font-medium rounded-t-md transition-colors -mb-px border-b-2 whitespace-nowrap ${a?`text-primary border-primary bg-primary/5`:`text-foreground-subtle border-transparent hover:text-foreground hover:bg-surface-hover`}`,children:[r,o&&f(`span`,{className:`ml-1.5 inline-flex h-1.5 w-1.5 rounded-full bg-amber-400`})]},e.addonId)})}),f(`div`,{className:`space-y-2`,children:m.map(e=>f(`div`,{style:e.addonId===_.addonId?void 0:{display:`none`},children:y(e)},e.addonId))})]})}export{E as t};
|
|
1
|
+
import{H as e,I as t,K as n,Q as r,S as i,W as a,i as o,k as s,o as c,p as l,q as u,t as d,x as f,z as p}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 m}from"./player-overlays-BGbLKvcn.js";import{En as h,Kn as g,_n as _,mr as v,vn as y}from"./src-Buv5KpAz.js";import{Ft as b}from"./src-CQVcBp6b.js";import{t as x}from"./FormBuilder-ChyOUw_O.js";import{n as ee,r as S,t as te}from"./SchemaTabBar-DC28nb9j.js";import{t as ne}from"./StableTabPanel-Dc954AQl.js";r();var C=s(function({addonId:r,schema:i,serverValues:o,onImmediateSave:s,onStateChange:c,onAction:l,disabled:u},d){let m=S({schema:i,serverValues:o,onImmediateSave:t(e=>s(r,e),[r,s]),onDeferredSave:t(()=>{},[])});e(d,()=>({flush:()=>{let e={};for(let t of m.pendingKeys)e[t]=m.values[t];return m.handleDiscard(m.pendingKeys),e},discard:()=>m.resetAll()}),[m]);let h=m.pendingKeys,g=h.join(`|`),_=a(()=>h.map(e=>`${e}=${JSON.stringify(m.values[e])}`).join(`,`),[h,m.values]),v=n(c);p(()=>{v.current=c},[c]),p(()=>{let e={};for(let t of h)e[t]=m.values[t];v.current({addonId:r,pendingKeys:h,pendingValues:e})},[r,g,_]);let y=a(()=>{if(l)return(e,t,n)=>l(r,e,t,n)},[r,l]);return f(x,{schema:i,values:m.values,onChange:m.handleChange,disabled:u,onAction:y})});r();function w(e,t){if(e.type===`separator`||e.type===`info`||e.type===`button`)return e;if(e.type===`group`){let n=e.fields.map(e=>w(e,t));return{...e,fields:n}}let n=e;t[e.key]=n.value;let{value:r,...i}=n;return i}function T(e,t){return{...e,fields:e.fields.map(e=>w(e,t))}}function re(e){let t={};return{schema:{...e.tabs?{tabs:e.tabs}:{},sections:e.sections.map(e=>T(e,t))},values:t}}function E({nodeId:e,addonIds:r,level:s,deviceId:p,capability:x,sectionIds:S,sectionTab:C,extraTabs:w,schemaTabExtras:T,title:E,description:D,selfTabbed:ae}){let O=c(),k=m().trpcClient,A=y(),j=_(),M=v(),N=g(),P=ae===!0||!!(w&&w.length>0),[F,oe]=u(null);if(s===`device`&&!p)throw Error(`NodeAddonsSettingsPanel: deviceId is required when level === "device"`);let I=e??`hub`,L=o({queries:r.map(e=>({queryKey:[[`addonSettings`,s===`global`?`getGlobalSettings`:`getDeviceSettings`],{addonId:e,nodeId:I,deviceId:p??null,cap:x??null}],queryFn:async()=>s===`global`?{addonId:e,result:await k.addonSettings.getGlobalSettings.query({addonId:e,nodeId:I,...x?{cap:x}:{}})}:{addonId:e,result:await k.addonSettings.getDeviceSettings.query({addonId:e,deviceId:p,nodeId:I})},placeholderData:l}))}),R=L.some(e=>e.isLoading),z=L.map(e=>{if(!e.data)return`-`;if(e.data.result===null)return`${e.data.addonId}:n`;let t=[];for(let n of e.data.result.sections){t.push(`s:${n.id}:${n.tab??`general`}`);for(let e of n.fields){if(!(`key`in e))continue;let n=`options`in e&&Array.isArray(e.options)?e.options.map(e=>e.value).join(`,`):``,r=e.value,i=r===void 0?``:typeof r==`string`?r:JSON.stringify(r);t.push(`f:${e.key}:${n}:${i}`)}}return`${e.data.addonId}:${t.join(`|`)}`}).join(`||`),B=a(()=>{let e=new Set;for(let t of L){let n=t.data?.result?.sections;if(n)for(let t of n)e.add(t.tab??`general`)}return[...e]},[z+`::`+L.map(e=>(e.data?.result?.sections??[]).map(e=>e.tab??`general`).join(`,`)).join(`::`)]),V=a(()=>new Map((w??[]).map(e=>[e.id,e])),[w]),H=a(()=>{if(!P)return[];let e=[...new Set([...B,...(w??[]).map(e=>e.id),...(T??[]).map(e=>e.tabId)])],t=e=>{let t=V.get(e);if(t?.order!==void 0)return t.order;let n=b[e];return n?n.order:50};return e.toSorted((e,n)=>{let r=t(e),i=t(n);return r===i?e.localeCompare(n):r-i})},[P,B,w,V,T]),se=a(()=>{let e=new Map,t=e=>b[e]?.label??e.charAt(0).toUpperCase()+e.slice(1);for(let n of B)e.set(n,t(n));for(let n of T??[])e.has(n.tabId)||e.set(n.tabId,t(n.tabId));for(let t of w??[])e.set(t.id,t.label);return e},[B,w,T]),U=P?F&&H.includes(F)?F:H[0]??null:null,W=U!==null&&V.has(U),G=P?U&&!W?U:void 0:C,{data:K}=h(void 0),ce=a(()=>{let e=new Map;for(let t of K??[]){let n=t.manifest?.id;if(!n)continue;let r=t.manifest?.name??t.manifest?.packageDisplayName??n;e.set(n,r)}return e},[K]),q=n(new Map),J=a(()=>{let e=S?new Set(S):null,t=[];for(let n of L){if(!n.data)continue;let r=n.data.result??q.current.get(n.data.addonId)??null;if(n.data.result!==null&&q.current.set(n.data.addonId,n.data.result),r===null)continue;let{schema:i,values:a}=re(r),o=i.sections.filter(t=>e?e.has(t.id):!0);if(o.length===0)continue;let s={...r,sections:r.sections.filter(t=>e?e.has(t.id):!0)},c={...i,sections:o};t.push({addonId:n.data.addonId,schemaWithValues:s,schema:c,serverValues:a})}return t},[z,S]),[Y,le]=u(new Map),ue=t(e=>{le(t=>{let n=new Map(t);return n.set(e.addonId,e),n})},[]),X=n(new Map),de=t(e=>t=>{t?X.current.set(e,t):X.current.delete(e)},[]),Z=t(async(e,t)=>{s===`global`?await A.mutateAsync({addonId:e,nodeId:I,patch:t}):await j.mutateAsync({addonId:e,deviceId:p,nodeId:I,patch:t}),O.invalidateQueries({queryKey:[[`addonSettings`]]})},[A,j,I,s,p,O]),fe=t(async(e,t,n,r)=>{let i=I;try{switch(t){case`reprobe-hwaccel`:await M.mutateAsync({nodeId:i}),O.invalidateQueries({queryKey:[[`addonSettings`]]});return;case`reprobe-audio-engine`:await N.mutateAsync({nodeId:i}),O.invalidateQueries({queryKey:[[`addonSettings`]]});return;default:{let n=await k.addons.custom.mutate({addonId:e,action:t,input:r});return O.invalidateQueries({queryKey:[[`addonSettings`]]}),n}}}catch(n){throw console.error(`[NodeAddonsSettingsPanel] action failed`,{addonId:e,action:t,err:n}),n}},[M,N,I,O,k]),pe=t((e,t)=>{Z(e,t)},[Z]),Q=d({mutationFn:async()=>{let e=[];for(let t of J){let n=Y.get(t.addonId);!n||n.pendingKeys.length===0||e.push({addonId:t.addonId,patch:n.pendingValues})}return e.length===0?{saved:[]}:{saved:await Promise.all(e.map(async({addonId:e,patch:t})=>(s===`global`?await A.mutateAsync({addonId:e,nodeId:I,patch:t}):await j.mutateAsync({addonId:e,deviceId:p,nodeId:I,patch:t}),e)))}},onSuccess:({saved:e})=>{for(let t of e)X.current.get(t)?.discard();O.invalidateQueries({queryKey:[[`addonSettings`]]})}}),me=t(()=>{for(let e of X.current.values())e.discard()},[]),he=a(()=>{let e=0;for(let t of J){let n=Y.get(t.addonId);n&&(e+=n.pendingKeys.length)}return e},[J,Y]),ge=a(()=>{let e=new Map;for(let t of J){let n=Y.get(t.addonId);if(!n||n.pendingKeys.length===0)continue;let r=new Set(n.pendingKeys);for(let n of t.schema.sections){let t=n.tab??`general`;for(let i of n.fields)`key`in i&&r.has(i.key)&&e.set(t,(e.get(t)??0)+1)}}return e},[J,Y]);if(R)return f(`div`,{className:`h-24 rounded-lg border border-border bg-surface animate-pulse`});let $=U&&W?V.get(U):void 0;if(!P&&J.length===0)return i(`div`,{className:`text-[11px] text-foreground-subtle italic`,children:[`No addons in `,r.length>0?`[${r.join(`, `)}]`:`the current selection`,` `,`expose `,s,`-level settings on this node.`]});let _e=Q.isPending;return i(`div`,{className:`space-y-4`,children:[(E||D)&&i(`div`,{className:`border-b border-border pb-2`,children:[E&&f(`h2`,{className:`text-sm font-semibold text-foreground`,children:E}),D&&f(`p`,{className:`text-[11px] text-foreground-subtle mt-0.5`,children:D})]}),P&&f(te,{tabs:H.map(e=>({id:e,label:se.get(e)??e})),activeId:U,onChange:oe,pendingByTab:ge}),Q.isError&&i(`div`,{className:`rounded-md border border-red-500/40 bg-red-500/10 px-3 py-2 text-[11px] text-red-400`,children:[`Save failed: `,String(Q.error?.message??Q.error)]}),f(ne,{tabKey:$?`extra:${U??``}`:`tab:${U??``}`,children:$?$.content:(()=>{let e=G?J.reduce((e,t)=>e+t.schemaWithValues.sections.filter(e=>(e.tab??`general`)===G).length,0):0,t=G!==null&&e<=1,n=J.map(e=>({...e,renderedWithValues:{...e.schemaWithValues,sections:e.schemaWithValues.sections.filter(e=>G?(e.tab??`general`)===G:!0).map(e=>t?{...e,title:``,description:void 0}:e)}})).filter(e=>e.renderedWithValues.sections.length>0).toSorted((e,t)=>{let n=e=>{let t=1/0;for(let n of e)typeof n.order==`number`&&n.order<t&&(t=n.order);return t},r=n(e.renderedWithValues.sections),i=n(t.renderedWithValues.sections);return r===i?0:r-i}),r=(T??[]).filter(e=>e.tabId===G),a=r.filter(e=>(e.placement??`before`)===`before`),o=r.filter(e=>e.placement===`after`);return n.length===0&&r.length===0?f(`div`,{className:`text-[11px] text-foreground-subtle italic`,children:`Nothing to configure here for this node.`}):i(`div`,{className:`space-y-6`,children:[a.map((e,t)=>f(`div`,{children:e.content},`extra-before-${t}`)),n.length>0&&f(ie,{entries:n,paneStates:Y,displayNames:ce,disabled:_e,setPaneRef:de,onPaneStateChange:ue,onImmediateSave:pe,onAction:fe,inline:P||!!C}),o.map((e,t)=>f(`div`,{children:e.content},`extra-after-${t}`))]})})()}),!R&&f(ee,{pendingCount:he,onSave:()=>Q.mutate(),onDiscard:me,saving:_e})]})}function ie({entries:e,paneStates:t,displayNames:n,disabled:r,setPaneRef:o,onPaneStateChange:s,onImmediateSave:c,onAction:l,inline:d}){let m=a(()=>[...e].toSorted((e,t)=>{if(e.addonId===`system-config`)return-1;if(t.addonId===`system-config`)return 1;let r=n.get(e.addonId)??e.addonId,i=n.get(t.addonId)??t.addonId;return r.localeCompare(i)}),[e,n]),[h,g]=u(m[0]?.addonId??``);p(()=>{m.length!==0&&(m.find(e=>e.addonId===h)||g(m[0].addonId))},[m,h]);let _=m.find(e=>e.addonId===h)??m[0];if(!_)return null;let v=a(()=>l?(e,t,n,r)=>l(e,t,n,r):void 0,[l]),y=e=>f(C,{ref:o(e.addonId),addonId:e.addonId,schema:e.renderedWithValues,serverValues:e.serverValues,onImmediateSave:c,onStateChange:s,onAction:v,disabled:r},e.addonId);return m.length===1||d?f(`div`,{className:`flex flex-col gap-4`,children:m.map(y)}):i(`div`,{className:`flex flex-col gap-3`,children:[f(`div`,{className:`flex flex-wrap items-center gap-1 border-b border-border shrink-0`,children:m.map(e=>{let r=n.get(e.addonId)??e.addonId,a=e.addonId===_.addonId,o=(t.get(e.addonId)?.pendingKeys.length??0)>0;return i(`button`,{type:`button`,onClick:()=>g(e.addonId),className:`relative px-3 py-1.5 text-xs font-medium rounded-t-md transition-colors -mb-px border-b-2 whitespace-nowrap ${a?`text-primary border-primary bg-primary/5`:`text-foreground-subtle border-transparent hover:text-foreground hover:bg-surface-hover`}`,children:[r,o&&f(`span`,{className:`ml-1.5 inline-flex h-1.5 w-1.5 rounded-full bg-amber-400`})]},e.addonId)})}),f(`div`,{className:`space-y-2`,children:m.map(e=>f(`div`,{style:e.addonId===_.addonId?void 0:{display:`none`},children:y(e)},e.addonId))})]})}export{E as t};
|
|
@@ -0,0 +1 @@
|
|
|
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{Br as l,Ir as u,It as d,Pr as f,Qa as p,jt as m,za as h}from"./src-Buv5KpAz.js";import{t as g}from"./zap-aTn3GS-l.js";import{I as _,K as v,N as y,S as b,a as x}from"./index-vZPXzSPK.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 l({addonId:e})}function k(e){return u({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()),f({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,t,n){return e.map(e=>{if(e.key===t)return e;let r=e.steps[n];if(!r||r.settings===void 0)return e;let{settings:i,...a}=r,o={...e.steps};return Object.keys(a).length>0?o[n]=a:delete o[n],{...e,steps:o}})}function P(e,t,n){let r=e.filter(e=>e.key!==t).toSorted((e,t)=>e.key.localeCompare(t.key)),i=[...r.filter(e=>!e.enabled),...r.filter(e=>e.enabled),...e.filter(e=>e.key===t)],a;for(let e of i){let t=e.steps[n]?.settings;!t||Object.keys(t).length===0||(a={...a,...t})}return a}function F(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 I(e,t,n){return Math.min(Math.max(e,t),n)}function L(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 R(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:I(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 z(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 B({nodes:e,pending:t,onCommitWeights:r,weightLabel:a=`Detection weight`,emptyHint:l,footnote:u}){let[d,f]=o(()=>L(e)),[p,m]=o(new Set);c(()=>{f(L(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=>R(n,e,t,p,h))},v=()=>{let t=z(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 V(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 H={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 U({nodeId:e,nodeName:t,isOnline:l}){let u=a(),{data:f,isLoading:g}=h({nodeId:e},{refetchInterval:15e3}),v=p({onSettled:()=>{u.invalidateQueries({queryKey:[[`pipelineOrchestrator`,`getNodeInferenceDevices`]]})}}),y=f?.devices??[],b=f?.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:F(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)},N=(e,t)=>{let n=S[e.key]??j(e),r={...S,[e.key]:{...n,maxSessions:t}};w(r),A(r)},P=r(()=>y.filter(e=>(S[e.key]?.enabled??e.enabled)&&e.available),[y,S]),I=r(()=>P.map(e=>({id:e.key,name:V(e).label,weight:S[e.key]?.weight??e.weight})),[P,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=V(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 ${H[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(d,{variant:`default`,style:`outline`,className:`font-mono text-[9px]`,children:e.format}),!e.available&&s(d,{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);N(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(m,{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(W,{}),b&&P.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(B,{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 W(){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{P as a,M as c,C as d,F as i,O as l,V as n,N as o,B as r,k as s,U as t,T as u};
|