@camstack/addon-admin-ui 1.2.312 → 1.2.315
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/{AddonCollectionPage-D_jT_fKd.js → AddonCollectionPage-pS-uTKIv.js} +1 -1
- package/dist/assets/{Addons-Dm22iIFC.js → Addons-9ZIvUT1K.js} +1 -1
- package/dist/assets/{AdminTabs-BLa2Yu61.js → AdminTabs-jHFlbFwy.js} +1 -1
- package/dist/assets/{AiProfiles-C1FiOjIi.js → AiProfiles-BhbohiJt.js} +1 -1
- package/dist/assets/{BrokerForm-W3yjLc5F.js → BrokerForm-DgGM0_0c.js} +1 -1
- package/dist/assets/{Build-D42X2om2.js → Build-CUET0Iyz.js} +4 -4
- package/dist/assets/{Capabilities-DgQeevtK.js → Capabilities-C3B2Cg8b.js} +1 -1
- package/dist/assets/{CapabilityBadges-PxEJ-G8M.js → CapabilityBadges-B4tAQqGd.js} +1 -1
- package/dist/assets/{Cluster-CYJRjTNq.js → Cluster-4QQw-L5J.js} +1 -1
- package/dist/assets/CompositionEditor-BPm2kx9Q.js +1 -0
- package/dist/assets/{CompositionEditorPage-B9FazR7t.js → CompositionEditorPage-VsLdAptk.js} +1 -1
- package/dist/assets/{Data-BZ997zDU.js → Data-jiTwAkwz.js} +1 -1
- package/dist/assets/{DetectionIntelligence-CoZLbnyz.js → DetectionIntelligence-z8Wi34J2.js} +1 -1
- package/dist/assets/{DeviceAggregateSection-DGRRUhpU.js → DeviceAggregateSection-CbiGOvpd.js} +1 -1
- package/dist/assets/{DeviceDetail-X4_H5AEU.js → DeviceDetail-XZGgHSZ7.js} +2 -2
- package/dist/assets/{Devices-D2avtpSh.js → Devices-BUSj9XZS.js} +1 -1
- package/dist/assets/{EmbedPlayerPage-DndXvLAf.js → EmbedPlayerPage-HBoWc3RB.js} +1 -1
- package/dist/assets/{Events-DcBl0VuS.js → Events-CwwN-Ai4.js} +1 -1
- package/dist/assets/{FormBuilder-DcvB5DXc.js → FormBuilder-Bsir_-sl.js} +1 -1
- package/dist/assets/{Identity-BFps8fGD.js → Identity-Dybyl5R-.js} +1 -1
- package/dist/assets/{IntegrationDetail-cLLqyAlF.js → IntegrationDetail-BKdQfHsS.js} +1 -1
- package/dist/assets/{Integrations-CKkdQ5eX.js → Integrations-B3j9mUgh.js} +1 -1
- package/dist/assets/{Integrations--caPrwcY.js → Integrations-CM0m1Zef.js} +1 -1
- package/dist/assets/{Locations-DCOaDC4m.js → Locations-CyY2UiFp.js} +1 -1
- package/dist/assets/{Logs-CVsufO3f.js → Logs-D0IImY2Y.js} +1 -1
- package/dist/assets/{ModelLicenses-C53LveOk.js → ModelLicenses-q_i_PA1X.js} +1 -1
- package/dist/assets/{MotionZonesSettings-BP6JgzDx.js → MotionZonesSettings-CVxyo9hA.js} +1 -1
- package/dist/assets/{MyAccess-BPy91g8M.js → MyAccess-FbdsZp4I.js} +1 -1
- package/dist/assets/{Network-BH8GF1jj.js → Network-Ba7GJPhZ.js} +1 -1
- package/dist/assets/{NodeAddonsSettingsPanel-DaUaDmgN.js → NodeAddonsSettingsPanel-DssU1eLJ.js} +1 -1
- package/dist/assets/{NodeInferenceDevices-CV8hPlUN.js → NodeInferenceDevices-4JgJwMA2.js} +1 -1
- package/dist/assets/Notifications-DOZJMvSa.js +1 -0
- package/dist/assets/{Pipeline-VFKCmqnk.js → Pipeline-CSVrOhDb.js} +1 -1
- package/dist/assets/{Plates-CwmrYBy1.js → Plates-D3-W026o.js} +1 -1
- package/dist/assets/{PrivacyMaskSettings-DrGP3agd.js → PrivacyMaskSettings-CLxBzwVu.js} +1 -1
- package/dist/assets/{ProviderIcon-DpDrKQg9.js → ProviderIcon-dscfq54_.js} +1 -1
- package/dist/assets/{Recordings-wBHDYR-a.js → Recordings-Ccu6iaCk.js} +1 -1
- package/dist/assets/{ScanNetworkModal-Bs0BPCl_.js → ScanNetworkModal-D8yxRM0Z.js} +1 -1
- package/dist/assets/{SceneMonitorEditor-BKRn3LUw.js → SceneMonitorEditor-Cv2vE8HC.js} +1 -1
- package/dist/assets/{Scenes-AZ844W8Q.js → Scenes-BQ4CPMKw.js} +1 -1
- package/dist/assets/{Settings-C3eJAyF_.js → Settings-Dfcait6k.js} +1 -1
- package/dist/assets/{Showroom-CrjPa3nO.js → Showroom-_zi_fQzx.js} +1 -1
- package/dist/assets/{StorageLocationsPanel-DZBpj1S8.js → StorageLocationsPanel-DNV_ZgVx.js} +1 -1
- package/dist/assets/{Terminal-DP9Z-4oI.js → Terminal-BC9ErnQ1.js} +1 -1
- package/dist/assets/{Viewer-BdSLJVFV.js → Viewer-6Aij0p3V.js} +1 -1
- package/dist/assets/{_virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-BzFC5oNH.js → _virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-_ywvVYKV.js} +1 -1
- package/dist/assets/{archive--Adx9xt7.js → archive-DnwqLvnq.js} +1 -1
- package/dist/assets/{authed-media-BjiwUfzl.js → authed-media-BAASKB_9.js} +1 -1
- package/dist/assets/{boxes-C9etGa7E.js → boxes-kF6UH6-_.js} +1 -1
- package/dist/assets/circle-slash-BbFEc4PR.js +1 -0
- package/dist/assets/{debounced-invalidate-D_ADe-pO.js → debounced-invalidate-2ngeH0FB.js} +1 -1
- package/dist/assets/{device-integration-icon-CDQck2H0.js → device-integration-icon-bqqGCRov.js} +1 -1
- package/dist/assets/dist-BXhzcrtM.js +349 -0
- package/dist/assets/{dist-Dhc7r6s3.js → dist-iiQuRL6W.js} +1 -1
- package/dist/assets/{face-bbox-BMJUn0ul.js → face-bbox-zGQvxT6q.js} +1 -1
- package/dist/assets/{hard-drive-download-_iraTBzr.js → hard-drive-download-CoG1t86A.js} +1 -1
- package/dist/assets/{hostInit-BUbZdY_9.js → hostInit-ClFPaQoK.js} +1 -1
- package/dist/assets/{index-ToaOKO9V.js → index-BKfjeM9L.js} +3 -3
- package/dist/assets/{layers-DiVzoqI9.js → layers-9n_eO6gY.js} +1 -1
- package/dist/assets/{location-owned-usage-BYFxxj5I.js → location-owned-usage-XFA4zrIz.js} +1 -1
- package/dist/assets/{mf-entry-bootstrap-0-eaedec53.js → mf-entry-bootstrap-0-aa4bc7ed.js} +2 -2
- package/dist/assets/{player-overlays-CW14DMpN.js → player-overlays-BPnLENh-.js} +1 -1
- package/dist/assets/remoteEntry-Dc4is_2X.js +1 -0
- package/dist/assets/{send-CPgogH5c.js → send-EIywGEfF.js} +1 -1
- package/dist/assets/{settings-2-Ch5_hcKD.js → settings-2-C2jb3QFd.js} +1 -1
- package/dist/assets/{square-check-big-znl8trUW.js → square-check-big-7kDS8B6S.js} +1 -1
- package/dist/assets/{src-DIrDyFmq.js → src-Ch2D4L9J.js} +8 -8
- package/dist/assets/src-DXUFbK1_.js +349 -0
- package/dist/assets/{use-scenes-feed-YEEHIE1o.js → use-scenes-feed-Dl7dI39g.js} +1 -1
- package/dist/assets/{use-stationary-objects-DOl51SBk.js → use-stationary-objects-BHIRg4zV.js} +1 -1
- package/dist/assets/{useDevice-C8SXb13_.js → useDevice-BuSELuIc.js} +1 -1
- package/dist/assets/useEventInvalidation-C-bG2gYe.js +1 -0
- package/dist/assets/{useNodeUrlSelection-BGtbjkMI.js → useNodeUrlSelection-hGEaySeu.js} +1 -1
- package/dist/assets/user-round-DIcryj9b.js +1 -0
- package/dist/assets/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-BaoDsuWl.js → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-DHst_gbg.js} +2 -2
- package/dist/index.html +5 -5
- package/dist/server/addon.js +85 -31
- package/package.json +1 -1
- package/dist/assets/CompositionEditor-BR4ITRMC.js +0 -1
- package/dist/assets/Notifications-B2HuQQif.js +0 -1
- package/dist/assets/circle-slash-cB0daX9J.js +0 -1
- package/dist/assets/dist-CLDbTq6j.js +0 -349
- package/dist/assets/remoteEntry-Cor8-DvN.js +0 -1
- package/dist/assets/src-JqpYwj-l.js +0 -349
- package/dist/assets/useEventInvalidation-B86vUgTW.js +0 -1
- package/dist/assets/user-round-D9U1WJod.js +0 -1
|
@@ -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-CW14DMpN.js";import{$ as u,Ai as d,Zr as f,c as p,ei as m,ji as h,mn as g,oa as _,tt as v,vn as y,xn as b}from"./src-DIrDyFmq.js";import{An as x,Cn as S,Dn as C,En as w,Fn as T,Ft as ee,Gn as E,Gt as D,It as te,Kn as ne,Lt as re,Mn as ie,Nn as O,Nt as ae,On as oe,Pn as k,Pt as se,Rn as A,jn as ce,zn as j}from"./src-JqpYwj-l.js";import{l as M}from"./index-ToaOKO9V.js";r();function le(e){return{target:{kind:`new`,type:e},name:``,features:[]}}function ue(e){return{target:{kind:`existing`,device:e},name:``,features:[]}}function N(e,t){return{target:e.target,name:t,features:e.features.flatMap(e=>e.kind===`fields`?[e]:[])}}function P(e,t,n){return{...e,features:e.features.map(e=>e.cap===t?n(e):e)}}function de(e,t){return Object.fromEntries(Object.entries(e).filter(([e])=>e!==t))}function fe(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 P(e,t.cap,e=>({...e,fields:{...e.fields,[t.path]:t.source}}));case`clear-field`:return P(e,t.cap,e=>({...e,fields:de(e.fields,t.path)}));case`copy-feature`:return P(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 pe(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 me(e){for(let t=1;;t++){let n=`s${t}`;if(!e.includes(n))return n}}var he=[`room`,`converted-sensor`,`derived-binary`],F={addonId:`provider-homeassistant`,stableId:`sensor.template_source`};function ge(){return N(te({temperatureSources:se,motionSources:ae,occupancyWindowMs:ee}),`Room`)}function _e(){return N({target:{kind:`new`,type:j.Sensor},features:[{kind:`fields`,cap:`numeric-sensor`,fields:{value:{kind:`expression`,expr:`convert(v, "°C", "°F")`,bindings:{v:{kind:`from`,source:F,cap:`numeric-sensor`,fieldPath:`value`}}},unit:{kind:`expression`,expr:`"°F"`,bindings:{}},lastFetchedAt:{kind:`expression`,expr:`now`,bindings:{}}}}]},`Converted sensor`)}function ve(){return N({target:{kind:`new`,type:j.Sensor},features:[{kind:`fields`,cap:`binary`,fields:{on:{kind:`expression`,expr:`v > 20`,bindings:{v:{kind:`from`,source:F,cap:`temperature-sensor`,fieldPath:`celsius`}}},lastChangedAt:{kind:`expression`,expr:`now`,bindings:{}}}}]},`Derived binary`)}function ye(e){switch(e){case`room`:return ge();case`converted-sensor`:return _e();case`derived-binary`:return ve()}}function be(e,t){return typeof t==`number`&&Number.isFinite(t)&&t>0?{kind:`device`,path:`/devices/${t}`}:{kind:`editor`,path:`/build/compositions/${encodeURIComponent(e)}`}}function xe(e){return{addonId:e.addonId,stableId:e.stableId}}function I(e){return new Map(e.map(e=>[k(xe(e)),e]))}function Se(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 Ce(e,t){let n=e.features.filter(e=>e.cap!==t);return n.length===0?null:{target:e.target,features:n}}function we(e,t){let n=e?.features.find(e=>e.cap===t);return n!==void 0&&n.kind===`fields`?n:null}function L(e){return Array.isArray(e)?e.map(L):typeof e!=`object`||!e?e:Object.fromEntries(Object.entries(e).toSorted(([e],[t])=>e.localeCompare(t)).map(([e,t])=>[e,L(t)]))}function R(e){return JSON.stringify(L(e))}function Te(e,t){return R(e)===R(t)}function z(e,t){return R(e)===R(t)}function Ee(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}:R(t)===R(e.composition)?{kind:`noop`}:{kind:`update`,blockId:n,expectedUpdatedAt:e.view.block.updatedAt,composition:t}}}}function B(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 V(e){return{kind:`expression`,expr:e,bindings:{}}}function H(e){let t=B(`number`,e.percentage);return t===null?null:{kind:`fields`,cap:`battery`,fields:e.mode===`replace`?{percentage:t}:{percentage:t,charging:V(`"unknown"`),sleeping:V(`false`),lastUpdated:V(`now`)}}}var De=[`percent`,...D.options];function Oe(e,t){return t===`percent`?{level:e}:{"remaining.value":e,"remaining.unit":V(JSON.stringify(t))}}function ke(e,t){let n=B(`number`,t.remaining);if(n===null||!C.test(t.key)||t.label.trim()===``)return null;let r={label:t.label.trim(),fields:Oe(n,t.unit)};return{kind:`fields`,cap:`consumables`,...e?.enabled===void 0?{}:{enabled:e.enabled},fields:e?.fields??{lastChangedAt:V(`now`),lastFetchedAt:V(`now`)},items:{...e?.items,[t.key]:r}}}function Ae(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=D.safeParse(JSON.parse(t.expr));return e.success?e.data:null}catch{return null}}function je(e){return Object.entries(e?.items??{}).map(([e,t])=>{let n=Ae(t.fields),r=U(t.fields.level??t.fields[`remaining.value`]),i=r===null?null:B(`number`,r);return n!==null&&i!==null&&Te(Oe(i,n),t.fields)?{key:e,label:t.label,unit:n,source:r}:{key:e,label:t.label,unit:null,source:null}})}function Me(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 Ne(e){return e.toLowerCase().normalize(`NFD`).replace(/[\u0300-\u036f]/g,``).replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``).slice(0,48)}function Pe(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=>[k(e),e])).values()]}function Fe(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 U(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 Ie(e,t){let n=U(e.fields.percentage);if(n===null)return!1;let r=H({percentage:n,mode:t}),{enabled:i,...a}=e;return r!==null&&z(a,r)}function W(e){return e.map(e=>({id:e.id,name:e.name,addonId:e.addonId,stableId:e.stableId,location:e.location,type:e.type}))}function Le(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 G(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 Re(e,t,n,r){return r===null?{kind:`from`,source:e,cap:t,fieldPath:n.path}:B(r,{source:e,cap:t,fieldPath:n.path,kind:n.kind})}function ze(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:G(n[e.cap],t.path),source:Re(i,e.cap,t,r)})))}function K(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 Be=[];function q({title:e,targetKind:t,excludeDeviceIds:n=Be,onPick:r,onCancel:a}){let{t:c}=M(),[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(J,{excludeDeviceIds:n,onSelect:u}):s(Y,{device:l,targetKind:t,onPick:r,onBack:()=>u(null)}),s(`div`,{children:s(b,{variant:`ghost`,onClick:a,children:c(`customize.picker.cancel`)})})]})}function J({excludeDeviceIds:e,onSelect:t}){let{t:n}=M(),[r,c]=o(``),l=h({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(y,{title:n(`customize.picker.devicesFailed`),message:l.error?.message??``}),l.status===`success`&&s(`ul`,{className:`flex flex-col gap-1`,children:Le(W(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 Y({device:e,targetKind:t,selected:n,onPick:r,onBack:a}){let{t:o}=M(),c=d({deviceId:e.id}),l=_({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(y,{title:o(`customize.picker.fieldsFailed`),message:c.error?.message??``});let u=ze(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:K(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 Ve=`integration`;function X(e,t){switch(e.kind){case`from`:{let n=k(e.source);return`${t.get(n)??n} · ${e.cap}.${e.fieldPath}`}case`expression`:return e.expr;case`code`:return`code`}}function He(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 Z(e,t,n,r){return{key:`${e.feature.cap}.${t}`,cap:e.feature.cap,field:t,origin:`composed`,mode:e.mode,from:X(n,e.input.sourceNames),value:e.enabled?He(e.input.state,r):{kind:`off`}}}function Ue(e){let t=e.feature.cap;return Object.entries(e.feature.fields).map(([n,r])=>Z(e,n,r,e=>e.cap===t&&e.path===n&&e.item===void 0))}function We(e){let t=e.feature.cap;return Object.entries(e.feature.items??{}).flatMap(([n,r])=>Object.entries(r.fields).map(([r,i])=>Z(e,ce(w,n,r),i,e=>e.cap===t&&e.path===r&&e.item?.arrayPath===`items`&&e.item.key===n)))}function Ge(e,t,n){if(e===null)return{kind:`unknown`,reason:`the device state could not be read`};let r=G(e[t],n),i=r===void 0?void 0:E(r);return i===void 0?{kind:`unknown`,reason:`not reported`}:{kind:`value`,value:i,staleReason:null}}function Ke(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:Ve,value:Ge(e.input.snapshot,t,n)}))}function qe(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:x(t),input:e};return[...Ue(n),...We(n),...Ke(n)]})}var Je={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)`},Q=/[A-Za-z_][A-Za-z0-9_]*$/;function Ye(e,t,n){let r=Q.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=[...ne].filter(e=>e.startsWith(r)).toSorted().map(e=>({kind:`builtin`,label:Je[e]??e,insert:`${e}(`,hintKey:`compositionEditor.builtins.${e}`}));return[...i,...a,...o].slice(0,8)}function Xe(e,t,n){let r=t-(Q.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 Ze({label:e,value:t,bindings:r,onChange:a}){let{t:c}=M(),l=n(null),[u,d]=o(t.length),f=Ye(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=Xe(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 Qe(e,t,n){if(e.kind===`code`)return{kind:`unavailable`,reason:`code fields arrive in slice 4`};if(e.kind===`expression`&&(S(e.expr,`rose`)||S(e.expr,`count`)))return{kind:`runtime-only`};let r=T(e).filter(e=>t.get(O(e.source,e.cap))?.kind!==`value`).map(ie);if(r.length>0)return{kind:`waiting`,missing:r};let i=re({source:e,now:n,read:e=>{let n=t.get(O(e.source,e.cap)),r=n?.kind===`value`?G(n.slice,e.fieldPath):void 0,i=r===void 0?void 0:E(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 $e({sliceKey:e,deviceId:t,capName:n,onReading:r}){let i=p(l().trpcClient,t,n);return c(()=>{r(e,i===void 0?{kind:`pending`}:{kind:`value`,slice:i})},[e,i,r]),null}function et(e,t){return[...new Map(T(e).map(e=>[O(e.source,e.cap),e]))].map(([e,n])=>({key:e,read:n,device:t.get(k(n.source))}))}function tt({source:e}){let{t:n}=M(),r=h({projection:`slim`}),[a,c]=o(new Map),l=t((e,t)=>{c(n=>new Map([...n,[e,t]]))},[]),u=et(e,I(r.status===`success`?W(r.data):[])),d=r.status===`success`?u.filter(e=>e.device===void 0).map(e=>k(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($e,{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(nt,{preview:Qe(e,a,Date.now())})]})}function nt({preview:e}){let{t}=M();switch(e.kind){case`value`:return i(`strong`,{children:[`→ `,K(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 rt({path:e,kind:t,required:n,source:r,onSet:c,onClear:l,sourceNames:u}){let{t:d}=M(),[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(b,{size:`sm`,variant:`outline`,onClick:()=>p(`take`),children:d(`compositionEditor.takeFrom`)}),s(b,{size:`sm`,variant:`outline`,"aria-pressed":m!==null,onClick:()=>c(m??{kind:`expression`,expr:`null`,bindings:{}}),children:d(`compositionEditor.formula`)}),r!==void 0&&s(b,{size:`sm`,variant:`ghost`,onClick:l,children:d(`compositionEditor.clear`)})]}),r?.kind===`from`&&s(`span`,{className:`text-[11px]`,children:X(r,u)}),m!==null&&i(a,{children:[s(Ze,{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`?X(t,u):JSON.stringify(t.value)})]},e))}),s(b,{size:`sm`,variant:`ghost`,onClick:()=>p(`add-binding`),children:d(`compositionEditor.addSource`)})]}),f!==`idle`&&s(q,{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=me(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(tt,{source:r})]})}r();function it(e){return e===null||e.kind===`known`?null:e}function at({draft:e,deviceType:t,nativeCaps:n,targetFields:r,dispatch:c}){let{t:l}=M(),u=f({deviceType:t}),d=h({projection:`slim`}),p=new Map([...I(d.status===`success`?W(d.data):[])].map(([e,t])=>[e,t.name])),[m,_]=o(null),v=it(n)??it(r),y=n?.kind===`known`?n.value:new Set,x=new Set(e.features.map(e=>e.cap)),S=u.status===`success`?u.data.caps.filter(e=>!x.has(e.cap)&&!y.has(e.cap)):[],C=[...y].filter(e=>!x.has(e)),w=e=>y.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 v===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:y.has(e.cap)?`default`:`info`,children:y.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)),S.map(e=>i(b,{size:`sm`,variant:`outline`,onClick:()=>c({type:`add-feature`,cap:e.cap}),children:[`+ `,e.cap]},e.cap)),C.map(e=>s(b,{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(b,{size:`sm`,variant:`outline`,onClick:()=>_(e.cap),children:l(`compositionEditor.copyFeature`)})]}),m===e.cap&&s(q,{title:l(`compositionEditor.copyFeature`),targetKind:null,onCancel:()=>_(null),onPick:t=>{c({type:`copy-feature`,cap:e.cap,from:t.ref,sourceCap:t.cap,paths:w(e.cap).map(e=>e.path)}),_(null)}}),w(e.cap).map(t=>s(rt,{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:p},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:v.kind===`unknown`?v.reason:l(`compositionEditor.reading`)})]})}var $=`px-1.5 py-0.5 text-[11px] bg-background border border-border rounded`;function ot({draft:e,targetName:t,dispatch:n}){let{t:r}=M(),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(j).find(t=>t===e.target.value);t!==void 0&&n({type:`set-new-type`,deviceType:t})},children:Object.values(j).map(e=>s(`option`,{value:e,children:v(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(A).find(t=>t===e.target.value)??null}),children:[s(`option`,{value:``,children:r(`customize.identity.noRole`)}),Object.values(A).map(e=>s(`option`,{value:e,children:u(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 st({draft:e,blockId:t,saving:n,onSave:r,onCancel:a}){let{t:l}=M(),u=m(),d=pe(e),f=d.ok?JSON.stringify(d.composition):``,[p,h]=o({key:``,state:{kind:`checking`}});c(()=>{if(!d.ok)return;let e=d.composition,n=setTimeout(()=>{u.mutateAsync({composition:e,...t===null?{}:{blockId:t}}).then(e=>h({key:f,state:e.ok?{kind:`ok`}:{kind:`refused`,problems:e.problems}})).catch(e=>h({key:f,state:{kind:`unknown`,reason:e instanceof Error?e.message:String(e)}}))},500);return()=>clearTimeout(n)},[f,t]);let g=d.ok?p.key===f?p.state:{kind:`checking`}:{kind:`invalid-draft`,problems:d.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`)}),g.kind===`checking`&&s(`p`,{role:`status`,className:`text-[11px] text-foreground-subtle`,children:l(`compositionEditor.verify.checking`)}),g.kind===`ok`&&s(`p`,{className:`text-[11px] text-success`,children:l(`compositionEditor.verify.ok`)}),g.kind===`unknown`&&s(`p`,{role:`alert`,className:`text-[11px] text-warning`,children:l(`compositionEditor.verify.unknown`,{reason:g.reason})}),(g.kind===`invalid-draft`||g.kind===`refused`)&&s(`ul`,{role:`alert`,className:`flex flex-col gap-1 text-[11px] text-danger`,children:g.kind===`invalid-draft`?g.problems.map(e=>s(`li`,{children:e},e)):g.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(b,{variant:`ghost`,onClick:a,children:l(`compositionEditor.cancel`)}),s(b,{disabled:g.kind!==`ok`||n||!d.ok,onClick:()=>d.ok&&r(d.composition),children:l(`compositionEditor.save`)})]})]})}r();function ct({initial:e,blockId:t,deviceType:n,targetName:r=null,nativeCaps:i,targetFields:a,save:c,onCancel:l,showTemplates:u=!1}){let[d,f]=o(e),p=`${d.name}:${d.features.map(e=>e.cap).join(`,`)}:${d.target.kind===`new`?d.target.type:`existing`}`;return s(lt,{seed:d,blockId:t,deviceType:n,targetName:r,nativeCaps:i,targetFields:a,showTemplates:u,onApplyTemplate:e=>{f(ye(e))},save:c,onCancel:l},p)}function lt({seed:t,blockId:n,deviceType:r,targetName:a,nativeCaps:c,targetFields:l,showTemplates:u,onApplyTemplate:d,save:f,onCancel:p}){let{t:m}=M(),[h,g]=e(fe,t),[_,v]=o(!1),[y,x]=o(null),S=h.target.kind===`new`?h.target.type:r,C=async e=>{v(!0);let t=await f(e,h.name);v(!1),x(t.kind===`refused`?t.reason:null)};return i(`div`,{className:`flex flex-col gap-4`,children:[u&&h.target.kind===`new`&&i(`div`,{className:`flex flex-wrap gap-2`,"data-testid":`composition-templates`,children:[s(`span`,{className:`text-[11px] text-foreground-subtle self-center`,children:m(`compositionEditor.templates.label`)}),he.map(e=>s(b,{size:`sm`,variant:`outline`,onClick:()=>d(e),children:m(`compositionEditor.templates.${e}`)},e))]}),s(ot,{draft:h,targetName:a,dispatch:g}),s(at,{draft:h,deviceType:S,nativeCaps:c,targetFields:l,dispatch:g}),s(st,{draft:h,blockId:n,saving:_,onSave:e=>void C(e),onCancel:p}),y!==null&&s(`p`,{role:`alert`,className:`text-[11px] text-danger break-words`,children:y})]})}export{Ce as C,le as D,ue as E,Se as S,N as T,U as _,Y as a,Ee as b,G as c,ke as d,je as f,Ne as g,Ie as h,qe as i,De as l,Fe as m,Qe as n,J as o,Pe as p,Ze as r,K as s,ct as t,H as u,Me as v,be as w,z as x,we as y};
|