@camstack/addon-admin-ui 1.2.406 → 1.2.408
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/{AddonAssetIcon-DluKeSLM.js → AddonAssetIcon-BLwkjQWE.js} +1 -1
- package/dist/assets/{Addons-K1tlc9oa.js → Addons-D52f_uYH.js} +1 -1
- package/dist/assets/{AdminPage-C5LFCJk5.js → AdminPage-C3szDdOE.js} +1 -1
- package/dist/assets/{AdminSectionedPage-19f7kgdu.js → AdminSectionedPage-BFugqNTw.js} +1 -1
- package/dist/assets/{AiProfiles-NS37IKYl.js → AiProfiles-pus6NPUK.js} +1 -1
- package/dist/assets/{BrokerForm-Fjf0YEvv.js → BrokerForm-T4U4b2BE.js} +1 -1
- package/dist/assets/{Build-B8ZN2rLp.js → Build-NHWOrbHA.js} +1 -1
- package/dist/assets/{Calendars-Bi3p9Y4A.js → Calendars-IYwevxka.js} +1 -1
- package/dist/assets/{Cluster-CH2e46gv.js → Cluster-CkYt1csf.js} +1 -1
- package/dist/assets/{ClusterStepModel-D9DUnIVI.js → ClusterStepModel-GNDU-ZcJ.js} +1 -1
- package/dist/assets/{CompositionEditor-DfeYT8kG.js → CompositionEditor-D5V0dwhO.js} +1 -1
- package/dist/assets/{CompositionEditorPage-CbSXPpoA.js → CompositionEditorPage-w2YVxukx.js} +1 -1
- package/dist/assets/{Data-eoJCCtc7.js → Data-B7_MAROG.js} +1 -1
- package/dist/assets/{DeviceDetail-DB8I_FX_.js → DeviceDetail-DVIJu4FQ.js} +1 -1
- package/dist/assets/{DeviceDoActionFields-buAipDUO.js → DeviceDoActionFields-DLL7B7i4.js} +1 -1
- package/dist/assets/{Devices-00As-AGG.js → Devices-CZy1-Qss.js} +1 -1
- package/dist/assets/{EmbedPlayerPage-DW07EIy3.js → EmbedPlayerPage-BgAP48-B.js} +1 -1
- package/dist/assets/{Identity-NRA2VAOF.js → Identity-BYaivH6P.js} +1 -1
- package/dist/assets/{IntegrationDetail-79KHA_uA.js → IntegrationDetail-D8EHfYY6.js} +1 -1
- package/dist/assets/{IntegrationHub-C0g65LkU.js → IntegrationHub-CfS3GL56.js} +1 -1
- package/dist/assets/{Integrations-CZY_1Wd2.js → Integrations-ByqVGp79.js} +1 -1
- package/dist/assets/{Integrations-DZ0kj_xd.js → Integrations-C_xqLVFS.js} +1 -1
- package/dist/assets/{Library-CScCFPJU.js → Library-CZKY1bUv.js} +1 -1
- package/dist/assets/{Locations-BYkADpQt.js → Locations-C_OzQUT_.js} +1 -1
- package/dist/assets/{Logs-DaM60Mbh.js → Logs-Bpno4mYD.js} +1 -1
- package/dist/assets/{MotionZonesSettings-Cxd-RbK4.js → MotionZonesSettings-BOjjVP-t.js} +1 -1
- package/dist/assets/{MyAccess-CTjhKdd8.js → MyAccess-OCN76tNA.js} +1 -1
- package/dist/assets/{Network-Buev9P2l.js → Network-iMLTt5l9.js} +1 -1
- package/dist/assets/{NodeAddonsSettingsPanel-C4VI2167.js → NodeAddonsSettingsPanel-BPskK6pH.js} +1 -1
- package/dist/assets/{Notifications-CbvjDxOp.js → Notifications-Ce0pqdtL.js} +1 -1
- package/dist/assets/{PrivacyMaskSettings--8pMGBJ0.js → PrivacyMaskSettings-C1VATdu_.js} +1 -1
- package/dist/assets/{Recordings-FMpn7asA.js → Recordings-nqvEkk61.js} +1 -1
- package/dist/assets/{ScanNetworkModal-BL9gAjry.js → ScanNetworkModal-DUVTE3Im.js} +1 -1
- package/dist/assets/{SceneMonitorEditor-COtYPcEo.js → SceneMonitorEditor-BlcjCdA1.js} +1 -1
- package/dist/assets/{SessionsList-s-fB_Hb4.js → SessionsList-OyXBcXmT.js} +1 -1
- package/dist/assets/{Showroom-STlvxBi_.js → Showroom-DLLLqI4K.js} +1 -1
- package/dist/assets/{System-CKF4OzOy.js → System-QAk8r2mB.js} +1 -1
- package/dist/assets/{Terminal-ChX2kcWT.js → Terminal-DZBRyXl9.js} +1 -1
- package/dist/assets/{Viewer-bj59Z5ED.js → Viewer-mCav7054.js} +1 -1
- package/dist/assets/{_virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-bRKHXqjT.js → _virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-puOnSTWB.js} +1 -1
- package/dist/assets/{archive-D_OlUVGz.js → archive-fkNkEIJ-.js} +1 -1
- package/dist/assets/{authed-media-BgzpKT8z.js → authed-media-D_jDcXh-.js} +1 -1
- package/dist/assets/{boxes-CD-O2PMM.js → boxes-ej4N5fc9.js} +1 -1
- package/dist/assets/circle-slash-DXFVqMrZ.js +1 -0
- package/dist/assets/client-By2FqNgK.js +357 -0
- package/dist/assets/crop-Cn7sv2wg.js +1 -0
- package/dist/assets/{device-integration-icon-DkUahrQn.js → device-integration-icon-D4NuzGzW.js} +1 -1
- package/dist/assets/device-picker-model-2b49iPCj.js +1 -0
- package/dist/assets/{dist-BGSAqma9.js → dist-Bb5mI3Am.js} +1 -1
- package/dist/assets/dist-C9QeNmTL.js +357 -0
- package/dist/assets/{format-size-CSeCM8l1.js → format-size-BAc5BmkA.js} +1 -1
- package/dist/assets/{history-D05a2-vq.js → history-CMMO85U7.js} +1 -1
- package/dist/assets/{hostInit-zq--8nDH.js → hostInit-4FORlpRs.js} +1 -1
- package/dist/assets/{index-DDmqlvcT.js → index-Xfhjk8-d.js} +3 -3
- package/dist/assets/{layers-C83SSmue.js → layers-BI_sr7Ok.js} +1 -1
- package/dist/assets/{location-owned-usage-nT-gkT5K.js → location-owned-usage-CUKPTFaM.js} +1 -1
- package/dist/assets/{log-in-BArG6Pn0.js → log-in-iUePLZ5A.js} +1 -1
- package/dist/assets/{mf-entry-bootstrap-0-0fefeabc.js → mf-entry-bootstrap-0-94e624f3.js} +2 -2
- package/dist/assets/{monitor-smartphone-B6YaeP73.js → monitor-smartphone-DeLd3lKL.js} +1 -1
- package/dist/assets/mount-2b49iPCj.js +1 -0
- package/dist/assets/{notification-schedule-field-6AB0iFGq.js → notification-schedule-field-BHoZkl6T.js} +1 -1
- package/dist/assets/{octagon-alert-CWAuW3R4.js → octagon-alert-BxJ0G_rQ.js} +1 -1
- package/dist/assets/{player-overlays-CZrmucwd.js → player-overlays-Dj6CBWI7.js} +1 -1
- package/dist/assets/remoteEntry-CZ5kbYKo.js +1 -0
- package/dist/assets/{send-N3EWOQ5u.js → send-CEOPyA1o.js} +1 -1
- package/dist/assets/{settings-2-DHr5cfbn.js → settings-2-DXQTAjNd.js} +1 -1
- package/dist/assets/{src-bcpTnpz5.js → src-BCDkMFOl.js} +3 -3
- package/dist/assets/{use-scenes-feed-BZdRZjQ-.js → use-scenes-feed-_1_N_HCP.js} +1 -1
- package/dist/assets/{use-stationary-objects-CGE3nepe.js → use-stationary-objects-C1Ulq17N.js} +1 -1
- package/dist/assets/useEventInvalidation-2b49iPCj.js +1 -0
- package/dist/assets/{useNodeUrlSelection-Cx3uL0rK.js → useNodeUrlSelection-Bk4CO6qP.js} +1 -1
- package/dist/assets/user-round-jd6Fm3Vu.js +1 -0
- package/dist/assets/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-DieMZdOY.js → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-z-ZK3UeO.js} +2 -2
- package/dist/index.html +7 -7
- package/dist/server/addon.js +19 -12
- package/package.json +1 -1
- package/dist/assets/circle-slash-Cm-JFhvJ.js +0 -1
- package/dist/assets/client-5te-ilJt.js +0 -357
- package/dist/assets/crop-CIVwH1w4.js +0 -1
- package/dist/assets/device-picker-model-w6G_nEa9.js +0 -1
- package/dist/assets/dist-DXyWyMbP.js +0 -357
- package/dist/assets/mount-w6G_nEa9.js +0 -1
- package/dist/assets/remoteEntry-zrcjCbF7.js +0 -1
- package/dist/assets/useEventInvalidation-w6G_nEa9.js +0 -1
- package/dist/assets/user-round-CkfojIm9.js +0 -1
package/dist/assets/{NodeAddonsSettingsPanel-C4VI2167.js → NodeAddonsSettingsPanel-BPskK6pH.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{H as e,I as t,K as n,Q as r,S as i,W as a,b as o,i as s,k as c,o as l,p as u,q as d,t as f,x as p,z as m}from"./_virtual_mf___mfe_internal__admin_ui_host__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-DhP-Lgiq.js";import{ot as h}from"./player-overlays-CZrmucwd.js";import{Hi as g,Qr as _,Sr as v,V as y,jr as ee,xr as te}from"./src-bcpTnpz5.js";import{di as ne}from"./client-5te-ilJt.js";import{F as re,I as b,L as x,P as ie}from"./index-DDmqlvcT.js";r();var S=c(function({addonId:r,schema:i,serverValues:o,onImmediateSave:s,onStateChange:c,onAction:l,disabled:u},d){let f=x({schema:i,serverValues:o,onImmediateSave:t(e=>s(r,e),[r,s]),onDeferredSave:t(()=>{},[])});e(d,()=>({flush:()=>{let e={};for(let t of f.pendingKeys)e[t]=f.values[t];return f.handleDiscard(f.pendingKeys),e},discard:()=>f.resetAll()}),[f]);let h=f.pendingKeys,g=h.join(`|`),_=a(()=>h.map(e=>`${e}=${JSON.stringify(f.values[e])}`).join(`,`),[h,f.values]),v=n(c);m(()=>{v.current=c},[c]),m(()=>{let e={};for(let t of h)e[t]=f.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 p(b,{schema:i,values:f.values,onChange:f.handleChange,disabled:u,onAction:y})});function C(e){return`perNode`in e&&e.perNode===!0}function w(e,t){if(e.type===`group`){let n=T(e.fields,t);return n.length>0?{...e,fields:n}:null}if(e.type===`sub-tabs`){let n=e.tabs.map(e=>({...e,fields:T(e.fields,t)})).filter(e=>e.fields.length>0);return n.length>0?{...e,tabs:n}:null}return C(e)===(t===`perNode`)?e:null}function T(e,t){let n=[];for(let r of e){let e=w(r,t);e!==null&&n.push(e)}return n}function ae(e,t){let n=[];for(let r of e.sections){let e=T(r.fields,t);e.length!==0&&n.push({...r,fields:e})}return{...e,sections:n}}function oe(e,t){let n=e??`general`;return t?.[n]??n}function E(e){return typeof e!=`object`||!e||!(`key`in e)?null:typeof e.key==`string`?e.key:null}function se(e,t){let n=t.fieldKeys===void 0?null:new Set(t.fieldKeys),r=[];for(let i of e){let e=n===null?i.fields:i.fields.filter(e=>{let t=E(e);return t!==null&&n.has(t)});e.length!==0&&r.push({...i,fields:e,...t.tabAliases===void 0?{}:{tab:oe(i.tab,t.tabAliases)},...t.hideSectionChrome===!0?{title:``,description:void 0}:{}})}return r}r();function D(e,t){if(e.type===`separator`||e.type===`info`||e.type===`button`)return e;if(e.type===`group`){let n=e.fields.map(e=>D(e,t));return{...e,fields:n}}let n=e;t[e.key]=n.value;let{value:r,...i}=n;return i}function O(e,t){return{...e,fields:e.fields.map(e=>D(e,t))}}function ce(e){let t={};return{schema:{...e.tabs?{tabs:e.tabs}:{},sections:e.sections.map(e=>O(e,t))},values:t}}function k({nodeId:e,addonIds:r,level:c,deviceId:m,capability:b,sectionIds:x,omitSectionIds:S,fieldKeys:C,hideSectionChrome:w,tabAliases:T,tabLabelOverrides:E,sectionTab:D,fieldScope:O,surface:k,emptyMessage:ue,extraTabs:A,schemaTabExtras:j,title:M,description:N,selfTabbed:de,activeTab:P,onActiveTabChange:fe}){let F=l(),I=h().trpcClient,L=v(),R=te(),pe=g(),me=_(),z=de===!0||!!(A&&A.length>0),[he,ge]=d(null);if(c===`device`&&!m)throw Error(`NodeAddonsSettingsPanel: deviceId is required when level === "device"`);if(k!==void 0){if(c!==`global`||m!==void 0)throw Error(`NodeAddonsSettingsPanel: integration-level settings are addon-wide — they cannot be mounted at device level or with a deviceId. A second page, never a second scope.`);if(e!==null)throw Error(`NodeAddonsSettingsPanel: an integration has no node behind it — pass nodeId={null}. Received ${JSON.stringify(e)}.`);if(O!==void 0)throw Error("NodeAddonsSettingsPanel: integration-level settings arrive already cluster-scoped from core — remove `fieldScope` rather than restating it.")}let B=e??`hub`,V=s({queries:r.map(e=>({queryKey:[[`addonSettings`,k===void 0?c===`global`?`getGlobalSettings`:`getDeviceSettings`:`getIntegrationSettings`],{addonId:e,nodeId:B,deviceId:m??null,cap:b??null,scope:O??null}],queryFn:async()=>{let t=e=>e!==null&&O!==void 0?ae(e,O):e;return k===void 0?c===`global`?{addonId:e,result:t(await I.addonSettings.getGlobalSettings.query({addonId:e,nodeId:B,...b?{cap:b}:{}}))}:{addonId:e,result:t(await I.addonSettings.getDeviceSettings.query({addonId:e,deviceId:m,nodeId:B}))}:{addonId:e,result:await I.addonSettings.getIntegrationSettings.query({addonId:e,nodeId:B})}},placeholderData:u}))}),_e=V.some(e=>e.isLoading),ve=V.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(`||`),H=a(()=>{let e=new Set;for(let t of V){let n=t.data?.result?.sections;if(n)for(let t of n)e.add(oe(t.tab,T))}return[...e]},[T,ve+`::`+V.map(e=>(e.data?.result?.sections??[]).map(e=>e.tab??`general`).join(`,`)).join(`::`)]),U=a(()=>new Map((A??[]).map(e=>[e.id,e])),[A]),W=a(()=>{if(!z)return[];let e=[...new Set([...H,...(A??[]).map(e=>e.id),...(j??[]).map(e=>e.tabId)])],t=e=>{let t=U.get(e);if(t?.order!==void 0)return t.order;let n=ne[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})},[z,H,A,U,j]),ye=a(()=>{let e=new Map,t=e=>ne[e]?.label??e.charAt(0).toUpperCase()+e.slice(1);for(let n of H)e.set(n,t(n));for(let n of j??[])e.has(n.tabId)||e.set(n.tabId,t(n.tabId));for(let t of A??[])e.set(t.id,t.label);for(let[t,n]of Object.entries(E??{}))e.set(t,n);return e},[H,A,j,E]),G=P===void 0?he:P,K=z?G&&W.includes(G)?G:W[0]??null:null,be=e=>{ge(e),fe?.(e)},xe=K!==null&&U.has(K),q=z?K&&!xe?K:void 0:D,{data:Se}=ee(void 0),Ce=a(()=>{let e=new Map;for(let t of Se??[]){let n=t.manifest?.id;if(!n)continue;let r=t.manifest?.name??t.manifest?.packageDisplayName??n;e.set(n,r)}return e},[Se]),we=n(new Map),J=a(()=>{let e=x?new Set(x):null,t=S?new Set(S):null,n=n=>!(e!==null&&!e.has(n)||t!==null&&t.has(n)),r=[];for(let e of V){if(!e.data)continue;let t=e.data.result??we.current.get(e.data.addonId)??null;if(e.data.result!==null&&we.current.set(e.data.addonId,e.data.result),t===null)continue;let{schema:i,values:a}=ce(t),o={...C===void 0?{}:{fieldKeys:C},...w===void 0?{}:{hideSectionChrome:w},...T===void 0?{}:{tabAliases:T}},s=se(i.sections.filter(e=>n(e.id)),o);if(s.length===0)continue;let c={...t,sections:se(t.sections.filter(e=>n(e.id)),o)},l={...i,sections:s};r.push({addonId:e.data.addonId,schemaWithValues:c,schema:l,serverValues:a})}return r},[ve,x,S,C,w,T]),[Y,Te]=d(new Map),Ee=t(e=>{Te(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)=>{c===`global`?await L.mutateAsync({addonId:e,nodeId:B,patch:t}):await R.mutateAsync({addonId:e,deviceId:m,nodeId:B,patch:t}),F.invalidateQueries({queryKey:[[`addonSettings`]]})},[L,R,B,c,m,F]),Oe=t(async(e,t,n,r)=>{let i=B;try{switch(t){case`reprobe-hwaccel`:await pe.mutateAsync({nodeId:i}),F.invalidateQueries({queryKey:[[`addonSettings`]]});return;case`reprobe-audio-engine`:await me.mutateAsync({nodeId:i}),F.invalidateQueries({queryKey:[[`addonSettings`]]});return;default:{let n=await I.addons.custom.mutate({addonId:e,action:t,input:r});return F.invalidateQueries({queryKey:[[`addonSettings`]]}),n}}}catch(n){throw console.error(`[NodeAddonsSettingsPanel] action failed`,{addonId:e,action:t,err:n}),n}},[pe,me,B,F,I]),ke=t((e,t)=>{Z(e,t)},[Z]),Q=f({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})=>(c===`global`?await L.mutateAsync({addonId:e,nodeId:B,patch:t}):await R.mutateAsync({addonId:e,deviceId:m,nodeId:B,patch:t}),e)))}},onSuccess:({saved:e})=>{for(let t of e)X.current.get(t)?.discard();F.invalidateQueries({queryKey:[[`addonSettings`]]})}}),Ae=t(()=>{for(let e of X.current.values())e.discard()},[]),je=a(()=>{let e=0;for(let t of J){let n=Y.get(t.addonId);n&&(e+=n.pendingKeys.length)}return e},[J,Y]),Me=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(_e)return p(`div`,{className:`h-24 rounded-lg border border-border bg-surface animate-pulse`});let $=K&&xe?U.get(K):void 0;if(!z&&J.length===0)return p(`div`,{className:`text-[11px] text-foreground-subtle italic`,children:ue??i(o,{children:[`No addons in`,` `,r.length>0?`[${r.join(`, `)}]`:`the current selection`,` expose`,` `,c,`-level settings on this node.`]})});let Ne=Q.isPending;return i(`div`,{className:`space-y-4`,children:[(M||N)&&i(`div`,{className:`border-b border-border pb-2`,children:[M&&p(`h2`,{className:`text-sm font-semibold text-foreground`,children:M}),N&&p(`p`,{className:`text-[11px] text-foreground-subtle mt-0.5`,children:N})]}),z&&p(ie,{tabs:W.map(e=>({id:e,label:ye.get(e)??e})),activeId:K,onChange:be,pendingByTab:Me}),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)]}),p(y,{tabKey:$?`extra:${K??``}`:`tab:${K??``}`,children:$?$.content:(()=>{let e=q?J.reduce((e,t)=>e+t.schemaWithValues.sections.filter(e=>(e.tab??`general`)===q).length,0):0,t=!!q&&e<=1,n=J.map(e=>({...e,renderedWithValues:{...e.schemaWithValues,sections:e.schemaWithValues.sections.filter(e=>q?(e.tab??`general`)===q:!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=(j??[]).filter(e=>e.tabId===q),a=r.filter(e=>(e.placement??`before`)===`before`),o=r.filter(e=>e.placement===`after`);return n.length===0&&r.length===0?p(`div`,{className:`text-[11px] text-foreground-subtle italic`,children:ue??`Nothing to configure here for this node.`}):i(`div`,{className:`space-y-6`,children:[a.map((e,t)=>p(`div`,{children:e.content},`extra-before-${t}`)),n.length>0&&p(le,{entries:n,paneStates:Y,displayNames:Ce,disabled:Ne,setPaneRef:De,onPaneStateChange:Ee,onImmediateSave:ke,onAction:Oe,inline:z||!!D}),o.map((e,t)=>p(`div`,{children:e.content},`extra-after-${t}`))]})})()}),!_e&&p(re,{pendingCount:je,onSave:()=>Q.mutate(),onDiscard:Ae,saving:Ne})]})}function le({entries:e,paneStates:t,displayNames:n,disabled:r,setPaneRef:o,onPaneStateChange:s,onImmediateSave:c,onAction:l,inline:u}){let f=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]=d(f[0]?.addonId??``);m(()=>{f.length!==0&&(f.find(e=>e.addonId===h)||g(f[0].addonId))},[f,h]);let _=f.find(e=>e.addonId===h)??f[0];if(!_)return null;let v=a(()=>l?(e,t,n,r)=>l(e,t,n,r):void 0,[l]),y=e=>p(S,{ref:o(e.addonId),addonId:e.addonId,schema:e.renderedWithValues,serverValues:e.serverValues,onImmediateSave:c,onStateChange:s,onAction:v,disabled:r},e.addonId);return f.length===1||u?p(`div`,{className:`flex flex-col gap-4`,children:f.map(y)}):i(`div`,{className:`flex flex-col gap-3`,children:[p(`div`,{className:`flex flex-wrap items-center gap-1 border-b border-border shrink-0`,children:f.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&&p(`span`,{className:`ml-1.5 inline-flex h-1.5 w-1.5 rounded-full bg-amber-400`})]},e.addonId)})}),p(`div`,{className:`space-y-2`,children:f.map(e=>p(`div`,{style:e.addonId===_.addonId?void 0:{display:`none`},children:y(e)},e.addonId))})]})}export{k as t};
|
|
1
|
+
import{H as e,I as t,K as n,Q as r,S as i,W as a,b as o,i as s,k as c,o as l,p as u,q as d,t as f,x as p,z as m}from"./_virtual_mf___mfe_internal__admin_ui_host__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-DhP-Lgiq.js";import{ot as h}from"./player-overlays-Dj6CBWI7.js";import{Hi as g,Qr as _,Sr as v,V as y,jr as ee,xr as te}from"./src-BCDkMFOl.js";import{di as ne}from"./client-By2FqNgK.js";import{F as re,I as b,L as x,P as ie}from"./index-Xfhjk8-d.js";r();var S=c(function({addonId:r,schema:i,serverValues:o,onImmediateSave:s,onStateChange:c,onAction:l,disabled:u},d){let f=x({schema:i,serverValues:o,onImmediateSave:t(e=>s(r,e),[r,s]),onDeferredSave:t(()=>{},[])});e(d,()=>({flush:()=>{let e={};for(let t of f.pendingKeys)e[t]=f.values[t];return f.handleDiscard(f.pendingKeys),e},discard:()=>f.resetAll()}),[f]);let h=f.pendingKeys,g=h.join(`|`),_=a(()=>h.map(e=>`${e}=${JSON.stringify(f.values[e])}`).join(`,`),[h,f.values]),v=n(c);m(()=>{v.current=c},[c]),m(()=>{let e={};for(let t of h)e[t]=f.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 p(b,{schema:i,values:f.values,onChange:f.handleChange,disabled:u,onAction:y})});function C(e){return`perNode`in e&&e.perNode===!0}function w(e,t){if(e.type===`group`){let n=T(e.fields,t);return n.length>0?{...e,fields:n}:null}if(e.type===`sub-tabs`){let n=e.tabs.map(e=>({...e,fields:T(e.fields,t)})).filter(e=>e.fields.length>0);return n.length>0?{...e,tabs:n}:null}return C(e)===(t===`perNode`)?e:null}function T(e,t){let n=[];for(let r of e){let e=w(r,t);e!==null&&n.push(e)}return n}function ae(e,t){let n=[];for(let r of e.sections){let e=T(r.fields,t);e.length!==0&&n.push({...r,fields:e})}return{...e,sections:n}}function oe(e,t){let n=e??`general`;return t?.[n]??n}function E(e){return typeof e!=`object`||!e||!(`key`in e)?null:typeof e.key==`string`?e.key:null}function se(e,t){let n=t.fieldKeys===void 0?null:new Set(t.fieldKeys),r=[];for(let i of e){let e=n===null?i.fields:i.fields.filter(e=>{let t=E(e);return t!==null&&n.has(t)});e.length!==0&&r.push({...i,fields:e,...t.tabAliases===void 0?{}:{tab:oe(i.tab,t.tabAliases)},...t.hideSectionChrome===!0?{title:``,description:void 0}:{}})}return r}r();function D(e,t){if(e.type===`separator`||e.type===`info`||e.type===`button`)return e;if(e.type===`group`){let n=e.fields.map(e=>D(e,t));return{...e,fields:n}}let n=e;t[e.key]=n.value;let{value:r,...i}=n;return i}function O(e,t){return{...e,fields:e.fields.map(e=>D(e,t))}}function ce(e){let t={};return{schema:{...e.tabs?{tabs:e.tabs}:{},sections:e.sections.map(e=>O(e,t))},values:t}}function k({nodeId:e,addonIds:r,level:c,deviceId:m,capability:b,sectionIds:x,omitSectionIds:S,fieldKeys:C,hideSectionChrome:w,tabAliases:T,tabLabelOverrides:E,sectionTab:D,fieldScope:O,surface:k,emptyMessage:ue,extraTabs:A,schemaTabExtras:j,title:M,description:N,selfTabbed:de,activeTab:P,onActiveTabChange:fe}){let F=l(),I=h().trpcClient,L=v(),R=te(),pe=g(),me=_(),z=de===!0||!!(A&&A.length>0),[he,ge]=d(null);if(c===`device`&&!m)throw Error(`NodeAddonsSettingsPanel: deviceId is required when level === "device"`);if(k!==void 0){if(c!==`global`||m!==void 0)throw Error(`NodeAddonsSettingsPanel: integration-level settings are addon-wide — they cannot be mounted at device level or with a deviceId. A second page, never a second scope.`);if(e!==null)throw Error(`NodeAddonsSettingsPanel: an integration has no node behind it — pass nodeId={null}. Received ${JSON.stringify(e)}.`);if(O!==void 0)throw Error("NodeAddonsSettingsPanel: integration-level settings arrive already cluster-scoped from core — remove `fieldScope` rather than restating it.")}let B=e??`hub`,V=s({queries:r.map(e=>({queryKey:[[`addonSettings`,k===void 0?c===`global`?`getGlobalSettings`:`getDeviceSettings`:`getIntegrationSettings`],{addonId:e,nodeId:B,deviceId:m??null,cap:b??null,scope:O??null}],queryFn:async()=>{let t=e=>e!==null&&O!==void 0?ae(e,O):e;return k===void 0?c===`global`?{addonId:e,result:t(await I.addonSettings.getGlobalSettings.query({addonId:e,nodeId:B,...b?{cap:b}:{}}))}:{addonId:e,result:t(await I.addonSettings.getDeviceSettings.query({addonId:e,deviceId:m,nodeId:B}))}:{addonId:e,result:await I.addonSettings.getIntegrationSettings.query({addonId:e,nodeId:B})}},placeholderData:u}))}),_e=V.some(e=>e.isLoading),ve=V.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(`||`),H=a(()=>{let e=new Set;for(let t of V){let n=t.data?.result?.sections;if(n)for(let t of n)e.add(oe(t.tab,T))}return[...e]},[T,ve+`::`+V.map(e=>(e.data?.result?.sections??[]).map(e=>e.tab??`general`).join(`,`)).join(`::`)]),U=a(()=>new Map((A??[]).map(e=>[e.id,e])),[A]),W=a(()=>{if(!z)return[];let e=[...new Set([...H,...(A??[]).map(e=>e.id),...(j??[]).map(e=>e.tabId)])],t=e=>{let t=U.get(e);if(t?.order!==void 0)return t.order;let n=ne[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})},[z,H,A,U,j]),ye=a(()=>{let e=new Map,t=e=>ne[e]?.label??e.charAt(0).toUpperCase()+e.slice(1);for(let n of H)e.set(n,t(n));for(let n of j??[])e.has(n.tabId)||e.set(n.tabId,t(n.tabId));for(let t of A??[])e.set(t.id,t.label);for(let[t,n]of Object.entries(E??{}))e.set(t,n);return e},[H,A,j,E]),G=P===void 0?he:P,K=z?G&&W.includes(G)?G:W[0]??null:null,be=e=>{ge(e),fe?.(e)},xe=K!==null&&U.has(K),q=z?K&&!xe?K:void 0:D,{data:Se}=ee(void 0),Ce=a(()=>{let e=new Map;for(let t of Se??[]){let n=t.manifest?.id;if(!n)continue;let r=t.manifest?.name??t.manifest?.packageDisplayName??n;e.set(n,r)}return e},[Se]),we=n(new Map),J=a(()=>{let e=x?new Set(x):null,t=S?new Set(S):null,n=n=>!(e!==null&&!e.has(n)||t!==null&&t.has(n)),r=[];for(let e of V){if(!e.data)continue;let t=e.data.result??we.current.get(e.data.addonId)??null;if(e.data.result!==null&&we.current.set(e.data.addonId,e.data.result),t===null)continue;let{schema:i,values:a}=ce(t),o={...C===void 0?{}:{fieldKeys:C},...w===void 0?{}:{hideSectionChrome:w},...T===void 0?{}:{tabAliases:T}},s=se(i.sections.filter(e=>n(e.id)),o);if(s.length===0)continue;let c={...t,sections:se(t.sections.filter(e=>n(e.id)),o)},l={...i,sections:s};r.push({addonId:e.data.addonId,schemaWithValues:c,schema:l,serverValues:a})}return r},[ve,x,S,C,w,T]),[Y,Te]=d(new Map),Ee=t(e=>{Te(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)=>{c===`global`?await L.mutateAsync({addonId:e,nodeId:B,patch:t}):await R.mutateAsync({addonId:e,deviceId:m,nodeId:B,patch:t}),F.invalidateQueries({queryKey:[[`addonSettings`]]})},[L,R,B,c,m,F]),Oe=t(async(e,t,n,r)=>{let i=B;try{switch(t){case`reprobe-hwaccel`:await pe.mutateAsync({nodeId:i}),F.invalidateQueries({queryKey:[[`addonSettings`]]});return;case`reprobe-audio-engine`:await me.mutateAsync({nodeId:i}),F.invalidateQueries({queryKey:[[`addonSettings`]]});return;default:{let n=await I.addons.custom.mutate({addonId:e,action:t,input:r});return F.invalidateQueries({queryKey:[[`addonSettings`]]}),n}}}catch(n){throw console.error(`[NodeAddonsSettingsPanel] action failed`,{addonId:e,action:t,err:n}),n}},[pe,me,B,F,I]),ke=t((e,t)=>{Z(e,t)},[Z]),Q=f({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})=>(c===`global`?await L.mutateAsync({addonId:e,nodeId:B,patch:t}):await R.mutateAsync({addonId:e,deviceId:m,nodeId:B,patch:t}),e)))}},onSuccess:({saved:e})=>{for(let t of e)X.current.get(t)?.discard();F.invalidateQueries({queryKey:[[`addonSettings`]]})}}),Ae=t(()=>{for(let e of X.current.values())e.discard()},[]),je=a(()=>{let e=0;for(let t of J){let n=Y.get(t.addonId);n&&(e+=n.pendingKeys.length)}return e},[J,Y]),Me=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(_e)return p(`div`,{className:`h-24 rounded-lg border border-border bg-surface animate-pulse`});let $=K&&xe?U.get(K):void 0;if(!z&&J.length===0)return p(`div`,{className:`text-[11px] text-foreground-subtle italic`,children:ue??i(o,{children:[`No addons in`,` `,r.length>0?`[${r.join(`, `)}]`:`the current selection`,` expose`,` `,c,`-level settings on this node.`]})});let Ne=Q.isPending;return i(`div`,{className:`space-y-4`,children:[(M||N)&&i(`div`,{className:`border-b border-border pb-2`,children:[M&&p(`h2`,{className:`text-sm font-semibold text-foreground`,children:M}),N&&p(`p`,{className:`text-[11px] text-foreground-subtle mt-0.5`,children:N})]}),z&&p(ie,{tabs:W.map(e=>({id:e,label:ye.get(e)??e})),activeId:K,onChange:be,pendingByTab:Me}),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)]}),p(y,{tabKey:$?`extra:${K??``}`:`tab:${K??``}`,children:$?$.content:(()=>{let e=q?J.reduce((e,t)=>e+t.schemaWithValues.sections.filter(e=>(e.tab??`general`)===q).length,0):0,t=!!q&&e<=1,n=J.map(e=>({...e,renderedWithValues:{...e.schemaWithValues,sections:e.schemaWithValues.sections.filter(e=>q?(e.tab??`general`)===q:!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=(j??[]).filter(e=>e.tabId===q),a=r.filter(e=>(e.placement??`before`)===`before`),o=r.filter(e=>e.placement===`after`);return n.length===0&&r.length===0?p(`div`,{className:`text-[11px] text-foreground-subtle italic`,children:ue??`Nothing to configure here for this node.`}):i(`div`,{className:`space-y-6`,children:[a.map((e,t)=>p(`div`,{children:e.content},`extra-before-${t}`)),n.length>0&&p(le,{entries:n,paneStates:Y,displayNames:Ce,disabled:Ne,setPaneRef:De,onPaneStateChange:Ee,onImmediateSave:ke,onAction:Oe,inline:z||!!D}),o.map((e,t)=>p(`div`,{children:e.content},`extra-after-${t}`))]})})()}),!_e&&p(re,{pendingCount:je,onSave:()=>Q.mutate(),onDiscard:Ae,saving:Ne})]})}function le({entries:e,paneStates:t,displayNames:n,disabled:r,setPaneRef:o,onPaneStateChange:s,onImmediateSave:c,onAction:l,inline:u}){let f=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]=d(f[0]?.addonId??``);m(()=>{f.length!==0&&(f.find(e=>e.addonId===h)||g(f[0].addonId))},[f,h]);let _=f.find(e=>e.addonId===h)??f[0];if(!_)return null;let v=a(()=>l?(e,t,n,r)=>l(e,t,n,r):void 0,[l]),y=e=>p(S,{ref:o(e.addonId),addonId:e.addonId,schema:e.renderedWithValues,serverValues:e.serverValues,onImmediateSave:c,onStateChange:s,onAction:v,disabled:r},e.addonId);return f.length===1||u?p(`div`,{className:`flex flex-col gap-4`,children:f.map(y)}):i(`div`,{className:`flex flex-col gap-3`,children:[p(`div`,{className:`flex flex-wrap items-center gap-1 border-b border-border shrink-0`,children:f.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&&p(`span`,{className:`ml-1.5 inline-flex h-1.5 w-1.5 rounded-full bg-amber-400`})]},e.addonId)})}),p(`div`,{className:`space-y-2`,children:f.map(e=>p(`div`,{style:e.addonId===_.addonId?void 0:{display:`none`},children:y(e)},e.addonId))})]})}export{k as t};
|