@camstack/addon-admin-ui 1.2.304 → 1.2.306

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 (86) hide show
  1. package/dist/assets/{AddonCollectionPage-IGxqMKfN.js → AddonCollectionPage-BVsd6pmI.js} +1 -1
  2. package/dist/assets/{Addons-IHTPrNI5.js → Addons-UIJX8Fb_.js} +1 -1
  3. package/dist/assets/{AdminTabs-nFm97fzX.js → AdminTabs-B9sZVHZL.js} +1 -1
  4. package/dist/assets/{AiProfiles-Btn2U1I5.js → AiProfiles-C9Lr4txF.js} +1 -1
  5. package/dist/assets/{BrokerForm-B755jBSt.js → BrokerForm-Dv3RH9c0.js} +1 -1
  6. package/dist/assets/{Build-DS1MdtnT.js → Build-D-s3oWfj.js} +3 -3
  7. package/dist/assets/{Capabilities-DmKltkv5.js → Capabilities-D_TLwEIy.js} +1 -1
  8. package/dist/assets/{CapabilityBadges-DX8mXXvb.js → CapabilityBadges-BEi8USd1.js} +1 -1
  9. package/dist/assets/{Cluster-B7UhOogN.js → Cluster-CeAJCr7P.js} +1 -1
  10. package/dist/assets/CompositionEditor-ChbiJKxl.js +1 -0
  11. package/dist/assets/{CompositionEditorPage-kOhrZFnX.js → CompositionEditorPage-BmRI7Y83.js} +1 -1
  12. package/dist/assets/{Data-D41L3R-m.js → Data-BO_Jurvq.js} +1 -1
  13. package/dist/assets/{DetectionIntelligence-CfowMSoT.js → DetectionIntelligence-CU5wHq-z.js} +1 -1
  14. package/dist/assets/{DeviceAggregateSection-CGf3MhwD.js → DeviceAggregateSection-DaYIDHOj.js} +1 -1
  15. package/dist/assets/{DeviceDetail-BOffOsxV.js → DeviceDetail-BI2EU1DV.js} +2 -2
  16. package/dist/assets/{Devices-CzyJaWG2.js → Devices-BudogTth.js} +1 -1
  17. package/dist/assets/{EmbedPlayerPage-BBVKozYW.js → EmbedPlayerPage-BiJ13lZv.js} +1 -1
  18. package/dist/assets/{Events-DnhC8oOA.js → Events-JNFYN2rY.js} +1 -1
  19. package/dist/assets/{FormBuilder-C380RUX3.js → FormBuilder-B39aK_DC.js} +1 -1
  20. package/dist/assets/{Identity-BD6z12z_.js → Identity-BmJECLfk.js} +1 -1
  21. package/dist/assets/{IntegrationDetail-DU8i-atD.js → IntegrationDetail-DjEuVjm5.js} +1 -1
  22. package/dist/assets/{Integrations-DdTgrzGn.js → Integrations-CBfwj9It.js} +1 -1
  23. package/dist/assets/{Integrations-BiNLR_Ww.js → Integrations-Dz45jd6s.js} +1 -1
  24. package/dist/assets/{Locations-BqdZwKUY.js → Locations-D0NfEke5.js} +2 -2
  25. package/dist/assets/{Logs-5P2DNjs2.js → Logs-BHJHrD2B.js} +1 -1
  26. package/dist/assets/{ModelLicenses-BkVWn0IV.js → ModelLicenses-2aMfM4BU.js} +1 -1
  27. package/dist/assets/{MotionZonesSettings-L-4EWVGk.js → MotionZonesSettings-DOOoUDUh.js} +1 -1
  28. package/dist/assets/{MyAccess-BXLMSKGz.js → MyAccess-DhsrNLl1.js} +1 -1
  29. package/dist/assets/{Network-DekeB4d7.js → Network-BAHnbLma.js} +1 -1
  30. package/dist/assets/{NodeAddonsSettingsPanel-C1Q5ETLf.js → NodeAddonsSettingsPanel-Dor6c1OP.js} +1 -1
  31. package/dist/assets/{NodeInferenceDevices-99LfeNLq.js → NodeInferenceDevices-D9W0yjR2.js} +1 -1
  32. package/dist/assets/Notifications-CFRgq6AU.js +1 -0
  33. package/dist/assets/{Pipeline-DPTeOpmX.js → Pipeline-CZqv-WDf.js} +1 -1
  34. package/dist/assets/{Plates-MhqH9-Ry.js → Plates-DwwihVaX.js} +1 -1
  35. package/dist/assets/{PrivacyMaskSettings-CxFP39jX.js → PrivacyMaskSettings-B72MiYkY.js} +1 -1
  36. package/dist/assets/{ProviderIcon-6K-g1UnR.js → ProviderIcon-Bu64UkbY.js} +1 -1
  37. package/dist/assets/{Recordings-Cs66fznd.js → Recordings-BKKdPejP.js} +1 -1
  38. package/dist/assets/{ScanNetworkModal-BEaX5aTQ.js → ScanNetworkModal-DWFCW77R.js} +1 -1
  39. package/dist/assets/{SceneMonitorEditor-C2SJI9WX.js → SceneMonitorEditor-D41S8mCC.js} +1 -1
  40. package/dist/assets/{Scenes-DiGtqBbU.js → Scenes-BaUYSk5G.js} +1 -1
  41. package/dist/assets/{Settings-DQrG1WnS.js → Settings-CL-1cfaG.js} +1 -1
  42. package/dist/assets/{Showroom-B7rHypKP.js → Showroom-BGC9HURc.js} +1 -1
  43. package/dist/assets/{StorageLocationsPanel-B-jHqDfu.js → StorageLocationsPanel-BxMZR40M.js} +1 -1
  44. package/dist/assets/{Terminal-DkDNLIP6.js → Terminal-BMZfNzFO.js} +1 -1
  45. package/dist/assets/{Viewer-BWZWH9b6.js → Viewer-BpM1mwca.js} +1 -1
  46. package/dist/assets/{_virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-Ce3pikFV.js → _virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-A95Um49l.js} +1 -1
  47. package/dist/assets/{archive-BNroiGwB.js → archive-BriAnq1q.js} +1 -1
  48. package/dist/assets/{authed-media-Dg2D5kE6.js → authed-media-miTx96TJ.js} +1 -1
  49. package/dist/assets/{boxes-BM0rKTIU.js → boxes-D2KSTwWN.js} +1 -1
  50. package/dist/assets/circle-slash-DV0Efgfy.js +1 -0
  51. package/dist/assets/{debounced-invalidate-DIctNEfo.js → debounced-invalidate-BfTJQttH.js} +1 -1
  52. package/dist/assets/{device-integration-icon-f7aTJq_A.js → device-integration-icon-BQq5VhX8.js} +1 -1
  53. package/dist/assets/{dist-9jD6ptg9.js → dist-6EfRPjgO.js} +1 -1
  54. package/dist/assets/dist-BE9iHntF.js +349 -0
  55. package/dist/assets/{face-bbox-ClR-7M9Q.js → face-bbox-CnLOfxON.js} +1 -1
  56. package/dist/assets/{hard-drive-download-DUvB-L1l.js → hard-drive-download-CFo1nliE.js} +1 -1
  57. package/dist/assets/{hostInit-DzYukA60.js → hostInit-BJ_wmjyM.js} +1 -1
  58. package/dist/assets/{index-BvlqovR9.js → index-pLda35NP.js} +3 -3
  59. package/dist/assets/{layers-D1WnJbwC.js → layers-DXzdbNRU.js} +1 -1
  60. package/dist/assets/{location-owned-usage-bvxtyNqS.js → location-owned-usage-BXNGhOvF.js} +1 -1
  61. package/dist/assets/{mf-entry-bootstrap-0-7f3253e9.js → mf-entry-bootstrap-0-37dbe42e.js} +2 -2
  62. package/dist/assets/{player-overlays-3_9ROwqy.js → player-overlays-a12yzfBo.js} +1 -1
  63. package/dist/assets/remoteEntry-CS6_-5UE.js +1 -0
  64. package/dist/assets/{send-DH62N1Ul.js → send-BHK5Igxm.js} +1 -1
  65. package/dist/assets/{settings-2-ueKmnrzN.js → settings-2-DGxB25kQ.js} +1 -1
  66. package/dist/assets/{square-check-big-3q3uVt6x.js → square-check-big-D_l1vU6s.js} +1 -1
  67. package/dist/assets/src-B-NVCmyG.js +349 -0
  68. package/dist/assets/{src-CjhDatMf.js → src-BF4n85s0.js} +8 -8
  69. package/dist/assets/{use-scenes-feed-uZP8KUJo.js → use-scenes-feed-B63fr8TY.js} +1 -1
  70. package/dist/assets/{use-stationary-objects-BjObNHBK.js → use-stationary-objects-B2ed_d7-.js} +1 -1
  71. package/dist/assets/{useDevice-IfdakO5U.js → useDevice-PY97BdIC.js} +1 -1
  72. package/dist/assets/useEventInvalidation-DdQsLyBN.js +1 -0
  73. package/dist/assets/{useNodeUrlSelection-CxiV7IKb.js → useNodeUrlSelection-CB3Flysa.js} +1 -1
  74. package/dist/assets/user-round-BtNTeMm8.js +1 -0
  75. package/dist/assets/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-sZc8aFdf.js → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-BnL6orYm.js} +2 -2
  76. package/dist/index.html +5 -5
  77. package/dist/server/addon.js +512 -73
  78. package/package.json +1 -1
  79. package/dist/assets/CompositionEditor-005SykbK.js +0 -1
  80. package/dist/assets/Notifications-CBCmgx-N.js +0 -1
  81. package/dist/assets/circle-slash-CWjjBBGk.js +0 -1
  82. package/dist/assets/dist-BjG94ClR.js +0 -349
  83. package/dist/assets/remoteEntry-BqNHYh4E.js +0 -1
  84. package/dist/assets/src-Dw0wc5O0.js +0 -349
  85. package/dist/assets/useEventInvalidation-BYzMHWC-.js +0 -1
  86. package/dist/assets/user-round-BdOgCkUG.js +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/addon-admin-ui",
3
- "version": "1.2.304",
3
+ "version": "1.2.306",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "Admin UI — Vite frontend build and server-side addon",
@@ -1 +0,0 @@
1
- import{G as e,I as t,K as n,Q as r,S as i,b 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{at as l}from"./player-overlays-3_9ROwqy.js";import{Hr as u,Ji as d,U as f,V as p,c as m,ln as h,nn as g,on as _,vi as v,yi as y,zr as ee}from"./src-CjhDatMf.js";import{An as b,Cn as x,En as S,In as C,Ln as te,Lt as w,Sn as ne,Tn as T,_n as re,kn as E,kt as ie,mn as D,vn as ae,wn as O,xn as k,yn as oe}from"./src-Dw0wc5O0.js";import{l as A}from"./index-BvlqovR9.js";r();function se(e){return{target:{kind:`new`,type:e},name:``,features:[]}}function ce(e){return{target:{kind:`existing`,device:e},name:``,features:[]}}function le(e,t){return{target:e.target,name:t,features:e.features.flatMap(e=>e.kind===`fields`?[e]:[])}}function j(e,t,n){return{...e,features:e.features.map(e=>e.cap===t?n(e):e)}}function ue(e,t){return Object.fromEntries(Object.entries(e).filter(([e])=>e!==t))}function de(e,t){switch(t.type){case`set-new-type`:return e.target.kind===`new`?{...e,target:{...e.target,type:t.deviceType}}:e;case`set-new-role`:{if(e.target.kind!==`new`)return e;let{role:n,...r}=e.target;return{...e,target:t.role===null?r:{...r,role:t.role}}}case`set-name`:return{...e,name:t.name};case`add-feature`:return e.features.some(e=>e.cap===t.cap)?e:{...e,features:[...e.features,{kind:`fields`,cap:t.cap,fields:{}}]};case`remove-feature`:return{...e,features:e.features.filter(e=>e.cap!==t.cap)};case`set-field`:return j(e,t.cap,e=>({...e,fields:{...e.fields,[t.path]:t.source}}));case`clear-field`:return j(e,t.cap,e=>({...e,fields:ue(e.fields,t.path)}));case`copy-feature`:return j(e,t.cap,e=>({...e,fields:{...e.fields,...Object.fromEntries(t.paths.map(e=>[e,{kind:`from`,source:t.from,cap:t.sourceCap,fieldPath:e}]))}}))}}function fe(e){let t=oe.safeParse({target:e.target,features:e.features});return t.success?{ok:!0,composition:t.data}:{ok:!1,problems:t.error.issues.map(e=>`${e.path.join(`.`)||`composition`}: ${e.message}`)}}function pe(e){for(let t=1;;t++){let n=`s${t}`;if(!e.includes(n))return n}}function me(e){return{addonId:e.addonId,stableId:e.stableId}}function M(e){return new Map(e.map(e=>[T(me(e)),e]))}function he(e,t,n){let r=e?.features??[],i=r.findIndex(e=>e.cap===n.cap);return{target:e?.target??{kind:`existing`,device:t},features:i===-1?[...r,n]:r.map((e,t)=>t===i?n:e)}}function ge(e,t){let n=e.features.filter(e=>e.cap!==t);return n.length===0?null:{target:e.target,features:n}}function _e(e,t){let n=e?.features.find(e=>e.cap===t);return n!==void 0&&n.kind===`fields`?n:null}function N(e){return Array.isArray(e)?e.map(N):typeof e!=`object`||!e?e:Object.fromEntries(Object.entries(e).toSorted(([e],[t])=>e.localeCompare(t)).map(([e,t])=>[e,N(t)]))}function P(e){return JSON.stringify(N(e))}function F(e,t){return P(e)===P(t)}function I(e,t){return P(e)===P(t)}function ve(e,t){switch(e.kind){case`pending`:return{kind:`refused`,reason:`the customization has not been read yet — try again`};case`unknown`:return{kind:`refused`,reason:`the customization could not be read: ${e.reason}`};case`not-loaded`:return{kind:`refused`,reason:`the customizations are not loaded yet: ${e.reason}`};case`none`:return t===null?{kind:`noop`}:{kind:`create`,input:{enabled:!0,composition:t}};case`present`:{let n=e.view.block.id;return t===null?{kind:`delete`,blockId:n}:P(t)===P(e.composition)?{kind:`noop`}:{kind:`update`,blockId:n,expectedUpdatedAt:e.view.block.updatedAt,composition:t}}}}function L(e,t){let n=e===`enum`?`string`:e,r=t.kind===`enum`?`string`:t.kind,i={source:t.source,cap:t.cap,fieldPath:t.fieldPath};return r===n?{kind:`from`,...i}:n===`number`&&r===`string`?{kind:`expression`,expr:`number(x)`,bindings:{x:{kind:`from`,...i}}}:null}function R(e){return{kind:`expression`,expr:e,bindings:{}}}function z(e){let t=L(`number`,e.percentage);return t===null?null:{kind:`fields`,cap:`battery`,fields:e.mode===`replace`?{percentage:t}:{percentage:t,charging:R(`"unknown"`),sleeping:R(`false`),lastUpdated:R(`now`)}}}var ye=[`percent`,...w.options];function B(e,t){return t===`percent`?{level:e}:{"remaining.value":e,"remaining.unit":R(JSON.stringify(t))}}function be(e,t){let n=L(`number`,t.remaining);if(n===null||!ae.test(t.key)||t.label.trim()===``)return null;let r={label:t.label.trim(),fields:B(n,t.unit)};return{kind:`fields`,cap:`consumables`,...e?.enabled===void 0?{}:{enabled:e.enabled},fields:e?.fields??{lastChangedAt:R(`now`),lastFetchedAt:R(`now`)},items:{...e?.items,[t.key]:r}}}function xe(e){if(e.level!==void 0)return`percent`;let t=e[`remaining.unit`];if(t===void 0||t.kind!==`expression`)return null;try{let e=w.safeParse(JSON.parse(t.expr));return e.success?e.data:null}catch{return null}}function Se(e){return Object.entries(e?.items??{}).map(([e,t])=>{let n=xe(t.fields),r=V(t.fields.level??t.fields[`remaining.value`]),i=r===null?null:L(`number`,r);return n!==null&&i!==null&&F(B(i,n),t.fields)?{key:e,label:t.label,unit:n,source:r}:{key:e,label:t.label,unit:null,source:null}})}function Ce(e,t){let n=Object.fromEntries(Object.entries(e.items??{}).filter(([e])=>e!==t));return Object.keys(n).length===0?null:{...e,items:n}}function we(e){return e.toLowerCase().normalize(`NFD`).replace(/[\u0300-\u036f]/g,``).replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``).slice(0,48)}function Te(e){let t=e.fields.lastPressedAt;if(t===void 0||t.kind!==`expression`)return[];let n=Object.entries(t.bindings).filter(([e])=>e.startsWith(`active`)).flatMap(([,e])=>e.kind===`from`?[e.source]:[]);return[...new Map(n.map(e=>[T(e),e])).values()]}function Ee(e){let t=e.fields.lastPressedAt;if(t===void 0||t.kind!==`expression`)return[];let n=t.bindings;return Object.entries(n).flatMap(([e,t])=>{if(!e.startsWith(`active`)||t.kind!==`from`)return[];let r=n[`changed${e.slice(6)}`];return r===void 0||r.kind!==`from`?[]:[{source:t.source,cap:t.cap,activeField:t.fieldPath,changedAtField:r.fieldPath}]})}function V(e){if(e===void 0)return null;if(e.kind===`from`){let{kind:t,...n}=e;return{...n,kind:`number`}}if(e.kind!==`expression`||e.expr!==`number(x)`)return null;let t=e.bindings.x;if(t===void 0||t.kind!==`from`||Object.keys(e.bindings).length!==1)return null;let{kind:n,...r}=t;return{...r,kind:`string`}}function De(e,t){let n=V(e.fields.percentage);if(n===null)return!1;let r=z({percentage:n,mode:t}),{enabled:i,...a}=e;return r!==null&&I(a,r)}function H(e){return e.map(e=>({id:e.id,name:e.name,addonId:e.addonId,stableId:e.stableId,location:e.location,type:e.type}))}function Oe(e,t,n){let r=t.trim().toLowerCase();return r===``?[]:e.filter(e=>!n.includes(e.id)&&[e.name,e.stableId,e.location??``].some(e=>e.toLowerCase().includes(r))).toSorted((e,t)=>e.name.localeCompare(t.name)).slice(0,20)}function U(e,t){let n=e;for(let e of t.split(`.`)){if(typeof n!=`object`||!n||Array.isArray(n))return;n=Object.getOwnPropertyDescriptor(n,e)?.value}return n}function ke(e,t,n,r){return r===null?{kind:`from`,source:e,cap:t,fieldPath:n.path}:L(r,{source:e,cap:t,fieldPath:n.path,kind:n.kind})}function Ae(e,t,n,r){let i={addonId:e.addonId,stableId:e.stableId};return t.caps.flatMap(e=>e.fields.filter(e=>e.item!==!0).map(t=>({cap:e.cap,path:t.path,kind:t.kind,value:n===null?void 0:U(n[e.cap],t.path),source:ke(i,e.cap,t,r)})))}function W(e,t){return t?e===void 0?`—`:e===null?`null`:typeof e==`string`||typeof e==`number`||typeof e==`boolean`?String(e):JSON.stringify(e):`…`}var je=[];function G({title:e,targetKind:t,excludeDeviceIds:n=je,onPick:r,onCancel:a}){let{t:c}=A(),[l,u]=o(null);return i(`aside`,{"aria-label":e,className:`rounded-lg border border-border bg-surface p-3 flex flex-col gap-2`,children:[s(`h3`,{className:`text-xs font-semibold`,children:e}),l===null?s(K,{excludeDeviceIds:n,onSelect:u}):s(q,{device:l,targetKind:t,onPick:r,onBack:()=>u(null)}),s(`div`,{children:s(h,{variant:`ghost`,onClick:a,children:c(`customize.picker.cancel`)})})]})}function K({excludeDeviceIds:e,onSelect:t}){let{t:n}=A(),[r,c]=o(``),l=y({projection:`slim`});return i(a,{children:[i(`label`,{className:`flex flex-col gap-1 text-[11px]`,children:[n(`customize.picker.search`),s(`input`,{type:`search`,"aria-label":n(`customize.picker.search`),className:`px-1.5 py-0.5 text-[11px] bg-background border border-border rounded`,value:r,onChange:e=>c(e.target.value)})]}),l.status===`pending`&&s(`p`,{role:`status`,className:`text-[11px] text-foreground-subtle`,children:n(`customize.picker.loadingDevices`)}),l.status===`error`&&s(_,{title:n(`customize.picker.devicesFailed`),message:l.error?.message??``}),l.status===`success`&&s(`ul`,{className:`flex flex-col gap-1`,children:Oe(H(l.data),r,e).map(e=>s(`li`,{children:i(`button`,{type:`button`,className:`text-left text-[11px] hover:underline`,onClick:()=>t(e),children:[e.name,` `,i(`span`,{className:`text-foreground-subtle`,children:[`· `,e.stableId]})]})},e.id))})]})}function q({device:e,targetKind:t,selected:n,onPick:r,onBack:a}){let{t:o}=A(),c=v({deviceId:e.id}),l=d({deviceId:e.id});if(c.status===`pending`)return s(`p`,{role:`status`,className:`text-[11px] text-foreground-subtle`,children:o(`customize.picker.loadingFields`)});if(c.status===`error`)return s(_,{title:o(`customize.picker.fieldsFailed`),message:c.error?.message??``});let u=Ae(e,c.data,l.status===`success`?l.data:null,t),f=u.filter(e=>e.source===null).length,p={addonId:e.addonId,stableId:e.stableId};return i(`div`,{className:`flex flex-col gap-1`,children:[i(`button`,{type:`button`,className:`text-left text-[11px] text-primary`,onClick:a,children:[`← `,e.name]}),l.status===`error`&&s(`p`,{role:`alert`,className:`text-[10px] text-warning`,children:o(`customize.picker.valuesFailed`,{reason:l.error?.message??``})}),s(`ul`,{role:`listbox`,"aria-label":o(`customize.picker.fields`),className:`flex flex-col gap-1`,children:u.map(t=>{let a=t.source;if(a===null)return null;let o=()=>r({device:e,ref:p,cap:t.cap,path:t.path,kind:t.kind,source:a,value:t.value});return i(`li`,{role:`option`,"aria-selected":n?.cap===t.cap&&n.path===t.path,tabIndex:0,className:`flex justify-between gap-2 text-[11px] cursor-pointer hover:bg-surface-hover rounded px-1`,onClick:o,onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&o()},children:[i(`span`,{className:`font-mono`,children:[t.cap,`.`,t.path]}),s(`span`,{children:W(t.value,l.status===`success`)})]},`${t.cap}.${t.path}`)})}),f>0&&t!==null&&s(`p`,{className:`text-[10px] text-foreground-subtle`,children:o(`customize.picker.hidden`,{count:f,kind:o(`customize.kinds.${t}`)})})]})}var Me=`integration`;function J(e,t){switch(e.kind){case`from`:{let n=T(e.source);return`${t.get(n)??n} · ${e.cap}.${e.fieldPath}`}case`expression`:return e.expr;case`code`:return`code`}}function Ne(e,t){if(e.kind===`unreachable`)return{kind:`unknown`,reason:e.error};if(e.state===null)return{kind:`unknown`,reason:`the composer has not reported this customization yet`};let n=e.state.fields.find(t);return n===void 0?{kind:`unknown`,reason:`the composer reports no value for this field`}:n.state===`unavailable`?{kind:`unavailable`,reason:n.reason??`unavailable`}:{kind:`value`,value:n.value,staleReason:n.state===`stale`?n.reason??`stale`:null}}function Y(e,t,n,r){return{key:`${e.feature.cap}.${t}`,cap:e.feature.cap,field:t,origin:`composed`,mode:e.mode,from:J(n,e.input.sourceNames),value:e.enabled?Ne(e.input.state,r):{kind:`off`}}}function Pe(e){let t=e.feature.cap;return Object.entries(e.feature.fields).map(([n,r])=>Y(e,n,r,e=>e.cap===t&&e.path===n&&e.item===void 0))}function Fe(e){let t=e.feature.cap;return Object.entries(e.feature.items??{}).flatMap(([n,r])=>Object.entries(r.fields).map(([r,i])=>Y(e,ne(re,n,r),i,e=>e.cap===t&&e.path===r&&e.item?.arrayPath===`items`&&e.item.key===n)))}function Ie(e,t,n){if(e===null)return{kind:`unknown`,reason:`the device state could not be read`};let r=U(e[t],n),i=r===void 0?void 0:C(r);return i===void 0?{kind:`unknown`,reason:`not reported`}:{kind:`value`,value:i,staleReason:null}}function Le(e){if(e.mode!==`replace`)return[];let t=e.feature.cap,n=new Set(Object.keys(e.feature.fields));return(e.input.nativeFields.get(t)??[]).filter(e=>!n.has(e)).map(n=>({key:`${t}.${n}`,cap:t,field:n,origin:`native`,mode:e.mode,from:Me,value:Ie(e.input.snapshot,t,n)}))}function Re(e){return e.composition.features.flatMap(t=>{if(t.kind!==`fields`)return[];let n={feature:t,mode:e.nativeCaps.has(t.cap)?`replace`:`add`,enabled:k(t),input:e};return[...Pe(n),...Fe(n),...Le(n)]})}var ze={min:`min(a, b, …)`,max:`max(a, b, …)`,abs:`abs(x)`,floor:`floor(x)`,ceil:`ceil(x)`,sqrt:`sqrt(x)`,round:`round(x, digits?)`,pow:`pow(x, y)`,clamp:`clamp(x, lo, hi)`,avg:`avg(a, b, …)`,sum:`sum(a, b, …)`,coalesce:`coalesce(a, b, …)`,age:`age(now, ts)`,convert:`convert(x, "from", "to")`,any:`any(a, b, …)`,all:`all(a, b, …)`,within:`within(ts, ms)`,number:`number(x)`,latest:`latest(ts, …)`,rose:`rose(level, changedAt, debounceMs?)`,count:`count(x)`},X=/[A-Za-z_][A-Za-z0-9_]*$/;function Be(e,t,n){let r=X.exec(e.slice(0,t))?.[0]??``;if(r===``)return[];let i=n.filter(e=>e.startsWith(r)).toSorted().map(e=>({kind:`binding`,label:e,insert:e,hintKey:null})),a=`now`.startsWith(r)?[{kind:`now`,label:`now`,insert:`now`,hintKey:`compositionEditor.now`}]:[],o=[...te].filter(e=>e.startsWith(r)).toSorted().map(e=>({kind:`builtin`,label:ze[e]??e,insert:`${e}(`,hintKey:`compositionEditor.builtins.${e}`}));return[...i,...a,...o].slice(0,8)}function Ve(e,t,n){let r=t-(X.exec(e.slice(0,t))?.[0]??``).length;return{text:`${e.slice(0,r)}${n.insert}${e.slice(t)}`,cursor:r+n.insert.length}}r();function He({label:e,value:t,bindings:r,onChange:a}){let{t:c}=A(),l=n(null),[u,d]=o(t.length),f=Be(t,u,r);return i(`div`,{className:`flex flex-col gap-1`,children:[i(`label`,{className:`flex flex-col gap-1 text-[11px]`,children:[e,s(`input`,{ref:l,className:`font-mono px-1.5 py-0.5 text-[11px] bg-background border border-border rounded`,value:t,onChange:e=>{a(e.target.value),d(e.target.selectionStart??e.target.value.length)},onSelect:e=>d(e.currentTarget.selectionStart??t.length)})]}),f.length>0&&s(`ul`,{role:`listbox`,"aria-label":c(`compositionEditor.suggestions`),className:`rounded border border-border bg-surface text-[11px]`,children:f.map(e=>i(`li`,{role:`option`,"aria-selected":!1,tabIndex:0,className:`flex justify-between gap-2 px-1 cursor-pointer hover:bg-surface-hover`,onClick:()=>{let n=Ve(t,u,e);a(n.text),d(n.cursor),l.current?.focus()},children:[s(`span`,{className:`font-mono`,children:e.label}),e.hintKey!==null&&s(`span`,{className:`text-foreground-subtle`,children:c(e.hintKey)})]},`${e.kind}:${e.label}`))})]})}function Ue(e,t,n){if(e.kind===`code`)return{kind:`unavailable`,reason:`code fields arrive in slice 4`};if(e.kind===`expression`&&(D(e.expr,`rose`)||D(e.expr,`count`)))return{kind:`runtime-only`};let r=S(e).filter(e=>t.get(O(e.source,e.cap))?.kind!==`value`).map(x);if(r.length>0)return{kind:`waiting`,missing:r};let i=ie({source:e,now:n,read:e=>{let n=t.get(O(e.source,e.cap)),r=n?.kind===`value`?U(n.slice,e.fieldPath):void 0,i=r===void 0?void 0:C(r);return i===void 0?{state:`unavailable`,reason:`${e.cap}.${e.fieldPath} is not reported`,fatal:!1}:{state:`fresh`,value:i}}});return i.state===`unavailable`?{kind:`unavailable`,reason:i.reason}:{kind:`value`,value:i.value,stale:i.reason}}r();function We({sliceKey:e,deviceId:t,capName:n,onReading:r}){let i=m(l().trpcClient,t,n);return c(()=>{r(e,i===void 0?{kind:`pending`}:{kind:`value`,slice:i})},[e,i,r]),null}function Ge(e,t){return[...new Map(S(e).map(e=>[O(e.source,e.cap),e]))].map(([e,n])=>({key:e,read:n,device:t.get(T(n.source))}))}function Ke({source:e}){let{t:n}=A(),r=y({projection:`slim`}),[a,c]=o(new Map),l=t((e,t)=>{c(n=>new Map([...n,[e,t]]))},[]),u=Ge(e,M(r.status===`success`?H(r.data):[])),d=r.status===`success`?u.filter(e=>e.device===void 0).map(e=>T(e.read.source)):[];return i(`div`,{className:`flex flex-wrap items-center gap-2 text-[11px]`,children:[u.map(e=>e.device===void 0?null:s(We,{sliceKey:e.key,deviceId:e.device.id,capName:e.read.cap,onReading:l},e.key)),s(`span`,{className:`text-foreground-subtle`,children:n(`compositionEditor.preview.label`)}),r.status===`error`?s(`span`,{className:`text-warning`,children:n(`compositionEditor.preview.devicesFailed`,{reason:r.error?.message??``})}):d.length>0?s(`span`,{className:`text-warning`,children:n(`compositionEditor.preview.unknownDevice`,{sources:d.join(`, `)})}):s(Z,{preview:Ue(e,a,Date.now())})]})}function Z({preview:e}){let{t}=A();switch(e.kind){case`value`:return i(`strong`,{children:[`→ `,W(e.value,!0),e.stale===null?``:` (${e.stale})`]});case`unavailable`:return s(`span`,{className:`text-warning`,children:e.reason});case`waiting`:return s(`span`,{className:`text-foreground-subtle`,children:t(`compositionEditor.preview.waiting`,{sources:e.missing.join(`, `)})});case`runtime-only`:return s(`span`,{className:`text-foreground-subtle`,children:t(`compositionEditor.preview.runtimeOnly`)})}}r();function qe({path:e,kind:t,required:n,source:r,onSet:c,onClear:l,sourceNames:u}){let{t:d}=A(),[f,p]=o(`idle`),m=r?.kind===`expression`?r:null;return i(`div`,{className:`flex flex-col gap-1 rounded border border-border p-2`,children:[i(`div`,{className:`flex flex-wrap items-center gap-2`,children:[s(`span`,{className:`font-mono text-[11px]`,children:e}),i(`span`,{className:`text-[10px] text-foreground-subtle`,children:[d(`customize.kinds.${t}`),n?` · ${d(`compositionEditor.required`)}`:``]}),s(h,{size:`sm`,variant:`outline`,onClick:()=>p(`take`),children:d(`compositionEditor.takeFrom`)}),s(h,{size:`sm`,variant:`outline`,"aria-pressed":m!==null,onClick:()=>c(m??{kind:`expression`,expr:`null`,bindings:{}}),children:d(`compositionEditor.formula`)}),r!==void 0&&s(h,{size:`sm`,variant:`ghost`,onClick:l,children:d(`compositionEditor.clear`)})]}),r?.kind===`from`&&s(`span`,{className:`text-[11px]`,children:J(r,u)}),m!==null&&i(a,{children:[s(He,{label:d(`compositionEditor.formulaFor`,{path:e}),value:m.expr,bindings:Object.keys(m.bindings),onChange:e=>c({...m,expr:e})}),s(`ul`,{className:`text-[11px] flex flex-col gap-0.5`,children:Object.entries(m.bindings).map(([e,t])=>i(`li`,{className:`flex gap-2`,children:[s(`span`,{className:`font-mono`,children:e}),s(`span`,{children:t.kind===`from`?J(t,u):JSON.stringify(t.value)})]},e))}),s(h,{size:`sm`,variant:`ghost`,onClick:()=>p(`add-binding`),children:d(`compositionEditor.addSource`)})]}),f!==`idle`&&s(G,{title:d(f===`take`?`compositionEditor.takeFrom`:`compositionEditor.addSource`),targetKind:f===`take`?t:null,onCancel:()=>p(`idle`),onPick:e=>{if(f===`take`)c(e.source);else if(m!==null){let t=pe(Object.keys(m.bindings));c({...m,bindings:{...m.bindings,[t]:{kind:`from`,source:e.ref,cap:e.cap,fieldPath:e.path}}})}p(`idle`)}}),r!==void 0&&s(Ke,{source:r})]})}r();function Q(e){return e===null||e.kind===`known`?null:e}function Je({draft:e,deviceType:t,nativeCaps:n,targetFields:r,dispatch:c}){let{t:l}=A(),u=ee({deviceType:t}),d=y({projection:`slim`}),f=new Map([...M(d.status===`success`?H(d.data):[])].map(([e,t])=>[e,t.name])),[p,m]=o(null),_=Q(n)??Q(r),v=n?.kind===`known`?n.value:new Set,b=new Set(e.features.map(e=>e.cap)),x=u.status===`success`?u.data.caps.filter(e=>!b.has(e.cap)&&!v.has(e.cap)):[],S=[...v].filter(e=>!b.has(e)),C=e=>v.has(e)?((r?.kind===`known`?r.value.caps.find(t=>t.cap===e):void 0)?.fields??[]).filter(e=>e.item!==!0&&!e.path.includes(`.`)).map(e=>({path:e.path,kind:e.kind,required:!1})):((u.status===`success`?u.data.caps.find(t=>t.cap===e):void 0)?.fields??[]).map(e=>({path:e.path,kind:e.kind,required:e.required}));return _===null?i(a,{children:[i(`section`,{"aria-labelledby":`editor-features`,className:`flex flex-col gap-2`,children:[s(`h2`,{id:`editor-features`,className:`text-sm font-semibold`,children:l(`compositionEditor.steps.features`)}),u.status===`pending`&&s(`p`,{role:`status`,className:`text-[11px] text-foreground-subtle`,children:l(`compositionEditor.checking`)}),u.status===`error`&&s(`p`,{role:`alert`,className:`text-[11px] text-warning`,children:l(`compositionEditor.unknown`,{reason:u.error?.message??``})}),i(`div`,{className:`flex flex-wrap gap-1`,children:[e.features.map(e=>i(`span`,{className:`flex items-center gap-1 rounded border border-border px-1.5 text-[11px]`,children:[e.cap,s(g,{variant:v.has(e.cap)?`default`:`info`,children:v.has(e.cap)?l(`compositionEditor.replaces`):l(`compositionEditor.added`)}),s(`button`,{type:`button`,"aria-label":l(`compositionEditor.removeFeature`,{cap:e.cap}),onClick:()=>c({type:`remove-feature`,cap:e.cap}),children:`×`})]},e.cap)),x.map(e=>i(h,{size:`sm`,variant:`outline`,onClick:()=>c({type:`add-feature`,cap:e.cap}),children:[`+ `,e.cap]},e.cap)),S.map(e=>s(h,{size:`sm`,variant:`ghost`,onClick:()=>c({type:`add-feature`,cap:e}),children:l(`compositionEditor.replaceIn`,{cap:e})},e))]})]}),e.features.map(e=>i(`section`,{"aria-label":l(`compositionEditor.steps.fieldsOf`,{cap:e.cap}),className:`flex flex-col gap-2`,children:[i(`div`,{className:`flex items-center justify-between`,children:[s(`h2`,{className:`text-sm font-semibold`,children:l(`compositionEditor.steps.fieldsOf`,{cap:e.cap})}),s(h,{size:`sm`,variant:`outline`,onClick:()=>m(e.cap),children:l(`compositionEditor.copyFeature`)})]}),p===e.cap&&s(G,{title:l(`compositionEditor.copyFeature`),targetKind:null,onCancel:()=>m(null),onPick:t=>{c({type:`copy-feature`,cap:e.cap,from:t.ref,sourceCap:t.cap,paths:C(e.cap).map(e=>e.path)}),m(null)}}),C(e.cap).map(t=>s(qe,{path:t.path,kind:t.kind,required:t.required,source:e.fields[t.path],onSet:n=>c({type:`set-field`,cap:e.cap,path:t.path,source:n}),onClear:()=>c({type:`clear-field`,cap:e.cap,path:t.path}),sourceNames:f},t.path))]},e.cap))]}):i(`section`,{"aria-labelledby":`editor-features`,className:`flex flex-col gap-2`,children:[s(`h2`,{id:`editor-features`,className:`text-sm font-semibold`,children:l(`compositionEditor.steps.features`)}),s(`p`,{role:`status`,className:`text-[11px] text-foreground-subtle`,children:_.kind===`unknown`?_.reason:l(`compositionEditor.reading`)})]})}var $=`px-1.5 py-0.5 text-[11px] bg-background border border-border rounded`;function Ye({draft:e,targetName:t,dispatch:n}){let{t:r}=A(),a=e.target;return i(`section`,{"aria-labelledby":`editor-target`,className:`flex flex-col gap-2`,children:[s(`h2`,{id:`editor-target`,className:`text-sm font-semibold`,children:r(`compositionEditor.steps.target`)}),a.kind===`existing`?s(`p`,{className:`text-[11px]`,children:r(`compositionEditor.existingTarget`,{name:t??`${a.device.addonId}/${a.device.stableId}`})}):i(`div`,{className:`grid grid-cols-3 gap-2`,children:[i(`label`,{className:`flex flex-col gap-1 text-[11px]`,children:[r(`compositionEditor.targetType`),s(`select`,{className:$,value:a.type,onChange:e=>{let t=Object.values(b).find(t=>t===e.target.value);t!==void 0&&n({type:`set-new-type`,deviceType:t})},children:Object.values(b).map(e=>s(`option`,{value:e,children:f(e).label},e))})]}),i(`label`,{className:`flex flex-col gap-1 text-[11px]`,children:[r(`customize.identity.role`),i(`select`,{className:$,value:a.role??``,onChange:e=>n({type:`set-new-role`,role:Object.values(E).find(t=>t===e.target.value)??null}),children:[s(`option`,{value:``,children:r(`customize.identity.noRole`)}),Object.values(E).map(e=>s(`option`,{value:e,children:p(e).label},e))]})]}),i(`label`,{className:`flex flex-col gap-1 text-[11px]`,children:[r(`compositionEditor.name`),s(`input`,{className:$,value:e.name,onChange:e=>n({type:`set-name`,name:e.target.value})})]})]})]})}r();function Xe({draft:e,blockId:t,saving:n,onSave:r,onCancel:a}){let{t:l}=A(),d=u(),f=fe(e),p=f.ok?JSON.stringify(f.composition):``,[m,g]=o({key:``,state:{kind:`checking`}});c(()=>{if(!f.ok)return;let e=f.composition,n=setTimeout(()=>{d.mutateAsync({composition:e,...t===null?{}:{blockId:t}}).then(e=>g({key:p,state:e.ok?{kind:`ok`}:{kind:`refused`,problems:e.problems}})).catch(e=>g({key:p,state:{kind:`unknown`,reason:e instanceof Error?e.message:String(e)}}))},500);return()=>clearTimeout(n)},[p,t]);let _=f.ok?m.key===p?m.state:{kind:`checking`}:{kind:`invalid-draft`,problems:f.problems};return i(`section`,{"aria-labelledby":`editor-verify`,className:`flex flex-col gap-2`,children:[s(`h2`,{id:`editor-verify`,className:`text-sm font-semibold`,children:l(`compositionEditor.steps.verify`)}),_.kind===`checking`&&s(`p`,{role:`status`,className:`text-[11px] text-foreground-subtle`,children:l(`compositionEditor.verify.checking`)}),_.kind===`ok`&&s(`p`,{className:`text-[11px] text-success`,children:l(`compositionEditor.verify.ok`)}),_.kind===`unknown`&&s(`p`,{role:`alert`,className:`text-[11px] text-warning`,children:l(`compositionEditor.verify.unknown`,{reason:_.reason})}),(_.kind===`invalid-draft`||_.kind===`refused`)&&s(`ul`,{role:`alert`,className:`flex flex-col gap-1 text-[11px] text-danger`,children:_.kind===`invalid-draft`?_.problems.map(e=>s(`li`,{children:e},e)):_.problems.map(e=>i(`li`,{children:[s(`span`,{className:`font-mono`,children:e.path}),` — `,e.message]},`${e.path}:${e.code}`))}),i(`div`,{className:`flex gap-2`,children:[s(h,{variant:`ghost`,onClick:a,children:l(`compositionEditor.cancel`)}),s(h,{disabled:_.kind!==`ok`||n||!f.ok,onClick:()=>f.ok&&r(f.composition),children:l(`compositionEditor.save`)})]})]})}r();function Ze({initial:t,blockId:n,deviceType:r,targetName:a=null,nativeCaps:c,targetFields:l,save:u,onCancel:d}){let[f,p]=e(de,t),[m,h]=o(!1),[g,_]=o(null),v=f.target.kind===`new`?f.target.type:r,y=async e=>{h(!0);let t=await u(e,f.name);h(!1),_(t.kind===`refused`?t.reason:null)};return i(`div`,{className:`flex flex-col gap-4`,children:[s(Ye,{draft:f,targetName:a,dispatch:p}),s(Je,{draft:f,deviceType:v,nativeCaps:c,targetFields:l,dispatch:p}),s(Xe,{draft:f,blockId:n,saving:m,onSave:e=>void y(e),onCancel:d}),g!==null&&s(`p`,{role:`alert`,className:`text-[11px] text-danger break-words`,children:g})]})}export{ce as C,le as S,_e as _,W as a,he as b,z as c,Te as d,Ee as f,Ce as g,V as h,K as i,be as l,we as m,Re as n,U as o,De as p,q as r,ye as s,Ze as t,Se as u,ve as v,se as w,ge as x,I as y};