@camstack/addon-admin-ui 1.2.430 → 1.2.432

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 (119) hide show
  1. package/dist/assets/{AddonAssetIcon-BWUL7eDI.js → AddonAssetIcon-BUMe5IDK.js} +1 -1
  2. package/dist/assets/{Addons-2-Q9J_R-.js → Addons-DeuXr1KP.js} +1 -1
  3. package/dist/assets/{AdminPage-DMiMIHwu.js → AdminPage-BIr_CXzx.js} +1 -1
  4. package/dist/assets/{AdminSectionedPage-DKH0UpKh.js → AdminSectionedPage-BaIEUBzU.js} +1 -1
  5. package/dist/assets/{AiProfiles-DQ5YpTn5.js → AiProfiles-DXFjP3HN.js} +1 -1
  6. package/dist/assets/{BrokerForm-wEqc4cpx.js → BrokerForm-D73q6J9S.js} +1 -1
  7. package/dist/assets/{Build-DIaw3f01.js → Build-v9eZF0g2.js} +1 -1
  8. package/dist/assets/{Calendars-BpyELuD4.js → Calendars-DKauMIgJ.js} +1 -1
  9. package/dist/assets/{Cluster-CfJQLikz.js → Cluster-Bk29KZQL.js} +1 -1
  10. package/dist/assets/{ClusterStepModel-B_1igjPf.js → ClusterStepModel-C4t8EYyW.js} +1 -1
  11. package/dist/assets/{CompositionEditor-DYkQHem0.js → CompositionEditor-Bw5I7XNl.js} +1 -1
  12. package/dist/assets/{CompositionEditorPage-DDBZOcqy.js → CompositionEditorPage-DLat14IE.js} +1 -1
  13. package/dist/assets/{Data-7qDFkx-Q.js → Data-C54aVzn0.js} +1 -1
  14. package/dist/assets/{DeviceDetail-Dy2NTHbz.js → DeviceDetail-UyQq0okE.js} +1 -1
  15. package/dist/assets/{DeviceDoActionFields-DmKzugUt.js → DeviceDoActionFields-BZPhSBgg.js} +1 -1
  16. package/dist/assets/{Devices-COzPWkpB.js → Devices-C2gBbpLK.js} +1 -1
  17. package/dist/assets/{EmbedPlayerPage-CD4jAYaX.js → EmbedPlayerPage-BMNLT-PN.js} +1 -1
  18. package/dist/assets/Identity-J4MwstTs.js +1 -0
  19. package/dist/assets/{IntegrationDetail-CP91fqQF.js → IntegrationDetail-lkVpMjqt.js} +1 -1
  20. package/dist/assets/{IntegrationHub-DMx7fLHV.js → IntegrationHub-B9rzgT5H.js} +1 -1
  21. package/dist/assets/{Integrations-Blb_S3_f.js → Integrations-CmqbxDj8.js} +1 -1
  22. package/dist/assets/{Integrations-BzqzbXQ2.js → Integrations-DhQ3DIcI.js} +1 -1
  23. package/dist/assets/{Library-Cqg-Y18g.js → Library-BvJfjpJY.js} +1 -1
  24. package/dist/assets/{Locations-EQXaWxpY.js → Locations-CgI3IeYv.js} +1 -1
  25. package/dist/assets/{Logs-hQ_F2BI5.js → Logs-DYZ-Wx2b.js} +1 -1
  26. package/dist/assets/{MaskShapeCanvas-BkBmWJHu.js → MaskShapeCanvas-D5vpR-SP.js} +1 -1
  27. package/dist/assets/{MotionZonesSettings-Ctl81l__.js → MotionZonesSettings-BEGvKMSe.js} +1 -1
  28. package/dist/assets/{MyAccess-D8vfWKFy.js → MyAccess-CfsgcW14.js} +1 -1
  29. package/dist/assets/Network-CfV9qDQb.js +1 -0
  30. package/dist/assets/{NodeAddonsSettingsPanel-DMEeQbDW.js → NodeAddonsSettingsPanel-Bm5HTEFT.js} +1 -1
  31. package/dist/assets/{Notifications-BtrpoxXL.js → Notifications-QmfzpIs2.js} +1 -1
  32. package/dist/assets/{PrivacyMaskSettings-DEbHPS5X.js → PrivacyMaskSettings-Dd5t3M3f.js} +1 -1
  33. package/dist/assets/{Recordings-BrGa72HR.js → Recordings-Crol71OX.js} +1 -1
  34. package/dist/assets/{ScanNetworkModal-CTjVwV69.js → ScanNetworkModal-CPFtW5pZ.js} +1 -1
  35. package/dist/assets/{SceneMonitorEditor-DgNqz_fJ.js → SceneMonitorEditor-kP-ZQsfj.js} +1 -1
  36. package/dist/assets/{SessionsList-CzSpm8u5.js → SessionsList-CTV6uO5n.js} +1 -1
  37. package/dist/assets/{Showroom-DC0Rdsfa.js → Showroom-DWJgeOiz.js} +1 -1
  38. package/dist/assets/{System-ByMuYkyz.js → System-CRn_eq5a.js} +1 -1
  39. package/dist/assets/{Terminal-CLof2QSK.js → Terminal-Dh_sliYJ.js} +1 -1
  40. package/dist/assets/{Viewer-CLEBXqqR.js → Viewer-B4ctSRpW.js} +1 -1
  41. package/dist/assets/{_virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-CxVe8UPZ.js → _virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-DNje-LmA.js} +1 -1
  42. package/dist/assets/{addon-icons-context-B6iVhWXv.js → addon-icons-context-D5fUq03j.js} +1 -1
  43. package/dist/assets/{archive-WKa1b0o1.js → archive-D75KchjA.js} +1 -1
  44. package/dist/assets/{authed-media-B0bKjjhb.js → authed-media-D2AKdsuc.js} +1 -1
  45. package/dist/assets/{bell-off-DQeMLsEK.js → bell-off-C1XQJfLA.js} +1 -1
  46. package/dist/assets/{board-model-DIWD11Nh.js → board-model-DR9pUgyG.js} +1 -1
  47. package/dist/assets/{boxes-DMqqPR7T.js → boxes-L_1M15a4.js} +1 -1
  48. package/dist/assets/circle-slash-jUACStpz.js +1 -0
  49. package/dist/assets/client-DSjr7-vB.js +358 -0
  50. package/dist/assets/{cloud-upload-8Rtciaox.js → cloud-upload-CX-DdQts.js} +1 -1
  51. package/dist/assets/crop--XlYmzNa.js +1 -0
  52. package/dist/assets/{device-integration-icon-BRxzTJPF.js → device-integration-icon-Bcm7Z6jY.js} +1 -1
  53. package/dist/assets/device-picker-model-C6sGbx0i.js +1 -0
  54. package/dist/assets/{dist-BiqTDJU8.js → dist-CWmjwgsm.js} +1 -1
  55. package/dist/assets/dist-DvZ0rTuL.js +358 -0
  56. package/dist/assets/{eraser-AtBM6hp_.js → eraser-BGE9R8_a.js} +1 -1
  57. package/dist/assets/{hard-drive-download-COMXm0vT.js → hard-drive-download-Bg2SJyCf.js} +1 -1
  58. package/dist/assets/{history-CNH6Hwzl.js → history-G5nuVYvw.js} +1 -1
  59. package/dist/assets/{hostInit-Cn-rvYrx.js → hostInit-rwNOXVdE.js} +1 -1
  60. package/dist/assets/i18n-CxM-3m0e.js +1 -0
  61. package/dist/assets/icons-C3xAUFxL.js +1 -0
  62. package/dist/assets/{index-IBVizVRk.js → index-C4TCQi7u.js} +3 -3
  63. package/dist/assets/key-D4l0MPuJ.js +1 -0
  64. package/dist/assets/{key-round-DhUJVMTJ.js → key-round-By7HqlM-.js} +1 -1
  65. package/dist/assets/{layers-BNtkJA8b.js → layers-CrP3_-zE.js} +1 -1
  66. package/dist/assets/{linked-devices-model-DXpryeZj.js → linked-devices-model-DzomDthM.js} +1 -1
  67. package/dist/assets/{list-ordered-DE6semVl.js → list-ordered-Q101NLCk.js} +1 -1
  68. package/dist/assets/{location-owned-usage-4K4CCW-I.js → location-owned-usage-BHGw7ZrT.js} +1 -1
  69. package/dist/assets/{log-in-k_3OshGq.js → log-in-CVN3HrLY.js} +1 -1
  70. package/dist/assets/{memory-stick--pKqiId8.js → memory-stick-DNkEIVDl.js} +1 -1
  71. package/dist/assets/{message-square-plus-DD_p-LBd.js → message-square-plus-BM5D9v7J.js} +1 -1
  72. package/dist/assets/{mf-entry-bootstrap-0-b5dba7ed.js → mf-entry-bootstrap-0-22a1f3ed.js} +2 -2
  73. package/dist/assets/{mic-off-abkMqo-Z.js → mic-off-D6Lc5R7l.js} +1 -1
  74. package/dist/assets/{monitor-off-Btwz3hik.js → monitor-off-RKGlWndF.js} +1 -1
  75. package/dist/assets/{monitor-smartphone-CewWbhfo.js → monitor-smartphone-BaBns5JL.js} +1 -1
  76. package/dist/assets/mount-C6sGbx0i.js +1 -0
  77. package/dist/assets/{notification-schedule-field-DALe8QBw.js → notification-schedule-field-MLRs0icT.js} +1 -1
  78. package/dist/assets/{octagon-alert-B-H38qMt.js → octagon-alert-DYq78E92.js} +1 -1
  79. package/dist/assets/{player-overlays-CTjp5_0E.js → player-overlays-BtrsPwRp.js} +1 -1
  80. package/dist/assets/{recycle-om2m5njd.js → recycle-CAwzzZqf.js} +1 -1
  81. package/dist/assets/remoteEntry-CBD0Jyz7.js +1 -0
  82. package/dist/assets/{scan-eye-RPomUFSt.js → scan-eye-BpAY7eTH.js} +1 -1
  83. package/dist/assets/{scissors-oLO0ZxF2.js → scissors-Be9z9iTK.js} +1 -1
  84. package/dist/assets/{search-x-By7QfPjb.js → search-x-ExdMvYlD.js} +1 -1
  85. package/dist/assets/{send-CWuZ-VHG.js → send-NfLeCT7d.js} +1 -1
  86. package/dist/assets/{settings-2-DrkSvhIU.js → settings-2-AuxgmdTU.js} +1 -1
  87. package/dist/assets/{speaker-Bi1HndpO.js → speaker-DcnALnai.js} +1 -1
  88. package/dist/assets/src-D7fj-1-O.js +67 -0
  89. package/dist/assets/{timer-reset-CX_75T7d.js → timer-reset-b5RtzF8y.js} +1 -1
  90. package/dist/assets/{ungroup-CQ9vK9Rb.js → ungroup-B_FqAxhG.js} +1 -1
  91. package/dist/assets/{unlink-DRIRCsre.js → unlink-_FaVL_1F.js} +1 -1
  92. package/dist/assets/{usb-CSAqtgKZ.js → usb-S8PAfCjY.js} +1 -1
  93. package/dist/assets/{use-scenes-feed-B3oVDWHB.js → use-scenes-feed-CCiJNPg1.js} +1 -1
  94. package/dist/assets/{use-stationary-objects-D8Q3fSKJ.js → use-stationary-objects-U550m5tx.js} +1 -1
  95. package/dist/assets/useEventInvalidation-C6sGbx0i.js +1 -0
  96. package/dist/assets/{useNodeUrlSelection-CbhdLJkk.js → useNodeUrlSelection-Dr_4iDNb.js} +1 -1
  97. package/dist/assets/user-round-CJ5fRzDO.js +1 -0
  98. package/dist/assets/{user-x-fVEkryXF.js → user-x-CEMv46WL.js} +1 -1
  99. package/dist/assets/{video-C9XbLIGZ.js → video-fjSOa6Uz.js} +1 -1
  100. package/dist/assets/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-CWUvAVp2.js → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-DD6rNG_X.js} +2 -2
  101. package/dist/index.html +10 -10
  102. package/dist/server/addon.js +178 -27
  103. package/package.json +1 -1
  104. package/dist/assets/Identity-BnBFoIrz.js +0 -1
  105. package/dist/assets/Network-BYFc8leF.js +0 -1
  106. package/dist/assets/circle-slash-HW5fnitA.js +0 -1
  107. package/dist/assets/client-Ck3kx2Z0.js +0 -358
  108. package/dist/assets/crop-BCuJfQIp.js +0 -1
  109. package/dist/assets/device-picker-model-DUsOqTKW.js +0 -1
  110. package/dist/assets/dist-D4jmeWXJ.js +0 -358
  111. package/dist/assets/file-up-DvSwIdQI.js +0 -1
  112. package/dist/assets/i18n-DWijAvai.js +0 -1
  113. package/dist/assets/icons-BzZe_Qg7.js +0 -1
  114. package/dist/assets/key-B62K9GgX.js +0 -1
  115. package/dist/assets/mount-DUsOqTKW.js +0 -1
  116. package/dist/assets/remoteEntry-Dmuue8--.js +0 -1
  117. package/dist/assets/src-CoNs4bys.js +0 -67
  118. package/dist/assets/useEventInvalidation-DUsOqTKW.js +0 -1
  119. package/dist/assets/user-round-DhADiv-t.js +0 -1
@@ -1 +1 @@
1
- import{$ as e,A as t,B as n,G as r,J as i,L as a,S as o,U as s,i as c,o as l,p as u,q as d,t as f,x as p}from"./_virtual_mf___mfe_internal__admin_ui_host__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-CEHpkaJP.js";import{ot as m}from"./player-overlays-CTjp5_0E.js";import{_i as h}from"./client-Ck3kx2Z0.js";import{Er as g,Ri as _,V as v,_r as y,gr as ee,qr as te}from"./src-CoNs4bys.js";import{t as ne}from"./useTranslation-D3Is_4B6.js";import{F as re,I as ie,L as b,R as x}from"./index-IBVizVRk.js";e();var S=t(function({addonId:e,schema:t,serverValues:i,onImmediateSave:o,onStateChange:c,onAction:l,disabled:u},f){let m=x({schema:t,serverValues:i,onImmediateSave:a(t=>o(e,t),[e,o]),onDeferredSave:a(()=>{},[])});s(f,()=>({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(`|`),_=r(()=>h.map(e=>`${e}=${JSON.stringify(m.values[e])}`).join(`,`),[h,m.values]),v=d(c);n(()=>{v.current=c},[c]),n(()=>{let t={};for(let e of h)t[e]=m.values[e];v.current({addonId:e,pendingKeys:h,pendingValues:t})},[e,g,_]);let y=r(()=>{if(l)return(t,n,r)=>l(e,t,n,r)},[e,l]);return p(b,{schema:t,values:m.values,onChange:m.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}e();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:t,level:n,deviceId:s,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:fe,onActiveTabChange:pe}){let{t:P}=ne(),F=l(),I=m().trpcClient,L=y(),R=ee(),me=_(),z=te(),B=de===!0||!!(A&&A.length>0),[he,ge]=i(null);if(n===`device`&&!s)throw Error(`NodeAddonsSettingsPanel: deviceId is required when level === "device"`);if(k!==void 0){if(n!==`global`||s!==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 V=e??`hub`,H=c({queries:t.map(e=>({queryKey:[[`addonSettings`,k===void 0?n===`global`?`getGlobalSettings`:`getDeviceSettings`:`getIntegrationSettings`],{addonId:e,nodeId:V,deviceId:s??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?n===`global`?{addonId:e,result:t(await I.addonSettings.getGlobalSettings.query({addonId:e,nodeId:V,...b?{cap:b}:{}}))}:{addonId:e,result:t(await I.addonSettings.getDeviceSettings.query({addonId:e,deviceId:s,nodeId:V}))}:{addonId:e,result:await I.addonSettings.getIntegrationSettings.query({addonId:e,nodeId:V})}},placeholderData:u}))}),_e=H.some(e=>e.isLoading),ve=H.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(`||`),U=r(()=>{let e=new Set;for(let t of H){let n=t.data?.result?.sections;if(n)for(let t of n)e.add(oe(t.tab,T))}return[...e]},[T,ve+`::`+H.map(e=>(e.data?.result?.sections??[]).map(e=>e.tab??`general`).join(`,`)).join(`::`)]),W=r(()=>new Map((A??[]).map(e=>[e.id,e])),[A]),G=r(()=>{if(!B)return[];let e=[...new Set([...U,...(A??[]).map(e=>e.id),...(j??[]).map(e=>e.tabId)])],t=e=>{let t=W.get(e);if(t?.order!==void 0)return t.order;let n=h[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})},[B,U,A,W,j]),ye=r(()=>{let e=new Map,t=e=>h[e]?.label??e.charAt(0).toUpperCase()+e.slice(1);for(let n of U)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},[U,A,j,E]),K=fe===void 0?he:fe,q=B?K&&G.includes(K)?K:G[0]??null:null,be=e=>{ge(e),pe?.(e)},xe=q!==null&&W.has(q),J=B?q&&!xe?q:void 0:D,{data:Se}=g(void 0),Ce=r(()=>{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=d(new Map),Y=r(()=>{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 H){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]),[X,Te]=i(new Map),Ee=a(e=>{Te(t=>{let n=new Map(t);return n.set(e.addonId,e),n})},[]),Z=d(new Map),De=a(e=>t=>{t?Z.current.set(e,t):Z.current.delete(e)},[]),Oe=a(async(e,t)=>{n===`global`?await L.mutateAsync({addonId:e,nodeId:V,patch:t}):await R.mutateAsync({addonId:e,deviceId:s,nodeId:V,patch:t}),F.invalidateQueries({queryKey:[[`addonSettings`]]})},[L,R,V,n,s,F]),ke=a(async(e,t,n,r)=>{let i=V;try{switch(t){case`reprobe-hwaccel`:await me.mutateAsync({nodeId:i}),F.invalidateQueries({queryKey:[[`addonSettings`]]});return;case`reprobe-audio-engine`:await z.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}},[me,z,V,F,I]),Ae=a((e,t)=>{Oe(e,t)},[Oe]),Q=f({mutationFn:async()=>{let e=[];for(let t of Y){let n=X.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})=>(n===`global`?await L.mutateAsync({addonId:e,nodeId:V,patch:t}):await R.mutateAsync({addonId:e,deviceId:s,nodeId:V,patch:t}),e)))}},onSuccess:({saved:e})=>{for(let t of e)Z.current.get(t)?.discard();F.invalidateQueries({queryKey:[[`addonSettings`]]})}}),je=a(()=>{for(let e of Z.current.values())e.discard()},[]),Me=r(()=>{let e=0;for(let t of Y){let n=X.get(t.addonId);n&&(e+=n.pendingKeys.length)}return e},[Y,X]),Ne=r(()=>{let e=new Map;for(let t of Y){let n=X.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},[Y,X]);if(_e)return p(`div`,{className:`h-24 rounded-lg border border-border bg-surface animate-pulse`});let $=q&&xe?W.get(q):void 0;if(!B&&Y.length===0)return p(`div`,{className:`text-[11px] text-foreground-subtle italic`,children:ue??P(`settings.nodeAddonsSettingsPanel.noAddonsIn`,{scope:t.length>0?`[${t.join(`, `)}]`:P(`settings.nodeAddonsSettingsPanel.theCurrentSelection`,`the current selection`),level:n})});let Pe=Q.isPending;return o(`div`,{className:`space-y-4`,children:[(M||N)&&o(`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})]}),B&&p(re,{tabs:G.map(e=>({id:e,label:ye.get(e)??e})),activeId:q,onChange:be,pendingByTab:Ne}),Q.isError&&o(`div`,{className:`rounded-md border border-red-500/40 bg-red-500/10 px-3 py-2 text-[11px] text-red-400`,children:[P(`settings.nodeAddonsSettingsPanel.saveFailed`,`Save failed:`),` `,String(Q.error?.message??Q.error)]}),p(v,{tabKey:$?`extra:${q??``}`:`tab:${q??``}`,children:$?$.content:(()=>{let e=J?Y.reduce((e,t)=>e+t.schemaWithValues.sections.filter(e=>(e.tab??`general`)===J).length,0):0,t=!!J&&e<=1,n=Y.map(e=>({...e,renderedWithValues:{...e.schemaWithValues,sections:e.schemaWithValues.sections.filter(e=>J?(e.tab??`general`)===J:!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===J),i=r.filter(e=>(e.placement??`before`)===`before`),a=r.filter(e=>e.placement===`after`);return n.length===0&&r.length===0?p(`div`,{className:`text-[11px] text-foreground-subtle italic`,children:ue??P(`settings.nodeAddonsSettingsPanel.nothingToConfigureHereFor`,`Nothing to configure here for this node.`)}):o(`div`,{className:`space-y-6`,children:[i.map((e,t)=>p(`div`,{children:e.content},`extra-before-${t}`)),n.length>0&&p(le,{entries:n,paneStates:X,displayNames:Ce,disabled:Pe,setPaneRef:De,onPaneStateChange:Ee,onImmediateSave:Ae,onAction:ke,inline:B||!!D}),a.map((e,t)=>p(`div`,{children:e.content},`extra-after-${t}`))]})})()}),!_e&&p(ie,{pendingCount:Me,onSave:()=>Q.mutate(),onDiscard:je,saving:Pe})]})}function le({entries:e,paneStates:t,displayNames:a,disabled:s,setPaneRef:c,onPaneStateChange:l,onImmediateSave:u,onAction:d,inline:f}){let m=r(()=>[...e].toSorted((e,t)=>{if(e.addonId===`system-config`)return-1;if(t.addonId===`system-config`)return 1;let n=a.get(e.addonId)??e.addonId,r=a.get(t.addonId)??t.addonId;return n.localeCompare(r)}),[e,a]),[h,g]=i(m[0]?.addonId??``);n(()=>{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=r(()=>d?(e,t,n,r)=>d(e,t,n,r):void 0,[d]),y=e=>p(S,{ref:c(e.addonId),addonId:e.addonId,schema:e.renderedWithValues,serverValues:e.serverValues,onImmediateSave:u,onStateChange:l,onAction:v,disabled:s},e.addonId);return m.length===1||f?p(`div`,{className:`flex flex-col gap-4`,children:m.map(y)}):o(`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:m.map(e=>{let n=a.get(e.addonId)??e.addonId,r=e.addonId===_.addonId,i=(t.get(e.addonId)?.pendingKeys.length??0)>0;return o(`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 ${r?`text-primary border-primary bg-primary/5`:`text-foreground-subtle border-transparent hover:text-foreground hover:bg-surface-hover`}`,children:[n,i&&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:m.map(e=>p(`div`,{style:e.addonId===_.addonId?void 0:{display:`none`},children:y(e)},e.addonId))})]})}export{k as t};
1
+ import{$ as e,A as t,B as n,G as r,J as i,L as a,S as o,U as s,i as c,o as l,p as u,q as d,t as f,x as p}from"./_virtual_mf___mfe_internal__admin_ui_host__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-CEHpkaJP.js";import{ot as m}from"./player-overlays-BtrsPwRp.js";import{_i as h}from"./client-DSjr7-vB.js";import{Er as g,Ri as _,V as v,_r as y,gr as ee,qr as te}from"./src-D7fj-1-O.js";import{t as ne}from"./useTranslation-D3Is_4B6.js";import{F as re,I as ie,L as b,R as x}from"./index-C4TCQi7u.js";e();var S=t(function({addonId:e,schema:t,serverValues:i,onImmediateSave:o,onStateChange:c,onAction:l,disabled:u},f){let m=x({schema:t,serverValues:i,onImmediateSave:a(t=>o(e,t),[e,o]),onDeferredSave:a(()=>{},[])});s(f,()=>({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(`|`),_=r(()=>h.map(e=>`${e}=${JSON.stringify(m.values[e])}`).join(`,`),[h,m.values]),v=d(c);n(()=>{v.current=c},[c]),n(()=>{let t={};for(let e of h)t[e]=m.values[e];v.current({addonId:e,pendingKeys:h,pendingValues:t})},[e,g,_]);let y=r(()=>{if(l)return(t,n,r)=>l(e,t,n,r)},[e,l]);return p(b,{schema:t,values:m.values,onChange:m.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}e();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:t,level:n,deviceId:s,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:fe,onActiveTabChange:pe}){let{t:P}=ne(),F=l(),I=m().trpcClient,L=y(),R=ee(),me=_(),z=te(),B=de===!0||!!(A&&A.length>0),[he,ge]=i(null);if(n===`device`&&!s)throw Error(`NodeAddonsSettingsPanel: deviceId is required when level === "device"`);if(k!==void 0){if(n!==`global`||s!==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 V=e??`hub`,H=c({queries:t.map(e=>({queryKey:[[`addonSettings`,k===void 0?n===`global`?`getGlobalSettings`:`getDeviceSettings`:`getIntegrationSettings`],{addonId:e,nodeId:V,deviceId:s??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?n===`global`?{addonId:e,result:t(await I.addonSettings.getGlobalSettings.query({addonId:e,nodeId:V,...b?{cap:b}:{}}))}:{addonId:e,result:t(await I.addonSettings.getDeviceSettings.query({addonId:e,deviceId:s,nodeId:V}))}:{addonId:e,result:await I.addonSettings.getIntegrationSettings.query({addonId:e,nodeId:V})}},placeholderData:u}))}),_e=H.some(e=>e.isLoading),ve=H.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(`||`),U=r(()=>{let e=new Set;for(let t of H){let n=t.data?.result?.sections;if(n)for(let t of n)e.add(oe(t.tab,T))}return[...e]},[T,ve+`::`+H.map(e=>(e.data?.result?.sections??[]).map(e=>e.tab??`general`).join(`,`)).join(`::`)]),W=r(()=>new Map((A??[]).map(e=>[e.id,e])),[A]),G=r(()=>{if(!B)return[];let e=[...new Set([...U,...(A??[]).map(e=>e.id),...(j??[]).map(e=>e.tabId)])],t=e=>{let t=W.get(e);if(t?.order!==void 0)return t.order;let n=h[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})},[B,U,A,W,j]),ye=r(()=>{let e=new Map,t=e=>h[e]?.label??e.charAt(0).toUpperCase()+e.slice(1);for(let n of U)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},[U,A,j,E]),K=fe===void 0?he:fe,q=B?K&&G.includes(K)?K:G[0]??null:null,be=e=>{ge(e),pe?.(e)},xe=q!==null&&W.has(q),J=B?q&&!xe?q:void 0:D,{data:Se}=g(void 0),Ce=r(()=>{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=d(new Map),Y=r(()=>{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 H){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]),[X,Te]=i(new Map),Ee=a(e=>{Te(t=>{let n=new Map(t);return n.set(e.addonId,e),n})},[]),Z=d(new Map),De=a(e=>t=>{t?Z.current.set(e,t):Z.current.delete(e)},[]),Oe=a(async(e,t)=>{n===`global`?await L.mutateAsync({addonId:e,nodeId:V,patch:t}):await R.mutateAsync({addonId:e,deviceId:s,nodeId:V,patch:t}),F.invalidateQueries({queryKey:[[`addonSettings`]]})},[L,R,V,n,s,F]),ke=a(async(e,t,n,r)=>{let i=V;try{switch(t){case`reprobe-hwaccel`:await me.mutateAsync({nodeId:i}),F.invalidateQueries({queryKey:[[`addonSettings`]]});return;case`reprobe-audio-engine`:await z.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}},[me,z,V,F,I]),Ae=a((e,t)=>{Oe(e,t)},[Oe]),Q=f({mutationFn:async()=>{let e=[];for(let t of Y){let n=X.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})=>(n===`global`?await L.mutateAsync({addonId:e,nodeId:V,patch:t}):await R.mutateAsync({addonId:e,deviceId:s,nodeId:V,patch:t}),e)))}},onSuccess:({saved:e})=>{for(let t of e)Z.current.get(t)?.discard();F.invalidateQueries({queryKey:[[`addonSettings`]]})}}),je=a(()=>{for(let e of Z.current.values())e.discard()},[]),Me=r(()=>{let e=0;for(let t of Y){let n=X.get(t.addonId);n&&(e+=n.pendingKeys.length)}return e},[Y,X]),Ne=r(()=>{let e=new Map;for(let t of Y){let n=X.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},[Y,X]);if(_e)return p(`div`,{className:`h-24 rounded-lg border border-border bg-surface animate-pulse`});let $=q&&xe?W.get(q):void 0;if(!B&&Y.length===0)return p(`div`,{className:`text-[11px] text-foreground-subtle italic`,children:ue??P(`settings.nodeAddonsSettingsPanel.noAddonsIn`,{scope:t.length>0?`[${t.join(`, `)}]`:P(`settings.nodeAddonsSettingsPanel.theCurrentSelection`,`the current selection`),level:n})});let Pe=Q.isPending;return o(`div`,{className:`space-y-4`,children:[(M||N)&&o(`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})]}),B&&p(re,{tabs:G.map(e=>({id:e,label:ye.get(e)??e})),activeId:q,onChange:be,pendingByTab:Ne}),Q.isError&&o(`div`,{className:`rounded-md border border-red-500/40 bg-red-500/10 px-3 py-2 text-[11px] text-red-400`,children:[P(`settings.nodeAddonsSettingsPanel.saveFailed`,`Save failed:`),` `,String(Q.error?.message??Q.error)]}),p(v,{tabKey:$?`extra:${q??``}`:`tab:${q??``}`,children:$?$.content:(()=>{let e=J?Y.reduce((e,t)=>e+t.schemaWithValues.sections.filter(e=>(e.tab??`general`)===J).length,0):0,t=!!J&&e<=1,n=Y.map(e=>({...e,renderedWithValues:{...e.schemaWithValues,sections:e.schemaWithValues.sections.filter(e=>J?(e.tab??`general`)===J:!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===J),i=r.filter(e=>(e.placement??`before`)===`before`),a=r.filter(e=>e.placement===`after`);return n.length===0&&r.length===0?p(`div`,{className:`text-[11px] text-foreground-subtle italic`,children:ue??P(`settings.nodeAddonsSettingsPanel.nothingToConfigureHereFor`,`Nothing to configure here for this node.`)}):o(`div`,{className:`space-y-6`,children:[i.map((e,t)=>p(`div`,{children:e.content},`extra-before-${t}`)),n.length>0&&p(le,{entries:n,paneStates:X,displayNames:Ce,disabled:Pe,setPaneRef:De,onPaneStateChange:Ee,onImmediateSave:Ae,onAction:ke,inline:B||!!D}),a.map((e,t)=>p(`div`,{children:e.content},`extra-after-${t}`))]})})()}),!_e&&p(ie,{pendingCount:Me,onSave:()=>Q.mutate(),onDiscard:je,saving:Pe})]})}function le({entries:e,paneStates:t,displayNames:a,disabled:s,setPaneRef:c,onPaneStateChange:l,onImmediateSave:u,onAction:d,inline:f}){let m=r(()=>[...e].toSorted((e,t)=>{if(e.addonId===`system-config`)return-1;if(t.addonId===`system-config`)return 1;let n=a.get(e.addonId)??e.addonId,r=a.get(t.addonId)??t.addonId;return n.localeCompare(r)}),[e,a]),[h,g]=i(m[0]?.addonId??``);n(()=>{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=r(()=>d?(e,t,n,r)=>d(e,t,n,r):void 0,[d]),y=e=>p(S,{ref:c(e.addonId),addonId:e.addonId,schema:e.renderedWithValues,serverValues:e.serverValues,onImmediateSave:u,onStateChange:l,onAction:v,disabled:s},e.addonId);return m.length===1||f?p(`div`,{className:`flex flex-col gap-4`,children:m.map(y)}):o(`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:m.map(e=>{let n=a.get(e.addonId)??e.addonId,r=e.addonId===_.addonId,i=(t.get(e.addonId)?.pendingKeys.length??0)>0;return o(`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 ${r?`text-primary border-primary bg-primary/5`:`text-foreground-subtle border-transparent hover:text-foreground hover:bg-surface-hover`}`,children:[n,i&&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:m.map(e=>p(`div`,{style:e.addonId===_.addonId?void 0:{display:`none`},children:y(e)},e.addonId))})]})}export{k as t};