@camstack/addon-admin-ui 1.2.530 → 1.2.531
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/CHANGELOG.md +6 -0
- package/dist/assets/{AddonAssetIcon-B1rn0DLw.js → AddonAssetIcon-Cp5zLEvD.js} +1 -1
- package/dist/assets/Addons-BES3OMn0.js +5 -0
- package/dist/assets/{AdminPage-DmkuRREx.js → AdminPage-D2S65e6Q.js} +1 -1
- package/dist/assets/{AdminSectionedPage-Dv8ahC-U.js → AdminSectionedPage-CKX5JkdQ.js} +1 -1
- package/dist/assets/{AiProfiles-BJrqkjtX.js → AiProfiles-BIQHK5vc.js} +1 -1
- package/dist/assets/{Build-DTcg9gkb.js → Build-DjlUwtu8.js} +3 -3
- package/dist/assets/{Calendars-x_EpS-cd.js → Calendars-Brkz06fF.js} +1 -1
- package/dist/assets/{Cluster-aj2_8TZC.js → Cluster-BtvDTlfe.js} +1 -1
- package/dist/assets/{ComposedDeviceEditDialog-DNGwDK80.js → ComposedDeviceEditDialog-UYQVMVk7.js} +1 -1
- package/dist/assets/{CompositionBlockEditor-O3eDPOLD.js → CompositionBlockEditor-CYd3iEcq.js} +2 -2
- package/dist/assets/{CompositionEditorPage-D09wEj7N.js → CompositionEditorPage-GtC8DYG6.js} +1 -1
- package/dist/assets/{Data-D4Sz8Rl9.js → Data-39SL2gbC.js} +1 -1
- package/dist/assets/{DeviceDetail-BE-C2aGY.js → DeviceDetail-C9eCLTmW.js} +2 -2
- package/dist/assets/{DeviceDoActionFields-D1rhgn3I.js → DeviceDoActionFields-Ca2TmJDn.js} +1 -1
- package/dist/assets/{Devices-BBsDc0QJ.js → Devices-DwFifk2g.js} +1 -1
- package/dist/assets/{EmbedPlayerPage-D0lVyXps.js → EmbedPlayerPage-D91A6i3P.js} +1 -1
- package/dist/assets/{FormBuilder-BvQZWKCS.js → FormBuilder-C01MTb_b.js} +1 -1
- package/dist/assets/{History-TMZn0v_I.js → History-OBh3harZ.js} +1 -1
- package/dist/assets/{Identity-DNIHuEKY.js → Identity-Bx-Ja-MP.js} +1 -1
- package/dist/assets/IntegrationDetail-TLO47L5-.js +1 -0
- package/dist/assets/{IntegrationHub-DviGnYgu.js → IntegrationHub-C--hpDK-.js} +1 -1
- package/dist/assets/{Integrations-9bupF3uw.js → Integrations-Cm9BV3o8.js} +1 -1
- package/dist/assets/{Integrations-B7okjAJ8.js → Integrations-GHsM_7uc.js} +1 -1
- package/dist/assets/{Library-BHn4Iifg.js → Library-D2EugVqE.js} +1 -1
- package/dist/assets/{Locations-BVaRTbq0.js → Locations-Cb8RSNkt.js} +1 -1
- package/dist/assets/{Logs-DI7IZGug.js → Logs-Gsq1EPYC.js} +1 -1
- package/dist/assets/{MaskShapeCanvas-HJuLPIJP.js → MaskShapeCanvas-4rUt1muq.js} +1 -1
- package/dist/assets/{MotionZonesSettings-COMPKhfx.js → MotionZonesSettings-D8frKIxI.js} +1 -1
- package/dist/assets/{MyAccess-YiGVb3gF.js → MyAccess-WsIYje4M.js} +1 -1
- package/dist/assets/{Network-ZYEqAiF5.js → Network-CjuJ-PkF.js} +1 -1
- package/dist/assets/{NodeAddonsSettingsPanel-Chb7RIE6.js → NodeAddonsSettingsPanel-DYEAw_0K.js} +1 -1
- package/dist/assets/{Notifications-DrVDMEuK.js → Notifications-DcpvQo5d.js} +1 -1
- package/dist/assets/Pipeline-CoNbGWDs.js +1 -0
- package/dist/assets/{PrivacyMaskSettings-C88JqmdE.js → PrivacyMaskSettings-LVUmj3W4.js} +1 -1
- package/dist/assets/Recordings-DeZnE3O5.js +1 -0
- package/dist/assets/RemoteGrid-CjSx3Aah.js +1 -0
- package/dist/assets/{ScanNetworkModal-Cq9BlXXk.js → ScanNetworkModal-CvlBpDgq.js} +1 -1
- package/dist/assets/{SceneMonitorEditor-mE7W6emU.js → SceneMonitorEditor-CUgqZlLF.js} +1 -1
- package/dist/assets/SessionsList-CPlqGJSE.js +2 -0
- package/dist/assets/{Showroom-Crq5JUKV.js → Showroom-CoWYMVAI.js} +1 -1
- package/dist/assets/{System-CfurcyNZ.js → System-CqV_BBXI.js} +1 -1
- package/dist/assets/Templates-CMETwZM5.js +1 -0
- package/dist/assets/{Terminal-UyKanKPS.js → Terminal-BiuPjGjh.js} +5 -5
- package/dist/assets/{Trans-Bsz5Pghy.js → Trans-DlVN2FAm.js} +1 -1
- package/dist/assets/{Viewer-BTxcZ-BR.js → Viewer-VFeL3oiK.js} +1 -1
- package/dist/assets/{_virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-CmowmspB.js → _virtual_mf-localSharedImportMap___mfe_internal__admin_ui_host-BzI5prAS.js} +1 -1
- package/dist/assets/{addon-icons-context-DZZCjo9x.js → addon-icons-context-D_SbgBlL.js} +1 -1
- package/dist/assets/{archive-Bu9T4BL0.js → archive-BdOuJA6D.js} +1 -1
- package/dist/assets/{assignment-candidates-DWivr3bV.js → assignment-candidates-FrlfxULJ.js} +1 -1
- package/dist/assets/{authed-media-yW7W_8pm.js → authed-media-Cdlj2yED.js} +1 -1
- package/dist/assets/{bell-off-E0Abr7jJ.js → bell-off-DE260sCQ.js} +1 -1
- package/dist/assets/{board-model-CCD7fB3T.js → board-model-C8M8reLO.js} +1 -1
- package/dist/assets/{boxes-BkzsIUkw.js → boxes-ncBMqqF7.js} +1 -1
- package/dist/assets/circle-slash-bDMoAvuJ.js +1 -0
- package/dist/assets/{client-BvflqtP1.js → client-3nhKn2xf.js} +1 -1
- package/dist/assets/{cloud-upload-BIjzjy_K.js → cloud-upload-xWhkZB2K.js} +1 -1
- package/dist/assets/crop-BZhdHvRT.js +1 -0
- package/dist/assets/{device-integration-icon-BpHHi90B.js → device-integration-icon-DXsx1ovH.js} +1 -1
- package/dist/assets/device-picker-model-yyadLjpT.js +1 -0
- package/dist/assets/{dist-DoqhrZoo.js → dist-CxGqD88j.js} +1 -1
- package/dist/assets/{dist-Gm_hHBN2.js → dist-dKXZSA43.js} +1 -1
- package/dist/assets/{file-up-Cyg6A2qN.js → file-up-DSkaqgrs.js} +1 -1
- package/dist/assets/{format-ChSVChsY.js → format-5kuRrylR.js} +1 -1
- package/dist/assets/{grip-vertical-CLVyc1HC.js → grip-vertical-oBh5I9hk.js} +1 -1
- package/dist/assets/{hard-drive-download-Cd122TYb.js → hard-drive-download-BJ9Vaf4q.js} +1 -1
- package/dist/assets/{hostInit-DR1ykbVx.js → hostInit-ClzsOBVS.js} +1 -1
- package/dist/assets/{i18n-Bg2ooh3q.js → i18n-BTbD-8vc.js} +1 -1
- package/dist/assets/icons-B7ZVbtoQ.js +1 -0
- package/dist/assets/index-BGL4RiB2.css +2 -0
- package/dist/assets/{index-DGvsu0ui.js → index-BoU7NTPo.js} +3 -3
- package/dist/assets/{key-D_zqd1r-.js → key-5z5CPQqC.js} +1 -1
- package/dist/assets/{key-round-pNw827HU.js → key-round-DE61GWtp.js} +1 -1
- package/dist/assets/{layers-CFNXRt4j.js → layers-DUXoEBYs.js} +1 -1
- package/dist/assets/{linked-devices-model-D9m6pafu.js → linked-devices-model-D76tAwE6.js} +1 -1
- package/dist/assets/{list-ordered-Dy6tCUD8.js → list-ordered-DSox6EY0.js} +1 -1
- package/dist/assets/{location-owned-usage-DasgH3RR.js → location-owned-usage-BSaNp20e.js} +1 -1
- package/dist/assets/{memory-stick-Bt2KoB-0.js → memory-stick-f2B4Aw1x.js} +1 -1
- package/dist/assets/{message-square-plus-rkd_X0vs.js → message-square-plus-DUwM59NW.js} +1 -1
- package/dist/assets/{mf-entry-bootstrap-0-3390b09e.js → mf-entry-bootstrap-0-167f91f2.js} +2 -2
- package/dist/assets/{mic-off-DWb36TX2.js → mic-off-DpDwbFnF.js} +1 -1
- package/dist/assets/{monitor-off-B2GWMMt_.js → monitor-off-Cevi7ihB.js} +1 -1
- package/dist/assets/{monitor-smartphone-DJzvbVtx.js → monitor-smartphone-DPzM2qXf.js} +1 -1
- package/dist/assets/mount-yyadLjpT.js +1 -0
- package/dist/assets/{notification-schedule-field-B7FdiF_t.js → notification-schedule-field-B_Y6t98m.js} +1 -1
- package/dist/assets/{player-overlays-DpZIxQHp.js → player-overlays-D0HsTHUG.js} +1 -1
- package/dist/assets/{recycle-BWLoavmg.js → recycle-CK0-gO9v.js} +1 -1
- package/dist/assets/remoteEntry-CURqqH0d.js +1 -0
- package/dist/assets/{ruler-C1SbVRl3.js → ruler-C_9y2OuS.js} +1 -1
- package/dist/assets/{scan-eye-Bv4PGTFl.js → scan-eye-Cqs3dsDB.js} +1 -1
- package/dist/assets/{scissors-BsEkbrx_.js → scissors-BomV8klv.js} +1 -1
- package/dist/assets/{search-x-DE4DxdsF.js → search-x-Ck_vydrn.js} +1 -1
- package/dist/assets/{send-Dd0BBamd.js → send-B8Po_JT_.js} +1 -1
- package/dist/assets/{settings-2-z3X6U2eo.js → settings-2-CyAo_nYh.js} +1 -1
- package/dist/assets/shapes-CuqJ7CA_.js +1 -0
- package/dist/assets/{sigma-CxBVWJ85.js → sigma-YkVVm5dQ.js} +1 -1
- package/dist/assets/{speaker-Dy79a571.js → speaker-iL5Ep2q1.js} +1 -1
- package/dist/assets/{src-KDhMZ5Ob.js → src-D1j-98hX.js} +14 -14
- package/dist/assets/{sso-popup-BjTl8T6g.js → sso-popup-aQr_3YWW.js} +1 -1
- package/dist/assets/{step-inspector-model-D6NC9QoX.js → step-inspector-model-gcGmLTWD.js} +1 -1
- package/dist/assets/{table-2-IUuOvuT8.js → table-2-Bx38akVK.js} +1 -1
- package/dist/assets/{timer-reset-D1H0hoMf.js → timer-reset-Z1XvH6K-.js} +1 -1
- package/dist/assets/{unlink-DTu1e00O.js → unlink-Dx9zRmL9.js} +1 -1
- package/dist/assets/{usb-CFK8z-TS.js → usb-_-9JyMyy.js} +1 -1
- package/dist/assets/{use-device-bound-caps-DS4FtJtN.js → use-device-bound-caps-BR0aNe6v.js} +1 -1
- package/dist/assets/{use-scenes-feed-CE-KFGxN.js → use-scenes-feed-CNxJKI3Y.js} +1 -1
- package/dist/assets/{use-stationary-objects-CFLRkxjx.js → use-stationary-objects-CFFufETF.js} +1 -1
- package/dist/assets/useEventInvalidation-yyadLjpT.js +1 -0
- package/dist/assets/{useNodeUrlSelection-DytighTL.js → useNodeUrlSelection-zNi606-l.js} +1 -1
- package/dist/assets/user-round-BnFLdVEf.js +1 -0
- package/dist/assets/{user-x-KWsBR0tG.js → user-x-DCKuWnFc.js} +1 -1
- package/dist/assets/{variable-BG_qKWYf.js → variable-pzTTvzbo.js} +1 -1
- package/dist/assets/{video-D0guHpd1.js → video-Dn2Lqozt.js} +1 -1
- package/dist/assets/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-FCSZ5q7m.js → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__admin_ui_host__remoteEntry-_hash_-o917suSb.js} +2 -2
- package/dist/index.html +14 -14
- package/dist/server/addon.js +9 -2
- package/package.json +1 -1
- package/dist/assets/Addons-DRU_qk60.js +0 -5
- package/dist/assets/IntegrationDetail-CYhU0hEL.js +0 -1
- package/dist/assets/Pipeline-BT9k34b_.js +0 -1
- package/dist/assets/Recordings-Dl-l1Vzi.js +0 -1
- package/dist/assets/RemoteGrid-CF92aN64.js +0 -1
- package/dist/assets/SessionsList-84zwfhuD.js +0 -2
- package/dist/assets/Templates-D0V7IdcS.js +0 -1
- package/dist/assets/circle-slash-pdaivo-U.js +0 -1
- package/dist/assets/crop-CZJDrMcX.js +0 -1
- package/dist/assets/device-picker-model-2dkiqOI6.js +0 -1
- package/dist/assets/icons-BSJCF6qM.js +0 -1
- package/dist/assets/index-CyqhCHax.css +0 -2
- package/dist/assets/mount-2dkiqOI6.js +0 -1
- package/dist/assets/remoteEntry-CD4F7fE2.js +0 -1
- package/dist/assets/shapes-D-IaC6en.js +0 -1
- package/dist/assets/useEventInvalidation-2dkiqOI6.js +0 -1
- package/dist/assets/user-round-BSVSJsjB.js +0 -1
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{C as e,J as t,K as n,R as r,S as i,V as a,Y as o,et as s}from"./_virtual_mf___mfe_internal__admin_ui_host__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-CEyXHAdg.js";import{D as c,Gr as l,Ht as u,ct as d,dt as f,gt as p,ha as m,mn as h,pn as g,pr as _,st as v,xi as y}from"./player-overlays-DpZIxQHp.js";import{a as b,i as x,s as S}from"./video-D0guHpd1.js";import{t as C}from"./key-round-pNw827HU.js";import{An as w,Bd as T,Cr as E,Dn as D,Er as O,Gn as ee,Io as k,Jn as A,Pd as j,Pr as M,Sd as N,Sr as P,Tr as F,Zn as I,_t as L,bn as R,br as z,fi as B,ft as V,ii as H,jt as U,kn as W,pi as G,pt as te,qd as K,qn as ne,uf as q,wr as J,xn as re,xr as ie,yn as ae,yt as oe,zd as se}from"./src-KDhMZ5Ob.js";import{t as Y}from"./i18n-Bg2ooh3q.js";import{t as ce}from"./Trans-Bsz5Pghy.js";import{t as X}from"./useTranslation-BJr-n0es.js";import{P as le,n as Z,t as ue}from"./index-DGvsu0ui.js";s();function de({id:t,title:n,icon:r,description:a,actions:o,tone:s=`default`,notice:l=null,onDismissNotice:u,children:d}){return i(D,{headingId:`access-${t}`,title:n,icon:r,actions:o,testId:`access-${t}`,children:e(`div`,{className:`${c} space-y-3`,children:[i(`div`,{className:K(`text-[11px] leading-relaxed`,s===`danger`?`rounded-md border border-danger/30 bg-danger/5 px-3 py-2 text-foreground`:`text-foreground-subtle`),children:a}),l!==null&&i(pe,{notice:l,onDismiss:u}),d]})})}var fe={success:{icon:y,line:`border-success/30 text-foreground`,mark:`text-success`},danger:{icon:x,line:`border-danger/40 text-danger`,mark:`text-danger`}};function pe({notice:t,onDismiss:n}){let{t:r}=X(),a=fe[t.tone],o=a.icon;return e(`div`,{role:t.tone===`danger`?`alert`:`status`,className:K(`flex items-start gap-2 rounded-md border bg-surface px-3 py-2 text-[11px]`,a.line),children:[i(o,{className:K(`mt-0.5 h-3.5 w-3.5 shrink-0`,a.mark),"aria-hidden":!0}),i(`span`,{className:`min-w-0 flex-1`,children:t.message}),n!==void 0&&i(T,{type:`button`,variant:`ghost`,size:`sm`,icon:p,"aria-label":r(`access.accessSection.dismiss`,`Dismiss`),onClick:n,className:`-my-1 h-5 w-5`})]})}function me(){let{data:e}=N();return n(()=>{let t=new Map;for(let n of e??[])t.set(n.id,n.username);return t},[e])}function he(e,t=null){return e===null?t:{tone:`danger`,message:e}}var ge={active:`access.credentialColumns.statusActive`,expired:`access.credentialColumns.statusExpired`,revoked:`access.credentialColumns.statusRevoked`,current:`access.credentialColumns.statusCurrent`};function _e(e){return Y.t(ge[e])}var ve={active:`success`,expired:`warning`,revoked:`default`,current:`info`},ye={current:0,active:1,expired:2,revoked:3};function be(e,t){if(e===null)return t;let n=new Date(e);return Number.isNaN(n.getTime())?`—`:n.toLocaleString()}function xe({status:e}){return i(B,{variant:ve[e],className:`text-[10px]`,children:_e(e)})}function Se({row:t,action:n}){if(!n.isAvailable(t))return null;let r=n.icon,a=n.busyId===t.id;return e(H,{type:`button`,variant:`ghost`,size:`sm`,onClick:()=>n.onRun(t),disabled:n.disabled,"aria-label":Y.t(`access.credentialColumns.actionOn`,{action:n.label,name:t.name}),className:n.tone===`neutral`?void 0:`text-danger hover:bg-danger/10`,children:[a?i(_,{className:`h-3 w-3 animate-spin`,"aria-hidden":!0}):i(r,{className:`h-3 w-3`,"aria-hidden":!0}),n.label]})}function Ce(t){return[{key:`name`,header:Y.t(`access.credentialColumns.name`,`Name`),sortValue:e=>e.name.toLowerCase(),render:t=>e(`div`,{className:`min-w-0 max-w-[18rem]`,children:[i(`div`,{className:`truncate font-medium text-foreground`,title:t.name,children:t.name}),t.detail!==null&&i(`div`,{className:`truncate font-mono text-[10px] text-foreground-subtle`,title:t.detail,children:t.detail})]})},t.hideOwner?null:{key:`owner`,header:Y.t(`access.credentialColumns.owner`,`Owner`),sortValue:e=>e.ownerName.toLowerCase(),render:e=>e.ownerName},{key:`kind`,header:Y.t(`access.credentialColumns.kindScope`,`Kind / scope`),sortValue:e=>e.kind.toLowerCase(),nowrap:!1,render:t=>e(`div`,{className:`min-w-[8rem] max-w-[16rem]`,children:[i(`div`,{className:`text-foreground`,children:t.kind}),t.scope!==null&&i(`div`,{className:`line-clamp-2 text-[10px] text-foreground-subtle`,title:t.scope,children:t.scope})]})},{key:`status`,header:Y.t(`access.credentialColumns.status`,`Status`),sortValue:e=>ye[e.status],render:e=>i(xe,{status:e.status})},{key:`created`,header:Y.t(`access.credentialColumns.created`,`Created`),sortValue:e=>e.createdAt,render:e=>i(`span`,{className:`text-foreground-subtle`,children:be(e.createdAt,`—`)})},{key:`lastUsed`,header:Y.t(`access.credentialColumns.lastUsed`,`Last used`),sortValue:e=>e.lastUsedAt,render:e=>i(`span`,{className:`text-foreground-subtle`,children:be(e.lastUsedAt,Y.t(`access.credentialColumns.never`))})},{key:`expires`,header:Y.t(`access.credentialColumns.expires`,`Expires`),sortValue:e=>e.expiresAt,render:e=>i(`span`,{className:`text-foreground-subtle`,children:be(e.expiresAt,t.expiresNone)})},t.action===null?null:{key:`actions`,header:``,align:`right`,notSortableReason:Y.t(`access.credentialColumns.actionsHeader`),render:e=>i(`div`,{className:`flex items-center justify-end gap-1`,children:[...t.extraActions??[],t.action].map(t=>t===null?null:i(Se,{row:e,action:t},t.label))})}].filter(e=>e!==null)}s();var we=6,Te={"current-session":`access.bulk.skipCurrentSession`,"not-active":`access.bulk.skipNotActive`};function Ee(e){let t=Te[e];return t===void 0?e:Y.t(t)}function De(e,t){return Y.t(t.key,{count:e})}function Q(e,t){return Y.t(`access.bulk.countOf`,{count:e,noun:De(e,t)})}function Oe(e){let t=new Map;for(let n of e)t.set(n.status,(t.get(n.status)??0)+1);return[...t.entries()].map(([e,t])=>Y.t(`access.bulk.statusCount`,{count:t,status:_e(e).toLowerCase()})).join(`, `)}function ke(e,t){let n=e.slice(0,we).map(e=>`• ${e.name} — ${e.ownerName}`),r=e.length>we?[Y.t(`access.bulk.previewMore`,{count:e.length-we})]:[];return[Y.t(`access.bulk.previewIntro`,{what:Q(e.length,t),breakdown:Oe(e)}),``,...n,...r].join(`
|
|
2
|
-
`)}async function Ae(e,t,n){let r=String(t.length),i=await e({title:Y.t(`access.bulk.confirmTitle`,{what:Q(t.length,n)}),message:ke(t,n),label:Y.t(`access.bulk.confirmLabel`,{expected:r}),placeholder:r,confirmLabel:Y.t(`access.bulk.confirmButton`,{expected:r}),variant:`danger`,validate:e=>e.trim()===r?null:Y.t(`access.bulk.confirmMismatch`,{expected:r,noun:De(2,n)})});return i!==null&&i.trim()===r}function je(e,t){let n=d(),r=q.auth.revokeCredentials.useMutation(),[i,a]=o(null);return{run:async i=>{if(i.length===0||!await Ae(n,i,e))return!1;a(null);try{let t=await r.mutateAsync({ids:i.map(e=>e.id),confirmCount:i.length}),n=t.skipped.map(e=>Ee(e.reason));return a({tone:`success`,message:n.length>0?Y.t(`access.bulk.revokedSkipped`,{what:Q(t.revoked.length,e),count:n.length,reasons:[...new Set(n)].join(`, `)}):Y.t(`access.bulk.revoked`,{what:Q(t.revoked.length,e)})}),!0}catch(e){return a({tone:`danger`,message:Y.t(`access.bulk.revokeFailed`,{error:e instanceof Error?e.message:Y.t(`access.bulk.requestFailed`)})}),!1}finally{t()}},busy:r.isPending,outcome:i,dismiss:()=>a(null)}}function Me(e,t,n){let r=d(),[i,a]=o(!1),[s,c]=o(null);return{run:async i=>{if(i.length===0||!await Ae(r,i,e))return!1;c(null),a(!0);let o=[],s=0;for(let e of i)try{await t(e.id),s+=1}catch(t){o.push(`${e.name}: ${t instanceof Error?t.message:Y.t(`access.bulk.requestFailed`)}`)}return a(!1),n(),o.length===0?(c({tone:`success`,message:Y.t(`access.bulk.revoked`,{what:Q(s,e)})}),!0):(c({tone:`danger`,message:Y.t(o.length>3?`access.bulk.eachPartialMore`:`access.bulk.eachPartial`,{what:Q(s,e),count:o.length,details:o.slice(0,3).join(`; `)})}),s>0)},busy:i,outcome:s,dismiss:()=>c(null)}}s();var Ne={searchText:e=>[e.name,e.detail??``,e.ownerName,e.kind,e.scope??``],facetGroups:[{id:`status`,value:e=>e.status},{id:`owner`,value:e=>e.ownerName},{id:`kind`,value:e=>e.kind}]},Pe={status:`access.credentialTable.groupStatus`,owner:`access.credentialTable.groupOwner`,kind:`access.credentialTable.groupKind`},Fe=e=>e.status!==`current`,Ie=[`active`,`current`];function Le({rows:t,label:r,isLoading:a,loadError:s,emptyText:c,hideOwner:l=!1,expiresNone:u,action:d,extraActions:f,bulk:p,defaultStatus:m=Ie}){let{t:h}=X(),[g]=o(()=>m.length===0?{search:``,facets:[]}:{search:``,facets:[],groups:{status:[...m]}}),v=ae(t,Ne,g),[y,b]=o(()=>new Set),x=u??h(`access.credentialColumns.never`),S=n(()=>Ce({hideOwner:l,expiresNone:x,action:d??null,...f===void 0?{}:{extraActions:f}}),[l,x,d,f,h]),C=n(()=>p===void 0?()=>!1:e=>Fe(e)&&p.isSelectable(e),[p]),T=n(()=>v.rows.filter(e=>y.has(e.id)&&C(e)),[v.rows,y,C]);return a?e(`div`,{className:`flex items-center gap-2 py-4 text-xs text-foreground-subtle`,children:[i(_,{className:`h-3.5 w-3.5 animate-spin`,"aria-hidden":!0}),h(`access.credentialTable.loading`,{label:r})]}):s===null?e(`div`,{className:`space-y-3`,children:[i(R,{state:v.state,facets:v.facets,groups:v.groups.filter(e=>!(l&&e.id===`owner`)).map(e=>({...e,label:Pe[e.id]===void 0?e.id:h(Pe[e.id]),...e.id===`status`?{facetLabel:e=>_e(e)}:{}})),labels:{searchPlaceholder:h(`access.credentialTable.searchPlaceholder`,{label:r}),searchLabel:h(`access.credentialTable.searchLabel`,{label:r}),facetsLabel:h(`access.credentialTable.facetsLabel`,{label:r}),clearLabel:h(`access.credentialTable.clearFilters`)},onSearch:v.setSearch,onToggleFacet:v.toggleFacet,onToggleGroupFacet:v.toggleGroupFacet,onClear:v.clear}),p!==void 0&&i(Re,{bulk:p,shown:v.rows.filter(C),targets:T,onSelect:b}),i(W,{columns:S,rows:v.rows,rowKey:e=>e.id,minWidthPx:l?760:860,maxBodyHeight:w,defaultSort:{columnKey:`created`,dir:`desc`},pageSize:25,paginationLabels:{navLabel:h(`access.credentialTable.pagesLabel`,{label:r}),previous:h(`access.credentialTable.previousPage`),next:h(`access.credentialTable.nextPage`),range:(e,t,n)=>h(`access.credentialTable.range`,{from:e,to:t,total:n})},emptyMessage:v.active?h(`access.credentialTable.noMatchTheFilters`,`No {{label}} match the filters.`,{label:r}):c,rowClassName:e=>e.status===`revoked`||e.status===`expired`?`opacity-70`:void 0,...p===void 0?{}:{selection:{selected:y,onChange:b,isSelectable:C,rowLabel:e=>h(`access.credentialTable.rowLabel`,{name:e.name,owner:e.ownerName}),pageLabel:h(`access.credentialTable.pageLabel`,{noun:De(1,p.noun)})}}})]}):i(M,{title:h(`access.credentialTable.couldNotLoad`,`Could not load {{label}}`,{label:r}),message:s})}function Re({bulk:t,shown:n,targets:r,onSelect:a}){let{t:o}=X(),{revoke:s,noun:c}=t,l=(t.quickSelect??[]).map(e=>({...e,rows:n.filter(e.match)})).filter(e=>e.rows.length>0),d=async()=>{await s.run(r)&&a(new Set)};return e(`div`,{className:`flex flex-wrap items-center gap-2`,"data-testid":`bulk-bar`,children:[n.length>0&&i(H,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>a(new Set(n.map(e=>e.id))),children:o(`access.credentialTable.selectAllShown`,{count:n.length})}),l.map(t=>e(H,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>a(new Set(t.rows.map(e=>e.id))),children:[t.label,` (`,String(t.rows.length),`)`]},t.label)),r.length>0&&e(`div`,{className:`ml-auto flex flex-wrap items-center gap-2`,children:[i(`span`,{className:`text-[11px] tabular-nums text-foreground`,"aria-live":`polite`,children:o(`access.credentialTable.selectedLabel`,{what:Q(r.length,c)})}),e(H,{type:`button`,variant:`ghost`,size:`sm`,onClick:()=>a(new Set),children:[i(p,{className:`h-3 w-3`,"aria-hidden":!0}),o(`access.credentialTable.clearSelection`,`Clear selection`)]}),e(H,{type:`button`,variant:`danger`,size:`sm`,disabled:s.busy,onClick:()=>void d(),children:[s.busy?i(_,{className:`h-3 w-3 animate-spin`,"aria-hidden":!0}):i(u,{className:`h-3 w-3`,"aria-hidden":!0}),o(`access.credentialTable.revoke`,{what:Q(r.length,c)})]})]})]})}var ze=(e,t)=>t===null?`—`:e.get(t)??t;function Be(e,t){return e!=null&&e<=t?`expired`:`active`}function Ve(e,t,n){return{id:e.id,name:n.client(e.client),detail:e.ip,ownerId:e.userId,ownerName:ze(t,e.userId),kind:n.method(e.method),scope:null,status:e.current?`current`:`active`,createdAt:e.createdAt,lastUsedAt:e.lastUsedAt,expiresAt:e.expiresAt}}function He(e,t){return{id:e.id,name:e.integrationId,detail:null,ownerId:e.userId,ownerName:e.username,kind:e.integrationId,scope:t,status:e.revokedAt===null?`active`:`revoked`,createdAt:e.createdAt,lastUsedAt:e.lastUsedAt,expiresAt:null}}var Ue=`All permissions`,We=`View link`,Ge=`Scoped`,Ke={"grid-view":`Grid`,"events-view":`Events`};function qe(e,t){return e.map(e=>t.get(e)??`#${String(e)}`).join(`, `)}function Je(e){return e!==`*`&&e.type===`share-view`&&`grant`in e}function Ye(e,t,n){return e===`*`?Ue:Je(e)?`${`${Ke[e.grant.kind]} view${e.grant.talk===!0?` + talk`:``}`}: ${qe(e.grant.deviceIds,t)}`:n(e)}function Xe(e){return e.includes(`*`)?Ue:e.some(Je)?We:Ge}function Ze(e,t,n,r){return{id:e.id,name:e.label,detail:null,ownerId:e.subjectId,ownerName:ze(t,e.subjectId),kind:Xe(e.scopes),scope:n,status:e.revokedAt===null?Be(e.expiresAt,r):`revoked`,createdAt:e.createdAt,lastUsedAt:e.lastUsedAt,expiresAt:e.expiresAt}}function Qe(e){return`${e.provider}\u0000${e.subject}`}function $e(e,t){return{id:Qe(e),name:e.label??e.subject,detail:e.issuer,ownerId:e.userId,ownerName:ze(t,e.userId),kind:e.provider,scope:null,status:`active`,createdAt:e.linkedAt,lastUsedAt:null,expiresAt:null}}var et=40,tt=[{test:/Electron\//,name:`CamStack desktop`},{test:/Edg(e|A|iOS)?\//,name:`Edge`},{test:/OPR\/|Opera/,name:`Opera`},{test:/Firefox\/|FxiOS\//,name:`Firefox`},{test:/Chrome\/|CriOS\//,name:`Chrome`},{test:/Version\/[\d.]+.*Safari\//,name:`Safari`}],nt=[{test:/iPhone/,name:`iPhone`},{test:/iPad/,name:`iPad`},{test:/Android/,name:`Android`},{test:/Mac OS X|Macintosh/,name:`macOS`},{test:/Windows/,name:`Windows`},{test:/CrOS/,name:`ChromeOS`},{test:/Linux/,name:`Linux`}],rt=[{test:/CFNetwork\/.*Darwin\//,name:`CamStack app on iOS`},{test:/^okhttp\//i,name:`CamStack app on Android`},{test:/^(node|undici)\b/i,name:`Script (Node.js)`},{test:/^curl\//i,name:`curl`}];function it(e,t){return e.find(e=>e.test.test(t))?.name??null}function at(e){return e.length<=et?e:`${e.slice(0,et)}…`}function ot(e){if(e===null||e.trim().length===0)return{label:Y.t(`helpers.sessionClient.unknownDevice`),raw:null};let t=e.trim(),n=it(rt,t);if(n!==null)return{label:n,raw:t};let r=it(tt,t),i=it(nt,t);return r!==null&&i!==null?{label:Y.t(`helpers.sessionClient.browserOnSystem`,{browser:r,system:i}),raw:t}:r===null?{label:at(t),raw:t}:{label:r,raw:t}}var st={password:`helpers.sessionClient.method.password`,passkey:`helpers.sessionClient.method.passkey`,sso:`helpers.sessionClient.method.sso`,handoff:`helpers.sessionClient.method.handoff`,exchange:`helpers.sessionClient.method.exchange`};function ct(e){let t=st[e];return t===void 0?e:Y.t(t)}function lt(e){if(e==null)return`—`;let t=new Date(e);return Number.isNaN(t.getTime())?`—`:t.toLocaleString()}s();function ut(e,t){return e instanceof Error&&e.message.length>0?e.message:t}function dt(n){let{t:a}=X(),s=f(),[c,l]=o(!1),[u,d]=o(``),[p,m]=o(null),[h,g]=o(null),v=t(null),y=r(e=>{v.current?.(e),v.current=null,l(!1),d(``),m(null),g(null)},[]),b=r(()=>new Promise(e=>{v.current?.(null),v.current=e,g(null),l(!0)}),[]),x=async()=>{m(`password`),g(null);try{let{reauthToken:e}=await s.reauthenticate({password:u});y(e)}catch(e){g(ut(e,`Password is incorrect`)),m(null)}},S=async()=>{m(`passkey`),g(null);try{let{optionsJSON:e}=await s.reauthBeginPasskey();if(!ue(e))throw Error(`passkey authentication options missing challenge`);let t=await Z({optionsJSON:e}),{reauthToken:n}=await s.reauthenticate({passkeyResponse:Object.fromEntries(Object.entries(t))});y(n)}catch(e){g(ut(e,`Passkey verification failed`)),m(null)}};return{requestProof:b,dialog:i(z,{open:c,onOpenChange:e=>!e&&y(null),children:e(P,{children:[e(F,{children:[i(O,{children:a(`auth.reauthDialog.confirmItSYou`,`Confirm it’s you`)}),i(E,{children:a(`auth.reauthDialog.needsPassword`,{action:n})})]}),e(`form`,{className:`space-y-3`,onSubmit:e=>{e.preventDefault(),u.length>0&&p===null&&x()},children:[i(se,{type:`password`,autoComplete:`current-password`,placeholder:a(`auth.reauthDialog.currentPassword`,`Current password`),value:u,onChange:e=>d(e.target.value),"aria-label":a(`auth.reauthDialog.currentPassword`,`Current password`)}),h!==null&&i(`p`,{role:`alert`,className:`text-xs text-danger`,children:h}),e(J,{className:`flex flex-wrap gap-2`,children:[e(H,{type:`button`,variant:`outline`,disabled:p!==null,onClick:()=>void S(),children:[p===`passkey`?i(_,{className:`h-4 w-4 animate-spin`}):i(C,{className:`h-4 w-4`}),a(`auth.reauthDialog.useAPasskey`,`Use a passkey`)]}),e(H,{type:`submit`,disabled:u.length===0||p!==null,children:[p===`password`&&i(_,{className:`h-4 w-4 animate-spin`}),a(`common.confirm`,`Confirm`)]})]})]})]})})}}function ft({token:t,label:n,onClose:r}){let{t:a}=X();return i(z,{open:!0,onOpenChange:e=>!e&&r(),children:e(P,{width:`md`,scroll:`body`,children:[i(F,{children:i(O,{children:a(`auth.tokenModals.token`,`Token: {{label}}`,{label:n})})}),e(ie,{className:`space-y-3`,children:[i(`div`,{className:`rounded-md border border-warning/30 bg-warning/10 px-3 py-2 text-xs text-warning`,children:a(`auth.tokenModals.copyThisTokenNowOnce`,`Copy this token now. Once you close this dialog the secret cannot be displayed again.`)}),i(`div`,{className:`select-all break-all rounded-md border border-border bg-background p-2 font-mono text-[11px] text-foreground`,children:t})]}),e(J,{children:[i(re,{value:t,label:a(`common.copy`,`Copy`),srLabel:`token`}),i(H,{type:`button`,variant:`primary`,size:`sm`,onClick:r,children:a(`auth.tokenModals.done`,`Done`)})]})]})})}var pt={token:`newToken`,scoped:`newScoped`,admin:`newAdmin`};s();var mt=80,$=86400,ht=[{value:`1`,seconds:$},{value:`7`,seconds:7*$},{value:`30`,seconds:30*$},{value:`90`,seconds:90*$},{value:`never`,seconds:`never`}],gt={type:`device-multiselect`,key:`cameras`,deviceFilter:{types:[`camera`]},maxItems:64},_t={type:`capability`,target:``,access:[`view`,`create`]};function vt({open:t,users:r,onClose:s,onSubmit:c,submitting:u,formError:d,awaitingProof:f}){let{t:p}=X(),v=m(),{user:y}=le(),b=y?.isAdmin===!0,x=b?null:y?.scopes??[],[S,w]=o(`scopes`),[T,E]=o(y?.id??``),[D,O]=o(``),[k,M]=o([_t]),[N,P]=o([]),[F,L]=o(`grid-view`),[R,z]=o(!1),[B,U]=o(`30`);a(()=>{t||(w(`scopes`),E(y?.id??``),O(``),M([_t]),P([]),L(`grid-view`),z(!1),U(`30`))},[t,y?.id]),a(()=>{S!==`view-link`&&B===`never`&&U(`30`)},[S,B]);let W=n(()=>ht.filter(e=>e.seconds!==`never`||S===`view-link`).map(e=>({value:e.value,label:e.seconds===`never`?p(`access.createTokenModal.never`,`Never (until revoked)`):p(`access.createTokenModal.days`,{count:Number(e.value)})})),[S,p]),K=D.trim(),q=S===`scopes`?te(k,v):null,J=N.map(Number).filter(e=>Number.isInteger(e)&&e>=0),re=ht.find(e=>e.value===B)?.seconds??30*$,ie=()=>S===`all`?[`*`]:S===`view-link`?[{type:`share-view`,grant:{kind:F,deviceIds:J,...R?{talk:!0}:{}}}]:k,ae=K.length>0&&K.length<=mt&&!u&&!f&&(S===`all`?b:S===`view-link`?J.length>0:k.length>0&&q===null),Y=()=>{if(!ae)return;let e=b&&S!==`all`&&T!==``&&T!==y?.id;c({scopes:ie(),expiresIn:re,label:K,...e?{subjectId:T}:{}})},Z=S===`all`,ue=Z?h:g;return i(oe,{open:t,onClose:s,title:p(`access.createTokenModal.createToken`,`Create token`),icon:Z?h:C,error:d,width:`md`,testId:`create-token-dialog`,footer:e(H,{type:`button`,variant:Z?`danger`:`primary`,size:`sm`,onClick:Y,disabled:!ae,"data-testid":`create-token-submit`,children:[u||f?i(_,{className:`h-3.5 w-3.5 animate-spin`,"aria-hidden":!0}):i(ue,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),p(`access.createTokenModal.issueToken`,`Issue token`)]}),children:e(`div`,{className:`space-y-3`,children:[e(`div`,{className:`space-y-1`,children:[i(I,{children:p(`access.createTokenModal.whatItMayDo`,`What it may do`)}),i(ee,{appearance:`pills`,value:S,onValueChange:e=>{(e===`scopes`||e===`view-link`||e===`all`)&&w(e)},children:e(ne,{"aria-label":p(`access.createTokenModal.whatItMayDo`,`What it may do`),children:[e(A,{value:`scopes`,"data-testid":`token-reach-scopes`,children:[i(g,{className:`h-3.5 w-3.5 shrink-0`,"aria-hidden":!0}),p(`access.createTokenModal.reachScopes`,`Scopes`)]}),e(A,{value:`view-link`,"data-testid":`token-reach-view-link`,children:[i(l,{className:`h-3.5 w-3.5 shrink-0`,"aria-hidden":!0}),p(`access.createTokenModal.reachViewLink`,`View link`)]}),b?e(A,{value:`all`,"data-testid":`token-reach-all`,children:[i(h,{className:`h-3.5 w-3.5 shrink-0`,"aria-hidden":!0}),p(`access.createTokenModal.reachAll`,`All permissions`)]}):null]})})]}),Z?i(`div`,{className:`space-y-1 rounded-md border border-danger/30 bg-danger/5 px-3 py-2 text-[11px] leading-relaxed text-foreground`,"data-testid":`admin-token-warning`,children:i(`p`,{children:i(ce,{i18nKey:`auth.adminTokenNoticeShort`,components:{strong:i(`strong`,{})}})})}):null,b&&S!==`all`&&r.length>1?e(`div`,{className:`space-y-1`,children:[i(I,{htmlFor:`token-user`,children:p(`access.createTokenModal.onBehalfOfUser`,`On behalf of user`)}),i(j,{id:`token-user`,value:T,onChange:e=>E(e.target.value),options:r.map(e=>({value:e.id,label:e.username}))})]}):null,e(`div`,{className:`space-y-1`,children:[i(I,{htmlFor:`token-name`,children:p(`access.createTokenModal.label`,`Label`)}),i(se,{id:`token-name`,value:D,maxLength:mt,required:!0,onChange:e=>O(e.target.value),placeholder:S===`view-link`?`kitchen-wall`:`nightly-backup`,autoFocus:!0})]}),S===`scopes`?e(`div`,{className:`space-y-1`,children:[i(I,{children:p(`access.createTokenModal.scopes`,`Scopes`)}),i(V,{value:k,onChange:M,clampToParent:x}),q&&i(`p`,{className:`text-[10px] text-danger`,children:q}),i(`p`,{className:`text-[10px] text-foreground-subtle`,children:p(`access.createTokenModal.eachScopePicksACap`,`Each scope picks a (cap or addon) target + one or more access flavours. The token can access ONLY what's listed.`)})]}):null,S===`view-link`?e(`div`,{className:`space-y-2`,"data-testid":`token-view-link`,children:[e(`div`,{className:`space-y-1`,children:[i(I,{children:p(`access.createTokenModal.cameras`,`Cameras`)}),i(G,{field:{...gt,label:p(`access.createTokenModal.cameras`,`Cameras`)},value:N,onChange:e=>P(Array.isArray(e)?e.filter(e=>typeof e==`string`):[])})]}),e(`div`,{className:`space-y-1`,children:[i(I,{htmlFor:`token-view-kind`,children:p(`access.createTokenModal.viewKind`,`Shows`)}),i(j,{id:`token-view-kind`,value:F,onChange:e=>L(e.target.value===`events-view`?`events-view`:`grid-view`),options:[{value:`grid-view`,label:p(`access.createTokenModal.viewGrid`,`Live grid`)},{value:`events-view`,label:p(`access.createTokenModal.viewEvents`,`Events`)}]})]}),F===`grid-view`?e(`label`,{className:`flex items-start gap-2 text-sm text-foreground`,children:[i(`input`,{type:`checkbox`,className:`mt-0.5`,checked:R,onChange:e=>z(e.target.checked),"data-testid":`token-view-talk`}),i(`span`,{children:p(`access.createTokenModal.talk`,`Allow talk-back on these cameras`)})]}):null]}):null,e(`div`,{className:`space-y-1`,children:[i(I,{htmlFor:`token-lifetime`,children:p(`access.createTokenModal.expires`,`Expires after`)}),i(j,{id:`token-lifetime`,value:B,onChange:e=>U(e.target.value),options:W})]})]})})}s();var yt={key:`access.nouns.token`};function bt(e){return typeof e==`object`&&!!e&&`kind`in e}function xt(e,t){let n=e.access===void 0?``:` [${e.access.join(`, `)}]`;return e.type===`device`?`device:[${bt(e.selector)?U(e.selector,t):`?`}]${n}`:e.type===`addon-routes`?`${t(`access.tokensSection.everyAddonRoutes`,`every addon's routes`)}${n}`:`${e.type}:${e.target??``}${n}`}function St({headerOwnsCreate:t=!1,createRequested:r=!1,onCreateConsumed:s,ownOnly:c=!1}){let{t:l}=X(),d=m(),{user:f}=le(),p=v(),h=q.useUtils(),g=me(),{data:_}=N(),y=n(()=>_??[],[_]),{data:b}=k({}),x=n(()=>{let e=new Map;for(let t of b??[])e.set(t.id,t.name);return e},[b]),S=q.auth.listTokens.useQuery(void 0),{requestProof:w,dialog:T}=dt(`Creating a token with all permissions`),{state:E,openNew:D,close:O}=L({newKey:pt.token}),[ee,A]=o(null),[j,M]=o(null),[P,F]=o(!1),[I,R]=o(null),[z,B]=o(null);a(()=>{r&&(D(),s?.())},[r,D,s]);let V=()=>{h.auth.listTokens.invalidate(),h.auth.listAuthAudit.invalidate()},U=q.auth.mintToken.useMutation({onSuccess:({token:e,record:t})=>{V(),O(),M(null),F(!1),R({token:e,label:t.label})},onError:e=>{M(`Create failed: ${e.message}`),F(!1)}}),W=q.auth.revokeToken.useMutation({onSuccess:()=>{B(null),V()},onError:e=>{B(null),A(`Revoke failed: ${e.message}`)}}),G=je(yt,V),te=Date.now(),K=(S.data??[]).filter(e=>!c||e.subjectId===f?.id).map(e=>Ze(e,g,e.scopes.includes(`*`)?null:e.scopes.map(e=>Ye(e,x,e=>xt(e,d))).join(`, `),te)),ne=async e=>{await p({title:l(`access.tokensSection.revoke`,`Revoke "{{name}}"?`,{name:e.name}),message:e.kind===`All permissions`?l(`access.tokensSection.everyScriptUsingItLoses`,`Every script using it loses access immediately. This cannot be undone.`):l(`access.tokensSection.stopsWorking`,`Whoever holds it loses access immediately. This cannot be undone.`),confirmLabel:l(`access.tokensSection.revoke2`,`Revoke`),variant:`danger`})&&(A(null),B(e.id),W.mutate({id:e.id}))},J=e=>{(async()=>{A(null),M(null);let t;if(e.scopes.includes(`*`)){F(!0);let e=await w();if(F(!1),e===null)return;t=e}U.mutate({scopes:[...e.scopes],expiresIn:e.expiresIn,label:e.label,...e.subjectId===void 0?{}:{subjectId:e.subjectId},...t===void 0?{}:{reauthToken:t}})})()};return e(`div`,{"data-testid":`tokens`,children:[T,i(de,{notice:he(ee,G.outcome),onDismissNotice:()=>{A(null),G.dismiss()},id:c?`my-tokens`:`tokens`,title:c?l(`access.tokensSection.myTokens`,`My tokens`):l(`access.tokensSection.tokens`,`Tokens`),icon:C,actions:t?void 0:e(H,{size:`sm`,type:`button`,"data-testid":`tokens-new`,onClick:D,children:[i(C,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),l(`system.access.newToken`,`New token`)]}),description:l(`access.tokensSection.oneFormat`,`Every token is its scopes: a few permissions for a script, all permissions for an admin script, or a view of some cameras for a share link. Revoking one stops it on its next use.`),children:i(Le,{rows:K,label:l(`common.tokensLabel`),isLoading:S.isLoading,loadError:S.isError?S.error?.message??`Request failed`:null,emptyText:l(`access.tokensSection.noTokens`,`No tokens.`),action:{label:l(`access.tokensSection.revoke2`,`Revoke`),icon:u,isAvailable:e=>e.status===`active`,onRun:e=>void ne(e),busyId:z,disabled:G.busy||z!==null},...f?.isAdmin===!0?{bulk:{revoke:G,noun:yt,isSelectable:e=>e.status===`active`}}:{}})}),i(vt,{open:E.mode===`new`,users:y.map(e=>({id:e.id,username:e.username})),onClose:()=>{O(),M(null),F(!1)},submitting:U.isPending,formError:j,awaitingProof:P,onSubmit:J}),I&&i(ft,{token:I.token,label:I.label,onClose:()=>R(null)})]})}var Ct=864e5,wt={qr:`QR (by an admin)`,self:`Self-enrolled`},Tt={ios:`iOS`,android:`Android`,web:`Web`,other:`Other`};function Et(e){return e.status===`revoked`}function Dt(e){return e.status!==`revoked`}function Ot(e,t=`—`){if(e===null)return t;let n=new Date(e);return Number.isNaN(n.getTime())?t:n.toLocaleString()}function kt(e,t){return e===null||Number.isNaN(e)?null:Math.floor((e-t)/Ct)}function At(e,t){let n=kt(e,t);return n===null?`unknown`:n<0?`expired`:n<30?`soon`:`ok`}function jt(e,t){let n=kt(e,t);return n===null?Y.t(`helpers.certificateModel.unknown`):n===0?Y.t(`helpers.certificateModel.today`):n>0?Y.t(`helpers.certificateModel.inDays`,{count:n}):Y.t(`helpers.certificateModel.daysAgo`,{count:-n})}function Mt(e){if(e===null)return null;let t=Date.parse(e);return Number.isNaN(t)?null:t}function Nt(e){return e===null||e.length===0?`—`:e.length<=17?e:`${e.slice(0,8)}…${e.slice(-8)}`}function Pt(e){return e.length<=10?e:`${e.slice(0,10)}…`}function Ft(e){if(!e.online)return{allowed:!1,reason:Y.t(`helpers.certificateModel.nodeOffline`)};if(e.isHub&&e.https.kind===`served`){if(e.https.status.mode===`uploaded`)return{allowed:!1,reason:Y.t(`helpers.certificateModel.uploadedCert`)};if(e.https.status.mode===`disabled`)return{allowed:!1,reason:Y.t(`helpers.certificateModel.tlsDisabled`)}}return{allowed:!0,reason:null}}var It={prepare:`helpers.certificateModel.stage.prepare`,issue:`helpers.certificateModel.stage.issue`,install:`helpers.certificateModel.stage.install`,reconnect:`helpers.certificateModel.stage.reconnect`,confirm:`helpers.certificateModel.stage.confirm`};function Lt(e){if(e.ok)return{tone:`success`,message:Y.t(`helpers.certificateModel.renewed`,{nodeId:e.nodeId,serial:Pt(e.newSerial)})};let t=e.keptPreviousLeaf?Y.t(`helpers.certificateModel.keptPrevious`):Y.t(`helpers.certificateModel.maybeNoCert`);return{tone:`danger`,message:Y.t(`helpers.certificateModel.renewalFailed`,{nodeId:e.nodeId,stage:Y.t(It[e.stage]),reason:e.reason,kept:t})}}function Rt(e,t){let n=Math.max(0,e-t),r=Math.ceil(n/1e3),i=Math.floor(r/60),a=r%60;return{expired:n===0,label:`${String(i)}:${String(a).padStart(2,`0`)}`}}var zt=11;function Bt(e,t){let n=e.slice(0,zt);return t===null?n:`${n} · ${t}`}function Vt(e){return{id:e.id,name:e.deviceName,detail:Bt(e.fingerprint,e.lastUsedFrom),ownerId:e.userId,ownerName:e.username??e.userId,kind:Tt[e.platform],scope:wt[e.enrolledVia],status:e.status,createdAt:e.issuedAt,lastUsedAt:e.lastUsedAt,expiresAt:e.expiresAt}}function Ht(e,t){return{id:e.id,name:e.deviceName,detail:null,ownerId:null,ownerName:t,kind:Tt[e.platform],scope:null,status:e.status,createdAt:e.issuedAt,lastUsedAt:e.lastUsedAt,expiresAt:e.expiresAt}}function Ut({sessions:t,isLoading:n,loadError:r,emptyText:a,onRevoke:o,revokingId:s}){let{t:c}=X();return n?e(`div`,{className:`flex items-center gap-2 text-xs text-foreground-subtle`,children:[i(_,{className:`h-3.5 w-3.5 animate-spin`}),c(`auth.sessionsList.loadingSessions`,`Loading sessions…`)]}):r===null?t.length===0?i(`div`,{className:`rounded border border-dashed border-border px-3 py-4 text-xs text-foreground-subtle text-center`,children:a}):i(`ul`,{className:`divide-y divide-border rounded-md border border-border`,children:t.map(e=>i(Wt,{session:e,revoking:s===e.id,onRevoke:()=>o(e)},e.id))}):e(`div`,{className:`text-[11px] text-danger`,children:[c(`auth.sessionsList.couldNotLoadSessions`,`Could not load sessions:`),` `,r]})}function Wt({session:t,revoking:n,onRevoke:r}){let{t:a}=X(),o=ot(t.client);return e(`li`,{"data-testid":`session-row`,className:`flex items-start gap-3 px-3 py-2 text-xs`,children:[i(b,{className:`h-3.5 w-3.5 mt-0.5 shrink-0 text-foreground-subtle`}),e(`div`,{className:`flex-1 min-w-0 space-y-0.5`,children:[e(`div`,{className:`flex flex-wrap items-center gap-1.5`,children:[i(`span`,{className:`font-medium text-foreground truncate`,title:o.raw??void 0,children:o.label}),t.current&&i(`span`,{className:`rounded bg-primary/10 px-1.5 py-0.5 text-[10px] font-medium text-primary`,children:a(`auth.sessionsList.thisDevice`,`This device`)})]}),e(`div`,{className:`flex flex-wrap gap-x-3 text-[11px] text-foreground-subtle`,children:[i(`span`,{children:ct(t.method)}),i(`span`,{className:`font-mono`,children:t.ip??a(`auth.sessionsList.ipUnknown`,`IP unknown`)}),i(`span`,{children:a(`auth.sessionsList.lastActive`,{when:lt(t.lastUsedAt)})}),i(`span`,{children:a(`auth.sessionsList.expires`,{when:lt(t.expiresAt)})})]})]}),!t.current&&e(`button`,{onClick:r,disabled:n,className:`inline-flex items-center gap-1 rounded px-2 py-1 text-[10px] text-danger hover:bg-danger/10 disabled:opacity-50`,children:[n?i(_,{className:`h-3 w-3 animate-spin`}):i(S,{className:`h-3 w-3`}),a(`auth.sessionsList.signOut`,`Sign out`)]})]})}export{me as A,He as C,Me as D,je as E,de as O,$e as S,Le as T,dt as _,Dt as a,lt as b,jt as c,Ot as d,Ft as f,pt as g,St as h,Et as i,he as k,Lt as l,Pt as m,Vt as n,Rt as o,Nt as p,Ht as r,Mt as s,Ut as t,At as u,ot as v,Ve as w,Qe as x,ct as y};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{C as e,J as t,K as n,R as r,S as i,V as a,Y as o,et as s,o as c,x as l}from"./_virtual_mf___mfe_internal__admin_ui_host__loadShare___mf_0_tanstack_mf_1_react_mf_2_query__loadShare__.js-CEyXHAdg.js";import{Hn as u,Ht as d,In as f,aa as p,ai as m,ia as h,ot as g,ra as _,st as v,ta as y,vn as b}from"./player-overlays-DpZIxQHp.js";import{Dr as x,Or as S,Sr as C,ar as w,br as ee,ir as T,kr as E,rr as D,xr as O,yi as te,yr as ne}from"./client-BvflqtP1.js";import{u as re}from"./video-D0guHpd1.js";import{t as k}from"./shapes-D-IaC6en.js";import{t as ie}from"./unlink-DTu1e00O.js";import{$u as ae,An as oe,Bd as A,Er as se,Et as j,Fr as ce,Lr as M,Pd as N,Pr as le,Qu as ue,Sr as de,Tr as fe,Vd as pe,Xn as me,Xu as he,Zu as ge,an as P,br as _e,fi as ve,hu as ye,ii as F,kn as be,si as xe,wr as Se,wt as Ce,xr as we,zd as I}from"./src-KDhMZ5Ob.js";import{t as L}from"./useTranslation-BJr-n0es.js";import{t as Te}from"./AdminPage-DmkuRREx.js";import{C as Ee,S as R,T as z,_ as De,a as Oe,b as ke,c as Ae,d as je,f as Me,g as Ne,h as Pe,i as Fe,l as Ie,m as Le,n as Re,o as ze,p as Be,r as B,s as V,t as Ve,u as He,v as Ue,w as We,x as Ge,y as Ke}from"./RemoteGrid-CF92aN64.js";s();var H=12,U=4,W=3,G=(e,t,n,r,i,a={})=>({id:e,role:t,row:n,col:r,colSpan:i,...a}),K=e=>`custom:${e}`;function q(e,t,n=[]){return t.map((t,r)=>G(`r${e}c${r}`,t,e,r*U,U,{...n[r]===void 0?{}:{label:n[r]}}))}function J(e){return[G(`up`,`up`,e,U,U),G(`left`,`left`,e+1,0,U),G(`ok`,`ok`,e+1,U,U),G(`right`,`right`,e+1,2*U,U),G(`down`,`down`,e+2,U,U)]}function Y(e,t){return t.map((t,n)=>G(`app_${t}`,K(`app_${t}`),e,n*W,W,{icon:B(t)}))}var X=(e,t)=>({id:`core:section-divider`,row:e,col:0,options:{scale:{cols:H},title:t}});function qe(e,t,n){let r=V(H,e,t);for(let e of n){let t=w(r,D(e.id),{row:e.row,col:e.col},e.options);if(!t.ok)throw Error(`preset component ${e.id} at ${e.row}:${e.col}: ${t.reason}`);r=t.layout}return r}var Z={scale:{cols:U}},Je={scale:{rows:2,cols:U}},Ye=(e,t,n,r)=>({idSuffix:e,row:3,col:t,rowSpan:1,colSpan:1,role:n,label:r}),Xe=qe(23,[G(`input`,`input`,0,2*U,U),G(`mute`,`mute`,7,U,U),G(`ch_list`,K(`ch_list`),8,U,U,{label:`CH LIST`}),G(`settings`,K(`settings`),9,U,U,{label:`Settings`}),G(`home`,`home`,10,U,U),G(`guide`,`guide`,12,0,U),G(`e_manual`,K(`e_manual`),12,U,U,{label:`e-Manual`}),G(`info`,`info`,12,2*U,U),G(`back`,`back`,17,0,U),G(`exit`,`exit`,17,2*U,U),G(`color_a`,K(`color_a`),19,0,W,{label:`A`}),G(`color_b`,K(`color_b`),19,W,W,{label:`B`}),G(`color_c`,K(`color_c`),19,2*W,W,{label:`C`}),G(`color_d`,K(`color_d`),19,3*W,W,{label:`D`}),G(`pic_size`,K(`pic_size`),20,0,U,{label:`P.SIZE`}),G(`picture`,K(`picture`),20,U,U,{label:`Picture`}),G(`ad_subt`,K(`ad_subt`),20,2*U,U,{label:`AD/SUBT`})],[{id:`core:power`,row:0,col:0,options:{scale:{cols:2}}},X(1,`Numbers`),{id:`core:keypad`,row:2,col:0,options:{scale:Z.scale,extras:[Ye(`ttx`,0,K(`ttx_mix`),`TTX/MIX`),Ye(`prech`,2,K(`pre_ch`),`PRE-CH`)]}},X(6,`Volume and channels`),{id:`core:rocker-volume-v`,row:7,col:0,options:Je},{id:`core:rocker-channel-v`,row:7,col:2*U,options:Je},X(11,`Menus`),X(13,`Navigation`),{id:`core:dpad`,row:14,col:0,options:Z},X(18,`Colour and picture`),X(21,`Playback`),{id:`core:media-transport`,row:22,col:1,options:{scale:{cols:2}}}]),Ze=[`netflix`,`youtube`,`primevideo`,`disneyplus`,`dazn`,`raiplay`],Qe=qe(20,[G(`input`,`input`,0,2*U,U),...q(4,[`menu`,`home`,`exit`]),G(`guide`,`guide`,6,0,U),G(`info`,`info`,6,2*U,U),G(`back`,`back`,10,0,U),G(`play_pause`,`play_pause`,10,2*U,U),G(`mute`,`mute`,12,U,U),G(`ch_list`,K(`ch_list`),13,U,U,{label:`CH.LIST`}),G(`subtitle`,K(`subtitle`),14,0,6,{label:`Subtitle`}),G(`text`,K(`text`),14,6,6,{label:`Text`})],[{id:`core:power`,row:0,col:0,options:{scale:{cols:2}}},{id:`core:panel`,row:1,col:0,options:{scale:Z.scale,title:`Apps`,extras:Ze.map((e,t)=>({idSuffix:e,row:Math.floor(t/3),col:t%3,rowSpan:1,colSpan:1,role:K(`app_${e}`),icon:B(e)}))}},{id:`core:colour-keys`,row:3,col:0,options:{scale:{cols:W}}},X(5,`Navigation`),{id:`core:dpad`,row:7,col:0,options:Z},X(11,`Volume and channels`),{id:`core:rocker-volume-v`,row:12,col:0,options:Z},{id:`core:rocker-channel-v`,row:12,col:2*U,options:Z},X(15,`Numbers`),{id:`core:keypad`,row:16,col:0,options:Z}]),$e=V(H,8,[G(`power`,`power`,0,0,U),G(`input`,`input`,0,2*U,U),...J(1),...q(4,[`back`,`home`,`play_pause`]),G(`vol_up`,`volume_up`,5,0,U),G(`mute`,`mute`,5,U,U,{rowSpan:2}),G(`ch_up`,`channel_up`,5,2*U,U),G(`vol_down`,`volume_down`,6,0,U),G(`ch_down`,`channel_down`,6,2*U,U),...Y(7,[`netflix`,`primevideo`,`disneyplus`,`youtube`])]),et=V(H,9,[G(`power`,`power`,0,0,U),G(`input`,`input`,0,2*U,U),G(`settings`,K(`settings`),1,0,U,{label:`Settings`}),G(`up`,`up`,1,U,U),G(`guide`,`guide`,1,2*U,U),G(`left`,`left`,2,0,U),G(`ok`,`ok`,2,U,U),G(`right`,`right`,2,2*U,U),G(`back`,`back`,3,0,U),G(`down`,`down`,3,U,U),G(`home`,`home`,3,2*U,U),G(`vol_up`,`volume_up`,4,0,U,{rowSpan:2}),G(`vol_down`,`volume_down`,6,0,U,{rowSpan:2}),G(`mute`,`mute`,4,U,U),G(`info`,`info`,5,U,U),G(`menu`,`menu`,6,U,U),G(`exit`,`exit`,7,U,U),G(`ch_up`,`channel_up`,4,2*U,U,{rowSpan:2}),G(`ch_down`,`channel_down`,6,2*U,U,{rowSpan:2}),...Y(8,[`netflix`,`primevideo`,`disneyplus`,`youtube`])]),tt=V(H,8,[G(`assistant`,K(`assistant`),0,0,U,{label:`Assistant`}),G(`input`,`input`,0,U,U),G(`power`,`power`,0,2*U,U),...J(1),...q(4,[`back`,`home`,`guide`]),G(`vol_up`,`volume_up`,5,0,U),G(`mute`,`mute`,5,U,U),G(`ch_up`,`channel_up`,5,2*U,U),G(`vol_down`,`volume_down`,6,0,U),G(`play_pause`,`play_pause`,6,U,U),G(`ch_down`,`channel_down`,6,2*U,U),...Y(7,[`youtube`,`netflix`,`primevideo`,`disneyplus`])]),nt=V(H,7,[G(`siri`,K(`siri`),0,0,U,{label:`Siri`}),G(`power`,`power`,0,2*U,U),...J(1),...q(4,[`back`,`play_pause`,`home`]),G(`vol_up`,`volume_up`,5,0,6),G(`vol_down`,`volume_down`,5,6,6),G(`mute`,`mute`,6,U,U)]),rt=[{id:`samsung-classic`,layout:Xe},{id:`hisense-vidaa`,layout:Qe},{id:`samsung-smart`,layout:$e},{id:`lg-magic`,layout:et},{id:`google-tv`,layout:tt},{id:`apple-tv`,layout:nt}];function it(e){let t=rt.find(t=>t.id===e);return t===void 0?null:{...t.layout,buttons:t.layout.buttons.map(e=>({...e}))}}function at(e){let t=new Map;for(let n of e)for(let e of n)t.has(e.id)||t.set(e.id,e);let n=[...t.values()];return[...n.filter(e=>e.id.startsWith(`core:`)),...n.filter(e=>!e.id.startsWith(`core:`))]}function ot(e,t){let n=e.nameI18n;return n===void 0?e.name:t.startsWith(`it`)?n.it:n.en}function st(e){let t=w({columns:e.size.cols,rows:e.size.rows,buttons:[]},e,{row:0,col:0});return t.ok?t.layout:null}function ct(e,t,n,r){let i=t.trim().toLowerCase();return i===``?[...e]:e.filter(e=>ot(e,n).toLowerCase().includes(i)||r(e.category).toLowerCase().includes(i))}function lt(e,t){let n=T(e,t);return n!==null&&n>1}function ut(e,t,n={}){let r=n.fillWidth===!0?T(e,t):null,i=r===null||r<2?{}:{scale:{cols:r}};if(n.at!==void 0)return w(e,t,n.at,i);let a=w(e,t,{row:0,col:0},i);if(a.ok||a.reason===`outside`||a.reason===`too-many`)return a;for(let n=0;n<e.rows;n+=1)for(let r=0;r<e.columns;r+=1){let a=w(e,t,{row:n,col:r},i);if(a.ok)return a}return a}function dt({open:t,grid:n,onOpenChange:r,onPick:a}){let{t:o,i18n:s}=L();return i(_e,{open:t,onOpenChange:r,children:e(de,{width:`lg`,placement:`sheet-on-mobile`,scroll:`body`,children:[i(fe,{children:i(se,{children:o(`remote.palette.title`)})}),i(we,{children:t&&i(ft,{grid:n,language:s.language,onPick:(e,t)=>{a(e,t),r(!1)}})})]})})}function ft({grid:t,language:r,onPick:a}){let{t:s}=L(),c=ye({}),[l,u]=o(``),[d,f]=o(!1),p=e=>s(`remote.palette.category.${e}`,e),m=ct(n(()=>at(c.data===void 0?[]:[c.data]),[c.data]),l,r,p),h=m.some(e=>lt(t,e));return c.isError?i(le,{title:s(`remote.palette.errorTitle`),message:c.error.message,onRetry:()=>void c.refetch()}):c.data===void 0?e(`div`,{className:`grid gap-2 sm:grid-cols-2`,"data-testid":`palette-loading`,children:[i(M,{className:`h-24`}),i(M,{className:`h-24`}),i(M,{className:`h-24`}),i(M,{className:`h-24`})]}):e(`div`,{className:`space-y-3`,children:[e(`div`,{className:`relative`,children:[i(b,{className:`pointer-events-none absolute left-2.5 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-foreground-subtle`,"aria-hidden":!0}),i(I,{value:l,className:`pl-8`,placeholder:s(`remote.palette.search`),"aria-label":s(`remote.palette.search`),onChange:e=>u(e.target.value),"data-testid":`palette-search`})]}),h&&e(`label`,{className:`flex items-center gap-2 text-xs text-foreground-muted`,children:[i(me,{checked:d,onChange:e=>f(e.target.checked),"data-testid":`palette-fill-width`}),s(`remote.palette.fillWidth`)]}),m.length===0?i(ce,{icon:k,title:s(`remote.palette.emptyTitle`),description:s(`remote.palette.emptyDescription`)}):i(`ul`,{className:`grid gap-2 sm:grid-cols-2`,"data-testid":`palette-list`,children:m.map(e=>i(`li`,{children:i(pt,{component:e,language:r,category:p(e.category),onPick:()=>a(e,{fillWidth:d})})},e.id))})]})}function pt({component:t,language:r,category:a,onPick:o}){let{t:s}=L(),c=n(()=>st(t),[t]),l=ot(t,r);return e(`button`,{type:`button`,className:`flex h-full w-full items-center gap-3 rounded-lg border border-border bg-surface p-2 text-left hover:bg-surface-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary`,"data-testid":`palette-item-${t.id}`,onClick:o,children:[i(`span`,{className:`w-20 shrink-0`,children:c!==null&&i(Ve,{grid:c,label:l,compact:!0})}),e(`span`,{className:`min-w-0`,children:[i(`span`,{className:`block truncate text-sm font-medium text-foreground`,children:l}),e(`span`,{className:`block truncate text-xs text-foreground-muted`,children:[a,` ·`,` `,s(`remote.palette.size`,{cols:t.size.cols,rows:t.size.rows})]})]})]})}function Q(e,t){let n=t.kind===`group`?je(e,t.id):e.buttons.find(e=>e.id===t.id);return n===void 0?void 0:{row:n.row,col:n.col,rowSpan:n.rowSpan,colSpan:n.colSpan}}function mt(e,t,n,r){return e.width<=0||e.height<=0?{row:0,col:0}:{col:Math.floor((n-e.left)/e.width*t.columns),row:Math.floor((r-e.top)/e.height*t.rows)}}function ht(e,t,n){return{row:n.row-(t.row-e.row),col:n.col-(t.col-e.col)}}function gt(e,t,n){return t.kind===`group`?Ue(e,t.id,n.row,n.col):De(e,t.id,n.row,n.col)}function _t(e,t,n){let r=Q(e,t);if(r===void 0)return null;let i=gt(e,t,n);return{rect:{...r,row:n.row,col:n.col},valid:i.status===`ok`,reason:i.status===`ok`?null:i.reason}}function vt(e){switch(e){case`ArrowUp`:return{dRow:-1,dCol:0};case`ArrowDown`:return{dRow:1,dCol:0};case`ArrowLeft`:return{dRow:0,dCol:-1};case`ArrowRight`:return{dRow:0,dCol:1};default:return null}}function yt(e,t,n,r){let i=Q(e,t);return i===void 0?{status:`refused`,reason:`unknown-button`}:gt(e,t,{row:i.row+n,col:i.col+r})}s();var bt=4;function xt(e,n,i){let[s,c]=o(null),l=t({grid:e,onDrop:i});l.current={grid:e,onDrop:i};let u=t(null),d=t(!1);return a(()=>()=>u.current?.(),[]),{drag:s,onItemPointerDown:r((e,t)=>{let r=n.current;if(r===null||t.button!==0)return;let i=r.getBoundingClientRect();if(Q(l.current.grid,e)===void 0)return;let a={item:e,startX:t.clientX,startY:t.clientY,grabbed:mt(i,l.current.grid,t.clientX,t.clientY),active:!1,target:null},o=e=>{if(!a.active){if(Math.hypot(e.clientX-a.startX,e.clientY-a.startY)<bt)return;a.active=!0}let t=l.current.grid,n=mt(r.getBoundingClientRect(),t,e.clientX,e.clientY),i=Q(t,a.item);i!==void 0&&(a.target=ht(i,a.grabbed,n),c({item:a.item,preview:_t(t,a.item,a.target)}))},s=e=>{window.removeEventListener(`pointermove`,o),window.removeEventListener(`pointerup`,f),window.removeEventListener(`pointercancel`,p),window.removeEventListener(`keydown`,m),u.current=null,c(null),a.active&&(d.current=!0,window.setTimeout(()=>{d.current=!1},0),e&&a.target!==null&&l.current.onDrop(gt(l.current.grid,a.item,a.target)))},f=()=>s(!0),p=()=>s(!1),m=e=>{e.key===`Escape`&&s(!1)};window.addEventListener(`pointermove`,o),window.addEventListener(`pointerup`,f),window.addEventListener(`pointercancel`,p),window.addEventListener(`keydown`,m),u.current=()=>s(!1)},[n]),consumeDragClick:r(()=>{let e=d.current;return d.current=!1,e},[])}}s();var St=`__custom__`;function Ct({value:n,onChange:r}){let{t:a}=L(),[s,c]=o(null),[l,u]=o(null),[d,p]=o(!1),m=t(null),h=s?.kind===`button`?s.id:null,g=s?.kind===`group`?s.id:null,_=n.buttons.find(e=>e.id===h)??null,v=g===null?void 0:je(n,g),y=(e,t)=>{if(e.status===`ok`){u(null),r(e.grid),t?.(e.grid);return}u(a(`remote.layout.refusal.${e.reason}`))},b=xt(n,m,e=>y(e));return e(`div`,{className:`grid gap-4 md:grid-cols-[minmax(0,18rem)_minmax(0,1fr)]`,children:[e(`div`,{className:`space-y-3`,children:[e(`div`,{className:`grid grid-cols-2 gap-2`,children:[i(j,{label:a(`remote.layout.columns`),children:i(P,{value:n.columns,onDelta:e=>y(Ge(n,n.columns+e,n.rows))})}),i(j,{label:a(`remote.layout.rows`),children:i(P,{value:n.rows,onDelta:e=>y(Ge(n,n.columns,n.rows+e))})})]}),i(Ve,{grid:n,label:a(`remote.layout.previewLabel`),selectedId:h,selectedGroupId:g,onSelect:e=>{b.consumeDragClick()||c({kind:`button`,id:e})},onSelectGroup:e=>{b.consumeDragClick()||c({kind:`group`,id:e})},showEmptyCells:!0,gridRef:m,drag:b.drag,onItemPointerDown:b.onItemPointerDown,onItemKeyDown:(e,t)=>{let r=vt(t.key);r!==null&&(t.preventDefault(),y(yt(n,e,r.dRow,r.dCol)))}}),i(`p`,{className:`text-xs text-foreground-subtle`,children:a(`remote.layout.dragHint`)}),e(`div`,{className:`flex flex-wrap gap-2`,children:[e(F,{variant:`outline`,size:`sm`,onClick:()=>p(!0),"data-testid":`remote-add-component`,children:[i(k,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),a(`remote.layout.addComponent`)]}),e(F,{variant:`outline`,size:`sm`,onClick:()=>y(ze(n,`ok`),e=>{let t=e.buttons.at(-1);c(t===void 0?null:{kind:`button`,id:t.id})}),"data-testid":`remote-add-button`,children:[i(f,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),a(`remote.layout.addButton`)]})]}),l!==null&&i(`p`,{role:`alert`,className:`text-xs text-warning`,"data-testid":`remote-layout-refusal`,children:l})]}),i(`div`,{className:`min-w-0`,children:_===null?v===void 0?i(`p`,{className:`text-xs text-foreground-subtle`,children:a(`remote.layout.selectHint`)}):i(Et,{grid:n,groupId:v.id,apply:y,onGone:()=>c(null)}):i(Tt,{grid:n,buttonId:_.id,apply:y,onRemove:()=>{r(Ke(n,_.id)),c(null),u(null)}})}),i(dt,{open:d,grid:n,onOpenChange:p,onPick:(e,t)=>{let i=ut(n,e,t);if(!i.ok){u(a(`remote.layout.refusal.${i.reason}`));return}u(null),r(i.layout);let o=i.buttonIds[0];c(i.groupId===null?o===void 0?null:{kind:`button`,id:o}:{kind:`group`,id:i.groupId})}})]})}function wt(e){return[...Oe.flatMap(t=>Le(t).map(n=>({value:n,label:e(`remote.role.${n}`,Me(n)),group:e(`remote.roleGroup.${t}`)}))),{value:St,label:e(`remote.layout.customRole`),group:e(`remote.roleGroup.custom`)}]}function Tt({grid:t,buttonId:n,apply:r,onRemove:a}){let{t:s}=L(),c=t.buttons.find(e=>e.id===n),l=c===void 0?null:x(c.role),[u,f]=o(null);if(c===void 0)return null;let m=Be(c.role)||u!==null,g=u??l??``,v=E(g),b={trigger:s(`remote.layout.pickIcon`),panel:s(`remote.layout.iconPanel`),searchPlaceholder:s(`deviceDisplay.iconSearchPlaceholder`),clear:s(`remote.layout.noIcon`),noMatches:s(`deviceDisplay.iconNoMatches`)},w=e=>s(`deviceDisplay.iconCategory.${e}`,{defaultValue:te(e)});return e(`div`,{className:`space-y-3 rounded-lg border border-border bg-surface p-3`,"data-testid":`remote-inspector`,children:[i(xe,{mode:`single`,singleDisplay:`field`,label:s(`remote.layout.role`),options:wt((e,t)=>s(e,t??e)),value:m?St:c.role,onChange:e=>{if(e===St){f(l??``);return}f(null),r(R(t,c.id,{role:e}))}}),m&&i(j,{label:s(`remote.layout.customKey`),...g!==``&&!v?{error:s(`remote.layout.customKeyInvalid`)}:{},children:i(I,{value:g,placeholder:`hdmi_1`,onChange:e=>{let n=e.target.value;f(n),E(n)&&r(R(t,c.id,{role:S(n)}))}})}),e(`div`,{className:`grid grid-cols-[auto_minmax(0,1fr)] items-end gap-2`,children:[i(j,{label:s(`remote.layout.icon`),children:i(pe,{value:c.icon??null,onPick:e=>r(R(t,c.id,{icon:e})),fallbackGlyph:k,categoryLabel:w,labels:b})}),i(j,{label:s(`remote.layout.label`),children:i(I,{value:c.label??``,maxLength:40,onChange:e=>r(R(t,c.id,{label:e.target.value}))})})]}),i(j,{label:s(`remote.layout.appIcon`),children:i(N,{value:Fe(c.icon)?.key??``,options:[{value:``,label:s(`remote.layout.noApp`)},...Re.map(e=>({value:e.key,label:e.label}))],onChange:e=>{let n=e.target.value;n===``?Fe(c.icon)!==void 0&&r(R(t,c.id,{icon:null})):r(R(t,c.id,{icon:B(n)}))},"data-testid":`remote-app-icon`})}),e(`div`,{className:`grid grid-cols-2 gap-3`,children:[i(j,{label:s(`remote.layout.shape`),children:i(N,{value:c.shape??``,options:[{value:``,label:s(`remote.layout.lookDefault`)},...O.map(e=>({value:e,label:s(`remote.layout.shapes.${e}`)}))],onChange:e=>{let n=O.find(t=>t===e.target.value);r(Ee(t,c.id,{shape:n??null}))},"data-testid":`remote-shape`})}),i(j,{label:s(`remote.layout.tone`),children:i(N,{value:c.tone??``,options:[{value:``,label:s(`remote.layout.lookDefault`)},...C.map(e=>({value:e,label:s(`remote.layout.tones.${e}`)}))],onChange:e=>{let n=C.find(t=>t===e.target.value);r(Ee(t,c.id,{tone:n??null}))},"data-testid":`remote-tone`})})]}),e(`div`,{className:`grid grid-cols-2 gap-3`,children:[i(j,{label:s(`remote.layout.move`),children:e(`div`,{className:`flex items-center gap-1`,children:[i(A,{icon:h,size:`sm`,variant:`secondary`,"aria-label":s(`remote.layout.moveLeft`),onClick:()=>r(z(t,c.id,0,-1))}),i(A,{icon:y,size:`sm`,variant:`secondary`,"aria-label":s(`remote.layout.moveUp`),onClick:()=>r(z(t,c.id,-1,0))}),i(A,{icon:p,size:`sm`,variant:`secondary`,"aria-label":s(`remote.layout.moveDown`),onClick:()=>r(z(t,c.id,1,0))}),i(A,{icon:_,size:`sm`,variant:`secondary`,"aria-label":s(`remote.layout.moveRight`),onClick:()=>r(z(t,c.id,0,1))})]})}),i(j,{label:s(`remote.layout.position`),children:i(`p`,{className:`text-xs text-foreground-muted`,"data-testid":`remote-position`,children:s(`remote.layout.positionValue`,{row:c.row+1,col:c.col+1})})}),i(j,{label:s(`remote.layout.height`),children:i(P,{value:c.rowSpan,onDelta:e=>r(ke(t,c.id,c.rowSpan+e,c.colSpan))})}),i(j,{label:s(`remote.layout.width`),children:i(P,{value:c.colSpan,onDelta:e=>r(ke(t,c.id,c.rowSpan,c.colSpan+e))})})]}),e(F,{variant:`danger`,size:`sm`,onClick:a,children:[i(d,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),s(`remote.layout.removeButton`)]})]})}function Et({grid:t,groupId:n,apply:r,onGone:a}){let{t:o}=L(),s=je(t,n);if(s===void 0)return null;let c=Ne(t,n).length;return e(`div`,{className:`space-y-3 rounded-lg border border-border bg-surface p-3`,"data-testid":`remote-group-inspector`,children:[i(`p`,{className:`text-xs text-foreground-muted`,children:o(`remote.layout.groupSummary`,{frame:o(`remote.layout.frames.${s.frame}`,s.frame),count:c,row:s.row+1,col:s.col+1})}),i(j,{label:o(`remote.layout.groupTitle`),children:i(I,{value:s.title??``,maxLength:40,onChange:e=>r(We(t,s.id,e.target.value)),"data-testid":`remote-group-title`})}),e(`div`,{className:`flex flex-wrap gap-2`,children:[e(F,{variant:`outline`,size:`sm`,"data-testid":`remote-group-ungroup`,onClick:()=>{r(Ie(t,s.id,!0)),a()},children:[i(ie,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),o(`remote.layout.ungroup`)]}),e(F,{variant:`danger`,size:`sm`,"data-testid":`remote-group-delete`,onClick:()=>{r(Ie(t,s.id,!1)),a()},children:[i(d,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),o(`remote.layout.deleteGroup`)]})]})]})}var Dt={remote:{label:e=>e(`remote.templates.kind.remote`),emptyPayload:He,summary:(e,t)=>{let n=Pe(e);return t(`remote.templates.layoutSummary`,{columns:n.columns,rows:n.rows,count:n.buttons.length})},renderEditor:(e,t)=>i(Ct,{value:Pe(e),onChange:t}),isSavable:e=>Ae(Pe(e))!==null,presets:e=>rt.map(t=>({id:t.id,label:e(`remote.templates.preset.${t.id}`),payload:()=>it(t.id)}))}};function $(e){return Dt[e]}var Ot=ne;function kt(e,t){let n=ee(e,t);return n.ok?n.payload:null}s();function At({draft:e,saving:t,error:n,onSave:r,onClose:a}){return i(_e,{open:e!==null,onOpenChange:e=>!e&&a(),children:i(de,{width:`xl`,placement:`sheet-on-mobile`,scroll:`body`,children:e!==null&&i(jt,{draft:e,saving:t,error:n,onSave:r,onClose:a},e.id??`new`)})})}function jt({draft:t,saving:n,error:r,onSave:a,onClose:s}){let{t:c}=L(),[u,d]=o(t.kind),[f,p]=o(t.name),[m,h]=o(t.payload),[g,_]=o(``),v=$(u),y=v.presets(c),b=kt(u,m),x=f.trim()!==``&&b!==null&&v.isSavable(m)&&!n;return e(l,{children:[i(fe,{children:i(se,{children:t.id===null?c(`remote.templates.newTitle`):c(`remote.templates.editTitle`)})}),e(we,{className:`space-y-4`,children:[e(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[i(j,{label:c(`remote.templates.name`),children:i(I,{value:f,maxLength:120,onChange:e=>p(e.target.value),"data-testid":`template-name`})}),t.id===null&&Ot.length>1&&i(j,{label:c(`remote.templates.kind.label`),children:i(N,{value:u,options:Ot.map(e=>({value:e,label:$(e).label(c)})),onChange:e=>{let t=Ot.find(t=>t===e.target.value);t!==void 0&&(d(t),h($(t).emptyPayload()),_(``))}})}),t.id===null&&y.length>0&&i(j,{label:c(`remote.templates.startFrom`),children:i(N,{value:g,options:[{value:``,label:c(`remote.templates.startBlank`)},...y.map(e=>({value:e.id,label:e.label}))],onChange:e=>{let t=y.find(t=>t.id===e.target.value);_(t?.id??``),h(t===void 0?v.emptyPayload():t.payload()),t!==void 0&&f.trim()===``&&p(t.label)},"data-testid":`template-preset`})})]}),v.renderEditor(m,h),r!==null&&i(`p`,{role:`alert`,className:`text-xs text-danger`,children:r})]}),e(Se,{children:[i(F,{variant:`ghost`,onClick:s,children:c(`common.cancel`)}),i(F,{disabled:!x,onClick:()=>a({id:t.id,kind:u,name:f.trim(),payload:b}),"data-testid":`template-save`,children:c(`common.save`)})]})]})}s();var Mt=ne[0];function Nt(){let{t}=L(),r=c(),a=ue({}),s=he(),l=ae(),p=ge(),h=v(),_=g(),[y,b]=o(null),[x,S]=o(null),C=()=>void r.invalidateQueries({queryKey:[[`template`]]}),w=async e=>{S(null);try{let t=e.id===null?await s.mutateAsync({kind:e.kind,name:e.name,payload:e.payload}):await l.mutateAsync({id:e.id,name:e.name,payload:e.payload});if(t.status===`refused`){S(t.detail);return}C(),b(null)}catch(e){S(e instanceof Error?e.message:String(e))}},ee=async e=>{try{await s.mutateAsync({kind:e.kind,name:t(`remote.templates.copyName`,{name:e.name}),payload:e.payload}),C()}catch(e){await _({title:t(`remote.templates.duplicateFailed`),message:e instanceof Error?e.message:String(e),variant:`danger`})}},T=async e=>{if(await h({title:t(`remote.templates.deleteTitle`,{name:e.name}),message:t(`remote.templates.deleteMessage`),confirmLabel:t(`common.delete`),variant:`danger`}))try{let n=await p.mutateAsync({id:e.id});if(n.status===`in-use`){await _({title:t(`remote.templates.inUseTitle`,{name:e.name}),message:t(`remote.templates.inUseMessage`,{devices:n.devices.map(e=>e.name).join(`, `)}),variant:`warning`});return}C()}catch(e){await _({title:t(`remote.templates.deleteFailed`),message:e instanceof Error?e.message:String(e),variant:`danger`})}},E=n(()=>[{key:`name`,header:t(`remote.templates.name`),sortValue:e=>e.name.toLowerCase(),render:e=>i(`span`,{className:`font-medium text-foreground`,children:e.name})},{key:`kind`,header:t(`remote.templates.kind.label`),sortValue:e=>e.kind,render:e=>i(ve,{variant:`neutral`,children:$(e.kind).label(t)})},{key:`summary`,header:t(`remote.templates.summary`),notSortableReason:`A sentence built from the payload.`,render:e=>i(`span`,{className:`text-foreground-muted`,children:$(e.kind).summary(e.payload,t)})},{key:`updated`,header:t(`remote.templates.updated`),sortValue:e=>e.updatedAt,render:e=>i(`span`,{className:`text-foreground-muted`,children:new Date(e.updatedAt).toLocaleDateString()})},{key:`actions`,align:`right`,notSortableReason:`Row actions.`,render:e=>i(Ce,{title:t(`remote.templates.actionsFor`,{name:e.name}),items:[{id:`edit`,label:t(`common.edit`),icon:u,onClick:()=>{S(null),b({id:e.id,kind:e.kind,name:e.name,payload:e.payload})}},{id:`duplicate`,label:t(`remote.templates.duplicate`),icon:m,onClick:()=>void ee(e)},{id:`delete`,label:t(`common.delete`),icon:d,danger:!0,onClick:()=>void T(e)}]})}],[t]),D=a.data??[],O=()=>{S(null),b({id:null,kind:Mt,name:``,payload:$(Mt).emptyPayload()})};return e(Te,{icon:re,title:t(`remote.templates.title`),subtitle:t(`remote.templates.subtitle`),actions:e(F,{size:`sm`,onClick:O,"data-testid":`template-new`,children:[i(f,{className:`h-3.5 w-3.5`,"aria-hidden":!0}),t(`remote.templates.new`)]}),children:[a.status===`error`?i(le,{title:t(`remote.templates.loadFailed`),message:a.error.message,onRetry:()=>void a.refetch()}):a.data===void 0?i(M,{className:`h-32 w-full`}):D.length===0?i(ce,{icon:re,title:t(`remote.templates.emptyTitle`),description:t(`remote.templates.emptyDescription`),action:i(F,{size:`sm`,onClick:O,children:t(`remote.templates.new`)})}):i(be,{columns:E,rows:D,rowKey:e=>e.id,maxBodyHeight:oe,defaultSort:{columnKey:`name`,dir:`asc`},onRowClick:e=>{S(null),b({id:e.id,kind:e.kind,name:e.name,payload:e.payload})}}),i(At,{draft:y,saving:s.isPending||l.isPending,error:x,onSave:e=>void w(e),onClose:()=>b(null)})]})}export{Nt as TemplatesPage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{ua as e}from"./player-overlays-DpZIxQHp.js";var t=e(`circle-slash`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`line`,{x1:`9`,x2:`15`,y1:`15`,y2:`9`,key:`1dfufj`}]]);export{t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{ua as e}from"./player-overlays-DpZIxQHp.js";var t=e(`crop`,[[`path`,{d:`M6 2v14a2 2 0 0 0 2 2h14`,key:`ron5a4`}],[`path`,{d:`M18 22V8a2 2 0 0 0-2-2H2`,key:`7s9ehn`}]]);export{t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"./src-KDhMZ5Ob.js";
|